From c9cd0ca886f52567cccbc8a9cfa5049e88dfff51 Mon Sep 17 00:00:00 2001 From: yaosutu <770858045@qq.com> Date: Tue, 21 Apr 2026 17:19:35 +0800 Subject: [PATCH] =?UTF-8?q?changelog(order-v2):=20C=20=E7=AB=AF=E6=88=91?= =?UTF-8?q?=E7=9A=84=E6=97=85=E8=A1=8C=E5=9B=9E=E5=BF=86=20travel-memory?= =?UTF-8?q?=20=E6=8E=A5=E5=8F=A3=20+=20=E8=AF=84=E5=88=86=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GET /mp/order/travel-memory 接口首发 (PR #1004 / Issue #1002) - MpTravelMemoryVO 补 rating + reviewId 字段 (PR #1014 / Issue #1011) - 对应原型 wwWKT 行程 Tab·回头客 本地已有两份完整 changelog 但此前未推送,本次一并推送远程。 Co-Authored-By: Claude Opus 4.7 (1M context) --- ...-04-20_order-v2_mp-travel-memory-rating.md | 123 +++++++++++++++ .../2026-04-20_order-v2_mp-travel-memory.md | 140 ++++++++++++++++++ 2 files changed, 263 insertions(+) create mode 100644 changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory-rating.md create mode 100644 changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory.md diff --git a/changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory-rating.md b/changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory-rating.md new file mode 100644 index 0000000..1ea4e44 --- /dev/null +++ b/changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory-rating.md @@ -0,0 +1,123 @@ +# C端「我的旅行回忆」接入评分 — 2026-04-20 + +> **服务** hl-order-service-v2(端口 8094)+ hl-user-service(端口 8081)· **类型** feat · **关联** Issue #1011 / PR #1014 +> **依赖变更** 延续 PR #1004 的 `GET /mp/order/travel-memory`,本期补评分字段 + +--- + +## 一、现有接口字段新增(无路径/参数变更) + +### ✏️ `GET /mp/order/travel-memory` — 我的旅行回忆 + +**请求参数**:不变(`page` / `pageSize`)。 + +**`MpTravelMemoryVO` 新增 2 个字段**: + +| 字段 | 类型 | 必有 | 说明 | +| --- | --- | --- | --- | +| `rating` | `Integer` | 否 | 整体满意度评分(1-5),**未评价或评价服务降级时为 null** | +| `reviewId` | `Long` | 否 | 评价 ID,**未评价或评价服务降级时为 null** | + +**原有字段保持不变**:`orderId` · `productName` · `productCoverUrl` · `departureDate` · `returnDate` · `tripDays` · `tripNights` · `reviewed` + +**响应示例**(已评价 + 未评价混合): + +```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 + } +} +``` + +### 降级行为 + +评价服务(hl-user-service)不可用时,本接口走 Fallback: +- `records` 正常返回(订单基础字段齐全) +- 所有订单的 `rating` 和 `reviewId` 均为 null +- HTTP 200,`code=200`,不抛异常 + +--- + +## 二、新增内部接口(服务间,前端无需关心) + +### 🆕 `GET /internal/review/orders/summaries` — 批量订单评价摘要 + +> 仅供 `hl-order-service-v2` 通过 Feign 调用 `hl-user-service`。网关未暴露,前端不调用。 + +**请求参数**: + +| 参数 | 位置 | 类型 | 必填 | 约束 | 说明 | +| --- | --- | --- | --- | --- | --- | +| `orderIds` | Query | `String` | ✅ | 逗号分隔,≤200 | 订单 ID 列表 | + +**返回值** `Result>`: + +| 字段 | 类型 | 说明 | +| --- | --- | --- | +| `orderId` | `Long` | 订单 ID | +| `reviewId` | `Long` | 评价 ID | +| `ratingOverall` | `Integer` | 整体满意度评分(1-5) | +| `ratingAvg` | `BigDecimal` | 综合评分(各维度算术平均,1 位小数) | +| `ratingLevel` | `String` | 评价等级:GOOD/MEDIUM/BAD | +| `content` | `String` | 评价正文 | +| `hasImage` | `Boolean` | 是否含图片 | +| `status` | `String` | 评价状态(字典 `review_status`:PENDING_MODERATION/APPROVED/REJECTED 等) | +| `createdAt` | `LocalDateTime` | 评价创建时间 | + +**查询语义**:仅返回 `target_type='PRODUCT'` 的评价;**未评价的 orderId 不出现在返回列表中**;不过滤 `status`(包括待审核/被拒)。 + +--- + +## 三、数据库变更 + +**无**。评价数据已存在 `order_review` 表。 + +--- + +## 四、错误码 + +HTTP 始终返回 200,错误码在 `Result.code` 中。 + +| code | 触发 | 说明 | +| --- | --- | --- | +| 200 | 正常 | 成功(评价服务降级时 code 也是 200,rating/reviewId 为 null) | +| 400 | `orderIds` 超过 200 | 批量接口校验(`BusinessException`) | + +--- + +## 五、关联 + +- Issue: [wx/HL#1011](https://git.1814.love:8443/wx/HL/issues/1011) +- PR: [wx/HL#1014](https://git.1814.love:8443/wx/HL/pulls/1014)(已合并到 dev) +- 前置:[2026-04-20_order-v2_mp-travel-memory.md](./2026-04-20_order-v2_mp-travel-memory.md)(PR #1004) diff --git a/changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory.md b/changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory.md new file mode 100644 index 0000000..4f6b95f --- /dev/null +++ b/changelogs/2026-04/2026-04-20_order-v2_mp-travel-memory.md @@ -0,0 +1,140 @@ +# C端「我的旅行回忆」接口新增 — 2026-04-20 + +> **服务** hl-order-service-v2(端口 8094)· **类型** feat · **关联** Issue #1002 / PR #1004 +> **前端调用路径**: 网关(8080) → hl-mp-service(8085) → hl-order-service-v2(8094) +> **前端实际请求前缀**: `GET /mp/order/travel-memory`(mp-service 需同步新增 BFF 转发层) + +--- + +## 一、新增接口(1 个) + +### 🆕 `GET /mp/order/travel-memory` — 我的旅行回忆 + +**功能**:返回用户已完成订单(`status=COMPLETED`)分页列表,按 `departure_date DESC, order_id DESC` 排序。 + +**请求参数**: + +| 参数 | 位置 | 类型 | 必填 | 默认值 | 约束 | 说明 | +| --- | --- | --- | --- | --- | --- | --- | +| `page` | Query | `Integer` | 否 | 1 | ≥1 | 页码 | +| `pageSize` | Query | `Integer` | 否 | 20 | 1~100 | 每页条数 | + +> `userId` 由 mp-service 从 token 中获取后透传给 order-service,前端不传。 + +**返回值** `Result>`: + +| 字段 | 类型 | 必有 | 说明 | +| --- | --- | --- | --- | +| `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) | + +**请求示例**: + +``` +GET /mp/order/travel-memory?page=1&pageSize=10 +``` + +**响应示例**(有数据): + +```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 + } + ], + "total": 1, + "page": 1, + "pageSize": 10 + } +} +``` + +**响应示例**(空数据): + +```json +{ + "code": 200, + "message": "操作成功", + "data": { + "records": [], + "total": 0, + "page": 1, + "pageSize": 10 + } +} +``` + +--- + +## 二、阶段 2 增量字段预告 + +当前响应 **不含** `rating`(1-5 星) 和 `reviewId`。评分数据存 user-service 的 `review` 表,order-service-v2 当前无 `ReviewFeignClient`,跨服务 Feign 拆到阶段 2。 + +阶段 2 上线后将**在 `MpTravelMemoryVO` 增量新增**以下字段,**不会破坏现有字段**: + +| 字段 | 类型 | 说明 | +| --- | --- | --- | +| `rating` | `Integer` | 评分(1-5),未评价为 null | +| `reviewId` | `Long` | 评价记录 ID,未评价为 null | + +--- + +## 三、mp-service BFF 层需同步新增 + +| 前端调用 | mp-service 转发到 | +| --- | --- | +| `GET /mp/order/travel-memory?page=&pageSize=` | `GET /internal/mp/order/travel-memory?userId={token.userId}&page=&pageSize=` | + +> mp-service 从用户 token 中提取 `userId`,作为查询参数透传给 order-service。 +> `page` / `pageSize` 直接透传,校验由下游 `PageParam` 负责。 + +--- + +## 四、数据库变更 + +**无**。所有字段均已存在 `order_info` 表。 + +--- + +## 五、错误码 + +HTTP 始终返回 200,错误码在 `Result.code` 中。 + +| code | 触发 | 说明 | +| --- | --- | --- | +| 200 | 正常 | 成功 | +| 400 | `page < 1` 或 `pageSize > 100` | 分页参数越界(`PageParam` 校验) | +| 401 | token 无效 | mp-service 网关层拦截 | + +--- + +## 六、关联 + +- Issue: [wx/HL#1002](https://git.1814.love:8443/wx/HL/issues/1002) +- PR: [wx/HL#1004](https://git.1814.love:8443/wx/HL/pulls/1004)(已合并到 dev)