feat: 增强管理员 API 鉴权,新增 token 有效天数配置,更新相关异常处理与错误码引用

This commit is contained in:
2026-05-09 11:26:39 +08:00
parent 8a70c029f6
commit f1b38ef421
13 changed files with 124 additions and 42 deletions

View File

@@ -3,35 +3,87 @@
namespace App\Lottery;
/**
* HTTP JSON `ApiResponse` 对齐的业务码常量(对齐 docs/04 §10
* SSO 等特殊场景仍由各模块直接写整数(如 EnsurePlayerApi 使用的 8001)。
* HTTP JSON 业务码 `code` `ApiResponse`docs/04 §10 对齐)。
*
* 区间约定0 成功10001999 钱包20002999 下注80008999 SSO/权限90009999 系统。
* 新增错误时在此登记,业务代码引用本枚举,勿散落魔法数字。
*/
enum ErrorCode: int
{
/** 管理端 API未登录或 Token 无效 */
/* ========== 成功 ========== */
/** 业务成功(与 `ApiResponse::success` 默认一致) */
case Success = 0;
/* ========== 10001999 钱包 / 转账 ========== */
/** PRD余额不足 */
case WalletInsufficientBalance = 1001;
/** PRD处理中转账 */
case WalletTransferPending = 1002;
/** PRD金额超出限制 */
case WalletAmountExceedsLimit = 1003;
/**
* PRD钱包查询等场景下请求参数无效当前用于 `currency` 非法(与 1003 语义区分)。
*/
case WalletInvalidCurrency = 1005;
/* ========== 20002999 下注 / 注单PRD 保留,业务未实现时亦可提前登记) ========== */
/** PRD当期已封盘 */
case DrawClosed = 2001;
/** PRD玩法已关闭 */
case PlayModeClosed = 2002;
/** PRD下注语境余额不足可与 1001 同语义) */
case BetInsufficientBalance = 2003;
/* ========== 80008999 玩家 SSO / Bearer 鉴权 ========== */
/** 无 Bearer / 格式错误 / token 为空 */
case PlayerAuthorizationInvalid = 8001;
/** JWT 无效或过期、dev: 格式错误、缺少站点或玩家标识等 */
case PlayerTokenInvalid = 8002;
/** 库中无对应玩家(未建档) */
case PlayerNotRegistered = 8003;
/** 未配置 `MAIN_SITE_SSO_JWT_SECRET`(通常 HTTP 503 */
case PlayerSsoSecretNotConfigured = 8004;
/* ========== 81008199 管理端 API ========== */
/** 未登录或 Token 无效 */
case AdminUnauthenticated = 8110;
/** 管理端登录:验证码错误或过期 */
/** 登录:验证码错误或过期 */
case AdminCaptchaInvalid = 8111;
/** 管理端登录:账号或密码不匹配(对外统一措辞) */
/** 登录:账号或密码不匹配(对外统一措辞) */
case AdminCredentialsInvalid = 8112;
/** 管理端登录:账号已禁用 */
/** 登录:账号已禁用 */
case AdminAccountDisabled = 8113;
/** 表单 / Query 校验失败(见 ValidationException → 422 */
/* ========== 90009999 系统 / 框架 ========== */
/** 表单或 Query 校验失败ValidationException → 422 */
case ValidationFailed = 9001;
/** 资源或路由不存在 */
/** 模型或路由不存在 */
case NotFound = 9004;
/** `abort(4xx)` 等客户端类 Http 异常归类 */
case ClientHttpError = 9010;
/** 请求过于频繁 */
case TooManyRequests = 9031;
/** `abort(4xx)` 等客户端类 Http 异常HTTP 状态码见响应头;本码作业务归类) */
case ClientHttpError = 9010;
/** 未分类服务端异常(生产环境不向客户端暴露细节) */
/** 未分类服务端异常 */
case InternalError = 9999;
}