2.2 KiB
2.2 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| win返回余额叠加pending | 仅在 win 派奖流程中,对返回给第三方的余额叠加本局 pending 派奖,解决连续派奖期间玩家看到余额不增长的问题;不改其他接口。 |
|
false |
win 派奖返回余额叠加 pending(仅 win 场景)
目标
在不改变真实账务入账时机(仍以 is_end=1 Final Settlement 为准)的前提下,让第三方在连续派奖时拿到“可展示余额”:
is_end=0:返回余额包含本局 pending- 其他场景:不改
当前问题定位
在 app/api/logic/WalletLogic.php 的 win() 中:
is_end=0已做 pending 累计- 但返回值仍是 DB 真实余额(未叠加 pending),导致第三方展示不变
最小改动方案
仅修改 app/api/logic/WalletLogic.php 的 win():
- 在
is_end=0分支中,累计完成后读取pendingRoundAmount = getPendingWinByRound()。 - 返回给第三方时,将
withdraw/w做展示叠加:w = wallet.withdraw_balance + pendingRoundAmountwithdraw = wallet.withdraw_balance + pendingRoundAmount
deposit/bonus保持真实值(不动)。is_end=1维持现有逻辑:合并 pending 后走真实结算并清理 pending。
兼容与风险
- 仅影响
type=win的返回体,不影响 DB、Lot、流水、下注规则。 - 若第三方把
w当“可立即下注余额”,会产生语义差异(展示值 > 真实可用);但你当前业务前提是第三方只负责展示。
验收点
- 连续
is_end=0:返回w/withdraw逐次增长(包含 pending) - 重复
biz_id的is_end=0:返回值不重复增长 is_end=1后:返回值与真实结算后余额一致,pending 被清理