/**
 * 管理员相关 DTO
 *
 * 功能描述：
 * - 定义管理员登录与用户密码重置的请求结构
 * - 提供完整的数据验证规则
 * - 支持Swagger文档自动生成
 *
 * 职责分离：
 * - 请求数据结构定义
 * - 输入参数验证规则
 * - API文档生成支持
 *
 * 最近修改：
 * - 2026-01-08: 文件夹扁平化 - 从dto/子文件夹移动到上级目录 (修改者: moyin)
 * - 2026-01-07: 代码规范优化 - 修正文件命名规范，更新作者信息和修改记录
 * - 2026-01-08: 注释规范优化 - 补充类注释，完善DTO文档说明 (修改者: moyin)
 *
 * @author moyin
 * @version 1.0.3
 * @since 2025-12-19
 * @lastModified 2026-01-08
 */

import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsString, MinLength } from 'class-validator';

/**
 * 管理员登录请求DTO
 *
 * 功能描述：
 * 定义管理员登录接口的请求数据结构和验证规则
 *
 * 验证规则：
 * - identifier: 必填字符串，支持用户名/邮箱/手机号
 * - password: 必填字符串，管理员密码
 *
 * 使用场景：
 * - POST /admin/auth/login 接口的请求体
 */
export class AdminLoginDto {
  @ApiProperty({ description: '登录标识符（用户名/邮箱/手机号）', example: 'admin' })
  @IsString()
  @IsNotEmpty()
  identifier: string;

  @ApiProperty({ description: '密码', example: 'YourStrongPassword123!' })
  @IsString()
  @IsNotEmpty()
  password: string;
}

/**
 * 管理员重置密码请求DTO
 *
 * 功能描述：
 * 定义管理员重置用户密码接口的请求数据结构和验证规则
 *
 * 验证规则：
 * - newPassword: 必填字符串，至少8位，需包含字母和数字
 *
 * 使用场景：
 * - POST /admin/users/:id/reset-password 接口的请求体
 */
export class AdminResetPasswordDto {
  @ApiProperty({ description: '新密码（至少8位，包含字母和数字）', example: 'NewPass1234' })
  @IsString()
  @IsNotEmpty()
  @MinLength(8)
  newPassword: string;
}
