参考文档:mapstruct-plus
+ * + * @author Michelle.Chung + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class MapstructUtils { + + private final static Converter CONVERTER = SpringUtils.getBean(Converter.class); + + /** + * 将 T 类型对象,转换为 desc 类型的对象并返回 + * + * @param source 数据来源实体 + * @param desc 描述对象 转换后的对象 + * @return desc + */ + public static- * 例如:原字符串是:中文1234,我想把1234换成(1234),则可以: - * - *
- * ReUtil.replaceAll("中文1234", "(\\d+)", "($1)"))
- *
- * 结果:中文(1234)
- *
- *
- * @param content 文本
- * @param regex 正则
- * @param replacementTemplate 替换的文本模板,可以使用$1类似的变量提取正则匹配出的内容
- * @return 处理后的文本
- */
- public static String replaceAll(CharSequence content, String regex, String replacementTemplate) {
- final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
- return replaceAll(content, pattern, replacementTemplate);
- }
-
- /**
- * 正则替换指定值+ * 例如:原字符串是:中文1234,我想把1234换成(1234),则可以: + * + *
+ * ReUtil.replaceAll("中文1234", "(\\d+)", "($1)"))
+ *
+ * 结果:中文(1234)
+ *
+ *
+ * @param content 文本
+ * @param regex 正则
+ * @param replacementTemplate 替换的文本模板,可以使用$1类似的变量提取正则匹配出的内容
+ * @return 处理后的文本
+ */
+ public static String replaceAll(CharSequence content, String regex, String replacementTemplate) {
+ final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
+ return replaceAll(content, pattern, replacementTemplate);
+ }
+
+ /**
+ * 正则替换指定值> P selectVoPage(IPage
* 内置数据 user 当前用户 内容参考 SysUser
- * 如需扩展数据 可使用 {@link com.ruoyi.common.mybatis.helper.DataPermissionHelper} 操作
+ * 如需扩展数据 可使用 {@link org.dromara.common.mybatis.helper.DataPermissionHelper} 操作
* 内置服务 sdss 系统数据权限服务 内容参考 SysDataScopeService
* 如需扩展更多自定义服务 可以参考 sdss 自行编写
*
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/filter/DubboDataPermissionFilter.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/filter/DubboDataPermissionFilter.java
similarity index 88%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/filter/DubboDataPermissionFilter.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/filter/DubboDataPermissionFilter.java
index 8f920c57..61e549d5 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/filter/DubboDataPermissionFilter.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/filter/DubboDataPermissionFilter.java
@@ -1,6 +1,6 @@
-package com.ruoyi.common.mybatis.filter;
+package org.dromara.common.mybatis.filter;
-import com.ruoyi.common.mybatis.helper.DataPermissionHelper;
+import org.dromara.common.mybatis.helper.DataPermissionHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.Activate;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
similarity index 74%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
index ea6a7ebe..5ed320df 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/CreateAndUpdateMetaObjectHandler.java
@@ -1,15 +1,14 @@
-package com.ruoyi.common.mybatis.handler;
+package org.dromara.common.mybatis.handler;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-import com.ruoyi.common.core.exception.ServiceException;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-import com.ruoyi.common.satoken.utils.LoginHelper;
-import com.ruoyi.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.web.domain.BaseEntity;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.system.api.model.LoginUser;
import java.util.Date;
@@ -31,12 +30,12 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
? baseEntity.getCreateTime() : new Date();
baseEntity.setCreateTime(current);
baseEntity.setUpdateTime(current);
- String username = StringUtils.isNotBlank(baseEntity.getCreateBy())
- ? baseEntity.getCreateBy() : getLoginUsername();
+ Long userId = ObjectUtil.isNotNull(baseEntity.getCreateBy())
+ ? baseEntity.getCreateBy() : getLoginId();
// 当前已登录 且 创建人为空 则填充
- baseEntity.setCreateBy(username);
+ baseEntity.setCreateBy(userId);
// 当前已登录 且 更新人为空 则填充
- baseEntity.setUpdateBy(username);
+ baseEntity.setUpdateBy(userId);
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
@@ -51,10 +50,10 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
Date current = new Date();
// 更新时间填充(不管为不为空)
baseEntity.setUpdateTime(current);
- String username = getLoginUsername();
+ Long userId = getLoginId();
// 当前已登录 更新人填充(不管为不为空)
- if (StringUtils.isNotBlank(username)) {
- baseEntity.setUpdateBy(username);
+ if (ObjectUtil.isNotNull(userId)) {
+ baseEntity.setUpdateBy(userId);
}
}
} catch (Exception e) {
@@ -65,7 +64,7 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
/**
* 获取登录用户名
*/
- private String getLoginUsername() {
+ private Long getLoginId() {
LoginUser loginUser;
try {
loginUser = LoginHelper.getLoginUser();
@@ -73,7 +72,7 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
log.warn("自动注入警告 => 用户未登录");
return null;
}
- return ObjectUtil.isNotNull(loginUser) ? loginUser.getUsername() : null;
+ return ObjectUtil.isNotNull(loginUser) ? loginUser.getUserId() : null;
}
}
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java
similarity index 94%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java
index 032a0c6f..251819a4 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/MybatisExceptionHandler.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java
@@ -1,6 +1,6 @@
-package com.ruoyi.common.mybatis.handler;
+package org.dromara.common.mybatis.handler;
-import com.ruoyi.common.core.domain.R;
+import org.dromara.common.core.domain.R;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.MyBatisSystemException;
import org.springframework.dao.DuplicateKeyException;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java
similarity index 91%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java
index 5a82331d..e329dccf 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/handler/PlusDataPermissionHandler.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.mybatis.handler;
+package org.dromara.common.mybatis.handler;
import cn.hutool.core.annotation.AnnotationUtil;
import cn.hutool.core.collection.CollUtil;
@@ -6,17 +6,17 @@ import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ObjectUtil;
-import com.ruoyi.common.core.exception.ServiceException;
-import com.ruoyi.common.core.utils.SpringUtils;
-import com.ruoyi.common.core.utils.StreamUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.mybatis.annotation.DataColumn;
-import com.ruoyi.common.mybatis.annotation.DataPermission;
-import com.ruoyi.common.mybatis.enums.DataScopeType;
-import com.ruoyi.common.mybatis.helper.DataPermissionHelper;
-import com.ruoyi.common.satoken.utils.LoginHelper;
-import com.ruoyi.system.api.model.LoginUser;
-import com.ruoyi.system.api.model.RoleDTO;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.core.utils.StreamUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.annotation.DataColumn;
+import org.dromara.common.mybatis.annotation.DataPermission;
+import org.dromara.common.mybatis.enums.DataScopeType;
+import org.dromara.common.mybatis.helper.DataPermissionHelper;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.system.api.model.LoginUser;
+import org.dromara.system.api.model.RoleDTO;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Expression;
@@ -79,7 +79,7 @@ public class PlusDataPermissionHandler {
DataPermissionHelper.setVariable("user", currentUser);
}
// 如果是超级管理员,则不过滤数据
- if (ObjectUtil.isNull(currentUser) || LoginHelper.isAdmin(currentUser.getUserId())) {
+ if (ObjectUtil.isNull(currentUser) || LoginHelper.isSuperAdmin(currentUser.getUserId())) {
return where;
}
String dataFilterSql = buildDataFilter(dataColumns, isSelect);
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataBaseHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java
similarity index 91%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataBaseHelper.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java
index bfe2a330..07226451 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataBaseHelper.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java
@@ -1,10 +1,10 @@
-package com.ruoyi.common.mybatis.helper;
+package org.dromara.common.mybatis.helper;
import cn.hutool.core.convert.Convert;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
-import com.ruoyi.common.core.exception.ServiceException;
-import com.ruoyi.common.core.utils.SpringUtils;
-import com.ruoyi.common.mybatis.enums.DataBaseType;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.mybatis.enums.DataBaseType;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java
similarity index 98%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java
index 41335de8..f0ba94ec 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/helper/DataPermissionHelper.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.mybatis.helper;
+package org.dromara.common.mybatis.helper;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.context.model.SaStorage;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
similarity index 97%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
index 9b6a0b07..c490f20b 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
@@ -1,10 +1,10 @@
-package com.ruoyi.common.mybatis.interceptor;
+package org.dromara.common.mybatis.interceptor;
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
-import com.ruoyi.common.mybatis.handler.PlusDataPermissionHandler;
+import org.dromara.common.mybatis.handler.PlusDataPermissionHandler;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.delete.Delete;
import net.sf.jsqlparser.statement.select.PlainSelect;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/service/SysDataScopeService.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/SysDataScopeService.java
similarity index 88%
rename from ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/service/SysDataScopeService.java
rename to ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/SysDataScopeService.java
index cd883a2c..0c187f66 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/com/ruoyi/common/mybatis/service/SysDataScopeService.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/SysDataScopeService.java
@@ -1,6 +1,6 @@
-package com.ruoyi.common.mybatis.service;
+package org.dromara.common.mybatis.service;
-import com.ruoyi.system.api.RemoteDataScopeService;
+import org.dromara.system.api.RemoteDataScopeService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
index 2daf267c..6d8ff88c 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
@@ -1 +1 @@
-dubboDataPermissionFilter=com.ruoyi.common.mybatis.filter.DubboDataPermissionFilter
+dubboDataPermissionFilter=org.dromara.common.mybatis.filter.DubboDataPermissionFilter
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index fdef0671..3a20a02a 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,3 +1,3 @@
-com.ruoyi.common.mybatis.config.MybatisPlusConfiguration
-com.ruoyi.common.mybatis.handler.MybatisExceptionHandler
-com.ruoyi.common.mybatis.service.SysDataScopeService
+org.dromara.common.mybatis.config.MybatisPlusConfiguration
+org.dromara.common.mybatis.handler.MybatisExceptionHandler
+org.dromara.common.mybatis.service.SysDataScopeService
diff --git a/ruoyi-common/ruoyi-common-oss/pom.xml b/ruoyi-common/ruoyi-common-oss/pom.xml
index 5c229ce9..884dc8fb 100644
--- a/ruoyi-common/ruoyi-common-oss/pom.xml
+++ b/ruoyi-common/ruoyi-common-oss/pom.xml
@@ -3,7 +3,7 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -29,6 +32,7 @@ import lombok.NoArgsConstructor;
public class LoginHelper {
public static final String LOGIN_USER_KEY = "loginUser";
+ public static final String TENANT_KEY = "tenantId";
public static final String USER_KEY = "userId";
/**
@@ -49,12 +53,15 @@ public class LoginHelper {
public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) {
SaStorage storage = SaHolder.getStorage();
storage.set(LOGIN_USER_KEY, loginUser);
+ storage.set(TENANT_KEY, loginUser.getTenantId());
storage.set(USER_KEY, loginUser.getUserId());
SaLoginModel model = new SaLoginModel();
if (ObjectUtil.isNotNull(deviceType)) {
model.setDevice(deviceType.getDevice());
}
- StpUtil.login(loginUser.getLoginId(), model.setExtra(USER_KEY, loginUser.getUserId()));
+ StpUtil.login(loginUser.getLoginId(),
+ model.setExtra(TENANT_KEY, loginUser.getTenantId())
+ .setExtra(USER_KEY, loginUser.getUserId()));
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
}
@@ -95,6 +102,23 @@ public class LoginHelper {
return userId;
}
+ /**
+ * 获取租户ID
+ */
+ public static String getTenantId() {
+ String tenantId;
+ try {
+ tenantId = (String) SaHolder.getStorage().get(TENANT_KEY);
+ if (ObjectUtil.isNull(tenantId)) {
+ tenantId = (String) StpUtil.getExtra(TENANT_KEY);
+ SaHolder.getStorage().set(TENANT_KEY, tenantId);
+ }
+ } catch (Exception e) {
+ return null;
+ }
+ return tenantId;
+ }
+
/**
* 获取部门ID
*/
@@ -118,17 +142,31 @@ public class LoginHelper {
}
/**
- * 是否为管理员
+ * 是否为超级管理员
*
* @param userId 用户ID
* @return 结果
*/
- public static boolean isAdmin(Long userId) {
- return UserConstants.ADMIN_ID.equals(userId);
+ public static boolean isSuperAdmin(Long userId) {
+ return UserConstants.SUPER_ADMIN_ID.equals(userId);
}
- public static boolean isAdmin() {
- return isAdmin(getUserId());
+ public static boolean isSuperAdmin() {
+ return isSuperAdmin(getUserId());
+ }
+
+ /**
+ * 是否为超级管理员
+ *
+ * @param rolePermission 角色权限标识组
+ * @return 结果
+ */
+ public static boolean isTenantAdmin(Set
+ * 如果为非web环境 那么只在当前线程内生效
+ */
+ public static void setDynamic(String tenantId) {
+ if (!isWeb()) {
+ TEMP_DYNAMIC_TENANT.set(tenantId);
+ return;
+ }
+ String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
+ RedisUtils.setCacheObject(cacheKey, tenantId);
+ SaHolder.getStorage().set(cacheKey, tenantId);
+ }
+
+ /**
+ * 获取动态租户(一直有效 需要手动清理)
+ *
+ * 如果为非web环境 那么只在当前线程内生效
+ */
+ public static String getDynamic() {
+ if (!isWeb()) {
+ return TEMP_DYNAMIC_TENANT.get();
+ }
+ String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
+ String tenantId = (String) SaHolder.getStorage().get(cacheKey);
+ if (StringUtils.isNotBlank(tenantId)) {
+ return tenantId;
+ }
+ tenantId = RedisUtils.getCacheObject(cacheKey);
+ SaHolder.getStorage().set(cacheKey, tenantId);
+ return tenantId;
+ }
+
+ /**
+ * 清除动态租户
+ */
+ public static void clearDynamic() {
+ if (!isWeb()) {
+ TEMP_DYNAMIC_TENANT.remove();
+ return;
+ }
+ String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
+ RedisUtils.deleteObject(cacheKey);
+ SaHolder.getStorage().delete(cacheKey);
+ }
+
+ /**
+ * 获取当前租户id(动态租户优先)
+ */
+ public static String getTenantId() {
+ String tenantId = TenantHelper.getDynamic();
+ if (StringUtils.isBlank(tenantId)) {
+ tenantId = LoginHelper.getTenantId();
+ }
+ return tenantId;
+ }
+
+ /**
+ * 判断是否web环境
+ */
+ private static boolean isWeb() {
+ return RequestContextHolder.getRequestAttributes() != null;
+ }
+
+}
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
new file mode 100644
index 00000000..3b434b2e
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/manager/TenantSpringCacheManager.java
@@ -0,0 +1,33 @@
+package org.dromara.common.tenant.manager;
+
+
+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.springframework.cache.Cache;
+
+/**
+ * 重写 cacheName 处理方法 支持多租户
+ *
+ * @author Lion Li
+ */
+public class TenantSpringCacheManager extends PlusSpringCacheManager {
+
+ public TenantSpringCacheManager() {
+ }
+
+ @Override
+ public Cache getCache(String name) {
+ if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
+ return super.getCache(name);
+ }
+ String tenantId = TenantHelper.getTenantId();
+ if (StringUtils.startsWith(name, tenantId)) {
+ // 如果存在则直接返回
+ return super.getCache(name);
+ }
+ return super.getCache(tenantId + ":" + name);
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/properties/TenantProperties.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/properties/TenantProperties.java
new file mode 100644
index 00000000..1675ccf5
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/properties/TenantProperties.java
@@ -0,0 +1,27 @@
+package org.dromara.common.tenant.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.List;
+
+/**
+ * 租户 配置属性
+ *
+ * @author Lion Li
+ */
+@Data
+@ConfigurationProperties(prefix = "tenant")
+public class TenantProperties {
+
+ /**
+ * 是否启用
+ */
+ private Boolean enable;
+
+ /**
+ * 排除表
+ */
+ private List
* 默认取当前字段的值 如果设置了 @{@link Translation#mapper()} 则取映射字段的值
*/
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/annotation/TranslationType.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/annotation/TranslationType.java
similarity index 59%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/annotation/TranslationType.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/annotation/TranslationType.java
index 1b64e537..5e4eb356 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/annotation/TranslationType.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/annotation/TranslationType.java
@@ -1,9 +1,9 @@
-package com.ruoyi.common.translation.annotation;
+package org.dromara.common.translation.annotation;
import java.lang.annotation.*;
/**
- * 翻译类型注解 (标注到{@link com.ruoyi.common.translation.core.TranslationInterface} 的实现类)
+ * 翻译类型注解 (标注到{@link org.dromara.common.translation.core.TranslationInterface} 的实现类)
*
* @author Lion Li
*/
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/config/TranslationConfig.java
similarity index 80%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/config/TranslationConfig.java
index acc16d62..501d4713 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/config/TranslationConfig.java
@@ -1,10 +1,10 @@
-package com.ruoyi.common.translation.config;
+package org.dromara.common.translation.config;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ruoyi.common.translation.annotation.TranslationType;
-import com.ruoyi.common.translation.core.TranslationInterface;
-import com.ruoyi.common.translation.core.handler.TranslationBeanSerializerModifier;
-import com.ruoyi.common.translation.core.handler.TranslationHandler;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.core.TranslationInterface;
+import org.dromara.common.translation.core.handler.TranslationBeanSerializerModifier;
+import org.dromara.common.translation.core.handler.TranslationHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfiguration;
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/constant/TransConstant.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java
similarity index 89%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/constant/TransConstant.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java
index 1cfec58e..25df1c9f 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/constant/TransConstant.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.translation.constant;
+package org.dromara.common.translation.constant;
/**
* 翻译常量
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/TranslationInterface.java
similarity index 58%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/TranslationInterface.java
index fed0f746..4500a239 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/TranslationInterface.java
@@ -1,7 +1,7 @@
-package com.ruoyi.common.translation.core;
+package org.dromara.common.translation.core;
/**
- * 翻译接口 (实现类需标注 {@link com.ruoyi.common.translation.annotation.TranslationType} 注解标明翻译类型)
+ * 翻译接口 (实现类需标注 {@link org.dromara.common.translation.annotation.TranslationType} 注解标明翻译类型)
*
* @author Lion Li
*/
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationBeanSerializerModifier.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationBeanSerializerModifier.java
similarity index 95%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationBeanSerializerModifier.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationBeanSerializerModifier.java
index 45549ff7..6cd5a96a 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationBeanSerializerModifier.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationBeanSerializerModifier.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.translation.core.handler;
+package org.dromara.common.translation.core.handler;
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.SerializationConfig;
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java
similarity index 88%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java
index fcd122c8..bb9615bf 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.translation.core.handler;
+package org.dromara.common.translation.core.handler;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.core.JsonGenerator;
@@ -7,10 +7,10 @@ import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.utils.reflect.ReflectUtils;
-import com.ruoyi.common.translation.annotation.Translation;
-import com.ruoyi.common.translation.core.TranslationInterface;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.core.utils.reflect.ReflectUtils;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.core.TranslationInterface;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java
similarity index 64%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java
index 742db2c9..b88af579 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java
@@ -1,9 +1,9 @@
-package com.ruoyi.common.translation.core.impl;
+package org.dromara.common.translation.core.impl;
-import com.ruoyi.common.translation.annotation.TranslationType;
-import com.ruoyi.common.translation.constant.TransConstant;
-import com.ruoyi.common.translation.core.TranslationInterface;
-import com.ruoyi.system.api.RemoteDeptService;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+import org.dromara.system.api.RemoteDeptService;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java
similarity index 60%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java
index 053926d5..538d932e 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java
@@ -1,10 +1,10 @@
-package com.ruoyi.common.translation.core.impl;
+package org.dromara.common.translation.core.impl;
-import com.ruoyi.common.core.service.DictService;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.translation.annotation.TranslationType;
-import com.ruoyi.common.translation.constant.TransConstant;
-import com.ruoyi.common.translation.core.TranslationInterface;
+import org.dromara.common.core.service.DictService;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
import lombok.AllArgsConstructor;
/**
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java
similarity index 62%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java
index 17a30f16..0277ec1b 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java
@@ -1,9 +1,9 @@
-package com.ruoyi.common.translation.core.impl;
+package org.dromara.common.translation.core.impl;
-import com.ruoyi.common.translation.annotation.TranslationType;
-import com.ruoyi.common.translation.constant.TransConstant;
-import com.ruoyi.common.translation.core.TranslationInterface;
-import com.ruoyi.resource.api.RemoteFileService;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+import org.dromara.resource.api.RemoteFileService;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java
similarity index 63%
rename from ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java
rename to ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java
index 59938826..c4423028 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java
@@ -1,9 +1,9 @@
-package com.ruoyi.common.translation.core.impl;
+package org.dromara.common.translation.core.impl;
-import com.ruoyi.common.translation.annotation.TranslationType;
-import com.ruoyi.common.translation.constant.TransConstant;
-import com.ruoyi.common.translation.core.TranslationInterface;
-import com.ruoyi.system.api.RemoteUserService;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+import org.dromara.system.api.RemoteUserService;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index fe396d49..45844e01 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,5 +1,5 @@
-com.ruoyi.common.translation.config.TranslationConfig
-com.ruoyi.common.translation.core.impl.DeptNameTranslationImpl
-com.ruoyi.common.translation.core.impl.DictTypeTranslationImpl
-com.ruoyi.common.translation.core.impl.OssUrlTranslationImpl
-com.ruoyi.common.translation.core.impl.UserNameTranslationImpl
+org.dromara.common.translation.config.TranslationConfig
+org.dromara.common.translation.core.impl.DeptNameTranslationImpl
+org.dromara.common.translation.core.impl.DictTypeTranslationImpl
+org.dromara.common.translation.core.impl.OssUrlTranslationImpl
+org.dromara.common.translation.core.impl.UserNameTranslationImpl
diff --git a/ruoyi-common/ruoyi-common-web/pom.xml b/ruoyi-common/ruoyi-common-web/pom.xml
index 23eb8c92..63b013f6 100644
--- a/ruoyi-common/ruoyi-common-web/pom.xml
+++ b/ruoyi-common/ruoyi-common-web/pom.xml
@@ -3,7 +3,7 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> list(SysDept dept) {
- List
> list(SysDeptBo dept) {
+ List
> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
- List
> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
+ List
> dictType(@PathVariable String dictType) {
- List
> dictType(@PathVariable String dictType) {
+ List
> optionselect() {
- List
> optionselect() {
+ List
> getRouters() {
+ List
> list(SysMenu menu) {
- Long userId = LoginHelper.getUserId();
- List
> list(SysMenuBo menu) {
+ List
>> treeselect(SysMenu menu) {
- Long userId = LoginHelper.getUserId();
- List
>> treeselect(SysMenuBo menu) {
+ List
> getRouters() {
- Long userId = LoginHelper.getUserId();
- List