mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
新增OrganProperties.superAdminProdOrgIgnoreEnable,配置位置为chenfeng.organ.superadmin-prod-org-ignore-enable,支持配置后在超管的情况下也塞入organid
This commit is contained in:
+4
@@ -39,4 +39,8 @@ public class OrganProperties {
|
||||
*/
|
||||
private Set<String> ignoreTables = Collections.emptySet();
|
||||
|
||||
/**
|
||||
* 超级管理员生产微服务(exec、manage等)开启(默认开启)忽略多组织 :控制是否自动填充organ_id
|
||||
*/
|
||||
private Boolean superAdminProdOrgIgnoreEnable = ENABLE_DEFAULT;
|
||||
}
|
||||
|
||||
+11
-5
@@ -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<String> 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();
|
||||
|
||||
+1
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user