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 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 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 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 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 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 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 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 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> getListTree() { return this.service.getListTreeMenu(); } /** * 获取指定菜单的子级菜单 * * @param menuId 菜单id * @author lin.liu * @date 2023/02/17 */ @GetMapping(value = "getListChild/{menuId}") public ExecutedResult> 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> search(@RequestBody SearchAdminMenu request) { return this.service.searchMenu(request); } }