From e33e13d3b44193a0fac216f87e0580b217c04635 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Mon, 24 Jun 2024 14:48:38 +0800 Subject: [PATCH 01/10] update springboot3 --- pom.xml | 78 ++-- ruoyi-admin/pom.xml | 19 +- .../controller/common/CommonController.java | 4 +- .../system/SysCaptchaController.java | 10 +- .../controller/system/SysIndexController.java | 4 +- .../controller/system/SysLoginController.java | 4 +- .../web/controller/tool/TestController.java | 366 +++++++++--------- .../ruoyi/web/core/config/SwaggerConfig.java | 134 +++---- .../src/main/resources/application.yml | 5 - ruoyi-common/pom.xml | 5 +- .../com/ruoyi/common/config/ServerConfig.java | 2 +- .../core/controller/BaseController.java | 6 +- .../common/core/domain/entity/SysDept.java | 8 +- .../core/domain/entity/SysDictData.java | 2 +- .../core/domain/entity/SysDictType.java | 2 +- .../common/core/domain/entity/SysMenu.java | 2 +- .../common/core/domain/entity/SysRole.java | 2 +- .../common/core/domain/entity/SysUser.java | 2 +- .../com/ruoyi/common/utils/CookieUtils.java | 6 +- .../java/com/ruoyi/common/utils/IpUtils.java | 2 +- .../java/com/ruoyi/common/utils/LogUtils.java | 10 +- .../com/ruoyi/common/utils/MapDataUtil.java | 2 +- .../com/ruoyi/common/utils/ServletUtils.java | 6 +- .../common/utils/bean/BeanValidators.java | 6 +- .../ruoyi/common/utils/file/FileUtils.java | 4 +- .../com/ruoyi/common/utils/poi/ExcelUtil.java | 2 +- .../main/java/com/ruoyi/common/xss/Xss.java | 4 +- .../java/com/ruoyi/common/xss/XssFilter.java | 16 +- .../xss/XssHttpServletRequestWrapper.java | 4 +- .../com/ruoyi/common/xss/XssValidator.java | 4 +- ruoyi-framework/pom.xml | 18 +- .../framework/aspectj/DataScopeAspect.java | 2 +- .../ruoyi/framework/aspectj/LogAspect.java | 4 +- .../ruoyi/framework/config/DruidConfig.java | 16 +- .../ruoyi/framework/config/FilterConfig.java | 2 +- .../ruoyi/framework/config/ShiroConfig.java | 6 +- .../interceptor/RepeatSubmitInterceptor.java | 4 +- .../impl/SameUrlDataInterceptor.java | 4 +- .../framework/manager/ShutdownManager.java | 2 +- .../shiro/service/SysPasswordService.java | 6 +- .../shiro/session/OnlineSessionFactory.java | 2 +- .../web/CustomShiroFilterFactoryBean.java | 2 +- .../shiro/web/filter/LogoutFilter.java | 4 +- .../filter/captcha/CaptchaValidateFilter.java | 6 +- .../filter/kickout/KickoutSessionFilter.java | 8 +- .../filter/online/OnlineSessionFilter.java | 4 +- .../filter/sync/SyncOnlineSessionFilter.java | 4 +- .../web/exception/GlobalExceptionHandler.java | 2 +- ruoyi-generator/pom.xml | 2 +- .../generator/controller/GenController.java | 2 +- .../com/ruoyi/generator/domain/GenTable.java | 4 +- .../generator/domain/GenTableColumn.java | 2 +- .../java/com/ruoyi/quartz/domain/SysJob.java | 2 +- .../service/impl/SysJobServiceImpl.java | 2 +- .../com/ruoyi/system/domain/SysConfig.java | 2 +- .../com/ruoyi/system/domain/SysNotice.java | 4 +- .../java/com/ruoyi/system/domain/SysPost.java | 2 +- .../ruoyi/system/domain/SysUserOnline.java | 2 +- .../service/impl/SysConfigServiceImpl.java | 2 +- .../service/impl/SysDictTypeServiceImpl.java | 2 +- .../service/impl/SysUserServiceImpl.java | 2 +- 61 files changed, 431 insertions(+), 416 deletions(-) diff --git a/pom.xml b/pom.xml index 4a858d23..78eb9e4c 100644 --- a/pom.xml +++ b/pom.xml @@ -15,16 +15,15 @@ 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.13.0 @@ -36,20 +35,11 @@ - - - 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 +47,7 @@ com.alibaba - druid-spring-boot-starter + druid-spring-boot-3-starter ${druid.version} @@ -72,6 +62,14 @@ org.apache.shiro shiro-core + jakarta + ${shiro.version} + + + + org.apache.shiro + shiro-web + jakarta ${shiro.version} @@ -79,7 +77,15 @@ org.apache.shiro shiro-spring + jakarta ${shiro.version} + + + + org.apache.shiro + shiro-web + + @@ -96,6 +102,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,19 +142,6 @@ ${oshi.version} - - - io.springfox - springfox-boot-starter - ${swagger.version} - - - io.swagger - swagger-models - - - - commons-io @@ -216,13 +228,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 7eaf080e..e2a5dbcd 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -30,23 +30,10 @@ true - - - io.springfox - springfox-boot-starter - - - - - io.swagger - swagger-models - 1.6.2 - - - mysql - mysql-connector-java + com.mysql + mysql-connector-j @@ -89,7 +76,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 c2db93ac..08816ab5 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 230cc3b2..fbc2e9b9 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 10da47fb..d6901f9f 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 55aecae6..8a41df32 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 c55f9749..14abba1c 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 @@ -1,183 +1,183 @@ -package com.ruoyi.web.controller.tool; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -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; - -/** - * swagger 用户测试方法 - * - * @author ruoyi - */ -@Api("用户信息管理") -@RestController -@RequestMapping("/test/user") -public class TestController extends BaseController -{ - private final static Map users = new LinkedHashMap(); - { - users.put(1, new UserEntity(1, "admin", "admin123", "15888888888")); - users.put(2, new UserEntity(2, "ry", "admin123", "15666666666")); - } - - @ApiOperation("获取用户列表") - @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) - @GetMapping("/{userId}") - public R getUser(@PathVariable Integer userId) - { - if (!users.isEmpty() && users.containsKey(userId)) - { - return R.ok(users.get(userId)); - } - else - { - 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) - }) - @PostMapping("/save") - public R save(UserEntity user) - { - if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) - { - return R.fail("用户ID不能为空"); - } - users.put(user.getUserId(), user); - return R.ok(); - } - - @ApiOperation("更新用户") - @PutMapping("/update") - public R update(@RequestBody UserEntity user) - { - if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) - { - return R.fail("用户ID不能为空"); - } - if (users.isEmpty() || !users.containsKey(user.getUserId())) - { - return R.fail("用户不存在"); - } - users.remove(user.getUserId()); - users.put(user.getUserId(), user); - return R.ok(); - } - - @ApiOperation("删除用户信息") - @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class) - @DeleteMapping("/{userId}") - public R delete(@PathVariable Integer userId) - { - if (!users.isEmpty() && users.containsKey(userId)) - { - users.remove(userId); - return R.ok(); - } - else - { - return R.fail("用户不存在"); - } - } -} - -@ApiModel(value = "UserEntity", description = "用户实体") -class UserEntity -{ - @ApiModelProperty("用户ID") - private Integer userId; - - @ApiModelProperty("用户名称") - private String username; - - @ApiModelProperty("用户密码") - private String password; - - @ApiModelProperty("用户手机") - private String mobile; - - public UserEntity() - { - - } - - public UserEntity(Integer userId, String username, String password, String mobile) - { - this.userId = userId; - this.username = username; - 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; - } -} +//package com.ruoyi.web.controller.tool; +// +//import java.util.ArrayList; +//import java.util.LinkedHashMap; +//import java.util.List; +//import java.util.Map; +//import org.springframework.web.bind.annotation.DeleteMapping; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.PutMapping; +//import org.springframework.web.bind.annotation.RequestBody; +//import org.springframework.web.bind.annotation.RequestMapping; +//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; +// +///** +// * swagger 用户测试方法 +// * +// * @author ruoyi +// */ +//@Api("用户信息管理") +//@RestController +//@RequestMapping("/test/user") +//public class TestController extends BaseController +//{ +// private final static Map users = new LinkedHashMap(); +// { +// users.put(1, new UserEntity(1, "admin", "admin123", "15888888888")); +// users.put(2, new UserEntity(2, "ry", "admin123", "15666666666")); +// } +// +// @ApiOperation("获取用户列表") +// @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) +// @GetMapping("/{userId}") +// public R getUser(@PathVariable Integer userId) +// { +// if (!users.isEmpty() && users.containsKey(userId)) +// { +// return R.ok(users.get(userId)); +// } +// else +// { +// 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) +// }) +// @PostMapping("/save") +// public R save(UserEntity user) +// { +// if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) +// { +// return R.fail("用户ID不能为空"); +// } +// users.put(user.getUserId(), user); +// return R.ok(); +// } +// +// @ApiOperation("更新用户") +// @PutMapping("/update") +// public R update(@RequestBody UserEntity user) +// { +// if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) +// { +// return R.fail("用户ID不能为空"); +// } +// if (users.isEmpty() || !users.containsKey(user.getUserId())) +// { +// return R.fail("用户不存在"); +// } +// users.remove(user.getUserId()); +// users.put(user.getUserId(), user); +// return R.ok(); +// } +// +// @ApiOperation("删除用户信息") +// @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class) +// @DeleteMapping("/{userId}") +// public R delete(@PathVariable Integer userId) +// { +// if (!users.isEmpty() && users.containsKey(userId)) +// { +// users.remove(userId); +// return R.ok(); +// } +// else +// { +// return R.fail("用户不存在"); +// } +// } +//} +// +//@ApiModel(value = "UserEntity", description = "用户实体") +//class UserEntity +//{ +// @ApiModelProperty("用户ID") +// private Integer userId; +// +// @ApiModelProperty("用户名称") +// private String username; +// +// @ApiModelProperty("用户密码") +// private String password; +// +// @ApiModelProperty("用户手机") +// private String mobile; +// +// public UserEntity() +// { +// +// } +// +// public UserEntity(Integer userId, String username, String password, String mobile) +// { +// this.userId = userId; +// this.username = username; +// 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 0cfbfbad..7874a296 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,67 +1,67 @@ -package com.ruoyi.web.core.config; - -import org.springframework.beans.factory.annotation.Value; -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; - -/** - * Swagger2的接口配置 - * - * @author ruoyi - */ -@Configuration -public class SwaggerConfig -{ - /** 是否开启swagger */ - @Value("${swagger.enabled}") - private boolean enabled; - - /** - * 创建API - */ - @Bean - public Docket createRestApi() - { - 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(); - } - - /** - * 添加摘要信息 - */ - private ApiInfo apiInfo() - { - // 用ApiInfoBuilder进行定制 - return new ApiInfoBuilder() - // 设置标题 - .title("标题:若依管理系统_接口文档") - // 描述 - .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") - // 作者信息 - .contact(new Contact(RuoYiConfig.getName(), null, null)) - // 版本 - .version("版本号:" + RuoYiConfig.getVersion()) - .build(); - } -} +//package com.ruoyi.web.core.config; +// +//import org.springframework.beans.factory.annotation.Value; +//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; +// +///** +// * Swagger2的接口配置 +// * +// * @author ruoyi +// */ +//@Configuration +//public class SwaggerConfig +//{ +// /** 是否开启swagger */ +// @Value("${swagger.enabled}") +// private boolean enabled; +// +// /** +// * 创建API +// */ +// @Bean +// public Docket createRestApi() +// { +// 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(); +// } +// +// /** +// * 添加摘要信息 +// */ +// private ApiInfo apiInfo() +// { +// // 用ApiInfoBuilder进行定制 +// return new ApiInfoBuilder() +// // 设置标题 +// .title("标题:若依管理系统_接口文档") +// // 描述 +// .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") +// // 作者信息 +// .contact(new Contact(RuoYiConfig.getName(), null, null)) +// // 版本 +// .version("版本号:" + RuoYiConfig.getVersion()) +// .build(); +// } +//} diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index d0abcabb..dd7fc6e3 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -135,8 +135,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 3396af87..02c5355a 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 ddb87309..77603342 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 c2985040..0bdcb3a4 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 a3a25d09..b2645ea0 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 404c14bb..1258e9d5 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 1ce61a82..477ad8e7 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 da1869a5..71035128 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 03aa3b0a..4c7b9c93 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 bbcce4b3..f189d469 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 13c1d5ed..180bd0ce 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 1a3f210c..1fa70d75 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 d5a357c5..8359596a 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 327e54fd..d521f9c6 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 6214f564..5bc1e387 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 d9821e0e..03e89721 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 7d5aa6f8..a4af6a06 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 49dea95e..6a90431c 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 14e43dc5..93a3840a 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 145ae7ae..5e072d71 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 516db0a9..29760327 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 b859428e..585fa8ae 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 b3b7bcc7..c8cc13ea 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 @@ -42,7 +42,7 @@ servlet-api - javax.servlet + jakarta.servlet @@ -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/DataScopeAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java index f473f440..27caf42a 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java @@ -150,7 +150,7 @@ public class DataScopeAspect conditions.add(dataScope); } - // 多角色情况下,所有角色都不包含传递过来的权限字符,这个时候sqlString也会为空,所以要限制一下,不查询任何数据 + // 角色都不包含传递过来的权限字符,这个时候sqlString也会为空,所以要限制一下,不查询任何数据 if (StringUtils.isEmpty(conditions)) { sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias)); 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 d40b0f8e..a6a7fdbd 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 b4c356bb..c1fe4351 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 b7d10b8f..65bc034d 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 2f487fa8..76afb721 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 @@ -6,12 +6,11 @@ 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; @@ -39,6 +38,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; /** * 权限配置加载 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 6df2e5ed..844853a8 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 fc0e1e99..77609acd 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 78a4af37..9c84917c 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 338e7293..16d0be73 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 f1e5a3ee..d9c7b076 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 1d42bdf7..ebf45f49 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 f8861b64..f29c4b79 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 40939e91..6802379a 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 d92db340..3938b0f1 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 bbbe6d66..fad83a7d 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 f8e51422..f0efaa05 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 50aa339f..c853a492 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 4a0a22d2..bb6df771 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 49b02bae..f5d6ffb1 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 756a5786..df7c506d 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 4b1268c7..5c02f869 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 286555a2..ac09438c 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 a43e434a..92635c5a 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 da884de8..552a78cc 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 b5c6187b..1aacb9a9 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 7a2cb2ba..ca3a77d6 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/domain/SysUserOnline.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java index c5467bb6..d259a5ba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java @@ -42,7 +42,7 @@ public class SysUserOnline extends BaseEntity /** session最后访问时间 */ private Date lastAccessTime; - /** 超时时间,单位为分钟 */ + /** 超时时间,单位为毫秒 */ private Long expireTime; /** 在线状态 */ 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 960c5020..a2ca18c8 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 b7b2cf10..ab2c0e17 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 2c2ebccd..02151797 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; -- Gitee From c22d0af0185a87b65692f7d8e9a368bc2f3c76cc Mon Sep 17 00:00:00 2001 From: RuoYi Date: Mon, 24 Jun 2024 17:23:44 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=BB=E5=AD=90?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?(IA61OI)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm index b7e67473..ea430ddc 100644 --- a/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm +++ b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm @@ -15,7 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #if($table.sub) - + -- Gitee From 0a6ff25875a902ba17a1c49b1259e9e0c4871f53 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Thu, 27 Jun 2024 16:49:30 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/utils/file/FileUploadUtils.java | 2 +- .../mapper/generator/GenTableMapper.xml | 16 ++++++++-------- .../mapper/system/SysDictDataMapper.xml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java index 51fa59c8..8de4c66d 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java @@ -25,7 +25,7 @@ public class FileUploadUtils /** * 默认大小 50M */ - public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024; + public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L; /** * 默认的文件名最大长度 100 diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml index 84633f3a..2378ab86 100644 --- a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml +++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml @@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -73,7 +73,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select table_name, table_comment, create_time, update_time from information_schema.tables - where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) + where table_name NOT LIKE 'qrtz\_%' and table_name NOT LIKE 'gen\_%' and table_schema = (select database()) and table_name in #{name} @@ -158,12 +158,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sysdate() ) - - + + ${sql} - - - + + + update gen_table table_name = #{tableName}, diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml index aebd9b4f..0d5dde72 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - where status = '0' and dict_type = #{dictType} order by dict_sort asc -- Gitee From c65919c6007a0be62f8dc304660dc5d5a69a4627 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Thu, 27 Jun 2024 23:39:00 +0800 Subject: [PATCH 04/10] springdoc --- pom.xml | 8 + ruoyi-admin/pom.xml | 6 + .../web/controller/tool/TestController.java | 358 +++++++++--------- .../ruoyi/web/core/config/SwaggerConfig.java | 132 ++++--- .../src/main/resources/application.yml | 14 + ruoyi-framework/pom.xml | 2 +- .../ruoyi/framework/config/ShiroConfig.java | 8 - .../properties/PermitAllUrlProperties.java | 122 ------ 8 files changed, 269 insertions(+), 381 deletions(-) delete mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java diff --git a/pom.xml b/pom.xml index 78eb9e4c..158cba65 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,7 @@ 2.13.0 4.1.2 2.3 + 2.5.0 @@ -142,6 +143,13 @@ ${oshi.version} + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + ${springdoc.version} + + commons-io diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index e2a5dbcd..53df7004 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -30,6 +30,12 @@ true + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + + com.mysql 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 14abba1c..b56a0976 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 @@ -1,183 +1,175 @@ -//package com.ruoyi.web.controller.tool; -// -//import java.util.ArrayList; -//import java.util.LinkedHashMap; -//import java.util.List; -//import java.util.Map; -//import org.springframework.web.bind.annotation.DeleteMapping; -//import org.springframework.web.bind.annotation.GetMapping; -//import org.springframework.web.bind.annotation.PathVariable; -//import org.springframework.web.bind.annotation.PostMapping; -//import org.springframework.web.bind.annotation.PutMapping; -//import org.springframework.web.bind.annotation.RequestBody; -//import org.springframework.web.bind.annotation.RequestMapping; -//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; -// -///** -// * swagger 用户测试方法 -// * -// * @author ruoyi -// */ -//@Api("用户信息管理") -//@RestController -//@RequestMapping("/test/user") -//public class TestController extends BaseController -//{ -// private final static Map users = new LinkedHashMap(); -// { -// users.put(1, new UserEntity(1, "admin", "admin123", "15888888888")); -// users.put(2, new UserEntity(2, "ry", "admin123", "15666666666")); -// } -// -// @ApiOperation("获取用户列表") -// @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) -// @GetMapping("/{userId}") -// public R getUser(@PathVariable Integer userId) -// { -// if (!users.isEmpty() && users.containsKey(userId)) -// { -// return R.ok(users.get(userId)); -// } -// else -// { -// 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) -// }) -// @PostMapping("/save") -// public R save(UserEntity user) -// { -// if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) -// { -// return R.fail("用户ID不能为空"); -// } -// users.put(user.getUserId(), user); -// return R.ok(); -// } -// -// @ApiOperation("更新用户") -// @PutMapping("/update") -// public R update(@RequestBody UserEntity user) -// { -// if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) -// { -// return R.fail("用户ID不能为空"); -// } -// if (users.isEmpty() || !users.containsKey(user.getUserId())) -// { -// return R.fail("用户不存在"); -// } -// users.remove(user.getUserId()); -// users.put(user.getUserId(), user); -// return R.ok(); -// } -// -// @ApiOperation("删除用户信息") -// @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class) -// @DeleteMapping("/{userId}") -// public R delete(@PathVariable Integer userId) -// { -// if (!users.isEmpty() && users.containsKey(userId)) -// { -// users.remove(userId); -// return R.ok(); -// } -// else -// { -// return R.fail("用户不存在"); -// } -// } -//} -// -//@ApiModel(value = "UserEntity", description = "用户实体") -//class UserEntity -//{ -// @ApiModelProperty("用户ID") -// private Integer userId; -// -// @ApiModelProperty("用户名称") -// private String username; -// -// @ApiModelProperty("用户密码") -// private String password; -// -// @ApiModelProperty("用户手机") -// private String mobile; -// -// public UserEntity() -// { -// -// } -// -// public UserEntity(Integer userId, String username, String password, String mobile) -// { -// this.userId = userId; -// this.username = username; -// 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; -// } -//} +package com.ruoyi.web.controller.tool; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +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.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; + +/** + * swagger 用户测试方法 + * + * @author ruoyi + */ +@Tag(name = "用户信息管理") +@RestController +@RequestMapping("/test/user") +public class TestController extends BaseController +{ + private final static Map users = new LinkedHashMap(); + { + users.put(1, new UserEntity(1, "admin", "admin123", "15888888888")); + users.put(2, new UserEntity(2, "ry", "admin123", "15666666666")); + } + + @Operation(summary = "获取用户列表") + @GetMapping("/list") + public R> userList() + { + List userList = new ArrayList(users.values()); + return R.ok(userList); + } + + @Operation(summary = "获取用户详细") + @GetMapping("/{userId}") + public R getUser(@PathVariable(name = "userId") + Integer userId) + { + if (!users.isEmpty() && users.containsKey(userId)) + { + return R.ok(users.get(userId)); + } + else + { + return R.fail("用户不存在"); + } + } + + @Operation(summary = "新增用户") + @PostMapping("/save") + public R save(UserEntity user) + { + if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) + { + return R.fail("用户ID不能为空"); + } + users.put(user.getUserId(), user); + return R.ok(); + } + + @Operation(summary = "更新用户") + @PutMapping("/update") + public R update(@RequestBody + UserEntity user) + { + if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) + { + return R.fail("用户ID不能为空"); + } + if (users.isEmpty() || !users.containsKey(user.getUserId())) + { + return R.fail("用户不存在"); + } + users.remove(user.getUserId()); + users.put(user.getUserId(), user); + return R.ok(); + } + + @Operation(summary = "删除用户信息") + @DeleteMapping("/{userId}") + public R delete(@PathVariable(name = "userId") + Integer userId) + { + if (!users.isEmpty() && users.containsKey(userId)) + { + users.remove(userId); + return R.ok(); + } + else + { + return R.fail("用户不存在"); + } + } +} + +@Schema(description = "用户实体") +class UserEntity +{ + @Schema(title = "用户ID") + private Integer userId; + + @Schema(title = "用户名称") + private String username; + + @Schema(title = "用户密码") + private String password; + + @Schema(title = "用户手机") + private String mobile; + + public UserEntity() + { + + } + + public UserEntity(Integer userId, String username, String password, String mobile) + { + this.userId = userId; + this.username = username; + 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 7874a296..8d2de2f7 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,67 +1,65 @@ -//package com.ruoyi.web.core.config; -// -//import org.springframework.beans.factory.annotation.Value; -//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; -// -///** -// * Swagger2的接口配置 -// * -// * @author ruoyi -// */ -//@Configuration -//public class SwaggerConfig -//{ -// /** 是否开启swagger */ -// @Value("${swagger.enabled}") -// private boolean enabled; -// -// /** -// * 创建API -// */ -// @Bean -// public Docket createRestApi() -// { -// 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(); -// } -// -// /** -// * 添加摘要信息 -// */ -// private ApiInfo apiInfo() -// { -// // 用ApiInfoBuilder进行定制 -// return new ApiInfoBuilder() -// // 设置标题 -// .title("标题:若依管理系统_接口文档") -// // 描述 -// .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") -// // 作者信息 -// .contact(new Contact(RuoYiConfig.getName(), null, null)) -// // 版本 -// .version("版本号:" + RuoYiConfig.getVersion()) -// .build(); -// } -//} +package com.ruoyi.web.core.config; + +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.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的接口配置 + * + * @author ruoyi + */ +@Configuration +public class SwaggerConfig +{ + /** 系统基础配置 */ + @Autowired + private RuoYiConfig ruoyiConfig; + + /** + * 自定义的 OpenAPI 对象 + */ + @Bean + public OpenAPI customOpenApi() + { + 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"); + } + + /** + * 添加摘要信息 + */ + @SuppressWarnings("static-access") + public Info getApiInfo() + { + 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 dd7fc6e3..e9a01b1d 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: # 过滤开关 diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml index c8cc13ea..819d049d 100644 --- a/ruoyi-framework/pom.xml +++ b/ruoyi-framework/pom.xml @@ -42,7 +42,7 @@ servlet-api - jakarta.servlet + javax.servlet 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 76afb721..b957e84f 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,7 +4,6 @@ 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 org.apache.commons.io.IOUtils; import org.apache.shiro.cache.ehcache.EhCacheManager; @@ -25,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; @@ -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 06831024..00000000 --- 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; - } -} -- Gitee From 00e2fab2037604935c1781c3ce53f7732b71f183 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Wed, 3 Jul 2024 11:47:47 +0800 Subject: [PATCH 05/10] remove sub resultType --- ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm index ea430ddc..6adffe6b 100644 --- a/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm +++ b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm @@ -81,7 +81,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #if($table.sub) - select#foreach ($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end from ${subTableName} where ${subTableFkName} = #{${subTableFkName}} -- Gitee From 6096bb5e050c8feb65284344f68df5ae2f8bdfde Mon Sep 17 00:00:00 2001 From: RuoYi Date: Wed, 3 Jul 2024 11:47:58 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E5=8D=87=E7=BA=A7commons.io=E5=88=B0?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=89=88=E6=9C=AC2.16.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 158cba65..19ccb355 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ 2.1.0 1.2.83 6.6.1 - 2.13.0 + 2.16.1 4.1.2 2.3 2.5.0 -- Gitee From 40b2bb4c46c316a122dd154d81427f28c4e3634a Mon Sep 17 00:00:00 2001 From: RuoYi Date: Mon, 8 Jul 2024 16:32:16 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E6=97=A5=E6=9C=9F=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/generator/GenTableMapper.xml | 6 ++++++ .../src/main/resources/mapper/quartz/SysJobLogMapper.xml | 4 ++-- .../src/main/resources/mapper/system/SysConfigMapper.xml | 4 ++-- .../src/main/resources/mapper/system/SysDictTypeMapper.xml | 4 ++-- .../src/main/resources/mapper/system/SysRoleMapper.xml | 4 ++-- .../src/main/resources/mapper/system/SysUserMapper.xml | 4 ++-- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml index 2378ab86..675cd0cf 100644 --- a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml +++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml @@ -67,6 +67,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND lower(table_comment) like lower(concat('%', #{tableComment}, '%')) + + and date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') + + + and date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') + diff --git a/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml b/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml index f1dd85d2..034ae6c1 100644 --- a/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml +++ b/ruoyi-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml @@ -36,10 +36,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND invoke_target like concat('%', #{invokeTarget}, '%') - and date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + and date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') - and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + and date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') order by create_time desc diff --git a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml index 5ea755a6..f71ff383 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml @@ -51,10 +51,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND config_key like concat('%', #{configKey}, '%') - and date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + and date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') - and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + and date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml index 15774940..a19c921b 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml @@ -33,10 +33,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND dict_type like concat('%', #{dictType}, '%') - and date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + and date_format(create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') - and date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + and date_format(create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml index 7d256504..70742230 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -52,10 +52,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND r.data_scope = #{dataScope} - and date_format(r.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + and date_format(r.create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') - and date_format(r.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + and date_format(r.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') ${params.dataScope} diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index c7bfaf69..8c035905 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -76,10 +76,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND u.phonenumber like concat('%', #{phonenumber}, '%') - AND date_format(u.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + AND date_format(u.create_time,'%Y%m%d') >= date_format(#{params.beginTime},'%Y%m%d') - AND date_format(u.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + AND date_format(u.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d') AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET (#{deptId},ancestors) )) -- Gitee From 71b402327271f21539d6fee35005d72cc5259dea Mon Sep 17 00:00:00 2001 From: ann <58722+ann123@user.noreply.gitee.com> Date: Tue, 27 Aug 2024 10:47:17 +0000 Subject: [PATCH 08/10] Create /321 --- 321/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 321/.keep diff --git a/321/.keep b/321/.keep new file mode 100644 index 00000000..e69de29b -- Gitee From 311c4e6b34d569ea4136101addf9ac238ccd9f75 Mon Sep 17 00:00:00 2001 From: ann <58722+ann123@user.noreply.gitee.com> Date: Wed, 11 Sep 2024 08:47:55 +0000 Subject: [PATCH 09/10] add heelo.js --- heelo.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 heelo.js diff --git a/heelo.js b/heelo.js new file mode 100644 index 00000000..abc62673 --- /dev/null +++ b/heelo.js @@ -0,0 +1 @@ +fffff \ No newline at end of file -- Gitee From c23a533452a431a98cf0a22bc46c6ed4bdaeb711 Mon Sep 17 00:00:00 2001 From: dfdfsd <58477+huhu5@user.noreply.gitee.com> Date: Wed, 18 Jun 2025 11:07:08 +0000 Subject: [PATCH 10/10] dff sdfsd --- Strategy_BbiBiasTradeNumStd.py | 162 +++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 Strategy_BbiBiasTradeNumStd.py diff --git a/Strategy_BbiBiasTradeNumStd.py b/Strategy_BbiBiasTradeNumStd.py new file mode 100644 index 00000000..6e7b3b27 --- /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 -- Gitee