From c17cec9768ff5e767faf1e1b66481248aa33317b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=86=99=E6=9C=9D?= <13694051+wangxizhao123@user.noreply.gitee.com> Date: Sat, 13 Apr 2024 16:26:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/system/mapper/SysMenuMapper.java | 2 + .../service/impl/SysMenuServiceImpl.java | 60 +++++++++++++++++++ .../resources/mapper/system/SysMenuMapper.xml | 4 ++ 3 files changed, 66 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..7bf20a4 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,6 @@ public interface SysMenuMapper extends BaseMapper { * @return 结果 */ public SysMenu checkMenuNameUnique (@Param("menuName") String menuName, @Param("parentId") Long parentId); + + List selectMenuByParentId (@Param("parentId") Long parentId); } 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..fb43dbe 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 @@ -60,6 +60,8 @@ public class SysMenuServiceImpl extends ServiceImpl impl */ @Override public List selectMenuList (SysMenu menu, Long userId) { + //获取菜单列表的长度 + Integer size = menuMapper.selectMenuList(new SysMenu()).size(); List menuList = null; // 管理员显示所有菜单信息 if (SysUser.isAdmin(userId)) { @@ -68,9 +70,67 @@ public class SysMenuServiceImpl extends ServiceImpl impl menu.getParams().put("userId", userId); menuList = menuMapper.selectMenuListByUserId(menu); } + //显示菜单长度和总菜单长度对比 + if (menuList.size()!= size){ + //菜单权限表 + List sysMenuList = new ArrayList<>(); + //菜单对别 + menuList.forEach(res -> { + //查子集 + sysMenuList.addAll(sanMenu(res)); + //查父级 + if (res.getParentId() != 0) { + sysMenuList.addAll(friendMenu(res)); + } + }); + menuList.addAll(sysMenuList); + menuList = menuList.stream().distinct().toList(); + } + return menuList; } + /** + * 存入子集 + * @param menu + * @return + */ + public List sanMenu(SysMenu menu){ + //定义一个空的SysMenu数组 + List sysMenus = new ArrayList<>(); + //获取子级队列 + List sysMenuList = menuMapper.selectMenuByParentId(menu.getMenuId()); + sysMenus.addAll(sysMenus); + //长度不为0 + if (sysMenuList.size()>0){ + //存入子集列 + for (SysMenu sysMenu : sysMenuList) { + sanMenu(sysMenu); + } + } + return sysMenus; + } + + /** + * 存入父级 + * @param sysMenu + * @return + */ + public List friendMenu(SysMenu sysMenu){ + //创建一个空SysMenu队列 + List sysMenus = new ArrayList<>(); + //查询父级菜单 + SysMenu sysMenu1 = menuMapper.selectMenuById(sysMenu.getParentId()); + //吸收父级菜单 + sysMenus.add(sysMenu1); + //确认父级菜单非空 + if (sysMenu1.getParentId() != 0) { + //存入父级 + sysMenus.addAll(friendMenu(sysMenu1)); + } + return sysMenus; + } + /** * 根据用户ID查询权限 * 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..9341640 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,10 @@ where menu_name=#{menuName} and parent_id = #{parentId} limit 1 + update sys_menu