MatchMaster/docs/superpowers/specs/2026-07-24-draw-cat-design.md
2026-07-30 12:22:02 +08:00

1.9 KiB
Raw Blame History

drawCat 抽猫云函数设计

目标

新增独立的 drawCat 云函数,使用玩家的 catArr 记录已拥有猫咪。它仿照 drawHead 的鉴权、权重抽取、代币扣除和返回结构,但不修改现有头像抽取功能。

接口

请求参数:

  • uid:玩家 ID。
  • token:登录 token。
  • gameName:可选;值为 iaa 时使用 usersAd,否则使用 users

成功返回:

{
  code: 1,
  data: {
    catArr: number[],
    reward: number,
    film: number
  },
  msg: "成功"
}

卡池与权重

  • 普通猫咪:4、5、6、7、8,每只权重 150
  • 稀有猫咪:9、10,每只权重 50
  • 最高稀有猫咪:11,权重 8
  • 玩家已拥有的猫咪从当次抽取候选中移除。
  • 抽到任何猫咪时都只追加本次抽中的一个 ID抽到 11 不赠送其他剩余猫咪。
  • catArr 缺失时按 [1, 2, 3] 处理。
  • 卡池全部收集完成后返回“已抽取所有猫咪”,不扣除代币。

代币消耗

  • 使用用户的 film 字段。
  • film 缺失时沿用 drawHead 行为,以 levelAmount 作为兼容值。
  • 按本期已收集数量使用阶梯消耗:5、10、25、35、55、70、100、120
  • 余额不足时返回当前 film 和本次 cost,不修改数据库。
  • 抽取成功后一次写回 { catArr, film }

校验与错误处理

  • 用户不存在时返回“未获取到玩家信息”。
  • 数据库用户存在 token 时必须通过现有 token 校验。
  • 不接受客户端指定卡池、权重、奖励或扣费金额。

验证

  • 验证云函数配置名为 drawCat
  • 验证普通、稀有和最高稀有权重区间。
  • 验证已拥有猫咪不会再次抽中。
  • 验证抽到 11 只增加 11
  • 验证阶梯扣费和余额不足行为。
  • 验证全部收集完成时不扣费。
  • 验证 gameName: "iaa" 路由到 usersAd