From e12b54dd9376e0dafe30480afce58b0d14354689 Mon Sep 17 00:00:00 2001 From: stylefeng Date: Fri, 24 Jan 2025 22:55:49 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.3.3=E3=80=91=E3=80=90role=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=B0=E5=A2=9E=E5=92=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=9D=83=E9=99=90=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RoleDataScopeController.java | 28 +++++++++++ .../SysRoleDataScopeExceptionEnum.java | 7 ++- .../pojo/request/SysRoleDataScopeRequest.java | 32 +++++++++++-- .../impl/SysRoleDataScopeServiceImpl.java | 46 ++++++++++++++++++- 4 files changed, 107 insertions(+), 6 deletions(-) diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/controller/RoleDataScopeController.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/controller/RoleDataScopeController.java index 382d60c07..971046c5c 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/controller/RoleDataScopeController.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/controller/RoleDataScopeController.java @@ -6,12 +6,14 @@ import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; +import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.sys.api.constants.PermissionCodeConstants; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleDataScope; import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.SysRoleDataScopeRequest; import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleDataScopeService; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; /** @@ -41,4 +43,30 @@ public class RoleDataScopeController { return new SuccessResponseData<>(pageList); } + /** + * 新增一个角色的数据权限 + * + * @author fengshuonan + * @since 2025/1/24 22:34 + */ + @PostResource(name = "新增一个角色的数据权限", path = "/roleDataScope/addRoleDataScope", requiredPermission = true, + requirePermissionCode = PermissionCodeConstants.CHANGE_ROLE_DATA_SCOPE) + public ResponseData addRoleDataScope(@RequestBody @Validated(BaseRequest.add.class) SysRoleDataScopeRequest roleDataScopeRequest) { + sysRoleDataScopeService.add(roleDataScopeRequest); + return new SuccessResponseData<>(); + } + + /** + * 修改角色的数据权限 + * + * @author fengshuonan + * @since 2025/1/24 22:49 + */ + @PostResource(name = "修改角色的数据权限", path = "/roleDataScope/editRoleDataScope", requiredPermission = true, + requirePermissionCode = PermissionCodeConstants.CHANGE_ROLE_DATA_SCOPE) + public ResponseData editRoleDataScope(@RequestBody @Validated(BaseRequest.edit.class) SysRoleDataScopeRequest roleDataScopeRequest) { + sysRoleDataScopeService.edit(roleDataScopeRequest); + return new SuccessResponseData<>(); + } + } diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/enums/exception/SysRoleDataScopeExceptionEnum.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/enums/exception/SysRoleDataScopeExceptionEnum.java index ce2f3454d..abd9deeb0 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/enums/exception/SysRoleDataScopeExceptionEnum.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/enums/exception/SysRoleDataScopeExceptionEnum.java @@ -16,7 +16,12 @@ public enum SysRoleDataScopeExceptionEnum implements AbstractExceptionEnum { /** * 查询结果不存在 */ - SYS_ROLE_DATA_SCOPE_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在"); + SYS_ROLE_DATA_SCOPE_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在"), + + /** + * 存在参数为空,参数名称为:{} + */ + PARAM_IS_EMPTY(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10002", "存在参数为空,参数名称为:{}"); /** * 错误编码 diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/pojo/request/SysRoleDataScopeRequest.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/pojo/request/SysRoleDataScopeRequest.java index f67acb006..c00318378 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/pojo/request/SysRoleDataScopeRequest.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/pojo/request/SysRoleDataScopeRequest.java @@ -6,6 +6,8 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + /** * 角色数据范围封装类 * @@ -20,19 +22,41 @@ public class SysRoleDataScopeRequest extends BaseRequest { * 主键 */ @ChineseDescription("主键") + @NotNull(message = "主键不能为空", groups = {edit.class, delete.class, detail.class}) private Long roleDataScopeId; /** * 角色id */ - @NotNull(message = "角色id不能为空", groups = {page.class}) + @NotNull(message = "角色id不能为空", groups = {page.class, add.class, edit.class}) @ChineseDescription("角色id") private Long roleId; /** - * 机构id + * 数据范围类型:10-仅本人数据,20-本部门数据,30-本部门及以下数据,31-本公司及以下数据,32-指定机构层级及以下 + *

+ * 40-指定机构集合数据,41-指定机构及以下,50-全部数据 */ - @ChineseDescription("机构id") - private Long organizationId; + @ChineseDescription("数据范围类型:10-仅本人数据,20-本部门数据,30-本部门及以下数据,31-本公司及以下数据,32-指定机构层级及以下,40-指定机构集合数据,41-指定机构及以下,50-全部数据") + @NotNull(message = "数据范围类型不能为空", groups = {add.class, edit.class}) + private Integer dataScopeType; + + /** + * 层级的编码,用在类型为32-指定层级及以下,情况时使用 + */ + @ChineseDescription("层级的编码,用在类型为32-指定层级及以下,情况时使用") + private String orgLevelCode; + + /** + * 指定机构集合列表,用在类型为40-指定机构集合数据,情况时使用 + */ + @ChineseDescription("指定机构集合列表,用在类型为40-指定机构集合数据,情况时使用") + private List defineOrgList; + + /** + * 指定机构的id,用在类型为41-指定机构及以下,情况时使用 + */ + @ChineseDescription("指定机构的id,用在类型为41-指定机构及以下,情况时使用") + private Long defineOrgId; } diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleDataScopeServiceImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleDataScopeServiceImpl.java index 8c5422b34..8aaee3899 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleDataScopeServiceImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleDataScopeServiceImpl.java @@ -13,6 +13,7 @@ import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; import cn.stylefeng.roses.kernel.sys.api.OrgLevelServiceApi; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi; import cn.stylefeng.roses.kernel.sys.api.entity.OrganizationLevel; +import cn.stylefeng.roses.kernel.sys.api.exception.SysException; import cn.stylefeng.roses.kernel.sys.api.pojo.org.OrganizationLevelRequest; import cn.stylefeng.roses.kernel.sys.api.pojo.role.response.RoleBindDataScopeResponse; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleDataScope; @@ -52,6 +53,10 @@ public class SysRoleDataScopeServiceImpl extends ServiceImpl