Skip to content

springdoc

pom.xml

   <!-- SpringDoc OpenAPI for Spring Boot 3 -->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.8.5</version>
        </dependency>

OpenAPIConfig.java

/**
 * http://localhost:8080/swagger-ui/index.html
 */
@Configuration
public class OpenAPIConfig {

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI().info(new Info().title("Spring Boot 3 API").version("1.0.0").description("API documentation for Spring Boot 3 application"));
    }
}

UserController.java

@RestController
public class UserController {
    @Autowired
    UserService userService;

    @Data
    @Schema(name = "LoginDto", description = "登录请求数据传输对象")
    static class LoginDto {
        @Phone
        @Schema(description = "手机号", example = "13800138000")
        private String phone;

        @NotBlank(message = "验证码不能为空")
        @Schema(description = "验证码", example = "123456")
        private String code;

        @NotBlank(message = "滑块 ID 不能为空")
        @Schema(description = "滑块 ID", example = "abc123")
        private String codeId;
    }

    @Operation(summary = "手机号注册或登录", description = "响应token")
    @PostMapping("login")
    public ResponseEntity login(@RequestBody @Valid LoginDto dto) {
        //TODO 验证码校验
        User one = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getPhone, dto.getPhone()));
        if (one == null) {
            one = User.builder().phone(dto.getPhone()).name("随机名称").build();
            Assert.isTrue(userService.save(one), cst.fail);
            return ResponseEntity.ok(su.token(one.getId()));
        }
        Assert.isTrue(one.getStatus() == 1, cst.fail);
        return ResponseEntity.ok(su.token(one.getId()));
    }

    @Operation(summary = "获取登录用户信息", description = "获取登录用户信息")
    @GetMapping("user")
    public ResponseEntity<User> user() {
        User user = userService.getById(su.uid());
        Assert.notNull(user, cst.fail);
        Assert.notNull(user.getStatus() == 1, cst.fail);
        return ResponseEntity.ok(user);
    }
}