From eefdbda6c910b10bbebdb5db0e71562318df76ba Mon Sep 17 00:00:00 2001 From: 15544878926 <2856202158@qq.com> Date: Sun, 14 Apr 2024 14:40:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E8=8F=9C=E5=8D=95=E8=8A=82?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/system/mapper/SysMenuMapper.java | 3 + .../service/impl/SysMenuServiceImpl.java | 94 +++++++++++++++++++ .../resources/mapper/system/SysMenuMapper.xml | 22 +++++ 3 files changed, 119 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..a5e4fef 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 @@ -12,6 +12,9 @@ import java.util.List; * @author muyu */ public interface SysMenuMapper extends BaseMapper { + public List selectSysMenuList(@Param("longs") List longs); + + 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..df40ff1 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 @@ -39,6 +39,8 @@ public class SysMenuServiceImpl extends ServiceImpl impl @Autowired private SysRoleMenuMapper roleMenuMapper; + + /** * 根据用户查询系统菜单列表 * @@ -68,8 +70,29 @@ public class SysMenuServiceImpl extends ServiceImpl impl menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } + if (menuList.size ()==1){ +// 如果是查找 menuList 的第一条数据 + SysMenu sysMenu = menuList.get ( 0 ); + + this.getMeentList(menuList,sysMenu); + // 获取当前菜单的子菜单列表 + List< SysMenu > childList = this.getChildList ( menuMapper.selectMenuList ( null ), sysMenu ); +// // 将子菜单添加到菜单列表中 + menuList.addAll ( childList ); + } return menuList; } + private void getMeentList(List< SysMenu> menuList, SysMenu menu) { + // 如果当前菜单的父菜单ID不等于0(表示根菜单),则查找并添加其父菜单到菜单列表中,然后递归查找父菜单的祖先菜单 + if (!menu.getParentId ().equals ( 0L )){ + // 通过父菜单ID选择父菜单 + SysMenu sysMenu = this.selectMenuById ( menu.getParentId ( ) ); + // 将父菜单添加到菜单列表中 + menuList.add ( sysMenu ); + // 递归查找父菜单的祖先菜单 + getMeentList ( menuList,sysMenu ); + } + } /** * 根据用户ID查询权限 @@ -192,6 +215,66 @@ public class SysMenuServiceImpl extends ServiceImpl impl return routers; } + public List selectSysChdMenuList(List menuList) { + List longs = menuList.stream() + .map(menu -> menu.getMenuId()) + .toList(); + List sysMenus = menuMapper.selectSysChdMenuList(longs); + if (sysMenus != null && sysMenus.size() != 0) { + List sysMenus1 = selectSysMenuList(sysMenus); + if (sysMenus1 != null) { + sysMenus.addAll(sysMenus1); + } + }else { + return null; + } + return sysMenus; + } + + public List selectSysMenuList(List menus){ + List longs = menus.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; + } + + /** + * 查询系统菜单列表 + * + @ -64,13 +98,31 @@ public class SysMenuServiceImpl extends ServiceImpl impl + // 管理员显示所有菜单信息 + if (SysUser.isAdmin(userId)) { + menuList = menuMapper.selectMenuList(menu); + + List sysMenus = selectSysMenuList(menuList); + + if (sysMenus != null && sysMenus.size() != 0) { + menuList.addAll(sysMenus); + } + + List sysMenus1 = selectSysChdMenuList(menuMapper.selectMenuList(menu)); + if (sysMenus1 != null && sysMenus1.size() !=0) { + menuList.addAll(sysMenus1); + } + } else { + menu.getParams().put("userId", userId); + menuList = menuMapper.selectMenuListByUserId(menu); + } + menuList = menuList.stream() + .distinct() + .toList(); + return menuList; + } /** * 构建前端所需要树结构 * @@ -457,7 +540,17 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 得到子节点列表 */ private List getChildList (List list, SysMenu t) { + // 初始化用于存放子节点的列表 List tlist = new ArrayList(); + List< SysMenu > sysMenus = new ArrayList<> ( ); + + Iterator< SysMenu > iterator = list.iterator ( ); + while (iterator.hasNext ()){ + SysMenu next = iterator.next ( ); + if (next.getParentId ().longValue ()==t.getMenuId ().longValue ()){ + tlist.add ( next ); + } + } Iterator it = list.iterator(); while (it.hasNext()) { SysMenu n = (SysMenu) it.next(); @@ -465,6 +558,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl tlist.add(n); } } + // 返回找到的子节点列表 return tlist; } 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..2757173 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 @@ -26,6 +26,28 @@ + + select menu_id,