Files
whale-town-end-v2/src/core/db/users/user_status.enum.ts

173 lines
4.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 用户状态枚举Core层
*
* 功能描述:
* - 定义用户账户的各种状态
* - 提供状态检查和描述功能
* - 支持用户生命周期管理
*
* 职责分离:
* - 用户状态枚举值定义和管理
* - 状态描述和错误消息的国际化支持
* - 状态验证和转换工具函数提供
*
* 最近修改:
* - 2026-01-07: 架构优化 - 从Business层移动到Core层符合架构分层原则 (修改者: moyin)
*
* @author moyin
* @version 1.0.2
* @since 2025-12-24
* @lastModified 2026-01-07
*/
/**
* 用户状态枚举
*
* 状态说明:
* - active: 正常状态,可以正常使用所有功能
* - inactive: 未激活状态,通常是新注册用户需要邮箱验证
* - locked: 临时锁定状态,可以解锁恢复
* - banned: 永久禁用状态,需要管理员处理
* - deleted: 软删除状态,数据保留但不可使用
* - pending: 待审核状态,需要管理员审核后激活
*/
export enum UserStatus {
ACTIVE = 'active', // 正常状态
INACTIVE = 'inactive', // 未激活状态
LOCKED = 'locked', // 锁定状态
BANNED = 'banned', // 禁用状态
DELETED = 'deleted', // 删除状态
PENDING = 'pending' // 待审核状态
}
/**
* 获取用户状态的中文描述
*
* 技术实现:
* 1. 根据用户状态枚举值查找对应的中文描述
* 2. 提供用户友好的状态显示文本
* 3. 处理未知状态的默认描述
*
* @param status 用户状态
* @returns 状态描述
* @throws 无异常抛出,未知状态返回默认描述
*
* @example
* ```typescript
* const description = getUserStatusDescription(UserStatus.ACTIVE);
* // 返回: "正常"
* ```
*/
export function getUserStatusDescription(status: UserStatus): string {
const descriptions = {
[UserStatus.ACTIVE]: '正常',
[UserStatus.INACTIVE]: '未激活',
[UserStatus.LOCKED]: '已锁定',
[UserStatus.BANNED]: '已禁用',
[UserStatus.DELETED]: '已删除',
[UserStatus.PENDING]: '待审核'
};
return descriptions[status] || '未知状态';
}
/**
* 检查用户是否可以登录
*
* 技术实现:
* 1. 验证用户状态是否允许登录系统
* 2. 只有正常状态的用户可以登录
* 3. 其他状态均不允许登录
*
* @param status 用户状态
* @returns 是否可以登录
* @throws 无异常抛出
*
* @example
* ```typescript
* const canLogin = canUserLogin(UserStatus.ACTIVE);
* // 返回: true
* const cannotLogin = canUserLogin(UserStatus.LOCKED);
* // 返回: false
* ```
*/
export function canUserLogin(status: UserStatus): boolean {
// 只有正常状态的用户可以登录
return status === UserStatus.ACTIVE;
}
/**
* 获取用户状态对应的错误消息
*
* 技术实现:
* 1. 根据用户状态返回相应的错误提示信息
* 2. 为不同状态提供用户友好的错误说明
* 3. 指导用户如何解决状态问题
*
* @param status 用户状态
* @returns 错误消息
* @throws 无异常抛出,未知状态返回默认错误消息
*
* @example
* ```typescript
* const errorMsg = getUserStatusErrorMessage(UserStatus.LOCKED);
* // 返回: "账户已被锁定,请联系管理员"
* ```
*/
export function getUserStatusErrorMessage(status: UserStatus): string {
const errorMessages = {
[UserStatus.ACTIVE]: '', // 正常状态无错误
[UserStatus.INACTIVE]: '账户未激活,请先验证邮箱',
[UserStatus.LOCKED]: '账户已被锁定,请联系管理员',
[UserStatus.BANNED]: '账户已被禁用,请联系管理员',
[UserStatus.DELETED]: '账户不存在',
[UserStatus.PENDING]: '账户待审核,请等待管理员审核'
};
return errorMessages[status] || '账户状态异常';
}
/**
* 获取所有可用的用户状态
*
* 技术实现:
* 1. 返回系统中定义的所有用户状态枚举值
* 2. 用于状态选择器和验证逻辑
* 3. 支持动态状态管理功能
*
* @returns 用户状态数组
* @throws 无异常抛出
*
* @example
* ```typescript
* const allStatuses = getAllUserStatuses();
* // 返回: [UserStatus.ACTIVE, UserStatus.INACTIVE, ...]
* ```
*/
export function getAllUserStatuses(): UserStatus[] {
return Object.values(UserStatus);
}
/**
* 检查状态值是否有效
*
* 技术实现:
* 1. 验证输入的字符串是否为有效的用户状态枚举值
* 2. 提供类型安全的状态验证功能
* 3. 支持动态状态值验证和类型转换
*
* @param status 状态值
* @returns 是否为有效状态
* @throws 无异常抛出
*
* @example
* ```typescript
* const isValid = isValidUserStatus('active');
* // 返回: true
* const isInvalid = isValidUserStatus('unknown');
* // 返回: false
* ```
*/
export function isValidUserStatus(status: string): status is UserStatus {
return Object.values(UserStatus).includes(status as UserStatus);
}