67 lines
2.4 KiB
Markdown
67 lines
2.4 KiB
Markdown
# 小程序福利领取状态
|
||
|
||
只记录领取状态,不验证添加操作,不发放奖励。两项独立,每个账号永久各领一次,不支持重置。
|
||
|
||
## 用户字段与登录
|
||
|
||
`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)。
|