VehicleSimulation/src/main/java/com/muyu/config/tenant/CustomTenantHandler.java

49 lines
1.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}