From 90177a3eafc4cbf3396e2cdf4640dc071359ca4b Mon Sep 17 00:00:00 2001 From: "Michelle.Chung" <1242874891@qq.com> Date: Mon, 25 Dec 2023 19:45:50 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=20ThreadLocalHolder?= =?UTF-8?q?=20=E4=BD=BF=E7=94=A8=20TransmittableThreadLocal=20=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=94=AF=E6=8C=81=E5=BC=82=E6=AD=A5=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=20;=20update=20=E6=9B=B4=E6=96=B0=20PlusWebInvokeTime?= =?UTF-8?q?Interceptor=20=E7=BB=93=E6=9D=9F=E5=90=8E=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E7=BC=93=E5=AD=98=20;=20rollback=20=E5=9B=9E=E6=BB=9A=20LOGIN?= =?UTF-8?q?=5FUSER=5FKEY,=20DataPermissionHelper=20=E6=8F=90=E4=BA=A4=20;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/ruoyi-common-core/pom.xml | 5 +++++ .../org/dromara/common/core/constant/UserConstants.java | 5 ----- .../dromara/common/core/context/ThreadLocalHolder.java | 9 +++------ .../common/mybatis/helper/DataPermissionHelper.java | 9 ++++++--- .../org/dromara/common/satoken/utils/LoginHelper.java | 2 +- .../web/interceptor/PlusWebInvokeTimeInterceptor.java | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml index ad37e90db..5925c9b3c 100644 --- a/ruoyi-common/ruoyi-common-core/pom.xml +++ b/ruoyi-common/ruoyi-common-core/pom.xml @@ -94,6 +94,11 @@ ip2region + + com.alibaba + transmittable-thread-local + + diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/UserConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/UserConstants.java index b157e24e9..6f3b0b96b 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/UserConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/UserConstants.java @@ -139,9 +139,4 @@ public interface UserConstants { */ Long SUPER_ADMIN_ID = 1L; - /** - * 登录用户 key - */ - String LOGIN_USER_KEY = "loginUser"; - } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/context/ThreadLocalHolder.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/context/ThreadLocalHolder.java index 4ee72832b..e527dab92 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/context/ThreadLocalHolder.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/context/ThreadLocalHolder.java @@ -1,5 +1,7 @@ package org.dromara.common.core.context; +import com.alibaba.ttl.TransmittableThreadLocal; + import java.util.HashMap; import java.util.Map; @@ -13,12 +15,7 @@ public class ThreadLocalHolder { /** * 初始化 (支持异步) */ - private static final ThreadLocal> THREAD_LOCAL = new InheritableThreadLocal<>() { - @Override - protected Map initialValue() { - return new HashMap<>(); - } - }; + private static final ThreadLocal> THREAD_LOCAL = TransmittableThreadLocal.withInitial(HashMap::new); /** * 设置值 diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java index d51382b9e..a7bca2089 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java @@ -1,5 +1,7 @@ package org.dromara.common.mybatis.helper; +import cn.dev33.satoken.context.SaHolder; +import cn.dev33.satoken.context.model.SaStorage; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy; import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; @@ -35,10 +37,11 @@ public class DataPermissionHelper { } public static Map getContext() { - Object attribute = ThreadLocalHolder.get(DATA_PERMISSION_KEY); + SaStorage saStorage = SaHolder.getStorage(); + Object attribute = saStorage.get(DATA_PERMISSION_KEY); if (ObjectUtil.isNull(attribute)) { - ThreadLocalHolder.set(DATA_PERMISSION_KEY, new HashMap<>()); - attribute = ThreadLocalHolder.get(DATA_PERMISSION_KEY); + saStorage.set(DATA_PERMISSION_KEY, new HashMap<>()); + attribute = saStorage.get(DATA_PERMISSION_KEY); } if (attribute instanceof Map map) { return map; diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java index 633c2c086..5f36ac323 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java @@ -31,7 +31,7 @@ import java.util.function.Supplier; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class LoginHelper { - public static final String LOGIN_USER_KEY = UserConstants.LOGIN_USER_KEY; + public static final String LOGIN_USER_KEY = "loginUser"; public static final String TENANT_KEY = "tenantId"; public static final String USER_KEY = "userId"; public static final String DEPT_KEY = "deptId"; diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/interceptor/PlusWebInvokeTimeInterceptor.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/interceptor/PlusWebInvokeTimeInterceptor.java index 505cc1df7..4b93de654 100644 --- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/interceptor/PlusWebInvokeTimeInterceptor.java +++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/interceptor/PlusWebInvokeTimeInterceptor.java @@ -73,7 +73,7 @@ public class PlusWebInvokeTimeInterceptor implements HandlerInterceptor { StopWatch stopWatch = ThreadLocalHolder.get(STOP_WATCH_KEY); stopWatch.stop(); log.info("[PLUS]结束请求 => URL[{}],耗时:[{}]毫秒", request.getMethod() + " " + request.getRequestURI(), stopWatch.getTime()); - ThreadLocalHolder.remove(STOP_WATCH_KEY); + ThreadLocalHolder.clear(); } }