// src/user/dto/create-user.dto.ts import { IsString, IsEmail, IsPhoneNumber, IsInt, Min, Max, IsOptional, Length, IsNotEmpty } from 'class-validator' export class CreateUserDto { // 用户名:必填、字符串、长度1-50 @IsString() @IsNotEmpty({ message: '用户名不能为空' }) @Length(1, 50, { message: '用户名长度需在1-50字符之间' }) username: string; // 邮箱:可选、合法邮箱格式 @IsOptional() @IsEmail({}, { message: '邮箱格式不正确' }) email?: string; // 手机号:可选、合法手机号格式(支持全球号码) @IsOptional() @IsPhoneNumber(null, { message: '手机号格式不正确' }) phone?: string; // 密码哈希:可选(OAuth登录为空) @IsOptional() @IsString({ message: '密码哈希必须是字符串' }) password_hash?: string; // 昵称:必填、字符串、长度1-50 @IsString() @IsNotEmpty({ message: '昵称不能为空' }) @Length(1, 50, { message: '昵称长度需在1-50字符之间' }) nickname: string; // GitHub ID:可选、字符串、长度1-100 @IsOptional() @IsString({ message: 'GitHub ID必须是字符串' }) @Length(1, 100, { message: 'GitHub ID长度需在1-100字符之间' }) github_id?: string; // 头像URL:可选、字符串 @IsOptional() @IsString({ message: '头像URL必须是字符串' }) avatar_url?: string; // 角色:可选、数字、1(普通)或9(管理员) @IsOptional() @IsInt({ message: '角色必须是数字' }) @Min(1, { message: '角色值最小为1' }) @Max(9, { message: '角色值最大为9' }) role?: number = 1; // 默认普通用户 }