package com.aisi.template.domain.dto; import com.aisi.template.annotation.StrongPassword; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import lombok.Data; /** * 用户数据传输对象 * 用于用户注册和登录请求 * * 验证规则: * - 用户名:2-50 位字符,不能为空 * - 密码:不能为空,需满足强密码要求(@StrongPassword) * - 邮箱:可选,注册时建议提供 * * 使用场景: * - 用户注册:需要用户名、密码、邮箱 * - 用户登录:需要用户名、密码 * * @author Claude * @since 2024-04-09 */ @Data @Schema(description = "用户注册/登录请求") public class UserDto { /** * 用户名 * - 长度:2-50 位字符 * - 不能为空 * - 示例:admin, user01 */ @NotBlank(message = "用户名不能为空") @Size(min = 2, max = 50, message = "用户名长度必须在 2-50 位之间") @Schema(description = "用户名", example = "admin") private String username; /** * 密码 * - 不能为空 * - 需满足强密码要求:包含大小写字母、数字、特殊字符 * - 示例:Password123! */ @NotBlank(message = "密码不能为空") @StrongPassword @Schema(description = "密码", example = "Password123!") private String password; /** * 邮箱地址 * - 可选字段 * - 注册时建议提供,用于找回密码 * - 示例:user@example.com */ @Schema(description = "邮箱(注册时可选)", example = "user@example.com") private String email; }