Skip to main content

我的奖品模块

一、模块定位

我的奖品页面是用户查看所有中奖记录的统一入口,涵盖实物奖品地址管理、虚拟权益领取、冠军皮肤进度展示,是活动期间用户回访的核心页面之一。

关于活动整体背景和全局规则,请见 足球季活动全局


二、功能需求清单

2.1 页面入口

  • 活动主页提供明显的「我的奖品」入口(按钮/tab/浮标)
  • 活动期间和活动结束后(表彰页阶段)均可访问

2.2 奖品列表

页面展示用户在活动期间的所有中奖记录,按奖品类型分区展示:

2.2.1 冠军皮肤(始终展示)

冠军皮肤在活动期间始终显示在列表顶部,不论用户是否中奖:

用户状态展示形式说明
未达标置灰显示 + 两个条件进度助威球队是否夺冠 + 完课进度条(如 "7/10")
已达标正常显示,标记"已获得"活动结束后判定,详见 冠军皮肤奖励模块
  • 完课进度数据实时获取(来自 完课数据模块
  • 助威球队夺冠状态在活动结束后才能确定

2.2.2 实物奖品(公仔挂件 / 叫叫金片)

仅在中奖后展示,每个实物奖品对应一条记录:

地址状态展示内容操作按钮
未填写奖品名称 + "待填写收货地址"提示「填写地址」
已填写奖品名称 + 地址摘要(省市区+详细地址前10字)「修改地址」
  • 点击「填写地址」或「修改地址」跳转至地址填写页,详见 收货地址模块
  • 活动结束后地址变为只读,按钮改为「查看地址」,不可编辑

2.2.3 虚拟权益奖品

仅在中奖后展示,口算VIP月卡和体验课采用不同展示方式:

叫叫口算VIP月卡(激活码模式)

领取状态展示内容操作按钮
未领取奖品名称 + 激活码 + "激活码已复制"提示「立即领取」
已领取奖品名称 + 激活码 + "已领取"标记「再次领取」(方便重试)
  • 激活码在中奖时已由后端分配,展示时始终可见
  • 点击「立即领取」:通过 Bridge openBrowser系统浏览器中打开兑换页面(https://act.cdssylkj.com/activeCode/index
  • 兑换页面中用户粘贴激活码完成兑换
  • "已领取"状态由前端本地记录(用户点击过即标记),不代表目标页面已完成兑换

体验课(跳转链接模式)

领取状态展示内容操作按钮
未领取奖品名称 + "点击领取"引导「立即领取」
已领取奖品名称 + "已领取"标记「再次领取」(方便链接失效时重试)
  • 点击「立即领取」跳转到对应的领取页面链接,详见 抽奖模块 2.4.1 节
  • 领取链接由后端配置返回,运营可随时修改
  • "已领取"状态由前端本地记录(用户点击过即标记),不代表目标页面已完成兑换

2.3 空状态

  • 用户尚未中过任何奖品(且冠军皮肤未达标)时,展示空状态页面
  • 空状态内容:引导文案(如"快去投票抽奖,赢取好礼吧!")+ 跳转按钮回到活动主页

三、业务规则与约束

3.1 列表排序

  • 冠军皮肤始终置顶
  • 其余奖品按中奖时间倒序排列(最新的在前)

3.2 数据获取

  • 中奖记录从服务端接口获取(需后端提供查询接口)
  • 完课进度从完课数据接口获取
  • 页面每次打开时刷新数据

3.3 前置条件

  • 用户必须在 App 内打开活动页面(已登录状态)

3.4 边界场景

场景处理方式
用户从未中过奖展示空状态,引导回主页投票抽奖
中奖记录接口请求失败展示"加载失败,点击重试",不展示空状态
活动结束后访问我的奖品正常展示,实物地址只读,虚拟领取入口保留
同一用户中多种奖品每种奖品独立一条记录,分别展示各自状态
用户已中过口算VIP月卡(限1次)列表中展示该条中奖记录(含激活码),后续不会再中此奖品

3.5 预留 API 接口(待后端设计)

GET /api/my-prizes
Response: { prizes: [{ type, name, wonAt, addressStatus?, address?, activationCode?, redeemUrl?, redeemStatus? }], skinProgress: { teamWon, lessonsCompleted, targetLessons } }