吴树波 1 月之前
父節點
當前提交
c76b1423bb
共有 100 個文件被更改,包括 1106 次插入996 次删除
  1. 1 0
      .gitignore
  2. 4 11
      fs-ad-api/pom.xml
  3. 4 4
      fs-ad-api/src/main/java/com/fs/app/controller/CommonController.java
  4. 1 1
      fs-ad-api/src/main/java/com/fs/app/controller/MockAppController.java
  5. 2 2
      fs-ad-api/src/main/java/com/fs/framework/aspectj/LogAspect.java
  6. 4 2
      fs-ad-api/src/main/java/com/fs/framework/config/DataSourceConfig.java
  7. 2 2
      fs-ad-api/src/main/java/com/fs/framework/config/DruidConfig.java
  8. 1 1
      fs-ad-api/src/main/java/com/fs/framework/config/FilterConfig.java
  9. 1 1
      fs-ad-api/src/main/java/com/fs/framework/config/ResourcesConfig.java
  10. 16 18
      fs-ad-api/src/main/java/com/fs/framework/config/SecurityConfig.java
  11. 1 1
      fs-ad-api/src/main/java/com/fs/framework/config/ServerConfig.java
  12. 121 121
      fs-ad-api/src/main/java/com/fs/framework/config/SwaggerConfig.java
  13. 14 26
      fs-ad-api/src/main/java/com/fs/framework/interceptor/RepeatSubmitInterceptor.java
  14. 1 1
      fs-ad-api/src/main/java/com/fs/framework/interceptor/impl/SameUrlDataInterceptor.java
  15. 3 13
      fs-admin/pom.xml
  16. 1 1
      fs-admin/src/main/java/com/fs/ad/controller/MockAppController.java
  17. 4 3
      fs-admin/src/main/java/com/fs/company/controller/CompanyDomainBindController.java
  18. 8 7
      fs-admin/src/main/java/com/fs/company/controller/CompanyDomainController.java
  19. 10 10
      fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java
  20. 1 1
      fs-admin/src/main/java/com/fs/his/controller/FSSmsCommonController.java
  21. 2 2
      fs-admin/src/main/java/com/fs/his/controller/FsCityController.java
  22. 4 4
      fs-admin/src/main/java/com/fs/his/controller/FsExpressCommonController.java
  23. 3 3
      fs-admin/src/main/java/com/fs/his/controller/FsInquiryOrderController.java
  24. 3 2
      fs-admin/src/main/java/com/fs/his/controller/FsPhysicalReportTemplateFieldController.java
  25. 1 1
      fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderBillLogController.java
  26. 5 5
      fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderController.java
  27. 2 2
      fs-admin/src/main/java/com/fs/his/controller/FsStoreProductController.java
  28. 4 4
      fs-admin/src/main/java/com/fs/his/controller/FsUserController.java
  29. 3 3
      fs-admin/src/main/java/com/fs/his/controller/HisDoctorAiChatSessionController.java
  30. 1 1
      fs-admin/src/main/java/com/fs/his/controller/HzOMSErpApiController.java
  31. 3 2
      fs-admin/src/main/java/com/fs/qw/controller/QwUserController.java
  32. 1 1
      fs-admin/src/main/java/com/fs/third/http/HttpHelper.java
  33. 31 25
      fs-admin/src/main/java/com/fs/web/controller/common/CaptchaController.java
  34. 2 2
      fs-admin/src/main/java/com/fs/web/controller/common/CommonController.java
  35. 1 1
      fs-admin/src/main/java/com/fs/web/controller/system/SysKeywordController.java
  36. 21 28
      fs-admin/src/main/java/com/fs/web/controller/tool/TestController.java
  37. 125 125
      fs-admin/src/main/java/com/fs/web/core/config/SwaggerConfig.java
  38. 4 16
      fs-ai-chat/pom.xml
  39. 4 9
      fs-ai-chat/src/main/java/com/fs/app/controller/CommonController.java
  40. 4 4
      fs-ai-chat/src/main/java/com/fs/app/interceptor/AuthorizationInterceptor.java
  41. 1 1
      fs-ai-chat/src/main/java/com/fs/app/param/EditChatMsgParam.java
  42. 1 1
      fs-ai-chat/src/main/java/com/fs/app/param/LoginParam.java
  43. 3 2
      fs-ai-chat/src/main/java/com/fs/app/param/SignParam.java
  44. 3 3
      fs-ai-chat/src/main/java/com/fs/app/websocket/service/WebSocketServer.java
  45. 4 15
      fs-common-api/pom.xml
  46. 2 2
      fs-common-api/src/main/java/com/fs/app/controller/CommonController.java
  47. 4 4
      fs-common-api/src/main/java/com/fs/app/interceptor/AuthorizationInterceptor.java
  48. 2 2
      fs-common-api/src/main/java/com/fs/framework/aspectj/LogAspect.java
  49. 2 2
      fs-common-api/src/main/java/com/fs/framework/config/DruidConfig.java
  50. 1 1
      fs-common-api/src/main/java/com/fs/framework/config/FilterConfig.java
  51. 1 1
      fs-common-api/src/main/java/com/fs/framework/config/ResourcesConfig.java
  52. 17 20
      fs-common-api/src/main/java/com/fs/framework/config/SecurityConfig.java
  53. 1 1
      fs-common-api/src/main/java/com/fs/framework/config/ServerConfig.java
  54. 122 122
      fs-common-api/src/main/java/com/fs/framework/config/SwaggerConfig.java
  55. 14 26
      fs-common-api/src/main/java/com/fs/framework/interceptor/RepeatSubmitInterceptor.java
  56. 1 1
      fs-common-api/src/main/java/com/fs/framework/interceptor/impl/SameUrlDataInterceptor.java
  57. 9 3
      fs-common/pom.xml
  58. 158 0
      fs-common/src/main/java/com/fs/common/core/domain/BaseEntityNoId.java
  59. 7 7
      fs-common/src/main/java/com/fs/common/filter/RepeatableFilter.java
  60. 5 5
      fs-common/src/main/java/com/fs/common/filter/RepeatedlyRequestWrapper.java
  61. 8 8
      fs-common/src/main/java/com/fs/common/filter/XssFilter.java
  62. 4 4
      fs-common/src/main/java/com/fs/common/filter/XssHttpServletRequestWrapper.java
  63. 1 1
      fs-common/src/main/java/com/fs/common/utils/IPUtils.java
  64. 1 1
      fs-common/src/main/java/com/fs/common/utils/IpUtil.java
  65. 4 3
      fs-common/src/main/java/com/fs/common/utils/ServletUtils.java
  66. 2 2
      fs-common/src/main/java/com/fs/common/utils/file/FileUtils.java
  67. 1 1
      fs-common/src/main/java/com/fs/common/utils/http/HttpHelper.java
  68. 1 1
      fs-common/src/main/java/com/fs/common/utils/ip/IpUtils.java
  69. 1 1
      fs-common/src/main/java/com/fs/common/utils/poi/ExcelUtil.java
  70. 2 2
      fs-company-app/pom.xml
  71. 16 15
      fs-company-app/src/main/java/com/fs/app/controller/CommonController.java
  72. 8 8
      fs-company-app/src/main/java/com/fs/app/controller/CompanyTagController.java
  73. 18 17
      fs-company-app/src/main/java/com/fs/app/controller/CompanyUserController.java
  74. 29 28
      fs-company-app/src/main/java/com/fs/app/controller/CrmController.java
  75. 10 9
      fs-company-app/src/main/java/com/fs/app/controller/CrmCustomerController.java
  76. 8 8
      fs-company-app/src/main/java/com/fs/app/controller/CrmEventController.java
  77. 9 9
      fs-company-app/src/main/java/com/fs/app/controller/CrmMsgController.java
  78. 57 56
      fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java
  79. 2 2
      fs-company-app/src/main/java/com/fs/app/controller/FsUserCoursePeriodController.java
  80. 14 14
      fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java
  81. 4 4
      fs-company-app/src/main/java/com/fs/app/controller/IndexController.java
  82. 15 14
      fs-company-app/src/main/java/com/fs/app/controller/QwCompanyUserController.java
  83. 7 7
      fs-company-app/src/main/java/com/fs/app/controller/QwWorkTaskController.java
  84. 7 7
      fs-company-app/src/main/java/com/fs/app/controller/SmsController.java
  85. 9 9
      fs-company-app/src/main/java/com/fs/app/controller/StatisticsController.java
  86. 3 3
      fs-company-app/src/main/java/com/fs/app/controller/StorePaymentController.java
  87. 6 6
      fs-company-app/src/main/java/com/fs/app/controller/StoreProductPackageController.java
  88. 3 3
      fs-company-app/src/main/java/com/fs/app/controller/TestController.java
  89. 26 25
      fs-company-app/src/main/java/com/fs/app/controller/UserController.java
  90. 4 4
      fs-company-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java
  91. 5 5
      fs-company-app/src/main/java/com/fs/app/controller/WxH5MpController.java
  92. 4 4
      fs-company-app/src/main/java/com/fs/app/controller/WxMpController.java
  93. 4 4
      fs-company-app/src/main/java/com/fs/app/interceptor/AuthorizationInterceptor.java
  94. 3 2
      fs-company-app/src/main/java/com/fs/app/param/CompanyUserParam.java
  95. 1 1
      fs-company-app/src/main/java/com/fs/app/param/EditChatMsgParam.java
  96. 4 3
      fs-company-app/src/main/java/com/fs/app/param/FsUserProjectUpdateParam.java
  97. 4 3
      fs-company-app/src/main/java/com/fs/app/param/FsUserTagUpdateParam.java
  98. 5 4
      fs-company-app/src/main/java/com/fs/app/param/FsUserUpdateParam.java
  99. 13 12
      fs-company-app/src/main/java/com/fs/app/param/LoginMaWxParam.java
  100. 1 1
      fs-company-app/src/main/java/com/fs/app/param/LoginParam.java

+ 1 - 0
.gitignore

@@ -55,3 +55,4 @@ hs_err_pid*
 
 #1.配置语法: 以斜杠“/”开头表示目录: 以星号“*”通配多个字符: 以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表: 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录:
 #此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效
+!/fs-service/target/classes/com/fs/ad/mapper/AdAccountMapper.class

+ 4 - 11
fs-ad-api/pom.xml

@@ -20,16 +20,10 @@
             <artifactId>spring-boot-devtools</artifactId>
             <optional>true</optional> <!-- 表示依赖不会传递 -->
         </dependency>
-        <!-- swagger2-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-        </dependency>
 
-        <!-- swagger2-UI-->
         <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
         </dependency>
 
 
@@ -63,8 +57,8 @@
             <artifactId>kaptcha</artifactId>
             <exclusions>
                 <exclusion>
-                    <artifactId>javax.servlet-api</artifactId>
-                    <groupId>javax.servlet</groupId>
+                    <artifactId>jakarta.servlet-api</artifactId>
+                    <groupId>jakarta.servlet</groupId>
                 </exclusion>
             </exclusions>
         </dependency>
@@ -98,7 +92,6 @@
         <dependency>
             <groupId>org.apache.rocketmq</groupId>
             <artifactId>rocketmq-spring-boot-starter</artifactId>
-            <version>2.2.3</version>
         </dependency>
 
 

+ 4 - 4
fs-ad-api/src/main/java/com/fs/app/controller/CommonController.java

@@ -6,21 +6,21 @@ import com.fs.ad.enums.AdUploadType;
 import com.fs.ad.service.IAdHtmlClickLogService;
 import com.fs.common.core.domain.R;
 import com.fs.qw.vo.AdUploadVo;
-import io.swagger.annotations.Api;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.annotations.ApiIgnore;
 
 
 @Slf4j
-@Api("公共接口")
+@Tag(name = "公共接口")
 @RestController
 @AllArgsConstructor
