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..2774734 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,10 @@ public interface SysMenuMapper extends BaseMapper { */ public List selectMenuList (SysMenu menu); + 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..8da4eb3 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 @@ -15,6 +15,7 @@ import com.muyu.system.mapper.SysMenuMapper; import com.muyu.system.mapper.SysRoleMapper; import com.muyu.system.mapper.SysRoleMenuMapper; import com.muyu.system.service.SysMenuService; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,6 +52,39 @@ public class SysMenuServiceImpl extends ServiceImpl impl return selectMenuList(new SysMenu(), userId); } + 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; } + + + + /** * 根据用户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..34ad1af 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