diff --git a/changelogs/2026-04/2026-04-21_mp-travel-memory.md b/changelogs/2026-04/2026-04-21_mp-travel-memory.md new file mode 100644 index 0000000..0e13064 --- /dev/null +++ b/changelogs/2026-04/2026-04-21_mp-travel-memory.md @@ -0,0 +1,134 @@ +# 微信小程序 · 我的旅行回忆接口 + +**日期**:2026-04-21 +**影响**:**微信小程序** 行程 Tab·回头客态(原型 `wwWKT` 旅行回忆卡片墙) +**PR**:#1004(Closes #1002)· #1014(Closes #1011) + +--- + +## 概述 + +返回用户已完成订单(`status=COMPLETED`)分页列表,按 `departure_date DESC, order_id DESC` 排序。响应中已含评分信息,一次调用拿到订单+评分完整数据。 + +--- + +## 接口 + +``` +GET /mp/order/travel-memory +``` + +**鉴权**:Bearer token(登录态)。`userId` 由后端从 token 取,前端不传。 + +### 入参 + +| 参数 | 位置 | 类型 | 必填 | 默认 | 约束 | 说明 | +|---|---|---|---|---|---|---| +| page | Query | Integer | 否 | 1 | ≥1 | 页码 | +| pageSize | Query | Integer | 否 | 20 | 1~100 | 每页条数 | + +### 请求示例 + +``` +GET /mp/order/travel-memory?page=1&pageSize=10 +``` + +--- + +### 出参 `Result>` + +**`PageResult`**: +| 字段 | 类型 | 说明 | +|---|---|---| +| records | `List` | 当前页数据 | +| total | Integer | 总记录数 | +| page | Integer | 当前页码 | +| pageSize | Integer | 每页条数 | + +**`MpTravelMemoryVO`**: +| 字段 | 类型 | 必有 | 说明 | +|---|---|---|---| +| orderId | Long | ✅ | 订单ID | +| productName | String | ✅ | 产品名(订单快照) | +| productCoverUrl | String | 否 | 产品封面图 URL | +| departureDate | LocalDate | ✅ | 出发日期,`yyyy-MM-dd` | +| returnDate | LocalDate | 否 | 返程日期,`yyyy-MM-dd`(按 `departureDate + tripDays - 1` 推导) | +| tripDays | Integer | 否 | 行程天数 | +| tripNights | Integer | 否 | 行程晚数 | +| reviewed | Boolean | ✅ | 是否已评价(null 兜底为 false) | +| rating | Integer | 否 | 整体评分 1-5;**未评价或评价服务降级时为 null** | +| reviewId | Long | 否 | 评价ID;**未评价或评价服务降级时为 null** | + +### 响应示例(已评价 + 未评价混合) + +```json +{ + "code": 200, + "message": "操作成功", + "data": { + "records": [ + { + "orderId": 2043935542092980226, + "productName": "草原环线·舒适套餐", + "productCoverUrl": "https://cdn.1814.love/product/cover/xxxx.png", + "departureDate": "2026-07-01", + "returnDate": "2026-07-06", + "tripDays": 6, + "tripNights": 5, + "reviewed": true, + "rating": 5, + "reviewId": 6001 + }, + { + "orderId": 2043935542092980211, + "productName": "呼伦贝尔深度游·豪华版", + "productCoverUrl": "https://cdn.1814.love/product/cover/yyyy.png", + "departureDate": "2026-05-15", + "returnDate": "2026-05-20", + "tripDays": 6, + "tripNights": 5, + "reviewed": false, + "rating": null, + "reviewId": null + } + ], + "total": 2, + "page": 1, + "pageSize": 10 + } +} +``` + +### 响应示例(空数据) + +```json +{ + "code": 200, + "message": "操作成功", + "data": { + "records": [], + "total": 0, + "page": 1, + "pageSize": 10 + } +} +``` + +--- + +## 边界行为 + +- **未登录**:401(网关层拦截) +- **分页参数越界**(`page < 1` 或 `pageSize > 100`):400 +- **评价服务降级**:接口仍 200 返回订单数据,`rating` / `reviewId` 统一为 null +- **未完成订单**:不返回(仅 `status=COMPLETED` 进入列表) + +--- + +## 错误码 + +| code | 触发 | +|---|---| +| 200 | 正常(评价服务降级时 code 也是 200,rating/reviewId 为 null)| +| 400 | 分页参数越界 | +| 401 | token 无效 |