-@ApiIgnore
+@Hidden
 @RequestMapping(value="/app/common")
 public class CommonController {
     private IAdHtmlClickLogService adHtmlClickLogService;

+ 1 - 1
fs-ad-api/src/main/java/com/fs/app/controller/MockAppController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.HashMap;

+ 2 - 2
fs-ad-api/src/main/java/com/fs/framework/aspectj/LogAspect.java

@@ -27,8 +27,8 @@ import org.springframework.validation.BindingResult;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.HandlerMapping;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Iterator;

+ 4 - 2
fs-ad-api/src/main/java/com/fs/framework/config/DataSourceConfig.java

@@ -8,18 +8,20 @@ import com.fs.framework.datasource.DynamicDataSource;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 import javax.sql.DataSource;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
 @Configuration
+@EnableConfigurationProperties(DruidStatProperties.class) // 添加这行
 public class DataSourceConfig {
 
     @Bean
@@ -62,7 +64,7 @@ public class DataSourceConfig {
         Filter filter = new Filter()
         {
             @Override
-            public void init(javax.servlet.FilterConfig filterConfig) throws ServletException
+            public void init(jakarta.servlet.FilterConfig filterConfig) throws ServletException
             {
             }
             @Override

+ 2 - 2
fs-ad-api/src/main/java/com/fs/framework/config/DruidConfig.java

@@ -15,7 +15,7 @@
 //import org.springframework.context.annotation.Configuration;
 //import org.springframework.context.annotation.Primary;
 //
-//import javax.servlet.*;
+//import jakarta.servlet.*;
 //import javax.sql.DataSource;
 //import java.io.IOException;
 //import java.util.HashMap;
@@ -93,7 +93,7 @@
 //        Filter filter = new Filter()
 //        {
 //            @Override
-//            public void init(javax.servlet.FilterConfig filterConfig) throws ServletException
+//            public void init(jakarta.servlet.FilterConfig filterConfig) throws ServletException
 //            {
 //            }
 //            @Override

+ 1 - 1
fs-ad-api/src/main/java/com/fs/framework/config/FilterConfig.java

@@ -9,7 +9,7 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import javax.servlet.DispatcherType;
+import jakarta.servlet.DispatcherType;
 import java.util.HashMap;
 import java.util.Map;
 

+ 1 - 1
fs-ad-api/src/main/java/com/fs/framework/config/ResourcesConfig.java

@@ -53,7 +53,7 @@ public class ResourcesConfig implements WebMvcConfigurer
         CorsConfiguration config = new CorsConfiguration();
         config.setAllowCredentials(true);
         // 设置访问源地址
-        config.addAllowedOrigin("*");
+        config.addAllowedOriginPattern("*");
         // 设置访问源请求头
         config.addAllowedHeader("*");
         // 设置访问源请求方法

+ 16 - 18
fs-ad-api/src/main/java/com/fs/framework/config/SecurityConfig.java

@@ -1,20 +1,23 @@
 package com.fs.framework.config;
 
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.BeanIds;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.SecurityFilterChain;
 
 /**
  * spring security配置
  * 
 
  */
-@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
-public class SecurityConfig extends WebSecurityConfigurerAdapter
-{
+@Configuration
+@EnableWebSecurity // 启用Web安全
+@EnableMethodSecurity(securedEnabled = true)
+public class SecurityConfig {
 
     /**
      * anyRequest          |   匹配所有请求路径
@@ -31,20 +34,15 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      * rememberMe          |   允许通过remember-me登录的用户访问
      * authenticated       |   用户登录后可访问
      */
-    @Override
-    protected void configure(HttpSecurity http) throws Exception
-    {
-        http.authorizeRequests()
-                .antMatchers("/**").permitAll()
-                .anyRequest().authenticated()
-                .and().csrf().disable();
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
+        http.authorizeHttpRequests(auth -> auth.requestMatchers("/**").permitAll().anyRequest().authenticated()).csrf(csrf -> csrf.disable());
+        return http.build();
     }
 
-    @Bean(name = BeanIds.AUTHENTICATION_MANAGER)
-    @Override
-    public AuthenticationManager authenticationManagerBean() throws Exception {
-        return super.authenticationManagerBean();
+    @Bean
+    public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
+        return authConfig.getAuthenticationManager();
     }
 
-
 }

+ 1 - 1
fs-ad-api/src/main/java/com/fs/framework/config/ServerConfig.java

@@ -3,7 +3,7 @@ package com.fs.framework.config;
 import com.fs.common.utils.ServletUtils;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * 服务相关配置

+ 121 - 121
fs-ad-api/src/main/java/com/fs/framework/config/SwaggerConfig.java

@@ -1,121 +1,121 @@
-package com.fs.framework.config;
-
-import com.fs.common.config.FSConfig;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.models.auth.In;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.*;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Swagger2的接口配置
- * 
-
- */
-@Configuration
-public class SwaggerConfig
-{
-    /** 系统基础配置 */
-    @Autowired
-    private FSConfig fsConfig;
-
-    /** 是否开启swagger */
-    @Value("${swagger.enabled}")
-    private boolean enabled;
-
-    /** 设置请求的统一前缀 */
-    @Value("${swagger.pathMapping}")
-    private String pathMapping;
-
-    /**
-     * 创建API
-     */
-    @Bean
-    public Docket createRestApi()
-    {
-        return new Docket(DocumentationType.SWAGGER_2)
-                // 是否启用Swagger
-                .enable(enabled)
-                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
-                .apiInfo(apiInfo())
-                // 设置哪些接口暴露给Swagger展示
-                .select()
-                // 扫描所有有注解的api,用这种方式更灵活
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                // 扫描指定包中的swagger注解
-                // .apis(RequestHandlerSelectors.basePackage("com.fs.project.tool.swagger"))
-                // 扫描所有 .apis(RequestHandlerSelectors.any())
-                .paths(PathSelectors.any())
-                .build()
-                /* 设置安全模式,swagger可以设置访问token */
-                .securitySchemes(securitySchemes())
-                .securityContexts(securityContexts())
-                .pathMapping(pathMapping);
-    }
-
-    /**
-     * 安全模式,这里指定token通过Authorization头请求头传递
-     */
-    private List<ApiKey> securitySchemes()
-    {
-        List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
-        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
-        return apiKeyList;
-    }
-
-    /**
-     * 安全上下文
-     */
-    private List<SecurityContext> securityContexts()
-    {
-        List<SecurityContext> securityContexts = new ArrayList<>();
-        securityContexts.add(
-                SecurityContext.builder()
-                        .securityReferences(defaultAuth())
-                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
-                        .build());
-        return securityContexts;
-    }
-
-    /**
-     * 默认的安全上引用
-     */
-    private List<SecurityReference> defaultAuth()
-    {
-        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
-        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
-        authorizationScopes[0] = authorizationScope;
-        List<SecurityReference> securityReferences = new ArrayList<>();
-        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
-        return securityReferences;
-    }
-
-    /**
-     * 添加摘要信息
-     */
-    private ApiInfo apiInfo()
-    {
-        // 用ApiInfoBuilder进行定制
-        return new ApiInfoBuilder()
-                // 设置标题
-                .title("标题:FS管理系统_接口文档")
-                // 描述
-                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
-                // 作者信息
-                .contact(new Contact(fsConfig.getName(), null, null))
-                // 版本
-                .version("版本号:" + fsConfig.getVersion())
-                .build();
-    }
-}
+//package com.fs.framework.config;
+//
+//import com.fs.common.config.FSConfig;
+//import io.swagger.v3.oas.annotations.Operation;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import springfox.documentation.builders.ApiInfoBuilder;
+//import springfox.documentation.builders.PathSelectors;
+//import springfox.documentation.builders.RequestHandlerSelectors;
+//import springfox.documentation.service.*;
+//import springfox.documentation.spi.DocumentationType;
+//import springfox.documentation.spi.service.contexts.SecurityContext;
+//import springfox.documentation.spring.web.plugins.Docket;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//
+///**
+// * Swagger2的接口配置
+// *
+//
+// */
+//@Configuration
+//public class SwaggerConfig
+//{
+//    /** 系统基础配置 */
+//    @Autowired
+//    private FSConfig fsConfig;
+//
+//    /** 是否开启swagger */
+//    @Value("${swagger.enabled}")
+//    private boolean enabled;
+//
+//    /** 设置请求的统一前缀 */
+//    @Value("${swagger.pathMapping}")
+//    private String pathMapping;
+//
+//    /**
+//     * 创建API
+//     */
+//    @Bean
+//    public Docket createRestApi()
+//    {
+//        return new Docket(DocumentationType.SWAGGER_2)
+//                // 是否启用Swagger
+//                .enable(enabled)
+//                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
+//                .apiInfo(apiInfo())
+//                // 设置哪些接口暴露给Swagger展示
+//                .select()
+//                // 扫描所有有注解的api,用这种方式更灵活
+//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+//                // 扫描指定包中的swagger注解
+//                // .apis(RequestHandlerSelectors.basePackage("com.fs.project.tool.swagger"))
+//                // 扫描所有 .apis(RequestHandlerSelectors.any())
+//                .paths(PathSelectors.any())
+//                .build()
+//                /* 设置安全模式,swagger可以设置访问token */
+//                .securitySchemes(securitySchemes())
+//                .securityContexts(securityContexts())
+//                .pathMapping(pathMapping);
+//    }
+//
+//    /**
+//     * 安全模式,这里指定token通过Authorization头请求头传递
+//     */
+//    private List<ApiKey> securitySchemes()
+//    {
+//        List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
+//        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
+//        return apiKeyList;
+//    }
+//
+//    /**
+//     * 安全上下文
+//     */
+//    private List<SecurityContext> securityContexts()
+//    {
+//        List<SecurityContext> securityContexts = new ArrayList<>();
+//        securityContexts.add(
+//                SecurityContext.builder()
+//                        .securityReferences(defaultAuth())
+//                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
+//                        .build());
+//        return securityContexts;
+//    }
+//
+//    /**
+//     * 默认的安全上引用
+//     */
+//    private List<SecurityReference> defaultAuth()
+//    {
+//        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+//        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+//        authorizationScopes[0] = authorizationScope;
+//        List<SecurityReference> securityReferences = new ArrayList<>();
+//        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
+//        return securityReferences;
+//    }
+//
+//    /**
+//     * 添加摘要信息
+//     */
+//    private ApiInfo apiInfo()
+//    {
+//        // 用ApiInfoBuilder进行定制
+//        return new ApiInfoBuilder()
+//                // 设置标题
+//                .title("标题:FS管理系统_接口文档")
+//                // 描述
+//                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
+//                // 作者信息
+//                .contact(new Contact(fsConfig.getName(), null, null))
+//                // 版本
+//                .version("版本号:" + fsConfig.getVersion())
+//                .build();
+//    }
+//}

+ 14 - 26
fs-ad-api/src/main/java/com/fs/framework/interceptor/RepeatSubmitInterceptor.java

@@ -1,47 +1,35 @@
 package com.fs.framework.interceptor;
 
+import java.lang.reflect.Method;
+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; // 替换为接口
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.utils.ServletUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.lang.reflect.Method;
-
-/**
- * 防止重复提交拦截器
- *
-
- */
 @Component
-public abstract class RepeatSubmitInterceptor extends HandlerInterceptorAdapter
-{
+public abstract class RepeatSubmitInterceptor implements HandlerInterceptor { // 实现接口
+
     @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
-    {
-        if (handler instanceof HandlerMethod)
-        {
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        if (handler instanceof HandlerMethod) {
             HandlerMethod handlerMethod = (HandlerMethod) handler;
             Method method = handlerMethod.getMethod();
             RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class);
-            if (annotation != null)
-            {
-                if (this.isRepeatSubmit(request))
-                {
+            if (annotation != null) {
+                if (this.isRepeatSubmit(request)) {
                     AjaxResult ajaxResult = AjaxResult.error("不允许重复提交,请稍后再试");
                     ServletUtils.renderString(response, JSONObject.toJSONString(ajaxResult));
                     return false;
                 }
             }
             return true;
-        }
-        else
-        {
-            return super.preHandle(request, response, handler);
+        } else {
+            return true; // 接口默认无super方法,直接返回true
         }
     }
 

+ 1 - 1
fs-ad-api/src/main/java/com/fs/framework/interceptor/impl/SameUrlDataInterceptor.java

@@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;

+ 3 - 13
fs-admin/pom.xml

@@ -48,25 +48,15 @@
             <groupId>com.fs</groupId>
             <artifactId>fs-generator</artifactId>
         </dependency>
-        <!-- swagger2-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.clickhouse</groupId>
             <artifactId>clickhouse-jdbc</artifactId>
             <version>0.4.6</version>
         </dependency>
-        <!-- swagger2-UI-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
-        </dependency>
+
         <dependency>
-            <groupId>com.github.xiaoymin</groupId>
-            <artifactId>swagger-bootstrap-ui</artifactId>
-            <version>1.9.3</version>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
         </dependency>
         <dependency>
             <groupId>com.tencentcloudapi</groupId>

+ 1 - 1
fs-admin/src/main/java/com/fs/ad/controller/MockAppController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.HashMap;

+ 4 - 3
fs-admin/src/main/java/com/fs/company/controller/CompanyDomainBindController.java

@@ -3,7 +3,8 @@ package com.fs.company.controller;
 import java.util.List;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.api.R;
+
+import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.model.LoginUser;
 import com.fs.common.utils.ServletUtils;
 import com.fs.company.param.CompanyDomainBindParam;
@@ -118,10 +119,10 @@ public class CompanyDomainBindController extends BaseController
     @PostMapping("/domainBatchBinding")
     public R domainBatchBinding(@RequestBody CompanyDomainBindParam param) {
         if (ObjectUtil.isEmpty(param.getCompanyIds()) || param.getCompanyIds().isEmpty()) {
-            return R.failed("绑定失败,至少有一条域名分配信息!");
+            return R.error("绑定失败,至少有一条域名分配信息!");
         }
         if (ObjectUtil.isEmpty(param.getCompanyUserIds()) || param.getCompanyUserIds().isEmpty()) {
-            return R.failed("绑定失败,至少有一条分配人员信息!");
+            return R.error("绑定失败,至少有一条分配人员信息!");
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setUserId(loginUser.getUser().getUserId().toString());

+ 8 - 7
fs-admin/src/main/java/com/fs/company/controller/CompanyDomainController.java

@@ -3,7 +3,8 @@ package com.fs.company.controller;
 import java.util.List;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.api.R;
+
+import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.model.LoginUser;
 import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.ServletUtils;
@@ -127,10 +128,10 @@ public class CompanyDomainController extends BaseController {
     @PostMapping("/domainBatchBinding")
     public R domainBatchBinding(@RequestBody CompanyDomainParam param) {
         if (ObjectUtil.isEmpty(param.getDomainIds()) || param.getDomainIds().isEmpty()) {
-            return R.failed("绑定失败,至少有一条绑定域名信息!");
+            return R.error("绑定失败,至少有一条绑定域名信息!");
         }
         if (ObjectUtil.isEmpty(param.getCompanyIds()) || param.getCompanyIds().isEmpty()) {
-            return R.failed("绑定失败,至少有一条绑定公司信息!");
+            return R.error("绑定失败,至少有一条绑定公司信息!");
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setUserId(loginUser.getUser().getUserId().toString());
@@ -151,18 +152,18 @@ public class CompanyDomainController extends BaseController {
     public R importDomainData(MultipartFile file) {
         // 1. 检查文件是否为空
         if (file.isEmpty()) {
-            return R.failed("上传的文件不能为空");
+            return R.error("上传的文件不能为空");
         }
 
         // 2. 检查文件大小
         if (file.getSize() > MAX_FILE_SIZE) {
-            return R.failed("文件大小不能超过5MB");
+            return R.error("文件大小不能超过5MB");
         }
 
         // 3. 检查文件扩展名
         String fileName = file.getOriginalFilename();
         if (fileName == null || !isValidExcelFile(fileName)) {
-            return R.failed("请上传Excel文件(.xlsx或.xls格式)");
+            return R.error("请上传Excel文件(.xlsx或.xls格式)");
         }
         CompanyDomainParam param = new CompanyDomainParam();
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
@@ -173,7 +174,7 @@ public class CompanyDomainController extends BaseController {
             return companyDomainService.importDomainData(param, companyDomainList);
         } catch (Exception e) {
             e.getStackTrace();
-            return R.failed("导入失败!");
+            return R.error("导入失败!");
         }
     }
 

+ 10 - 10
fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java

@@ -21,7 +21,7 @@ import com.fs.course.vo.*;
 import com.fs.his.vo.OptionsVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -65,7 +65,7 @@ public class FsUserCoursePeriodController extends BaseController {
 
     @PreAuthorize("@ss.hasPermi('course:period:list')")
     @PostMapping("/page")
-    @ApiOperation("自定义查询主列表分页")
+    @Operation(summary = "自定义查询主列表分页")
     public R pageList(@RequestBody FsUserCoursePeriod fsUserCoursePeriod)
     {
 //        startPage();
@@ -175,14 +175,14 @@ public class FsUserCoursePeriodController extends BaseController {
         return fsUserCoursePeriodDaysService.updateListCourseData(entity);
     }
 
-    @ApiOperation("根据营期id获取公司红包金额列表(暂废弃)")
+    @Operation(summary = "根据营期id获取公司红包金额列表(暂废弃)")
     @GetMapping("/companyList")
     public R getCompanyByPeriod(Long periodId, Long videoId) {
         List<CompanyRedPacketParam> companyList = fsUserCoursePeriodDaysService.getCompanyByPeriod(periodId, videoId);
         return R.ok().put("data", companyList);
     }
 
-    @ApiOperation("获取设置红包金额列表")
+    @Operation(summary = "获取设置红包金额列表")
     @GetMapping("/redPacketList")
     public R getPeriodRedPacketList(Long periodId, Long companyId) {
         List<PeriodRedPacketVO> periodRedPacketList = fsUserCoursePeriodDaysService.getPeriodRedPacketList(periodId, companyId);
@@ -191,7 +191,7 @@ public class FsUserCoursePeriodController extends BaseController {
 
     @Log(title = "按课程批量保存设置红包金额", businessType = BusinessType.UPDATE)
     @PreAuthorize("@ss.hasPermi('course:period:setCourseRedPacket')")
-    @ApiOperation("按课程批量保存设置红包金额")
+    @Operation(summary = "按课程批量保存设置红包金额")
     @PostMapping("/batchRedPacket")
     public R batchRedPacketMoney(@RequestBody List<FsUserCourseVideoRedPackage> videoRedPackageList) {
         try {
@@ -205,7 +205,7 @@ public class FsUserCoursePeriodController extends BaseController {
 
     @Log(title = "按营期批量保存设置红包金额", businessType = BusinessType.UPDATE)
     @PreAuthorize("@ss.hasPermi('course:period:setRedPacket')")
-    @ApiOperation("按营期批量保存设置红包金额")
+    @Operation(summary = "按营期批量保存设置红包金额")
     @PostMapping("/batchRedPacket/byPeriod")
     public R batchRedPacketByPeriod(@RequestBody List<FsBatchPeriodRedPackageParam> periodRedPackageList) {
         try {
@@ -218,7 +218,7 @@ public class FsUserCoursePeriodController extends BaseController {
     }
 
     @PostMapping("/periodCount")
-    @ApiOperation("营期统计")
+    @Operation(summary = "营期统计")
     public R periodCourseCount(@RequestBody PeriodCountParam param) {
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         List<FsPeriodCountVO> list = fsUserCoursePeriodDaysService.periodCourseCount(param);
@@ -244,14 +244,14 @@ public class FsUserCoursePeriodController extends BaseController {
     }
 
     @PreAuthorize("@ss.hasPermi('course:period:courseMove')")
-    @ApiOperation("营期课程-上移/下移")
+    @Operation(summary = "营期课程-上移/下移")
     @PutMapping("/courseMove")
     public R periodCourseMove(Long id, Long targetId) {
         return fsUserCoursePeriodDaysService.periodCourseMove(id, targetId);
     }
 
     @PreAuthorize("@ss.hasPermi('course:period:close')")
-    @ApiOperation("结束营期")
+    @Operation(summary = "结束营期")
     @PostMapping("/closePeriod")
     public R closePeriod(Long id) {
         fsUserCoursePeriodService.closePeriod(id);
@@ -259,7 +259,7 @@ public class FsUserCoursePeriodController extends BaseController {
     }
 
     @PostMapping("/periodCourseStatisticCount")
-    @ApiOperation("会员详情训练营数据总览")
+    @Operation(summary = "会员详情训练营数据总览")
     public R periodCourseStatisticCount(@RequestBody PeriodStatisticCountParam param) {
         if (param == null) {
             return R.error("请求参数不能为空!");

+ 1 - 1
fs-admin/src/main/java/com/fs/his/controller/FSSmsCommonController.java

@@ -13,7 +13,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

+ 2 - 2
fs-admin/src/main/java/com/fs/his/controller/FsCityController.java

@@ -6,7 +6,7 @@ import com.fs.common.core.domain.R;
 import com.fs.his.utils.CityTreeUtil;
 import com.fs.his.vo.CityVO;
 import com.google.common.collect.Lists;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -107,7 +107,7 @@ public class FsCityController extends BaseController
         return toAjax(fsCityService.deleteFsCityByIds(ids));
     }
 
-    @ApiOperation("获取城市数据")
+    @Operation(summary = "获取城市数据")
     @GetMapping("/getCitys")
     public R getCitys(){
         List<FsCity> list=fsCityService.selectFsCity();

+ 4 - 4
fs-admin/src/main/java/com/fs/his/controller/FsExpressCommonController.java

@@ -12,8 +12,8 @@ import com.fs.his.dto.ExpressResultDTO;
 import com.fs.his.mapper.FsUserIntegralLogsMapper;
 import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.service.IFsUserService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +24,7 @@ import java.util.Date;
 import static com.fs.his.utils.PhoneUtil.encryptPhone;
 
 
-@Api("公共接口")
+@Tag(name = "公共接口")
 @RestController
 @RequestMapping(value="/app/common")
 public class FsExpressCommonController extends BaseController {
@@ -35,7 +35,7 @@ public class FsExpressCommonController extends BaseController {
 	@Autowired
 	private FsUserIntegralLogsMapper integralLogsMapper;
 	protected final Logger logger = LoggerFactory.getLogger(this.getClass());
-	@ApiOperation("查询运单信息")
+	@Operation(summary = "查询运单信息")
 	@PostMapping(path = "/expressNotify" )
 	public ExpressResultDTO expressNotify(ExpressNotifyDTO notifyDTO) throws Exception
 	{

+ 3 - 3
fs-admin/src/main/java/com/fs/his/controller/FsInquiryOrderController.java

@@ -22,7 +22,7 @@ import com.fs.his.service.IFsExportTaskService;
 import com.fs.his.service.IFsInquiryOrderLogsService;
 import com.fs.his.service.IFsInquiryOrderService;
 import com.fs.his.vo.*;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
@@ -224,7 +224,7 @@ public class FsInquiryOrderController extends BaseController
 
     @Transactional
     @RepeatSubmit
-    @ApiOperation("取消订单")
+    @Operation(summary = "取消订单")
     @PostMapping("/cancelOrder")
     public R cancelOrder(@Validated @RequestBody FsInquiryOrderCancelParam param ){
         param.setType(4);
@@ -235,7 +235,7 @@ public class FsInquiryOrderController extends BaseController
 
     @Transactional
     @RepeatSubmit
-    @ApiOperation("退款订单")
+    @Operation(summary = "退款订单")
     @PreAuthorize("@ss.hasPermi('his:inquiryOrder:refundOrder')")
     @PostMapping("/refundOrder")
     public R refundOrder(@Validated @RequestBody FsInquiryOrderRefundParam param){

+ 3 - 2
fs-admin/src/main/java/com/fs/his/controller/FsPhysicalReportTemplateFieldController.java

@@ -2,7 +2,8 @@ package com.fs.his.controller;
 
 import java.util.List;
 
-import com.baomidou.mybatisplus.extension.api.R;
+
+import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.model.LoginUser;
 import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.ServletUtils;
@@ -114,7 +115,7 @@ public class FsPhysicalReportTemplateFieldController extends BaseController {
     @PostMapping("/getTemplateField/{templateId}")
     public R getTemplateField(@PathVariable String templateId) {
         if (StringUtils.isNull(templateId)) {
-            return R.failed("操作失败,模板ID不能为空!");
+            return R.error("操作失败,模板ID不能为空!");
         }
         return fsPhysicalReportTemplateFieldService.getTemplateField(templateId);
     }

+ 1 - 1
fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderBillLogController.java

@@ -4,7 +4,7 @@ import java.util.List;
 
 import com.fs.common.core.domain.R;
 import com.fs.his.param.OrderBillParam;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;

+ 5 - 5
fs-admin/src/main/java/com/fs/his/controller/FsStoreOrderController.java

@@ -44,7 +44,7 @@ import com.fs.his.vo.*;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import com.github.pagehelper.PageHelper;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,7 +58,7 @@ import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.common.core.page.TableDataInfo;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 import static com.fs.his.utils.PhoneUtil.*;
 
@@ -519,7 +519,7 @@ public class FsStoreOrderController extends BaseController
         return getDataTable(list);
     }
     @Log(title = "手动推管易", businessType = BusinessType.INSERT)
-    @ApiOperation("创建ERP订单")
+    @Operation(summary = "创建ERP订单")
     @PreAuthorize("@ss.hasPermi('his:storeOrder:createErpOrder')")
     @GetMapping(value = "/createErpOrder/{id}")
     public R createErpOrder(@PathVariable("id") Long id) throws Exception
@@ -530,7 +530,7 @@ public class FsStoreOrderController extends BaseController
     }
 
     @Log(title = "手动推管易", businessType = BusinessType.INSERT)
-    @ApiOperation("批量创建ERP订单")
+    @Operation(summary = "批量创建ERP订单")
     @PreAuthorize("@ss.hasPermi('his:storeOrder:createErpOrder')")
     @PostMapping(value = "/batchCreateErpOrder")
     public R batchCreateErpOrder(@RequestBody FsStoreOrderSetErpPhoneParam param)
@@ -571,7 +571,7 @@ public class FsStoreOrderController extends BaseController
     }
 
 
-    @ApiOperation("批量设置订单账户")
+    @Operation(summary = "批量设置订单账户")
     @PreAuthorize("@ss.hasPermi('his:storeOrder:createErpOrder')")
     @PostMapping(value = "/batchSetErpOrder")
     public R batchSetErpOrder(@RequestBody FsStoreOrderSetErpPhoneParam param)

+ 2 - 2
fs-admin/src/main/java/com/fs/his/controller/FsStoreProductController.java

@@ -12,7 +12,7 @@ import com.fs.his.vo.FsStoreProductAttrValueVO;
 import com.fs.his.vo.FsStoreProductExcelVO;
 import com.fs.his.vo.FsStoreProductVO;
 import com.fs.his.vo.OptionsVO;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -159,7 +159,7 @@ public class FsStoreProductController extends BaseController
         return getDataTable(list);
     }
 
-    @ApiOperation(value = "生成属性")
+    @Operation(summary = "生成属性")
     @PostMapping(value = "/genFormatAttr/{productId}")
     public ResponseEntity genFormatAttr(@PathVariable Long productId, @RequestBody String jsonStr){
 

+ 4 - 4
fs-admin/src/main/java/com/fs/his/controller/FsUserController.java

@@ -29,7 +29,7 @@ import com.fs.store.param.h5.FsUserPageListParam;
 import com.fs.store.vo.h5.FsUserPageListVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -237,7 +237,7 @@ public class FsUserController extends BaseController
 
     @PreAuthorize("@ss.hasPermi('his:user:darkRoomList')")
     @GetMapping("/darkRoomList")
-    @ApiOperation("小黑屋")
+    @Operation(summary = "小黑屋")
     public R darkRoomList(FsUserPageListParam param) {
 //        startPage();
 //        PageHelper.startPage(param.getPageNum(), param.getPageSize());
@@ -253,7 +253,7 @@ public class FsUserController extends BaseController
 
     @PreAuthorize("@ss.hasPermi('his:user:enabledUsers')")
     @PostMapping("/enabledUsers")
-    @ApiOperation("批量启用会员")
+    @Operation(summary = "批量启用会员")
     public ResponseResult<Boolean> enabledUsers(@RequestBody List<UserProjectDTO> ids) {
         log.debug("批量启用会员 ids: {}", JSON.toJSONString(ids));
         Boolean r = userCompanyUserService.batchUpdateUserProjectStatus(ids, 1);
@@ -262,7 +262,7 @@ public class FsUserController extends BaseController
 
     @PreAuthorize("@ss.hasPermi('his:user:addPoints')")
     @PostMapping("/addPoints")
-    @ApiOperation("添加积分")
+    @Operation(summary = "添加积分")
     public R addPoints(@RequestBody @Validated FsUserAddPointsParam param) {
         FsUserAddIntegralTemplateParam integralTemplateParam = new FsUserAddIntegralTemplateParam();
         integralTemplateParam.setUserId(param.getUserId());

+ 3 - 3
fs-admin/src/main/java/com/fs/his/controller/HisDoctorAiChatSessionController.java

@@ -26,7 +26,7 @@ import com.fs.common.enums.BusinessType;
 
 import com.fs.common.utils.poi.ExcelUtil;
 
-import javax.annotation.Resource;
+
 
 /**
  * 对话关系Controller
@@ -38,10 +38,10 @@ import javax.annotation.Resource;
 @RequestMapping("doctorChat/session")
 public class HisDoctorAiChatSessionController extends BaseController
 {
-    @Resource
+    @Autowired
     private IHisDoctorAiChatSessionService doctorAiChatSessionService;
 
-    @Resource
+    @Autowired
     private IHisDoctorAiChatMsgService chatMsgService;
 
     /**

+ 1 - 1
fs-admin/src/main/java/com/fs/his/controller/HzOMSErpApiController.java

@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 

+ 3 - 2
fs-admin/src/main/java/com/fs/qw/controller/QwUserController.java

@@ -1,8 +1,9 @@
 package com.fs.qw.controller;
 
-import com.baomidou.mybatisplus.extension.api.R;
+
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
 import com.fs.qw.param.QwFsUserParam;
 import com.fs.qw.service.IQwUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +33,6 @@ public class QwUserController extends BaseController {
      * **/
     @GetMapping("/getQwUserInfo")
     public R getQwUserInfo(QwFsUserParam param){
-        return R.ok(qwUserService.getQwUserInfo(param));
+        return R.ok().put("data", qwUserService.getQwUserInfo(param));
     }
 }

+ 1 - 1
fs-admin/src/main/java/com/fs/third/http/HttpHelper.java

@@ -4,7 +4,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.ServletRequest;
+import jakarta.servlet.ServletRequest;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;

+ 31 - 25
fs-admin/src/main/java/com/fs/web/controller/common/CaptchaController.java

@@ -1,23 +1,24 @@
 package com.fs.web.controller.common;
 
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.util.FastByteArrayOutputStream;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.google.code.kaptcha.Producer;
 import com.fs.common.constant.Constants;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.sign.Base64;
 import com.fs.common.utils.uuid.IdUtils;
 import com.fs.system.service.ISysConfigService;
+import com.google.code.kaptcha.Producer;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.FastByteArrayOutputStream;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 验证码操作处理
@@ -27,21 +28,26 @@ import com.fs.system.service.ISysConfigService;
 @RestController
 public class CaptchaController
 {
-    @Resource(name = "captchaProducer")
-    private Producer captchaProducer;
-
-    @Resource(name = "captchaProducerMath")
-    private Producer captchaProducerMath;
+    private final Producer captchaProducer;
+    private final Producer captchaProducerMath;
+    private final RedisCache redisCache;
+    private final ISysConfigService configService;
+    private final String captchaType;
 
     @Autowired
-    private RedisCache redisCache;
-    
-    // 验证码类型
-    @Value("${fs.captchaType}")
-    private String captchaType;
-    
-    @Autowired
-    private ISysConfigService configService;
+    public CaptchaController(
+            @Qualifier("captchaProducer") Producer captchaProducer,
+            @Qualifier("captchaProducerMath") Producer captchaProducerMath,
+            RedisCache redisCache,
+            ISysConfigService configService,
+            @Value("${fs.captchaType}") String captchaType) {
+
+        this.captchaProducer = captchaProducer;
+        this.captchaProducerMath = captchaProducerMath;
+        this.redisCache = redisCache;
+        this.configService = configService;
+        this.captchaType = captchaType;
+    }
     /**
      * 生成验证码
      */

+ 2 - 2
fs-admin/src/main/java/com/fs/web/controller/common/CommonController.java

@@ -1,7 +1,7 @@
 package com.fs.web.controller.common;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 
 import com.fs.common.core.domain.R;

+ 1 - 1
fs-admin/src/main/java/com/fs/web/controller/system/SysKeywordController.java

@@ -17,7 +17,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;

+ 21 - 28
fs-admin/src/main/java/com/fs/web/controller/tool/TestController.java

@@ -1,33 +1,26 @@
 package com.fs.web.controller.tool;
 
+import com.baidu.dev2.thirdparty.swagger.annotations.ApiImplicitParam;
+import com.baidu.dev2.thirdparty.swagger.annotations.ApiImplicitParams;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.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;
+import org.springframework.web.bind.annotation.*;
+
 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.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.AjaxResult;
-import com.fs.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 用户测试方法
  * 
 
  */
-@Api("用户信息管理")
+@Tag(name = "用户信息管理")
 @RestController
 @RequestMapping("/test/user")
 public class TestController extends BaseController
@@ -38,7 +31,7 @@ public class TestController extends BaseController
         users.put(2, new UserEntity(2, "ry", "admin123", "15666666666"));
     }
 
-    @ApiOperation("获取用户列表")
+    @Operation(summary = "获取用户列表")
     @GetMapping("/list")
     public AjaxResult userList()
     {
@@ -46,7 +39,7 @@ public class TestController extends BaseController
         return AjaxResult.success(userList);
     }
 
-    @ApiOperation("获取用户详细")
+    @Operation(summary = "获取用户详细")
     @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path")
     @GetMapping("/{userId}")
     public AjaxResult getUser(@PathVariable Integer userId)
@@ -61,7 +54,7 @@ public class TestController extends BaseController
         }
     }
 
-    @ApiOperation("新增用户")
+    @Operation(summary = "新增用户")
     @ApiImplicitParams({
         @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Integer"),
         @ApiImplicitParam(name = "username", value = "用户名称", dataType = "String"),
@@ -78,7 +71,7 @@ public class TestController extends BaseController
         return AjaxResult.success(users.put(user.getUserId(), user));
     }
 
-    @ApiOperation("更新用户")
+    @Operation(summary = "更新用户")
     @PutMapping("/update")
     public AjaxResult update(@RequestBody UserEntity user)
     {
@@ -94,7 +87,7 @@ public class TestController extends BaseController
         return AjaxResult.success(users.put(user.getUserId(), user));
     }
 
-    @ApiOperation("删除用户信息")
+    @Operation(summary = "删除用户信息")
     @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path")
     @DeleteMapping("/{userId}")
     public AjaxResult delete(@PathVariable Integer userId)
@@ -111,19 +104,19 @@ public class TestController extends BaseController
     }
 }
 
-@ApiModel(value = "UserEntity", description = "用户实体")
+@Schema(description = "用户实体")
 class UserEntity
 {
-    @ApiModelProperty("用户ID")
+    @Schema(description = "用户ID")
     private Integer userId;
 
-    @ApiModelProperty("用户名称")
+    @Schema(description = "用户名称")
     private String username;
 
-    @ApiModelProperty("用户密码")
+    @Schema(description = "用户密码")
     private String password;
 
-    @ApiModelProperty("用户手机")
+    @Schema(description = "用户手机")
     private String mobile;
 
     public UserEntity()

+ 125 - 125
fs-admin/src/main/java/com/fs/web/core/config/SwaggerConfig.java

@@ -1,125 +1,125 @@
-package com.fs.web.core.config;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import com.fs.common.config.FSConfig;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.models.auth.In;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.ApiKey;
-import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.SecurityReference;
-import springfox.documentation.service.SecurityScheme;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-
-/**
- * Swagger2的接口配置
- * 
-
- */
-@Configuration
-public class SwaggerConfig
-{
-    /** 系统基础配置 */
-    @Autowired
-    private FSConfig fsConfig;
-
-    /** 是否开启swagger */
-    @Value("${swagger.enabled}")
-    private boolean enabled;
-
-    /** 设置请求的统一前缀 */
-    @Value("${swagger.pathMapping}")
-    private String pathMapping;
-
-    /**
-     * 创建API
-     */
-    @Bean
-    public Docket createRestApi()
-    {
-        return new Docket(DocumentationType.SWAGGER_2)
-                // 是否启用Swagger
-                .enable(enabled)
-                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
-                .apiInfo(apiInfo())
-                // 设置哪些接口暴露给Swagger展示
-                .select()
-                // 扫描所有有注解的api,用这种方式更灵活
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                // 扫描指定包中的swagger注解
-                // .apis(RequestHandlerSelectors.basePackage("com.fs.project.tool.swagger"))
-                // 扫描所有 .apis(RequestHandlerSelectors.any())
-                .paths(PathSelectors.any())
-                .build()
-                /* 设置安全模式,swagger可以设置访问token */
-                .securitySchemes(securitySchemes())
-                .securityContexts(securityContexts())
-                .pathMapping(pathMapping);
-    }
-
-    /**
-     * 安全模式,这里指定token通过Authorization头请求头传递
-     */
-    private List<ApiKey> securitySchemes()
-    {
-        List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
-        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
-        return apiKeyList;
-    }
-
-    /**
-     * 安全上下文
-     */
-    private List<SecurityContext> securityContexts()
-    {
-        List<SecurityContext> securityContexts = new ArrayList<>();
-        securityContexts.add(
-                SecurityContext.builder()
-                        .securityReferences(defaultAuth())
-                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
-                        .build());
-        return securityContexts;
-    }
-
-    /**
-     * 默认的安全上引用
-     */
-    private List<SecurityReference> defaultAuth()
-    {
-        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
-        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
-        authorizationScopes[0] = authorizationScope;
-        List<SecurityReference> securityReferences = new ArrayList<>();
-        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
-        return securityReferences;
-    }
-
-    /**
-     * 添加摘要信息
-     */
-    private ApiInfo apiInfo()
-    {
-        // 用ApiInfoBuilder进行定制
-        return new ApiInfoBuilder()
-                // 设置标题
-                .title("标题:FS管理系统_接口文档")
-                // 描述
-                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
-                // 作者信息
-                .contact(new Contact(fsConfig.getName(), null, null))
-                // 版本
-                .version("版本号:" + fsConfig.getVersion())
-                .build();
-    }
-}
+//package com.fs.web.core.config;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import com.fs.common.config.FSConfig;
+//import io.swagger.v3.oas.annotations.Operation;
+//
+//import springfox.documentation.builders.ApiInfoBuilder;
+//import springfox.documentation.builders.PathSelectors;
+//import springfox.documentation.builders.RequestHandlerSelectors;
+//import springfox.documentation.service.ApiInfo;
+//import springfox.documentation.service.ApiKey;
+//import springfox.documentation.service.AuthorizationScope;
+//import springfox.documentation.service.Contact;
+//import springfox.documentation.service.SecurityReference;
+//import springfox.documentation.service.SecurityScheme;
+//import springfox.documentation.spi.DocumentationType;
+//import springfox.documentation.spi.service.contexts.SecurityContext;
+//import springfox.documentation.spring.web.plugins.Docket;
+//
+///**
+// * Swagger2的接口配置
+// *
+//
+// */
+//@Configuration
+//public class SwaggerConfig
+//{
+//    /** 系统基础配置 */
+//    @Autowired
+//    private FSConfig fsConfig;
+//
+//    /** 是否开启swagger */
+//    @Value("${swagger.enabled}")
+//    private boolean enabled;
+//
+//    /** 设置请求的统一前缀 */
+//    @Value("${swagger.pathMapping}")
+//    private String pathMapping;
+//
+//    /**
+//     * 创建API
+//     */
+//    @Bean
+//    public Docket createRestApi()
+//    {
+//        return new Docket(DocumentationType.SWAGGER_2)
+//                // 是否启用Swagger
+//                .enable(enabled)
+//                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
+//                .apiInfo(apiInfo())
+//                // 设置哪些接口暴露给Swagger展示
+//                .select()
+//                // 扫描所有有注解的api,用这种方式更灵活
+//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+//                // 扫描指定包中的swagger注解
+//                // .apis(RequestHandlerSelectors.basePackage("com.fs.project.tool.swagger"))
+//                // 扫描所有 .apis(RequestHandlerSelectors.any())
+//                .paths(PathSelectors.any())
+//                .build()
+//                /* 设置安全模式,swagger可以设置访问token */
+//                .securitySchemes(securitySchemes())
+//                .securityContexts(securityContexts())
+//                .pathMapping(pathMapping);
+//    }
+//
+//    /**
+//     * 安全模式,这里指定token通过Authorization头请求头传递
+//     */
+//    private List<ApiKey> securitySchemes()
+//    {
+//        List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
+//        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
+//        return apiKeyList;
+//    }
+//
+//    /**
+//     * 安全上下文
+//     */
+//    private List<SecurityContext> securityContexts()
+//    {
+//        List<SecurityContext> securityContexts = new ArrayList<>();
+//        securityContexts.add(
+//                SecurityContext.builder()
+//                        .securityReferences(defaultAuth())
+//                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
+//                        .build());
+//        return securityContexts;
+//    }
+//
+//    /**
+//     * 默认的安全上引用
+//     */
+//    private List<SecurityReference> defaultAuth()
+//    {
+//        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+//        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+//        authorizationScopes[0] = authorizationScope;
+//        List<SecurityReference> securityReferences = new ArrayList<>();
+//        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
+//        return securityReferences;
+//    }
+//
+//    /**
+//     * 添加摘要信息
+//     */
+//    private ApiInfo apiInfo()
+//    {
+//        // 用ApiInfoBuilder进行定制
+//        return new ApiInfoBuilder()
+//                // 设置标题
+//                .title("标题:FS管理系统_接口文档")
+//                // 描述
+//                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
+//                // 作者信息
+//                .contact(new Contact(fsConfig.getName(), null, null))
+//                // 版本
+//                .version("版本号:" + fsConfig.getVersion())
+//                .build();
+//    }
+//}

+ 4 - 16
fs-ai-chat/pom.xml

@@ -20,21 +20,9 @@
             <artifactId>spring-boot-devtools</artifactId>
             <optional>true</optional> <!-- 表示依赖不会传递 -->
         </dependency>
-        <!-- swagger2-->
         <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-        </dependency>
-
-        <!-- swagger2-UI-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.github.xiaoymin</groupId>
-            <artifactId>swagger-bootstrap-ui</artifactId>
-            <version>1.9.3</version>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
         </dependency>
 
 
@@ -68,8 +56,8 @@
             <artifactId>kaptcha</artifactId>
             <exclusions>
                 <exclusion>
-                    <artifactId>javax.servlet-api</artifactId>
-                    <groupId>javax.servlet</groupId>
+                    <artifactId>jakarta.servlet-api</artifactId>
+                    <groupId>jakarta.servlet</groupId>
                 </exclusion>
             </exclusions>
         </dependency>

+ 4 - 9
fs-ai-chat/src/main/java/com/fs/app/controller/CommonController.java

@@ -34,14 +34,15 @@ import com.fs.wx.kf.vo.WeixinKfUserVO;
 import com.google.code.kaptcha.Producer;
 import com.qq.weixin.mp.aes.AesException;
 import com.qq.weixin.mp.aes.WXBizMsgCrypt;
-import io.swagger.annotations.Api;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.w3c.dom.Element;
 
-import javax.annotation.Resource;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -52,7 +53,7 @@ import static com.fs.common.constant.FsConstants.REDIS_CHAT_NEXTCURSOR;
 import static com.fs.common.constant.FsConstants.REDIS_CHAT_SESSION;
 
 
-@Api("公共接口")
+@Tag(name = "公共接口")
 @RestController
 @RequestMapping(value="/app/common/weixinkfAuth")
 public class CommonController {
@@ -73,12 +74,6 @@ public class CommonController {
     @Autowired
     private IFsInquiryOrderMsgService inquiryOrderMsgService;
 
-    @Resource(name = "captchaProducer")
-    private Producer captchaProducer;
-
-    @Resource(name = "captchaProducerMath")
-    private Producer captchaProducerMath;
-
     @Autowired
     private RedisCache redisCache;
 

+ 4 - 4
fs-ai-chat/src/main/java/com/fs/app/interceptor/AuthorizationInterceptor.java

@@ -11,16 +11,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Component;
 import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+import org.springframework.web.servlet.HandlerInterceptor;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * 权限(Token)验证
  */
 @Component
-public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
+public class AuthorizationInterceptor implements HandlerInterceptor {
     @Autowired
     private JwtUtils jwtUtils;
     @Autowired

+ 1 - 1
fs-ai-chat/src/main/java/com/fs/app/param/EditChatMsgParam.java

@@ -1,6 +1,6 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;

+ 1 - 1
fs-ai-chat/src/main/java/com/fs/app/param/LoginParam.java

@@ -1,6 +1,6 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;

+ 3 - 2
fs-ai-chat/src/main/java/com/fs/app/param/SignParam.java

@@ -1,6 +1,7 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -9,6 +10,6 @@ import javax.validation.constraints.NotBlank;
 @Data
 public class SignParam {
     @NotBlank(message = "请填写USERID")
-    @ApiModelProperty(value = "userId")
+    @Schema(description = "userId")
     private String userId;
 }

+ 3 - 3
fs-ai-chat/src/main/java/com/fs/app/websocket/service/WebSocketServer.java

@@ -31,9 +31,9 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import javax.websocket.*;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.*;
+import jakarta.websocket.server.PathParam;
+import jakarta.websocket.server.ServerEndpoint;
 import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.ZoneId;

+ 4 - 15
fs-common-api/pom.xml

@@ -23,21 +23,10 @@
             <artifactId>spring-boot-devtools</artifactId>
             <optional>true</optional> <!-- 表示依赖不会传递 -->
         </dependency>
-        <!-- swagger2-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-        </dependency>
 
-        <!-- swagger2-UI-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
-        </dependency>
         <dependency>
-            <groupId>com.github.xiaoymin</groupId>
-            <artifactId>swagger-bootstrap-ui</artifactId>
-            <version>1.9.3</version>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
         </dependency>
 
 
@@ -71,8 +60,8 @@
             <artifactId>kaptcha</artifactId>
             <exclusions>
                 <exclusion>
-                    <artifactId>javax.servlet-api</artifactId>
-                    <groupId>javax.servlet</groupId>
+                    <artifactId>jakarta.servlet-api</artifactId>
+                    <groupId>jakarta.servlet</groupId>
                 </exclusion>
             </exclusions>
         </dependency>

+ 2 - 2
fs-common-api/src/main/java/com/fs/app/controller/CommonController.java

@@ -9,14 +9,14 @@ import com.fs.common.core.redis.RedisCache;
 import com.fs.core.utils.OrderCodeUtils;
 import com.fs.fastGpt.service.IFastGptRoleService;
 
-import io.swagger.annotations.Api;
+import io.swagger.v3.oas.annotations.tags.Tag;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 
-@Api("公共接口")
+@Tag(name = "公共接口")
 @RestController
 @RequestMapping(value="/app/common")
 public class CommonController {

+ 4 - 4
fs-common-api/src/main/java/com/fs/app/interceptor/AuthorizationInterceptor.java

@@ -11,16 +11,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Component;
 import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+import org.springframework.web.servlet.HandlerInterceptor;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * 权限(Token)验证
  */
 @Component
-public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
+public class AuthorizationInterceptor implements HandlerInterceptor {
     @Autowired
     private JwtUtils jwtUtils;
     @Autowired

+ 2 - 2
fs-common-api/src/main/java/com/fs/framework/aspectj/LogAspect.java

@@ -27,8 +27,8 @@ import org.springframework.validation.BindingResult;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.HandlerMapping;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Iterator;

+ 2 - 2
fs-common-api/src/main/java/com/fs/framework/config/DruidConfig.java

@@ -15,7 +15,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
 
-import javax.servlet.*;
+import jakarta.servlet.*;
 import javax.sql.DataSource;
 import java.io.IOException;
 import java.util.HashMap;
@@ -93,7 +93,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
             {
             }
             @Override

+ 1 - 1
fs-common-api/src/main/java/com/fs/framework/config/FilterConfig.java

@@ -9,7 +9,7 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import javax.servlet.DispatcherType;
+import jakarta.servlet.DispatcherType;
 import java.util.HashMap;
 import java.util.Map;
 

+ 1 - 1
fs-common-api/src/main/java/com/fs/framework/config/ResourcesConfig.java

@@ -53,7 +53,7 @@ public class ResourcesConfig implements WebMvcConfigurer
         CorsConfiguration config = new CorsConfiguration();
         config.setAllowCredentials(true);
         // 设置访问源地址
-        config.addAllowedOrigin("*");
+        config.addAllowedOriginPattern("*");
         // 设置访问源请求头
         config.addAllowedHeader("*");
         // 设置访问源请求方法

+ 17 - 20
fs-common-api/src/main/java/com/fs/framework/config/SecurityConfig.java

@@ -1,20 +1,23 @@
 package com.fs.framework.config;
 
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.BeanIds;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.SecurityFilterChain;
 
 /**
  * spring security配置
- * 
+ *
 
  */
-@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
-public class SecurityConfig extends WebSecurityConfigurerAdapter
-{
+@Configuration
+@EnableWebSecurity // 启用Web安全
+@EnableMethodSecurity(securedEnabled = true)
+public class SecurityConfig {
 
     /**
      * anyRequest          |   匹配所有请求路径
@@ -31,21 +34,15 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      * rememberMe          |   允许通过remember-me登录的用户访问
      * authenticated       |   用户登录后可访问
      */
-    @Override
-    protected void configure(HttpSecurity http) throws Exception
-    {
-        http.authorizeRequests()
-                .antMatchers("/**").permitAll()
-                .antMatchers("/app/crmCustomer/**").anonymous()
-                .anyRequest().authenticated()
-                .and().csrf().disable();
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
+        http.authorizeHttpRequests(auth -> auth.requestMatchers("/**").permitAll().anyRequest().authenticated()).csrf(csrf -> csrf.disable());
+        return http.build();
     }
 
-    @Bean(name = BeanIds.AUTHENTICATION_MANAGER)
-    @Override
-    public AuthenticationManager authenticationManagerBean() throws Exception {
-        return super.authenticationManagerBean();
+    @Bean
+    public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
+        return authConfig.getAuthenticationManager();
     }
 
-
 }

+ 1 - 1
fs-common-api/src/main/java/com/fs/framework/config/ServerConfig.java

@@ -3,7 +3,7 @@ package com.fs.framework.config;
 import com.fs.common.utils.ServletUtils;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * 服务相关配置

+ 122 - 122
fs-common-api/src/main/java/com/fs/framework/config/SwaggerConfig.java

@@ -1,122 +1,122 @@
-package com.fs.framework.config;
-
-import com.fs.common.config.FSConfig;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.models.auth.In;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.*;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Swagger2的接口配置
- * 
-
- */
-@Configuration
-public class SwaggerConfig
-{
-    /** 系统基础配置 */
-    @Autowired
-    private FSConfig fsConfig;
-
-    /** 是否开启swagger */
-    @Value("${swagger.enabled}")
-    private boolean enabled;
-
-    /** 设置请求的统一前缀 */
-    @Value("${swagger.pathMapping}")
-    private String pathMapping;
-
-    /**
-     * 创建API
-     */
-    @Bean
-    public Docket createRestApi()
-    {
-        return new Docket(DocumentationType.SWAGGER_2)
-                // 是否启用Swagger
-                .enable(enabled)
-                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
-                .apiInfo(apiInfo())
-                // 设置哪些接口暴露给Swagger展示
-                .select()
-                // 扫描所有有注解的api,用这种方式更灵活
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                // 扫描指定包中的swagger注解
-                // .apis(RequestHandlerSelectors.basePackage("com.fs.project.tool.swagger"))
-                // 扫描所有 .apis(RequestHandlerSelectors.any())
-                .paths(PathSelectors.any())
-                .build()
-                /* 设置安全模式,swagger可以设置访问token */
-                .securitySchemes(securitySchemes())
-                .securityContexts(securityContexts())
-                .pathMapping(pathMapping);
-    }
-
-    /**
-     * 安全模式,这里指定token通过Authorization头请求头传递
-     */
-    private List<ApiKey> securitySchemes()
-    {
-        List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
-//        apiKeyList.add(new ApiKey("Authorization", "AppToken", "header"));
-        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
-        return apiKeyList;
-    }
-
-    /**
-     * 安全上下文
-     */
-    private List<SecurityContext> securityContexts()
-    {
-        List<SecurityContext> securityContexts = new ArrayList<>();
-        securityContexts.add(
-                SecurityContext.builder()
-                        .securityReferences(defaultAuth())
-                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
-                        .build());
-        return securityContexts;
-    }
-
-    /**
-     * 默认的安全上引用
-     */
-    private List<SecurityReference> defaultAuth()
-    {
-        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
-        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
-        authorizationScopes[0] = authorizationScope;
-        List<SecurityReference> securityReferences = new ArrayList<>();
-        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
-        return securityReferences;
-    }
-
-    /**
-     * 添加摘要信息
-     */
-    private ApiInfo apiInfo()
-    {
-        // 用ApiInfoBuilder进行定制
-        return new ApiInfoBuilder()
-                // 设置标题
-                .title("标题:FS管理系统_接口文档")
-                // 描述
-                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
-                // 作者信息
-                .contact(new Contact(fsConfig.getName(), null, null))
-                // 版本
-                .version("版本号:" + fsConfig.getVersion())
-                .build();
-    }
-}
+//package com.fs.framework.config;
+//
+//import com.fs.common.config.FSConfig;
+//import io.swagger.v3.oas.annotations.Operation;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import springfox.documentation.builders.ApiInfoBuilder;
+//import springfox.documentation.builders.PathSelectors;
+//import springfox.documentation.builders.RequestHandlerSelectors;
+//import springfox.documentation.service.*;
+//import springfox.documentation.spi.DocumentationType;
+//import springfox.documentation.spi.service.contexts.SecurityContext;
+//import springfox.documentation.spring.web.plugins.Docket;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//
+///**
+// * Swagger2的接口配置
+// *
+//
+// */
+//@Configuration
+//public class SwaggerConfig
+//{
+//    /** 系统基础配置 */
+//    @Autowired
+//    private FSConfig fsConfig;
+//
+//    /** 是否开启swagger */
+//    @Value("${swagger.enabled}")
+//    private boolean enabled;
+//
+//    /** 设置请求的统一前缀 */
+//    @Value("${swagger.pathMapping}")
+//    private String pathMapping;
+//
+//    /**
+//     * 创建API
+//     */
+//    @Bean
+//    public Docket createRestApi()
+//    {
+//        return new Docket(DocumentationType.SWAGGER_2)
+//                // 是否启用Swagger
+//                .enable(enabled)
+//                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
+//                .apiInfo(apiInfo())
+//                // 设置哪些接口暴露给Swagger展示
+//                .select()
+//                // 扫描所有有注解的api,用这种方式更灵活
+//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+//                // 扫描指定包中的swagger注解
+//                // .apis(RequestHandlerSelectors.basePackage("com.fs.project.tool.swagger"))
+//                // 扫描所有 .apis(RequestHandlerSelectors.any())
+//                .paths(PathSelectors.any())
+//                .build()
+//                /* 设置安全模式,swagger可以设置访问token */
+//                .securitySchemes(securitySchemes())
+//                .securityContexts(securityContexts())
+//                .pathMapping(pathMapping);
+//    }
+//
+//    /**
+//     * 安全模式,这里指定token通过Authorization头请求头传递
+//     */
+//    private List<ApiKey> securitySchemes()
+//    {
+//        List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
+////        apiKeyList.add(new ApiKey("Authorization", "AppToken", "header"));
+//        apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
+//        return apiKeyList;
+//    }
+//
+//    /**
+//     * 安全上下文
+//     */
+//    private List<SecurityContext> securityContexts()
+//    {
+//        List<SecurityContext> securityContexts = new ArrayList<>();
+//        securityContexts.add(
+//                SecurityContext.builder()
+//                        .securityReferences(defaultAuth())
+//                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
+//                        .build());
+//        return securityContexts;
+//    }
+//
+//    /**
+//     * 默认的安全上引用
+//     */
+//    private List<SecurityReference> defaultAuth()
+//    {
+//        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+//        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+//        authorizationScopes[0] = authorizationScope;
+//        List<SecurityReference> securityReferences = new ArrayList<>();
+//        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
+//        return securityReferences;
+//    }
+//
+//    /**
+//     * 添加摘要信息
+//     */
+//    private ApiInfo apiInfo()
+//    {
+//        // 用ApiInfoBuilder进行定制
+//        return new ApiInfoBuilder()
+//                // 设置标题
+//                .title("标题:FS管理系统_接口文档")
+//                // 描述
+//                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
+//                // 作者信息
+//                .contact(new Contact(fsConfig.getName(), null, null))
+//                // 版本
+//                .version("版本号:" + fsConfig.getVersion())
+//                .build();
+//    }
+//}

+ 14 - 26
fs-common-api/src/main/java/com/fs/framework/interceptor/RepeatSubmitInterceptor.java

@@ -1,47 +1,35 @@
 package com.fs.framework.interceptor;
 
+import java.lang.reflect.Method;
+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; // 替换为接口
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.utils.ServletUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.lang.reflect.Method;
-
-/**
- * 防止重复提交拦截器
- *
-
- */
 @Component
-public abstract class RepeatSubmitInterceptor extends HandlerInterceptorAdapter
-{
+public abstract class RepeatSubmitInterceptor implements HandlerInterceptor { // 实现接口
+
     @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
-    {
-        if (handler instanceof HandlerMethod)
-        {
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        if (handler instanceof HandlerMethod) {
             HandlerMethod handlerMethod = (HandlerMethod) handler;
             Method method = handlerMethod.getMethod();
             RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class);
-            if (annotation != null)
-            {
-                if (this.isRepeatSubmit(request))
-                {
+            if (annotation != null) {
+                if (this.isRepeatSubmit(request)) {
                     AjaxResult ajaxResult = AjaxResult.error("不允许重复提交,请稍后再试");
                     ServletUtils.renderString(response, JSONObject.toJSONString(ajaxResult));
                     return false;
                 }
             }
             return true;
-        }
-        else
-        {
-            return super.preHandle(request, response, handler);
+        } else {
+            return true; // 接口默认无super方法,直接返回true
         }
     }
 

+ 1 - 1
fs-common-api/src/main/java/com/fs/framework/interceptor/impl/SameUrlDataInterceptor.java

@@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;

+ 9 - 3
fs-common/pom.xml

@@ -115,8 +115,8 @@
 
         <!-- servlet包 -->
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
         </dependency>
         <dependency>
             <groupId>cn.hutool</groupId>
@@ -130,7 +130,13 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.1.0</version>
+            <version>3.5.5</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>mybatis-spring</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <!-- https://mvnrepository.com/artifact/org.springframework/spring-expression -->
         <dependency>

+ 158 - 0
fs-common/src/main/java/com/fs/common/core/domain/BaseEntityNoId.java

@@ -0,0 +1,158 @@
+package com.fs.common.core.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fs.common.annotation.Excel;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Entity基类
+ *
+
+ */
+public class BaseEntityNoId extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /** 创建者 */
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 更新者 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /** 备注 */
+    private String remark;
+
+
+    /** 搜索值 */
+    @TableField(exist = false)
+    private String searchValue;
+
+    /** 开始时间 */
+    @JsonIgnore
+    @TableField(exist = false)
+    private String beginTime;
+
+    /** 结束时间 */
+    @JsonIgnore
+    @TableField(exist = false)
+    private String endTime;
+
+    /** 请求参数 */
+    @TableField(exist = false)
+    private Map<String, Object> params;
+
+
+    public Map<String, Object> getParams()
+    {
+        if (params == null)
+        {
+            params = new HashMap<>();
+        }
+        return params;
+    }
+
+    @Override
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    @Override
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    @Override
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    @Override
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    @Override
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    @Override
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    @Override
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String getRemark() {
+        return remark;
+    }
+
+    @Override
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String getSearchValue() {
+        return searchValue;
+    }
+
+    @Override
+    public void setSearchValue(String searchValue) {
+        this.searchValue = searchValue;
+    }
+
+    @Override
+    public String getBeginTime() {
+        return beginTime;
+    }
+
+    @Override
+    public void setBeginTime(String beginTime) {
+        this.beginTime = beginTime;
+    }
+
+    @Override
+    public String getEndTime() {
+        return endTime;
+    }
+
+    @Override
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    @Override
+    public void setParams(Map<String, Object> params) {
+        this.params = params;
+    }
+}

+ 7 - 7
fs-common/src/main/java/com/fs/common/filter/RepeatableFilter.java

@@ -1,13 +1,13 @@
 package com.fs.common.filter;
 
 import java.io.IOException;
-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 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 org.springframework.http.MediaType;
 import com.fs.common.utils.StringUtils;
 

+ 5 - 5
fs-common/src/main/java/com/fs/common/filter/RepeatedlyRequestWrapper.java

@@ -4,11 +4,11 @@ import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
 import com.fs.common.utils.http.HttpHelper;
 
 /**

+ 8 - 8
fs-common/src/main/java/com/fs/common/filter/XssFilter.java

@@ -3,14 +3,14 @@ package com.fs.common.filter;
 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.fs.common.utils.StringUtils;
 
 /**

+ 4 - 4
fs-common/src/main/java/com/fs/common/filter/XssHttpServletRequestWrapper.java

@@ -2,10 +2,10 @@ package com.fs.common.filter;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
 import org.apache.commons.io.IOUtils;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;

+ 1 - 1
fs-common/src/main/java/com/fs/common/utils/IPUtils.java

@@ -3,7 +3,7 @@ package com.fs.common.utils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * IP地址

+ 1 - 1
fs-common/src/main/java/com/fs/common/utils/IpUtil.java

@@ -3,7 +3,7 @@ package com.fs.common.utils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 

+ 4 - 3
fs-common/src/main/java/com/fs/common/utils/ServletUtils.java

@@ -1,9 +1,10 @@
 package com.fs.common.utils;
 
 import java.io.IOException;
-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;

+ 2 - 2
fs-common/src/main/java/com/fs/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.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import com.fs.common.config.FSConfig;

+ 1 - 1
fs-common/src/main/java/com/fs/common/utils/http/HttpHelper.java

@@ -5,7 +5,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.nio.charset.Charset;
-import javax.servlet.ServletRequest;
+import jakarta.servlet.ServletRequest;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

+ 1 - 1
fs-common/src/main/java/com/fs/common/utils/ip/IpUtils.java

@@ -2,7 +2,7 @@ package com.fs.common.utils.ip;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.html.EscapeUtil;
 

+ 1 - 1
fs-common/src/main/java/com/fs/common/utils/poi/ExcelUtil.java

@@ -18,7 +18,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.poi.hssf.usermodel.HSSFClientAnchor;
 import org.apache.poi.hssf.usermodel.HSSFPicture;
 import org.apache.poi.hssf.usermodel.HSSFPictureData;

+ 2 - 2
fs-company-app/pom.xml

@@ -53,8 +53,8 @@
             <artifactId>kaptcha</artifactId>
             <exclusions>
                 <exclusion>
-                    <artifactId>javax.servlet-api</artifactId>
-                    <groupId>javax.servlet</groupId>
+                    <artifactId>jakarta.servlet-api</artifactId>
+                    <groupId>jakarta.servlet</groupId>
                 </exclusion>
             </exclusions>
         </dependency>

+ 16 - 15
fs-company-app/src/main/java/com/fs/app/controller/CommonController.java

@@ -33,9 +33,10 @@ import com.fs.system.service.ISysDictDataService;
 import com.fs.system.vo.DictVO;
 import com.fs.voice.service.IVoiceService;
 import com.google.common.collect.Lists;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,13 +44,13 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 
-@Api("公共接口")
+@Tag(name = "公共接口")
 @RestController
 @RequestMapping(value="/app/common")
 public class CommonController extends AppBaseController {
@@ -106,7 +107,7 @@ public class CommonController extends AppBaseController {
 	public static final Logger LOGGER = LoggerFactory.getLogger(CommonController.class);
 
 
-	@ApiOperation("获取城市数据")
+	@Operation(summary = "获取城市数据")
 	@GetMapping("/getCitys")
 	@Cacheable("cityData")
 	public R getCitys(){
@@ -126,7 +127,7 @@ public class CommonController extends AppBaseController {
 	/**
 	 * 通用上传请求
 	 */
-	@ApiOperation("上传")
+	@Operation(summary = "上传")
 	@PostMapping("/upload")
 	public R uploadFile(MultipartFile file) throws Exception
 	{
@@ -149,7 +150,7 @@ public class CommonController extends AppBaseController {
 	}
 
 
-	@ApiOperation("获取数据字典")
+	@Operation(summary = "获取数据字典")
 	@GetMapping("/getDicts")
 //	@Cacheable(value= "dicts")
 	public R getDicts(
@@ -158,15 +159,15 @@ public class CommonController extends AppBaseController {
 
 
 	}
-	@ApiOperation("获取数据字典")
+	@Operation(summary = "获取数据字典")
 	@GetMapping("/getDictByKey")
-	public R getDictByKey(@ApiParam(required = false, name = "key", value = "key") @RequestParam(value = "key", required = false) String key){
+	public R getDictByKey(@Parameter(required = false, name = "key", example = "key") @RequestParam(value = "key", required = false) String key){
 		List<DictVO> dictVOS=dictDataService.selectDictDataListByType(key);
 		return R.ok().put("data",dictVOS);
 	}
 
 	@Login
-	@ApiOperation("推送测试")
+	@Operation(summary = "推送测试")
 	@GetMapping(value = "/pushText")
 	public R pushText()
 	{
@@ -189,17 +190,17 @@ public class CommonController extends AppBaseController {
 		return R.ok();
 	}
 
-	@ApiOperation("获取系统配置")
+	@Operation(summary = "获取系统配置")
 	@GetMapping(value = "/getConfig")
 	public R getConfig()
 	{
 		String sysConfig=configService.selectConfigByKey("sys:config");
 		return R.ok().put("sysConfig",sysConfig);
 	}
-	@ApiOperation("获取选择员工")
+	@Operation(summary = "获取选择员工")
 	@GetMapping("/getSelectUserList")
 	public R getSelectUserList(HttpServletRequest request,
-	@ApiParam(required = false, name = "nickName", value = "nickName") @RequestParam(value = "nickName", required = false) String nickName
+	@Parameter(required = false, name = "nickName", example = "nickName") @RequestParam(value = "nickName", required = false) String nickName
 	)
 	{
 		CompanyUser map=new CompanyUser();
@@ -211,7 +212,7 @@ public class CommonController extends AppBaseController {
 		return R.ok().put("data",list);
 	}
 
-	@ApiOperation("上传")
+	@Operation(summary = "上传")
 	@PostMapping("uploadOSS")
 	public R uploadOSS(@RequestParam("file") MultipartFile file) throws Exception
 	{

+ 8 - 8
fs-company-app/src/main/java/com/fs/app/controller/CompanyTagController.java

@@ -15,8 +15,8 @@ import com.fs.company.vo.CompanyTagUserVO;
 import com.fs.store.vo.h5.CompanyUserTagListVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -27,7 +27,7 @@ import java.util.List;
 import java.util.Map;
 
 @Slf4j
-@Api(tags = "企业标签接口")
+@Tag(name = "企业标签接口")
 @RestController
 @RequestMapping("/app/companyTag")
 @AllArgsConstructor
@@ -41,7 +41,7 @@ public class CompanyTagController extends AppBaseController {
      */
     @Login
     @GetMapping("/list")
-    @ApiOperation("查询公司标签列表")
+    @Operation(summary = "查询公司标签列表")
     public R list(@RequestParam(required = false) String keyword,
                   @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                   @RequestParam(required = false, defaultValue = "10") Integer pageSize,
@@ -70,7 +70,7 @@ public class CompanyTagController extends AppBaseController {
          */
     @Login
     @PostMapping("/add")
-    @ApiOperation("新增公司标签")
+    @Operation(summary = "新增公司标签")
     public R add(@RequestBody CompanyTag companyTag) throws CustomException {
         log.debug("新增公司标签 companyTag: {}", JSON.toJSONString(companyTag));
         companyTag.setCompanyId(getCompanyId());
@@ -83,7 +83,7 @@ public class CompanyTagController extends AppBaseController {
      */
     @Login
     @PostMapping("/delete")
-    @ApiOperation("删除公司标签")
+    @Operation(summary = "删除公司标签")
     public R remove(@RequestParam List<Long> tagIds) {
         log.debug("删除公司标签 tagIds: {}", tagIds);
         companyTagService.deleteCompanyTagByTagIds(tagIds);
@@ -92,7 +92,7 @@ public class CompanyTagController extends AppBaseController {
 
     @Login
     @PostMapping("/tagSubUsers")
-    @ApiOperation("标签下会员列表")
+    @Operation(summary = "标签下会员列表")
     public R tagSubUsers(@RequestBody TagProjectParam tagProjectParam) {
         Map<String, Object> params = new HashMap<>();
         params.put("tagIds", tagProjectParam.getTagIds());
@@ -109,7 +109,7 @@ public class CompanyTagController extends AppBaseController {
 
     @Login
     @GetMapping("/getTagByUser")
-    @ApiOperation("会员的标签")
+    @Operation(summary = "会员的标签")
     public R getTagByUser(@RequestParam("userId") Long userId) {
         CompanyTagUser map = new CompanyTagUser();
         map.setUserId(userId);

+ 18 - 17
fs-company-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -28,9 +28,10 @@ import com.fs.system.service.ISysDictDataService;
 import com.fs.system.vo.DictVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -45,7 +46,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
-@Api(tags = "企业用户接口")
+@Tag(name = "企业用户接口")
 @RestController
 @RequestMapping("/app/companyUser")
 @AllArgsConstructor
@@ -67,7 +68,7 @@ public class CompanyUserController extends AppBaseController {
     private ICompanyTagUserService companyTagUserService;
 
     @Login
-    @ApiOperation("查询用户列表")
+    @Operation(summary = "查询用户列表")
     @GetMapping("/getCompanyUserList")
     public R getCompanyUserList(@RequestParam(required = false, defaultValue = "1") Integer pageNum,
                                 @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
@@ -146,15 +147,15 @@ public class CompanyUserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("获取销售信息")
+    @Operation(summary = "获取销售信息")
     @GetMapping("/getCompanyUserInfo")
-    public R getCompanyUserInfo(@ApiParam(name = "companyUserId", value = "销售用户ID", required = true)
+    public R getCompanyUserInfo(@Parameter(name = "companyUserId", example = "销售用户ID", required = true)
                                 @RequestParam Long companyUserId) {
         return R.ok().put("data", companyUserService.selectCompanyUserById(companyUserId));
     }
 
     @Login
-    @ApiOperation("修改用户信息")
+    @Operation(summary = "修改用户信息")
     @PostMapping("/updateUserInfo")
     public R updateUserInfo(@Valid @RequestBody CompanyUserUpdateParam param) {
         CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getUserId());
@@ -170,7 +171,7 @@ public class CompanyUserController extends AppBaseController {
         return R.ok();
     }
 
-    @ApiOperation("注册")
+    @Operation(summary = "注册")
     @PostMapping("/resisterCompanyUser")
     public R resisterCompanyUser(@Valid @RequestBody CompanyUserParam param) {
         CompanyUser upCompanyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
@@ -221,7 +222,7 @@ public class CompanyUserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("接收群管列表")
+    @Operation(summary = "接收群管列表")
     @GetMapping("/companyUserListByCompanyId")
     public R CompanyUserListByCompanyId(){
         // 查询公司下销售
@@ -233,7 +234,7 @@ public class CompanyUserController extends AppBaseController {
 
     @Login
     @RepeatSubmit
-    @ApiOperation("更换会员归属申请")
+    @Operation(summary = "更换会员归属申请")
     @PostMapping("/changeUserParentApply")
     public R changeVipUser(@RequestBody CompanyUserChangeApplyParam param) {
         // 参数校验
@@ -321,7 +322,7 @@ public class CompanyUserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("申请列表")
+    @Operation(summary = "申请列表")
     @GetMapping("/applyList")
     public R applyList(@RequestParam(required = false) Integer status,
                        @RequestParam(required = false, defaultValue = "1") Integer pageNum,
@@ -339,28 +340,28 @@ public class CompanyUserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("部门树列表")
+    @Operation(summary = "部门树列表")
     @GetMapping("/deptList")
     public R deptList() {
         return R.ok().put("data", appService.getDeptTreeSelect(getCompanyId()));
     }
 
     @Login
-    @ApiOperation("岗位列表")
+    @Operation(summary = "岗位列表")
     @GetMapping("/postList")
     public R postList() {
         return R.ok().put("data", appService.postList(getCompanyId()));
     }
 
     @Login
-    @ApiOperation("角色列表")
+    @Operation(summary = "角色列表")
     @GetMapping("/roleList")
     public R roleList() {
         return R.ok().put("data", appService.roleList(getCompanyId()));
     }
 
     @Login
-    @ApiOperation("修改用户部门和岗位")
+    @Operation(summary = "修改用户部门和岗位")
     @PostMapping("/changeUserDeptAndPost")
     public R changeUserDeptAndPost(@Valid @RequestBody ChangeUserDeptAndPostParam param) {
         log.debug("changeUserDeptAndPost param: {}", JSON.toJSONString(param));
@@ -374,7 +375,7 @@ public class CompanyUserController extends AppBaseController {
         return R.ok();
     }
 
-    @ApiOperation("查询指定公司中存在会员的项目")
+    @Operation(summary = "查询指定公司中存在会员的项目")
     @PostMapping("/getDictByKeyByProject")
     public R getDictByKey(
             @RequestBody TagProjectParam tagProjectParam){

+ 29 - 28
fs-company-app/src/main/java/com/fs/app/controller/CrmController.java

@@ -23,19 +23,20 @@ import com.fs.crm.vo.*;
 import com.fs.his.service.IFsStoreOrderService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.List;
 
 import static com.fs.common.constant.Constants.PAGE_SIZE;
 
 
-@Api("客户接口")
+@Tag(name = "客户接口")
 @RestController
 @RequestMapping(value="/app/crm")
 public class CrmController extends  AppBaseController {
@@ -63,7 +64,7 @@ public class CrmController extends  AppBaseController {
 	IFsStoreOrderService storeOrderService;
 
 	@Login
-	@ApiOperation("获取公海客户列表")
+	@Operation(summary = "获取公海客户列表")
 	@GetMapping("/getFullCustomerList")
 	@DataScope(deptAlias = "c",userAlias = "c")
 	public R getFullCustomerList(CrmFullCustomerListQueryParam param){
@@ -78,7 +79,7 @@ public class CrmController extends  AppBaseController {
 	}
 
 	@Login
-	@ApiOperation("获取我的客户列表")
+	@Operation(summary = "获取我的客户列表")
 	@GetMapping("/getMyCustomerList")
 	public R getMyCustomerList(CrmMyCustomerListQueryParam param){
 		PageHelper.startPage(param.getPage(), param.getPageSize());
@@ -93,11 +94,11 @@ public class CrmController extends  AppBaseController {
 	}
 
 	@Login
-	@ApiOperation("获取客户详情")
+	@Operation(summary = "获取客户详情")
 	@GetMapping("/getCustomerDetails")
 	public R getMyCustomerDetails(
 			HttpServletRequest request,
-			@ApiParam(required = true, name = "customerId", value = "customerId")
+			@Parameter(required = true, name = "customerId", example = "customerId")
 			@RequestParam(value = "customerId", required = false) Long customerId){
 		CrmCustomer customer=crmCustomerService.selectCrmCustomerById(customerId);
 		Boolean isReceive=false;
@@ -110,7 +111,7 @@ public class CrmController extends  AppBaseController {
 	 * 修改客户
 	 */
 	@Login
-	@ApiOperation("编辑客户")
+	@Operation(summary = "编辑客户")
 	@PostMapping("/edit")
 	public R edit(@RequestBody CrmCustomer crmCustomer)
 	{
@@ -122,7 +123,7 @@ public class CrmController extends  AppBaseController {
 		}
 	}
 	@Login
-	@ApiOperation("添加客户")
+	@Operation(summary = "添加客户")
 	@PostMapping("/add")
 	public R add(@RequestBody CrmCustomer crmCustomer)
 	{
@@ -152,7 +153,7 @@ public class CrmController extends  AppBaseController {
 
 	//认领
 	@Login
-	@ApiOperation("认领")
+	@Operation(summary = "认领")
 	@PostMapping("/receive")
 	public R receive(@RequestBody CrmCustomeReceiveParam param)
 	{
@@ -166,7 +167,7 @@ public class CrmController extends  AppBaseController {
 	//回收
 	@Login
 	@PostMapping("/recover")
-	@ApiOperation("回收公海")
+	@Operation(summary = "回收公海")
 	public R recover(@RequestBody CrmCustomeRecoverParam param)
 	{
 		CompanyUser companyUser=companyUserService.selectCompanyUserById(Long.parseLong(getUserId()));
@@ -179,7 +180,7 @@ public class CrmController extends  AppBaseController {
 
 	@Login
 	@PostMapping("/assignUser")
-	@ApiOperation("转移用户")
+	@Operation(summary = "转移用户")
 	public R assignUser(@RequestBody CrmCustomeAssignUserParam param)
 	{
 		CompanyUser companyUser=companyUserService.selectCompanyUserById(Long.parseLong(getUserId()));
@@ -189,7 +190,7 @@ public class CrmController extends  AppBaseController {
 	}
 
 	@GetMapping("/getCustomerLogsList")
-	@ApiOperation("获取客户日志")
+	@Operation(summary = "获取客户日志")
 	public R getCustomerLogsList(CrmCustomerLogsListQueryParam param)
 	{
 		PageHelper.startPage(param.getPage(), PAGE_SIZE);
@@ -199,7 +200,7 @@ public class CrmController extends  AppBaseController {
 	}
 
 	@GetMapping("/getCustomerVisitList")
-	@ApiOperation("获取客户跟进记录")
+	@Operation(summary = "获取客户跟进记录")
 	public R getCustomerVisitList(CrmCustomerVisitListQueryParam param)
 	{
 		PageHelper.startPage(param.getPage(), PAGE_SIZE);
@@ -209,7 +210,7 @@ public class CrmController extends  AppBaseController {
 		return R.ok().put("data",listPageInfo);
 	}
 	@Login
-	@ApiOperation("提交跟进")
+	@Operation(summary = "提交跟进")
 	@PostMapping("/addVisit")
 	public R addVisit(@RequestBody CrmCustomerVisitAddParam param) {
 		param.setCompanyUserId(Long.parseLong(getUserId()));
@@ -219,7 +220,7 @@ public class CrmController extends  AppBaseController {
 
 	@Login
 	@GetMapping("/getCustomerVoiceLogsList")
-	@ApiOperation("获取客户通话记录")
+	@Operation(summary = "获取客户通话记录")
 	public R getCustomerVoiceLogsList(CompanyVoiceLogsListQueryParam param) {
 		PageHelper.startPage(param.getPage(), PAGE_SIZE);
 		param.setCompanyId(getCompanyId());
@@ -230,7 +231,7 @@ public class CrmController extends  AppBaseController {
 
 	@Login
 	@GetMapping("/getCustomerSmsLogsList")
-	@ApiOperation("获取客户短信记录")
+	@Operation(summary = "获取客户短信记录")
 	public R getCustomerSmsLogsList(CompanySmsLogsListQueryParam param) {
 		PageHelper.startPage(param.getPage(), PAGE_SIZE);
 		param.setCompanyId(getCompanyId());
@@ -241,14 +242,14 @@ public class CrmController extends  AppBaseController {
 
 	@Login
 	@PostMapping("/editTags")
-	@ApiOperation("修改标签")
+	@Operation(summary = "修改标签")
 	public R editTags(@RequestBody CrmCustomerEditTagsParam param) {
 		return crmCustomerService.editTags(param);
 	}
 
 
 	@Login
-	@ApiOperation("获取自定义字段列表")
+	@Operation(summary = "获取自定义字段列表")
 	@GetMapping("/getCustomerExt")
 	public R getCustomerExt(CrmCustomerExt crmCustomerExt) {
 		CrmCustomerExt map=new CrmCustomerExt();
@@ -261,7 +262,7 @@ public class CrmController extends  AppBaseController {
 
 
  	@Login
-	@ApiOperation("获取客户联系人")
+	@Operation(summary = "获取客户联系人")
 	@GetMapping("/getCustomerContacts")
 	public R getCustomerContacts(CrmCustomerContactsListQueryParam param) {
 		PageHelper.startPage(param.getPage(), PAGE_SIZE);
@@ -273,9 +274,9 @@ public class CrmController extends  AppBaseController {
 
 
 	@Login
-	@ApiOperation("获取客户联系人详情")
+	@Operation(summary = "获取客户联系人详情")
 	@GetMapping(value = "/getCustomerContactsDetails")
-	public R getCustomerContactsDetails(@ApiParam(required = true, name = "contactsId", value = "contactsId") @RequestParam(value = "contactsId", required = false) Long contactsId)
+	public R getCustomerContactsDetails(@Parameter(required = true, name = "contactsId", example = "contactsId") @RequestParam(value = "contactsId", required = false) Long contactsId)
 	{
 		CrmCustomerContacts contacts=crmCustomerContactsService.selectCrmCustomerContactsById(contactsId);
 		return R.ok().put("data",contacts);
@@ -283,7 +284,7 @@ public class CrmController extends  AppBaseController {
 
 
 	@Login
-	@ApiOperation("新增联系人")
+	@Operation(summary = "新增联系人")
 	@PostMapping("/addContacts")
 	public R addContacts(@RequestBody CrmCustomerContacts crmCustomerContacts)
 	{
@@ -297,7 +298,7 @@ public class CrmController extends  AppBaseController {
 	}
 
 	@Login
-	@ApiOperation("修改联系人")
+	@Operation(summary = "修改联系人")
 	@PostMapping("/editContacts")
 	public R editContacts(@RequestBody CrmCustomerContacts crmCustomerContacts)
 	{
@@ -309,7 +310,7 @@ public class CrmController extends  AppBaseController {
 		}
 	}
 	@Login
-	@ApiOperation("删除联系人")
+	@Operation(summary = "删除联系人")
 	@PostMapping("/delContacts")
 	public R delContacts(@RequestBody CrmCustomerContacts crmCustomerContacts)
 	{
@@ -322,7 +323,7 @@ public class CrmController extends  AppBaseController {
 	}
 
 	@Login
-	@ApiOperation("查询客户")
+	@Operation(summary = "查询客户")
 	@GetMapping("/getCustomerListBySearch")
 	public R getCustomerListBySearch(CrmCustomerSearchParam param){
 		param.setCompanyId(getCompanyId());

+ 10 - 9
fs-company-app/src/main/java/com/fs/app/controller/CrmCustomerController.java

@@ -17,12 +17,13 @@ import com.fs.crm.vo.*;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Operation;
+
+import io.swagger.v3.oas.annotations.Parameter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -44,7 +45,7 @@ public class CrmCustomerController extends AppBaseController
     ICrmCustomerUserService crmCustomerUserService;
 
     @Login
-    @ApiOperation("获取线索客户列表")
+    @Operation(summary = "获取线索客户列表")
     @GetMapping("/getLineCustomerList")
     public R getLineCustomerList( CrmLineCustomerListQueryParam param)
     {
@@ -65,7 +66,7 @@ public class CrmCustomerController extends AppBaseController
     }
 
     @Login
-    @ApiOperation("获取我的客户列表")
+    @Operation(summary = "获取我的客户列表")
     @GetMapping("/getMyCustomerList")
     public R getMyCustomerList(  CrmMyCustomerListQueryParam param){
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
@@ -93,11 +94,11 @@ public class CrmCustomerController extends AppBaseController
     }
 
     @Login
-    @ApiOperation("获取我的客户详情")
+    @Operation(summary = "获取我的客户详情")
     @GetMapping("/getCustomerDetails")
     public R getCustomerDetails1(
             HttpServletRequest request,
-            @ApiParam(required = true, name = "customerId", value = "客户ID")
+            @Parameter(required = true, name = "customerId", example = "客户ID")
             @RequestParam(value = "customerId", required = false) Long customerId){
 
         CompanyUser user = companyUserService.selectCompanyUserById(Long.parseLong(getUserId()));
@@ -120,7 +121,7 @@ public class CrmCustomerController extends AppBaseController
     * 获取所有CRM里面关联了企业微信,然后未加为好友的客户列表
     */
     @Login
-    @ApiOperation("加好友助手(获取关联了企微,未加好友的)")
+    @Operation(summary = "加好友助手(获取关联了企微,未加好友的)")
     @PostMapping("/getFriendAssistant")
     public R getFriendAssistantList(@RequestBody CrmCustomerQueryFriendParam param){
 
@@ -147,7 +148,7 @@ public class CrmCustomerController extends AppBaseController
     * 修改 是否添加好友
     */
     @Login
-    @ApiOperation("修改")
+    @Operation(summary = "修改")
     @Log(title = "修改", businessType = BusinessType.UPDATE)
     @PostMapping("/editCrmCustomer")
     public R editCrmCustomer(@RequestBody CrmCustomer param) {

+ 8 - 8
fs-company-app/src/main/java/com/fs/app/controller/CrmEventController.java

@@ -13,8 +13,8 @@ import com.fs.crm.service.ICrmEventService;
 import com.fs.crm.vo.CrmEventListQueryVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -24,7 +24,7 @@ import java.util.List;
 import static com.fs.common.constant.Constants.PAGE_SIZE;
 
 
-@Api("代办事项接口")
+@Tag(name = "代办事项接口")
 @RestController
 @RequestMapping(value="/app/crmEvent")
 public class CrmEventController extends  AppBaseController {
@@ -35,7 +35,7 @@ public class CrmEventController extends  AppBaseController {
 
 	@Login
 	@GetMapping("/getMyCrmDoEventList")
-	@ApiOperation("获取我代办事件列表")
+	@Operation(summary = "获取我代办事件列表")
 	public R getMyCrmDoEventList()
 	{
 		CrmEventListQueryParam param=new CrmEventListQueryParam();
@@ -48,7 +48,7 @@ public class CrmEventController extends  AppBaseController {
 	}
 	@Login
 	@GetMapping("/getMyCrmEventList")
-	@ApiOperation("获取我的事件列表")
+	@Operation(summary = "获取我的事件列表")
 	public R getMyCrmEventList(CrmEventListQueryParam param)
 	{
 		PageHelper.startPage(param.getPage(), PAGE_SIZE);
@@ -61,7 +61,7 @@ public class CrmEventController extends  AppBaseController {
 
 	@Login
 	@PostMapping("/addCrmEvent")
-	@ApiOperation("添加事件")
+	@Operation(summary = "添加事件")
 	public R addCrmEvent(@RequestBody CrmAddEventParam param)
 	{
 		CrmEvent event=new CrmEvent();
@@ -78,7 +78,7 @@ public class CrmEventController extends  AppBaseController {
 
 	@Login
 	@PostMapping("/doEvent")
-	@ApiOperation("完成事件")
+	@Operation(summary = "完成事件")
 	public R doEvent(@RequestBody CrmDoEventParam param)
 	{
 		CrmEvent event=eventService.selectCrmEventById(param.getEventId());
@@ -96,7 +96,7 @@ public class CrmEventController extends  AppBaseController {
 
 	@Login
 	@PostMapping("/delCrmEvent")
-	@ApiOperation("删除事件")
+	@Operation(summary = "删除事件")
 	public R addCrmEvent(@RequestBody CrmDelEventParam param)
 	{
 		if(eventService.deleteCrmEventById(param.getEventId())>0){

+ 9 - 9
fs-company-app/src/main/java/com/fs/app/controller/CrmMsgController.java

@@ -13,19 +13,19 @@ import com.fs.system.service.ISysDictDataService;
 import com.fs.system.vo.DictVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
 
 import static com.fs.common.constant.Constants.PAGE_SIZE;
 
 
-@Api("消息接口")
+@Tag(name = "消息接口")
 @RestController
 @RequestMapping(value="/app/crmMsg")
 public class CrmMsgController extends  AppBaseController {
@@ -36,7 +36,7 @@ public class CrmMsgController extends  AppBaseController {
 	@Autowired
 	private ISysDictDataService dictDataService;
 	@Login
-	@ApiOperation("获取消息数量")
+	@Operation(summary = "获取消息数量")
 	@GetMapping("/getMsgCount")
 	public R getMsgCount(HttpServletRequest request){
 		Long count= msgService.selectCrmMsgCountByUserId(Long.parseLong(getUserId()));
@@ -44,7 +44,7 @@ public class CrmMsgController extends  AppBaseController {
 
 	}
 	@Login
-	@ApiOperation("获取消息")
+	@Operation(summary = "获取消息")
 	@GetMapping("/getMsg")
 	public R getMsg(HttpServletRequest request){
 		//获取用户未读总数
@@ -69,7 +69,7 @@ public class CrmMsgController extends  AppBaseController {
 
 	@Login
 	@GetMapping("/getMsgList")
-	@ApiOperation("获取我的消息列表")
+	@Operation(summary = "获取我的消息列表")
 	public R getMsgList(CrmMsgListQueryParam param)
 	{
 		PageHelper.startPage(param.getPage(), PAGE_SIZE);
@@ -84,7 +84,7 @@ public class CrmMsgController extends  AppBaseController {
 
 	@Login
 	@PostMapping("/doRead")
-	@ApiOperation("已读")
+	@Operation(summary = "已读")
 	public R doRead(@RequestBody CrmDoReadMsgParam param)
 	{
 		msgService.setReadByType(Long.parseLong(getUserId()),param.getMsgType());
@@ -93,7 +93,7 @@ public class CrmMsgController extends  AppBaseController {
 
 
 	@Login
-	@ApiOperation("全部已读")
+	@Operation(summary = "全部已读")
 	@PostMapping("/setAllRead")
 	public R setAllRead()
 	{

+ 57 - 56
fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java

@@ -33,9 +33,10 @@ import com.fs.store.vo.h5.*;
 import com.fs.system.service.ISysConfigService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -51,7 +52,7 @@ import java.util.Map;
 import java.util.Objects;
 
 @Slf4j
-@Api(tags = "用户会员相关接口")
+@Tag(name = "用户会员相关接口")
 @RestController
 @RequestMapping("/app/fs/user")
 public class FsUserController extends AppBaseController {
@@ -83,7 +84,7 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @PostMapping("/pageList")
-    @ApiOperation("用户会员分页列表")
+    @Operation(summary = "用户会员分页列表")
     public ResponseResult<PageInfo<FsUserPageListVO>> pageList(@RequestBody FsUserPageListParam param) {
         log.debug("用户会员分页列表 param: {}", JSON.toJSONString(param));
         param.setUserId(Long.parseLong(getUserId()));
@@ -95,7 +96,7 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/allCompanyUser")
-    @ApiOperation("获取所有公司销售")
+    @Operation(summary = "获取所有公司销售")
     public ResponseResult<List<CompanyUser>> getAllCompanyUser() {
         List<CompanyUser> companyUsers = companyUserService.selectAllCompanyUserAndSelf(Long.parseLong(getUserId()));
         return ResponseResult.ok(companyUsers);
@@ -103,7 +104,7 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/totalNumber")
-    @ApiOperation("用户会员数量统计")
+    @Operation(summary = "用户会员数量统计")
     public ResponseResult<UserListPageVO> getTotalNumber() {
         UserListPageVO userNumber = fsUserService.getUserNumber(Long.parseLong(getUserId()));
         return ResponseResult.ok(userNumber);
@@ -111,17 +112,17 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/details")
-    @ApiOperation("用户会员详情")
-    public ResponseResult<UserDetailsVO> getUserDetails(@ApiParam(value = "用户id", required = true) @RequestParam Long userId,
-                                                        @ApiParam(value = "用户项目关联id", required = true) @RequestParam Long userCompanyId,
-                                                        @ApiParam(value = "时间tab,不传表示查询全部,分别是:今天、昨天、前天、近七天", required = true) @RequestParam(required = false) String dateTag) {
+    @Operation(summary = "用户会员详情")
+    public ResponseResult<UserDetailsVO> getUserDetails(@Parameter(name = "用户id", required = true) @RequestParam Long userId,
+                                                        @Parameter(name = "用户项目关联id", required = true) @RequestParam Long userCompanyId,
+                                                        @Parameter(name = "时间tab,不传表示查询全部,分别是:今天、昨天、前天、近七天", required = true) @RequestParam(required = false) String dateTag) {
         UserDetailsVO userDetails = fsUserService.getUserDetails(Long.parseLong(getUserId()), userId, dateTag,userCompanyId);
         return ResponseResult.ok(userDetails);
     }
 
     @Login
     @GetMapping("/tagList")
-    @ApiOperation("用户会员标签列表")
+    @Operation(summary = "用户会员标签列表")
     public ResponseResult<PageInfo<CompanyUserTagListVO>> getTagList(TagListParam param) {
         log.debug("用户会员标签列表 param: {}", JSON.toJSONString(param));
         param.setUserId(Long.parseLong(getUserId()));
@@ -137,8 +138,8 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @PostMapping("/disabled")
-    @ApiOperation("批量禁用会员")
-    public ResponseResult<Boolean> disabledUser(@ApiParam(value = "联系人id集合", required = true) @RequestBody List<Long> userCompanyUserIds) {
+    @Operation(summary = "批量禁用会员")
+    public ResponseResult<Boolean> disabledUser(@Parameter(name = "联系人id集合", required = true) @RequestBody List<Long> userCompanyUserIds) {
         log.debug("批量禁用会员 ids: {}", JSON.toJSONString(userCompanyUserIds));
         Boolean r = userCompanyUserService.batchUpdateStatus(userCompanyUserIds, 2);
         return ResponseResult.ok(r);
@@ -146,8 +147,8 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @PostMapping("/enabled")
-    @ApiOperation("批量启用会员")
-    public ResponseResult<Boolean> enabledUser(@ApiParam(value = "联系人id集合", required = true) @RequestBody List<Long> userCompanyUserIds) {
+    @Operation(summary = "批量启用会员")
+    public ResponseResult<Boolean> enabledUser(@Parameter(name = "联系人id集合", required = true) @RequestBody List<Long> userCompanyUserIds) {
         log.debug("批量启用会员 ids: {}", JSON.toJSONString(userCompanyUserIds));
         Boolean r = userCompanyUserService.batchUpdateStatus(userCompanyUserIds, 1);
         return ResponseResult.ok(r);
@@ -155,7 +156,7 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/firstPage/summaryCount")
-    @ApiOperation("首页数据-顶部汇总统计")
+    @Operation(summary = "首页数据-顶部汇总统计")
     public ResponseResult<FsUserSummaryCountVO> userSummaryCount() {
         long userId = Long.parseLong(getUserId());
         return ResponseResult.ok(fsUserService.userSummaryCount(userId));
@@ -163,9 +164,9 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/firstPage/statistics")
-    @ApiOperation("首页数据-课程/答题/红包统计")
-    public ResponseResult<FsUserStatisticsVO> userStatistics(@ApiParam(value = "开始时间", required = true) @RequestParam String startTime,
-                                                             @ApiParam(value = "结束时间", required = true) @RequestParam String endTime) {
+    @Operation(summary = "首页数据-课程/答题/红包统计")
+    public ResponseResult<FsUserStatisticsVO> userStatistics(@Parameter(name = "开始时间", required = true) @RequestParam String startTime,
+                                                             @Parameter(name = "结束时间", required = true) @RequestParam String endTime) {
         long userId = Long.parseLong(getUserId());
         /*---------- 如果传入的日期是今天 ----------*/
         UserStatisticsCommonParam param = new UserStatisticsCommonParam();
@@ -190,9 +191,9 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/statistics/details")
-    @ApiOperation("数据统计详情-课程/答题/红包统计")
-    public ResponseResult<FsUserStatisticsVO> userStatisticsDetails(@ApiParam(value = "营期id") @RequestParam(required = false) String periodId,
-                                                                    @ApiParam(value = "视频id") @RequestParam(required = false) String videoId) {
+    @Operation(summary = "数据统计详情-课程/答题/红包统计")
+    public ResponseResult<FsUserStatisticsVO> userStatisticsDetails(@Parameter(name = "营期id") @RequestParam(required = false) String periodId,
+                                                                    @Parameter(name = "视频id") @RequestParam(required = false) String videoId) {
         long userId = Long.parseLong(getUserId());
         long companyId = getCompanyId();
         UserStatisticsCommonParam param = new UserStatisticsCommonParam();
@@ -203,14 +204,14 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/firstPage/userRanking")
-    @ApiOperation("首页数据/详情-销售排行榜统计")
+    @Operation(summary = "首页数据/详情-销售排行榜统计")
     public ResponseResult<List<FsUserRankingVO>> userRanking(
-            @ApiParam(value = "开始时间") @RequestParam(required = false) String startTime,
-            @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime,
-            @ApiParam(value = "营期id") @RequestParam(required = false) String periodId,
-            @ApiParam(value = "视频id") @RequestParam(required = false) String videoId,
-            @ApiParam(value = "asc-正序,desc-倒序", required = true) @RequestParam String order,
-            @ApiParam(value = "类型,1-按完播率,2-按正确率", required = true) @RequestParam Integer type
+            @Parameter(name = "开始时间") @RequestParam(required = false) String startTime,
+            @Parameter(name = "结束时间") @RequestParam(required = false) String endTime,
+            @Parameter(name = "营期id") @RequestParam(required = false) String periodId,
+            @Parameter(name = "视频id") @RequestParam(required = false) String videoId,
+            @Parameter(name = "asc-正序,desc-倒序", required = true) @RequestParam String order,
+            @Parameter(name = "类型,1-按完播率,2-按正确率", required = true) @RequestParam Integer type
     ) {
         long userId = Long.parseLong(getUserId());
         return ResponseResult.ok(fsUserService.userRanking(userId, startTime, endTime, periodId, videoId, order, type));
@@ -218,14 +219,14 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/firstPage/courseRanking")
-    @ApiOperation("首页数据/详情-课程排行榜统计")
+    @Operation(summary = "首页数据/详情-课程排行榜统计")
     public ResponseResult<List<FsCourseRankingVO>> courseRanking(
-            @ApiParam(value = "开始时间") @RequestParam(required = false) String startTime,
-            @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime,
-            @ApiParam(value = "课程id") @RequestParam(required = false) String courseId,
-            @ApiParam(value = "视频id") @RequestParam(required = false) String videoId,
-            @ApiParam(value = "asc-正序,desc-倒序", required = true) @RequestParam String order,
-            @ApiParam(value = "类型,1-按完播率,2-按正确率", required = true) @RequestParam Integer type
+            @Parameter(name = "开始时间") @RequestParam(required = false) String startTime,
+            @Parameter(name = "结束时间") @RequestParam(required = false) String endTime,
+            @Parameter(name = "课程id") @RequestParam(required = false) String courseId,
+            @Parameter(name = "视频id") @RequestParam(required = false) String videoId,
+            @Parameter(name = "asc-正序,desc-倒序", required = true) @RequestParam String order,
+            @Parameter(name = "类型,1-按完播率,2-按正确率", required = true) @RequestParam Integer type
     ) {
         long userId = Long.parseLong(getUserId());
         return ResponseResult.ok(fsUserService.courseRanking(userId, startTime, endTime, courseId, videoId, order, type));
@@ -233,9 +234,9 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/firstPage/graphic")
-    @ApiOperation("首页数据-转化漏斗图")
-    public ResponseResult<List<FsUserGraphicStatisticsVO>> graphicStatistics(@ApiParam(value = "开始时间", required = true) @RequestParam String startTime,
-                                                                             @ApiParam(value = "结束时间", required = true) @RequestParam String endTime) {
+    @Operation(summary = "首页数据-转化漏斗图")
+    public ResponseResult<List<FsUserGraphicStatisticsVO>> graphicStatistics(@Parameter(name = "开始时间", required = true) @RequestParam String startTime,
+                                                                             @Parameter(name = "结束时间", required = true) @RequestParam String endTime) {
         long userId = Long.parseLong(getUserId());
         UserStatisticsCommonParam param = new UserStatisticsCommonParam();
         param.setUserId(userId).setStartTime(startTime).setEndTime(endTime);
@@ -245,9 +246,9 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/graphic/details")
-    @ApiOperation("详情-转化漏斗图")
-    public ResponseResult<List<FsUserGraphicStatisticsVO>> graphicStatisticsDetails(@ApiParam(value = "营期id") @RequestParam(required = false) String periodId,
-                                                                                    @ApiParam(value = "视频id") @RequestParam(required = false) String videoId) {
+    @Operation(summary = "详情-转化漏斗图")
+    public ResponseResult<List<FsUserGraphicStatisticsVO>> graphicStatisticsDetails(@Parameter(name = "营期id") @RequestParam(required = false) String periodId,
+                                                                                    @Parameter(name = "视频id") @RequestParam(required = false) String videoId) {
         long userId = Long.parseLong(getUserId());
         UserStatisticsCommonParam param = new UserStatisticsCommonParam();
         param.setUserId(userId).setPeriodId(periodId).setVideoId(videoId);
@@ -256,7 +257,7 @@ public class FsUserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("修改用户备注、姓名")
+    @Operation(summary = "修改用户备注、姓名")
     @PostMapping("/changeUserInfo")
     public ResponseResult<Object> changeUserInfo(@Valid @RequestBody FsUserUpdateParam param) {
         log.debug("修改用户备注、姓名 param:{}", JSON.toJSONString(param));
@@ -272,7 +273,7 @@ public class FsUserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("修改用户项目备注")
+    @Operation(summary = "修改用户项目备注")
     @PostMapping("/changeUserRemark")
     public ResponseResult<Object> changeUserProjectRemark(@Valid @RequestBody FsUserProjectUpdateParam param) {
         log.debug("修改用户备注 param:{}", JSON.toJSONString(param));
@@ -287,7 +288,7 @@ public class FsUserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("修改用户标签")
+    @Operation(summary = "修改用户标签")
     @PostMapping("/changeUserTags")
     public ResponseResult<Object> changeUserTags(@Valid @RequestBody FsUserTagUpdateParam param) {
         log.debug("修改用户标签 param:{}", JSON.toJSONString(param));
@@ -297,7 +298,7 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/courseAnalysis")
-    @ApiOperation("管理-课程分析-分页列表查询")
+    @Operation(summary = "管理-课程分析-分页列表查询")
     public ResponseResult<PageInfo<FsCourseAnalysisVO>> courseAnalysisList(CourseAnalysisParam param) {
         param.setCompanyId(getCompanyId());
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
@@ -308,10 +309,10 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/companyUser/details")
-    @ApiOperation("管理-群管数据-根据销售id,群管数据统计")
-    public ResponseResult<FsUserStatisticsVO> companyUserStatistics(@ApiParam(value = "营期id") @RequestParam(required = false) String periodId,
-                                                                    @ApiParam(value = "视频id") @RequestParam(required = false) String videoId,
-                                                                    @ApiParam(value = "销售用户id", required = true) @RequestParam String companyUserId) {
+    @Operation(summary = "管理-群管数据-根据销售id,群管数据统计")
+    public ResponseResult<FsUserStatisticsVO> companyUserStatistics(@Parameter(name = "营期id") @RequestParam(required = false) String periodId,
+                                                                    @Parameter(name = "视频id") @RequestParam(required = false) String videoId,
+                                                                    @Parameter(name = "销售用户id", required = true) @RequestParam String companyUserId) {
         UserStatisticsCommonParam param = new UserStatisticsCommonParam();
         param.setUserId(Long.parseLong(getUserId()))
                 .setPeriodId(periodId).setVideoId(videoId)
@@ -323,13 +324,13 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @GetMapping("/companyUser/summaryCount")
-    @ApiOperation("管理-群管数据-顶部会员统计")
-    public ResponseResult<CompanyUserSummaryCountVO> companyUserSummaryCount(@ApiParam(value = "销售用户id", required = true) @RequestParam String companyUserId) {
+    @Operation(summary = "管理-群管数据-顶部会员统计")
+    public ResponseResult<CompanyUserSummaryCountVO> companyUserSummaryCount(@Parameter(name = "销售用户id", required = true) @RequestParam String companyUserId) {
         long userId = Long.parseLong(getUserId());
         return ResponseResult.ok(fsUserService.companyUserSummaryCount(userId, companyUserId));
     }
 
-    @ApiOperation("会员关联绑定销售")
+    @Operation(summary = "会员关联绑定销售")
     @PostMapping("/beMember")
     public ResponseResult<Boolean> becomeMember(@Valid @RequestBody FsUserCourseBeMemberParam param) {
         log.debug("会员关联绑定销售 param:{}", JSON.toJSONString(param));
@@ -338,7 +339,7 @@ public class FsUserController extends AppBaseController {
 
     @Login
     @PostMapping("/userImage")
-    @ApiOperation("生成分享会员海报")
+    @Operation(summary = "生成分享会员海报")
     public R createCourseImage(@RequestBody FsUserCourseBeMemberImageParam param) {
         try {
             //获取用户头像
@@ -372,7 +373,7 @@ public class FsUserController extends AppBaseController {
     }
 
     @PostMapping("/test")
-    @ApiOperation("测试定时任务")
+    @Operation(summary = "测试定时任务")
     public void userCourseCountTask() {
         userCourseCountService.insertFsUserCourseCountTask();
     }

+ 2 - 2
fs-company-app/src/main/java/com/fs/app/controller/FsUserCoursePeriodController.java

@@ -24,7 +24,7 @@ import com.fs.course.vo.UpdateCourseTimeVo;
 import com.fs.his.vo.OptionsVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -50,7 +50,7 @@ public class FsUserCoursePeriodController extends BaseController {
     private final IFsUserCoursePeriodService fsUserCoursePeriodService;
 
     @PostMapping("/periodCourseStatisticCount")
-    @ApiOperation("会员详情训练营数据总览")
+    @Operation(summary = "会员详情训练营数据总览")
     public R periodCourseStatisticCount(@RequestBody PeriodStatisticCountParam param) {
         if (param == null) {
             return R.error("请求参数不能为空!");

+ 14 - 14
fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java

@@ -24,8 +24,8 @@ import com.fs.course.vo.newfs.FsUserCourseVideoPageListVO;
 import com.fs.course.vo.newfs.FsUserVideoListVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,7 +39,7 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 
 
-@Api("课程库相关接口")
+@Tag(name = "课程库相关接口")
 @RestController
 @RequestMapping("/app/fs/course")
 @Slf4j
@@ -64,7 +64,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
     @Login
     @GetMapping("/pageList")
-    @ApiOperation("课程分页列表")
+    @Operation(summary = "课程分页列表")
     public ResponseResult<PageInfo<FsUserCourseVideoPageListVO>> list(UserCourseVideoPageParam param) {
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         param.setCompanyId(getCompanyId());
@@ -75,7 +75,7 @@ public class FsUserCourseVideoController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("课程视频详情")
+    @Operation(summary = "课程视频详情")
     @GetMapping(value = "/videoDetails")
     public ResponseResult<FsUserCourseVideoDetailsVO> getVideoDetails(Long videoId) {
         return fsUserCourseVideoService.getVideoDetails(videoId);
@@ -83,7 +83,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
     @Login
     @GetMapping("/courseList")
-    @ApiOperation("获取课程下拉列表")
+    @Operation(summary = "获取课程下拉列表")
     public ResponseResult<PageInfo<FsUserCourseListVO>> getAllCourseList(FsUserCourseListParam param) {
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         param.setCompanyId(getCompanyId());
@@ -94,7 +94,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
     @Login
     @GetMapping("/videoList")
-    @ApiOperation("获取视频下拉列表")
+    @Operation(summary = "获取视频下拉列表")
     public ResponseResult<PageInfo<FsUserVideoListVO>> getAllVideoList(UserCourseVideoPageParam param) {
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         param.setCompanyId(getCompanyId());
@@ -104,7 +104,7 @@ public class FsUserCourseVideoController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("参与记录")
+    @Operation(summary = "参与记录")
     @GetMapping("/participationRecord")
     public ResponseResult<Object> participationRecord(@RequestParam Long videoId,
                                                       @RequestParam Integer type,
@@ -135,7 +135,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
     @Login
     @PostMapping("/courseSortLink")
-    @ApiOperation("生成课程分享短链")
+    @Operation(summary = "生成课程分享短链")
     public R createCourseSortLink(@RequestBody FsCourseSortLinkParam param) {
         FsCourseLinkCreateParam fsCourseLinkCreateParam = new FsCourseLinkCreateParam();
         BeanUtils.copyProperties(param, fsCourseLinkCreateParam);
@@ -149,7 +149,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
     @Login
     @PostMapping("/courseImage")
-    @ApiOperation("生成课程海报")
+    @Operation(summary = "生成课程海报")
     public R createCourseImage(@RequestBody FsCourseSortLinkParam param) {
         // 获取生成链接
         FsCourseLinkCreateParam fsCourseLinkCreateParam = new FsCourseLinkCreateParam();
@@ -190,7 +190,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
 //    @Login
 //    @PostMapping("/sortLink/courseMember")
-//    @ApiOperation("生成分享成为会员短链")
+//    @Operation(summary = "生成分享成为会员短链")
 //    public R createCourseMemberSortLink(@RequestBody FsUserCourseBeMemberParam param) {
 //        FsCourseLinkCreateParam fsCourseLinkCreateParam = new FsCourseLinkCreateParam();
 //        BeanUtils.copyProperties(param, fsCourseLinkCreateParam);
@@ -204,7 +204,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
     @Login
     @GetMapping("/todayCourseList")
-    @ApiOperation("今日课程")
+    @Operation(summary = "今日课程")
     public ResponseResult<PageInfo<FsUserCourseVideoPageListVO>> todayCourseList(@RequestParam(defaultValue = "1") Integer pageNum,
                                                                                  @RequestParam(defaultValue = "10") Integer pageSize) {
         Long companyId = getCompanyId();
@@ -225,7 +225,7 @@ public class FsUserCourseVideoController extends AppBaseController {
 
     @Login
     @PostMapping("/setWatchTime")
-    @ApiOperation("销售设置课程时间")
+    @Operation(summary = "销售设置课程时间")
     public ResponseResult<Boolean> setWatchCourseTime(@RequestBody List<FsWatchCourseTimeParam> paramList) {
         List<FsWatchCourseTimeParam> collect = paramList.stream().peek(v -> {
             v.setCompanyUserId(Long.parseLong(getUserId()));
@@ -239,7 +239,7 @@ public class FsUserCourseVideoController extends AppBaseController {
      */
     @Login
     @GetMapping("/getGotoWxAppLink")
-    @ApiOperation("获取跳转微信小程序的链接地址")
+    @Operation(summary = "获取跳转微信小程序的链接地址")
     public ResponseResult<String> getGotoWxAppLink(String linkStr,String appid) {
         return ResponseResult.ok(courseLinkService.getGotoWxAppLink(linkStr,appid));
     }

+ 4 - 4
fs-company-app/src/main/java/com/fs/app/controller/IndexController.java

@@ -11,8 +11,8 @@ import com.fs.crm.param.CrmFullCustomerListQueryParam;
 import com.fs.crm.service.ICrmCustomerService;
 import com.fs.crm.service.ICrmCustomerUserService;
 import com.fs.his.service.IFsStoreOrderService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -22,7 +22,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 
-@Api("首页接口")
+@Tag(name = "首页接口")
 @RestController
 @RequestMapping(value="/app/index")
 public class IndexController extends  AppBaseController {
@@ -39,7 +39,7 @@ public class IndexController extends  AppBaseController {
 	@Autowired
 	private ICompanyService companyService;
 	@Login
-	@ApiOperation("获取首页数据")
+	@Operation(summary = "获取首页数据")
 	@GetMapping("/getIndexData")
 	public R getIndexData(CrmFullCustomerListQueryParam param){
 		Company company=companyService.selectCompanyById(getCompanyId());

+ 15 - 14
fs-company-app/src/main/java/com/fs/app/controller/QwCompanyUserController.java

@@ -14,16 +14,17 @@ import com.fs.qw.vo.newvo.ExternalContactListVO;
 import com.fs.qw.vo.newvo.ExternalContactPageVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
 
-@Api(tags = "企微用户相关接口")
+@Tag(name = "企微用户相关接口")
 @RestController
 @RequestMapping("/app/company/user")
 public class QwCompanyUserController extends AppBaseController {
@@ -36,7 +37,7 @@ public class QwCompanyUserController extends AppBaseController {
 
     @Login
     @GetMapping("/pageList")
-    @ApiOperation("会员分页列表")
+    @Operation(summary = "会员分页列表")
     public ResponseResult<PageInfo<ExternalContactListVO>> pageList(ExternalContactPageListParam param) {
         param.setUserId(Long.parseLong(getUserId()));
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
@@ -47,7 +48,7 @@ public class QwCompanyUserController extends AppBaseController {
 
     @Login
     @GetMapping("/totalNumber")
-    @ApiOperation("会员数量统计")
+    @Operation(summary = "会员数量统计")
     public ResponseResult<ExternalContactPageVO> getTotalNumber() {
         ExternalContactPageVO contactNumber = qwExternalContactService.getContactNumber(Long.parseLong(getUserId()));
         return ResponseResult.ok(contactNumber);
@@ -55,9 +56,9 @@ public class QwCompanyUserController extends AppBaseController {
 
     @Login
     @GetMapping("/details")
-    @ApiOperation("会员详情")
-    public ResponseResult<ExternalContactDetailsVO> getUserDetails(@ApiParam(value = "外部联系人id", required = true) @RequestParam Long contactId,
-                                                                   @ApiParam(value = "时间tab,不传表示查询全部,分别是:今天、昨天、前天、近七天", required = true) @RequestParam String dateTag) {
+    @Operation(summary = "会员详情")
+    public ResponseResult<ExternalContactDetailsVO> getUserDetails(@Parameter(name = "外部联系人id", required = true) @RequestParam Long contactId,
+                                                                   @Parameter(name = "时间tab,不传表示查询全部,分别是:今天、昨天、前天、近七天", required = true) @RequestParam String dateTag) {
         ExternalContactDetailsParam externalContactDetailsParam = new ExternalContactDetailsParam();
         externalContactDetailsParam.setUserId(Long.parseLong(getUserId()));
         externalContactDetailsParam.setContactId(contactId);
@@ -67,7 +68,7 @@ public class QwCompanyUserController extends AppBaseController {
 
     @Login
     @GetMapping("/tagList")
-    @ApiOperation("会员标签列表")
+    @Operation(summary = "会员标签列表")
     public ResponseResult<PageInfo<QwTagVO>> getTagList(ContactTagListParam param) {
         param.setUserId(Long.parseLong(getUserId()));
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
@@ -78,16 +79,16 @@ public class QwCompanyUserController extends AppBaseController {
 
     @Login
     @PostMapping("/disabled")
-    @ApiOperation("批量禁用会员")
-    public ResponseResult<Boolean> disabledUser(@ApiParam(value = "联系人id集合", required = true) @RequestBody String[] ids) {
+    @Operation(summary = "批量禁用会员")
+    public ResponseResult<Boolean> disabledUser(@Parameter(name = "联系人id集合", required = true) @RequestBody String[] ids) {
         Boolean r = qwExternalContactService.disabledUser(ids, false);
         return ResponseResult.ok(r);
     }
 
     @Login
     @PostMapping("/enabled")
-    @ApiOperation("批量启用会员")
-    public ResponseResult<Boolean> enabledUser(@ApiParam(value = "联系人id集合", required = true) @RequestBody String[] ids) {
+    @Operation(summary = "批量启用会员")
+    public ResponseResult<Boolean> enabledUser(@Parameter(name = "联系人id集合", required = true) @RequestBody String[] ids) {
         Boolean r = qwExternalContactService.disabledUser(ids, true);
         return ResponseResult.ok(r);
     }

+ 7 - 7
fs-company-app/src/main/java/com/fs/app/controller/QwWorkTaskController.java

@@ -11,8 +11,8 @@ import com.fs.qw.vo.QwOptionsVO;
 import com.fs.qw.vo.UserVOs;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -26,7 +26,7 @@ import java.util.List;
 import java.util.Map;
 
 @Slf4j
-@Api(tags = "企微任务看板接口")
+@Tag(name = "企微任务看板接口")
 @RestController
 @RequestMapping("/app/qwWorkTask")
 @AllArgsConstructor
@@ -36,7 +36,7 @@ public class QwWorkTaskController extends AppBaseController {
     private final IQwUserService qwUserService;
 
     @Login
-    @ApiOperation("企微任务看板列表")
+    @Operation(summary = "企微任务看板列表")
     @GetMapping("/list")
     public R list(@Valid QwWorkTaskQueryParam param) {
         log.debug("企微任务看板列表:{}", JSON.toJSONString(param));
@@ -55,7 +55,7 @@ public class QwWorkTaskController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("销售下的企微用户")
+    @Operation(summary = "销售下的企微用户")
     @GetMapping("/getMyQwUserList")
     public R userList(@RequestParam(required = false, defaultValue = "1") Integer pageNum,
                       @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
@@ -66,7 +66,7 @@ public class QwWorkTaskController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("催课看板会员列表")
+    @Operation(summary = "催课看板会员列表")
     @GetMapping("/getUserList")
     public R getUserList(@RequestParam(required = false, defaultValue = "1") Integer pageNum,
                          @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
@@ -77,7 +77,7 @@ public class QwWorkTaskController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("催课看板企微会员列表")
+    @Operation(summary = "催课看板企微会员列表")
     @GetMapping("/getQwUserList")
     public R getQwUserList(@RequestParam(required = false, defaultValue = "1") Integer pageNum,
                            @RequestParam(required = false, defaultValue = "10") Integer pageSize,

+ 7 - 7
fs-company-app/src/main/java/com/fs/app/controller/SmsController.java

@@ -14,8 +14,8 @@ import com.fs.company.vo.CompanySmsTempListQueryVO;
 import com.fs.crm.param.SmsSendBatchParam;
 import com.fs.crm.param.SmsSendParam;
 import com.fs.crm.service.ICrmCustomerService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*;
 import java.util.List;
 
 
-@Api("短信接口")
+@Tag(name = "短信接口")
 @RestController
 @RequestMapping(value="/app/sms")
 public class SmsController extends  AppBaseController {
@@ -50,7 +50,7 @@ public class SmsController extends  AppBaseController {
 	private ISmsService smsService;
 
 	@Login
-	@ApiOperation("获取短信模版列表")
+	@Operation(summary = "获取短信模版列表")
 	@GetMapping("/getSmsTempList")
 	public R getSmsTempList(){
 		CompanySmsTempListQueryParam map=new CompanySmsTempListQueryParam();
@@ -63,7 +63,7 @@ public class SmsController extends  AppBaseController {
 	}
 
 	@Login
-	@ApiOperation("发送短信")
+	@Operation(summary = "发送短信")
 	@PostMapping("/sendCustomerMsg")
 	@RepeatSubmit
 	@Transactional
@@ -74,7 +74,7 @@ public class SmsController extends  AppBaseController {
 	}
 
 	@Login
-	@ApiOperation("发送短信")
+	@Operation(summary = "发送短信")
 	@PostMapping("/sendCustomerBatchMsg")
 	@RepeatSubmit
 	@Transactional
@@ -94,7 +94,7 @@ public class SmsController extends  AppBaseController {
 
 
 	@Login
-	@ApiOperation("获取短信数量")
+	@Operation(summary = "获取短信数量")
 	@GetMapping("/getCompanySmsCount")
 	public R getCompanySmsCount( ) {
 		CompanySms companySms=companySmsService.selectCompanySmsByCompanyId(getCompanyId());

+ 9 - 9
fs-company-app/src/main/java/com/fs/app/controller/StatisticsController.java

@@ -22,8 +22,8 @@ import com.fs.crm.vo.CrmCustomerStatisticsVO;
 import com.fs.crm.vo.CrmCustomerVisitStatisticsVO;
 import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.service.IFsStorePaymentService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -35,7 +35,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 
-@Api("统计")
+@Tag(name = "统计")
 @RestController
 @RequestMapping("/app/statistics")
 public class StatisticsController extends AppBaseController
@@ -58,7 +58,7 @@ public class StatisticsController extends AppBaseController
     private ICompanySmsLogsService smsLogsService;
 
     @Login
-    @ApiOperation("客户统计")
+    @Operation(summary = "客户统计")
     @GetMapping("/getCustomerStatistics")
     public R getCustomerStatistics(CrmCustomerStatisticsParam param)
     {
@@ -99,7 +99,7 @@ public class StatisticsController extends AppBaseController
             return R.ok("未查找到数据");
         }
     }
-    @ApiOperation("客户跟进统计")
+    @Operation(summary = "客户跟进统计")
     @GetMapping("/getCustomerVisitStatistics")
     public R getCustomerVisitStatistics(CrmCustomerStatisticsParam param)
     {
@@ -142,7 +142,7 @@ public class StatisticsController extends AppBaseController
         }
     }
 
-    @ApiOperation("订单统计")
+    @Operation(summary = "订单统计")
     @GetMapping("/getStoreOrderStatistics")
     public R getStoreOrderStatistics(FsStoreStatisticsParam param)
     {
@@ -184,7 +184,7 @@ public class StatisticsController extends AppBaseController
             return R.ok("未查找到数据");
         }
     }
-    @ApiOperation("收款订单统计")
+    @Operation(summary = "收款订单统计")
     @GetMapping("/getStorePaymentStatistics")
     public R getStorePaymentStatistics(FsStoreStatisticsParam param)
     {
@@ -226,7 +226,7 @@ public class StatisticsController extends AppBaseController
         }
     }
 
-    @ApiOperation("通话统计")
+    @Operation(summary = "通话统计")
     @GetMapping("/getVoiceLogsStatistics")
     public R getVoiceLogsStatistics(CompanyStatisticsParam param)
     {
@@ -276,7 +276,7 @@ public class StatisticsController extends AppBaseController
         }
     }
 
-    @ApiOperation("短信统计")
+    @Operation(summary = "短信统计")
     @GetMapping("/getSmsLogsStatistics")
     public R smsLogs(CompanyStatisticsParam param)
     {

+ 3 - 3
fs-company-app/src/main/java/com/fs/app/controller/StorePaymentController.java

@@ -16,14 +16,14 @@ import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.vo.FsStorePaymentVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -56,7 +56,7 @@ public class StorePaymentController extends AppBaseController
 
 
     @Login
-    @ApiOperation("获取支付宝收款码")
+    @Operation(summary = "获取支付宝收款码")
     @GetMapping("/getAlipayQrImg")
     public R getAlipayQrImg(  HttpServletRequest request){
         Long userId=Long.parseLong(getUserId());

+ 6 - 6
fs-company-app/src/main/java/com/fs/app/controller/StoreProductPackageController.java

@@ -17,20 +17,20 @@ import com.fs.his.service.IFsStoreProductService;
 import com.fs.his.vo.FsStoreProductPacketVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
 
 
-@Api("套餐")
+@Tag(name = "套餐")
 @RestController
 @RequestMapping(value="/app/storeProductPackage")
 public class StoreProductPackageController extends  AppBaseController {
@@ -42,7 +42,7 @@ public class StoreProductPackageController extends  AppBaseController {
     @Autowired
     private IFsStoreProductService storeProductService;
     @Login
-    @ApiOperation("获取套餐列表")
+    @Operation(summary = "获取套餐列表")
     @GetMapping("/getStoreProductPackage")
     public R getStoreProductPackage(FsStoreProductPackageQueryParam param, HttpServletRequest request){
         PageHelper.startPage(param.getPage(), param.getPageSize());
@@ -51,7 +51,7 @@ public class StoreProductPackageController extends  AppBaseController {
         return R.ok().put("data",listPageInfo);
     }
     @Login
-    @ApiOperation("获取套餐详情")
+    @Operation(summary = "获取套餐详情")
     @GetMapping("/getStoreProductPackageDetails")
     public R getStoreProductPackageDetails(@RequestParam("packageId") Long packageId, HttpServletRequest request){
         FsStoreProductPackage storeProductPackage=productPackageService.selectFsStoreProductPackageById(packageId);

+ 3 - 3
fs-company-app/src/main/java/com/fs/app/controller/TestController.java

@@ -2,7 +2,7 @@ package com.fs.app.controller;
 
 
 import com.fs.wx.cp.config.WxCpConfiguration;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.cp.api.WxCpExternalContactService;
 import me.chanjar.weixin.cp.api.WxCpMessageService;
@@ -25,7 +25,7 @@ public class TestController extends AppBaseController {
 	@Autowired
 	private WxCpConfiguration wxCpConfiguration;
 
-	@ApiOperation("获取数据字典")
+	@Operation(summary = "获取数据字典")
 	@GetMapping("/WW_verify_vFu5z0l4wIXrSMbr.txt")
 	public String getDicts(
 	){
@@ -34,7 +34,7 @@ public class TestController extends AppBaseController {
 
 	}
 
-	@ApiOperation("test")
+	@Operation(summary = "test")
 	@GetMapping("/sendTest")
 	public WxCpMessageSendResult sendTest(
 	) throws WxErrorException {

+ 26 - 25
fs-company-app/src/main/java/com/fs/app/controller/UserController.java

@@ -38,15 +38,16 @@ import com.fs.his.service.IFsUserService;
 import com.fs.wx.miniapp.config.WxMaProperties;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.time.ZoneId;
 import java.util.*;
@@ -56,7 +57,7 @@ import java.util.stream.Collectors;
 import static com.fs.common.constant.Constants.PAGE_SIZE;
 
 @Slf4j
-@Api("个人中心")
+@Tag(name = "个人中心")
 @RestController
 @RequestMapping(value = "/app/user")
 public class UserController extends AppBaseController {
@@ -90,7 +91,7 @@ public class UserController extends AppBaseController {
     private String aifabuAppId = "7b471be905ab17e00f3b858c6710dd117601d008";
 
 //	@PostMapping("/loginByPwd")
-//	@ApiOperation("密码登录")
+//	@Operation(summary = "密码登录")
 //	public R loginByPwd(@Validated @RequestBody LoginParam param){
 //		try {
 //
@@ -148,7 +149,7 @@ public class UserController extends AppBaseController {
 //	}
 
     @PostMapping("/login")
-    @ApiOperation("密码登录")
+    @Operation(summary = "密码登录")
     public R login(@Validated @RequestBody LoginParam param) {
 
         // 密码校验
@@ -227,7 +228,7 @@ public class UserController extends AppBaseController {
 //     * @return
 //     */
 //    @Login
-//    @ApiOperation("获取用户信息")
+//    @Operation(summary = "获取用户信息")
 //    @GetMapping("/getUserInfo")
 //    public R getUserInfo(HttpServletRequest request) {
 //        try {
@@ -247,7 +248,7 @@ public class UserController extends AppBaseController {
 //    }
 
     @Login
-    @ApiOperation("获取用户信息")
+    @Operation(summary = "获取用户信息")
     @GetMapping("/getCompanyUser")
     public R getCompanyUser() {
         try {
@@ -271,7 +272,7 @@ public class UserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("检测是否登录")
+    @Operation(summary = "检测是否登录")
     @GetMapping("/checkLogin")
     public R checkLogin(HttpServletRequest request) {
         return R.ok("认证成功");
@@ -279,9 +280,9 @@ public class UserController extends AppBaseController {
 
 
     @Login
-    @ApiOperation("获取通讯录")
+    @Operation(summary = "获取通讯录")
     @GetMapping("/getAllUsers")
-    public R getAllUsers(HttpServletRequest request, @ApiParam(required = false, name = "searchKey", value = "searchKey") @RequestParam(value = "searchKey", required = false) String searchKey,
+    public R getAllUsers(HttpServletRequest request, @Parameter(required = false, name = "searchKey", example = "searchKey") @RequestParam(value = "searchKey", required = false) String searchKey,
                          @RequestParam Integer isAudit) {
         log.debug("获取通讯录 searchKey:{}, isAudit: {}", searchKey, isAudit);
         CompanyUser user = new CompanyUser();
@@ -344,10 +345,10 @@ public class UserController extends AppBaseController {
     }
 
 //    @Login
-    @ApiOperation("获取用户信息ByUserId")
+    @Operation(summary = "获取用户信息ByUserId")
     @GetMapping("/getUserInfoByUserId")
     public R getUserInfoByUserId(
-            @ApiParam(required = true, name = "userId", value = "用户ID") @RequestParam(value = "userId", required = false) Long userId,
+            @Parameter(required = true, name = "userId", example = "用户ID") @RequestParam(value = "userId", required = false) Long userId,
             HttpServletRequest request) {
         try {
             log.debug("获取用户信息ByUserId userId:{}", userId);
@@ -384,7 +385,7 @@ public class UserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("修改密码")
+    @Operation(summary = "修改密码")
     @PostMapping("/setPwd")
     public R setPwd(HttpServletRequest request, @RequestBody EditPwdParam param) {
         try {
@@ -415,10 +416,10 @@ public class UserController extends AppBaseController {
      * @return
      */
     @Login
-    @ApiOperation("修改头像")
+    @Operation(summary = "修改头像")
     @PostMapping("/setHeadImg")
     public R setHeadImg(HttpServletRequest request,
-                        @ApiParam(required = true, name = "headImg", value = "用户头像") @RequestParam(value = "headImg", required = false) String headImg) {
+                        @Parameter(required = true, name = "headImg", example = "用户头像") @RequestParam(value = "headImg", required = false) String headImg) {
         try {
             CompanyUser user = userService.selectCompanyUserById(Long.parseLong(getUserId()));
             if (user == null) {
@@ -442,7 +443,7 @@ public class UserController extends AppBaseController {
 
 
     @Login
-    @ApiOperation("修改用户信息")
+    @Operation(summary = "修改用户信息")
     @PostMapping("/setUserInfo")
     public R setUserInfo(HttpServletRequest request, @RequestBody EditUserInfoParam param) {
         try {
@@ -480,7 +481,7 @@ public class UserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("修改二维码")
+    @Operation(summary = "修改二维码")
     @PostMapping("/editQrCode")
     @RepeatSubmit
     public R editQrCode(HttpServletRequest request, @RequestBody EditUserQrCodeParam param) {
@@ -528,7 +529,7 @@ public class UserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("获取我的名片列表")
+    @Operation(summary = "获取我的名片列表")
     @GetMapping("/getMyCardList")
     public R getMyCardList(CompanyUserCardQueryParam param) {
         PageHelper.startPage(param.getPage(), PAGE_SIZE);
@@ -541,7 +542,7 @@ public class UserController extends AppBaseController {
 
 
     @Login
-    @ApiOperation("删除名片")
+    @Operation(summary = "删除名片")
     @PostMapping("/delMyCard")
     public R delMyCard(@RequestParam("cardId") Long cardId) {
         try {
@@ -578,7 +579,7 @@ public class UserController extends AppBaseController {
     }
 
 
-    @ApiOperation("查询微信urlScheme")
+    @Operation(summary = "查询微信urlScheme")
     @GetMapping("/getAppletScheme")
     public R getAppletScheme(@RequestParam(value = "cardId") Long cardId) {
         try {
@@ -631,7 +632,7 @@ public class UserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("获取短链接")
+    @Operation(summary = "获取短链接")
     @GetMapping("/getShortUrl")
     public R getShortUrl(@RequestParam(value = "url") String url, @RequestParam(value = "title") String title) {
 
@@ -662,7 +663,7 @@ public class UserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("修改用户状态")
+    @Operation(summary = "修改用户状态")
     @PostMapping("/changeUserState")
     public R changeUserState(@RequestParam Long userId) {
         log.debug("修改用户状态 userId :{}", userId);
@@ -678,7 +679,7 @@ public class UserController extends AppBaseController {
     }
 
     @Login
-    @ApiOperation("批量审核用户")
+    @Operation(summary = "批量审核用户")
     @PostMapping("/audit")
     public R auditUser(@RequestParam List<Long> userIds) {
         log.debug("批量审核用户 userIds :{}", userIds);

+ 4 - 4
fs-company-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java

@@ -30,8 +30,8 @@ import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import com.fs.wx.miniapp.config.WxMaProperties;
 import io.jsonwebtoken.Claims;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.lang3.StringUtils;
@@ -46,7 +46,7 @@ import java.util.Objects;
 
 import static com.fs.his.utils.PhoneUtil.encryptPhone;
 
-@Api("微信小程序相关接口(暂废弃,后面再删除)")
+@Tag(name = "微信小程序相关接口(暂废弃,后面再删除)")
 @RestController
 @RequestMapping(value = "/app/wx/miniapp")
 @Slf4j
@@ -66,7 +66,7 @@ public class WxCompanyUserController extends AppBaseController {
     @Autowired
     private IFsUserWxService fsUserWxService;
 
-    @ApiOperation("小程序-授权登录")
+    @Operation(summary = "小程序-授权登录")
     @PostMapping("/loginByMa")
     public R login(@RequestBody LoginMaWxParam param) {
         log.info("=====================进入小程序授权登录, 入参: {}", param);

+ 5 - 5
fs-company-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -9,8 +9,8 @@ import com.fs.course.mapper.FsCourseWatchLogMapper;
 import com.fs.his.domain.FsUser;
 import com.fs.his.service.IFsUserService;
 import com.fs.qw.mapper.QwExternalContactMapper;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
 import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
@@ -31,7 +31,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
-@Api("会员-h5-微信相关接口")
+@Tag(name = "会员-h5-微信相关接口")
 @RestController
 @RequestMapping("/app/wx/h5/mp")
 @Slf4j
@@ -54,7 +54,7 @@ public class WxH5MpController {
     QwExternalContactMapper qwExternalContactMapper;
 
 
-    @ApiOperation("微信授权登录成为会员")
+    @Operation(summary = "微信授权登录成为会员")
     @PostMapping("/loginByMp")
     public R loginByMp(@Valid @RequestBody FsUserLoginByMpParam param) {
         try {
@@ -106,7 +106,7 @@ public class WxH5MpController {
 
     }
 
-    @ApiOperation("单独返回用户头像和昵称的接口,不保存用户数据")
+    @Operation(summary = "单独返回用户头像和昵称的接口,不保存用户数据")
     @PostMapping("/userInfo")
     public R mpGetUserInfo(@Valid @RequestBody FsUserLoginByMpParam param) {
         try {

+ 4 - 4
fs-company-app/src/main/java/com/fs/app/controller/WxMpController.java

@@ -1,8 +1,8 @@
 package com.fs.app.controller;
 
 import com.fs.common.core.domain.R;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
 import lombok.Synchronized;
 import me.chanjar.weixin.common.bean.WxJsapiSignature;
 import me.chanjar.weixin.common.error.WxErrorException;
@@ -18,7 +18,7 @@ import java.net.URLDecoder;
 
 
 @RestController
-@Api("微信配置")
+@Tag(name = "微信配置")
 @RequestMapping("/app/wx/mp")
 public class WxMpController {
 
@@ -27,7 +27,7 @@ public class WxMpController {
 
 
     @GetMapping("/getWeiXinConfig")
-    @ApiOperation("微信url验证")
+    @Operation(summary = "微信url验证")
     @Synchronized
     public R getWxConfig(@RequestParam String url) throws WxErrorException {
         try {

+ 4 - 4
fs-company-app/src/main/java/com/fs/app/interceptor/AuthorizationInterceptor.java

@@ -11,16 +11,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Component;
 import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+import org.springframework.web.servlet.HandlerInterceptor;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * 权限(Token)验证
  */
 @Component
-public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
+public class AuthorizationInterceptor implements HandlerInterceptor {
     @Autowired
     private JwtUtils jwtUtils;
     @Autowired

+ 3 - 2
fs-company-app/src/main/java/com/fs/app/param/CompanyUserParam.java

@@ -1,6 +1,7 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -13,7 +14,7 @@ public class CompanyUserParam {
      * 上级销售
      */
     @NotNull(message = "上级销售不能为空")
-    @ApiModelProperty("上级销售不能为空")
+    @Schema(description = "上级销售不能为空")
     private Long companyUserId;
     /**
      * 手机号码

+ 1 - 1
fs-company-app/src/main/java/com/fs/app/param/EditChatMsgParam.java

@@ -1,6 +1,6 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;

+ 4 - 3
fs-company-app/src/main/java/com/fs/app/param/FsUserProjectUpdateParam.java

@@ -1,6 +1,7 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -8,10 +9,10 @@ import javax.validation.constraints.NotNull;
 @Data
 public class FsUserProjectUpdateParam {
 
-    @ApiModelProperty("用户项目ID")
+    @Schema(description = "用户项目ID")
     @NotNull(message = "用户项目ID不能为空")
     private Long userCompanyUserId;
 
-    @ApiModelProperty("备注")
+    @Schema(description = "备注")
     private String remark;
 }

+ 4 - 3
fs-company-app/src/main/java/com/fs/app/param/FsUserTagUpdateParam.java

@@ -1,6 +1,7 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
@@ -11,12 +12,12 @@ public class FsUserTagUpdateParam {
     /**
      * 用户ID
      */
-    @ApiModelProperty("用户项目ID集合")
+    @Schema(description = "用户项目ID集合")
     @NotEmpty(message = "用户项目ID不能为空")
     private List<Long> userCompanyUserIds;
     /**
      * 标签ID
      */
-    @ApiModelProperty("标签ID集合")
+    @Schema(description = "标签ID集合")
     private List<Long> tagIds;
 }

+ 5 - 4
fs-company-app/src/main/java/com/fs/app/param/FsUserUpdateParam.java

@@ -1,6 +1,7 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -10,17 +11,17 @@ public class FsUserUpdateParam {
     /**
      * 用户ID
      */
-    @ApiModelProperty("用户ID")
+    @Schema(description = "用户ID")
     @NotNull(message = "用户ID不能为空")
     private Long fsUserId;
     /**
      * 用户昵称
      */
-    @ApiModelProperty("用户昵称")
+    @Schema(description = "用户昵称")
     private String nickName;
     /**
      * 用户备注
      */
-    @ApiModelProperty("用户备注")
+    @Schema(description = "用户备注")
     private String remark;
 }

+ 13 - 12
fs-company-app/src/main/java/com/fs/app/param/LoginMaWxParam.java

@@ -1,6 +1,7 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -11,44 +12,44 @@ import java.io.Serializable;
 public class LoginMaWxParam implements Serializable {
 
     @NotBlank(message = "code参数缺失")
-    @ApiModelProperty(value = "小程序登陆code")
+    @Schema(description = "小程序登陆code")
     private String code;
 
-    @ApiModelProperty(value = "小程序完整用户信息的加密数据")
+    @Schema(description = "小程序完整用户信息的加密数据")
     private String encryptedData;
 
-    @ApiModelProperty(value = "小程序加密算法的初始向量")
+    @Schema(description = "小程序加密算法的初始向量")
     private String iv;
 
     @NotNull(message = "公司id不能为空")
-    @ApiModelProperty(value = "公司id")
+    @Schema(description = "公司id")
     private Long companyId;
 
     @NotNull(message = "销售id不能为空")
-    @ApiModelProperty(value = "销售id")
+    @Schema(description = "销售id")
     private Long companyUserId;
 
     @NotNull(message = "项目id不能为空")
-    @ApiModelProperty(value = "课程归属项目id")
+    @Schema(description = "课程归属项目id")
     private Long projectId;
 
-//    @ApiModelProperty(value = "公司id,如果不是第一位销售,都需要传")
+//    @Schema(description = "公司id,如果不是第一位销售,都需要传")
 //    private Long companyId;
 
-//    @ApiModelProperty(value = "电话号码")
+//    @Schema(description = "电话号码")
 //    private String phoneNumber;
 
-//    @ApiModelProperty(value = "上级销售id,如果没有则不传")
+//    @Schema(description = "上级销售id,如果没有则不传")
 //    private Long parentCompanyUseId;
 //
-//    @ApiModelProperty(value = "用户密码")
+//    @Schema(description = "用户密码")
 //    private String password;
 
     /**
      * 0:静默授权  1:手机号授权
      */
     @NotNull(message = "授权类型缺失")
-    @ApiModelProperty(value = "小程序授权类型")
+    @Schema(description = "小程序授权类型")
     private Integer authType;
 
     private String appId;

+ 1 - 1
fs-company-app/src/main/java/com/fs/app/param/LoginParam.java

@@ -1,6 +1,6 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
+
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;

部分文件因文件數量過多而無法顯示