Bläddra i källkod

提交修改登录接口

chenxiaofei 9 timmar sedan
förälder
incheckning
e466635c40

+ 1 - 0
.gitignore

@@ -32,3 +32,4 @@ logs
 **/rebel.xml
 *.rebel.xml
 **/*.rebel.xml
+/effective-pom-abaf4996-b861-4224-acd2-bc9566fd9b7b.log

+ 10 - 1
sckw-auth/pom.xml

@@ -65,7 +65,16 @@
             <artifactId>sckw-fleet-api</artifactId>
             <version>${basic.version}</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
+            <version>4.5.0</version>
+        </dependency>
 
 
     </dependencies>

+ 94 - 0
sckw-auth/src/main/java/com/sckw/auth/config/OpenApiConfig.java

@@ -0,0 +1,94 @@
+package com.sckw.auth.config;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import io.swagger.v3.oas.models.servers.Server;
+import org.springdoc.core.models.GroupedOpenApi;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.List;
+
+/**
+ * @author PC
+ */
+@Configuration
+public class OpenApiConfig implements WebMvcConfigurer {
+
+    @Value("${spring.application.name:Application}")
+    private String applicationName;
+
+    @Bean
+    public OpenAPI customOpenAPI() {
+        return new OpenAPI()
+                .info(new Info()
+                        .title(applicationName + " API")
+                        .version("1.0.0")
+                        .description("物流登录DOC文档 - 提供登录管理以及相关API接口")
+                        .contact(new Contact()
+                                .name("开物登录开发团队")
+                                .email("iot-dev@example.com")
+                                .url("https://iot-platform.com"))
+                        .license(new License()
+                                .name("Apache 2.0")
+                                .url("https://www.apache.org/licenses/LICENSE-2.0")))
+                .servers(List.of(
+                        new Server()
+                                .url("http://localhost:10160")
+                                .description("开发环境"),
+                        new Server()
+                                .url("http://10.10.10.224:10160/")
+                                .description("测试环境"),
+                        new Server()
+                                .url("https://api.auth.example.com")
+                                .description("生产环境")
+                ));
+    }
+
+    @Bean
+    public GroupedOpenApi authApi() {
+        return GroupedOpenApi.builder()
+                .group("auth")
+                .packagesToScan("com.sckw.auth.controller")
+                .build();
+    }
+
+    @Bean
+    public GroupedOpenApi authAppApi() {
+        return GroupedOpenApi.builder()
+                .group("auth-app")
+                .packagesToScan("com.sckw.auth.controller.app")
+                .build();
+    }
+
+    @Bean
+    public GroupedOpenApi authOperateApi() {
+        return GroupedOpenApi.builder()
+                .group("auth-operate")
+                .packagesToScan("com.sckw.auth.controller.operate")
+                .build();
+    }
+
+    @Bean
+    public GroupedOpenApi authAllApi() {
+        return GroupedOpenApi.builder()
+                .group("auth-all")
+                .packagesToScan("com.sckw.auth.controller",
+                        "com.sckw.auth.controller.app",
+                        "com.sckw.auth.controller.operate")
+                .build();
+    }
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        registry.addResourceHandler("/doc.html")
+                .addResourceLocations("classpath:/META-INF/resources/");
+        registry.addResourceHandler("/webjars/**")
+                .addResourceLocations("classpath:/META-INF/resources/webjars/");
+    }
+}

+ 6 - 0
sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java

@@ -5,6 +5,8 @@ import com.sckw.auth.service.IAuthService;
 import com.sckw.core.model.enums.LoginMethodEnum;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @RequestMapping("/auth")
