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..f0d3ffc 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 @@ -135,4 +135,8 @@ public interface SysMenuMapper extends BaseMapper { * @return 结果 */ public SysMenu checkMenuNameUnique (@Param("menuName") String menuName, @Param("parentId") Long parentId); + + List selectBatchParentIds(@Param("parentIdList") List parentIdList); + + List selectBatchMenuIds(@Param("menuIdList") List menuIdList); } 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..b1eabee 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 @@ -64,11 +64,54 @@ public class SysMenuServiceImpl extends ServiceImpl impl // 管理员显示所有菜单信息 if (SysUser.isAdmin(userId)) { menuList = menuMapper.selectMenuList(menu); + List sysMenus =selectParentMenuList(menuList); + if (sysMenus !=null){ + menuList.addAll(sysMenus); + } + List sysMenus1 = selectChildMenuList(menuMapper.selectMenuList(menu)); + if (sysMenus1 !=null){ + menuList.addAll(sysMenus1); + } } else { + menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } - return menuList; + return menuList.stream() + .distinct().toList(); + } + + private List selectChildMenuList(List menuList) { + List menuIdList = menuList.stream() + .map(menu -> menu.getMenuId()) + .toList(); + if (menuIdList.size() >0 && menuIdList !=null){ + List sysMenus = menuMapper.selectBatchMenuIds(menuIdList); + if (sysMenus.size() >0 && sysMenus !=null){ + List sysMenus1 =selectChildMenuList(sysMenus); + if (sysMenus1!=null){ + sysMenus.addAll(sysMenus1); + } + } + return sysMenus; + } + return null; + } + + private List selectParentMenuList(List menuList) { + List parentIdList = menuList.stream() + .map(menu -> menu.getParentId()) + .filter(parentId -> parentId !=0) + .distinct().toList(); + if (parentIdList.size() >0 && parentIdList !=null){ + List sysMenus =menuMapper.selectBatchParentIds(parentIdList); + List sysMenus1 =selectParentMenuList(sysMenus); + if (sysMenus1!=null){ + sysMenus.addAll(sysMenus1); + } + return sysMenus; + } + return null; } /** 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..81b6463 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 @@ -185,6 +185,28 @@ where menu_name=#{menuName} and parent_id = #{parentId} limit 1 + + update sys_menu