当需要租户隔离时才添加多租户插件

This commit is contained in:
sunzhiri 2026-02-10 21:32:27 +08:00
parent 04a26cdd6d
commit 0859784c3b

View File

@ -93,40 +93,43 @@ public class MybatisPlusSaasConfig {
public MybatisPlusInterceptor mybatisPlusInterceptor() { public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// add TenantLineInnerInterceptor add PaginationInnerInterceptor // add TenantLineInnerInterceptor add PaginationInnerInterceptor
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() { // 条件注册租户拦截器当需要租户隔离时才添加
@Override if (OPEN_SYSTEM_TENANT_CONTROL) {
public Expression getTenantId() { interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
String tenantId = TenantContext.getTenant(); @Override
//如果通过线程获取租户ID为空则通过当前请求的request获取租户shiro排除拦截器的请求会获取不到租户ID public Expression getTenantId() {
if(oConvertUtils.isEmpty(tenantId)){ String tenantId = TenantContext.getTenant();
try { //如果通过线程获取租户ID为空则通过当前请求的request获取租户shiro排除拦截器的请求会获取不到租户ID
tenantId = TokenUtils.getTenantIdByRequest(SpringContextUtils.getHttpServletRequest()); if (oConvertUtils.isEmpty(tenantId)) {
} catch (Exception e) { try {
//e.printStackTrace(); tenantId = TokenUtils.getTenantIdByRequest(SpringContextUtils.getHttpServletRequest());
} catch (Exception e) {
//e.printStackTrace();
}
} }
} if (oConvertUtils.isEmpty(tenantId)) {
if(oConvertUtils.isEmpty(tenantId)){ tenantId = "0";
tenantId = "0";
}
return new LongValue(tenantId);
}
@Override
public String getTenantIdColumn(){
return TenantConstant.TENANT_ID_TABLE;
}
// 返回 true 表示不走租户逻辑
@Override
public boolean ignoreTable(String tableName) {
for(String temp: TENANT_TABLE){
if(temp.equalsIgnoreCase(tableName)){
return false;
} }
return new LongValue(tenantId);
} }
return true;
} @Override
})); public String getTenantIdColumn() {
return TenantConstant.TENANT_ID_TABLE;
}
// 返回 true 表示不走租户逻辑
@Override
public boolean ignoreTable(String tableName) {
for (String temp : TENANT_TABLE) {
if (temp.equalsIgnoreCase(tableName)) {
return false;
}
}
return true;
}
}));
}
//update-begin-author:zyf date:20220425 for:VUEN-606注入动态表名适配拦截器解决多表名问题 //update-begin-author:zyf date:20220425 for:VUEN-606注入动态表名适配拦截器解决多表名问题
interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor()); interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor());
//update-end-author:zyf date:20220425 for:VUEN-606注入动态表名适配拦截器解决多表名问题 //update-end-author:zyf date:20220425 for:VUEN-606注入动态表名适配拦截器解决多表名问题