✨ Introducing new features. close #4057 租户过滤条提供 tenantSkip TTL 工具
This commit is contained in:
1 parent
21dda92616
commit
9461620091
2 files changed
+23
No files matched your search
+5
@@ -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) {
|
||||
|
||||
+18
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user