From 2a11fc0574b4edcbb771d272cc866b2a95d3bf0c Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Thu, 29 Feb 2024 10:31:04 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.1.1=E3=80=91=E3=80=90db=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E8=8C=83=E5=9B=B4=E7=9A=84?= =?UTF-8?q?holder=E5=92=8C=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mp/datascope/config/DataScopeConfig.java | 52 +++++++++++++++++++ .../mp/datascope/holder/DataScopeHolder.java | 45 ++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/config/DataScopeConfig.java create mode 100644 kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/holder/DataScopeHolder.java diff --git a/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/config/DataScopeConfig.java b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/config/DataScopeConfig.java new file mode 100644 index 000000000..4304005a1 --- /dev/null +++ b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/config/DataScopeConfig.java @@ -0,0 +1,52 @@ +package cn.stylefeng.roses.kernel.db.mp.datascope.config; + +import cn.stylefeng.roses.kernel.rule.enums.permission.DataScopeTypeEnum; +import lombok.Data; + +import java.util.List; + +/** + * 数据范围权限配置 + * + * @author fengshuonan + * @since 2024-02-29 10:04 + */ +@Data +public class DataScopeConfig { + + /** + * 用户的数据范围权限类型 + */ + private DataScopeTypeEnum dataScopeType; + + /** + * 限制的用户id + */ + private Long userId; + + /** + * 用户所在部门id + */ + private Long userDeptId; + + /** + * 用户所在公司id + */ + private Long userCompanyId; + + /** + * 指定机构的ID列表,仅在数据范围类型为 DEFINE 时使用 + */ + private List specificOrgIds; + + /** + * 限制组织机构范围的字段名称 + */ + private String orgIdFieldName = "org_id"; + + /** + * 用来限制只查询自己数据的字段名称 + */ + private String userIdFieldName = "user_id"; + +} diff --git a/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/holder/DataScopeHolder.java b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/holder/DataScopeHolder.java new file mode 100644 index 000000000..7feeb90cd --- /dev/null +++ b/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/datascope/holder/DataScopeHolder.java @@ -0,0 +1,45 @@ +package cn.stylefeng.roses.kernel.db.mp.datascope.holder; + +import cn.stylefeng.roses.kernel.db.mp.datascope.config.DataScopeConfig; + +/** + * 数据范围配置上下文,通过使用这个类进行数据范围的配置 + * + * @author fengshuonan + * @since 2024-02-29 10:16 + */ +public class DataScopeHolder { + + private static final ThreadLocal DATA_SCOPE_CONFIG_HOLDER = new ThreadLocal<>(); + + /** + * 设置数据范围配置 + * + * @author fengshuonan + * @since 2024-02-29 10:17 + */ + public static void set(DataScopeConfig tenantId) { + DATA_SCOPE_CONFIG_HOLDER.set(tenantId); + } + + /** + * 获取数据范围的配置 + * + * @author fengshuonan + * @since 2024-02-29 10:17 + */ + public static DataScopeConfig get() { + return DATA_SCOPE_CONFIG_HOLDER.get(); + } + + /** + * 删除数据范围的配置 + * + * @author fengshuonan + * @since 2024-02-29 10:17 + */ + public static void remove() { + DATA_SCOPE_CONFIG_HOLDER.remove(); + } + +}