From e99e17c3a26d7131315c3b6df8d9c4c9dce2ef6e Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 25 Oct 2022 15:50:42 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.3.0=E3=80=91=E3=80=90system=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E8=8E=B7=E5=8F=96=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E5=89=8D=E5=90=8E=E5=8F=B0=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kernel/system/api/MenuServiceApi.java | 11 +++++++ .../menu/service/impl/SysMenuServiceImpl.java | 29 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/MenuServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/MenuServiceApi.java index 7dffb3aed..37264b396 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/MenuServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/MenuServiceApi.java @@ -136,4 +136,15 @@ public interface MenuServiceApi { */ List getTotalMenuButtonIdList(AntdvFrontTypeEnum antdvFrontTypeEnum); + /** + * 获取当前用户拥有的菜单类型 + *

+ * 判断是拥有前台菜单,还是后台菜单,还是都有 + * + * @param menuIds 用户所拥有的的所有菜单集合 + * @author fengshuonan + * @date 2022/10/13 21:38 + */ + AntdvFrontTypeEnum getUserMenuType(List menuIds); + } diff --git a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java index 7c86a291a..0cbfdfe5d 100644 --- a/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java +++ b/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java @@ -547,6 +547,35 @@ public class SysMenuServiceImpl extends ServiceImpl impl return menuButtonDTOS; } + @Override + public AntdvFrontTypeEnum getUserMenuType(List menuIds) { + + // 用户没有菜单,默认只返回前台菜单类型 + if (ObjectUtil.isEmpty(menuIds)) { + return AntdvFrontTypeEnum.FRONT; + } + + // 判断菜单中有多少种类的菜单 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(SysMenu::getAntdvFrontType); + queryWrapper.in(SysMenu::getMenuId, menuIds); + List sysMenuList = this.list(queryWrapper); + + // 获取各类菜单的数量 + long frontTypes = sysMenuList.stream().filter(sysMenu -> AntdvFrontTypeEnum.FRONT.getCode().equals(sysMenu.getAntdvFrontType())).count(); + long backendTypes = sysMenuList.stream().filter(sysMenu -> AntdvFrontTypeEnum.BACKEND.getCode().equals(sysMenu.getAntdvFrontType())).count(); + + if (frontTypes > 0 && backendTypes > 0) { + return AntdvFrontTypeEnum.TOTAL_SHOW; + } else if (frontTypes > 0) { + return AntdvFrontTypeEnum.FRONT; + } else if (backendTypes > 0) { + return AntdvFrontTypeEnum.BACKEND; + } + + return AntdvFrontTypeEnum.FRONT; + } + @Override public List getCurrentUserMenus(List appCodeList, Boolean layuiVisibleFlag, Integer antdvFrontType) {