package com.nanjing.water.host.controller.admin;
|
|
import com.nanjing.water.common.ConstantFactory;
|
import com.nanjing.water.common.ExecutedResult;
|
import com.nanjing.water.common.PagerResult;
|
import com.nanjing.water.common.util.ParameterUtil;
|
import com.nanjing.water.common.validator.ParameterValidateResult;
|
import com.nanjing.water.common.validator.ParameterValidator;
|
import com.nanjing.water.entity.enums.EMenuType;
|
import com.nanjing.water.entity.enums.EState;
|
import com.nanjing.water.entity.request.ReqListId;
|
import com.nanjing.water.entity.request.ReqListSetSort;
|
import com.nanjing.water.entity.request.ReqSetSort;
|
import com.nanjing.water.entity.request.adminmenu.ReqCreateAdminMenu;
|
import com.nanjing.water.entity.request.adminmenu.ReqModifyAdminMenu;
|
import com.nanjing.water.entity.response.admin.ResAdminMenuTreeAndPermission;
|
import com.nanjing.water.entity.search.SearchAdminMenu;
|
import com.nanjing.water.host.BasicController;
|
import com.nanjing.water.host.api.MustAdmin;
|
import com.nanjing.water.repository.vo.AdminMenuVO;
|
import com.nanjing.water.service.AdminPowerService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.List;
|
|
/**
|
* 10.菜单相关接口
|
*
|
* @author lin.liu
|
* @date 2023/02/17
|
* @order 10
|
*/
|
@RestController
|
@RequestMapping(value = "admin/menu")
|
public class AdminMenuController extends BasicController {
|
@Autowired
|
private AdminPowerService service;
|
|
/**
|
* 创建菜单
|
*
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@MustAdmin
|
@PostMapping(value = "create")
|
public ExecutedResult<Long> create(@RequestBody ReqCreateAdminMenu request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
// 必须是枚举值
|
.addMustEnum(ParameterUtil.named("类型"), request.getType(), EMenuType.class)
|
// 非空
|
.addNotNullOrEmpty(ParameterUtil.named("菜单名称"), request.getName())
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("菜单名称"), request.getName(), ConstantFactory.LENGTH_MAX20)
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("菜单标题"), request.getTitle(), ConstantFactory.LENGTH_MAX100)
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("前端资源路径"), request.getUrl(), ConstantFactory.LENGTH_MAX200)
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("图标"), request.getIcon(), ConstantFactory.LENGTH_MAX200)
|
;
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return ExecutedResult.failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.createMenu(request);
|
}
|
|
/**
|
* 编辑菜单
|
*
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@MustAdmin
|
@PostMapping(value = "modify")
|
public ExecutedResult<String> modify(@RequestBody ReqModifyAdminMenu request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
// 必须是枚举值
|
.addMustEnum(ParameterUtil.named("类型"), request.getType(), EMenuType.class)
|
// 非空
|
.addNotNullOrEmpty(ParameterUtil.named("菜单名称"), request.getName())
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("菜单名称"), request.getName(), ConstantFactory.LENGTH_MAX20)
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("菜单标题"), request.getTitle(), ConstantFactory.LENGTH_MAX100)
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("前端资源路径"), request.getUrl(), ConstantFactory.LENGTH_MAX200)
|
// 限制长度
|
.addLengthMax(ParameterUtil.named("图标"), request.getIcon(), ConstantFactory.LENGTH_MAX200)
|
;
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return ExecutedResult.failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.modifyMenu(request);
|
}
|
|
/**
|
* 停用菜单
|
*
|
* @param menuId 菜单id
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@MustAdmin
|
@PostMapping(value = "stop/{menuId}")
|
public ExecutedResult<String> stop(@PathVariable Long menuId) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
.addGreater(ParameterUtil.named("菜单id"), menuId, 0L);
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return ExecutedResult.failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.changeMenuStatus(menuId, EState.DISABLED);
|
}
|
|
/**
|
* 启用菜单
|
*
|
* @param menuId 菜单id
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@MustAdmin
|
@PostMapping(value = "enable/menuId")
|
public ExecutedResult<String> enable(@PathVariable Long menuId) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
.addGreater(ParameterUtil.named("菜单id"), menuId, 0L);
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return ExecutedResult.failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.changeMenuStatus(menuId, EState.NORMAL);
|
}
|
|
/**
|
* [菜单]设置排序值
|
*
|
* @author lin.liu
|
* @date 2021/11/23
|
*/
|
@PostMapping(value = "setSort")
|
public ExecutedResult<String> setSort(@RequestBody ReqSetSort request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
// 必须大于0
|
.addGreater(ParameterUtil.named("菜单id"), request.getId(), 0L)
|
// 必须大于0
|
.addGreaterThan(ParameterUtil.named("排序值"), request.getSort(), 0)
|
;
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.setMenuSort(request);
|
}
|
|
/**
|
* [菜单]批量设置排序值
|
*
|
* @author lin.liu
|
* @date 2021/11/23
|
*/
|
@PostMapping(value = "listSetSort")
|
ExecutedResult<String> listSetSort(ReqListSetSort request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
// 不能为空
|
.addNotNullOrEmpty(ParameterUtil.named("菜单排序设置列表"), request.getList())
|
;
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.listSetMenuSort(request);
|
}
|
|
/**
|
* 删除菜单
|
*
|
* @param menuId 菜单id
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@MustAdmin
|
@PostMapping(value = "remove/{menuId}")
|
public ExecutedResult<String> remove(@PathVariable Long menuId) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
.addGreater(ParameterUtil.named("菜单id"), menuId, 0L);
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return ExecutedResult.failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.removeMenu(menuId);
|
}
|
|
/**
|
* 批量删除[删除菜单]
|
*
|
* @author lin.liu
|
* @date 2021/11/23
|
*/
|
@PostMapping(value = "removeList")
|
public ExecutedResult<String> removeList(@RequestBody ReqListId request) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
// 不能为空
|
.addNotNullOrEmpty(ParameterUtil.named("[测试信息]id列表"), request.getListId())
|
;
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.removeMenuList(request.getListId());
|
}
|
|
/**
|
* 获取所有层级菜单(只返回状态正常的数据)
|
*
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@GetMapping(value = "getListTree")
|
public ExecutedResult<List<ResAdminMenuTreeAndPermission>> getListTree() {
|
return this.service.getListTreeMenu();
|
}
|
|
/**
|
* 获取指定菜单的子级菜单
|
*
|
* @param menuId 菜单id
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@GetMapping(value = "getListChild/{menuId}")
|
public ExecutedResult<List<AdminMenuVO>> getListChild(@PathVariable Long menuId) {
|
//#region 参数验证
|
ParameterValidator validator = new ParameterValidator()
|
.addGreater(ParameterUtil.named("菜单id"), menuId, 0L);
|
ParameterValidateResult result = validator.validate();
|
if (result.getIsFiled()) {
|
return ExecutedResult.failed(result.getErrorMsg());
|
}
|
//#endregion
|
return this.service.getListChildMenu(menuId);
|
}
|
|
/**
|
* 分页查询菜单
|
*
|
* @author lin.liu
|
* @date 2023/02/17
|
*/
|
@PostMapping(value = "search")
|
public ExecutedResult<PagerResult<AdminMenuVO>> search(@RequestBody SearchAdminMenu request) {
|
return this.service.searchMenu(request);
|
}
|
}
|