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

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() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// add TenantLineInnerInterceptor add PaginationInnerInterceptor
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
@Override
public Expression getTenantId() {
String tenantId = TenantContext.getTenant();
//如果通过线程获取租户ID为空则通过当前请求的request获取租户shiro排除拦截器的请求会获取不到租户ID
if(oConvertUtils.isEmpty(tenantId)){
try {
tenantId = TokenUtils.getTenantIdByRequest(SpringContextUtils.getHttpServletRequest());
} catch (Exception e) {
//e.printStackTrace();
// 条件注册租户拦截器当需要租户隔离时才添加
if (OPEN_SYSTEM_TENANT_CONTROL) {
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
@Override
public Expression getTenantId() {
String tenantId = TenantContext.getTenant();
//如果通过线程获取租户ID为空则通过当前请求的request获取租户shiro排除拦截器的请求会获取不到租户ID
if (oConvertUtils.isEmpty(tenantId)) {
try {
tenantId = TokenUtils.getTenantIdByRequest(SpringContextUtils.getHttpServletRequest());
} catch (Exception e) {
//e.printStackTrace();
}
}
}
if(oConvertUtils.isEmpty(tenantId)){
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;
if (oConvertUtils.isEmpty(tenantId)) {
tenantId = "0";
}
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注入动态表名适配拦截器解决多表名问题
interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor());
//update-end-author:zyf date:20220425 for:VUEN-606注入动态表名适配拦截器解决多表名问题