From aadb5615759a78118dc5d58e8cee0aea76ed700f Mon Sep 17 00:00:00 2001
From: Github_lizhw <171332584@qq.com>
Date: Fri, 3 Apr 2026 23:00:27 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../tenant/handle/TenantKeyPrefixHandler.java | 6 +-
.../common/tenant/helper/LoginHelper.java | 67 -------
.../common/tenant/helper/TenantHelper.java | 153 ++++++----------
.../manager/TenantSpringCacheManager.java | 4 +-
.../ruoyi-md-form-service/pom.xml | 4 +
.../md/form/controller/FormController.java | 4 +-
.../form/controller/FormDictController.java | 2 +-
.../controller/FormFieldDictController.java | 2 +-
.../controller/SysFormDictController.java | 2 +-
.../SysFormFieldDictController.java | 2 +-
.../feign/FormFieldDictFeignController.java | 2 +-
.../feign/FormPrintConfigFeignController.java | 2 +-
.../feign/FormTemplateFeignController.java | 2 +-
.../feign/ModifyLogRecordFeignController.java | 2 +-
.../feign/SystemDictFeignController.java | 2 +-
.../md/form/service/FormDictService.java | 2 +-
.../md/form/service/FormFieldDictService.java | 2 +-
.../form/service/FormPrintConfigService.java | 2 +-
.../service/FormTemplateFieldService.java | 2 +-
.../md/form/service/FormTemplateService.java | 2 +-
.../service/TenantInitializationService.java | 2 +-
.../dromara/md/form/utils/TenantHelper.java | 165 ------------------
.../md/h5/controller/H5ProjectController.java | 2 +-
.../md/h5/controller/WorkController.java | 4 +-
.../system/SysSaasTenantController.java | 20 +--
.../system/SysSaasUserController.java | 11 +-
.../saas/domain/SysSaasTenantApplication.java | 4 +-
.../domain/bo/SysSaasTenantApplicationBo.java | 2 +-
.../domain/vo/SysSaasTenantApplicationVo.java | 2 +-
.../system/SysTenantController.java | 20 +--
.../controller/system/SysUserController.java | 14 +-
.../config/GlobalFlowableListener.java | 3 +-
.../impl/ActHiProcinstServiceImpl.java | 5 +-
.../service/impl/ActModelServiceImpl.java | 7 +-
.../impl/ActProcessDefinitionServiceImpl.java | 5 +-
.../service/impl/ActTaskServiceImpl.java | 4 +-
.../dromara/workflow/utils/QueryUtils.java | 17 +-
.../dromara/workflow/utils/WorkflowUtils.java | 4 +-
.../web/config/PlusTenantLineHandler.java | 5 +-
.../web/controller/AuthController.java | 8 +-
.../dromara/web/service/SysLoginService.java | 4 -
.../h5/config/PlusTenantLineHandler.java | 10 +-
ruoyi-site/ruoyi-sso-server/pom.xml | 21 +--
.../satoken/SaTokenExceptionHandler.java | 104 +++++------
.../sso/controller/TokenController.java | 8 +-
.../dromara/sso/service/SysLoginService.java | 4 -
.../config/MybatisPlusAutoConfigTenant.java | 5 +-
.../config/MybatisPlusAutoConfigTenant.java | 5 +-
48 files changed, 235 insertions(+), 496 deletions(-)
delete mode 100644 ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java
delete mode 100644 ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/utils/TenantHelper.java
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java
index 947539863..ef78cf0ff 100644
--- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java
@@ -5,7 +5,7 @@ import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.GlobalConstants;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.redis.handler.KeyPrefixHandler;
-import org.dromara.common.tenant.helper.TenantHelper;
+import org.dromara.common.satoken.utils.LoginHelper;
/**
* 多租户redis缓存key前缀处理
@@ -33,7 +33,7 @@ public class TenantKeyPrefixHandler extends KeyPrefixHandler {
if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
return super.map(name);
}
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
if (StringUtils.isBlank(tenantId)) {
log.error("无法获取有效的租户id -> Null");
}
@@ -59,7 +59,7 @@ public class TenantKeyPrefixHandler extends KeyPrefixHandler {
if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
return super.unmap(name);
}
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
if (StringUtils.isBlank(tenantId)) {
log.error("无法获取有效的租户id -> Null");
}
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java
deleted file mode 100644
index 53cb01afc..000000000
--- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.dromara.common.tenant.helper;
-
-import cn.dev33.satoken.session.SaSession;
-import cn.dev33.satoken.stp.SaLoginModel;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.ObjectUtil;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.dromara.common.core.constant.TenantConstants;
-import org.dromara.common.core.constant.UserConstants;
-import org.dromara.common.core.domain.model.LoginUser;
-import org.dromara.common.core.enums.UserType;
-
-import java.util.Set;
-
-/**
- * 登录鉴权助手
- *
- * user_type 为 用户类型 同一个用户表 可以有多种用户类型 例如 pc,app
- * deivce 为 设备类型 同一个用户类型 可以有 多种设备类型 例如 web,ios
- * 可以组成 用户类型与设备类型多对多的 权限灵活控制
- *
- * 多用户体系 针对 多种用户类型 但权限控制不一致
- * 可以组成 多用户类型表与多设备类型 分别控制权限
- *
- * @author Lion Li
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class LoginHelper {
- public static final String TENANT_KEY = "tenantId";
- public static final String USER_KEY = "userId";
-
- public static final String CLIENT_KEY = "clientid";
-
-
- /**
- * 获取用户id
- */
- public static Long getUserId() {
- return Convert.toLong(getExtra(USER_KEY));
- }
-
- /**
- * 获取租户ID
- */
- public static String getTenantId() {
- return Convert.toStr(getExtra(TENANT_KEY));
- }
-
- /**
- * 获取当前 Token 的扩展信息
- *
- * @param key 键值
- * @return 对应的扩展数据
- */
- private static Object getExtra(String key) {
- try {
- return StpUtil.getExtra(key);
- } catch (Exception e) {
- return null;
- }
- }
-
-
-}
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 fa986fa19..b60115f87 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,19 +1,13 @@
package org.dromara.common.tenant.helper;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.constant.GlobalConstants;
import org.dromara.common.core.utils.SpringUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.reflect.ReflectUtils;
-import org.dromara.common.redis.utils.RedisUtils;
import java.util.Stack;
import java.util.function.Supplier;
@@ -26,67 +20,42 @@ import java.util.function.Supplier;
@Slf4j
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class TenantHelper {
-
- private static final String DYNAMIC_TENANT_KEY = GlobalConstants.GLOBAL_REDIS_KEY + "dynamicTenant";
-
private static final ThreadLocal TEMP_DYNAMIC_TENANT = new ThreadLocal<>();
-
private static final ThreadLocal> REENTRANT_IGNORE = ThreadLocal.withInitial(Stack::new);
- /**
- * 租户功能是否启用
- */
- public static boolean isEnable() {
- return Convert.toBool(SpringUtils.getProperty("tenant.enable"), false);
- }
-
- private static IgnoreStrategy getIgnoreStrategy() {
- Object ignoreStrategyLocal = ReflectUtils.getStaticFieldValue(ReflectUtils.getField(InterceptorIgnoreHelper.class, "IGNORE_STRATEGY_LOCAL"));
- if (ignoreStrategyLocal instanceof ThreadLocal> IGNORE_STRATEGY_LOCAL) {
- if (IGNORE_STRATEGY_LOCAL.get() instanceof IgnoreStrategy ignoreStrategy) {
- return ignoreStrategy;
- }
- }
- return null;
- }
/**
* 开启忽略租户(开启后需手动调用 {@link #disableIgnore()} 关闭)
*/
- public static void enableIgnore() {
- IgnoreStrategy ignoreStrategy = getIgnoreStrategy();
- if (ObjectUtil.isNull(ignoreStrategy)) {
- InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
- } else {
- ignoreStrategy.setTenantLine(true);
- }
+ private static void enableIgnore() {
Stack reentrantStack = REENTRANT_IGNORE.get();
+ if (reentrantStack.isEmpty()) {
+ // 只有当栈为空时才真正开启忽略
+ InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
+ }
reentrantStack.push(reentrantStack.size() + 1);
}
/**
* 关闭忽略租户
*/
- public static void disableIgnore() {
- IgnoreStrategy ignoreStrategy = getIgnoreStrategy();
- if (ObjectUtil.isNotNull(ignoreStrategy)) {
- boolean noOtherIgnoreStrategy = !Boolean.TRUE.equals(ignoreStrategy.getDynamicTableName())
- && !Boolean.TRUE.equals(ignoreStrategy.getBlockAttack())
- && !Boolean.TRUE.equals(ignoreStrategy.getIllegalSql())
- && !Boolean.TRUE.equals(ignoreStrategy.getDataPermission())
- && CollectionUtil.isEmpty(ignoreStrategy.getOthers());
- Stack reentrantStack = REENTRANT_IGNORE.get();
- boolean empty = reentrantStack.isEmpty() || reentrantStack.pop() == 1;
- if (noOtherIgnoreStrategy && empty) {
+ private static void disableIgnore() {
+ Stack reentrantStack = REENTRANT_IGNORE.get();
+ if (!reentrantStack.isEmpty()) {
+ reentrantStack.pop(); // 出栈操作
+ if (reentrantStack.isEmpty()) {
+ // 当栈为空时才真正关闭忽略
InterceptorIgnoreHelper.clearIgnoreStrategy();
- } else if (empty) {
- ignoreStrategy.setTenantLine(false);
+ } else {
+ log.info("重入忽略租户");
}
+ } else {
+ log.error("关闭忽略租户失败,当前方法栈: {}", Thread.getAllStackTraces());
}
}
/**
- * 在忽略租户中执行
+ * 在忽略租户中执行,可重入
*
* @param handle 处理执行方法
*/
@@ -100,7 +69,7 @@ public class TenantHelper {
}
/**
- * 在忽略租户中执行
+ * 在忽略租户中执行,可重入
*
* @param handle 处理执行方法
*/
@@ -113,8 +82,11 @@ public class TenantHelper {
}
}
- public static void setDynamic(String tenantId) {
- setDynamic(tenantId, false);
+ /**
+ * 租户功能是否启用
+ */
+ public static boolean isEnable() {
+ return Convert.toBool(SpringUtils.getProperty("tenant.enable"), false);
}
/**
@@ -123,18 +95,12 @@ public class TenantHelper {
* 如果为未登录状态下 那么只在当前线程内生效
*
* @param tenantId 租户id
- * @param global 是否全局生效
*/
- public static void setDynamic(String tenantId, boolean global) {
+ private static void setDynamic(String tenantId) {
if (!isEnable()) {
return;
}
- if (!isLogin() || !global) {
- TEMP_DYNAMIC_TENANT.set(tenantId);
- return;
- }
- String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
- RedisUtils.setCacheObject(cacheKey, tenantId);
+ TEMP_DYNAMIC_TENANT.set(tenantId);
}
/**
@@ -142,41 +108,25 @@ public class TenantHelper {
*
* 如果为未登录状态下 那么只在当前线程内生效
*/
- public static String getDynamic() {
+ private static String getDynamic() {
if (!isEnable()) {
return null;
}
- if (!isLogin()) {
- return TEMP_DYNAMIC_TENANT.get();
- }
- // 如果线程内有值 优先返回
- String tenantId = TEMP_DYNAMIC_TENANT.get();
- if (StringUtils.isNotBlank(tenantId)) {
- return tenantId;
- }
- String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
- tenantId = RedisUtils.getCacheObject(cacheKey);
- return tenantId;
+ return TEMP_DYNAMIC_TENANT.get();
}
/**
* 清除动态租户
*/
- public static void clearDynamic() {
+ private static void clearDynamic() {
if (!isEnable()) {
return;
}
- if (!isLogin()) {
- TEMP_DYNAMIC_TENANT.remove();
- return;
- }
TEMP_DYNAMIC_TENANT.remove();
- String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
- RedisUtils.deleteObject(cacheKey);
}
/**
- * 在动态租户中执行
+ * 在动态租户中执行,不支持嵌套使用
*
* @param handle 处理执行方法
*/
@@ -190,7 +140,7 @@ public class TenantHelper {
}
/**
- * 在动态租户中执行
+ * 在动态租户中执行,不支持嵌套使用,推荐在controller中使用
*
* @param handle 处理执行方法
*/
@@ -204,26 +154,31 @@ public class TenantHelper {
}
/**
- * 获取当前租户id(动态租户优先)
+ * 获取id写到satoken里面
+ * @return
*/
- public static String getTenantId() {
- if (!isEnable()) {
- return null;
- }
- String tenantId = TenantHelper.getDynamic();
- if (StringUtils.isBlank(tenantId)) {
- tenantId = LoginHelper.getTenantId();
- }
- return tenantId;
- }
-
- private static boolean isLogin() {
- try {
- StpUtil.checkLogin();
- return true;
- } catch (Exception e) {
- return false;
+ public static Long getDynamicTenantId(Long loginTenantId) {
+ String dynamic = getDynamic();
+ if (StrUtil.isBlank(dynamic)) {
+ log.info("获取 token 租户id: {}", loginTenantId);
+ return loginTenantId;
+ } else {
+ log.info("获取 dynamic 租户id: {}", dynamic);
+ return Long.parseLong(dynamic);
+ }
+ }
+ /**
+ * 获取id写到satoken里面
+ * @return
+ */
+ public static String getDynamicTenantId(String loginTenantId) {
+ String dynamic = getDynamic();
+ if (StrUtil.isBlank(dynamic)) {
+ log.info("获取 token 租户id: {}", loginTenantId);
+ return loginTenantId;
+ } else {
+ log.info("获取 dynamic 租户id: {}", dynamic);
+ return dynamic;
}
}
-
}
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/manager/TenantSpringCacheManager.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/manager/TenantSpringCacheManager.java
index 346e36f1c..50b755a8e 100644
--- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/manager/TenantSpringCacheManager.java
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/manager/TenantSpringCacheManager.java
@@ -5,7 +5,7 @@ import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.GlobalConstants;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.redis.manager.PlusSpringCacheManager;
-import org.dromara.common.tenant.helper.TenantHelper;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.cache.Cache;
/**
@@ -27,7 +27,7 @@ public class TenantSpringCacheManager extends PlusSpringCacheManager {
if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
return super.getCache(name);
}
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
if (StringUtils.isBlank(tenantId)) {
log.error("无法获取有效的租户id -> Null");
}
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/pom.xml b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/pom.xml
index f7483cb39..853ea980d 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/pom.xml
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/pom.xml
@@ -48,6 +48,10 @@
org.dromara
ruoyi-common-tenant
+
+ org.dromara
+ ruoyi-common-satoken
+
org.apache.poi
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormController.java
index 27ee19a43..fffa4b965 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormController.java
@@ -1,5 +1,7 @@
package org.dromara.md.form.controller;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.md.form.api.constant.BaseConstant;
import org.dromara.md.form.mybatis.entity.Form;
import org.dromara.md.form.mybatis.entity.FormTemplate;
@@ -8,11 +10,9 @@ import org.dromara.md.form.service.FormService;
import org.dromara.md.form.service.FormTemplateFieldService;
import org.dromara.md.form.service.FormTemplateService;
import org.dromara.md.form.service.TenantInitializationService;
-import org.dromara.md.form.utils.TenantHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormDictController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormDictController.java
index 7cdaaea23..1a5dd3d36 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormDictController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormDictController.java
@@ -1,6 +1,7 @@
package org.dromara.md.form.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.md.form.api.constant.BaseConstant;
import org.dromara.md.form.api.dto.FormDictDTO;
import org.dromara.md.form.api.dto.FormDictImportDTO;
@@ -12,7 +13,6 @@ import org.dromara.md.form.service.TenantInitializationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormFieldDictController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormFieldDictController.java
index 584b20fbc..5b25427bf 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormFieldDictController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/FormFieldDictController.java
@@ -9,7 +9,7 @@ import org.dromara.md.form.api.vo.FormFieldDictVO;
import org.dromara.md.form.mybatis.entity.FormFieldDict;
import org.dromara.md.form.service.FormDictService;
import org.dromara.md.form.service.FormFieldDictService;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormDictController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormDictController.java
index 36fd69e7b..7f8c14d1f 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormDictController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormDictController.java
@@ -5,7 +5,7 @@ import org.dromara.md.form.api.constant.BaseConstant;
import org.dromara.md.form.api.dto.FormDictDTO;
import org.dromara.md.form.mybatis.entity.FormDict;
import org.dromara.md.form.service.FormDictService;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormFieldDictController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormFieldDictController.java
index 66a8c7a7b..fa5867347 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormFieldDictController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/SysFormFieldDictController.java
@@ -8,7 +8,7 @@ import org.dromara.md.form.api.vo.FormFieldDictDifyVo;
import org.dromara.md.form.api.vo.FormFieldDictVO;
import org.dromara.md.form.mybatis.entity.FormFieldDict;
import org.dromara.md.form.service.FormFieldDictService;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormFieldDictFeignController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormFieldDictFeignController.java
index 68810cb2b..8da7d39cb 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormFieldDictFeignController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormFieldDictFeignController.java
@@ -8,7 +8,7 @@ import org.dromara.md.form.api.vo.FormFieldDictVO;
import org.dromara.md.form.feign.FormFieldDictFeignClient;
import org.dromara.md.form.service.FormDictService;
import org.dromara.md.form.service.FormFieldDictService;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormPrintConfigFeignController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormPrintConfigFeignController.java
index 1ed5b2413..e5ad64187 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormPrintConfigFeignController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormPrintConfigFeignController.java
@@ -4,7 +4,7 @@ import org.dromara.md.form.api.constant.BaseConstant;
import org.dromara.md.form.api.vo.FormPrintConfigVO;
import org.dromara.md.form.feign.FormPrintConfigFeignClient;
import org.dromara.md.form.service.FormPrintConfigService;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormTemplateFeignController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormTemplateFeignController.java
index 34155263f..cf1f4e92d 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormTemplateFeignController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/FormTemplateFeignController.java
@@ -3,7 +3,7 @@ package org.dromara.md.form.controller.feign;
import org.dromara.md.form.api.constant.BaseConstant;
import org.dromara.md.form.api.vo.FormTemplateVO;
import org.dromara.md.form.feign.FormTemplateFeignClient;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.md.form.service.FormTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/ModifyLogRecordFeignController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/ModifyLogRecordFeignController.java
index d37c67539..5dbca8bd3 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/ModifyLogRecordFeignController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/ModifyLogRecordFeignController.java
@@ -4,7 +4,7 @@ import org.dromara.md.form.api.constant.BaseConstant;
import org.dromara.md.form.api.dto.ModifyLogRecordDTO;
import org.dromara.md.form.feign.ModifyLogRecordFeignClient;
import org.dromara.md.form.service.ModifyLogRecordService;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/SystemDictFeignController.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/SystemDictFeignController.java
index cc8689a39..15438fe69 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/SystemDictFeignController.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/controller/feign/SystemDictFeignController.java
@@ -5,7 +5,7 @@ import org.dromara.md.form.api.dto.FormFieldDictQ;
import org.dromara.md.form.api.vo.FormFieldDictVO;
import org.dromara.md.form.feign.SystemDictFeignClient;
import org.dromara.md.form.service.FormFieldDictService;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormDictService.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormDictService.java
index 2ef3953df..e3551901e 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormDictService.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormDictService.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.md.form.api.dto.FormDictDTO;
import org.dromara.md.form.api.dto.FormDictImportDTO;
import org.dromara.md.form.api.dto.FormFieldDictImportDTO;
@@ -16,7 +17,6 @@ import org.dromara.md.form.mybatis.entity.FormDict;
import org.dromara.md.form.mybatis.mapper.FormDictMapper;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormFieldDictService.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormFieldDictService.java
index 0a40e16a6..fc3b57ad1 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormFieldDictService.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormFieldDictService.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.md.form.api.constant.FormFieldDictType;
import org.dromara.md.form.api.dto.DictCodesDTO;
import org.dromara.md.form.api.dto.FormFieldDictDTO;
@@ -19,7 +20,6 @@ import org.dromara.md.form.mybatis.mapper.FormFieldDictMapper;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormPrintConfigService.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormPrintConfigService.java
index 26732ca57..079158365 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormPrintConfigService.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormPrintConfigService.java
@@ -3,6 +3,7 @@ package org.dromara.md.form.service;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.md.form.api.dto.FormPrintConfigDTO;
import org.dromara.md.form.api.dto.FormPrintConfigModeDTO;
import org.dromara.md.form.api.dto.FormPrintConfigUploadDTO;
@@ -17,7 +18,6 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.entity.UploadResult;
import org.dromara.common.oss.factory.OssFactory;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateFieldService.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateFieldService.java
index 2ae3d42cb..f485857f3 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateFieldService.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateFieldService.java
@@ -5,13 +5,13 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.md.form.api.constant.FormTemplateFieldType;
import org.dromara.md.form.api.dto.FormTemplateDTO;
import org.dromara.md.form.mybatis.entity.FormTemplateField;
import org.dromara.md.form.mybatis.mapper.FormTemplateFieldMapper;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateService.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateService.java
index 31dee72ef..dcf2a2e04 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateService.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/FormTemplateService.java
@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.EncryptUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.md.form.api.dto.FormTemplateDTO;
import org.dromara.md.form.api.vo.FormTemplateVO;
import org.dromara.md.form.mybatis.entity.Form;
@@ -15,7 +16,6 @@ import org.dromara.md.form.mybatis.mapper.FormTemplateMapper;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/TenantInitializationService.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/TenantInitializationService.java
index 28ccf4904..6fed83fca 100644
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/TenantInitializationService.java
+++ b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/service/TenantInitializationService.java
@@ -6,7 +6,7 @@ import org.dromara.md.form.mybatis.entity.Form;
import org.dromara.md.form.mybatis.entity.FormDict;
import org.dromara.md.form.mybatis.entity.FormTemplate;
import org.dromara.md.form.mybatis.entity.FormTemplateField;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.redis.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/utils/TenantHelper.java b/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/utils/TenantHelper.java
deleted file mode 100644
index 70035ecbb..000000000
--- a/ruoyi-modules/ruoyi-md-form/ruoyi-md-form-service/src/main/java/org/dromara/md/form/utils/TenantHelper.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package org.dromara.md.form.utils;
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
-import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.tenant.helper.LoginHelper;
-
-import java.util.Stack;
-import java.util.function.Supplier;
-
-/**
- * 租户助手
- *
- */
-@Slf4j
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class TenantHelper {
- private static final ThreadLocal TEMP_DYNAMIC_TENANT = new ThreadLocal<>();
- private static final ThreadLocal> REENTRANT_IGNORE = ThreadLocal.withInitial(Stack::new);
-
-
- /**
- * 开启忽略租户(开启后需手动调用 {@link #disableIgnore()} 关闭)
- */
- private static void enableIgnore() {
- Stack reentrantStack = REENTRANT_IGNORE.get();
- if (reentrantStack.isEmpty()) {
- // 只有当栈为空时才真正开启忽略
- InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
- }
- reentrantStack.push(reentrantStack.size() + 1);
- }
-
- /**
- * 关闭忽略租户
- */
- private static void disableIgnore() {
- Stack reentrantStack = REENTRANT_IGNORE.get();
- if (!reentrantStack.isEmpty()) {
- reentrantStack.pop(); // 出栈操作
- if (reentrantStack.isEmpty()) {
- // 当栈为空时才真正关闭忽略
- InterceptorIgnoreHelper.clearIgnoreStrategy();
- } else {
- log.info("重入忽略租户");
- }
- } else {
- log.error("关闭忽略租户失败,当前方法栈: {}", Thread.getAllStackTraces());
- }
- }
-
- /**
- * 在忽略租户中执行,可重入
- *
- * @param handle 处理执行方法
- */
- public static void ignore(Runnable handle) {
- enableIgnore();
- try {
- handle.run();
- } finally {
- disableIgnore();
- }
- }
-
- /**
- * 在忽略租户中执行,可重入
- *
- * @param handle 处理执行方法
- */
- public static T ignore(Supplier handle) {
- enableIgnore();
- try {
- return handle.get();
- } finally {
- disableIgnore();
- }
- }
-
- public static boolean isEnable() {
- //TODO 是否开启未开发
- return true;
- }
-
- /**
- * 设置动态租户(一直有效 需要手动清理)
- *
- * 如果为未登录状态下 那么只在当前线程内生效
- *
- * @param tenantId 租户id
- */
- private static void setDynamic(String tenantId) {
- if (!isEnable()) {
- return;
- }
- TEMP_DYNAMIC_TENANT.set(tenantId);
- }
-
- /**
- * 获取动态租户(一直有效 需要手动清理)
- *
- * 如果为未登录状态下 那么只在当前线程内生效
- */
- private static String getDynamic() {
- if (!isEnable()) {
- return null;
- }
- return TEMP_DYNAMIC_TENANT.get();
- }
-
- /**
- * 清除动态租户
- */
- private static void clearDynamic() {
- if (!isEnable()) {
- return;
- }
- TEMP_DYNAMIC_TENANT.remove();
- }
-
- /**
- * 在动态租户中执行,不支持嵌套使用
- *
- * @param handle 处理执行方法
- */
- public static void dynamic(String tenantId, Runnable handle) {
- setDynamic(tenantId);
- try {
- handle.run();
- } finally {
- clearDynamic();
- }
- }
-
- /**
- * 在动态租户中执行,不支持嵌套使用,推荐在controller中使用
- *
- * @param handle 处理执行方法
- */
- public static T dynamic(String tenantId, Supplier handle) {
- setDynamic(tenantId);
- try {
- return handle.get();
- } finally {
- clearDynamic();
- }
- }
-
-
- public static Long getTenantId() {
- String dynamic = getDynamic();
- if (StrUtil.isBlank(dynamic)) {
- Long tenantId = Long.valueOf(LoginHelper.getTenantId());
- log.info("获取 token 租户id: {}", tenantId);
- return tenantId;
- } else {
- log.info("获取 dynamic 租户id: {}", dynamic);
- return Long.parseLong(dynamic);
- }
- }
-
-}
diff --git a/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/H5ProjectController.java b/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/H5ProjectController.java
index 8f6d0a804..ef7b65a2b 100644
--- a/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/H5ProjectController.java
+++ b/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/H5ProjectController.java
@@ -3,7 +3,7 @@ package org.dromara.md.h5.controller;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.dromara.md.form.api.constant.BaseConstant;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.md.h5.api.constant.ProjectStatus;
import org.dromara.md.h5.api.dto.H5ProjectContentDTO;
import org.dromara.md.h5.api.dto.query.H5ProjectQueryDTO;
diff --git a/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/WorkController.java b/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/WorkController.java
index e7cbfd6d9..a465927b0 100644
--- a/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/WorkController.java
+++ b/ruoyi-modules/ruoyi-md-h5/ruoyi-md-h5-service/src/main/java/org/dromara/md/h5/controller/WorkController.java
@@ -2,8 +2,9 @@ package org.dromara.md.h5.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.md.form.api.constant.BaseConstant;
-import org.dromara.md.form.utils.TenantHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.md.h5.api.constant.ProjectStatus;
import org.dromara.md.h5.api.dto.H5ProjectContentDTO;
import org.dromara.md.h5.api.dto.query.H5ProjectQueryDTO;
@@ -13,7 +14,6 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.tenant.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
diff --git a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasTenantController.java b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasTenantController.java
index 93c66cd20..772d32779 100644
--- a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasTenantController.java
+++ b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasTenantController.java
@@ -146,19 +146,19 @@ public class SysSaasTenantController extends BaseController {
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@GetMapping("/dynamic/{tenantId}")
public R dynamicTenant(@NotBlank(message = "租户ID不能为空") @PathVariable String tenantId) {
- TenantHelper.setDynamic(tenantId, true);
+// TenantHelper.setDynamic(tenantId, true);
return R.ok();
}
- /**
- * 清除动态租户
- */
- @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
- @GetMapping("/dynamic/clear")
- public R dynamicClear() {
- TenantHelper.clearDynamic();
- return R.ok();
- }
+// /**
+// * 清除动态租户
+// */
+// @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
+// @GetMapping("/dynamic/clear")
+// public R dynamicClear() {
+// TenantHelper.clearDynamic();
+// return R.ok();
+// }
/**
diff --git a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasUserController.java b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasUserController.java
index 4637ec03f..94f9b31e1 100644
--- a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasUserController.java
+++ b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/controller/system/SysSaasUserController.java
@@ -106,11 +106,16 @@ public class SysSaasUserController extends BaseController {
public R getInfo() {
TwoUserInfoVo twoUserInfoVo = new TwoUserInfoVo();
LoginUser loginUser = LoginHelper.getLoginUser();
+ if (ObjectUtil.isNull(loginUser)) {
+ return R.fail("登录用户不存在!");
+ }
+ SysSaasUserVo user;
if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
// 超级管理员 如果重新加载用户信息需清除动态租户
- TenantHelper.clearDynamic();
+ user = TenantHelper.ignore(() -> userService.selectUserById(loginUser.getUserId()));
+ } else {
+ user = userService.selectUserById(loginUser.getUserId());
}
- SysSaasUserVo user = userService.selectUserById(loginUser.getUserId());
if (ObjectUtil.isNull(user)) {
return R.fail("没有权限访问用户数据!");
}
@@ -165,7 +170,7 @@ public class SysSaasUserController extends BaseController {
return R.fail("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
if (TenantHelper.isEnable()) {
- if (!tenantService.checkAccountBalance(TenantHelper.getTenantId())) {
+ if (!tenantService.checkAccountBalance(LoginHelper.getTenantId())) {
return R.fail("当前租户下用户名额不足,请联系管理员");
}
}
diff --git a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/SysSaasTenantApplication.java b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/SysSaasTenantApplication.java
index eae809d95..c97cdcd33 100644
--- a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/SysSaasTenantApplication.java
+++ b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/SysSaasTenantApplication.java
@@ -7,13 +7,13 @@ import java.io.Serial;
import java.io.Serializable;
/**
- * 租户和应用关联对象 sys2_tenant_application
+ * 租户和应用关联对象 sys_saas_tenant_application
*
* @author Lion Li
* @date 2024-09-22
*/
@Data
-@TableName("sys2_tenant_application")
+@TableName("sys_saas_tenant_application")
public class SysSaasTenantApplication implements Serializable {
@Serial
diff --git a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/bo/SysSaasTenantApplicationBo.java b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/bo/SysSaasTenantApplicationBo.java
index 2d9155f68..6e83c0107 100644
--- a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/bo/SysSaasTenantApplicationBo.java
+++ b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/bo/SysSaasTenantApplicationBo.java
@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
- * 租户和应用关联业务对象 sys2_tenant_application
+ * 租户和应用关联业务对象 sys_saas_tenant_application
*
* @author Lion Li
* @date 2024-09-22
diff --git a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/vo/SysSaasTenantApplicationVo.java b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/vo/SysSaasTenantApplicationVo.java
index 99d28b029..91136962a 100644
--- a/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/vo/SysSaasTenantApplicationVo.java
+++ b/ruoyi-modules/ruoyi-md-system-saas/ruoyi-md-system-saas-service/src/main/java/org/dromara/system/saas/domain/vo/SysSaasTenantApplicationVo.java
@@ -11,7 +11,7 @@ import java.io.Serializable;
/**
- * 租户和应用关联视图对象 sys2_tenant_application
+ * 租户和应用关联视图对象 sys_saas_tenant_application
*
* @author Lion Li
* @date 2024-09-22
diff --git a/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysTenantController.java b/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysTenantController.java
index bad240c72..83548151a 100644
--- a/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysTenantController.java
+++ b/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysTenantController.java
@@ -146,19 +146,19 @@ 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, true);
+// TenantHelper.setDynamic(tenantId, true);
return R.ok();
}
- /**
- * 清除动态租户
- */
- @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
- @GetMapping("/dynamic/clear")
- public R dynamicClear() {
- TenantHelper.clearDynamic();
- return R.ok();
- }
+// /**
+// * 清除动态租户
+// */
+// @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
+// @GetMapping("/dynamic/clear")
+// public R dynamicClear() {
+// TenantHelper.clearDynamic();
+// return R.ok();
+// }
/**
diff --git a/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysUserController.java
index 36104d627..c7636f5cd 100644
--- a/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysUserController.java
+++ b/ruoyi-modules/ruoyi-md-system/ruoyi-md-system-service/src/main/java/org/dromara/system/controller/system/SysUserController.java
@@ -106,11 +106,15 @@ public class SysUserController extends BaseController {
public R getInfo() {
UserInfoVo userInfoVo = new UserInfoVo();
LoginUser loginUser = LoginHelper.getLoginUser();
- if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
- // 超级管理员 如果重新加载用户信息需清除动态租户
- TenantHelper.clearDynamic();
+ if (ObjectUtil.isNull(loginUser)) {
+ return R.fail("登录用户信息为空!");
+ }
+ SysUserVo user;
+ if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
+ user = TenantHelper.ignore(() -> userService.selectUserById(loginUser.getUserId()));
+ } else {
+ user = userService.selectUserById(loginUser.getUserId());
}
- SysUserVo user = userService.selectUserById(loginUser.getUserId());
if (ObjectUtil.isNull(user)) {
return R.fail("没有权限访问用户数据!");
}
@@ -165,7 +169,7 @@ public class SysUserController extends BaseController {
return R.fail("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
if (TenantHelper.isEnable()) {
- if (!tenantService.checkAccountBalance(TenantHelper.getTenantId())) {
+ if (!tenantService.checkAccountBalance(LoginHelper.getTenantId())) {
return R.fail("当前租户下用户名额不足,请联系管理员");
}
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/config/GlobalFlowableListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/config/GlobalFlowableListener.java
index 9bb971a8c..5b2788efc 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/config/GlobalFlowableListener.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/config/GlobalFlowableListener.java
@@ -2,6 +2,7 @@ package org.dromara.workflow.flowable.config;
import cn.hutool.core.collection.CollUtil;
import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.flowable.handler.TaskTimeoutJobHandler;
@@ -78,7 +79,7 @@ public class GlobalFlowableListener implements FlowableEventListener {
}
//创建job对象
TimerJobEntity timer = timerJobService.createTimerJob();
- timer.setTenantId(TenantHelper.getTenantId());
+ timer.setTenantId(LoginHelper.getTenantId());
//设置job类型
timer.setJobType(JobEntity.JOB_TYPE_TIMER);
timer.setJobHandlerType(TaskTimeoutJobHandler.TYPE);
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActHiProcinstServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActHiProcinstServiceImpl.java
index 06d607b4f..2e031beb5 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActHiProcinstServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActHiProcinstServiceImpl.java
@@ -3,6 +3,7 @@ package org.dromara.workflow.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.mapper.ActHiProcinstMapper;
@@ -33,7 +34,7 @@ public class ActHiProcinstServiceImpl implements IActHiProcinstService {
public List selectByBusinessKeyIn(List businessKeys) {
return baseMapper.selectList(new LambdaQueryWrapper()
.in(ActHiProcinst::getBusinessKey, businessKeys)
- .eq(TenantHelper.isEnable(), ActHiProcinst::getTenantId, TenantHelper.getTenantId()));
+ .eq(TenantHelper.isEnable(), ActHiProcinst::getTenantId, LoginHelper.getTenantId()));
}
/**
@@ -45,7 +46,7 @@ public class ActHiProcinstServiceImpl implements IActHiProcinstService {
public ActHiProcinst selectByBusinessKey(String businessKey) {
return baseMapper.selectOne(new LambdaQueryWrapper()
.eq(ActHiProcinst::getBusinessKey, businessKey)
- .eq(TenantHelper.isEnable(), ActHiProcinst::getTenantId, TenantHelper.getTenantId()));
+ .eq(TenantHelper.isEnable(), ActHiProcinst::getTenantId, LoginHelper.getTenantId()));
}
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java
index 217538e44..3783b058e 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java
@@ -17,6 +17,7 @@ import org.apache.batik.transcoder.image.PNGTranscoder;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.domain.WfNodeConfig;
@@ -129,7 +130,7 @@ public class ActModelServiceImpl implements IActModelService {
model.setVersion(version);
model.setCategory(categoryCode);
model.setMetaInfo(description);
- model.setTenantId(TenantHelper.getTenantId());
+ model.setTenantId(LoginHelper.getTenantId());
//保存初始化的模型基本信息数据
repositoryService.saveModel(model);
repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(xml));
@@ -286,7 +287,7 @@ public class ActModelServiceImpl implements IActModelService {
// bpmn20.xml资源
.addBytes(processName, xmlBytes)
// 租户id
- .tenantId(TenantHelper.getTenantId())
+ .tenantId(LoginHelper.getTenantId())
.deploy();
// 更新 部署id 到流程定义模型数据表中
@@ -411,7 +412,7 @@ public class ActModelServiceImpl implements IActModelService {
newModel.setCategory(modelBo.getCategoryCode());
newModel.setVersion(1);
newModel.setMetaInfo(modelBo.getDescription());
- newModel.setTenantId(TenantHelper.getTenantId());
+ newModel.setTenantId(LoginHelper.getTenantId());
String xml = StrUtil.utf8Str(modelEditorSource);
BpmnModel bpmnModel = ModelUtils.xmlToBpmnModel(xml);
Process mainProcess = bpmnModel.getMainProcess();
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java
index 77fb257b5..b9c34b9e7 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java
@@ -15,6 +15,7 @@ import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.domain.WfCategory;
@@ -336,7 +337,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
ProcessDefinition oldProcessDefinition = QueryUtils.definitionQuery().processDefinitionKey(processKey).latestVersion().singleResult();
DeploymentBuilder builder = repositoryService.createDeployment();
Deployment deployment = builder.addInputStream(filename, zipInputStream)
- .tenantId(TenantHelper.getTenantId())
+ .tenantId(LoginHelper.getTenantId())
.name(processName).key(processKey).category(categoryCode).deploy();
ProcessDefinition definition = QueryUtils.definitionQuery().deploymentId(deployment.getId()).singleResult();
repositoryService.setProcessDefinitionCategory(definition.getId(), categoryCode);
@@ -367,7 +368,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
ProcessDefinition oldProcessDefinition = QueryUtils.definitionQuery().processDefinitionKey(processKey).latestVersion().singleResult();
DeploymentBuilder builder = repositoryService.createDeployment();
Deployment deployment = builder.addInputStream(originalFilename, inputStream)
- .tenantId(TenantHelper.getTenantId())
+ .tenantId(LoginHelper.getTenantId())
.name(processName).key(processKey).category(categoryCode).deploy();
// 更新分类
ProcessDefinition definition = QueryUtils.definitionQuery().deploymentId(deployment.getId()).singleResult();
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java
index 5235d1265..2cea00dad 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java
@@ -134,7 +134,7 @@ public class ActTaskServiceImpl implements IActTaskService {
ProcessInstance pi;
try {
if (TenantHelper.isEnable()) {
- pi = runtimeService.startProcessInstanceByKeyAndTenantId(wfDefinitionConfigVo.getProcessKey(), startProcessBo.getBusinessKey(), variables, TenantHelper.getTenantId());
+ pi = runtimeService.startProcessInstanceByKeyAndTenantId(wfDefinitionConfigVo.getProcessKey(), startProcessBo.getBusinessKey(), variables, LoginHelper.getTenantId());
} else {
pi = runtimeService.startProcessInstanceByKey(wfDefinitionConfigVo.getProcessKey(), startProcessBo.getBusinessKey(), variables);
}
@@ -265,7 +265,7 @@ public class ActTaskServiceImpl implements IActTaskService {
List roleIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId()));
String userId = String.valueOf(LoginHelper.getUserId());
queryWrapper.eq("t.business_status_", BusinessStatusEnum.WAITING.getStatus());
- queryWrapper.eq(TenantHelper.isEnable(), "t.tenant_id_", TenantHelper.getTenantId());
+ queryWrapper.eq(TenantHelper.isEnable(), "t.tenant_id_", LoginHelper.getTenantId());
String ids = StreamUtils.join(roleIds, x -> "'" + x + "'");
queryWrapper.and(w1 -> w1.eq("t.assignee_", userId).or(w2 -> w2.isNull("t.assignee_").apply("exists ( select LINK.ID_ from ACT_RU_IDENTITYLINK LINK where LINK.TASK_ID_ = t.ID_ and LINK.TYPE_ = 'candidate' and (LINK.USER_ID_ = {0} or ( LINK.GROUP_ID_ IN (" + ids + ") ) ))", userId)));
if (StringUtils.isNotBlank(taskBo.getName())) {
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java
index df928dc72..3503c188a 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/QueryUtils.java
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.domain.vo.TaskVo;
import org.flowable.engine.ProcessEngine;
@@ -35,7 +36,7 @@ public class QueryUtils {
public static ModelQuery modelQuery() {
ModelQuery query = PROCESS_ENGINE.getRepositoryService().createModelQuery();
if (TenantHelper.isEnable()) {
- query.modelTenantId(TenantHelper.getTenantId());
+ query.modelTenantId(LoginHelper.getTenantId());
}
return query;
}
@@ -43,7 +44,7 @@ public class QueryUtils {
public static ProcessDefinitionQuery definitionQuery() {
ProcessDefinitionQuery query = PROCESS_ENGINE.getRepositoryService().createProcessDefinitionQuery();
if (TenantHelper.isEnable()) {
- query.processDefinitionTenantId(TenantHelper.getTenantId());
+ query.processDefinitionTenantId(LoginHelper.getTenantId());
}
return query;
}
@@ -51,7 +52,7 @@ public class QueryUtils {
public static DeploymentQuery deploymentQuery() {
DeploymentQuery query = PROCESS_ENGINE.getRepositoryService().createDeploymentQuery();
if (TenantHelper.isEnable()) {
- query.deploymentTenantId(TenantHelper.getTenantId());
+ query.deploymentTenantId(LoginHelper.getTenantId());
}
return query;
}
@@ -67,7 +68,7 @@ public class QueryUtils {
public static HistoricTaskInstanceQuery hisTaskInstanceQuery() {
HistoricTaskInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricTaskInstanceQuery();
if (TenantHelper.isEnable()) {
- query.taskTenantId(TenantHelper.getTenantId());
+ query.taskTenantId(LoginHelper.getTenantId());
}
return query;
}
@@ -83,7 +84,7 @@ public class QueryUtils {
public static ProcessInstanceQuery instanceQuery() {
ProcessInstanceQuery query = PROCESS_ENGINE.getRuntimeService().createProcessInstanceQuery();
if (TenantHelper.isEnable()) {
- query.processInstanceTenantId(TenantHelper.getTenantId());
+ query.processInstanceTenantId(LoginHelper.getTenantId());
}
return query;
}
@@ -103,7 +104,7 @@ public class QueryUtils {
public static HistoricProcessInstanceQuery hisInstanceQuery() {
HistoricProcessInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
- query.processInstanceTenantId(TenantHelper.getTenantId());
+ query.processInstanceTenantId(LoginHelper.getTenantId());
}
return query;
}
@@ -123,7 +124,7 @@ public class QueryUtils {
public static HistoricActivityInstanceQuery hisActivityInstanceQuery() {
HistoricActivityInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricActivityInstanceQuery();
if (TenantHelper.isEnable()) {
- query.activityTenantId(TenantHelper.getTenantId());
+ query.activityTenantId(LoginHelper.getTenantId());
}
return query;
}
@@ -135,7 +136,7 @@ public class QueryUtils {
public static TaskQuery taskQuery() {
TaskQuery query = PROCESS_ENGINE.getTaskService().createTaskQuery();
if (TenantHelper.isEnable()) {
- query.taskTenantId(TenantHelper.getTenantId());
+ query.taskTenantId(LoginHelper.getTenantId());
}
return query;
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
index d7c44723b..8cef52bfe 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
@@ -69,7 +69,7 @@ public class WorkflowUtils {
task.setTaskDefinitionKey(currentTask.getTaskDefinitionKey());
task.setPriority(currentTask.getPriority());
task.setCreateTime(new Date());
- task.setTenantId(TenantHelper.getTenantId());
+ task.setTenantId(LoginHelper.getTenantId());
PROCESS_ENGINE.getTaskService().saveTask(task);
}
if (ObjectUtil.isNotNull(task)) {
@@ -87,7 +87,7 @@ public class WorkflowUtils {
*/
public static void createCopyTask(List parentTaskList, List userIds) {
List list = new ArrayList<>();
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
for (Task parentTask : parentTaskList) {
for (Long userId : userIds) {
TaskEntity newTask = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask();
diff --git a/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/config/PlusTenantLineHandler.java b/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/config/PlusTenantLineHandler.java
index 231144b99..a3bf59609 100644
--- a/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/config/PlusTenantLineHandler.java
+++ b/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/config/PlusTenantLineHandler.java
@@ -8,6 +8,7 @@ import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.NullValue;
import net.sf.jsqlparser.expression.StringValue;
import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.tenant.properties.TenantProperties;
@@ -26,7 +27,7 @@ public class PlusTenantLineHandler implements TenantLineHandler {
@Override
public Expression getTenantId() {
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = TenantHelper.getDynamicTenantId(LoginHelper.getTenantId());
if (StringUtils.isBlank(tenantId)) {
log.error("无法获取有效的租户id -> Null");
return new NullValue();
@@ -37,7 +38,7 @@ public class PlusTenantLineHandler implements TenantLineHandler {
@Override
public boolean ignoreTable(String tableName) {
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = TenantHelper.getDynamicTenantId(LoginHelper.getTenantId());
// 判断是否有租户
if (StringUtils.isNotBlank(tenantId)) {
// 不需要过滤租户的表
diff --git a/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
index b561693d6..4214c2053 100644
--- a/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
+++ b/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
@@ -12,6 +12,7 @@ import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.request.AuthRequest;
import me.zhyd.oauth.utils.AuthStateUtils;
+import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginBody;
@@ -171,7 +172,12 @@ public class AuthController {
*/
@PostMapping("/logout")
public R logout() {
- loginService.logout();
+ if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
+ // 超级管理员 登出清除动态租户
+ TenantHelper.ignore(loginService::logout);
+ } else {
+ loginService.logout();
+ }
return R.ok("退出成功");
}
diff --git a/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
index c7ad9179c..9a4ee8067 100644
--- a/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
+++ b/ruoyi-site/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -111,10 +111,6 @@ public class SysLoginService {
if (ObjectUtil.isNull(loginUser)) {
return;
}
- if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
- // 超级管理员 登出清除动态租户
- TenantHelper.clearDynamic();
- }
recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
} catch (NotLoginException ignored) {
} finally {
diff --git a/ruoyi-site/ruoyi-h5/src/main/java/org/dromara/h5/config/PlusTenantLineHandler.java b/ruoyi-site/ruoyi-h5/src/main/java/org/dromara/h5/config/PlusTenantLineHandler.java
index 442790337..5ab952c41 100644
--- a/ruoyi-site/ruoyi-h5/src/main/java/org/dromara/h5/config/PlusTenantLineHandler.java
+++ b/ruoyi-site/ruoyi-h5/src/main/java/org/dromara/h5/config/PlusTenantLineHandler.java
@@ -2,7 +2,9 @@ package org.dromara.h5.config;
import cn.hutool.core.collection.ListUtil;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
-import org.dromara.md.form.utils.TenantHelper;
+import net.sf.jsqlparser.expression.LongValue;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.expression.Expression;
@@ -31,18 +33,18 @@ public class PlusTenantLineHandler implements TenantLineHandler {
@Override
public Expression getTenantId() {
- String tenantId = TenantHelper.getTenantId() + "";
+ String tenantId = TenantHelper.getDynamicTenantId(LoginHelper.getTenantId());
if (StringUtils.isBlank(tenantId)) {
log.error("无法获取有效的租户id -> Null");
return new NullValue();
}
// 返回固定租户
- return new StringValue(tenantId);
+ return new LongValue(tenantId);
}
@Override
public boolean ignoreTable(String tableName) {
- String tenantId = TenantHelper.getTenantId() + "";
+ String tenantId = TenantHelper.getDynamicTenantId(LoginHelper.getTenantId());
// 判断是否有租户
if (StringUtils.isNotBlank(tenantId)) {
// 不需要过滤租户的表
diff --git a/ruoyi-site/ruoyi-sso-server/pom.xml b/ruoyi-site/ruoyi-sso-server/pom.xml
index 8cd2e8059..d7dfa6b51 100644
--- a/ruoyi-site/ruoyi-sso-server/pom.xml
+++ b/ruoyi-site/ruoyi-sso-server/pom.xml
@@ -27,17 +27,19 @@
org.dromara
ruoyi-common-redis
- ${revision}
+
+ org.dromara
+ ruoyi-common-satoken
+
org.dromara
ruoyi-common-tenant
- ${revision}
-
+
org.dromara
ruoyi-md-system-saas-api
@@ -87,20 +89,7 @@
-
- cn.dev33
- sa-token-jwt
-
-
-
- cn.dev33
- sa-token-redis-jackson
-
-
- org.apache.commons
- commons-pool2
-
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaTokenExceptionHandler.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaTokenExceptionHandler.java
index eb36979f4..8ce06e32b 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaTokenExceptionHandler.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaTokenExceptionHandler.java
@@ -1,52 +1,52 @@
-package org.dromara.sso.config.satoken;
-
-import cn.dev33.satoken.exception.NotLoginException;
-import cn.dev33.satoken.exception.NotPermissionException;
-import cn.dev33.satoken.exception.NotRoleException;
-import cn.hutool.http.HttpStatus;
-import jakarta.servlet.http.HttpServletRequest;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.domain.R;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-/**
- * SaToken异常处理器
- *
- * @author Lion Li
- */
-@Slf4j
-@RestControllerAdvice
-public class SaTokenExceptionHandler {
-
- /**
- * 权限码异常
- */
- @ExceptionHandler(NotPermissionException.class)
- public R handleNotPermissionException(NotPermissionException e, HttpServletRequest request) {
- String requestURI = request.getRequestURI();
- log.error("请求地址'{}',权限码校验失败'{}'", requestURI, e.getMessage());
- return R.fail(HttpStatus.HTTP_FORBIDDEN, "没有访问权限,请联系管理员授权");
- }
-
- /**
- * 角色权限异常
- */
- @ExceptionHandler(NotRoleException.class)
- public R handleNotRoleException(NotRoleException e, HttpServletRequest request) {
- String requestURI = request.getRequestURI();
- log.error("请求地址'{}',角色权限校验失败'{}'", requestURI, e.getMessage());
- return R.fail(HttpStatus.HTTP_FORBIDDEN, "没有访问权限,请联系管理员授权");
- }
-
- /**
- * 认证失败
- */
- @ExceptionHandler(NotLoginException.class)
- public R handleNotLoginException(NotLoginException e, HttpServletRequest request) {
- String requestURI = request.getRequestURI();
- log.error("请求地址'{}',认证失败'{}',无法访问系统资源", requestURI, e.getMessage());
- return R.fail(HttpStatus.HTTP_UNAUTHORIZED, "认证失败,无法访问系统资源");
- }
-
-}
+//package org.dromara.sso.config.satoken;
+//
+//import cn.dev33.satoken.exception.NotLoginException;
+//import cn.dev33.satoken.exception.NotPermissionException;
+//import cn.dev33.satoken.exception.NotRoleException;
+//import cn.hutool.http.HttpStatus;
+//import jakarta.servlet.http.HttpServletRequest;
+//import lombok.extern.slf4j.Slf4j;
+//import org.dromara.common.core.domain.R;
+//import org.springframework.web.bind.annotation.ExceptionHandler;
+//import org.springframework.web.bind.annotation.RestControllerAdvice;
+//
+///**
+// * SaToken异常处理器
+// *
+// * @author Lion Li
+// */
+//@Slf4j
+//@RestControllerAdvice
+//public class SaTokenExceptionHandler {
+//
+// /**
+// * 权限码异常
+// */
+// @ExceptionHandler(NotPermissionException.class)
+// public R handleNotPermissionException(NotPermissionException e, HttpServletRequest request) {
+// String requestURI = request.getRequestURI();
+// log.error("请求地址'{}',权限码校验失败'{}'", requestURI, e.getMessage());
+// return R.fail(HttpStatus.HTTP_FORBIDDEN, "没有访问权限,请联系管理员授权");
+// }
+//
+// /**
+// * 角色权限异常
+// */
+// @ExceptionHandler(NotRoleException.class)
+// public R handleNotRoleException(NotRoleException e, HttpServletRequest request) {
+// String requestURI = request.getRequestURI();
+// log.error("请求地址'{}',角色权限校验失败'{}'", requestURI, e.getMessage());
+// return R.fail(HttpStatus.HTTP_FORBIDDEN, "没有访问权限,请联系管理员授权");
+// }
+//
+// /**
+// * 认证失败
+// */
+// @ExceptionHandler(NotLoginException.class)
+// public R handleNotLoginException(NotLoginException e, HttpServletRequest request) {
+// String requestURI = request.getRequestURI();
+// log.error("请求地址'{}',认证失败'{}',无法访问系统资源", requestURI, e.getMessage());
+// return R.fail(HttpStatus.HTTP_UNAUTHORIZED, "认证失败,无法访问系统资源");
+// }
+//
+//}
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/TokenController.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/TokenController.java
index f062ff47a..25596a1c3 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/TokenController.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/TokenController.java
@@ -4,6 +4,7 @@ import cn.dev33.satoken.exception.NotLoginException;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.sso.form.RegisterBody;
import org.dromara.sso.form.SocialLoginBody;
import org.dromara.sso.service.IAuthStrategy;
@@ -161,7 +162,12 @@ public class TokenController {
*/
@PostMapping("logout")
public R logout() {
- sysLoginService.logout();
+ if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
+ // 超级管理员 登出清除动态租户
+ TenantHelper.ignore(sysLoginService::logout);
+ } else {
+ sysLoginService.logout();
+ }
return R.ok();
}
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/SysLoginService.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/SysLoginService.java
index d9bafabde..254038849 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/SysLoginService.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/SysLoginService.java
@@ -118,10 +118,6 @@ public class SysLoginService {
if (ObjectUtil.isNull(loginUser)) {
return;
}
- if (TenantHelper.isEnable() && LoginSaasHelper.isSuperAdmin()) {
- // 超级管理员 登出清除动态租户
- TenantHelper.clearDynamic();
- }
recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
} catch (NotLoginException ignored) {
} finally {
diff --git a/ruoyi-site/ruoyi-tams/src/main/java/com/lhd/tams/config/MybatisPlusAutoConfigTenant.java b/ruoyi-site/ruoyi-tams/src/main/java/com/lhd/tams/config/MybatisPlusAutoConfigTenant.java
index 2f9bcaa25..19539fbe1 100644
--- a/ruoyi-site/ruoyi-tams/src/main/java/com/lhd/tams/config/MybatisPlusAutoConfigTenant.java
+++ b/ruoyi-site/ruoyi-tams/src/main/java/com/lhd/tams/config/MybatisPlusAutoConfigTenant.java
@@ -9,6 +9,7 @@ import net.sf.jsqlparser.expression.NullValue;
import net.sf.jsqlparser.expression.StringValue;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.config.MybatisPlusConfig;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.tenant.properties.TenantProperties;
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -30,7 +31,7 @@ public class MybatisPlusAutoConfigTenant {
@Override
public Expression getTenantId() {
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
if (StringUtils.isBlank(tenantId)) {
log.error("无法获取有效的租户id -> Null");
return new NullValue();
@@ -41,7 +42,7 @@ public class MybatisPlusAutoConfigTenant {
@Override
public boolean ignoreTable(String tableName) {
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
// 判断是否有租户
if (StringUtils.isNotBlank(tenantId)) {
// 不需要过滤租户的表
diff --git a/ruoyi-site/ruoyi-tpl/src/main/java/com/lizhw/tpl/config/MybatisPlusAutoConfigTenant.java b/ruoyi-site/ruoyi-tpl/src/main/java/com/lizhw/tpl/config/MybatisPlusAutoConfigTenant.java
index 4f9207c98..6ac28d8a3 100644
--- a/ruoyi-site/ruoyi-tpl/src/main/java/com/lizhw/tpl/config/MybatisPlusAutoConfigTenant.java
+++ b/ruoyi-site/ruoyi-tpl/src/main/java/com/lizhw/tpl/config/MybatisPlusAutoConfigTenant.java
@@ -9,6 +9,7 @@ import net.sf.jsqlparser.expression.NullValue;
import net.sf.jsqlparser.expression.StringValue;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.config.MybatisPlusConfig;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.tenant.properties.TenantProperties;
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -30,7 +31,7 @@ public class MybatisPlusAutoConfigTenant {
@Override
public Expression getTenantId() {
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
if (StringUtils.isBlank(tenantId)) {
log.error("无法获取有效的租户id -> Null");
return new NullValue();
@@ -41,7 +42,7 @@ public class MybatisPlusAutoConfigTenant {
@Override
public boolean ignoreTable(String tableName) {
- String tenantId = TenantHelper.getTenantId();
+ String tenantId = LoginHelper.getTenantId();
// 判断是否有租户
if (StringUtils.isNotBlank(tenantId)) {
// 不需要过滤租户的表