/** * 业务错误码单一事实源:5 位数字 [域码 2 位][序 3 位]。 * * 域码:00 通用 · 10 认证 · 11 用户 · 12 角色 · 13 资源 · 14 组织 · 15 租户 * 16 字典 · 17 配置 · 18 审计 · 19 登录 · 20 会话 · 21 通知。 * * 用法:先在此登记,再 `throw new BusinessException(ErrorCodes.XXX, '...', HttpStatus.XXX)`。 * 未使用业务码的异常由 AllExceptionsFilter 回退为 `HTTP 状态 × 100`。 */ export const ErrorCodes = { // 认证(10) AUTH_CREDENTIALS: 10001, // 账号或密码错误(401) AUTH_LOCKED: 10002, // 账号已锁定(401) AUTH_DISABLED: 10003, // 账号已停用(401) AUTH_MUST_CHANGE_PWD: 10004, // 需先修改初始密码(403) AUTH_OLD_PWD_WRONG: 10005, // 原密码错误(400) AUTH_TOKEN_INVALID: 10006, // token 无效或已过期(401) AUTH_SESSION_REVOKED: 10007, // 会话已失效(401) // 用户(11) USER_NOT_FOUND: 11001, // 用户不存在(404) USER_USERNAME_EXISTS: 11002, // 用户名已存在(409) // 租户(15) TENANT_NOT_FOUND: 15001, // 租户不存在(404) TENANT_EXISTS: 15002, // 租户已存在(409) TENANT_DISABLED: 15003, // 租户不存在或已停用(401) // 会话(20) SESSION_NOT_FOUND: 20001, // 会话不存在或已下线(404) } as const; export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];