From 203233fbaf8379623879957684de4d4b499b811a Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期五, 22 十二月 2023 13:23:30 +0800 Subject: [PATCH] !464 发布 5.1.2 版本 2023 最后一版 Merge pull request !464 from 疯狂的狮子Li/dev --- ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java | 61 +++++++++++++++++++++++++++--- 1 files changed, 55 insertions(+), 6 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 8d435a3..e830c19 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,7 +1,7 @@ package org.dromara.common.tenant.helper; import cn.dev33.satoken.context.SaHolder; -import cn.dev33.satoken.spring.SpringMVCUtil; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.convert.Convert; import com.alibaba.ttl.TransmittableThreadLocal; import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy; @@ -82,10 +82,13 @@ /** * 璁剧疆鍔ㄦ�佺鎴�(涓�鐩存湁鏁� 闇�瑕佹墜鍔ㄦ竻鐞�) * <p> - * 濡傛灉涓洪潪web鐜 閭d箞鍙湪褰撳墠绾跨▼鍐呯敓鏁� + * 濡傛灉涓烘湭鐧诲綍鐘舵�佷笅 閭d箞鍙湪褰撳墠绾跨▼鍐呯敓鏁� */ public static void setDynamic(String tenantId) { - if (!SpringMVCUtil.isWeb()) { + if (!isEnable()) { + return; + } + if (!isLogin()) { TEMP_DYNAMIC_TENANT.set(tenantId); return; } @@ -97,10 +100,13 @@ /** * 鑾峰彇鍔ㄦ�佺鎴�(涓�鐩存湁鏁� 闇�瑕佹墜鍔ㄦ竻鐞�) * <p> - * 濡傛灉涓洪潪web鐜 閭d箞鍙湪褰撳墠绾跨▼鍐呯敓鏁� + * 濡傛灉涓烘湭鐧诲綍鐘舵�佷笅 閭d箞鍙湪褰撳墠绾跨▼鍐呯敓鏁� */ public static String getDynamic() { - if (!SpringMVCUtil.isWeb()) { + if (!isEnable()) { + return null; + } + if (!isLogin()) { return TEMP_DYNAMIC_TENANT.get(); } String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId(); @@ -117,7 +123,10 @@ * 娓呴櫎鍔ㄦ�佺鎴� */ public static void clearDynamic() { - if (!SpringMVCUtil.isWeb()) { + if (!isEnable()) { + return; + } + if (!isLogin()) { TEMP_DYNAMIC_TENANT.remove(); return; } @@ -127,9 +136,40 @@ } /** + * 鍦ㄥ姩鎬佺鎴蜂腑鎵ц + * + * @param handle 澶勭悊鎵ц鏂规硶 + */ + public static void dynamic(String tenantId, Runnable handle) { + setDynamic(tenantId); + try { + handle.run(); + } finally { + clearDynamic(); + } + } + + /** + * 鍦ㄥ姩鎬佺鎴蜂腑鎵ц + * + * @param handle 澶勭悊鎵ц鏂规硶 + */ + public static <T> T dynamic(String tenantId, Supplier<T> handle) { + setDynamic(tenantId); + try { + return handle.get(); + } finally { + clearDynamic(); + } + } + + /** * 鑾峰彇褰撳墠绉熸埛id(鍔ㄦ�佺鎴蜂紭鍏�) */ public static String getTenantId() { + if (!isEnable()) { + return null; + } String tenantId = TenantHelper.getDynamic(); if (StringUtils.isBlank(tenantId)) { tenantId = LoginHelper.getTenantId(); @@ -137,4 +177,13 @@ return tenantId; } + private static boolean isLogin() { + try { + StpUtil.checkLogin(); + return true; + } catch (Exception e) { + return false; + } + } + } -- Gitblit v1.9.3