From 5fc0a298a51a36ceeea528b0b46c4947d37521b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 21 May 2024 09:53:19 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=8A=A8=E6=80=81=E7=A7=9F=E6=88=B7=20=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E7=BA=BF=E7=A8=8B=E5=86=85=E5=88=87=E6=8D=A2(?= =?UTF-8?q?=E5=A6=82=E9=9C=80=E5=85=A8=E5=B1=80=20=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E4=BC=A0=E5=8F=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/tenant/helper/TenantHelper.java | 21 ++++++++++++------- .../system/SysTenantController.java | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java index e830c190a..9d087e113 100644 --- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java +++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java @@ -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); + } + /** * 设置动态租户(一直有效 需要手动清理) *

* 如果为未登录状态下 那么只在当前线程内生效 + * + * @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); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java index 053ff1712..60be68a95 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java @@ -144,7 +144,7 @@ public class SysTenantController extends BaseController { @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @GetMapping("/dynamic/{tenantId}") public R dynamicTenant(@NotBlank(message = "租户ID不能为空") @PathVariable String tenantId) { - TenantHelper.setDynamic(tenantId); + TenantHelper.setDynamic(tenantId, true); return R.ok(); }