feat: 初始化 Spring Boot 项目模板,搭建完整的用户认证与管理系统
- 新增项目基础配置:pom.xml 依赖管理、多环境配置(dev/prod)、Dockerfile、.env.example - 新增安全认证模块:JWT 工具类、JWT 过滤器、Spring Security 配置、自定义 UserDetails - 新增用户管理功能:注册/登录/查询/修改、角色管理(USER/ADMIN/ROOT)、分页查询、状态启禁用 - 新增密码重置功能:邮箱验证码发送、验证码校验重置、频率限制与过期机制 - 新增基础架构层:统一响应体 RestBean、全局异常处理、日志拦截器、Redis 工具类、JPA 配置 - 新增 Swagger/OpenAPI 文档配置与完整的 API 接口文档(API_DOCUMENT.md) - 新增数据库初始化 SQL 脚本(init.sql)
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package com.aisi.template.controller;
|
||||
|
||||
import com.aisi.template.domain.RestBean;
|
||||
import com.aisi.template.domain.dto.PageResult;
|
||||
import com.aisi.template.domain.dto.PasswordResetConfirmDto;
|
||||
import com.aisi.template.domain.dto.PasswordResetRequestDto;
|
||||
import com.aisi.template.domain.dto.UserDto;
|
||||
import com.aisi.template.domain.dto.UserQueryDto;
|
||||
import com.aisi.template.domain.dto.UserRoleUpdateDto;
|
||||
import com.aisi.template.domain.dto.UserStatusUpdateDto;
|
||||
import com.aisi.template.domain.vo.UserVo;
|
||||
import com.aisi.template.service.PasswordResetService;
|
||||
import com.aisi.template.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/user")
|
||||
@RequiredArgsConstructor
|
||||
@Tag(name = "用户接口")
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
private final PasswordResetService passwordResetService;
|
||||
|
||||
@GetMapping("info")
|
||||
@Operation(summary = "用户信息")
|
||||
@SecurityRequirement(name = "Bearer Authentication")
|
||||
public RestBean<UserVo> getUserInfo() {
|
||||
return userService.getUserInfo();
|
||||
}
|
||||
|
||||
@PostMapping("register")
|
||||
@Operation(summary = "用户注册")
|
||||
public RestBean<String> register(@Valid @RequestBody UserDto userDto) {
|
||||
return userService.register(userDto);
|
||||
}
|
||||
|
||||
@PostMapping("login")
|
||||
@Operation(summary = "用户登录")
|
||||
RestBean<String> login(@Valid @RequestBody UserDto userDto) {
|
||||
return userService.login(userDto);
|
||||
}
|
||||
|
||||
@PostMapping("password-reset/request")
|
||||
@Operation(summary = "发送找回密码验证码")
|
||||
public RestBean<Void> sendPasswordResetCode(@Valid @RequestBody PasswordResetRequestDto requestDto) {
|
||||
return passwordResetService.sendResetCode(requestDto);
|
||||
}
|
||||
|
||||
@PostMapping("password-reset/confirm")
|
||||
@Operation(summary = "验证码重置密码")
|
||||
public RestBean<Void> confirmPasswordReset(@Valid @RequestBody PasswordResetConfirmDto confirmDto) {
|
||||
return passwordResetService.resetPassword(confirmDto);
|
||||
}
|
||||
|
||||
@GetMapping("list")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@Operation(summary = "分页获取用户列表")
|
||||
@SecurityRequirement(name = "Bearer Authentication")
|
||||
public RestBean<PageResult<UserVo>> getUserList(UserQueryDto queryDto) {
|
||||
return userService.getUserList(queryDto);
|
||||
}
|
||||
|
||||
@PutMapping("{userId}/status")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@Operation(summary = "更新用户状态")
|
||||
@SecurityRequirement(name = "Bearer Authentication")
|
||||
public RestBean<UserVo> updateUserStatus(@PathVariable Long userId,
|
||||
@Valid @RequestBody UserStatusUpdateDto updateDto) {
|
||||
return userService.updateUserStatus(userId, updateDto);
|
||||
}
|
||||
|
||||
@PutMapping("{userId}/role")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@Operation(summary = "更新用户角色")
|
||||
@SecurityRequirement(name = "Bearer Authentication")
|
||||
public RestBean<UserVo> updateUserRole(@PathVariable Long userId,
|
||||
@Valid @RequestBody UserRoleUpdateDto updateDto) {
|
||||
return userService.updateUserRole(userId, updateDto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user