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;
|
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.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.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.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -57,4 +59,40 @@ public class MenuFactory {
|
||||||
return needToAddResult;
|
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;
|
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
|
@Override
|
||||||
public String getNodeId() {
|
public String getNodeId() {
|
||||||
if (menuId != null) {
|
if (menuId != null) {
|
||||||
|
|
|
@ -118,7 +118,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 组装应用信息和菜单信息
|
// 3. 组装应用信息和菜单信息
|
||||||
return new ArrayList<>();
|
return MenuFactory.createAppGroupDetailResult(appList, sysMenuList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue