fix 添加租户
parent
ec7e0f5c21
commit
050d4c6c2e
|
@ -49,6 +49,9 @@ public class TenantFilterAspect {
|
||||||
|
|
||||||
@AfterReturning(pointcut = "openSession()", returning = "session")
|
@AfterReturning(pointcut = "openSession()", returning = "session")
|
||||||
public void afterOpenSession(Object session) {
|
public void afterOpenSession(Object session) {
|
||||||
|
if(TenantHelper.isIgnore()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (session instanceof Session) {
|
if (session instanceof Session) {
|
||||||
Long tenantId = LoginHelper.getTenantId();
|
Long tenantId = LoginHelper.getTenantId();
|
||||||
Long dynamic = TenantHelper.getDynamic();
|
Long dynamic = TenantHelper.getDynamic();
|
||||||
|
|
|
@ -37,6 +37,7 @@ import lombok.NoArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 租户助手
|
* 租户助手
|
||||||
|
@ -51,6 +52,10 @@ public class TenantHelper {
|
||||||
|
|
||||||
private static final ThreadLocal<Long> TEMP_DYNAMIC_TENANT = new TransmittableThreadLocal<>();
|
private static final ThreadLocal<Long> TEMP_DYNAMIC_TENANT = new TransmittableThreadLocal<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否忽略租户
|
||||||
|
*/
|
||||||
|
private static final ThreadLocal<Boolean> IGNORE = new TransmittableThreadLocal<>();
|
||||||
/**
|
/**
|
||||||
* 租户功能是否启用
|
* 租户功能是否启用
|
||||||
*/
|
*/
|
||||||
|
@ -117,4 +122,67 @@ public class TenantHelper {
|
||||||
return tenantId;
|
return tenantId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setIgnore(Boolean ignore) {
|
||||||
|
IGNORE.set(ignore);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开启忽略租户(开启后需手动调用 {@link #disableIgnore()} 关闭)
|
||||||
|
*/
|
||||||
|
public static void enableIgnore() {
|
||||||
|
IGNORE.set(Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关闭忽略租户
|
||||||
|
*/
|
||||||
|
public static void disableIgnore() {
|
||||||
|
IGNORE.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在忽略租户中执行
|
||||||
|
*
|
||||||
|
* @param handle 处理执行方法
|
||||||
|
*/
|
||||||
|
public static void ignore(Runnable handle) {
|
||||||
|
enableIgnore();
|
||||||
|
try {
|
||||||
|
handle.run();
|
||||||
|
} finally {
|
||||||
|
disableIgnore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在忽略租户中执行
|
||||||
|
*
|
||||||
|
* @param handle 处理执行方法
|
||||||
|
*/
|
||||||
|
public static <T> T ignore(Supplier<T> handle) {
|
||||||
|
enableIgnore();
|
||||||
|
try {
|
||||||
|
return handle.get();
|
||||||
|
} finally {
|
||||||
|
disableIgnore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前是否忽略租户
|
||||||
|
*
|
||||||
|
* @return 是否忽略
|
||||||
|
*/
|
||||||
|
public static boolean isIgnore() {
|
||||||
|
Boolean aBoolean = IGNORE.get();
|
||||||
|
return Boolean.TRUE.equals(aBoolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void clear() {
|
||||||
|
TEMP_DYNAMIC_TENANT.remove();
|
||||||
|
IGNORE.remove();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,9 @@ public class TenantListener {
|
||||||
@PreRemove
|
@PreRemove
|
||||||
@PrePersist
|
@PrePersist
|
||||||
public void setTenant(TenantAware entity) {
|
public void setTenant(TenantAware entity) {
|
||||||
|
if(TenantHelper.isIgnore()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
Long tenantId = LoginHelper.getTenantId();
|
Long tenantId = LoginHelper.getTenantId();
|
||||||
Long dynamic = TenantHelper.getDynamic();
|
Long dynamic = TenantHelper.getDynamic();
|
||||||
if (!Objects.isNull(dynamic)) {
|
if (!Objects.isNull(dynamic)) {
|
||||||
|
|
Loading…
Reference in New Issue