From aa277b373bb3e7b106ae40ee1feccdab36f03d70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 21 Jan 2026 11:46:33 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=B1=BB=E5=88=AB=E8=8F=9C=E5=8D=95=E7=9A=84=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E6=9C=89=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/impl/SysMenuServiceImpl.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java index fd824e9af..0c69b1f3f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -377,21 +377,24 @@ public class SysMenuServiceImpl implements ISysMenuService { List sysMenuList = baseMapper.selectList( new LambdaQueryWrapper() .in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU) - .eq(SysMenu::getPath, path).or().eq(SysMenu::getPath, routeName)); + .and(w -> + w.eq(SysMenu::getPath, path).or().eq(SysMenu::getPath, routeName) + )); for (SysMenu sysMenu : sysMenuList) { - if (sysMenu.getMenuId() != menuId) { + if (!sysMenu.getMenuId().equals(menuId)) { Long dbParentId = sysMenu.getParentId(); String dbPath = sysMenu.getPath(); String dbRouteName = StringUtils.isEmpty(sysMenu.getRouteName()) ? dbPath : sysMenu.getRouteName(); - if (StringUtils.equalsAnyIgnoreCase(path, dbPath) && parentId.longValue() == dbParentId.longValue()) { + if (StringUtils.equalsAnyIgnoreCase(path, dbPath) && parentId.equals(dbParentId)) { log.warn("[同级路由冲突] 同级下已存在相同路由路径 '{}',冲突菜单:{}", dbPath, sysMenu.getMenuName()); return false; } else if (StringUtils.equalsAnyIgnoreCase(path, dbPath) - && parentId.longValue() == Constants.TOP_PARENT_ID - && dbParentId.longValue() == Constants.TOP_PARENT_ID) { + && Constants.TOP_PARENT_ID.equals(parentId) + && Constants.TOP_PARENT_ID.equals(dbParentId)) { log.warn("[根目录路由冲突] 根目录下路由 '{}' 必须唯一,已被菜单 '{}' 占用", path, sysMenu.getMenuName()); return false; - } else if (StringUtils.equalsAnyIgnoreCase(routeName, dbRouteName)) { + } else if (StringUtils.equalsAnyIgnoreCase(routeName, dbRouteName) + && sysMenu.getMenuType().equals(menu.getMenuType())) { log.warn("[路由名称冲突] 路由名称 '{}' 需全局唯一,已被菜单 '{}' 使用", routeName, sysMenu.getMenuName()); return false; }