From 55ad686677d55b6d9ddaf9331f22efb5c6813f8b Mon Sep 17 00:00:00 2001 From: Jiang Peng <2622360564@qq.com> Date: Fri, 12 Apr 2024 19:58:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=8F=9C=E5=8D=95=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E4=BC=98=E5=8C=96=20=E5=90=8E=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/system/mapper/SysMenuMapper.java | 10 ++++ .../service/impl/SysMenuServiceImpl.java | 50 +++++++++++++++++++ .../resources/mapper/system/SysMenuMapper.xml | 24 +++++++++ 3 files changed, 84 insertions(+) diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java index 8ceaaa0..44fd264 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java @@ -21,6 +21,16 @@ public interface SysMenuMapper extends BaseMapper { */ public List selectMenuList (SysMenu menu); + /** + * 根据系统菜单ID列表返回对应的菜单项 + */ + public List selectSysMenuList (@Param("longs") List longs); + + /** + * 查询子菜单,根据父菜单ID列表返回对应的子菜单项 + */ + public List selectSysChdMenuList (@Param("longs") List longs); + /** * 根据用户所有权限 * diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java index e4e2ec8..bbeb192 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java @@ -51,6 +51,44 @@ public class SysMenuServiceImpl extends ServiceImpl impl return selectMenuList(new SysMenu(), userId); } + public List selectSysMenuList(List menuList){ + List longs = menuList.stream() + .map(menu -> menu.getParentId()) + .filter(parentId -> parentId != 0) + .distinct() + .toList(); + if (longs.size()==0){ + return null; + } + List sysMenus = menuMapper.selectSysMenuList(longs); + List sysMenus1 = selectSysMenuList(sysMenus); + if (sysMenus1 != null){ + sysMenus.addAll(sysMenus1); + } + return sysMenus; + } + + public List selectSysChdMenuList(List menuList){ + //从输入的menuList中提取出每个菜单的ID,放入一个long类型的列表中 + List longs = menuList.stream() + .map(menu -> menu.getMenuId()) + .toList(); + //根据提出的菜单ID列表来查询对应的子菜单,将查询结果放入sysMenus列表中 + List sysMenus = menuMapper.selectSysChdMenuList(longs); + //检查sysMenus是否为空,不为空将其添加到sysMenus列表中 + if (sysMenus!=null && sysMenus.size()!=0){ + List sysMenus1 = selectSysMenuList(sysMenus); + if (sysMenus1 != null){ + sysMenus.addAll(sysMenus1); + } + }else{ + //sysMenus为空 直接返回null + return null; + } + //展示sysMenus列表 + return sysMenus; + } + /** * 查询系统菜单列表 * @@ -64,10 +102,22 @@ public class SysMenuServiceImpl extends ServiceImpl impl // 管理员显示所有菜单信息 if (SysUser.isAdmin(userId)) { menuList = menuMapper.selectMenuList(menu); + List sysMenus1 = selectSysMenuList(menuList); + if (sysMenus1!=null && sysMenus1.size()!=0){ + menuList.addAll(sysMenus1); + } + List sysMenus = selectSysChdMenuList(menuMapper.selectMenuList(menu)); + if (sysMenus!=null && sysMenus.size()!=0){ + menuList.addAll(sysMenus); + } + } else { menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } + menuList = menuList.stream() + .distinct() + .toList(); return menuList; } diff --git a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml index 1dac5c4..edd90fe 100644 --- a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -186,6 +186,30 @@ where menu_name=#{menuName} and parent_id = #{parentId} limit 1 + + + + update sys_menu