1.优化中奖后只推送一帧中奖记录消息
This commit is contained in:
@@ -109,7 +109,9 @@
|
||||
| `streak_win_reward` | JSON:`rows[]` 每项含 `streak`(1~10)、`odds_factor`(与 33 相乘为整段赔率)、`is_jackpot`(是否大奖)。派彩公式:`total_amount × odds_factor × 33`。默认第 10 档 `is_jackpot=true`。 |
|
||||
| `deposit_tier` | 仍由「充值档位」独立菜单维护,**不出现在**「常规配置」列表。 |
|
||||
|
||||
开奖结算后更新 **`user.current_streak`**:本期有中奖注单则 `min(streak_at_bet+1, 10)`,否则 **连胜归 0**(无档位配置)。若命中大奖档,向玩家 **私有频道** `private-user-{uuid}` 与 **公共频道** `public-game-period` 推送事件 **`jackpot.hit`**(负载含 `period_no`、`user_id`、`total_win_amount`、`result_number` 等)。
|
||||
开奖结算后更新 **`user.current_streak`**:本期有中奖注单则 `min(streak_at_bet+1, 10)`,否则 **连胜归 0**(无档位配置)。若命中大奖档,向玩家 **私有频道** `private-user-{uuid}` 与 **公共频道** `public-game-period` 推送事件 **`jackpot.hit`**(负载含 `period_id`、`period_no`、`result_number`、`server_time` 与 `hits[]`;`hits[]` 每项含 `user_id`、**`nickname`**(昵称优先、空则 fallback 到 username)、`period_no`、`total_win`、`result_number`,供前端弹窗/通知直接展示)。
|
||||
|
||||
> **派彩期间 `period.tick` 静默规则**:开奖到派彩宽限期结束(`status=payouting`)期间**不再推送 `period.tick`**,避免覆盖中奖动画;本期进入 `finished`/`void` 时各推一帧边界帧(每期号每状态去重,Redis Key `dfw:v1:ws:tick:boundary:{period_no}:{status}`,TTL 300s),下一期 `betting` 时恢复每秒推送。详见《36字花-移动端接口设计草案》§7.1.3。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -823,12 +823,25 @@
|
||||
|
||||
#### 7.1.3 推送频率与触发规则(当前实现)
|
||||
|
||||
- `period.tick`:**每秒一次**(用于倒计时、状态同步;**不含**赔率全表)。
|
||||
- `period.tick`:**仅在 `status ∈ {betting, locked}` 时每秒推送**(用于倒计时、状态同步;**不含**赔率全表)。
|
||||
- **派彩静默期**:`status=payouting`(开奖到派彩宽限期结束)期间**完全不推**,避免覆盖前端的中奖动画/弹窗。中奖玩家依靠同时触发的 `period.opened` / `period.payout` / `jackpot.hit` / `wallet.changed(biz_type=payout)` 完成展示。
|
||||
- **边界帧(每期仅一次)**:
|
||||
- `status=finished`:派彩宽限期结束、本期进入收尾时推送一帧,告知前端可以清理本期 UI。
|
||||
- `status=void`:本期被作废时推送一帧作为通知。
|
||||
- **恢复推送**:下一期创建并进入 `betting` 后,按新 `period_no` 重新开始每秒推送。
|
||||
- 服务端去重:边界帧通过 Redis Key `dfw:v1:ws:tick:boundary:{period_no}:{status}`(TTL 300s)保证同一期号同一状态只推一次。
|
||||
- `user.streak`:每期结算更新用户连胜后按用户推送(未中奖也会推送,`current_streak` 可能归零)。
|
||||
- `admin.live.snapshot`:**每秒一次**(后台实时对局页全量快照)。
|
||||
- `admin.live.snapshot`:**每秒一次**(后台实时对局页全量快照;不受派彩静默期影响)。
|
||||
- `period.opened` / `period.payout` / `admin.live.opened`:按开奖流程阶段触发(事件触发型,非固定频率)。
|
||||
- `wallet.changed`:仅在余额发生变更时推送(如下注扣款、充值入账、派彩入账)。
|
||||
- `jackpot.hit`:**仅在本期存在中大奖命中用户时推送**;无命中不推送。
|
||||
- **载荷字段**:`period_id` / `period_no` / `result_number` / `hits[]` / `server_time`。
|
||||
- `hits[]` 数组每项字段:
|
||||
- `user_id`:int(中奖用户 ID)
|
||||
- `nickname`:string(用户昵称,**优先取 `user.nickname`,为空时 fallback 到 `user.username`,再为空则使用 `用户{user_id}`**,供前端弹窗/横幅通知直接展示)
|
||||
- `period_no`:string
|
||||
- `total_win`:string(本期该用户的命中大奖派彩合计,金额字符串)
|
||||
- `result_number`:int
|
||||
|
||||
### 7.1A 后台连接方式(管理端联调)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user