- 统一文件命名为snake_case格式(kebab-case snake_case) - 重构zulip模块为zulip_core,明确Core层职责 - 重构user-mgmt模块为user_mgmt,统一命名规范 - 调整模块依赖关系,优化架构分层 - 删除过时的文件和目录结构 - 更新相关文档和配置文件 本次重构涉及大量文件重命名和模块重组, 旨在建立更清晰的项目架构和统一的命名规范。
132 lines
3.9 KiB
TypeScript
132 lines
3.9 KiB
TypeScript
/**
|
||
* 用户状态管理 DTO
|
||
*
|
||
* 功能描述:
|
||
* - 定义用户状态管理相关的请求数据结构
|
||
* - 提供数据验证规则和错误提示
|
||
* - 确保状态管理操作的数据格式一致性
|
||
*
|
||
* 职责分离:
|
||
* - 请求数据结构定义和类型约束
|
||
* - 数据验证规则配置和错误消息定义
|
||
* - Swagger API文档生成支持
|
||
*
|
||
* 最近修改:
|
||
* - 2026-01-07: 代码规范优化 - 修正文件命名规范,完善注释规范,更新作者信息 (修改者: moyin)
|
||
*
|
||
* @author moyin
|
||
* @version 1.0.1
|
||
* @since 2025-12-24
|
||
* @lastModified 2026-01-07
|
||
*/
|
||
|
||
import { IsString, IsNotEmpty, IsEnum, IsOptional, IsArray, ArrayMinSize, ArrayMaxSize } from 'class-validator';
|
||
import { ApiProperty } from '@nestjs/swagger';
|
||
import { UserStatus } from './user_status.enum';
|
||
import { BATCH_OPERATION, VALIDATION } from './user_mgmt.constants';
|
||
|
||
/**
|
||
* 用户状态修改请求DTO
|
||
*
|
||
* 职责:
|
||
* - 定义单个用户状态修改的请求数据格式
|
||
* - 提供状态值和修改原因的验证规则
|
||
* - 支持Swagger文档自动生成
|
||
*
|
||
* 主要字段:
|
||
* - status - 新的用户状态(必填)
|
||
* - reason - 状态修改原因(可选)
|
||
*
|
||
* 使用场景:
|
||
* - 管理员修改单个用户状态的API请求
|
||
* - 用户状态变更操作的数据传输
|
||
*/
|
||
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: VALIDATION.REASON_MAX_LENGTH
|
||
})
|
||
@IsOptional()
|
||
@IsString({ message: '修改原因必须是字符串' })
|
||
reason?: string;
|
||
}
|
||
|
||
/**
|
||
* 批量用户状态修改请求DTO
|
||
*
|
||
* 职责:
|
||
* - 定义批量用户状态修改的请求数据格式
|
||
* - 提供用户ID列表和状态值的验证规则
|
||
* - 限制批量操作的数量范围(${BATCH_OPERATION.MIN_USER_COUNT}-${BATCH_OPERATION.MAX_USER_COUNT}个用户)
|
||
*
|
||
* 主要字段:
|
||
* - userIds - 用户ID列表(必填,${BATCH_OPERATION.MIN_USER_COUNT}-${BATCH_OPERATION.MAX_USER_COUNT}个)
|
||
* - status - 新的用户状态(必填)
|
||
* - reason - 批量修改原因(可选)
|
||
*
|
||
* 使用场景:
|
||
* - 管理员批量修改用户状态的API请求
|
||
* - 系统自动化批量用户管理操作
|
||
*/
|
||
export class BatchUserStatusDto {
|
||
/**
|
||
* 用户ID列表
|
||
*/
|
||
@ApiProperty({
|
||
description: '用户ID列表',
|
||
example: ['1', '2', '3'],
|
||
type: [String],
|
||
minItems: BATCH_OPERATION.MIN_USER_COUNT,
|
||
maxItems: BATCH_OPERATION.MAX_USER_COUNT
|
||
})
|
||
@IsArray({ message: '用户ID列表必须是数组' })
|
||
@ArrayMinSize(BATCH_OPERATION.MIN_USER_COUNT, { message: '至少需要选择一个用户' })
|
||
@ArrayMaxSize(BATCH_OPERATION.MAX_USER_COUNT, { message: `一次最多只能操作${BATCH_OPERATION.MAX_USER_COUNT}个用户` })
|
||
@IsString({ each: true, message: '用户ID必须是字符串' })
|
||
@IsNotEmpty({ each: true, message: '用户ID不能为空' })
|
||
userIds: string[];
|
||
|
||
/**
|
||
* 新的用户状态
|
||
*/
|
||
@ApiProperty({
|
||
description: '用户状态',
|
||
enum: UserStatus,
|
||
example: UserStatus.LOCKED,
|
||
enumName: 'UserStatus'
|
||
})
|
||
@IsEnum(UserStatus, { message: '用户状态必须是有效的枚举值' })
|
||
@IsNotEmpty({ message: '用户状态不能为空' })
|
||
status: UserStatus;
|
||
|
||
/**
|
||
* 状态修改原因
|
||
*/
|
||
@ApiProperty({
|
||
description: '批量修改原因(可选)',
|
||
example: '批量处理违规用户',
|
||
required: false,
|
||
maxLength: VALIDATION.REASON_MAX_LENGTH
|
||
})
|
||
@IsOptional()
|
||
@IsString({ message: '修改原因必须是字符串' })
|
||
reason?: string;
|
||
} |