From 154086c7fccd3d0264acb4598079ed22a94c7896 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Thu, 29 Sep 2022 11:03:07 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.2.5=E3=80=91=E3=80=90menu=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=92=E8=89=B2=E7=BB=91=E5=AE=9A=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=9D=83=E9=99=90=E7=9A=84=E5=85=A8=E9=80=89=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kernel/system/api/MenuServiceApi.java | 9 +++ .../menu/service/impl/SysMenuServiceImpl.java | 19 ++++++ .../role/controller/SysRoleController.java | 11 +++ .../modular/role/service/SysRoleService.java | 8 +++ .../role/service/impl/SysRoleServiceImpl.java | 68 ++++++++++++++----- 5 files changed, 99 insertions(+), 16 deletions(-) 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 edfb9cea8..96877ae82 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 @@ -126,4 +126,13 @@ public interface MenuServiceApi { */ List getTotalMenuIdList(AntdvFrontTypeEnum antdvFrontTypeEnum); + /** + * 获取所有菜单按钮id集合 + * + * @param antdvFrontTypeEnum 前台还是后台菜单 + * @author fengshuonan + * @date 2022/9/29 9:56 + */ + List getTotalMenuButtonIdList(AntdvFrontTypeEnum antdvFrontTypeEnum); + } 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 3c285470b..8e55e0a13 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 @@ -525,6 +525,25 @@ public class SysMenuServiceImpl extends ServiceImpl impl return sysMenuList.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); } + @Override + public List getTotalMenuButtonIdList(AntdvFrontTypeEnum antdvFrontTypeEnum) { + + List totalMenuIdList = this.getTotalMenuIdList(antdvFrontTypeEnum); + + if (ObjectUtil.isEmpty(totalMenuIdList)) { + return new ArrayList<>(); + } + + // 获取所有按钮id集合 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(SysMenuButton::getButtonId); + wrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode()); + wrapper.in(SysMenuButton::getMenuId, totalMenuIdList); + + List list = this.sysMenuButtonService.list(wrapper); + return list.stream().map(SysMenuButton::getButtonId).collect(Collectors.toList()); + } + @Override public List getCurrentUserMenus(List appCodeList, Boolean layuiVisibleFlag, Integer antdvFrontType) { diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleController.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleController.java index 70be3146c..6d50be87e 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleController.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleController.java @@ -274,4 +274,15 @@ public class SysRoleController { return new SuccessResponseData<>(sysRoleService.grantRoleMenusGrantAll(sysRoleRequest)); } + /** + * 角色权限界面:角色绑定操作权限(全选操作) + * + * @author fengshuonan + * @date 2022/9/28 20:28 + */ + @PostResource(name = "角色权限界面:角色绑定操作权限(全选操作)", path = "/sysRole/grantButton/grantAll") + public ResponseData> grantButtonGrantAll(@RequestBody @Validated(SysRoleRequest.grantAll.class) SysRoleRequest sysRoleRequest) { + return new SuccessResponseData<>(sysRoleService.grantButtonGrantAll(sysRoleRequest)); + } + } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java index cc967d7f6..63f64f44d 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java @@ -184,4 +184,12 @@ public interface SysRoleService extends IService, RoleServiceApi { */ List grantRoleMenusGrantAll(SysRoleRequest sysRoleRequest); + /** + * 角色权限界面,绑定角色的操作权限,全选操作 + * + * @author fengshuonan + * @date 2022/9/29 10:46 + */ + List grantButtonGrantAll(SysRoleRequest sysRoleRequest); + } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java index 7dae9df08..0189866bd 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java @@ -483,25 +483,61 @@ public class SysRoleServiceImpl extends ServiceImpl impl wrapper.eq(SysRoleMenu::getRoleId, sysRoleRequest.getRoleId()); this.roleMenuService.remove(wrapper); - // 如果是全部选中 - if (sysRoleRequest.getTotalSelectFlag()) { + // 获取当前角色分配的菜单权限 + List roleBindMenuList = menuServiceApi.getRoleBindMenuList(sysRoleRequest); - // 获取所有前台菜单id - List totalMenuIdList = this.menuServiceApi.getTotalMenuIdList(AntdvFrontTypeEnum.FRONT); - - // 批量保存绑定的菜单集合 - List sysRoleMenus = new ArrayList<>(); - for (Long menuId : totalMenuIdList) { - SysRoleMenu item = new SysRoleMenu(); - item.setRoleId(sysRoleRequest.getRoleId()); - item.setMenuId(menuId); - sysRoleMenus.add(item); - } - this.roleMenuService.saveBatch(sysRoleMenus); + // 如果是取消权限,则直接返回 + if (!sysRoleRequest.getTotalSelectFlag()) { + return roleBindMenuList; } - // 获取当前角色分配的菜单权限 - return menuServiceApi.getRoleBindMenuList(sysRoleRequest); + // 获取所有前台菜单id + List totalMenuIdList = this.menuServiceApi.getTotalMenuIdList(AntdvFrontTypeEnum.FRONT); + + // 批量保存绑定的菜单集合 + List sysRoleMenus = new ArrayList<>(); + for (Long menuId : totalMenuIdList) { + SysRoleMenu item = new SysRoleMenu(); + item.setRoleId(sysRoleRequest.getRoleId()); + item.setMenuId(menuId); + sysRoleMenus.add(item); + } + this.roleMenuService.saveBatch(sysRoleMenus); + + return roleBindMenuList; + } + + @Override + @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_UNCOMMITTED) + public List grantButtonGrantAll(SysRoleRequest sysRoleRequest) { + + // 删除角色绑定的所有按钮权限 + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(SysRoleMenuButton::getRoleId, sysRoleRequest.getRoleId()); + this.sysRoleMenuButtonService.remove(wrapper); + + // 获取当前角色分配的操作权限 + List roleBindOperateList = menuServiceApi.getRoleBindOperateList(sysRoleRequest); + + // 如果是取消权限,则直接返回 + if (!sysRoleRequest.getTotalSelectFlag()) { + return roleBindOperateList; + } + + // 获取所有前台按钮集合 + List totalButtonIds = this.menuServiceApi.getTotalMenuButtonIdList(AntdvFrontTypeEnum.FRONT); + + // 批量保存绑定的按钮集合 + List sysRoleMenuButtons = new ArrayList<>(); + for (Long buttonId : totalButtonIds) { + SysRoleMenuButton item = new SysRoleMenuButton(); + item.setRoleId(sysRoleRequest.getRoleId()); + item.setButtonId(buttonId); + sysRoleMenuButtons.add(item); + } + this.sysRoleMenuButtonService.saveBatch(sysRoleMenuButtons); + + return roleBindOperateList; } @Override