This commit is contained in:
1 parent
2fee329002
commit
64eadf1446
52 files changed
+2590
-4
No files matched your search
@@ -586,6 +586,53 @@ app.register.max-per-device-per-day
|
||||
解锁后播放入口与下载入口会同时放行 —— 权益判定由交易模块的 `EntitlementPort` 实现提供,
|
||||
播放域与下载域都不需要改代码。金币变动一律带幂等键并写 `coin_ledger`,钱包余额与流水同事务。
|
||||
|
||||
### 1.8.1 奖励中心(已实现)
|
||||
|
||||
奖励中心复用钱包和金币流水,首发时区固定为 `Asia/Jakarta`。任务配置、奖励金币、任务文案、动作、周期和上下线状态均由后台维护;客户端不能直接提交任务进度,观看进度由服务端在 `/app/watch/progress` 校验成功后累计。
|
||||
|
||||
| 方法 | 路径 | 鉴权 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| GET | `/app/rewards/overview` | 匿名 | 返回任务配置、任务分组、签到规则和活动卡片;未登录时余额为 `0`、用户进度为 `0`、签到状态为未签到;登录后补充用户数据;`locale` 可选 `id/en/zh` |
|
||||
| GET | `/app/rewards/activities` | 匿名 | 返回当前生效活动卡片,活动一期只展示和跳转 |
|
||||
| GET | `/app/rewards/check-in` | 登录 | 返回今日是否签到、连续天数、7 天规则 |
|
||||
| POST | `/app/rewards/check-in` | 登录 | 按服务端日期和连续签到规则发放金币;同用户同日期幂等 |
|
||||
| POST | `/app/rewards/tasks/{taskId}/claim` | 登录 | 领取已完成任务;同任务同周期幂等 |
|
||||
|
||||
总览响应核心字段:
|
||||
|
||||
```json
|
||||
{
|
||||
"serverDate": "2026-11-05",
|
||||
"timezone": "Asia/Jakarta",
|
||||
"coinBalance": "135",
|
||||
"checkin": {
|
||||
"taskId": "202611050001",
|
||||
"checkedInToday": false,
|
||||
"streak": 2,
|
||||
"currentDay": 3,
|
||||
"days": [{"dayIndex": 1, "rewardCoin": "35", "checked": true, "current": false}]
|
||||
},
|
||||
"sections": [{
|
||||
"code": "DAILY",
|
||||
"title": "Tugas harian",
|
||||
"tasks": [{
|
||||
"id": "202611050002",
|
||||
"code": "watch_5_minutes",
|
||||
"type": "WATCH_DURATION",
|
||||
"progressValue": "120",
|
||||
"targetValue": "300",
|
||||
"rewardCoin": "20",
|
||||
"status": "IN_PROGRESS"
|
||||
}]
|
||||
}],
|
||||
"activities": []
|
||||
}
|
||||
```
|
||||
|
||||
一期任务类型为 `DAILY_CHECK_IN`、`WATCH_DURATION`、`WATCH_EPISODES`、`COMPLETE_PROFILE`、`FIRST_PURCHASE`;`FIRST_LOGIN` 预留给登录事件接入。任务状态为 `IN_PROGRESS`、`COMPLETED`、`CLAIMED`。奖励发放使用 `coin_ledger.biz_type=REWARD`,任务领取幂等键为 `reward:{taskCode}:{userId}:{cycleKey}`,签到幂等键为 `reward:checkin:{userId}:{date}`。重复请求返回既有发放结果,不重复增加钱包余额。
|
||||
|
||||
失败场景:任务未完成或已停用返回 `200003`;任务、签到规则不存在返回 `200002`;奖励金币为 0 或请求参数非法返回 `400`;钱包余额和发放单不一致时整笔事务回滚。
|
||||
|
||||
**`POST /app/orders/verify`(B1-1:Google Play 票据校验闭环)**
|
||||
|
||||
请求体:
|
||||
@@ -1233,6 +1280,19 @@ commentSummary,createdAt`。游客的 userId 为空、anonymous 为 true;评
|
||||
|
||||
> `id` 以字符串下发:见 **§0「ID 字段一律以字符串下发」**(本节不再单独规定)。
|
||||
|
||||
### 2.11.1 奖励中心管理(已实现)
|
||||
|
||||
| 方法 | 路径 | 权限点 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| GET | `/admin/rewards/tasks/page` · `/tasks/{id}` | `reward:list` | 奖励任务分页与详情 |
|
||||
| POST | `/admin/rewards/tasks` | `reward:update` | 新建任务,默认下线 |
|
||||
| PUT | `/admin/rewards/tasks/{id}` · `/{id}/status` | `reward:update` | 编辑、上线 / 下线;编辑会递增版本 |
|
||||
| GET · PUT | `/admin/rewards/check-in/rules` | `reward:checkin` | 查看 / 保存签到每日奖励规则,天数不能重复 |
|
||||
| GET | `/admin/rewards/grants/page` | `reward:grant` | 用户、任务、来源、状态筛选发放记录 |
|
||||
| POST | `/admin/rewards/grants/manual` | `reward:grant` | 人工补发;仍写 `REWARD` 钱包流水并要求幂等键 |
|
||||
|
||||
后台任务保存字段包括 `code`、`sectionCode`、`type`、`verifyMode`、`targetValue`、`rewardCoin`、`cycleType`、`cycleLimit`、三语言文案、动作、排序和生效时间。任务配置不允许后台写任意脚本,扩展字段只能放在 `configJson`。
|
||||
|
||||
**校验与错误码**:
|
||||
|
||||
| 场景 | 结果 |
|
||||
|
||||
Reference in new issue
Block a user