From 18743c4b9908e1fb34437072065bd056114ac1ac Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 14 Mar 2023 15:06:07 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.3.4=E3=80=91=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=8F=9C=E5=8D=95=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/api/pojo/menu/SysMenuRequest.java | 7 ---- .../menu/service/impl/SysMenuServiceImpl.java | 39 +++++++++++++++++++ 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuRequest.java index 5a4441a06..fec1c1460 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuRequest.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuRequest.java @@ -63,13 +63,6 @@ public class SysMenuRequest extends BaseRequest { * 菜单名称 */ @NotBlank(message = "菜单名称不能为空", groups = {add.class, edit.class}) - @TableUniqueValue( - message = "菜单名称存在重复", - groups = {add.class, edit.class}, - tableName = "sys_menu", - columnName = "menu_name", - idFieldName = "menu_id", - excludeLogicDeleteItems = true) @ChineseDescription("菜单名称") private String menuName; diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java index 52e57aa3d..48eef445b 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java @@ -68,6 +68,8 @@ import cn.stylefeng.roses.kernel.system.modular.menu.mapper.SysMenuMapper; import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuButtonService; import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuResourceService; import cn.stylefeng.roses.kernel.system.modular.menu.service.SysMenuService; +import cn.stylefeng.roses.kernel.validator.api.exception.ParamValidateException; +import cn.stylefeng.roses.kernel.validator.api.exception.enums.ValidatorExceptionEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -106,6 +108,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl @Override public void add(SysMenuRequest sysMenuRequest) { + // 校验菜单名称是否重复 + validateMenu(sysMenuRequest); + // 如果父节点为空,则填充为默认的父节点id if (sysMenuRequest.getMenuParentId() == null) { sysMenuRequest.setMenuParentId(TreeConstants.DEFAULT_PARENT_ID); @@ -165,6 +170,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl @Transactional(rollbackFor = Exception.class) public void edit(SysMenuRequest sysMenuRequest) { + // 校验菜单名称是否重复 + validateMenu(sysMenuRequest); + // 获取库中的菜单信息 SysMenu oldMenu = this.querySysMenu(sysMenuRequest); @@ -929,4 +937,35 @@ public class SysMenuServiceImpl extends ServiceImpl impl return ListUtil.toList(firstLevelMenus.values()); } + /** + * 校验菜单,是否在通应用下重复 + * + * @author fengshuonan + * @date 2023/3/14 14:37 + */ + private void validateMenu(SysMenuRequest request) { + SysMenuRequest param = new SysMenuRequest(); + param.setAppCode(request.getAppCode()); + param.setMenuName(request.getMenuName()); + + // 查询应用编码下是否存在该名称的菜单 + List list = findList(param); + if (ObjectUtil.isNotEmpty(list)) { + + boolean haveSameFlag = true; + + // 如果请求参数中有菜单id,则为编辑菜单操作,可以和本菜单重复 + for (SysMenu sysMenu : list) { + if (sysMenu.getMenuId().equals(request.getMenuId())) { + haveSameFlag = false; + break; + } + } + + if (haveSameFlag) { + throw new ParamValidateException(ValidatorExceptionEnum.TABLE_UNIQUE_VALIDATE_ERROR, request.getMenuName()); + } + } + } + }