mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 05:42:06 +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();
|
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;
|
package com.cf.imes.framework.organ.core.db;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
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.config.OrganProperties;
|
||||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
|
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
|
||||||
import com.cf.imes.framework.security.core.LoginUser;
|
import com.cf.imes.framework.security.core.LoginUser;
|
||||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
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.Expression;
|
||||||
import net.sf.jsqlparser.expression.LongValue;
|
import net.sf.jsqlparser.expression.LongValue;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -25,6 +22,8 @@ public class OrganDatabaseInterceptor implements TenantLineHandler {
|
|||||||
|
|
||||||
private final Set<String> ignoreTables = new HashSet<>();
|
private final Set<String> ignoreTables = new HashSet<>();
|
||||||
|
|
||||||
|
private Boolean superAdminProdOrgIgnoreEnable;
|
||||||
|
|
||||||
public OrganDatabaseInterceptor(OrganProperties properties) {
|
public OrganDatabaseInterceptor(OrganProperties properties) {
|
||||||
// 不同 DB 下,大小写的习惯不同,所以需要都添加进去
|
// 不同 DB 下,大小写的习惯不同,所以需要都添加进去
|
||||||
properties.getIgnoreTables().forEach(table -> {
|
properties.getIgnoreTables().forEach(table -> {
|
||||||
@@ -33,6 +32,12 @@ public class OrganDatabaseInterceptor implements TenantLineHandler {
|
|||||||
});
|
});
|
||||||
// 在 OracleKeyGenerator 中,生成主键时,会查询这个表,查询这个表后,会自动拼接 ORGAN_ID 导致报错
|
// 在 OracleKeyGenerator 中,生成主键时,会查询这个表,查询这个表后,会自动拼接 ORGAN_ID 导致报错
|
||||||
ignoreTables.add("DUAL");
|
ignoreTables.add("DUAL");
|
||||||
|
Boolean orgIgnoreEnableFromConfig = properties.getSuperAdminProdOrgIgnoreEnable();
|
||||||
|
if (orgIgnoreEnableFromConfig != null) {
|
||||||
|
superAdminProdOrgIgnoreEnable = orgIgnoreEnableFromConfig;
|
||||||
|
} else {
|
||||||
|
superAdminProdOrgIgnoreEnable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -47,9 +52,10 @@ public class OrganDatabaseInterceptor implements TenantLineHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean ignoreTable(String tableName) {
|
public boolean ignoreTable(String tableName) {
|
||||||
|
System.out.println(superAdminProdOrgIgnoreEnable);
|
||||||
return OrganContextHolder.isIgnore() // 情况一,全局忽略多组织
|
return OrganContextHolder.isIgnore() // 情况一,全局忽略多组织
|
||||||
|| CollUtil.contains(ignoreTables, tableName) // 情况二,忽略多组织的表
|
|| CollUtil.contains(ignoreTables, tableName) // 情况二,忽略多组织的表
|
||||||
|| isAdmin(); //情况三,忽略超级管理员
|
|| (isAdmin() && superAdminProdOrgIgnoreEnable); //情况三,忽略超级管理员
|
||||||
}
|
}
|
||||||
private boolean isAdmin() {
|
private boolean isAdmin() {
|
||||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
|
|||||||
+1
@@ -150,6 +150,7 @@ chenfeng:
|
|||||||
- com.cf.imes.module.executor.enums.ErrorCodeConstants
|
- com.cf.imes.module.executor.enums.ErrorCodeConstants
|
||||||
organ: # 多组织相关配置项
|
organ: # 多组织相关配置项
|
||||||
enable: true
|
enable: true
|
||||||
|
superadmin-prod-org-ignore-enable: false
|
||||||
ignore-urls:
|
ignore-urls:
|
||||||
- /rpc-api/**
|
- /rpc-api/**
|
||||||
ignore-tables:
|
ignore-tables:
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ chenfeng:
|
|||||||
- com.cf.imes.module.manage.enums.ErrorCodeConstants
|
- com.cf.imes.module.manage.enums.ErrorCodeConstants
|
||||||
organ: # 多组织相关配置项
|
organ: # 多组织相关配置项
|
||||||
enable: true
|
enable: true
|
||||||
|
superadmin-prod-org-ignore-enable: false
|
||||||
ignore-urls:
|
ignore-urls:
|
||||||
- /rpc-api/**
|
- /rpc-api/**
|
||||||
ignore-tables:
|
ignore-tables:
|
||||||
|
|||||||
Reference in New Issue
Block a user