forked from datawhale/whale-town-end
- 新增auth模块处理认证逻辑 - 新增security模块处理安全相关功能 - 新增user-mgmt模块管理用户相关操作 - 新增shared模块存放共享组件 - 重构admin模块,添加DTO和Guards - 为admin模块添加测试文件结构
95 lines
2.3 KiB
TypeScript
95 lines
2.3 KiB
TypeScript
/**
|
|
* 用户状态管理 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;
|
|
} |