diff --git a/docker/copy.sh b/docker/copy.sh
index 5426572f6..629768856 100644
--- a/docker/copy.sh
+++ b/docker/copy.sh
@@ -10,7 +10,7 @@ usage() {
# copy sql
echo "begin copy sql "
cp ../sql/ry_20250523.sql ./mysql/db
-cp ../sql/ry_config_20250902.sql ./mysql/db
+cp ../sql/ry_config_20260311.sql ./mysql/db
# copy html
echo "begin copy html "
diff --git a/pom.xml b/pom.xml
index 229a916d6..e4f90166e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,43 +16,30 @@
3.6.7
UTF-8
UTF-8
- 1.8
- 2.7.18
- 2021.0.9
- 2021.0.6.1
- 2.7.16
- 1.27.2
+ 17
+ 4.0.3
+ 2025.1.0
+ 2025.1.0.0
+ 4.0.2
+ 4.0.1
2.3.3
- 2.0.0
- 1.2.27
- 4.3.1
+ 2.1.0
+ 1.2.28
+ 4.5.0
2.21.0
2.3
2.0.61
0.9.1
8.2.2
4.1.2
- 1.6.9
- 2.14.4
-
- 9.0.112
- 1.2.13
- 5.3.39
+ 3.0.2
+ 2.14.5
-
-
- org.springframework
- spring-framework-bom
- ${spring-framework.version}
- pom
- import
-
-
org.springframework.cloud
@@ -80,49 +67,10 @@
import
-
-
- ch.qos.logback
- logback-core
- ${logback.version}
-
-
-
- ch.qos.logback
- logback-classic
- ${logback.version}
-
-
-
-
- org.apache.tomcat.embed
- tomcat-embed-core
- ${tomcat.version}
-
-
-
- org.apache.tomcat.embed
- tomcat-embed-el
- ${tomcat.version}
-
-
-
- org.apache.tomcat.embed
- tomcat-embed-websocket
- ${tomcat.version}
-
-
-
-
- com.github.tobato
- fastdfs-client
- ${tobato.version}
-
-
org.springdoc
- springdoc-openapi-ui
+ springdoc-openapi-starter-webmvc-ui
${springdoc.version}
@@ -138,6 +86,18 @@
com.github.pagehelper
pagehelper-spring-boot-starter
${pagehelper.boot.version}
+
+
+ mybatis-spring
+ org.mybatis
+
+
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ ${mybatis-spring-boot.version}
@@ -278,7 +238,9 @@
org.apache.maven.plugins
maven-compiler-plugin
+ 3.11.0
+ true
${java.version}
${java.version}
${project.build.sourceEncoding}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java
index 0290a0afd..043dfefcf 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java
@@ -2,10 +2,10 @@ package com.ruoyi.system.api.domain;
import java.util.ArrayList;
import java.util.List;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.web.domain.BaseEntity;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java
index 014a6915b..1f88597aa 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java
@@ -1,7 +1,7 @@
package com.ruoyi.system.api.domain;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java
index 4a558745f..94d90c3f9 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java
@@ -1,8 +1,8 @@
package com.ruoyi.system.api.domain;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
index f224b4222..34d099075 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
@@ -1,9 +1,9 @@
package com.ruoyi.system.api.domain;
import java.util.Set;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
index 02e3b0050..f7ce207fd 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -2,7 +2,7 @@ package com.ruoyi.system.api.domain;
import java.util.Date;
import java.util.List;
-import javax.validation.constraints.*;
+import jakarta.validation.constraints.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index 0caca09aa..68647d558 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -37,7 +37,7 @@
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter-webmvc
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
index 00a499dfd..5fa9ed918 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
@@ -2,7 +2,7 @@ package com.ruoyi.auth;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
import com.ruoyi.common.security.annotation.EnableRyFeignClients;
/**
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index 3b93514ed..c21dee562 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -1,6 +1,6 @@
package com.ruoyi.auth.controller;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml
index f456b03c0..27b44beb5 100644
--- a/ruoyi-auth/src/main/resources/bootstrap.yml
+++ b/ruoyi-auth/src/main/resources/bootstrap.yml
@@ -18,8 +18,9 @@ spring:
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
- # 配置文件格式
- file-extension: yml
- # 共享配置
- shared-configs:
- - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+ config:
+ # 配置文件格式
+ file-extension: yml
+ import:
+ - nacos:application-${spring.profiles.active}.${spring.config.file-extension}
+ - nacos:${spring.application.name}-${spring.profiles.active}.${spring.config.file-extension}
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index 7809e0454..c7b3c23e9 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -53,12 +53,24 @@
pagehelper-spring-boot-starter
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+
+
org.springframework.boot
spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-aspectj
+
+
com.fasterxml.jackson.core
@@ -81,6 +93,7 @@
javax.xml.bind
jaxb-api
+ 2.3.1
@@ -103,8 +116,8 @@
- javax.servlet
- javax.servlet-api
+ jakarta.servlet
+ jakarta.servlet-api
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java
index ee44abb3a..d3e1e1fbc 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java
@@ -51,7 +51,8 @@ public @interface Excel
/**
* BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
*/
- public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
+ @SuppressWarnings("deprecation")
+ public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
/**
* 导出时在excel中每个列的高度
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
index ba680b2cb..f16c3eda4 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
@@ -16,6 +16,7 @@ import org.apache.commons.lang3.time.DateFormatUtils;
*
* @author ruoyi
*/
+@SuppressWarnings("deprecation")
public class DateUtils extends org.apache.commons.lang3.time.DateUtils
{
public static String YYYY = "yyyy";
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
index cda371695..377d46587 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
@@ -8,10 +8,10 @@ import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
index a27ab625f..152fdbf96 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
@@ -1,8 +1,12 @@
package com.ruoyi.common.core.utils;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import org.apache.commons.lang3.Strings;
import org.springframework.util.AntPathMatcher;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.text.StrFormatter;
@@ -12,6 +16,7 @@ import com.ruoyi.common.core.text.StrFormatter;
*
* @author ruoyi
*/
+@SuppressWarnings("deprecation")
public class StringUtils extends org.apache.commons.lang3.StringUtils
{
/** 空字符串 */
@@ -366,12 +371,87 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
return StringUtils.startsWithAny(link, Constants.HTTP, Constants.HTTPS);
}
+ /**
+ * 字符串转set
+ *
+ * @param str 字符串
+ * @param sep 分隔符
+ * @return set集合
+ */
+ public static final Set str2Set(String str, String sep)
+ {
+ return new HashSet(str2List(str, sep, true, false));
+ }
+
+ /**
+ * 字符串转list
+ *
+ * @param str 字符串
+ * @param sep 分隔符
+ * @return list集合
+ */
+ public static final List str2List(String str, String sep)
+ {
+ return str2List(str, sep, true, false);
+ }
+
+ /**
+ * 字符串转list
+ *
+ * @param str 字符串
+ * @param sep 分隔符
+ * @param filterBlank 过滤纯空白
+ * @param trim 去掉首尾空白
+ * @return list集合
+ */
+ public static final List str2List(String str, String sep, boolean filterBlank, boolean trim)
+ {
+ List list = new ArrayList();
+ if (StringUtils.isEmpty(str))
+ {
+ return list;
+ }
+
+ // 过滤空白字符串
+ if (filterBlank && StringUtils.isBlank(str))
+ {
+ return list;
+ }
+ String[] split = str.split(sep);
+ for (String string : split)
+ {
+ if (filterBlank && StringUtils.isBlank(string))
+ {
+ continue;
+ }
+ if (trim)
+ {
+ string = string.trim();
+ }
+ list.add(string);
+ }
+
+ return list;
+ }
+
+ /**
+ * 检查子字符串是否存在
+ *
+ * @param seq 检查的字符串
+ * @param searchSeq 查找的字符串
+ * @return 结果
+ */
+ public static boolean contains(final CharSequence seq, final CharSequence searchSeq)
+ {
+ return Strings.CS.contains(seq, searchSeq);
+ }
+
/**
* 判断给定的collection列表中是否包含数组array 判断给定的数组array中是否包含给定的元素value
*
* @param collection 给定的集合
* @param array 给定的数组
- * @return boolean 结果
+ * @return 结果
*/
public static boolean containsAny(Collection collection, String... array)
{
@@ -392,6 +472,198 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
}
}
+ /**
+ * 判断是否包含给定数组中的任意一个。
+ *
+ * @param cs 要判断的字符串
+ * @param searchCharSequences 要判断的数组
+ * @return 结果
+ */
+ public static boolean containsAny(final CharSequence cs, final CharSequence... searchCharSequences)
+ {
+ return Strings.CS.containsAny(cs, searchCharSequences);
+ }
+
+ /**
+ * 查找指定字符串是否包含指定字符串列表中的任意一个字符串同时串忽略大小写
+ *
+ * @param cs 指定字符串
+ * @param searchCharSequences 需要检查的字符串数组
+ * @return 是否包含任意一个字符串
+ */
+ public static boolean containsAnyIgnoreCase(CharSequence cs, CharSequence... searchCharSequences)
+ {
+ if (isEmpty(cs) || isEmpty(searchCharSequences))
+ {
+ return false;
+ }
+ for (CharSequence testStr : searchCharSequences)
+ {
+ if (containsIgnoreCase(cs, testStr))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 检查是否包含要搜索的字符串,忽略大小写
+ *
+ * @param str 要检查的字符串
+ * @param searchStr 要查找的字符串
+ * @return 如果包含要搜索的字符串(忽略大小写)则返回true,如果不包含或返回false
+ */
+ public static boolean containsIgnoreCase(final CharSequence str, final CharSequence searchStr)
+ {
+ return Strings.CI.contains(str, searchStr);
+ }
+
+ /**
+ * 检查字符串是否以任意前缀开始
+ *
+ * @param sequence 要检查的字符串
+ * @param searchStrings 区分大小写的字符串前缀数组
+ * @return 结果
+ */
+ public static boolean startsWithAny(final CharSequence sequence, final CharSequence... searchStrings)
+ {
+ return Strings.CS.startsWithAny(sequence, searchStrings);
+ }
+
+ /**
+ * 不区分大小写地检查一个字符串是否以指定前缀开头。
+ *
+ * @param str 待检查的字符串
+ * @param 要查找的前缀
+ * @return 结果
+ */
+ public static boolean startsWithIgnoreCase(final CharSequence str, final CharSequence prefix)
+ {
+ return Strings.CI.startsWith(str, prefix);
+ }
+
+ /**
+ * 比较两个字符串是否相同
+ *
+ * @param cs1 第一个字符串
+ * @param cs2 第二个字符串
+ * @return 如果给定对象与字符串相等,则返回 true;否则返回 false
+ */
+ public static boolean equals(final CharSequence cs1, final CharSequence cs2)
+ {
+ return Strings.CS.equals(cs1, cs2);
+ }
+
+ /**
+ * 替换字符串中所有匹配的字符
+ *
+ * @param text 要搜索和替换的文本
+ * @param searchString 要搜索的字符串
+ * @param replacement 用于替换的字符串
+ * @return 处理完所有替换后的文本
+ */
+ public static String replace(final String text, final String searchString, final String replacement)
+ {
+ return Strings.CS.replace(text, searchString, replacement);
+ }
+
+ /**
+ * 仅当子字符串位于源字符串末尾时才将其移除,否则返回源字符串。
+ * @param str 要搜索的源字符串
+ * @param remove 要搜索并移除的字符串
+ * @return 如果找到并移除了字符串,则返回移除后的子字符串
+ */
+ public static String removeEnd(final String str, final String remove)
+ {
+ return Strings.CS.removeEnd(str, remove);
+ }
+
+ /**
+ * 查找字符串首次出现位置的索引
+ *
+ * @param seq 要检查的字符串
+ * @param searchSeq 要查找的字符串
+ * @return 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1
+ */
+ public static int indexOf(final CharSequence seq, final CharSequence searchSeq)
+ {
+ return Strings.CS.indexOf(seq, searchSeq);
+ }
+
+ /**
+ * 检查字符串是否以指定的后缀结尾
+ *
+ * @param str 要检查的字符
+ * @param suffix 要检查的后缀
+ * @return 若参数与该字符串末尾相符 true;否则 false
+ */
+ public static boolean endsWith(final CharSequence str, final CharSequence suffix)
+ {
+ return Strings.CS.endsWith(str, suffix);
+ }
+
+ /**
+ * 将给定的字符串与数组进行比较
+ *
+ * @param string 要比较的字符串
+ * @param searchStrings 字符串数组
+ * @return 如果字符串等于(区分大小写){@code searchStrings}中的任意其他元素,则返回true;如果{@code searchStrings}为null或不包含匹配项,则返回false
+ */
+ public static boolean equalsAny(final CharSequence string, final CharSequence... searchStrings)
+ {
+ return Strings.CS.equalsAny(string, searchStrings);
+ }
+
+ /**
+ * 检查一个字符串是否以任意提供的区分大小写的后缀结尾。
+ *
+ * @param sequence 要检查的字符串
+ * @param searchStrings 要查找的区分大小写的字符串数组
+ * @return 如果输入参数{@code sequence}为null且未提供任何{@code searchStrings},或者输入{@code sequence}以任意提供的区分大小写的{@code searchStrings}结尾,则返回{@code true}。
+ */
+ public static boolean endsWithAny(final CharSequence sequence, final CharSequence... searchStrings)
+ {
+ return Strings.CS.endsWithAny(sequence, searchStrings);
+ }
+
+ /**
+ * 不区分大小写地检查字符序列是否以指定的后缀结尾
+ *
+ * @param str 要检查的字符序列
+ * @param suffix 要查找的后缀
+ * @return 如果字符序列以该后缀结尾(不区分大小写),或两者均为{@code null},则返回{@code true}
+ */
+ public static boolean endsWithIgnoreCase(final CharSequence str, final CharSequence suffix)
+ {
+ return Strings.CI.endsWith(str, suffix);
+ }
+
+ /**
+ * 指定范围内查找字符串,忽略大小写
+ *
+ * @param str 要检查的字符串
+ * @param searchStr 要查找的字符串
+ * @return 搜索字符串的第一个索引,如果未找到匹配项则返回 -1
+ */
+ public static int indexOfIgnoreCase(final CharSequence str, final CharSequence searchStr)
+ {
+ return Strings.CI.indexOf(str, searchStr);
+ }
+
+ /**
+ * Compares given {@code string} to a CharSequences vararg of {@code searchStrings},
+ * returning {@code true} if the {@code string} is equal to any of the {@code searchStrings}, ignoring case.
+ *
+ * @param string to compare, may be {@code null}.
+ * @param searchStrings a vararg of strings, may be {@code null}.
+ * @return {@code true} if the string is equal (case-insensitive) to any other element of {@code searchStrings};
+ */
+ public static boolean equalsAnyIgnoreCase(final CharSequence string, final CharSequence... searchStrings)
+ {
+ return Strings.CI.equalsAny(string, searchStrings);
+ }
+
/**
* 驼峰转下划线命名
*/
@@ -463,6 +735,22 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
return false;
}
+ /**
+ * 删除最后一个字符串
+ *
+ * @param str 输入字符串
+ * @param spit 以什么类型结尾的
+ * @return 截取后的字符串
+ */
+ public static String lastStringDel(String str, String spit)
+ {
+ if (!StringUtils.isEmpty(str) && str.endsWith(spit))
+ {
+ return str.subSequence(0, str.length() - 1).toString();
+ }
+ return str;
+ }
+
/**
* 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
*
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java
index 758772620..3e94f8432 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java
@@ -1,9 +1,9 @@
package com.ruoyi.common.core.utils.bean;
import java.util.Set;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
-import javax.validation.Validator;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
+import jakarta.validation.Validator;
/**
* bean对象属性验证
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
index aabb4fb73..fab668a4d 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
@@ -8,8 +8,8 @@ import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
import com.ruoyi.common.core.utils.StringUtils;
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
index 43366ec71..878ed91c1 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
@@ -2,7 +2,7 @@ package com.ruoyi.common.core.utils.ip;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import com.ruoyi.common.core.utils.ServletUtils;
import com.ruoyi.common.core.utils.StringUtils;
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
index 948935157..500b60e9e 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
@@ -19,7 +19,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.RegExUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
@@ -387,7 +387,7 @@ public class ExcelUtil
Object val = this.getCellValue(row, entry.getKey());
// 如果不存在实例则新建.
- entity = (entity == null ? clazz.newInstance() : entity);
+ entity = (entity == null ? clazz.getDeclaredConstructor().newInstance() : entity);
// 从map中得到对应列的field.
Field field = (Field) entry.getValue()[0];
Excel attr = (Excel) entry.getValue()[1];
@@ -980,6 +980,7 @@ public class ExcelUtil
/**
* 添加单元格
*/
+ @SuppressWarnings("deprecation")
public Cell addCell(Excel attr, Row row, T vo, Field field, int column)
{
Cell cell = null;
@@ -1252,7 +1253,7 @@ public class ExcelUtil
{
try
{
- Object instance = excel.handler().newInstance();
+ Object instance = excel.handler().getDeclaredConstructor().newInstance();
Method formatMethod = excel.handler().getMethod("format", new Class[] { Object.class, String[].class, Cell.class, Workbook.class });
value = formatMethod.invoke(instance, value, excel.args(), cell, this.wb);
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/reflect/ReflectUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/reflect/ReflectUtils.java
index 3d8382b2e..82e25e9b8 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/reflect/ReflectUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/reflect/ReflectUtils.java
@@ -7,13 +7,13 @@ import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Date;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.apache.poi.ss.usermodel.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.StringUtils;
/**
* 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数.
@@ -310,7 +310,8 @@ public class ReflectUtils
/**
* 改变private/protected的方法为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。
*/
- public static void makeAccessible(Method method)
+ @SuppressWarnings("deprecation")
+ public static void makeAccessible(Method method)
{
if ((!Modifier.isPublic(method.getModifiers()) || !Modifier.isPublic(method.getDeclaringClass().getModifiers()))
&& !method.isAccessible())
@@ -322,7 +323,8 @@ public class ReflectUtils
/**
* 改变private/protected的成员变量为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。
*/
- public static void makeAccessible(Field field)
+ @SuppressWarnings("deprecation")
+ public static void makeAccessible(Field field)
{
if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers())
|| Modifier.isFinal(field.getModifiers())) && !field.isAccessible())
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/Xss.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/Xss.java
index 0a94d6b4b..081a5a7eb 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/Xss.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/Xss.java
@@ -1,7 +1,7 @@
package com.ruoyi.common.core.xss;
-import javax.validation.Constraint;
-import javax.validation.Payload;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/XssValidator.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/XssValidator.java
index 0acf38697..b64c20933 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/XssValidator.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/XssValidator.java
@@ -2,8 +2,8 @@ package com.ruoyi.common.core.xss;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
import com.ruoyi.common.core.utils.StringUtils;
/**
diff --git a/ruoyi-common/ruoyi-common-datasource/pom.xml b/ruoyi-common/ruoyi-common-datasource/pom.xml
index 7edcb15b6..b1dbd965c 100644
--- a/ruoyi-common/ruoyi-common-datasource/pom.xml
+++ b/ruoyi-common/ruoyi-common-datasource/pom.xml
@@ -20,15 +20,21 @@
com.alibaba
- druid-spring-boot-starter
+ druid-spring-boot-4-starter
${druid.version}
com.baomidou
- dynamic-datasource-spring-boot-starter
+ dynamic-datasource-spring-boot4-starter
${dynamic-ds.version}
+
+
+ mybatis-spring
+ org.mybatis
+
+
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java
index 6ca5ddcaa..e09c4c10d 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java
@@ -2,8 +2,8 @@ package com.ruoyi.common.log.aspect;
import java.util.Collection;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
index 7363c8a42..3d1a57ab6 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
@@ -1,11 +1,10 @@
package com.ruoyi.common.redis.configure;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@@ -15,14 +14,15 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
*
* @author ruoyi
*/
+@SuppressWarnings("deprecation")
@Configuration
@EnableCaching
-@AutoConfigureBefore(RedisAutoConfiguration.class)
public class RedisConfig extends CachingConfigurerSupport
{
- @Bean
+ @Bean(name = "ruoyiRedisTemplate")
+ @Primary
@SuppressWarnings(value = { "unchecked", "rawtypes" })
- public RedisTemplate