# 微信小程序 · 我的旅行回忆接口

**日期**: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<MpTravelMemoryVO>>`

**`PageResult`**:
| 字段 | 类型 | 说明 |
|---|---|---|
| records | `List<MpTravelMemoryVO>` | 当前页数据 |
| 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 无效 |
