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: