refactor(auth):重构认证模块并增强验证机制

- 重命名并调整 DTO 类结构,将 LoginRequest 和 RegisterRequest 迁移至 request 包- 引入 AuthLoginRequest 和 AuthRegisterRequest 并添加字段验证注解
- 更新 AuthController 使用新的 DTO 并增加 @Valid 参数校验
- 修改 AuthService 接口及实现类,接收 User 实体而非 RegisterRequest
- 添加全局异常处理器 GlobalExceptionHandler 处理参数校验和业务异常
- 新增 ErrorCode 枚举统一管理错误码和消息
- 引入 UserConverter 组件用于 DTO 到实体的转换
- 增强用户注册与登录逻辑,完善异常处理和错误提示
- 移除旧的 BadCredentialsException 捕获逻辑
- 调整 pom.xml 添加 spring-boot-starter-validation 和相关依赖
- 更新 User 实体类,添加完整字段映射和角色关联配置
- 新增 UserInfoService 及其实现,提供用户管理和密码设置功能
-优化 UserMapper 查询方法,支持联表查询用户及其角色信息
- 删除无用的 HLSController 控制器
- 完善 ImageController 文件上传逻辑并更新响应结构
- 添加用户名和密码格式验证工具类 PasswordValidate 和 UsernameValidate
This commit is contained in:
Chaos
2025-11-18 16:44:43 +08:00
parent a22a369afa
commit 8fc7f6554d
33 changed files with 568 additions and 95 deletions

View File

@@ -1,10 +1,9 @@
package cn.nopj.chaos_api.mapper;
import cn.nopj.chaos_api.domain.entity.Role;
import cn.nopj.chaos_api.domain.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.*;
import java.util.List;
@@ -37,4 +36,51 @@ public interface UserMapper extends BaseMapper<User> {
*/
@Select("INSERT INTO t_user_role (user_id, role_id) VALUES (#{userId}, #{roleId})")
void insertUserRole(@Param("userId") Long id, @Param("roleId") Long i);
/**
* 根据用户名查询用户信息
* @param username 用户名
*/
@Select("SELECT * FROM t_user WHERE username = #{username}")
User selectByUsername(String username);
/**
* 根据用户ID查询用户信息和角色信息
*/
@Select("SELECT * FROM t_user WHERE id = #{id}")
@Results({
@Result(property = "roles", column = "id",
many = @Many(select = "findRolesByUserId"))
})
User findUserWithRoles(Long id);
/**
* 查询所有用户信息
* @return 所有用户信息
**/
@Select("""
SELECT * FROM t_user
""")
@Results({
@Result(id = true, property = "id", column = "id"),
@Result(property = "username", column = "username"),
@Result(property = "roles", column = "id",
many = @Many(select = "findRolesByUserId"))
})
List<User> findAllUserWithRoles();
/**
* 根据用户ID查询角色信息
*/
@Select("""
SELECT r.id, r.name ,r.code
FROM t_role r
JOIN t_user_role ur ON r.id = ur.role_id
WHERE ur.user_id = #{userId}
""")
List<Role> findRolesByUserId(@Param("userId") Long userId);
}