/** * 用户状态枚举 * * 功能描述: * - 定义用户账户的各种状态 * - 提供状态检查和描述功能 * - 支持用户生命周期管理 * * @author kiro-ai * @version 1.0.0 * @since 2025-12-24 */ /** * 用户状态枚举 * * 状态说明: * - active: 正常状态,可以正常使用所有功能 * - inactive: 未激活状态,通常是新注册用户需要邮箱验证 * - locked: 临时锁定状态,可以解锁恢复 * - banned: 永久禁用状态,需要管理员处理 * - deleted: 软删除状态,数据保留但不可使用 * - pending: 待审核状态,需要管理员审核后激活 */ export enum UserStatus { ACTIVE = 'active', // 正常状态 INACTIVE = 'inactive', // 未激活状态 LOCKED = 'locked', // 锁定状态 BANNED = 'banned', // 禁用状态 DELETED = 'deleted', // 删除状态 PENDING = 'pending' // 待审核状态 } /** * 获取用户状态的中文描述 * * @param status 用户状态 * @returns 状态描述 */ export function getUserStatusDescription(status: UserStatus): string { const descriptions = { [UserStatus.ACTIVE]: '正常', [UserStatus.INACTIVE]: '未激活', [UserStatus.LOCKED]: '已锁定', [UserStatus.BANNED]: '已禁用', [UserStatus.DELETED]: '已删除', [UserStatus.PENDING]: '待审核' }; return descriptions[status] || '未知状态'; } /** * 检查用户是否可以登录 * * @param status 用户状态 * @returns 是否可以登录 */ export function canUserLogin(status: UserStatus): boolean { // 只有正常状态的用户可以登录 return status === UserStatus.ACTIVE; } /** * 获取用户状态对应的错误消息 * * @param status 用户状态 * @returns 错误消息 */ export function getUserStatusErrorMessage(status: UserStatus): string { const errorMessages = { [UserStatus.ACTIVE]: '', // 正常状态无错误 [UserStatus.INACTIVE]: '账户未激活,请先验证邮箱', [UserStatus.LOCKED]: '账户已被锁定,请联系管理员', [UserStatus.BANNED]: '账户已被禁用,请联系管理员', [UserStatus.DELETED]: '账户不存在', [UserStatus.PENDING]: '账户待审核,请等待管理员审核' }; return errorMessages[status] || '账户状态异常'; } /** * 获取所有可用的用户状态 * * @returns 用户状态数组 */ export function getAllUserStatuses(): UserStatus[] { return Object.values(UserStatus); } /** * 检查状态值是否有效 * * @param status 状态值 * @returns 是否为有效状态 */ export function isValidUserStatus(status: string): status is UserStatus { return Object.values(UserStatus).includes(status as UserStatus); }