From ba05e1a9603273665f7d357e6d2ee9eaf42b5955 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 21 Jun 2022 11:52:48 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.2.3=E3=80=91=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=BB=91=E5=AE=9A=E6=88=96=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E8=8F=9C=E5=8D=95=E5=92=8C=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pojo/role/request/SysRoleRequest.java | 19 +++++++++-- .../role/controller/SysRoleController.java | 12 +++++++ .../modular/role/service/SysRoleService.java | 7 ++++ .../role/service/impl/SysRoleServiceImpl.java | 34 +++++++++++++++++++ 4 files changed, 70 insertions(+), 2 deletions(-) diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleRequest.java index 8bd68a1cf..da0b26420 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleRequest.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleRequest.java @@ -31,6 +31,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import javax.validation.constraints.Null; import java.math.BigDecimal; @@ -50,7 +51,7 @@ public class SysRoleRequest extends BaseRequest { * 主键 */ @NotNull(message = "roleId不能为空", groups = {edit.class, delete.class, detail.class, updateStatus.class, grantResource.class, - grantResourceV2.class, grantDataScope.class, grantMenuButton.class, grantMenu.class, grantButton.class}) + grantResourceV2.class, grantDataScope.class, grantMenuButton.class, grantMenu.class, grantButton.class, grantMenusAndButtons.class}) @ChineseDescription("主键") private Long roleId; @@ -142,7 +143,7 @@ public class SysRoleRequest extends BaseRequest { /** * 授权菜单 */ - @NotNull(message = "授权菜单Id不能为空", groups = {grantMenuButton.class}) + @NotEmpty(message = "授权菜单Id不能为空", groups = {grantMenuButton.class, grantMenusAndButtons.class}) @ChineseDescription("授权菜单") private List grantMenuIdList; @@ -179,6 +180,13 @@ public class SysRoleRequest extends BaseRequest { @ChineseDescription("模块下选中的按钮id") private List selectedButtonIds; + /** + * 绑定标识,true-新增绑定菜单,false-取消绑定菜单 + */ + @ChineseDescription("绑定标识,true-新增绑定菜单,false-取消绑定菜单") + @NotNull(message = "绑定标识不能为空", groups = grantMenusAndButtons.class) + private Boolean selectBindFlag; + /** * 参数校验分组:授权菜单和按钮 */ @@ -221,4 +229,11 @@ public class SysRoleRequest extends BaseRequest { } + /** + * 参数校验分组:授权菜单和按钮集合 + */ + public @interface grantMenusAndButtons { + + } + } 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 1dd6122f3..17fee595e 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 @@ -182,6 +182,18 @@ public class SysRoleController { return new SuccessResponseData<>(); } + /** + * 角色绑定或取消绑定菜单和按钮 + * + * @author fengshuonan + * @date 2021/8/11 9:58 + */ + @PostResource(name = "角色绑定或取消绑定菜单和按钮", path = "/sysRole/grantMenusAndButtons") + public ResponseData grantMenusAndButtons(@RequestBody @Validated(SysRoleRequest.grantMenusAndButtons.class) SysRoleRequest sysRoleRequest) { + sysRoleService.grantMenusAndButtons(sysRoleRequest); + return new SuccessResponseData<>(); + } + /** * 设置角色绑定的数据范围类型和数据范围 * 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 e58f27bc8..ad4fa2b17 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 @@ -151,4 +151,11 @@ public interface SysRoleService extends IService, RoleServiceApi { */ List getRoleDataScope(SysRoleRequest sysRoleRequest); + /** + * 授权菜单和按钮集合 + * + * @author fengshuonan + * @date 2022/6/21 9:55 + */ + void grantMenusAndButtons(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 4658c4ed2..69f10bcd2 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 @@ -415,6 +415,40 @@ public class SysRoleServiceImpl extends ServiceImpl impl return sysRoleDataScopeService.getRoleDataScopeIdList(CollectionUtil.newArrayList(sysRole.getRoleId())); } + @Override + public void grantMenusAndButtons(SysRoleRequest sysRoleRequest) { + // 获取新增绑定还是取消绑定菜单 + Boolean selectBindFlag = sysRoleRequest.getSelectBindFlag(); + + // 获取角色和绑定菜单 + Long roleId = sysRoleRequest.getRoleId(); + List grantMenuIdList = sysRoleRequest.getGrantMenuIdList(); + + // 如果是新增绑定菜单 + if (selectBindFlag) { + // 批量保存绑定的菜单集合 + List sysRoleMenus = new ArrayList<>(); + for (Long menuId : grantMenuIdList) { + SysRoleMenu item = new SysRoleMenu(); + item.setRoleId(roleId); + item.setMenuId(menuId); + sysRoleMenus.add(item); + } + this.roleMenuService.saveBatch(sysRoleMenus); + } else { + // 如果是解除绑定菜单 + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(SysRoleMenu::getRoleId, roleId); + wrapper.in(SysRoleMenu::getMenuId, grantMenuIdList); + this.roleMenuService.remove(wrapper); + } + + // 授权按钮 + if (ObjectUtil.isNotEmpty(sysRoleRequest.getModularButtonIds())) { + this.grantButton(sysRoleRequest); + } + } + @Override public List getRolesByIds(List roleIds) { ArrayList sysRoleResponses = new ArrayList<>();