diff --git a/321/.keep b/321/.keep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Strategy_BbiBiasTradeNumStd.py b/Strategy_BbiBiasTradeNumStd.py
new file mode 100644
index 0000000000000000000000000000000000000000..6e7b3b27550de8cedfef1605279b174c60af0c60
--- /dev/null
+++ b/Strategy_BbiBiasTradeNumStd.py
@@ -0,0 +1,162 @@
+# -*- coding: utf-8 -*-
+"""
+中性策略框架 | 邢不行 | 2024分享会
+author: 邢不行
+微信: xbx6660
+"""
+import os
+
+# 取出策略文件名中_后的部分
+stg_name = os.path.basename(__file__).split('.')[0].split('_')[1]
+
+# 持仓周期。目前回测支持日线级别、小时级别。例:1H,6H,3D,7D......
+# 当持仓周期为D时,选币指标也是按照每天一根K线进行计算。
+# 当持仓周期为H时,选币指标也是按照每小时一根K线进行计算。
+hold_period = '1H'.replace('h', 'H').replace('d', 'D')
+# 配置offset
+offset = 0
+# 是否使用现货
+if_use_spot = True # True:使用现货。False:不使用现货,只使用合约。
+
+# 多头选币数量。1 表示做多一个币; 0.1 表示做多10%的币
+long_select_coin_num = 0.1
+# 空头选币数量。1 表示做空一个币; 0.1 表示做空10%的币
+# short_select_coin_num = 0.1
+short_select_coin_num = 'long_nums' # long_nums意为着空头数量和多头数量保持一致。最多为所有合约的数量。注意:多头为0的时候,不能配置'long_nums'
+
+# 多头的选币因子列名。
+long_factor = '因子' # 因子:表示使用复合因子,默认是 factor_list 里面的因子组合。需要修改 calc_factor 函数配合使用
+# 空头的选币因子列名。多头和空头可以使用不同的选币因子
+short_factor = '因子'
+
+# 选币因子信息列表,用于`2_选币_单offset.py`,`3_计算多offset资金曲线.py`共用计算资金曲线
+factor_list = [
+ ('BbiBiasTradeNumStd', True, 336, 1) # 因子名(和factors文件中相同),排序方式,参数,权重。
+]
+
+# 确认过滤因子及其参数,用于`2_选币_单offset.py`进行过滤
+filter_list = [
+ ('Rsi', 336),
+]
+
+
+def after_merge_index(df, symbol, factor_dict, data_dict):
+ """
+ 合并指数数据之后的处理流程,非必要。
+ 本函数住要的作用如下:
+ 1、指定K线上不常用的数据在resample时的规则,例如:'taker_buy_quote_asset_volume': 'sum'
+ 2、合并外部数据,并指定外部数据在resample时的规则。例如:(伪代码)
+ chain_df = pd.read_csv(chain_path + symbol) # 读取指定币种链上数据
+ df = pd.merge(df,chain_df,'left','candle_begin_time') # 将链上数据合并到日线上
+ factor_dict['gas_total'] = 'sum' # 链上的gas_total字段,在小时数据转日线数据时用sum处理
+ data_dict['gas_total'] = 'sum' # 链上的gas_total字段,在最后一次resample中的处理规则
+ :param df:
+ :param symbol:
+ :param factor_dict: 小时级别resample到日线级别时使用(计算日线级别因子时需要,计算小时级别因子时不需要)
+ :param data_dict: resample生成最终数据时使用
+ :return:
+ """
+
+ # 专门处理转日线是的resample规则
+ factor_dict['taker_buy_quote_asset_volume'] = 'sum' # 计算日线级别因子前先resample到日线数据
+ factor_dict['trade_num'] = 'sum'
+
+ return df, factor_dict, data_dict
+
+
+def after_resample(df, symbol):
+ """
+ 数据重采样之后的处理流程,非必要
+ :param df: 传入的数据
+ :param symbol: 币种名称
+ :return:
+ """
+
+ return df
+
+
+# =====================以上是数据整理部分封装转的策略代码==========================
+# ============================================================================
+# ============================================================================
+# ============================================================================
+# ============================================================================
+# =======================以下是选币函数封装的策略代码=============================
+
+
+def calc_factor(df, **kwargs):
+ """
+ 计算因子
+
+ 多空使用相同的两个因子
+
+ 1。多空相同的单因子选币,不需要编写代码
+
+ 2。多空相同的复合因子,本案例代码不需要修改,直接使用即可。《本案例代码就是多空相同的复合因子选币》
+
+ 多空使用不同的两个因子
+
+ 1。多空不同的单因子选币,不需要编写代码
+
+ 2。多空分离选币,需要根据具体因子具体改写
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!这里改写需要一定的代码能力!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 多空存在某一方是复合因子,另一方是单因子,则只需要计算一个复合因子即可。代码可以参考下方案例代码
+
+ 如果多空都是复合因子,多空需要分别是计算复合因子。
+
+ :param df: 原数据
+ :return:
+ """
+ # 接受外部回测的因子列表,这里主要是去适配`4_遍历选币参数.py`
+ external_list = kwargs.get('external_list', [])
+ if external_list: # 如果存在外部回测因子列表,则使用外部因子列表
+ _factor_list = external_list
+ else: # 如过不存在外部回测因子列表,默认使用当前策略的因子列表
+ _factor_list = factor_list
+
+ # 多空相同的复合因子计算
+ if long_factor == short_factor == '因子':
+ df[long_factor] = 0
+ for factor_name, if_reverse, parameter_list, weight in _factor_list:
+ col_name = f'{factor_name}_{str(parameter_list)}'
+ # 计算单个因子的排名
+ df[col_name + '_rank'] = df.groupby('candle_begin_time')[col_name].rank(ascending=if_reverse, method='min')
+ # 将因子按照权重累加
+ df[long_factor] += (df[col_name + '_rank'] * weight)
+
+ return df
+
+
+def before_filter(df, **kwargs):
+ """
+ 前置过滤函数
+ 自定义过滤规则,可以对多空分别自定义过滤规则
+
+ :param df: 原始数据
+ :return: 过滤后的数据
+ """
+ # 接受外部回测的因子列表,这里主要是去适配`5_查看历年参数平原.py`
+ ex_filter_list = kwargs.get('ex_filter_list', [])
+ if ex_filter_list: # 如果存在外部回测因子列表,则使用外部因子列表
+ _filter_list = ex_filter_list
+ else: # 如过不存在外部回测因子列表,默认使用当前策略的因子列表
+ _filter_list = filter_list
+
+ df_long = df.copy()
+ df_short = df.copy()
+
+ # 如果过滤列表中只有一个因子
+ if len(_filter_list) == 1:
+ filter_factor = _filter_list[0][0] + '_' + str(_filter_list[0][1])
+ # 配置了过滤因子信息,则进行过滤操作
+ df_long['filter_rank'] = df_long.groupby('candle_begin_time')[filter_factor].rank(ascending=True, pct=True)
+ df_long = df_long[(df_long['filter_rank'] < 0.8)]
+
+ df_short['filter_rank'] = df_short.groupby('candle_begin_time')[filter_factor].rank(ascending=True, pct=True)
+ df_short = df_short[(df_short['filter_rank'] < 0.8)]
+ else: # 如果使用多个因子进行过滤,在这里进行填写
+
+ pass
+
+ return df_long, df_short
diff --git a/heelo.js b/heelo.js
new file mode 100644
index 0000000000000000000000000000000000000000..abc626739e206a2e67c32603392a47489f07d161
--- /dev/null
+++ b/heelo.js
@@ -0,0 +1 @@
+fffff
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index e0e8f146090a8ac42a6f700a73125794bef924c0..19ccb355684eac5520ef44d38a8c0325bae8d863 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,41 +15,32 @@
4.7.9
UTF-8
UTF-8
- 1.8
+ 17
3.1.1
- 1.13.0
- 5.3.33
+ 2.0.1
+ 3.0.3
2.1.0
1.2.23
1.21
2.3.3
- 3.0.0
- 1.4.7
+ 2.1.0
1.2.83
6.6.1
2.16.1
4.1.2
2.3
+ 2.5.0
-
-
- org.springframework
- spring-framework-bom
- ${spring-framework.version}
- pom
- import
-
-
org.springframework.boot
spring-boot-dependencies
- 2.5.15
+ 3.3.0
pom
import
@@ -57,7 +48,7 @@
com.alibaba
- druid-spring-boot-starter
+ druid-spring-boot-3-starter
${druid.version}
@@ -72,6 +63,14 @@
org.apache.shiro
shiro-core
+ jakarta
+ ${shiro.version}
+
+
+
+ org.apache.shiro
+ shiro-web
+ jakarta
${shiro.version}
@@ -79,7 +78,15 @@
org.apache.shiro
shiro-spring
+ jakarta
${shiro.version}
+
+
+
+ org.apache.shiro
+ shiro-web
+
+
@@ -96,6 +103,25 @@
${thymeleaf.extras.shiro.version}
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ ${mybatis-spring-boot.version}
+
+
+
+ com.mysql
+ mysql-connector-j
+ 8.1.0
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ 6.0.0
+
+
eu.bitwalker
@@ -117,17 +143,11 @@
${oshi.version}
-
+
- io.springfox
- springfox-boot-starter
- ${swagger.version}
-
-
- io.swagger
- swagger-models
-
-
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
@@ -216,13 +236,19 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.1
+ 3.13.0
+ true
${java.version}
${java.version}
${project.build.sourceEncoding}
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 3.3.0
+
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 7eaf080e823e14bf0c7e8f45bd67c65c61a0eb9f..53df70040de6684ad764f66e5029c71cff07864e 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -30,23 +30,16 @@
true
-
+
- io.springfox
- springfox-boot-starter
-
-
-
-
- io.swagger
- swagger-models
- 1.6.2
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
- mysql
- mysql-connector-java
+ com.mysql
+ mysql-connector-j
@@ -89,7 +82,7 @@
org.apache.maven.plugins
maven-war-plugin
- 3.0.0
+ 3.1.0
false
${project.artifactId}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
index c2db93ac93815f3f94b9ac2e7d6b89ef94948e96..08816ab5a4a2fce35e471f25b8bba93f63d7ecfd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -2,8 +2,8 @@ package com.ruoyi.web.controller.common;
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java
index 230cc3b295949936330f51ccb09b097ef74cd8fb..fbc2e9b9a9cb913affab035312bd249f14275d71 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java
@@ -2,12 +2,12 @@ package com.ruoyi.web.controller.system;
import java.awt.image.BufferedImage;
import java.io.IOException;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import javax.imageio.ImageIO;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
index 10da47fb4c175dac8b4b78d219c58ac3d4d2de14..d6901f9f1d32f15f02b9b164477e4f7d525bbe09 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
@@ -2,8 +2,8 @@ package com.ruoyi.web.controller.system;
import java.util.Date;
import java.util.List;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 55aecae62cb526bbfed22fdc8c91a2b95cca7fa9..8a41df329af7523f5a429d92681288e29ddb154e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -1,7 +1,7 @@
package com.ruoyi.web.controller.system;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
index c55f97496a7747a8672c28d9fc3aae4d13318b0f..b56a09766d00530e48b2fb156c201824d699ee64 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
@@ -15,19 +15,16 @@ import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
/**
* swagger 用户测试方法
- *
+ *
* @author ruoyi
*/
-@Api("用户信息管理")
+@Tag(name = "用户信息管理")
@RestController
@RequestMapping("/test/user")
public class TestController extends BaseController
@@ -37,19 +34,19 @@ public class TestController extends BaseController
users.put(1, new UserEntity(1, "admin", "admin123", "15888888888"));
users.put(2, new UserEntity(2, "ry", "admin123", "15666666666"));
}
-
- @ApiOperation("获取用户列表")
+
+ @Operation(summary = "获取用户列表")
@GetMapping("/list")
public R> userList()
{
List userList = new ArrayList(users.values());
return R.ok(userList);
}
-
- @ApiOperation("获取用户详细")
- @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
+
+ @Operation(summary = "获取用户详细")
@GetMapping("/{userId}")
- public R getUser(@PathVariable Integer userId)
+ public R getUser(@PathVariable(name = "userId")
+ Integer userId)
{
if (!users.isEmpty() && users.containsKey(userId))
{
@@ -60,14 +57,8 @@ public class TestController extends BaseController
return R.fail("用户不存在");
}
}
-
- @ApiOperation("新增用户")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Integer", dataTypeClass = Integer.class),
- @ApiImplicitParam(name = "username", value = "用户名称", dataType = "String", dataTypeClass = String.class),
- @ApiImplicitParam(name = "password", value = "用户密码", dataType = "String", dataTypeClass = String.class),
- @ApiImplicitParam(name = "mobile", value = "用户手机", dataType = "String", dataTypeClass = String.class)
- })
+
+ @Operation(summary = "新增用户")
@PostMapping("/save")
public R save(UserEntity user)
{
@@ -78,10 +69,11 @@ public class TestController extends BaseController
users.put(user.getUserId(), user);
return R.ok();
}
-
- @ApiOperation("更新用户")
+
+ @Operation(summary = "更新用户")
@PutMapping("/update")
- public R update(@RequestBody UserEntity user)
+ public R update(@RequestBody
+ UserEntity user)
{
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
{
@@ -95,11 +87,11 @@ public class TestController extends BaseController
users.put(user.getUserId(), user);
return R.ok();
}
-
- @ApiOperation("删除用户信息")
- @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
+
+ @Operation(summary = "删除用户信息")
@DeleteMapping("/{userId}")
- public R delete(@PathVariable Integer userId)
+ public R delete(@PathVariable(name = "userId")
+ Integer userId)
{
if (!users.isEmpty() && users.containsKey(userId))
{
@@ -113,26 +105,26 @@ public class TestController extends BaseController
}
}
-@ApiModel(value = "UserEntity", description = "用户实体")
+@Schema(description = "用户实体")
class UserEntity
{
- @ApiModelProperty("用户ID")
+ @Schema(title = "用户ID")
private Integer userId;
-
- @ApiModelProperty("用户名称")
+
+ @Schema(title = "用户名称")
private String username;
-
- @ApiModelProperty("用户密码")
+
+ @Schema(title = "用户密码")
private String password;
-
- @ApiModelProperty("用户手机")
+
+ @Schema(title = "用户手机")
private String mobile;
-
+
public UserEntity()
{
-
+
}
-
+
public UserEntity(Integer userId, String username, String password, String mobile)
{
this.userId = userId;
@@ -140,42 +132,42 @@ class UserEntity
this.password = password;
this.mobile = mobile;
}
-
+
public Integer getUserId()
{
return userId;
}
-
+
public void setUserId(Integer userId)
{
this.userId = userId;
}
-
+
public String getUsername()
{
return username;
}
-
+
public void setUsername(String username)
{
this.username = username;
}
-
+
public String getPassword()
{
return password;
}
-
+
public void setPassword(String password)
{
this.password = password;
}
-
+
public String getMobile()
{
return mobile;
}
-
+
public void setMobile(String mobile)
{
this.mobile = mobile;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
index 0cfbfbadb26e07f81784589d4a2036cc9dd2f454..8d2de2f7a6ab3dabbdb938bb7b7feb878ac6d2f7 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
@@ -1,17 +1,15 @@
package com.ruoyi.web.core.config;
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ruoyi.common.config.RuoYiConfig;
-import io.swagger.annotations.ApiOperation;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.security.SecurityRequirement;
+import io.swagger.v3.oas.models.security.SecurityScheme;
/**
* Swagger2的接口配置
@@ -21,47 +19,47 @@ import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class SwaggerConfig
{
- /** 是否开启swagger */
- @Value("${swagger.enabled}")
- private boolean enabled;
+ /** 系统基础配置 */
+ @Autowired
+ private RuoYiConfig ruoyiConfig;
/**
- * 创建API
+ * 自定义的 OpenAPI 对象
*/
@Bean
- public Docket createRestApi()
+ public OpenAPI customOpenApi()
{
- return new Docket(DocumentationType.OAS_30)
- // 是否启用Swagger
- .enable(enabled)
- // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
- .apiInfo(apiInfo())
- // 设置哪些接口暴露给Swagger展示
- .select()
- // 扫描所有有注解的api,用这种方式更灵活
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
- // 扫描指定包中的swagger注解
- //.apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger"))
- // 扫描所有 .apis(RequestHandlerSelectors.any())
- .paths(PathSelectors.any())
- .build();
+ return new OpenAPI().components(new Components()
+ // 设置认证的请求头
+ .addSecuritySchemes("apikey", securityScheme()))
+ .addSecurityItem(new SecurityRequirement().addList("apikey"))
+ .info(getApiInfo());
}
-
+
+ @Bean
+ public SecurityScheme securityScheme()
+ {
+ return new SecurityScheme()
+ .type(SecurityScheme.Type.APIKEY)
+ .name("Authorization")
+ .in(SecurityScheme.In.HEADER)
+ .scheme("Bearer");
+ }
+
/**
* 添加摘要信息
*/
- private ApiInfo apiInfo()
+ @SuppressWarnings("static-access")
+ public Info getApiInfo()
{
- // 用ApiInfoBuilder进行定制
- return new ApiInfoBuilder()
- // 设置标题
- .title("标题:若依管理系统_接口文档")
- // 描述
- .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
- // 作者信息
- .contact(new Contact(RuoYiConfig.getName(), null, null))
- // 版本
- .version("版本号:" + RuoYiConfig.getVersion())
- .build();
+ return new Info()
+ // 设置标题
+ .title("标题:若依管理系统_接口文档")
+ // 描述
+ .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
+ // 作者信息
+ .contact(new Contact().name(ruoyiConfig.getName()))
+ // 版本
+ .version("版本号:" + ruoyiConfig.getVersion());
}
}
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index d0abcabbed618edf62201803efa38f2c9eb5bc30..e9a01b1d7d906da75b7d299f43433378ed935523 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -127,6 +127,20 @@ shiro:
# 是否开启记住我
enabled: true
+# Springdoc配置
+springdoc:
+ api-docs:
+ path: /v3/api-docs
+ swagger-ui:
+ enabled: true
+ path: /swagger-ui.html
+ tags-sorter: alpha
+ group-configs:
+ - group: 'default'
+ display-name: '测试模块'
+ paths-to-match: '/**'
+ packages-to-scan: com.ruoyi.web.controller.tool
+
# 防止XSS攻击
xss:
# 过滤开关
@@ -135,8 +149,3 @@ xss:
excludes: /system/notice/*
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
-
-# Swagger配置
-swagger:
- # 是否开启swagger
- enabled: true
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 3396af87f88af1b18a7ae8183e9192e4e8210cf9..02c5355a034b4f302f3c95d90cc36814cd6a41bf 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -33,6 +33,7 @@
org.apache.shiro
shiro-core
+ jakarta
@@ -91,8 +92,8 @@
- javax.servlet
- javax.servlet-api
+ jakarta.servlet
+ jakarta.servlet-api
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/ServerConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/ServerConfig.java
index ddb873097db2dfe31d798040de9e0988f4302416..776033421c8aef0c1bbbf062c15b188f67eb0b4d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/config/ServerConfig.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/ServerConfig.java
@@ -1,6 +1,6 @@
package com.ruoyi.common.config;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import com.ruoyi.common.utils.ServletUtils;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
index c2985040a4a6610698bcb3ee76fb51f5b27e0b41..0bdcb3a40eb4c23f90689bf0d0761e7479d76322 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
@@ -3,9 +3,9 @@ package com.ruoyi.common.core.controller;
import java.beans.PropertyEditorSupport;
import java.util.Date;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
index a3a25d09da987fc8d1ea5e1b4d50a105f85ebc6b..b2645ea0d5bc0b5272fd17b76649da566d7f44d9 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
@@ -1,9 +1,9 @@
package com.ruoyi.common.core.domain.entity;
-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.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
index 404c14bb10bdc87c6a6903b41697158111ff2553..1258e9d52e524cffba705bc08b504bf0c4dff807 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java
@@ -1,6 +1,6 @@
package com.ruoyi.common.core.domain.entity;
-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.annotation.Excel;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java
index 1ce61a824326f85de71f64602b8a4bd40416ee1f..477ad8e744c4c7c1da456e2ef2bbfde2fdd86cdf 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java
@@ -1,6 +1,6 @@
package com.ruoyi.common.core.domain.entity;
-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.annotation.Excel;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
index da1869a5c64ff4d63c1f7e8516bf40a8da5cb701..71035128e6cf1cf082a283352e875f6f39e12e3f 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
@@ -2,7 +2,7 @@ package com.ruoyi.common.core.domain.entity;
import java.util.List;
import java.util.ArrayList;
-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.domain.BaseEntity;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
index 03aa3b0ac08040397b6d0f65b271ef14cdeb5c39..4c7b9c939dda76acf3ab55a9958f701c4874542b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java
@@ -1,7 +1,7 @@
package com.ruoyi.common.core.domain.entity;
import java.util.Set;
-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.annotation.Excel;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index bbcce4b365a508fdd3963dd4010dbe89106bd3b6..f189d4692eee86ca322424d52567614cf77cc0f2 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -2,7 +2,7 @@ package com.ruoyi.common.core.domain.entity;
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.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CookieUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CookieUtils.java
index 13c1d5ed0eaf9da505cf7843d2228b9bc7239fa8..180bd0ce8a4981494112bf6942f48f61f2bcdaff 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CookieUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CookieUtils.java
@@ -3,9 +3,9 @@ package com.ruoyi.common.utils;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
* Cookie工具类
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/IpUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/IpUtils.java
index 1a3f210cdd68afaea141d811e8d10babd2c69cb3..1fa70d75f2ae55e3ac57488af8b23855d0163502 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/IpUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/IpUtils.java
@@ -2,7 +2,7 @@ package com.ruoyi.common.utils;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
* 获取IP方法
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java
index d5a357c53af5953eef0975a570133d2c1f779b5f..8359596a247e899bf9175a4210f9cef169fbe291 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java
@@ -3,7 +3,7 @@ package com.ruoyi.common.utils;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.shiro.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,10 +72,10 @@ public class LogUtils
{
String username = getUsername();
- Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
- String message = (String) request.getAttribute("javax.servlet.error.message");
- String uri = (String) request.getAttribute("javax.servlet.error.request_uri");
- Throwable t = (Throwable) request.getAttribute("javax.servlet.error.exception");
+ Integer statusCode = (Integer) request.getAttribute("jakarta.servlet.error.status_code");
+ String message = (String) request.getAttribute("jakarta.servlet.error.message");
+ String uri = (String) request.getAttribute("jakarta.servlet.error.request_uri");
+ Throwable t = (Throwable) request.getAttribute("jakarta.servlet.error.exception");
if (statusCode == null)
{
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/MapDataUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/MapDataUtil.java
index 327e54fd19a7cbb8aa65cb83ce1e3d1dac15e5e0..d521f9c6317508e7f37b7b141f330c3aff772b35 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/MapDataUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/MapDataUtil.java
@@ -4,7 +4,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
* Map通用处理方法
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java
index 6214f5643b59449e9cf56f711d9271cc87594bed..5bc1e3874af8062b985ed56e8288650d5c276388 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java
@@ -4,9 +4,9 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
index d9821e0ec8c65a8ffc36a9036e77c3a3613edc16..03e8972191ebd32e1bcdb2a693a1de1b0469aea5 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
@@ -1,9 +1,9 @@
package com.ruoyi.common.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/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
index 7d5aa6f893d524b9135963413bea210d342c86db..a4af6a066e76f353ace2eec12b8a9b773df71fab 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
@@ -9,8 +9,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.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index 49dea95e280498999ae76afd80cafa05e76ec7c5..6a90431ca11602945f8579bac98a47dac241ea2d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -23,7 +23,7 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
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;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java b/ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java
index 14e43dc556c576b3790d3ed9acecb8b03c9fb79f..93a3840a6c21a8a47632b925b996d602c170095c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java
@@ -1,7 +1,7 @@
package com.ruoyi.common.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/src/main/java/com/ruoyi/common/xss/XssFilter.java b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssFilter.java
index 145ae7aef8fed2f5615f0471fa99c77fed9fa746..5e072d71f0e447431cf028c3b1a88288a86f80e9 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssFilter.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssFilter.java
@@ -3,14 +3,14 @@ package com.ruoyi.common.xss;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.StringUtils;
/**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssHttpServletRequestWrapper.java b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssHttpServletRequestWrapper.java
index 516db0a907667ea08a52d691cfc88584a8e4a094..2976032717a4a85a75698652045fa85fdbece643 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssHttpServletRequestWrapper.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssHttpServletRequestWrapper.java
@@ -1,7 +1,7 @@
package com.ruoyi.common.xss;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
import com.ruoyi.common.utils.html.EscapeUtil;
/**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java
index b859428e8a9268ba853c57a3e4ecbc77195b5b32..585fa8ae290065a792b0535ac390d904da45351a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java
@@ -1,8 +1,8 @@
package com.ruoyi.common.xss;
import com.ruoyi.common.utils.StringUtils;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml
index b3b7bcc70c80514746f1bf592664b7f66d8b37f7..819d049df18ad87dd4f44a09a5c1391a1764d038 100644
--- a/ruoyi-framework/pom.xml
+++ b/ruoyi-framework/pom.xml
@@ -32,7 +32,7 @@
com.alibaba
- druid-spring-boot-starter
+ druid-spring-boot-3-starter
@@ -51,6 +51,20 @@
org.apache.shiro
shiro-spring
+ jakarta
+
+
+
+
+ org.apache.shiro
+ shiro-core
+ jakarta
+
+
+
+ org.apache.shiro
+ shiro-web
+ jakarta
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
index d40b0f8ed876f6db5c90b92ef074650cf0009314..a6a7fdbd0bcb718460a89cf4c71cf15323e64824 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -2,8 +2,8 @@ package com.ruoyi.framework.aspectj;
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-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java
index b4c356bb0db4529fcf5cc1b4e37ea212d61edded..c1fe43514f53ca66b315e90ce574701a6b0d0df5 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java
@@ -3,11 +3,6 @@ package com.ruoyi.framework.config;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
import javax.sql.DataSource;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -16,13 +11,18 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
-import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
+import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceBuilder;
+import com.alibaba.druid.spring.boot3.autoconfigure.properties.DruidStatProperties;
import com.alibaba.druid.util.Utils;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.framework.config.properties.DruidProperties;
import com.ruoyi.framework.datasource.DynamicDataSource;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
/**
* druid 配置多数据源
@@ -96,7 +96,7 @@ public class DruidConfig
Filter filter = new Filter()
{
@Override
- public void init(javax.servlet.FilterConfig filterConfig) throws ServletException
+ public void init(jakarta.servlet.FilterConfig filterConfig) throws ServletException
{
}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
index b7d10b8f99bf9304a33501e2e7d8b325d08045d1..65bc034db7cd3035bee7df5d847c40d708b556fb 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
@@ -2,7 +2,7 @@ package com.ruoyi.framework.config;
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.DispatcherType;
+import jakarta.servlet.DispatcherType;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
index 2f487fa8200a5ef23f966bd39e7662d45c9a7678..b957e84fdec21c701b6e92e2bd2885b3a818f040 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java
@@ -4,14 +4,12 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
-import javax.servlet.Filter;
import org.apache.commons.io.IOUtils;
import org.apache.shiro.cache.ehcache.EhCacheManager;
-import org.apache.shiro.codec.Base64;
import org.apache.shiro.config.ConfigurationException;
-import org.apache.shiro.io.ResourceUtils;
+import org.apache.shiro.lang.codec.Base64;
+import org.apache.shiro.lang.io.ResourceUtils;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
@@ -26,7 +24,6 @@ import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.CipherUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.framework.config.properties.PermitAllUrlProperties;
import com.ruoyi.framework.shiro.realm.UserRealm;
import com.ruoyi.framework.shiro.session.OnlineSessionDAO;
import com.ruoyi.framework.shiro.session.OnlineSessionFactory;
@@ -39,6 +36,7 @@ import com.ruoyi.framework.shiro.web.filter.sync.SyncOnlineSessionFilter;
import com.ruoyi.framework.shiro.web.session.OnlineWebSessionManager;
import com.ruoyi.framework.shiro.web.session.SpringSessionValidationScheduler;
import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
+import jakarta.servlet.Filter;
/**
* 权限配置加载
@@ -290,12 +288,6 @@ public class ShiroConfig
filterChainDefinitionMap.put("/js/**", "anon");
filterChainDefinitionMap.put("/ruoyi/**", "anon");
filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");
- // 匿名访问不鉴权注解列表
- List permitAllUrl = SpringUtils.getBean(PermitAllUrlProperties.class).getUrls();
- if (StringUtils.isNotEmpty(permitAllUrl))
- {
- permitAllUrl.forEach(url -> filterChainDefinitionMap.put(url, "anon"));
- }
// 退出 logout地址,shiro去清除session
filterChainDefinitionMap.put("/logout", "logout");
// 不需要拦截的访问
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
deleted file mode 100644
index 068310246a7ccbc2a4e179c2e71627098b3bbfc6..0000000000000000000000000000000000000000
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.ruoyi.framework.config.properties;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import org.springframework.aop.framework.Advised;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.ruoyi.common.annotation.Anonymous;
-
-/**
- * 设置Anonymous注解允许匿名访问的url
- *
- * @author ruoyi
- */
-@Configuration
-public class PermitAllUrlProperties implements InitializingBean, ApplicationContextAware
-{
- private List urls = new ArrayList<>();
-
- private ApplicationContext applicationContext;
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Map controllers = applicationContext.getBeansWithAnnotation(Controller.class);
- for (Object bean : controllers.values())
- {
- if (!(bean instanceof Advised))
- {
- continue;
- }
- Class> beanClass = ((Advised) bean).getTargetSource().getTarget().getClass();
- RequestMapping base = beanClass.getAnnotation(RequestMapping.class);
- String[] baseUrl = {};
- if (Objects.nonNull(base))
- {
- baseUrl = base.value();
- }
- Method[] methods = beanClass.getDeclaredMethods();
- for (Method method : methods)
- {
- if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(RequestMapping.class))
- {
- RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
- String[] uri = requestMapping.value();
- urls.addAll(rebuildUrl(baseUrl, uri));
- }
- else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(GetMapping.class))
- {
- GetMapping requestMapping = method.getAnnotation(GetMapping.class);
- String[] uri = requestMapping.value();
- urls.addAll(rebuildUrl(baseUrl, uri));
- }
- else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(PostMapping.class))
- {
- PostMapping requestMapping = method.getAnnotation(PostMapping.class);
- String[] uri = requestMapping.value();
- urls.addAll(rebuildUrl(baseUrl, uri));
- }
- else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(PutMapping.class))
- {
- PutMapping requestMapping = method.getAnnotation(PutMapping.class);
- String[] uri = requestMapping.value();
- urls.addAll(rebuildUrl(baseUrl, uri));
- }
- else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(DeleteMapping.class))
- {
- DeleteMapping requestMapping = method.getAnnotation(DeleteMapping.class);
- String[] uri = requestMapping.value();
- urls.addAll(rebuildUrl(baseUrl, uri));
- }
- }
-
- }
- }
-
- private List rebuildUrl(String[] bases, String[] uris)
- {
- List urls = new ArrayList<>();
- for (String base : bases)
- {
- for (String uri : uris)
- {
- urls.add(prefix(base) + prefix(uri));
- }
- }
- return urls;
- }
-
- private String prefix(String seg)
- {
- return seg.startsWith("/") ? seg : "/" + seg;
- }
-
- @Override
- public void setApplicationContext(ApplicationContext context) throws BeansException
- {
- this.applicationContext = context;
- }
-
- public List getUrls()
- {
- return urls;
- }
-
- public void setUrls(List urls)
- {
- this.urls = urls;
- }
-}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
index 6df2e5edddf8d5b35b5c26ce05d15c98e5896e72..844853a86b4d52de8df364df35f66656208f7f18 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
@@ -1,8 +1,8 @@
package com.ruoyi.framework.interceptor;
import java.lang.reflect.Method;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
index fc0e1e9980a82a87ed7a89a91f964e2119a0984b..77609acde08979e48f405de47edbf2b84076ad1d 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
@@ -2,8 +2,8 @@ package com.ruoyi.framework.interceptor.impl;
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.springframework.stereotype.Component;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.json.JSON;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
index 78a4af37220ac049752478e388994ba0d2da139e..9c84917cf23dc7ead3f52679bb488c879432ffc6 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
@@ -7,7 +7,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PreDestroy;
/**
* 确保应用退出时能关闭后台线程
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java
index 338e7293e29eafcd10699cc20706fd7d462d8799..16d0be735c17c354856343a05ec2b10631dc4e10 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/service/SysPasswordService.java
@@ -1,10 +1,8 @@
package com.ruoyi.framework.shiro.service;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.annotation.PostConstruct;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.cache.CacheManager;
-import org.apache.shiro.crypto.hash.Md5Hash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -14,8 +12,10 @@ import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.exception.user.UserPasswordRetryLimitExceedException;
import com.ruoyi.common.utils.MessageUtils;
+import com.ruoyi.common.utils.security.Md5Utils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
+import jakarta.annotation.PostConstruct;
/**
* 登录密码方法
@@ -80,6 +80,6 @@ public class SysPasswordService
public String encryptPassword(String loginName, String password, String salt)
{
- return new Md5Hash(loginName + password + salt).toHex();
+ return Md5Utils.hash(loginName + password + salt);
}
}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java
index f1e5a3ee7a3622810475a27b565678927921af67..d9c7b076053cc8b52ca5551944e9d9b3e3c267ad 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/session/OnlineSessionFactory.java
@@ -1,6 +1,6 @@
package com.ruoyi.framework.shiro.session;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.SessionContext;
import org.apache.shiro.session.mgt.SessionFactory;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java
index 1d42bdf750726ecfa447599c9f5ddb1258132ea0..ebf45f49844c5c617d12e3fd4983959861571490 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/CustomShiroFilterFactoryBean.java
@@ -10,7 +10,7 @@ import org.apache.shiro.web.mgt.WebSecurityManager;
import org.apache.shiro.web.servlet.AbstractShiroFilter;
import org.apache.shiro.mgt.SecurityManager;
import org.springframework.beans.factory.BeanInitializationException;
-import javax.servlet.Filter;
+import jakarta.servlet.Filter;
import java.util.Map;
/**
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
index f8861b649f50a7bd39fbda75dfb262e4d3a47927..f29c4b792a59270fa1442cdca648ab84e1c77401 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/LogoutFilter.java
@@ -1,7 +1,7 @@
package com.ruoyi.framework.shiro.web.filter;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
import org.apache.shiro.session.SessionException;
import org.apache.shiro.subject.Subject;
import org.slf4j.Logger;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java
index 40939e91cc51d0d6a342ee5120d54a25534fa1ff..6802379ac6ca1295f4c46f7daa39405eedeefec2 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java
@@ -1,8 +1,8 @@
package com.ruoyi.framework.shiro.web.filter.captcha;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.shiro.web.filter.AccessControlFilter;
import com.google.code.kaptcha.Constants;
import com.ruoyi.common.constant.ShiroConstants;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java
index d92db340189578011b0d0b25ee5b55971ec7c65a..3938b0f1b44958bb85b9dffaa3650e6779234bb3 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/kickout/KickoutSessionFilter.java
@@ -4,10 +4,10 @@ import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayDeque;
import java.util.Deque;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.cache.CacheManager;
import org.apache.shiro.session.Session;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java
index bbbe6d66e4b594d6c89c9c4d0f93fedd11426d86..fad83a7de1f94ee49602ab77c1a907e76acc5559 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/online/OnlineSessionFilter.java
@@ -1,8 +1,8 @@
package com.ruoyi.framework.shiro.web.filter.online;
import java.io.IOException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.AccessControlFilter;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java
index f8e51422c0f172e778c34ae286931102eeb5624b..f0efaa05fba3f3b4ba3dabf65743d4dbaaab7c94 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java
@@ -1,7 +1,7 @@
package com.ruoyi.framework.shiro.web.filter.sync;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
import org.apache.shiro.web.filter.PathMatchingFilter;
import com.ruoyi.common.constant.ShiroConstants;
import com.ruoyi.framework.shiro.session.OnlineSession;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
index 50aa339fee6d26944f47969b13217df09f5d1c6e..c853a492946facde7e5090ad72071a241d8c3568 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
@@ -1,6 +1,6 @@
package com.ruoyi.framework.web.exception;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.shiro.authz.AuthorizationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml
index 4a0a22d2dd71d88a4aa712f750e4c226ed3eab1f..bb6df771b66cd59b03f653c4abd744f20b555f33 100644
--- a/ruoyi-generator/pom.xml
+++ b/ruoyi-generator/pom.xml
@@ -32,7 +32,7 @@
com.alibaba
- druid-spring-boot-starter
+ druid-spring-boot-3-starter
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
index 49b02bae1d8f30963df53c731ce5cdb5ba2896b7..f5d6ffb18757b32769c61d6fac672bb539a66994 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -4,7 +4,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
index 756a5786356cb6dbceaa425d18e7cc58470bd6b8..df7c506da51fffd1f99f3741ee6624c0d5807c8a 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
@@ -1,8 +1,8 @@
package com.ruoyi.generator.domain;
import java.util.List;
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
import org.apache.commons.lang3.ArrayUtils;
import com.ruoyi.common.constant.GenConstants;
import com.ruoyi.common.core.domain.BaseEntity;
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
index 4b1268c753e9ca7a53630c987444c274548a3cda..5c02f8691cf4362ee2205bab514240b652d20ccf 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
@@ -1,6 +1,6 @@
package com.ruoyi.generator.domain;
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.utils.StringUtils;
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java
index 286555a2c946bf2fa8c6200f686720bb1d01d842..ac09438c02895c1cd064fda82d68174301ea1ec3 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/domain/SysJob.java
@@ -2,7 +2,7 @@ package com.ruoyi.quartz.domain;
import java.io.Serializable;
import java.util.Date;
-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.annotation.Excel;
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
index a43e434ac968ec6a1c1a84d8c474f4bafb792ac3..92635c5aaaf8adcf6b88b02a6bc74fda3b786584 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
@@ -1,7 +1,7 @@
package com.ruoyi.quartz.service.impl;
import java.util.List;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import org.quartz.JobDataMap;
import org.quartz.JobKey;
import org.quartz.Scheduler;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
index da884de812a3658740fd734f01bf94bc66201510..552a78ccaf993b13149d59c1091ee6963b8adab8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java
@@ -1,6 +1,6 @@
package com.ruoyi.system.domain;
-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.annotation.Excel;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
index b5c6187babc99620a2e48ee9b878717d096a7a3a..1aacb9a9d3350dc6b088375cf2c1743b3f763edf 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java
@@ -1,7 +1,7 @@
package com.ruoyi.system.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.domain.BaseEntity;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
index 7a2cb2bada8e0c69fedeaddc11e911363116c2fd..ca3a77d6cdc0c12ad958772c04062f98b89e98c4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java
@@ -1,6 +1,6 @@
package com.ruoyi.system.domain;
-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.annotation.Excel;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
index 960c5020c0a3fb0d2cf7b295cca39579f48870ac..a2ca18c88ea48104e63b843d17fcbd581fe00e54 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
@@ -1,7 +1,7 @@
package com.ruoyi.system.service.impl;
import java.util.List;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.constant.Constants;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
index b7b2cf10f0b8e6ec2ecd8ad8f174545a28b845fb..ab2c0e17d33f76bb4e3de0f0abba3b486816c0b7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -5,7 +5,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 2c2ebccde14620ef862ef53b56c62b303e93f308..02151797a694f4c1927882addd80c9952e049681 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -3,7 +3,7 @@ package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
-import javax.validation.Validator;
+import jakarta.validation.Validator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;