49 lines
1.4 KiB
Java
49 lines
1.4 KiB
Java
package com.muyu.config.tenant;
|
||
|
||
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
|
||
import com.muyu.system.handle.SystemHandler;
|
||
import com.muyu.web.utils.Convert;
|
||
import net.sf.jsqlparser.expression.Expression;
|
||
import net.sf.jsqlparser.expression.StringValue;
|
||
import org.springframework.stereotype.Component;
|
||
|
||
import java.util.HashSet;
|
||
import java.util.Set;
|
||
|
||
@Component
|
||
public class CustomTenantHandler implements TenantLineHandler {
|
||
|
||
private static final ThreadLocal<Boolean> ignoreTableThreadLocal = new ThreadLocal<>();
|
||
|
||
public void ignore(){
|
||
ignoreTableThreadLocal.set(true);
|
||
}
|
||
public void remove(){
|
||
ignoreTableThreadLocal.remove();
|
||
}
|
||
|
||
private static final Set<String> ignoreTableSet = new HashSet<String>(){{
|
||
add("user_info");
|
||
}};
|
||
|
||
@Override
|
||
public Expression getTenantId() {
|
||
// 假设有一个租户上下文,能够从中获取当前用户的租户
|
||
String tenantId = SystemHandler.getTenantId();
|
||
// 返回租户ID的表达式,LongValue 是 JSQLParser 中表示 bigint 类型的 class
|
||
return new StringValue(tenantId);
|
||
}
|
||
|
||
@Override
|
||
public String getTenantIdColumn() {
|
||
return "tenant_id";
|
||
}
|
||
|
||
@Override
|
||
public boolean ignoreTable(String tableName) {
|
||
// 根据需要返回是否忽略该表
|
||
return Convert.toBool(ignoreTableThreadLocal.get(), Boolean.FALSE) || ignoreTableSet.contains(tableName);
|
||
}
|
||
|
||
}
|