✨ Introducing new features. close #4057 租户过滤条提供 tenantSkip TTL 工具

This commit is contained in:
lbw committed 2022-06-24 22:23:06 +08:00
1 parent 21dda92616
commit 9461620091
2 files changed
+23

No files matched your search

@@ -70,6 +70,11 @@ public class PigxTenantHandler implements TenantLineHandler {
*/
@Override
public boolean ignoreTable(String tableName) {
// 判断是否跳过当前查询的租户过滤
if (TenantContextHolder.getTenantSkip()) {
return Boolean.TRUE;
}
Long tenantId = TenantContextHolder.getTenantId();
// 租户中ID 为空,查询全部,不进行过滤
if (tenantId == null) {
@@ -29,6 +29,8 @@ public class TenantContextHolder {
private final ThreadLocal<Long> THREAD_LOCAL_TENANT = new TransmittableThreadLocal<>();
private final ThreadLocal<Boolean> THREAD_LOCAL_TENANT_SKIP_FLAG = new TransmittableThreadLocal<>();
/**
* TTL 设置租户ID<br/>
* <b>谨慎使用此方法,避免嵌套调用。尽量使用 {@code TenantBroker} </b>
@@ -39,6 +41,13 @@ public class TenantContextHolder {
THREAD_LOCAL_TENANT.set(tenantId);
}
/**
* 设置是否过滤的标识
*/
public void setTenantSkip() {
THREAD_LOCAL_TENANT_SKIP_FLAG.set(Boolean.TRUE);
}
/**
* 获取TTL中的租户ID
* @return
@@ -47,8 +56,17 @@ public class TenantContextHolder {
return THREAD_LOCAL_TENANT.get();
}
/**
* 获取是否跳过租户过滤的标识
* @return
*/
public Boolean getTenantSkip() {
return THREAD_LOCAL_TENANT_SKIP_FLAG.get() != null && THREAD_LOCAL_TENANT_SKIP_FLAG.get();
}
public void clear() {
THREAD_LOCAL_TENANT.remove();
THREAD_LOCAL_TENANT_SKIP_FLAG.remove();
}
}