handleCannotFindDataSourceException(MyBatisSystemException e, HttpServletRequest request) {
+ String requestURI = request.getRequestURI();
+ String message = e.getMessage();
+ if (message.contains("CannotFindDataSourceException")) {
+ log.error("请求地址'{}', 未找到数据源", requestURI);
+ return R.fail("未找到数据源,请联系管理员确认");
+ }
+ log.error("请求地址'{}', Mybatis系统异常", requestURI, e);
+ return R.fail(message);
+ }
+
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/handler/PlusDataPermissionHandler.java
similarity index 91%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java
rename to ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/handler/PlusDataPermissionHandler.java
index 4299256..9c86a50 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java
+++ b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/handler/PlusDataPermissionHandler.java
@@ -1,20 +1,20 @@
-package com.ruoyi.framework.handler;
+package com.ruoyi.component.mybatis.handler;
import cn.hutool.core.annotation.AnnotationUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ObjectUtil;
-import com.ruoyi.common.annotation.DataColumn;
-import com.ruoyi.common.annotation.DataPermission;
-import com.ruoyi.common.core.domain.dto.RoleDTO;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.enums.DataScopeType;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.helper.DataPermissionHelper;
-import com.ruoyi.common.helper.LoginHelper;
-import com.ruoyi.common.utils.StreamUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.component.core.domain.dto.RoleDTO;
+import com.ruoyi.component.core.domain.model.LoginUser;
+import com.ruoyi.component.core.exception.ServiceException;
+import com.ruoyi.component.mybatis.annotation.DataColumn;
+import com.ruoyi.component.mybatis.annotation.DataPermission;
+import com.ruoyi.component.mybatis.enums.DataScopeType;
+import com.ruoyi.component.mybatis.helper.DataPermissionHelper;
+import com.ruoyi.component.satoken.utils.LoginHelper;
+import com.ruoyi.component.core.util.StreamUtils;
+import com.ruoyi.component.core.util.StringUtils;
+import com.ruoyi.component.core.util.spring.SpringUtils;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Expression;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataBaseHelper.java b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/helper/DataBaseHelper.java
similarity index 91%
rename from ruoyi-common/src/main/java/com/ruoyi/common/helper/DataBaseHelper.java
rename to ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/helper/DataBaseHelper.java
index 33e0a78..09d87f3 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataBaseHelper.java
+++ b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/helper/DataBaseHelper.java
@@ -1,10 +1,10 @@
-package com.ruoyi.common.helper;
+package com.ruoyi.component.mybatis.helper;
import cn.hutool.core.convert.Convert;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
-import com.ruoyi.common.enums.DataBaseType;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.component.core.exception.ServiceException;
+import com.ruoyi.component.core.util.spring.SpringUtils;
+import com.ruoyi.component.mybatis.enums.DataBaseType;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/helper/DataPermissionHelper.java
similarity index 98%
rename from ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java
rename to ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/helper/DataPermissionHelper.java
index c3b8b47..43ac138 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java
+++ b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/helper/DataPermissionHelper.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.helper;
+package com.ruoyi.component.mybatis.helper;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.context.model.SaStorage;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/interceptor/PlusDataPermissionInterceptor.java
similarity index 96%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java
rename to ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/interceptor/PlusDataPermissionInterceptor.java
index 5d71aeb..5901d70 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java
+++ b/ruoyi-component/ruoyi-component-mybatis/src/main/java/com/ruoyi/component/mybatis/interceptor/PlusDataPermissionInterceptor.java
@@ -1,4 +1,4 @@
-package com.ruoyi.framework.interceptor;
+package com.ruoyi.component.mybatis.interceptor;
import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.util.ArrayUtil;
@@ -6,8 +6,8 @@ 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.annotation.DataColumn;
-import com.ruoyi.framework.handler.PlusDataPermissionHandler;
+import com.ruoyi.component.mybatis.annotation.DataColumn;
+import com.ruoyi.component.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-component/ruoyi-component-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-component/ruoyi-component-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..54c159a
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.ruoyi.component.mybatis.config.MybatisPlusConfig
diff --git a/ruoyi-component/ruoyi-component-mybatis/src/main/resources/common-mybatis.yml b/ruoyi-component/ruoyi-component-mybatis/src/main/resources/common-mybatis.yml
new file mode 100644
index 0000000..f5dc637
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-mybatis/src/main/resources/common-mybatis.yml
@@ -0,0 +1,33 @@
+# 内置配置 不允许修改 如需修改请在 nacos 上写相同配置覆盖
+# MyBatisPlus配置
+# https://baomidou.com/config/
+mybatis-plus:
+ # 启动时是否检查 MyBatis XML 文件的存在,默认不检查
+ checkConfigLocation: false
+ configuration:
+ # 自动驼峰命名规则(camel case)映射
+ mapUnderscoreToCamelCase: true
+ # MyBatis 自动映射策略
+ # NONE:不启用 PARTIAL:只对非嵌套 resultMap 自动映射 FULL:对所有 resultMap 自动映射
+ autoMappingBehavior: FULL
+ # MyBatis 自动映射时未知列或未知属性处理策
+ # NONE:不做处理 WARNING:打印相关警告 FAILING:抛出异常和详细信息
+ autoMappingUnknownColumnBehavior: NONE
+ # 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
+ # 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
+ # 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
+ logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+ global-config:
+ # 是否打印 Logo banner
+ banner: true
+ dbConfig:
+ # 主键类型
+ # AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
+ idType: ASSIGN_ID
+ # 逻辑已删除值(框架表均使用此值 禁止随意修改)
+ logicDeleteValue: 2
+ # 逻辑未删除值
+ logicNotDeleteValue: 0
+ insertStrategy: NOT_NULL
+ updateStrategy: NOT_NULL
+ whereStrategy: NOT_NULL
diff --git a/ruoyi-component/ruoyi-component-oss/pom.xml b/ruoyi-component/ruoyi-component-oss/pom.xml
new file mode 100644
index 0000000..b3dd53f
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-oss/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+
+ com.ruoyi
+ ruoyi-component
+ 4.8.2
+
+
+ ruoyi-component-oss
+ jar
+
+
+
+ UTF-8
+
+
+
+
+ com.ruoyi
+ ruoyi-component-json
+
+
+ com.ruoyi
+ ruoyi-component-redis
+
+
+ com.amazonaws
+ aws-java-sdk-s3
+
+
+
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/constant/OssConstant.java
similarity index 93%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/constant/OssConstant.java
index 06202d0..30f6a0a 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/constant/OssConstant.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oss.constant;
+package com.ruoyi.component.oss.constant;
import java.util.Arrays;
import java.util.List;
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/core/OssClient.java
similarity index 95%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/core/OssClient.java
index dad3aa9..c4eb55c 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/core/OssClient.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oss.core;
+package com.ruoyi.component.oss.core;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil;
@@ -14,14 +14,14 @@ import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.oss.constant.OssConstant;
-import com.ruoyi.oss.entity.UploadResult;
-import com.ruoyi.oss.enumd.AccessPolicyType;
-import com.ruoyi.oss.enumd.PolicyType;
-import com.ruoyi.oss.exception.OssException;
-import com.ruoyi.oss.properties.OssProperties;
+import com.ruoyi.component.core.util.DateUtils;
+import com.ruoyi.component.core.util.StringUtils;
+import com.ruoyi.component.oss.enumd.PolicyType;
+import com.ruoyi.component.oss.constant.OssConstant;
+import com.ruoyi.component.oss.entity.UploadResult;
+import com.ruoyi.component.oss.enumd.AccessPolicyType;
+import com.ruoyi.component.oss.exception.OssException;
+import com.ruoyi.component.oss.properties.OssProperties;
import java.io.ByteArrayInputStream;
import java.io.File;
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/entity/UploadResult.java
similarity index 87%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/entity/UploadResult.java
index 2e38f4e..0c2d9a2 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/entity/UploadResult.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oss.entity;
+package com.ruoyi.component.oss.entity;
import lombok.Builder;
import lombok.Data;
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/enumd/AccessPolicyType.java
similarity index 96%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/enumd/AccessPolicyType.java
index 1cae670..2d9d106 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/enumd/AccessPolicyType.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oss.enumd;
+package com.ruoyi.component.oss.enumd;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import lombok.AllArgsConstructor;
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/enumd/PolicyType.java
similarity index 91%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/enumd/PolicyType.java
index 606f0f4..66e8262 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/enumd/PolicyType.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oss.enumd;
+package com.ruoyi.component.oss.enumd;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/exception/OssException.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/exception/OssException.java
similarity index 83%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/exception/OssException.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/exception/OssException.java
index 540b1cc..d5b72be 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/exception/OssException.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/exception/OssException.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oss.exception;
+package com.ruoyi.component.oss.exception;
/**
* OSS异常类
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/factory/OssFactory.java
similarity index 76%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/factory/OssFactory.java
index b77973b..3c1a053 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/factory/OssFactory.java
@@ -1,14 +1,14 @@
-package com.ruoyi.oss.factory;
+package com.ruoyi.component.oss.factory;
-import com.ruoyi.common.constant.CacheNames;
-import com.ruoyi.common.utils.JsonUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.redis.CacheUtils;
-import com.ruoyi.common.utils.redis.RedisUtils;
-import com.ruoyi.oss.constant.OssConstant;
-import com.ruoyi.oss.core.OssClient;
-import com.ruoyi.oss.exception.OssException;
-import com.ruoyi.oss.properties.OssProperties;
+import com.ruoyi.component.core.constant.CacheNames;
+import com.ruoyi.component.core.util.StringUtils;
+import com.ruoyi.component.json.utils.JsonUtils;
+import com.ruoyi.component.oss.constant.OssConstant;
+import com.ruoyi.component.oss.core.OssClient;
+import com.ruoyi.component.oss.exception.OssException;
+import com.ruoyi.component.oss.properties.OssProperties;
+import com.ruoyi.component.redis.util.CacheUtils;
+import com.ruoyi.component.redis.util.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/properties/OssProperties.java
similarity index 94%
rename from ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java
rename to ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/properties/OssProperties.java
index 781a170..b6cbfd4 100644
--- a/ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java
+++ b/ruoyi-component/ruoyi-component-oss/src/main/java/com/ruoyi/component/oss/properties/OssProperties.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oss.properties;
+package com.ruoyi.component.oss.properties;
import lombok.Data;
diff --git a/ruoyi-component/ruoyi-component-ratelimiter/pom.xml b/ruoyi-component/ruoyi-component-ratelimiter/pom.xml
new file mode 100644
index 0000000..154ad6f
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-ratelimiter/pom.xml
@@ -0,0 +1,27 @@
+
+ 4.0.0
+
+ com.ruoyi
+ ruoyi-component
+ 4.8.2
+
+
+ ruoyi-component-ratelimiter
+ jar
+
+
+ UTF-8
+
+
+
+
+ com.ruoyi
+ ruoyi-component-core
+
+
+ com.ruoyi
+ ruoyi-component-redis
+
+
+
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/annotation/RateLimiter.java
similarity index 86%
rename from ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
rename to ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/annotation/RateLimiter.java
index 6eeb2f2..981bdba 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java
+++ b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/annotation/RateLimiter.java
@@ -1,6 +1,7 @@
-package com.ruoyi.common.annotation;
+package com.ruoyi.component.ratelimiter.annotation;
-import com.ruoyi.common.enums.LimitType;
+
+import com.ruoyi.component.ratelimiter.enums.LimitType;
import java.lang.annotation.*;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/aspectj/RateLimiterAspect.java
similarity index 91%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java
rename to ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/aspectj/RateLimiterAspect.java
index a9d61fb..e943c82 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java
+++ b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/aspectj/RateLimiterAspect.java
@@ -1,14 +1,14 @@
-package com.ruoyi.framework.aspectj;
+package com.ruoyi.component.ratelimiter.aspectj;
import cn.hutool.core.util.ArrayUtil;
-import com.ruoyi.common.annotation.RateLimiter;
-import com.ruoyi.common.constant.CacheConstants;
-import com.ruoyi.common.enums.LimitType;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.MessageUtils;
-import com.ruoyi.common.utils.ServletUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.redis.RedisUtils;
+import com.ruoyi.component.core.constant.CacheConstants;
+import com.ruoyi.component.core.exception.ServiceException;
+import com.ruoyi.component.core.util.MessageUtils;
+import com.ruoyi.component.core.util.ServletUtils;
+import com.ruoyi.component.core.util.StringUtils;
+import com.ruoyi.component.ratelimiter.annotation.RateLimiter;
+import com.ruoyi.component.ratelimiter.enums.LimitType;
+import com.ruoyi.component.redis.util.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
@@ -24,7 +24,6 @@ import org.springframework.expression.ParserContext;
import org.springframework.expression.common.TemplateParserContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
-import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
@@ -35,7 +34,6 @@ import java.lang.reflect.Method;
*/
@Slf4j
@Aspect
-@Component
public class RateLimiterAspect {
/**
diff --git a/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/config/RateLimiterConfig.java b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/config/RateLimiterConfig.java
new file mode 100644
index 0000000..6853934
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/config/RateLimiterConfig.java
@@ -0,0 +1,20 @@
+package com.ruoyi.component.ratelimiter.config;
+
+import com.ruoyi.component.ratelimiter.aspectj.RateLimiterAspect;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.data.redis.connection.RedisConfiguration;
+
+/**
+ * @author guangxin
+ * @date 2023/1/18
+ */
+@AutoConfiguration(after = RedisConfiguration.class)
+public class RateLimiterConfig {
+
+ @Bean
+ public RateLimiterAspect rateLimiterAspect() {
+ return new RateLimiterAspect();
+ }
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/enums/LimitType.java
similarity index 85%
rename from ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java
rename to ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/enums/LimitType.java
index ac88c62..6d64361 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java
+++ b/ruoyi-component/ruoyi-component-ratelimiter/src/main/java/com/ruoyi/component/ratelimiter/enums/LimitType.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.enums;
+package com.ruoyi.component.ratelimiter.enums;
/**
* 限流类型
diff --git a/ruoyi-component/ruoyi-component-ratelimiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-component/ruoyi-component-ratelimiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..64aec94
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-ratelimiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.ruoyi.component.ratelimiter.config.RateLimiterConfig
diff --git a/ruoyi-component/ruoyi-component-redis/pom.xml b/ruoyi-component/ruoyi-component-redis/pom.xml
new file mode 100644
index 0000000..1a52f42
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-redis/pom.xml
@@ -0,0 +1,39 @@
+
+ 4.0.0
+
+ com.ruoyi
+ ruoyi-component
+ 4.8.2
+
+
+ ruoyi-component-redis
+ jar
+
+
+ UTF-8
+
+
+
+
+
+ com.ruoyi
+ ruoyi-component-core
+
+
+
+
+ org.redisson
+ redisson-spring-boot-starter
+
+
+
+ com.baomidou
+ lock4j-redisson-spring-boot-starter
+
+
+ org.redisson
+ redisson-spring-data-27
+
+
+
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/config/RedisConfig.java
similarity index 93%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java
rename to ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/config/RedisConfig.java
index 8016ab8..ca05c8c 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java
+++ b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/config/RedisConfig.java
@@ -1,10 +1,9 @@
-package com.ruoyi.framework.config;
+package com.ruoyi.component.redis.config;
-import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ruoyi.framework.config.properties.RedissonProperties;
-import com.ruoyi.framework.handler.KeyPrefixHandler;
-import com.ruoyi.framework.manager.PlusSpringCacheManager;
+import com.ruoyi.component.redis.handler.KeyPrefixHandler;
+import com.ruoyi.component.redis.manager.PlusSpringCacheManager;
+import com.ruoyi.component.redis.properties.RedissonProperties;
import lombok.extern.slf4j.Slf4j;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
@@ -39,7 +38,7 @@ public class RedisConfig {
.setNettyThreads(redissonProperties.getNettyThreads())
.setCodec(new JsonJacksonCodec(objectMapper));
RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();
- if (ObjectUtil.isNotNull(singleServerConfig)) {
+ if (singleServerConfig != null) {
// 使用单机模式
config.useSingleServer()
//设置redis key前缀
@@ -53,7 +52,7 @@ public class RedisConfig {
}
// 集群配置方式 参考下方注释
RedissonProperties.ClusterServersConfig clusterServersConfig = redissonProperties.getClusterServersConfig();
- if (ObjectUtil.isNotNull(clusterServersConfig)) {
+ if (clusterServersConfig != null) {
config.useClusterServers()
//设置redis key前缀
.setNameMapper(new KeyPrefixHandler(redissonProperties.getKeyPrefix()))
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/KeyPrefixHandler.java b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/handler/KeyPrefixHandler.java
similarity index 91%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/handler/KeyPrefixHandler.java
rename to ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/handler/KeyPrefixHandler.java
index 161c271..f783bfc 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/handler/KeyPrefixHandler.java
+++ b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/handler/KeyPrefixHandler.java
@@ -1,6 +1,6 @@
-package com.ruoyi.framework.handler;
+package com.ruoyi.component.redis.handler;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.component.core.util.StringUtils;
import org.redisson.api.NameMapper;
/**
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/PlusSpringCacheManager.java b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/manager/PlusSpringCacheManager.java
similarity index 97%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/manager/PlusSpringCacheManager.java
rename to ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/manager/PlusSpringCacheManager.java
index ddd0f33..74eab74 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/PlusSpringCacheManager.java
+++ b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/manager/PlusSpringCacheManager.java
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.ruoyi.framework.manager;
+package com.ruoyi.component.redis.manager;
-import com.ruoyi.common.utils.redis.RedisUtils;
+import com.ruoyi.component.redis.util.RedisUtils;
import org.redisson.api.RMap;
import org.redisson.api.RMapCache;
import org.redisson.spring.cache.CacheConfig;
@@ -33,7 +33,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
- * A {@link org.springframework.cache.CacheManager} implementation
+ * A {@link CacheManager} implementation
* backed by Redisson instance.
*
* 修改 RedissonSpringCacheManager 源码
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/properties/RedissonProperties.java
similarity index 98%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java
rename to ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/properties/RedissonProperties.java
index b0bf285..20c9ff9 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java
+++ b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/properties/RedissonProperties.java
@@ -1,4 +1,4 @@
-package com.ruoyi.framework.config.properties;
+package com.ruoyi.component.redis.properties;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/CacheUtils.java
similarity index 95%
rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java
rename to ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/CacheUtils.java
index 9e0b09b..531b663 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java
+++ b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/CacheUtils.java
@@ -1,6 +1,6 @@
-package com.ruoyi.common.utils.redis;
+package com.ruoyi.component.redis.util;
-import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.component.core.util.spring.SpringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.redisson.api.RMap;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/QueueUtils.java
similarity index 98%
rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java
rename to ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/QueueUtils.java
index 0597352..b6892dd 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java
+++ b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/QueueUtils.java
@@ -1,6 +1,6 @@
-package com.ruoyi.common.utils.redis;
+package com.ruoyi.component.redis.util;
-import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.component.core.util.spring.SpringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.redisson.api.*;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/RedisUtils.java
similarity index 99%
rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java
rename to ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/RedisUtils.java
index 7a852bf..667d791 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java
+++ b/ruoyi-component/ruoyi-component-redis/src/main/java/com/ruoyi/component/redis/util/RedisUtils.java
@@ -1,6 +1,6 @@
-package com.ruoyi.common.utils.redis;
+package com.ruoyi.component.redis.util;
-import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.component.core.util.spring.SpringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.redisson.api.*;
diff --git a/ruoyi-component/ruoyi-component-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-component/ruoyi-component-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..016b83b
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.ruoyi.component.redis.config.RedisConfig
diff --git a/ruoyi-component/ruoyi-component-satoken/pom.xml b/ruoyi-component/ruoyi-component-satoken/pom.xml
new file mode 100644
index 0000000..76dd26f
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-satoken/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+
+ com.ruoyi
+ ruoyi-component
+ 4.8.2
+
+ ruoyi-component-satoken
+
+
+
+ com.ruoyi
+ ruoyi-component-core
+
+
+ com.ruoyi
+ ruoyi-component-redis
+
+
+
+ cn.dev33
+ sa-token-spring-boot-starter
+
+
+
+
+ cn.dev33
+ sa-token-jwt
+
+
+
diff --git a/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/config/SaTokenConfig.java b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/config/SaTokenConfig.java
new file mode 100644
index 0000000..2e0948c
--- /dev/null
+++ b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/config/SaTokenConfig.java
@@ -0,0 +1,47 @@
+package com.ruoyi.component.satoken.config;
+
+import cn.dev33.satoken.dao.SaTokenDao;
+import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
+import cn.dev33.satoken.stp.StpInterface;
+import cn.dev33.satoken.stp.StpLogic;
+import com.ruoyi.component.satoken.core.PlusSaTokenDao;
+import com.ruoyi.component.satoken.core.SaPermissionImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * sa-token 配置
+ *
+ * @author Lion Li
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Configuration
+public class SaTokenConfig implements WebMvcConfigurer {
+
+ @Bean
+ public StpLogic getStpLogicJwt() {
+ // Sa-Token 整合 jwt (简单模式)
+ return new StpLogicJwtForSimple();
+ }
+
+ /**
+ * 权限接口实现(使用bean注入方便用户替换)
+ */
+ @Bean
+ public StpInterface stpInterface() {
+ return new SaPermissionImpl();
+ }
+
+ /**
+ * 自定义dao层存储
+ */
+ @Bean
+ public SaTokenDao saTokenDao() {
+ return new PlusSaTokenDao();
+ }
+
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/core/PlusSaTokenDao.java
similarity index 98%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
rename to ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/core/PlusSaTokenDao.java
index 2e4e890..d6e7aa6 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
+++ b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/core/PlusSaTokenDao.java
@@ -1,8 +1,8 @@
-package com.ruoyi.framework.satoken.dao;
+package com.ruoyi.component.satoken.core;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.util.SaFoxUtil;
-import com.ruoyi.common.utils.redis.RedisUtils;
+import com.ruoyi.component.redis.util.RedisUtils;
import java.time.Duration;
import java.util.ArrayList;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaPermissionImpl.java b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/core/SaPermissionImpl.java
similarity index 85%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaPermissionImpl.java
rename to ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/core/SaPermissionImpl.java
index 1b698d1..59277bf 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaPermissionImpl.java
+++ b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/core/SaPermissionImpl.java
@@ -1,9 +1,9 @@
-package com.ruoyi.framework.satoken.service;
+package com.ruoyi.component.satoken.core;
import cn.dev33.satoken.stp.StpInterface;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.enums.UserType;
-import com.ruoyi.common.helper.LoginHelper;
+import com.ruoyi.component.core.domain.model.LoginUser;
+import com.ruoyi.component.core.enums.UserType;
+import com.ruoyi.component.satoken.utils.LoginHelper;
import java.util.ArrayList;
import java.util.List;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/utils/LoginHelper.java
similarity index 82%
rename from ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java
rename to ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/utils/LoginHelper.java
index 86515f2..64cccb6 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java
+++ b/ruoyi-component/ruoyi-component-satoken/src/main/java/com/ruoyi/component/satoken/utils/LoginHelper.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.helper;
+package com.ruoyi.component.satoken.utils;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.context.model.SaStorage;
@@ -7,14 +7,16 @@ import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.enums.DeviceType;
-import com.ruoyi.common.enums.UserType;
+import com.ruoyi.component.core.constant.UserConstants;
+import com.ruoyi.component.core.domain.model.LoginUser;
+import com.ruoyi.component.core.enums.DeviceType;
+import com.ruoyi.component.core.enums.UserType;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import java.util.function.Supplier;
+
/**
* 登录鉴权助手
*
@@ -34,6 +36,34 @@ public class LoginHelper {
public static final String LOGIN_USER_KEY = "loginUser";
public static final String USER_KEY = "userId";
+ public static final String TENANT_KEY = "tenantId";
+
+
+ /**
+ * 获取租户ID
+ */
+ public static String getTenantId() {
+ return Convert.toStr(getExtra(TENANT_KEY));
+ }
+
+ private static Object getExtra(String key) {
+ return getStorageIfAbsentSet(key, () -> StpUtil.getExtra(key));
+ }
+
+ public static Object getStorageIfAbsentSet(String key, Supplier