/** * 管理员相关响应 DTO * * 功能描述: * - 为 Swagger 提供明确的响应结构定义 * - 与 AdminService 返回结构保持一致 * * @author jianuo * @version 1.0.0 * @since 2025-12-19 */ import { ApiProperty } from '@nestjs/swagger'; class AdminInfoDto { @ApiProperty({ example: '1' }) id: string; @ApiProperty({ example: 'admin' }) username: string; @ApiProperty({ example: '管理员' }) nickname: string; @ApiProperty({ example: 9 }) role: number; } class AdminLoginDataDto { @ApiProperty({ type: AdminInfoDto }) admin: AdminInfoDto; @ApiProperty({ description: '管理员访问Token(用于Authorization Bearer)' }) access_token: string; @ApiProperty({ description: '过期时间戳(毫秒)', example: 1766102400000 }) expires_at: number; } export class AdminLoginResponseDto { @ApiProperty({ example: true }) success: boolean; @ApiProperty({ type: AdminLoginDataDto, required: false }) data?: AdminLoginDataDto; @ApiProperty({ example: '管理员登录成功' }) message: string; @ApiProperty({ required: false, example: 'ADMIN_LOGIN_FAILED' }) error_code?: string; } class AdminUserDto { @ApiProperty({ example: '1' }) id: string; @ApiProperty({ example: 'user1' }) username: string; @ApiProperty({ example: '小明' }) nickname: string; @ApiProperty({ required: false, example: 'user1@example.com', nullable: true }) email?: string; @ApiProperty({ example: false }) email_verified: boolean; @ApiProperty({ required: false, example: '+8613800138000', nullable: true }) phone?: string; @ApiProperty({ required: false, example: 'https://example.com/avatar.png', nullable: true }) avatar_url?: string; @ApiProperty({ example: 1 }) role: number; @ApiProperty({ example: '2025-12-19T00:00:00.000Z' }) created_at: Date; @ApiProperty({ example: '2025-12-19T00:00:00.000Z' }) updated_at: Date; } class AdminUsersDataDto { @ApiProperty({ type: [AdminUserDto] }) users: AdminUserDto[]; @ApiProperty({ example: 100 }) limit: number; @ApiProperty({ example: 0 }) offset: number; } export class AdminUsersResponseDto { @ApiProperty({ example: true }) success: boolean; @ApiProperty({ type: AdminUsersDataDto, required: false }) data?: AdminUsersDataDto; @ApiProperty({ example: '用户列表获取成功' }) message: string; @ApiProperty({ required: false, example: 'ADMIN_USERS_FAILED' }) error_code?: string; } class AdminUserDataDto { @ApiProperty({ type: AdminUserDto }) user: AdminUserDto; } export class AdminUserResponseDto { @ApiProperty({ example: true }) success: boolean; @ApiProperty({ type: AdminUserDataDto, required: false }) data?: AdminUserDataDto; @ApiProperty({ example: '用户信息获取成功' }) message: string; } export class AdminCommonResponseDto { @ApiProperty({ example: true }) success: boolean; @ApiProperty({ required: false }) data?: any; @ApiProperty({ example: '密码重置成功' }) message: string; @ApiProperty({ required: false, example: 'ADMIN_OPERATION_FAILED' }) error_code?: string; } class AdminRuntimeLogsDataDto { @ApiProperty({ example: 'dev.log' }) file: string; @ApiProperty({ description: '日志文件最后更新时间(ISO)', example: '2025-12-19T19:10:15.000Z' }) updated_at: string; @ApiProperty({ type: [String], description: '日志行(按时间顺序,越靠后越新)' }) lines: string[]; } export class AdminRuntimeLogsResponseDto { @ApiProperty({ example: true }) success: boolean; @ApiProperty({ type: AdminRuntimeLogsDataDto, required: false }) data?: AdminRuntimeLogsDataDto; @ApiProperty({ example: '运行日志获取成功' }) message: string; @ApiProperty({ required: false, example: 'ADMIN_OPERATION_FAILED' }) error_code?: string; }