Files
lotteryLaravel/app/Lottery/ErrorCode.php
kang a44679665d feat: 增强代理和玩家管理功能
- 在多个控制器中更新权限检查逻辑,确保管理员能够更灵活地管理代理和玩家。
- 在 AdminPlayerStoreController 中引入对玩家创建能力的验证,确保只有具备相应权限的管理员能够创建玩家。
- 更新请求验证逻辑,新增 credit_limit、rebate_rate 和 extra_rebate_rate 字段,以支持更细粒度的玩家管理。
- 在 AgentNodeProfileController 中添加对父代理能力授予的验证,确保子代理的权限在父代理范围内。
- 引入 AgentProfileFieldRules 以简化代理资料更新请求的规则定义,提升代码复用性。
2026-06-04 18:00:50 +08:00

161 lines
4.9 KiB
PHP
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.
<?php
namespace App\Lottery;
/**
* HTTP JSON 业务码 `code`(与 `ApiResponse`、docs/04 §10 对齐)。
*
* 区间约定0 成功10001999 钱包20002999 下注80008999 SSO/权限90009999 系统。
* 新增错误时在此登记,业务代码引用本枚举,勿散落魔法数字。
*/
enum ErrorCode: int
{
/* ========== 成功 ========== */
/** 业务成功(与 `ApiResponse::success` 默认一致) */
case Success = 0;
/* ========== 10001999 钱包 / 转账 ========== */
/** PRD余额不足 */
case WalletInsufficientBalance = 1001;
/** PRD处理中转账 */
case WalletTransferPending = 1002;
/** PRD金额超出限制 */
case WalletAmountExceedsLimit = 1003;
/** 后台关闭玩家转入lottery_settings.wallet.transfer_in_enabled=false */
case WalletTransferInDisabled = 1004;
/**
* PRD钱包查询等场景下请求参数无效当前用于 `currency` 非法(与 1003 语义区分)。
*/
case WalletInvalidCurrency = 1005;
/** 后台关闭玩家转出 */
case WalletTransferOutDisabled = 1006;
/** 彩票钱包已冻结,不可划转 */
case WalletLotteryFrozen = 1007;
/** 金额非法:须为正整数最小货币单位 */
case WalletInvalidAmount = 1008;
/** 主站钱包接口拒绝或不可用(扣款/加款失败) */
case WalletExternalRejected = 1009;
/** 幂等键与已有订单冲突(金额/币种/方向不一致) */
case WalletIdempotentConflict = 1010;
/** 信用盘玩家不可主站钱包划转 */
case WalletCreditPlayerNoTransfer = 1011;
/* ========== 20002999 下注 / 注单PRD 保留,业务未实现时亦可提前登记) ========== */
/** PRD当期已封盘 */
case DrawClosed = 2001;
/** PRD玩法已关闭 */
case PlayModeClosed = 2002;
/** PRD下注语境余额不足可与 1001 同语义) */
case BetInsufficientBalance = 2003;
/** 下注号码格式或长度不合法 */
case BetInvalidNumber = 2004;
/** 下注玩法不支持或参数缺失 */
case BetInvalidPlayInput = 2005;
/** 当前期号不存在或不是可下注期号 */
case BetInvalidDraw = 2006;
/** 当前玩法不存在或暂不支持下注 */
case BetPlayUnsupported = 2007;
/**
* 预览后玩法/赔率/封顶等配置版本已切换,需重新预览再提交。
*/
case BetConfigStale = 2008;
/** 同 client_trace_id 重试,但原订单已退款/不可回放 */
case BetIdempotentReplayRejected = 2009;
/** 风险池额度不足,号码已售罄 */
case RiskPoolSoldOut = 4001;
/** 配置版本不是草稿,无法整表替换 items 或发布 */
case ConfigVersionNotDraft = 2101;
/** items 中存在未知 play_code未在 play_types 登记) */
case ConfigUnknownPlayCode = 2102;
/** 赔率 / 目录币种未启用或不可下注 */
case ConfigCurrencyInvalid = 2103;
/** 不能删除当前生效active的配置版本 */
case ConfigVersionCannotDeleteActive = 2104;
/* ========== 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;
/** 账号已冻结或禁止登录status ≠ active */
case PlayerAccountSuspended = 8005;
/** 原生登录:账号或密码错误 */
case PlayerCredentialsInvalid = 8006;
/** 原生登录:失败次数过多已锁定 */
case PlayerLoginLocked = 8007;
/** 原生登录:非彩票账号密码登录类型 */
case PlayerNativeLoginRequired = 8008;
/* ========== 81008199 管理端 API ========== */
/** 未登录或 Token 无效 */
case AdminUnauthenticated = 8110;
/** 登录:验证码错误或过期 */
case AdminCaptchaInvalid = 8111;
/** 登录:账号或密码不匹配(对外统一措辞) */
case AdminCredentialsInvalid = 8112;
/** 登录:账号已禁用 */
case AdminAccountDisabled = 8113;
/** 已登录但无 RBAC 权限 */
case AdminForbidden = 8114;
/* ========== 90009999 系统 / 框架 ========== */
/** 表单或 Query 校验失败ValidationException → 422 */
case ValidationFailed = 9001;
/** 模型或路由不存在 */
case NotFound = 9004;
/** `abort(4xx)` 等客户端类 Http 异常归类 */
case ClientHttpError = 9010;
/** 请求过于频繁 */
case TooManyRequests = 9031;
/** 未分类服务端异常 */
case InternalError = 9999;
}