【7.6.0】【sys】【menu】完善获取应用列表接口

pull/55/MERGE
fengshuonan 2023-06-14 22:49:45 +08:00
parent ed9fceddc6
commit dbcc5df1b5
3 changed files with 52 additions and 4 deletions

View File

@ -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是appIdvalue是应用下的菜单集合
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;
}
}

View File

@ -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) {

View File

@ -118,7 +118,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
}
// 3. 组装应用信息和菜单信息
return new ArrayList<>();
return MenuFactory.createAppGroupDetailResult(appList, sysMenuList);
}
/**