@@ -26,11 +26,12 @@
2.2.11
3.3.0
2.3
- 3.4.3.4
+ 1.28.0
+ 3.5.0
3.9.1
5.7.18
4.9.2
- 2.5.5
+ 2.6.0
3.16.7
2.2.1
3.5.0
@@ -68,6 +69,15 @@
import
+
+
+ cn.hutool
+ hutool-bom
+ ${hutool.version}
+ pom
+ import
+
+
com.alibaba
@@ -129,6 +139,19 @@
${velocity.version}
+
+
+ cn.dev33
+ sa-token-spring-boot-starter
+ ${satoken.version}
+
+
+
+ cn.dev33
+ sa-token-jwt
+ ${satoken.version}
+
+
com.sun.xml.bind
@@ -160,36 +183,6 @@
${p6spy.version}
-
- cn.hutool
- hutool-core
- ${hutool.version}
-
-
-
- cn.hutool
- hutool-http
- ${hutool.version}
-
-
-
- cn.hutool
- hutool-captcha
- ${hutool.version}
-
-
-
- cn.hutool
- hutool-extra
- ${hutool.version}
-
-
-
- cn.hutool
- hutool-jwt
- ${hutool.version}
-
-
com.squareup.okhttp3
okhttp
@@ -319,15 +312,15 @@
ruoyi-admin
- ruoyi-framework
- ruoyi-system
- ruoyi-job
- ruoyi-generator
ruoyi-common
ruoyi-demo
ruoyi-extend
- ruoyi-oss
ruoyi-flowable
+ ruoyi-framework
+ ruoyi-generator
+ ruoyi-job
+ ruoyi-oss
+ ruoyi-system
pom
@@ -346,8 +339,17 @@
-
src/main/resources
+
+ false
+
+
+ src/main/resources
+
+
+ application*
+ bootstrap*
+
true
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
index 87cfcc78..532134e4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
@@ -7,7 +7,7 @@ import cn.hutool.core.util.IdUtil;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.CaptchaType;
-import com.ruoyi.common.utils.RedisUtils;
+import com.ruoyi.common.utils.redis.RedisUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.reflect.ReflectUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
index aeb7503e..06b49589 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
@@ -1,5 +1,6 @@
package com.ruoyi.web.controller.monitor;
+import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.annotations.Api;
@@ -9,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.RedisServerCommands;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -30,7 +30,7 @@ public class CacheController {
private final RedisTemplate redisTemplate;
@ApiOperation("获取缓存监控详细信息")
- @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
+ @SaCheckPermission("monitor:cache:list")
@GetMapping()
public R
-
+
- org.springframework.boot
- spring-boot-starter-security
+ cn.dev33
+ sa-token-spring-boot-starter
+
+
+
+ cn.dev33
+ sa-token-jwt
+
+
+
+ org.springframework.security
+ spring-security-crypto
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
deleted file mode 100644
index f1a4f9f3..00000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.ruoyi.common.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * 数据权限过滤注解
- *
- * @author ruoyi
- * @deprecated 3.6.0 移除 {@link com.ruoyi.common.annotation.DataPermission}
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Deprecated
-public @interface DataScope {
-
- /**
- * 部门表的别名
- */
- String deptAlias() default "";
-
- /**
- * 用户表的别名
- */
- String userAlias() default "";
-
- /**
- * 是否过滤用户权限
- */
- boolean isUser() default false;
-
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java
deleted file mode 100644
index 9bbc8125..00000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.ruoyi.common.annotation;
-
-import com.ruoyi.common.enums.DataSourceType;
-
-import java.lang.annotation.*;
-
-/**
- * 自定义多数据源切换注解
- *
- * 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准
- *
- * @author ruoyi
- * @deprecated 3.6.0 移除 使用原生注解处理 方法更全 {@link com.baomidou.dynamic.datasource.annotation.DS}
- */
-@Target({ElementType.METHOD, ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-@Deprecated
-public @interface DataSource {
- /**
- * 切换数据源名称
- */
- DataSourceType value() default DataSourceType.MASTER;
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java
new file mode 100644
index 00000000..ff17b09d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java
@@ -0,0 +1,23 @@
+package com.ruoyi.common.annotation;
+
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.ruoyi.common.enums.SensitiveStrategy;
+import com.ruoyi.common.jackson.SensitiveJsonSerializer;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 数据脱敏注解
+ * @author zhujie
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+@JacksonAnnotationsInside
+@JsonSerialize(using = SensitiveJsonSerializer.class)
+public @interface Sensitive {
+ SensitiveStrategy strategy();
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java b/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java
index 9c0f26f5..ec2d6825 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java
@@ -13,73 +13,73 @@ import com.ruoyi.common.utils.StringUtils;
*/
public class UnsignedMathGenerator implements CodeGenerator {
- private static final long serialVersionUID = -5514819971774091076L;
+ private static final long serialVersionUID = -5514819971774091076L;
- private static final String operators = "+-*";
+ private static final String operators = "+-*";
- /**
- * 参与计算数字最大长度
- */
- private final int numberLength;
+ /**
+ * 参与计算数字最大长度
+ */
+ private final int numberLength;
- /**
- * 构造
- */
- public UnsignedMathGenerator() {
- this(2);
- }
+ /**
+ * 构造
+ */
+ public UnsignedMathGenerator() {
+ this(2);
+ }
- /**
- * 构造
- *
- * @param numberLength 参与计算最大数字位数
- */
- public UnsignedMathGenerator(int numberLength) {
- this.numberLength = numberLength;
- }
+ /**
+ * 构造
+ *
+ * @param numberLength 参与计算最大数字位数
+ */
+ public UnsignedMathGenerator(int numberLength) {
+ this.numberLength = numberLength;
+ }
- @Override
- public String generate() {
- final int limit = getLimit();
- int min = RandomUtil.randomInt(limit);
- int max = RandomUtil.randomInt(min, limit);
- String number1 = Integer.toString(max);
- String number2 = Integer.toString(min);
- number1 = StringUtils.rightPad(number1, this.numberLength, CharUtil.SPACE);
- number2 = StringUtils.rightPad(number2, this.numberLength, CharUtil.SPACE);
+ @Override
+ public String generate() {
+ final int limit = getLimit();
+ int min = RandomUtil.randomInt(limit);
+ int max = RandomUtil.randomInt(min, limit);
+ String number1 = Integer.toString(max);
+ String number2 = Integer.toString(min);
+ number1 = StringUtils.rightPad(number1, this.numberLength, CharUtil.SPACE);
+ number2 = StringUtils.rightPad(number2, this.numberLength, CharUtil.SPACE);
- return number1 + RandomUtil.randomChar(operators) + number2 + '=';
- }
+ return number1 + RandomUtil.randomChar(operators) + number2 + '=';
+ }
- @Override
- public boolean verify(String code, String userInputCode) {
- int result;
- try {
- result = Integer.parseInt(userInputCode);
- } catch (NumberFormatException e) {
- // 用户输入非数字
- return false;
- }
+ @Override
+ public boolean verify(String code, String userInputCode) {
+ int result;
+ try {
+ result = Integer.parseInt(userInputCode);
+ } catch (NumberFormatException e) {
+ // 用户输入非数字
+ return false;
+ }
- final int calculateResult = (int) Calculator.conversion(code);
- return result == calculateResult;
- }
+ final int calculateResult = (int) Calculator.conversion(code);
+ return result == calculateResult;
+ }
- /**
- * 获取验证码长度
- *
- * @return 验证码长度
- */
- public int getLength() {
- return this.numberLength * 2 + 2;
- }
+ /**
+ * 获取验证码长度
+ *
+ * @return 验证码长度
+ */
+ public int getLength() {
+ return this.numberLength * 2 + 2;
+ }
- /**
- * 根据长度获取参与计算数字最大值
- *
- * @return 最大值
- */
- private int getLimit() {
- return Integer.parseInt("1" + StringUtils.repeat('0', this.numberLength));
- }
+ /**
+ * 根据长度获取参与计算数字最大值
+ *
+ * @return 最大值
+ */
+ private int getLimit() {
+ return Integer.parseInt("1" + StringUtils.repeat('0', this.numberLength));
+ }
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
index 76e959de..5e07c96c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -1,6 +1,5 @@
package com.ruoyi.common.constant;
-
/**
* 通用常量信息
*
@@ -66,7 +65,12 @@ public interface Constants {
/**
* 登录用户 redis key
*/
- String LOGIN_TOKEN_KEY = "login_tokens:";
+ public static final String LOGIN_TOKEN_KEY = "Authorization:login:token:";
+
+ /**
+ * 在线用户 redis key
+ */
+ public static final String ONLINE_TOKEN_KEY = "online_tokens:";
/**
* 防重提交 redis key
@@ -103,41 +107,11 @@ public interface Constants {
*/
String TOKEN = "token";
- /**
- * 令牌前缀
- */
- String TOKEN_PREFIX = "Bearer ";
-
/**
* 令牌前缀
*/
String LOGIN_USER_KEY = "login_user_key";
- /**
- * 用户ID
- */
- String JWT_USERID = "userid";
-
- /**
- * 用户名称
- */
- String JWT_USERNAME = "sub";
-
- /**
- * 用户头像
- */
- String JWT_AVATAR = "avatar";
-
- /**
- * 创建时间
- */
- String JWT_CREATED = "created";
-
- /**
- * 用户权限
- */
- String JWT_AUTHORITIES = "authorities";
-
/**
* 参数管理 cache key
*/
@@ -149,3 +123,4 @@ public interface Constants {
String SYS_DICT_KEY = "sys_dict:";
}
+
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java
index df1f95a0..690b4791 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java
@@ -20,32 +20,32 @@ import java.math.BigDecimal;
@Slf4j
public class ExcelBigNumberConvert implements Converter {
- @Override
- public Class supportJavaTypeKey() {
- return Long.class;
- }
+ @Override
+ public Class supportJavaTypeKey() {
+ return Long.class;
+ }
- @Override
- public CellDataTypeEnum supportExcelTypeKey() {
- return CellDataTypeEnum.STRING;
- }
+ @Override
+ public CellDataTypeEnum supportExcelTypeKey() {
+ return CellDataTypeEnum.STRING;
+ }
- @Override
- public Long convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
- return Convert.toLong(cellData.getData());
- }
+ @Override
+ public Long convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+ return Convert.toLong(cellData.getData());
+ }
- @Override
- public CellData