server/laf-cloud/miniProgramWelfare.API.md
2026-09-24 17:59:52 +08:00

67 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 小程序福利领取状态
只记录领取状态,不验证添加操作,不发放奖励。两项独立,每个账号永久各领一次,不支持重置。
## 用户字段与登录
`users.miniProgramWelfare` 为一个对象字段,登录成功时随 `data` 返回:
```json
{
"miniProgramWelfare": {
"favorite": false,
"desktop": false
}
}
```
- `favorite`:添加到我的小程序奖励;`desktop`:添加到桌面奖励。
- `false` 未领取,`true` 已领取。
- 新用户初始化两项为 `false`。老用户缺少字段或某一项时,返回 `false`;首次上报时按项写入,无需批量迁移。
- 登录只补全返回结构,不回写整个对象,以免覆盖并发上报。
## 记录接口
`POST /miniProgramWelfare`
```json
{
"uid": "登录返回的data._id",
"token": "登录返回的data.token",
"type": "favorite"
}
```
`uid`、`token` 必须为非空字符串,`type` 仅允许 `favorite` 或 `desktop`。接口只处理 `users`,不支持 `gameName: "iaa"`。请求不接受客户端提供的整份领取状态,不提供撤销或重置操作。
首次记录成功示例:
```json
{
"code": 1,
"data": {
"miniProgramWelfare": { "favorite": true, "desktop": false },
"changed": true
},
"msg": "领取状态记录成功"
}
```
重复上报仍返回 `code: 1`,但 `data.changed: false`,并返回两项当前状态。使用带 token 和未领取条件的单项原子更新;同项并发请求只有一次 `changed: true`,不同项不会互相覆盖。
参数错误、用户不存在、token 不匹配或数据库更新失败时返回 `code: 0`、`data: null` 和错误 `msg`;数据库异常也可能表现为请求失败。请求失败可重试;若前次写入已完成但响应丢失,重试返回 `changed: false`。
前端在确认需要记录已领取时调用,点击「查看」不调用本接口。`changed` 仅表示本次是否改变领取标记,不代表奖励发放结果;奖励处理和断网恢复由前端负责。
## 发布与验证
发布新云函数 `miniProgramWelfare`(仅 POST)及更新后的 `login`。不需要新集合或索引。
本地回归:
```powershell
node --test laf-cloud/tests/mini-program-welfare.test.mjs laf-cloud/tests/login-wucai-state.test.mjs laf-cloud/tests/login-cat-arr.test.mjs
```
实现使用 Laf 的条件更新接口,参见 [Laf 更新数据文档](https://doc.laf.run/zh/cloud-database/database-ql/update.html)。