5.2 KiB
5.2 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| status 配置与未充值 | 修复 slot_console FreeCreditsLogic::status:无玩家池时返回 status=0 及活动配置;C 端新增 win_threshold(不含 initial_amount、home_withdraw_unlocked)。Logic 已按需求变更实现,待对齐单测与 PHPDoc。 |
|
false |
Free Credits status 接口修复计划(需求变更版)
需求确认(2026-05-21)
C 端 GET /api/free-credits/status 约定:
- 包含:
win_threshold(来自ext_config.win_threshold_qf) - 不包含:
initial_amount、home_withdraw_unlocked- 注册赠送金额:仍由
game_base.user_register_reward等其它接口提供 - 首页 Withdraw 解锁:C 端用
status(如STATUS_HOME_UNLOCKED=1)或钱包余额 +win_threshold自行判断;库表home_withdraw_unlocked仍由syncHomeWithdrawUnlocked维护,仅不下发 API
- 注册赠送金额:仍由
后台 type=11 的 initial_amount_qf 配置保留(运营后台用),不经 status 透出。
问题根因
FreeCreditsLogic::status() 原逻辑在无 free_credits_player 时返回 { status: -1 },导致首充前 C 端无法展示活动(status !== -1 为展示开关)。
目标行为
| 场景 | status | 返回顶层字段 |
|---|---|---|
| 无资格 / 无 type=11 配置 | -1 |
仅 status |
| 有资格 + 有配置 + 无 player | 0 |
status, frozen_amount, first_cash_amount, win_threshold, recharge_unlock_amount, help, packages(空数组) |
| 有资格 + 有配置 + 有 player | 玩家真实值 | 同上 + 玩家 frozen_amount / first_cash_amount / packages |
flowchart TD
statusReq[GET status] --> eligible{资格+活动配置?}
eligible -->|否| notVisible["status=-1"]
eligible -->|是| player{有 player 行?}
player -->|无| preConfig["status=0 + win_threshold 等"]
player -->|有| fullStatus["buildStatus 玩家态"]
已实现 Logic(当前代码,无需再改字段集)
FreeCreditsLogic.php 已与上表一致:
status():无 player →buildPreEnrollmentStatus($config)buildConfigClientFields():仅win_threshold、recharge_unlock_amount、helpbuildStatus()/buildPreEnrollmentStatus():不返回initial_amount、home_withdraw_unlocked
待办:对齐文档与单测
1. PHPDoc — FreeCreditsController.php
- 删除
initial_amount、home_withdraw_unlocked字段说明 - 明确
status=0时仍返回win_threshold、recharge_unlock_amount、help
2. 清理 Logic 注释/死代码 — FreeCreditsLogic.php
- 删除未使用的
DEFAULT_INITIAL_AMOUNT常量(若仍保留) buildConfigClientFields的@return改为仅含win_threshold、recharge_unlock_amount、help
3. 单测
| 文件 | 改动 |
|---|---|
FreeCreditsClientStatusTest.php |
PLAYER_TOP_KEYS 改为:status, frozen_amount, first_cash_amount, win_threshold, recharge_unlock_amount, help, packages;移除 initial_amount、home_withdraw_unlocked 断言 |
FreeCreditsEligibilityTest.php |
testStatusReturnsPreEnrollmentConfigWhenNoPlayer:断言 win_threshold=50,不断言 initial_amount / home_withdraw_unlocked |
运行:
docker exec -w /app/www/slot/slot_console php82 vendor/bin/phpunit tests/Unit/FreeCreditsClientStatusTest.php tests/Unit/FreeCreditsEligibilityTest.php
C 端约定(供联调)
- 展示开关:
data.status !== -1;首充前为status === 0 - 进度条上限:
win_threshold - 注册赠送:不要从 status 取;走注册/大厅配置接口
- Withdraw 解锁:不要依赖
home_withdraw_unlocked字段;用status或余额逻辑
不在本次范围
- status 返回
initial_amount/home_withdraw_unlocked - 注册发奖改读
ext_config.initial_amount_qf - slot_pwa / gateway 前端改动
- backend 后台
initial_amount_qf编辑能力(已存在)
验收清单
- 无 player:
status=0,含win_threshold、recharge_unlock_amount、help,packages=[],无initial_amount、home_withdraw_unlocked键 - 有 player:含玩家态金额 + 同上配置字段
- 无资格/无配置:
status=-1 - 单测全部通过