From dbcc5df1b55e5576d04fa4e63de448110c2e9201 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Wed, 14 Jun 2023 22:49:45 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.6.0=E3=80=91=E3=80=90sys=E3=80=91?= =?UTF-8?q?=E3=80=90menu=E3=80=91=E5=AE=8C=E5=96=84=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/modular/menu/factory/MenuFactory.java | 44 +++++++++++++++++-- .../menu/pojo/response/MenuItemDetail.java | 10 +++++ .../menu/service/impl/SysMenuServiceImpl.java | 2 +- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/factory/MenuFactory.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/factory/MenuFactory.java index 78dfc3f5e..a84c0cd19 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/factory/MenuFactory.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/factory/MenuFactory.java @@ -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 createAppGroupDetailResult(List appGroupDetails, List sysMenus) { + + // 1. 按应用拆分菜单,进行分组,key是appId,value是应用下的菜单集合 + Map> appIdMenuList = sysMenus.stream().collect(Collectors.groupingBy(SysMenu::getAppId)); + + // 2. 遍历应用详情信息,将菜单挂载到应用列表下 + for (AppGroupDetail appGroupDetail : appGroupDetails) { + + Long appId = appGroupDetail.getAppId(); + + List appMenus = appIdMenuList.get(appId); + if (ObjectUtil.isEmpty(appMenus)) { + continue; + } + + // 将菜单信息转化为响应类型 + List appMenuItems = new ArrayList<>(); + for (SysMenu appMenu : appMenus) { + MenuItemDetail menuItemDetail = new MenuItemDetail(appMenu.getMenuId(), appMenu.getMenuParentId(), appMenu.getMenuName(), appMenu.getMenuType()); + appMenuItems.add(menuItemDetail); + } + + // 将应用下的菜单组装成树 + List menuItemDetailList = new DefaultTreeBuildFactory().doTreeBuild(appMenuItems); + appGroupDetail.setMenuList(menuItemDetailList); + } + + return appGroupDetails; + } + } diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/pojo/response/MenuItemDetail.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/pojo/response/MenuItemDetail.java index 9c317ff46..2b673bcc7 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/pojo/response/MenuItemDetail.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/pojo/response/MenuItemDetail.java @@ -39,6 +39,16 @@ public class MenuItemDetail implements AbstractTreeNode { */ private List 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) { diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java index fe62c378b..d2577bd6f 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuServiceImpl.java @@ -118,7 +118,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl } // 3. 组装应用信息和菜单信息 - return new ArrayList<>(); + return MenuFactory.createAppGroupDetailResult(appList, sysMenuList); } /**