From 7cd3c1becd2679cf72887fed1bd370195a24082b Mon Sep 17 00:00:00 2001 From: fengshuonan <sn93@qq.com> Date: Mon, 26 Jun 2023 21:52:56 +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=E8=B0=83=E6=95=B4api=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=9A=E8=8E=B7=E5=8F=96=E8=8F=9C=E5=8D=95=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84=E5=BA=94=E7=94=A8id=EF=BC=88=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E8=8E=B7=E5=8F=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kernel/sys/api/SysMenuServiceApi.java | 10 ++++ .../modular/menu/service/SysMenuService.java | 11 +---- .../impl/SysMenuOptionsServiceImpl.java | 5 +- .../menu/service/impl/SysMenuServiceImpl.java | 49 ++++++++++++------- .../service/impl/SysRoleMenuServiceImpl.java | 5 +- 5 files changed, 50 insertions(+), 30 deletions(-) diff --git a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysMenuServiceApi.java b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysMenuServiceApi.java index e5da05a87..92fe0c180 100644 --- a/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysMenuServiceApi.java +++ b/kernel-s-sys/sys-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysMenuServiceApi.java @@ -27,6 +27,7 @@ package cn.stylefeng.roses.kernel.sys.api; import cn.stylefeng.roses.kernel.sys.api.pojo.menu.UserAppMenuInfo; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -47,4 +48,13 @@ public interface SysMenuServiceApi { */ List<UserAppMenuInfo> getUserAppMenuDetailList(Set<Long> menuIdList); + /** + * 获取菜单对应的应用id(可以批量获取) + * + * @return key是菜单id,value是应用id + * @author fengshuonan + * @since 2023/6/26 21:47 + */ + Map<Long, Long> getMenuAppId(List<Long> menuIdList); + } diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java index fdf7318a5..53336c5da 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/SysMenuService.java @@ -1,5 +1,6 @@ package cn.stylefeng.roses.kernel.sys.modular.menu.service; +import cn.stylefeng.roses.kernel.sys.api.SysMenuServiceApi; import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu; import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.request.SysMenuRequest; import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.response.AppGroupDetail; @@ -14,7 +15,7 @@ import java.util.Set; * @author fengshuonan * @date 2023/06/10 21:28 */ -public interface SysMenuService extends IService<SysMenu> { +public interface SysMenuService extends IService<SysMenu>, SysMenuServiceApi { /** * 新增 @@ -69,14 +70,6 @@ public interface SysMenuService extends IService<SysMenu> { */ boolean validateMenuBindApp(Set<Long> appIdList); - /** - * 获取菜单的所属appId - * - * @author fengshuonan - * @since 2023/6/13 22:49 - */ - Long getMenuAppId(Long menuId); - /** * 获取所有的菜单信息,用在角色绑定权限界面 * diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java index 69f73ae23..2cd64883b 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/menu/service/impl/SysMenuOptionsServiceImpl.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.sys.modular.menu.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; @@ -24,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -53,7 +55,8 @@ public class SysMenuOptionsServiceImpl extends ServiceImpl<SysMenuOptionsMapper, BeanUtil.copyProperties(sysMenuOptionsRequest, sysMenuOptions); // 获取菜单的应用id - Long appId = sysMenuService.getMenuAppId(sysMenuOptionsRequest.getMenuId()); + Map<Long, Long> menuAppId = sysMenuService.getMenuAppId(ListUtil.list(false, sysMenuOptionsRequest.getMenuId())); + Long appId = menuAppId.get(sysMenuOptionsRequest.getMenuId()); sysMenuOptions.setAppId(appId); this.save(sysMenuOptions); 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 5f6240f8b..c9d0178b3 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 @@ -9,7 +9,6 @@ import cn.stylefeng.roses.kernel.rule.constants.SymbolConstant; import cn.stylefeng.roses.kernel.rule.constants.TreeConstants; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; import cn.stylefeng.roses.kernel.rule.tree.buildpids.PidStructureBuildUtil; -import cn.stylefeng.roses.kernel.sys.api.SysMenuServiceApi; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveMenuCallbackApi; import cn.stylefeng.roses.kernel.sys.api.pojo.menu.UserAppMenuInfo; import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService; @@ -28,10 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -41,7 +37,7 @@ import java.util.stream.Collectors; * @date 2023/06/10 21:28 */ @Service -public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService, SysMenuServiceApi { +public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService { @Resource private SysAppService sysAppService; @@ -127,19 +123,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl return count > 0; } - @Override - public Long getMenuAppId(Long menuId) { - LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysMenu::getMenuId, menuId); - queryWrapper.select(SysMenu::getAppId); - SysMenu one = this.getOne(queryWrapper, false); - if (one != null) { - return one.getAppId(); - } else { - return null; - } - } - @Override public List<SysMenu> getTotalMenus() { LambdaQueryWrapper<SysMenu> menuLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -281,6 +264,34 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl return result; } + @Override + public Map<Long, Long> getMenuAppId(List<Long> menuIdList) { + + // 定义返回结果 + HashMap<Long, Long> menuIdAppIdMap = new HashMap<>(); + + if (ObjectUtil.isEmpty(menuIdList)) { + return menuIdAppIdMap; + } + + // 查询数据库菜单id对应的应用id集合 + LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysMenu::getMenuId, menuIdList); + queryWrapper.select(SysMenu::getAppId); + List<SysMenu> queryList = this.list(queryWrapper); + + if (ObjectUtil.isEmpty(queryList)) { + return menuIdAppIdMap; + } + + // 制作映射关系 + for (SysMenu sysMenu : queryList) { + menuIdAppIdMap.put(sysMenu.getMenuId(), sysMenu.getAppId()); + } + + return menuIdAppIdMap; + } + /** * 获取信息 * diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java index e1575c230..aac8b51b1 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleMenuServiceImpl.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; @@ -32,6 +33,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -169,7 +171,8 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo SysRoleMenu sysRoleMenu = new SysRoleMenu(); sysRoleMenu.setRoleId(roleId); sysRoleMenu.setMenuId(menuId); - Long appId = sysMenuService.getMenuAppId(menuId); + Map<Long, Long> menuAppIdMap = sysMenuService.getMenuAppId(ListUtil.list(false, menuId)); + Long appId = menuAppIdMap.get(menuId); sysRoleMenu.setAppId(appId); // 2. 查询菜单下所有的菜单功能