+@Tag(name = "登录相关接口")
 public class AuthController {
 
     @Autowired
@@ -30,6 +33,7 @@ public class AuthController {
      * @date: 2023/6/16
      */
     @PostMapping("/login")
+    @Operation(summary = "用户登录")
     public HttpResult login(@Valid @RequestBody LoginReqVo reqVo, HttpServletRequest request) {
         int systemType = request.getIntHeader("System-Type");
         String clientType = request.getHeader("Client-Type");
@@ -56,6 +60,7 @@ public class AuthController {
      * @date: 2026/1/14
      */
     @PostMapping("/refresh")
+    @Operation(summary = "刷新Token")
     public HttpResult refreshToken(@Valid @RequestBody RefreshTokenReqVo reqVo, HttpServletRequest request) {
         int systemType = request.getIntHeader("System-Type");
         String clientType = request.getHeader("Client-Type");
@@ -68,6 +73,7 @@ public class AuthController {
      * @desc: 切换账号(使用目标账号的refreshToken快速登录,无需重新输入密码)
      * @date: 2026/1/14
      */
+    @Operation(summary = "切换账号")
     @PostMapping("/switchAccount")
     public HttpResult switchAccount(@Valid @RequestBody SwitchAccountReqVo reqVo, HttpServletRequest request) {
         int systemType = request.getIntHeader("System-Type");

+ 6 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/req/RefreshTokenReqVo.java

@@ -1,5 +1,6 @@
 package com.sckw.auth.model.vo.req;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
@@ -7,6 +8,7 @@ import java.io.Serial;
 import java.io.Serializable;
 
 /**
+ * @author cxf
  * @desc 刷新Token请求入参
  * @date 2026/1/14
  */
@@ -20,20 +22,24 @@ public class RefreshTokenReqVo implements Serializable {
      * 刷新令牌
      */
     @NotBlank(message = "刷新令牌不能为空")
+    @Schema(description = "刷新令牌")
     private String refreshToken;
 
     /**
      * 设备类型
      */
+    @Schema(description = "设备类型")
     private String clientType;
 
     /**
      * 系统类型
      */
+    @Schema(description = "系统类型")
     private Integer systemType;
 
     /**
      * 设备唯一标识
      */
+    @Schema(description = "设备唯一标识")
     private String deviceId;
 }

+ 5 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/req/SwitchAccountReqVo.java

@@ -1,5 +1,6 @@
 package com.sckw.auth.model.vo.req;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
@@ -7,6 +8,7 @@ import java.io.Serial;
 import java.io.Serializable;
 
 /**
+ * @author cxf
  * @desc 切换账号请求入参
  * @date 2026/1/14
  */
@@ -25,15 +27,18 @@ public class SwitchAccountReqVo implements Serializable {
     /**
      * 设备类型
      */
+    @Schema(description = "设备类型")
     private String clientType;
 
     /**
      * 系统类型
      */
+    @Schema(description = "系统类型")
     private Integer systemType;
 
     /**
      * 设备唯一标识
      */
+    @Schema(description = "设备唯一标识")
     private String deviceId;
 }

+ 23 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo1.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.sckw.core.utils.LongToStringUtils;
 import com.sckw.system.api.model.dto.res.KwsRoleResDto;
 import com.sckw.system.api.model.dto.res.RoleInfoDto;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.management.relation.RoleInfo;
@@ -29,110 +30,132 @@ public class LoginResVo1 implements Serializable {
     /**
      * 姓名
      */
+    @Schema(description = "姓名")
     private String name;
 
     /**
      * 账号
      */
+    @Schema(description = "账号")
     private String account;
 
     /**
      * 电话
      */
+    @Schema(description = "电话")
     private String phone;
 
     /**
      * 头像
      */
+    @Schema(description = "头像")
     private String photo;
 
     /**
      * 角色名称
      */
+    @Schema(description = "角色名称")
     private String roleName;
 
     /**
      * 机构名称
      */
+    @Schema(description = "机构名称")
     private String deptName;
 
     /**
      * 是否是企业管理(0是 1否)
      */
+    @Schema(description = "是否是企业管理(0是 1否)")
     private Integer isMain;
 
     /**
      * 状态
      */
+    @Schema(description = "状态")
     private Integer status;
 
     /**
      * 企业Id
      */
     @JsonSerialize(using = LongToStringUtils.class)
+    @Schema(description = "企业Id")
     private Long entId;
 
     /**
      * 企业名称
      */
+    @Schema(description = "企业名称")
     private String firmName;
 
     /**
      * 资料审批状态(0未审批、1通过、2未通过、3审批中)
      */
+    @Schema(description = "资料审批状态(0未审批、1通过、2未通过、3审批中)")
     private Integer approval;
 
     /**
      * 是否有效
      */
+    @Schema(description = "是否有效")
     private Boolean valid;
 
 
     /**
      * 企业类型(名称)
      */
+    @Schema(description = "企业类型(名称)")
     private String entTypeNames;
 
     /**
      * 企业属性 (1供应商,2采购商,34PL物流,43PL物流)
      */
+    @Schema(description = "企业属性 (1供应商,2采购商,34PL物流,43PL物流)")
     private String entTypes;
 
     /**
      * 推送设备id
      */
+    @Schema(description = "推送设备id")
     private String clientId;
 
     /**
      * 设备类型
      */
+    @Schema(description = "设备类型")
     private String clientType;
 
     /**
      * 系统类型(1运营端、2企业开户、3司机端)
      */
+    @Schema(description = "系统类型(1运营端、2企业开户、3司机端)")
     private Integer systemType;
 
     /**
      * 访问令牌
      */
+    @Schema(description = "访问令牌")
     private String token;
 
     /**
      * 刷新令牌(记住密码时返回)
      */
+    @Schema(description = "刷新令牌(记住密码时返回)")
     private String refreshToken;
 
     /**
      * 机构id
      */
+    @Schema(description = "机构id")
     private Long deptId;
 
     /**
      * 岗位角色id
      */
+    @Schema(description = "岗位角色id")
     private Long roleId;
 
+    @Schema(description = "岗位角色列表")
     private List<RoleInfoDto> roleList;
 
 }

+ 13 - 0
sckw-auth/src/main/resources/bootstrap.yml

@@ -12,3 +12,16 @@ spring:
 logging:
   level:
     root: info
+
+
+# SpringDoc OpenAPI 配置
+springdoc:
+  swagger-ui:
+    path: /swagger-ui.html
+    tags-sorter: alpha
+    operations-sorter: alpha
+  api-docs:
+    path: /v3/api-docs
+  show-actuator: true
+  cache:
+    disabled: true

+ 29 - 29
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/forkliftapp/UsersController.java

@@ -36,26 +36,26 @@ public class UsersController {
      * @param request HTTP请求
      * @return BaseResult<LoginResVo>
      */
-    @PostMapping("/login")
-    @Operation(summary = "用户登录", description = "用户登录,返回用户信息和角色")
-    public BaseResult<LoginResVo> login(@RequestBody @Valid LoginReqVo reqVo, HttpServletRequest request) {
-        return BaseResult.success(kwsUserService.login(
-                reqVo.getAccount(),
-                reqVo.getPassword(),
-                reqVo.getSystemType(),
-                request));
-    }
+//    @PostMapping("/login")
+//    @Operation(summary = "用户登录", description = "用户登录,返回用户信息和角色")
+//    public BaseResult<LoginResVo> login(@RequestBody @Valid LoginReqVo reqVo, HttpServletRequest request) {
+//        return BaseResult.success(kwsUserService.login(
+//                reqVo.getAccount(),
+//                reqVo.getPassword(),
+//                reqVo.getSystemType(),
+//                request));
+//    }
 
     /**
      * 根据用户ID查询用户信息
      * @param reqVo 用户信息查询请求对象
      * @return BaseResult<UserInfoResVo>
      */
-    @PostMapping("/getUserInfo")
-    @Operation(summary = "查询用户信息", description = "根据用户ID查询头像、姓名、电话、角色、账号状态")
-    public BaseResult<UserInfoResVo> getUserInfo(@RequestBody UserInfoReqVo reqVo) {
-        return BaseResult.success(kwsUserService.getUserInfoById(reqVo.getUserId()));
-    }
+//    @PostMapping("/getUserInfo")
+//    @Operation(summary = "查询用户信息", description = "根据用户ID查询头像、姓名、电话、角色、账号状态")
+//    public BaseResult<UserInfoResVo> getUserInfo(@RequestBody UserInfoReqVo reqVo) {
+//        return BaseResult.success(kwsUserService.getUserInfoById(reqVo.getUserId()));
+//    }
 
     /**
      * 修改密码
@@ -78,27 +78,27 @@ public class UsersController {
      * @param reqVo 切换账号请求对象
      * @return BaseResult<SwitchAccountResVo>
      */
-    @PostMapping("/switchAccount")
-    @Operation(summary = "切换账号", description = "切换到其他用户账号")
-    public BaseResult<SwitchAccountResVo> switchAccount(@RequestBody @Valid SwitchAccountReqVo reqVo, HttpServletRequest request) {
-        return BaseResult.success(kwsUserService.switchAccount(
-                reqVo.getAccount(),
-                reqVo.getPassword(),
-                reqVo.getSystemType(),
-                request));
-    }
+//    @PostMapping("/switchAccount")
+//    @Operation(summary = "切换账号", description = "切换到其他用户账号")
+//    public BaseResult<SwitchAccountResVo> switchAccount(@RequestBody @Valid SwitchAccountReqVo reqVo, HttpServletRequest request) {
+//        return BaseResult.success(kwsUserService.switchAccount(
+//                reqVo.getAccount(),
+//                reqVo.getPassword(),
+//                reqVo.getSystemType(),
+//                request));
+//    }
 
     /**
      * 退出登录
      * @param reqVo 退出登录请求对象
      * @return BaseResult<String>
      */
-    @PostMapping("/logout")
-    @Operation(summary = "退出登录", description = "用户退出登录,清除登录状态和Token")
-    public BaseResult<String> logout(@RequestBody @Valid LogoutReqVo reqVo) {
-        kwsUserService.logout(reqVo.getUserId());
-        return BaseResult.success("退出登录成功");
-    }
+//    @PostMapping("/logout")
+//    @Operation(summary = "退出登录", description = "用户退出登录,清除登录状态和Token")
+//    public BaseResult<String> logout(@RequestBody @Valid LogoutReqVo reqVo) {
+//        kwsUserService.logout(reqVo.getUserId());
+//        return BaseResult.success("退出登录成功");
+//    }
 
 }