feat(notification): 新增全部标记已读接口

This commit is contained in:
2026-09-16 02:45:36 +08:00
parent c2519c4b6d
commit 89b59c7b91
5 changed files with 76 additions and 2 deletions
+22 -2
View File
@@ -334,7 +334,7 @@ Authorization: Bearer <access_token>
| POST | `/like` | 点赞 / 取消点赞 |
| GET | `/like/:targetUUID` | 查询目标点赞状态与数量 |
**通知(4)**
**通知(5)**
| 方法 | 路径 | 说明 |
| --- | --- | --- |
@@ -342,6 +342,7 @@ Authorization: Bearer <access_token>
| GET | `/notification/unread` | 未读通知数 |
| GET | `/notification/:uuid` | 通知详情 |
| POST | `/notification/:uuid/read` | 标记单条已读 |
| POST | `/notification/read-all` | 全部标记已读(前端进入通知页时调用) |
**订单(4)**
@@ -1637,7 +1638,7 @@ Authorization: Bearer <access_token>
**业务逻辑**
- **条件更新**(仅"未读→已读"),防并发重复扣减未读数;已读时直接返回当前未读数,幂等。
- ⚠️ **没有"全部已读"接口**,需要全标已读时前端需逐条调用。
- ⚠️ 本接口只影响该条;需要**全部已读**请用 `POST /notification/read-all`(见下节),无需逐条调用。
**请求**(path)
@@ -1651,6 +1652,25 @@ Authorization: Bearer <access_token>
---
#### POST `/notification/read-all` — 全部标记已读(鉴权)
**业务逻辑**
- 将当前用户**全部未读**通知一次性置为已读(`is_read` 1 → 2);条件更新(仅未读→已读),**幂等**,重复调用不影响结果。
- ⚠️ **无请求体、无 query 参数**,作用于当前登录用户的全部通知,不受列表页 `msg_type` / `is_read` 筛选影响。
- 以 MySQL 为权威重新统计未读数并回填 Redis 缓存后返回,前端可直接用返回值刷新红点,**无需再调** `GET /notification/unread`。
- 前端约定:`pages/notification` 在**列表渲染完成后**调用(先拉列表保留本次进入的未读标记,再清零服务端状态与红点),实现「点开通知页即全部已读」。
**响应** `data`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| unread_count | int64 | 标记后的未读通知数(正常为 `0`) |
**错误码**:`19001` 数据库错误 · `19002` 缓存错误
---
### 5.11 商品模块(公开,无需登录)
**`goods_type` 枚举**:`1`=会员包 `2`=上传包 `3`=AI 推荐包 `4`=衣柜分享包 `5`=搭配分享包