Skip to content

Shop Redeem Mock API

源码: web/src/mock/modules/shop/redeem.ts

接口列表

方法路径说明
POST/api/v1/shop/rewards/:rewardId/redeem兑换奖励
GET/api/v1/shop/history获取兑换历史

请求参数

POST /api/v1/shop/rewards/:rewardId/redeem

参数位置类型说明
rewardId路径string奖励ID

GET /api/v1/shop/history

无请求参数。

业务逻辑

兑换流程:

  1. 检查奖励是否存在且已启用
  2. 检查用户积分是否足够
  3. 扣除积分,记录积分日志(pointLog
  4. 记录兑换历史(shopHistory),保留最近 50 条

响应格式

POST /api/v1/shop/rewards/:rewardId/redeem

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "rewardName": "看动画",
    "cost": 10,
    "pointsBefore": 150,
    "pointsAfter": 140
  }
}

错误响应:

  • 奖励不存在:{ "code": 404, "msg": "奖励不存在", "data": null }
  • 奖励已禁用:{ "code": 400, "msg": "奖励已禁用", "data": null }
  • 积分不足:{ "code": 400, "msg": "积分不足", "data": null }

GET /api/v1/shop/history

返回按时间倒序的兑换历史(最近的在前面):

json
{
  "code": 0,
  "msg": "ok",
  "data": [
    {
      "id": "sh_001",
      "rewardId": "rw_001",
      "rewardName": "看动画",
      "cost": 10,
      "redeemedAt": "2026-01-01T00:00:00.000Z",
      "pointsBefore": 150,
      "pointsAfter": 140
    }
  ]
}

被哪个 Store 调用

  • ShopStore (web/src/stores/shop.ts)
    • redeemReward(rewardId)POST /api/v1/shop/rewards/:rewardId/redeem
    • load()GET /api/v1/shop/history