From 820db87604a8a21db5a84ed3fc9334c0c2a41f5a Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期三, 08 一月 2025 10:57:14 +0800 Subject: [PATCH] update 优化 使用request存储动态租户 避免单请求多次查询redis获取 --- ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 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 1a5ea1a..74c3110 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 @@ -5,10 +5,12 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy; import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; +import jakarta.servlet.http.HttpServletRequest; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.GlobalConstants; +import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.reflect.ReflectUtils; @@ -135,6 +137,7 @@ } String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); RedisUtils.setCacheObject(cacheKey, tenantId); + ServletUtils.getRequest().setAttribute(cacheKey, tenantId); } /** @@ -154,8 +157,15 @@ if (StringUtils.isNotBlank(tenantId)) { return tenantId; } + HttpServletRequest request = ServletUtils.getRequest(); String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); + tenantId = (String) request.getAttribute(cacheKey); + // 濡傛灉涓� -1 璇存槑宸茬粡鏌ヨ繃redis骞朵笖涓嶅瓨鍦ㄥ�� 鍒欑洿鎺ヨ繑鍥瀗ull + if (StringUtils.isNotBlank(tenantId)) { + return tenantId.equals("-1") ? null : tenantId; + } tenantId = RedisUtils.getCacheObject(cacheKey); + request.setAttribute(cacheKey, StringUtils.isBlank(tenantId) ? "-1" : tenantId); return tenantId; } @@ -173,6 +183,7 @@ TEMP_DYNAMIC_TENANT.remove(); String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); RedisUtils.deleteObject(cacheKey); + ServletUtils.getRequest().removeAttribute(cacheKey); } /** -- Gitblit v1.9.3