From cb6f3e9aa01de0333abeb9dfd8669abf57b4bdb1 Mon Sep 17 00:00:00 2001 From: fengshuonan <sn93@qq.com> Date: Tue, 10 Aug 2021 18:50:48 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.1=E3=80=91=E3=80=90role=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A7=92=E8=89=B2=E7=BB=91=E5=AE=9A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pojo/role/request/SysRoleRequest.java | 21 ++++++++++++++- .../role/controller/SysRoleController.java | 12 +++++++++ .../role/service/SysRoleResourceService.java | 10 ++++++- .../impl/SysRoleResourceServiceImpl.java | 27 +++++++++++++++++++ 4 files changed, 68 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 dce804452..eef112cf7 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 @@ -49,7 +49,7 @@ public class SysRoleRequest extends BaseRequest { /** * 主键 */ - @NotNull(message = "roleId不能为空", groups = {edit.class, delete.class, detail.class, updateStatus.class, grantResource.class, grantDataScope.class, grantMenuButton.class}) + @NotNull(message = "roleId不能为空", groups = {edit.class, delete.class, detail.class, updateStatus.class, grantResource.class, grantResourceV2.class, grantDataScope.class, grantMenuButton.class}) @ChineseDescription("主键") private Long roleId; @@ -120,6 +120,18 @@ public class SysRoleRequest extends BaseRequest { @ChineseDescription("授权资源") private List<String> grantResourceList; + /** + * 授权资源,模块组包含的所有资源 + */ + @ChineseDescription("授权资源,模块组包含的所有资源") + private List<String> modularTotalResource; + + /** + * 授权资源,模块组选中的资源 + */ + @ChineseDescription("授权资源,模块组选中的资源") + private List<String> selectedResource; + /** * 授权数据 */ @@ -154,6 +166,13 @@ public class SysRoleRequest extends BaseRequest { } + /** + * 参数校验分组:授权资源 + */ + public @interface grantResourceV2 { + + } + /** * 参数校验分组:授权数据 */ 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 59044f025..59fd3460a 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 @@ -128,6 +128,18 @@ public class SysRoleController { return new SuccessResponseData(); } + /** + * 角色绑定接口数据 + * + * @author fengshuonan + * @date 2021/8/10 18:23 + */ + @PostResource(name = "角色绑定接口数据V2", path = "/sysRole/grantResourceV2") + public ResponseData grantResourceV2(@RequestBody @Validated(SysRoleRequest.grantResourceV2.class) SysRoleRequest sysRoleRequest) { + sysRoleResourceService.grantResourceV2(sysRoleRequest); + return new SuccessResponseData(); + } + /** * 角色授权菜单和按钮 * diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java index 56ccde461..e7670c4c9 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java @@ -24,8 +24,8 @@ */ package cn.stylefeng.roses.kernel.system.modular.role.service; -import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource; import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest; +import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -47,6 +47,14 @@ public interface SysRoleResourceService extends IService<SysRoleResource> { */ void grantResource(SysRoleRequest sysRoleRequest); + /** + * 角色授权接口资源 + * + * @author fengshuonan + * @date 2021/8/10 18:28 + */ + void grantResourceV2(SysRoleRequest sysRoleRequest); + /** * 根据资源id集合删除角色关联的资源 * diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java index 96b86ce33..2c7e5ee3d 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java @@ -24,12 +24,14 @@ */ package cn.stylefeng.roses.kernel.system.modular.role.service.impl; +import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest; import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource; import cn.stylefeng.roses.kernel.system.modular.role.mapper.SysRoleResourceMapper; import cn.stylefeng.roses.kernel.system.modular.role.service.SysRoleResourceService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -79,6 +81,31 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe this.saveBatch(sysRoleResources); } + @Override + public void grantResourceV2(SysRoleRequest sysRoleRequest) { + // 先将该业务下,模块下的所有资源删除掉 + List<String> modularTotalResource = sysRoleRequest.getModularTotalResource(); + if (ObjectUtil.isNotEmpty(modularTotalResource)) { + LambdaUpdateWrapper<SysRoleResource> wrapper = new LambdaUpdateWrapper<>(); + wrapper.in(SysRoleResource::getResourceCode, modularTotalResource); + wrapper.eq(SysRoleResource::getRoleId, sysRoleRequest.getRoleId()); + this.remove(wrapper); + } + + // 再将该业务下,需要绑定的资源添加上 + List<String> selectedResource = sysRoleRequest.getSelectedResource(); + if (ObjectUtil.isNotEmpty(selectedResource)) { + ArrayList<SysRoleResource> menuResources = new ArrayList<>(); + for (String resourceCode : selectedResource) { + SysRoleResource sysRoleResource = new SysRoleResource(); + sysRoleResource.setRoleId(sysRoleRequest.getRoleId()); + sysRoleResource.setResourceCode(resourceCode); + menuResources.add(sysRoleResource); + } + this.saveBatch(menuResources, menuResources.size()); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void deleteRoleResourceListByResourceIds(List<Long> resourceIds) {