/** * 用户状态管理 DTO * * 功能描述: * - 定义用户状态管理相关的请求数据结构 * - 提供数据验证规则和错误提示 * - 确保状态管理操作的数据格式一致性 * * @author kiro-ai * @version 1.0.0 * @since 2025-12-24 */ import { IsString, IsNotEmpty, IsEnum, IsOptional, IsArray, ArrayMinSize, ArrayMaxSize } from 'class-validator'; import { ApiProperty } from '@nestjs/swagger'; import { UserStatus } from '../enums/user-status.enum'; /** * 用户状态修改请求DTO */ export class UserStatusDto { /** * 新的用户状态 */ @ApiProperty({ description: '用户状态', enum: UserStatus, example: UserStatus.ACTIVE, enumName: 'UserStatus' }) @IsEnum(UserStatus, { message: '用户状态必须是有效的枚举值' }) @IsNotEmpty({ message: '用户状态不能为空' }) status: UserStatus; /** * 状态修改原因 */ @ApiProperty({ description: '状态修改原因(可选)', example: '用户违反社区规定', required: false, maxLength: 200 }) @IsOptional() @IsString({ message: '修改原因必须是字符串' }) reason?: string; } /** * 批量用户状态修改请求DTO */ export class BatchUserStatusDto { /** * 用户ID列表 */ @ApiProperty({ description: '用户ID列表', example: ['1', '2', '3'], type: [String], minItems: 1, maxItems: 100 }) @IsArray({ message: '用户ID列表必须是数组' }) @ArrayMinSize(1, { message: '至少需要选择一个用户' }) @ArrayMaxSize(100, { message: '一次最多只能操作100个用户' }) @IsString({ each: true, message: '用户ID必须是字符串' }) @IsNotEmpty({ each: true, message: '用户ID不能为空' }) user_ids: string[]; /** * 新的用户状态 */ @ApiProperty({ description: '用户状态', enum: UserStatus, example: UserStatus.LOCKED, enumName: 'UserStatus' }) @IsEnum(UserStatus, { message: '用户状态必须是有效的枚举值' }) @IsNotEmpty({ message: '用户状态不能为空' }) status: UserStatus; /** * 状态修改原因 */ @ApiProperty({ description: '批量修改原因(可选)', example: '批量处理违规用户', required: false, maxLength: 200 }) @IsOptional() @IsString({ message: '修改原因必须是字符串' }) reason?: string; }