From 374dd3c534667062a560756703b44d2b9d7ebc32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=B5=B7=E6=B4=8B?= Date: Mon, 22 Jan 2024 13:24:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0userScope?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/resources/data-resource.http | 26 +++++++++++++-- .../enums/DataResourceOperationEnum.java | 28 ++++++++++++++++ .../dataresource/DataResourceRuleDTO.java | 33 +++++++++++++++++++ .../model/dataresource/ResourceScope.java | 8 ++--- .../client/model/dataresource/UserScope.java | 33 +++++++++++++++++++ .../model/dataresource/UserScopeRuleDTO.java | 33 +++++++++++++++++++ .../req/CreateDataResourceParam.java | 19 +++++++++-- .../dataresource/resp/DataResourceResp.java | 12 +++++++ .../repository/entity/DataResource.java | 16 ++++++++- .../service/impl/DataResourceServiceImpl.java | 2 +- 10 files changed, 199 insertions(+), 11 deletions(-) create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataResourceOperationEnum.java create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/DataResourceRuleDTO.java create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScope.java create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScopeRuleDTO.java diff --git a/integration-test/src/test/resources/data-resource.http b/integration-test/src/test/resources/data-resource.http index 20985e95..39cecbd0 100644 --- a/integration-test/src/test/resources/data-resource.http +++ b/integration-test/src/test/resources/data-resource.http @@ -5,9 +5,29 @@ Content-Type: application/json { "name": "项目部通讯录列表", - "attrs": [{"label": "用户名", "attr": "name"}, {"label": "用户Id", "attr": "id"}, {"label": "手机号", "attr": "phone"}], - "resourceScope": [{"attr": "dataPermission", "operation": "in", "value": ["WORKSPACE_SUPERIOR"]}], - "resourceCode": "workspaceContact", + "attrs": [ + { + "label": "用户名", + "attr": "name" + }, + { + "label": "用户Id", + "attr": "id" + }, + { + "label": "手机号", + "attr": "phone" + } + ], + "resourceScope": { + "op": "and", + "rules": [{"attr": "dataPermission", "op": "in", "value": ["WORKSPACE_SUPERIOR"]}], + "groups": [ + { "op": "or", + "rules": [{"attr": "dataPermission1", "op": "eq", "value": ["1"]},{"attr": "dataPermission2", "op": "eq", "value": ["1"]}]} + ] + }, + "resourceCode": "workspaceContact1", "module": "PROJECT" } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataResourceOperationEnum.java b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataResourceOperationEnum.java new file mode 100644 index 00000000..b3cd6d99 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataResourceOperationEnum.java @@ -0,0 +1,28 @@ +package cn.axzo.tyr.client.common.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author haiyangjin + * @date 2024/1/21 + */ +@Getter +@AllArgsConstructor +public enum DataResourceOperationEnum { + /** + * 数据资源操作类型:读 + */ + READ("READ", "读"), + + /** + * 数据资源操作类型:写 + */ + WRITE("WRITE", "写"), + ; + + @EnumValue + private final String value; + private final String desc; +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/DataResourceRuleDTO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/DataResourceRuleDTO.java new file mode 100644 index 00000000..094ac55c --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/DataResourceRuleDTO.java @@ -0,0 +1,33 @@ +package cn.axzo.tyr.client.model.dataresource; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author haiyangjin + * @date 2024/1/21 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DataResourceRuleDTO { + /** + * 属性 + */ + private String attr; + + /** + * 操作符 + */ + private String op; + + /** + * 属性值 + */ + private List value; +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/ResourceScope.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/ResourceScope.java index 41d67bff..f29ac693 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/ResourceScope.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/ResourceScope.java @@ -19,15 +19,15 @@ public class ResourceScope { /** * 属性 */ - private String attr; + private List rules; /** - * 操作符 + * 操作符 and 或者 or */ - private String operation; + private String op; /** * 属性值 */ - private List value; + private List groups; } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScope.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScope.java new file mode 100644 index 00000000..c3cfb163 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScope.java @@ -0,0 +1,33 @@ +package cn.axzo.tyr.client.model.dataresource; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author haiyangjin + * @date 2024/1/19 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UserScope { + /** + * 用户属性 + */ + private List rules; + + /** + * 操作符 and 或者 or + */ + private String op; + + /** + * 属性值 + */ + private List groups; +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScopeRuleDTO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScopeRuleDTO.java new file mode 100644 index 00000000..7edaccfc --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/UserScopeRuleDTO.java @@ -0,0 +1,33 @@ +package cn.axzo.tyr.client.model.dataresource; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author haiyangjin + * @date 2024/1/21 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UserScopeRuleDTO { + /** + * 属性 + */ + private String attr; + + /** + * 操作符 + */ + private String op; + + /** + * 属性值 + */ + private List value; +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/req/CreateDataResourceParam.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/req/CreateDataResourceParam.java index cba425fd..3372fbdb 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/req/CreateDataResourceParam.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/req/CreateDataResourceParam.java @@ -1,11 +1,14 @@ package cn.axzo.tyr.client.model.dataresource.req; import cn.axzo.tyr.client.common.enums.DataResourceModuleEnum; +import cn.axzo.tyr.client.common.enums.DataResourceOperationEnum; import cn.axzo.tyr.client.common.enums.DataResourceTypeEnum; import cn.axzo.tyr.client.model.dataresource.DataResourceAttrs; import cn.axzo.tyr.client.model.dataresource.ResourceScope; +import cn.axzo.tyr.client.model.dataresource.UserScope; import lombok.AllArgsConstructor; import lombok.Builder; +import lombok.Builder.Default; import lombok.Data; import lombok.NoArgsConstructor; @@ -49,14 +52,26 @@ public class CreateDataResourceParam { /** * 数据范围 */ - private List resourceScope; + private ResourceScope resourceScope; /** - * 数据对象类型0:主对象1:子对象 + * 用户范围 + */ + private UserScope userScope; + + /** + * 数据资源类型0:主对象1:子对象 * @see DataResourceTypeEnum */ private DataResourceTypeEnum type; + /** + * 数据资源操作类型 + * @see DataResourceOperationEnum + */ + @Default + private DataResourceOperationEnum operation = DataResourceOperationEnum.READ; + /** * 数据对象code */ diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/resp/DataResourceResp.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/resp/DataResourceResp.java index 2fe6f1e3..fd70f227 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/resp/DataResourceResp.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/dataresource/resp/DataResourceResp.java @@ -1,9 +1,11 @@ package cn.axzo.tyr.client.model.dataresource.resp; import cn.axzo.tyr.client.common.enums.DataResourceModuleEnum; +import cn.axzo.tyr.client.common.enums.DataResourceOperationEnum; import cn.axzo.tyr.client.common.enums.DataResourceTypeEnum; import cn.axzo.tyr.client.model.dataresource.DataResourceAttrs; import cn.axzo.tyr.client.model.dataresource.ResourceScope; +import cn.axzo.tyr.client.model.dataresource.UserScope; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -32,6 +34,11 @@ public class DataResourceResp implements Serializable { */ private String name; + /** + * 数据对象操作类型 + */ + private DataResourceOperationEnum operation; + /** * 模块名称 eg. 企业:ENTERPRISE, 项目:PROJECT */ @@ -52,6 +59,11 @@ public class DataResourceResp implements Serializable { */ private List resourceScope; + /** + * 用户范围 + */ + private List userScope; + /** * 数据对象类型0:主对象1:子对象 */ diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataResource.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataResource.java index d647ccb0..8bbe31f4 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataResource.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataResource.java @@ -2,9 +2,11 @@ package cn.axzo.tyr.server.repository.entity; import cn.axzo.framework.data.mybatisplus.model.BaseEntity; import cn.axzo.tyr.client.common.enums.DataResourceModuleEnum; +import cn.axzo.tyr.client.common.enums.DataResourceOperationEnum; import cn.axzo.tyr.client.common.enums.DataResourceTypeEnum; import cn.axzo.tyr.client.model.dataresource.DataResourceAttrs; import cn.axzo.tyr.client.model.dataresource.ResourceScope; +import cn.axzo.tyr.client.model.dataresource.UserScope; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; @@ -56,7 +58,13 @@ public class DataResource extends BaseEntity implements Serializab * 数据范围 */ @TableField(value = "resource_scope", typeHandler = FastjsonTypeHandler.class) - private List resourceScope; + private ResourceScope resourceScope; + + /** + * 用户范围 + */ + @TableField(value = "user_scope", typeHandler = FastjsonTypeHandler.class) + private UserScope userScope; /** * 数据对象类型0:主对象1:子对象 @@ -64,6 +72,12 @@ public class DataResource extends BaseEntity implements Serializab @TableField("type") private DataResourceTypeEnum type; + /** + * 数据对象类型0:主对象1:子对象 + */ + @TableField("operation") + private DataResourceOperationEnum operation; + /** * 数据对象code */ diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataResourceServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataResourceServiceImpl.java index 498c8b7f..0273bd77 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataResourceServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataResourceServiceImpl.java @@ -60,7 +60,7 @@ public class DataResourceServiceImpl implements DataResourceService { DataResource dataResource = new DataResource(); BeanUtils.copyProperties(param, dataResource); - if (param.getParentId() > 0) { + if (Objects.nonNull(param.getParentId()) && param.getParentId() > 0) { DataResource parent = dataResourceDao.getById(param.getParentId()); if (Objects.isNull(parent)) { Throws.bizException(BaseCode.BAD_REQUEST, "数据对象不存在!");