|
|
|
@ -1,6 +1,5 @@
|
|
|
|
|
package org.dromara.common.tenant.helper;
|
|
|
|
|
|
|
|
|
|
import cn.dev33.satoken.context.SaHolder;
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
import com.alibaba.ttl.TransmittableThreadLocal;
|
|
|
|
@ -79,22 +78,28 @@ public class TenantHelper {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void setDynamic(String tenantId) {
|
|
|
|
|
setDynamic(tenantId, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置动态租户(一直有效 需要手动清理)
|
|
|
|
|
* <p>
|
|
|
|
|
* 如果为未登录状态下 那么只在当前线程内生效
|
|
|
|
|
*
|
|
|
|
|
* @param tenantId 租户id
|
|
|
|
|
* @param global 是否全局生效
|
|
|
|
|
*/
|
|
|
|
|
public static void setDynamic(String tenantId) {
|
|
|
|
|
public static void setDynamic(String tenantId, boolean global) {
|
|
|
|
|
if (!isEnable()) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!isLogin()) {
|
|
|
|
|
if (!isLogin() || !global) {
|
|
|
|
|
TEMP_DYNAMIC_TENANT.set(tenantId);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
|
|
|
|
|
RedisUtils.setCacheObject(cacheKey, tenantId);
|
|
|
|
|
SaHolder.getStorage().set(cacheKey, tenantId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -109,13 +114,13 @@ public class TenantHelper {
|
|
|
|
|
if (!isLogin()) {
|
|
|
|
|
return TEMP_DYNAMIC_TENANT.get();
|
|
|
|
|
}
|
|
|
|
|
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
|
|
|
|
|
String tenantId = (String) SaHolder.getStorage().get(cacheKey);
|
|
|
|
|
// 如果线程内有值 优先返回
|
|
|
|
|
String tenantId = TEMP_DYNAMIC_TENANT.get();
|
|
|
|
|
if (StringUtils.isNotBlank(tenantId)) {
|
|
|
|
|
return tenantId;
|
|
|
|
|
}
|
|
|
|
|
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
|
|
|
|
|
tenantId = RedisUtils.getCacheObject(cacheKey);
|
|
|
|
|
SaHolder.getStorage().set(cacheKey, tenantId);
|
|
|
|
|
return tenantId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -130,9 +135,9 @@ public class TenantHelper {
|
|
|
|
|
TEMP_DYNAMIC_TENANT.remove();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
TEMP_DYNAMIC_TENANT.remove();
|
|
|
|
|
String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
|
|
|
|
|
RedisUtils.deleteObject(cacheKey);
|
|
|
|
|
SaHolder.getStorage().delete(cacheKey);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|