From a3fec229a4c83c9f5fe193091af73bc8bd1ebcae Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Tue, 25 Jun 2024 11:53:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EOrganProperties.superAdminPro?= =?UTF-8?q?dOrgIgnoreEnable=EF=BC=8C=E9=85=8D=E7=BD=AE=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=BAchenfeng.organ.superadmin-prod-org-ignore-enable?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E9=85=8D=E7=BD=AE=E5=90=8E=E5=9C=A8?= =?UTF-8?q?=E8=B6=85=E7=AE=A1=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E4=B9=9F?= =?UTF-8?q?=E5=A1=9E=E5=85=A5organid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/organ/config/OrganProperties.java | 4 ++++ .../organ/core/db/OrganDatabaseInterceptor.java | 16 +++++++++++----- .../src/main/resources/application.yaml | 1 + .../src/main/resources/application.yaml | 1 + 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/config/OrganProperties.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/config/OrganProperties.java index cbebf6003..4dc864a3e 100644 --- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/config/OrganProperties.java +++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/config/OrganProperties.java @@ -39,4 +39,8 @@ public class OrganProperties { */ private Set ignoreTables = Collections.emptySet(); + /** + * 超级管理员生产微服务(exec、manage等)开启(默认开启)忽略多组织 :控制是否自动填充organ_id + */ + private Boolean superAdminProdOrgIgnoreEnable = ENABLE_DEFAULT; } diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java index a6654278b..f0bb2f893 100644 --- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java +++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/db/OrganDatabaseInterceptor.java @@ -1,18 +1,15 @@ package com.cf.imes.framework.organ.core.db; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.cf.imes.framework.organ.config.OrganProperties; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; -import com.cf.imes.module.system.enums.permission.RoleCodeEnum; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.LongValue; import java.util.HashSet; -import java.util.Map; import java.util.Objects; import java.util.Set; @@ -25,6 +22,8 @@ public class OrganDatabaseInterceptor implements TenantLineHandler { private final Set ignoreTables = new HashSet<>(); + private Boolean superAdminProdOrgIgnoreEnable; + public OrganDatabaseInterceptor(OrganProperties properties) { // 不同 DB 下,大小写的习惯不同,所以需要都添加进去 properties.getIgnoreTables().forEach(table -> { @@ -33,6 +32,12 @@ public class OrganDatabaseInterceptor implements TenantLineHandler { }); // 在 OracleKeyGenerator 中,生成主键时,会查询这个表,查询这个表后,会自动拼接 ORGAN_ID 导致报错 ignoreTables.add("DUAL"); + Boolean orgIgnoreEnableFromConfig = properties.getSuperAdminProdOrgIgnoreEnable(); + if (orgIgnoreEnableFromConfig != null) { + superAdminProdOrgIgnoreEnable = orgIgnoreEnableFromConfig; + } else { + superAdminProdOrgIgnoreEnable = true; + } } @Override @@ -47,9 +52,10 @@ public class OrganDatabaseInterceptor implements TenantLineHandler { @Override public boolean ignoreTable(String tableName) { + System.out.println(superAdminProdOrgIgnoreEnable); return OrganContextHolder.isIgnore() // 情况一,全局忽略多组织 - || CollUtil.contains(ignoreTables, tableName) // 情况二,忽略多组织的表 - || isAdmin(); //情况三,忽略超级管理员 + || CollUtil.contains(ignoreTables, tableName) // 情况二,忽略多组织的表 + || (isAdmin() && superAdminProdOrgIgnoreEnable); //情况三,忽略超级管理员 } private boolean isAdmin() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/application.yaml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/application.yaml index 15d2861c8..3b2c8da47 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/application.yaml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/application.yaml @@ -150,6 +150,7 @@ chenfeng: - com.cf.imes.module.executor.enums.ErrorCodeConstants organ: # 多组织相关配置项 enable: true + superadmin-prod-org-ignore-enable: false ignore-urls: - /rpc-api/** ignore-tables: diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/application.yaml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/application.yaml index 83d2ee02e..df903d7ad 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/application.yaml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/application.yaml @@ -150,6 +150,7 @@ chenfeng: - com.cf.imes.module.manage.enums.ErrorCodeConstants organ: # 多组织相关配置项 enable: true + superadmin-prod-org-ignore-enable: false ignore-urls: - /rpc-api/** ignore-tables: