Files
shaguabijia-app-server/docs/api/ad-reward-status.md
T
OuYingJun1024 356d6e52b9 feat(coin): 金币数值体系一期 — 签到加成 + 信息流广告结算
签到加成(boost):
- 新增 signin_boost_record 表(user+date 唯一)+ POST /api/v1/signin/boost
- signin 状态/结算逻辑调整

信息流广告结算:
- 新增 ad_feed_reward_record 表(client_event_id 幂等)+ POST /api/v1/ad/feed-reward
- ad_feed_reward 模型/repo、ad schema、按 ecpm/时长结算金币

金币数值:core/rewards.py 数值调整、config_schema/admin config 适配
迁移 coin_reward_phase1(down_revision pstat3growth);测试 + API/DB 文档同步

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 22:52:06 +08:00

1.9 KiB
Raw Blame History

GET /api/v1/ad/reward-status — 今日看广告发奖进度

所属:Ad 组(前缀 /api/v1/ad | 鉴权:Bearer | ← 返回 API 索引

入参

无(用户由 token 确定)。

出参

响应 200:AdRewardStatusOut

字段 类型 说明
used_today int 今日已成功发奖次数
daily_limit int 每日发奖次数上限
remaining int 今日剩余可领次数
coin_per_ad int 看完一个激励视频发的金币
round_count int 本轮已看次数;当前 round_size=1,广告关闭后进入短冷却
cooldown_until datetime|null 3 秒短冷却结束时间(UTC ISO);null 表示不在冷却
watched_seconds_today int 今日已上报的激励视频观看秒数;当前仅兼容/排查用
watch_seconds_limit int 每日观看总时长上限;当前默认 0 表示未启用时长闸
watch_seconds_remaining int 今日剩余可观看秒数;watch_seconds_limit=0 时客户端不据此拦截

说明

福利页「看视频赚金币」用:

  • 展示「今日还能看 N 次」「看一次得 M 金币」(remaining/coin_per_ad)
  • 任务行 CTA 4 态推导:adLoading → Loading;remaining==0 → Capped("明天再来");cooldown_until 在未来 → CoolingDown(显示 MM:SS 倒计时,不可点);否则 Normal("去赚取")
  • 弹窗 limit note:used_today >= daily_limit 显示「今日视频已到限额,明天再来」;cooldown_until!=null 显示「广告冷却中,3秒后再来」

冷却派生算法:取当日 status='granted' 记录里最近一个已完成轮(当前每 N=1 条算一轮)末尾那次的 created_at,加 3 秒。若仍 > now → 返回;否则返回 null。冷却是 UX 约束,后端发奖(/api/v1/ad/pangle-callback)只看 daily_limit,冷却期间穿山甲回调照常发奖。

真正发奖走 ad-pangle-callback(穿山甲 S2S)。