diff --git a/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/aspect/TenantFilterAspect.java b/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/aspect/TenantFilterAspect.java index 21c4d03..2854be7 100755 --- a/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/aspect/TenantFilterAspect.java +++ b/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/aspect/TenantFilterAspect.java @@ -49,6 +49,9 @@ public class TenantFilterAspect { @AfterReturning(pointcut = "openSession()", returning = "session") public void afterOpenSession(Object session) { + if(TenantHelper.isIgnore()){ + return; + } if (session instanceof Session) { Long tenantId = LoginHelper.getTenantId(); Long dynamic = TenantHelper.getDynamic(); diff --git a/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/core/aop/TenantIgnoreAspect.java b/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/core/aop/TenantIgnoreAspect.java new file mode 100644 index 0000000..e69de29 diff --git a/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/helper/TenantHelper.java b/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/helper/TenantHelper.java index 67f1f5b..4957fc0 100755 --- a/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/helper/TenantHelper.java +++ b/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/helper/TenantHelper.java @@ -37,6 +37,7 @@ import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import java.util.Objects; +import java.util.function.Supplier; /** * 租户助手 @@ -51,6 +52,10 @@ public class TenantHelper { private static final ThreadLocal TEMP_DYNAMIC_TENANT = new TransmittableThreadLocal<>(); + /** + * 是否忽略租户 + */ + private static final ThreadLocal IGNORE = new TransmittableThreadLocal<>(); /** * 租户功能是否启用 */ @@ -117,4 +122,67 @@ public class TenantHelper { 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 ignore(Supplier 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(); + } + } diff --git a/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/listener/TenantListener.java b/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/listener/TenantListener.java index adda6a7..00084ac 100755 --- a/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/listener/TenantListener.java +++ b/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/listener/TenantListener.java @@ -49,6 +49,9 @@ public class TenantListener { @PreRemove @PrePersist public void setTenant(TenantAware entity) { + if(TenantHelper.isIgnore()){ + return; + } Long tenantId = LoginHelper.getTenantId(); Long dynamic = TenantHelper.getDynamic(); if (!Objects.isNull(dynamic)) {