mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【menu】完善获取应用列表接口
parent
ed9fceddc6
commit
dbcc5df1b5
|
@ -1,11 +1,13 @@
|
|||
package cn.stylefeng.roses.kernel.sys.modular.menu.factory;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.stylefeng.roses.kernel.rule.constants.TreeConstants;
|
||||
import cn.stylefeng.roses.kernel.rule.tree.factory.DefaultTreeBuildFactory;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.response.AppGroupDetail;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.response.MenuItemDetail;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -57,4 +59,40 @@ public class MenuFactory {
|
|||
return needToAddResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将应用信息和菜单信息组装为界面需要的展示结果
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2023/6/14 22:16
|
||||
*/
|
||||
public static List<AppGroupDetail> createAppGroupDetailResult(List<AppGroupDetail> appGroupDetails, List<SysMenu> sysMenus) {
|
||||
|
||||
// 1. 按应用拆分菜单,进行分组,key是appId,value是应用下的菜单集合
|
||||
Map<Long, List<SysMenu>> appIdMenuList = sysMenus.stream().collect(Collectors.groupingBy(SysMenu::getAppId));
|
||||
|
||||
// 2. 遍历应用详情信息,将菜单挂载到应用列表下
|
||||
for (AppGroupDetail appGroupDetail : appGroupDetails) {
|
||||
|
||||
Long appId = appGroupDetail.getAppId();
|
||||
|
||||
List<SysMenu> appMenus = appIdMenuList.get(appId);
|
||||
if (ObjectUtil.isEmpty(appMenus)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 将菜单信息转化为响应类型
|
||||
List<MenuItemDetail> appMenuItems = new ArrayList<>();
|
||||
for (SysMenu appMenu : appMenus) {
|
||||
MenuItemDetail menuItemDetail = new MenuItemDetail(appMenu.getMenuId(), appMenu.getMenuParentId(), appMenu.getMenuName(), appMenu.getMenuType());
|
||||
appMenuItems.add(menuItemDetail);
|
||||
}
|
||||
|
||||
// 将应用下的菜单组装成树
|
||||
List<MenuItemDetail> menuItemDetailList = new DefaultTreeBuildFactory<MenuItemDetail>().doTreeBuild(appMenuItems);
|
||||
appGroupDetail.setMenuList(menuItemDetailList);
|
||||
}
|
||||
|
||||
return appGroupDetails;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -39,6 +39,16 @@ public class MenuItemDetail implements AbstractTreeNode<MenuItemDetail> {
|
|||
*/
|
||||
private List<MenuItemDetail> children;
|
||||
|
||||
public MenuItemDetail() {
|
||||
}
|
||||
|
||||
public MenuItemDetail(Long menuId, Long menuParentId, String menuName, Integer menuType) {
|
||||
this.menuId = menuId;
|
||||
this.menuParentId = menuParentId;
|
||||
this.menuName = menuName;
|
||||
this.menuType = menuType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNodeId() {
|
||||
if (menuId != null) {
|
||||
|
|
|
@ -118,7 +118,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||
}
|
||||
|
||||
// 3. 组装应用信息和菜单信息
|
||||
return new ArrayList<>();
|
||||
return MenuFactory.createAppGroupDetailResult(appList, sysMenuList);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue