mirror of https://gitee.com/stylefeng/roses
【8.0】【sys】【menu】首页信息获取用户菜单自动渲染父级菜单
parent
1818447f0c
commit
d62a44a02f
|
@ -1,5 +1,6 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.login.service;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi;
|
||||
|
@ -19,6 +20,7 @@ import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
|||
import cn.stylefeng.roses.kernel.sys.modular.login.expander.WebSocketConfigExpander;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.login.pojo.*;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.factory.MenuFactory;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuOptionsService;
|
||||
|
@ -247,6 +249,15 @@ public class UserIndexInfoService {
|
|||
Set<String> menuCodeList = userMenuList.stream().map(SysMenu::getMenuCode).collect(Collectors.toSet());
|
||||
permissionCodeList.addAll(menuCodeList);
|
||||
|
||||
// 获取菜单的上级,查询这些菜单的父级集合,获取缺失的父级菜单,否则组不成一棵树
|
||||
Set<Long> needToAddMenuIds = MenuFactory.getMenuParentIds(userMenuList);
|
||||
if (ObjectUtil.isNotEmpty(needToAddMenuIds)) {
|
||||
List<SysMenu> needToAddMenuList = sysMenuService.getIndexMenuInfoList(ListUtil.list(true, needToAddMenuIds));
|
||||
userMenuList.addAll(needToAddMenuList);
|
||||
Set<String> needToAddCodes = needToAddMenuList.stream().map(SysMenu::getMenuCode).collect(Collectors.toSet());
|
||||
permissionCodeList.addAll(needToAddCodes);
|
||||
}
|
||||
|
||||
// 获取功能对应的功能编码集合
|
||||
List<String> optionsCodeList = sysMenuOptionsService.getOptionsCodeList(menuOptionsIdList);
|
||||
permissionCodeList.addAll(optionsCodeList);
|
||||
|
|
|
@ -200,7 +200,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
sysMenuLambdaQueryWrapper.in(SysMenu::getMenuId, menuIdList);
|
||||
|
||||
// 查询指定的菜单内容
|
||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getAppId, SysMenu::getMenuCode,
|
||||
sysMenuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuParentId, SysMenu::getMenuPids, SysMenu::getAppId,
|
||||
SysMenu::getMenuCode,
|
||||
SysMenu::getMenuName, SysMenu::getMenuType, SysMenu::getAntdvIcon, SysMenu::getAntdvVisible, SysMenu::getAntdvActiveUrl,
|
||||
SysMenu::getAntdvRouter, SysMenu::getAntdvComponent, SysMenu::getMenuSort);
|
||||
|
||||
|
|
Loading…
Reference in New Issue