Skip to content

User Badges Mock API

源码: web/src/mock/modules/user/badges.ts

接口列表

方法路径说明
GET/api/v1/users/me/badges获取我的徽章列表(含解锁状态)
POST/api/v1/users/me/badges/:badgeId解锁指定徽章

请求参数

GET /api/v1/users/me/badges

无请求参数。

POST /api/v1/users/me/badges/:badgeId

参数位置类型说明
badgeId路径string徽章ID(来自 BADGE_DEFS

响应格式

GET /api/v1/users/me/badges

合并 BADGE_DEFS(徽章定义)与用户已解锁徽章记录,返回每个徽章的定义 + 解锁状态:

json
{
  "code": 0,
  "msg": "ok",
  "data": [
    {
      "id": "first_write",
      "name": "初次书写",
      "desc": "完成第一次书写练习",
      "category": "write",
      "icon": "first_write",
      "unlocked": true,
      "unlockedAt": "2026-01-01T00:00:00.000Z"
    },
    {
      "id": "learn_100",
      "name": "百字探索者",
      "desc": "学会100个汉字",
      "category": "explore",
      "icon": "learn_100",
      "unlocked": false,
      "unlockedAt": null
    }
  ]
}

POST /api/v1/users/me/badges/:badgeId

json
{ "code": 0, "msg": "ok", "data": { "badgeId": "first_write", "unlockedAt": "2026-01-01T00:00:00.000Z" } }

错误响应:

  • 徽章不存在:{ "code": 400, "msg": "徽章不存在", "data": null }
  • 徽章已解锁:{ "code": 400, "msg": "徽章已解锁", "data": null }

被哪个 Store 调用

  • UserStore (web/src/stores/user.ts)
    • unlockBadge(badgeId)POST /api/v1/users/me/badges/:badgeId
  • AchievementStore (web/src/stores/achievement.ts)
    • 通过 user.unlockBadge() 间接调用