父节点
49b404fea5
当前提交
4dc3542758
@ -0,0 +1,69 @@
|
||||
# fix(product-v2): /mp/product/{id} 支持定制产品(CUSTOM)
|
||||
|
||||
> **服务**: hl-product-service-v2
|
||||
> **PR**: #900
|
||||
> **Issue**: #898
|
||||
> **日期**: 2026-04-19
|
||||
> **前端是否需要改动**: **无需改动**(后端行为修复,前端原调用方式继续有效)
|
||||
|
||||
---
|
||||
|
||||
## 一、背景
|
||||
|
||||
前端小程序调 `GET /mp/product/{id}` 查询定制产品详情时一直返回 `code=404 "产品不存在或已下架"`。例如 `GET /mp/product/2043696016590327809`(定制产品"7天6晚草原VIP私定")。
|
||||
|
||||
**根因(后端侧)**:原接口硬校验 `status=PUBLISHED`,但定制产品(`productType=CUSTOM`)的状态流转是 `DRAFT → COMPLETED → ORDERED`,根本不经过 PUBLISHED。
|
||||
|
||||
**前端感知**:定制产品详情页进不去、白屏、或者前端做过类似"CUSTOM 改调 `/mp/custom/product/{id}`"的 workaround。
|
||||
|
||||
---
|
||||
|
||||
## 二、变更接口
|
||||
|
||||
| # | 接口 | 方法 | 路径 | 变更类型 | 前端改动 |
|
||||
|---|------|------|------|---------|---------|
|
||||
| 1 | 小程序产品详情 | GET | `/mp/product/{id}` | **行为修复**:CUSTOM 产品不再 404,返回完整详情 | 无需 |
|
||||
| 2 | 定制产品专属详情 | GET | `/mp/custom/product/{id}` | 无变化 | 无需 |
|
||||
|
||||
**请求/响应结构完全不变**,仅扩大了状态白名单。
|
||||
|
||||
---
|
||||
|
||||
## 三、状态可见性矩阵(修复后)
|
||||
|
||||
| productType | status | `/mp/product/{id}` 返回 |
|
||||
|-------------|--------|------------------------|
|
||||
| CORE / GROUP | DRAFT / PENDING_REVIEW / COMPLETED | 404 |
|
||||
| CORE / GROUP | PUBLISHED | 200 完整详情 |
|
||||
| **CUSTOM** | DRAFT / PENDING_REVIEW | 404 |
|
||||
| **CUSTOM** | **COMPLETED / ORDERED** | **200 完整详情(本次修复)** |
|
||||
|
||||
---
|
||||
|
||||
## 四、前端行动项
|
||||
|
||||
**无需任何代码改动**。可评估清理以下历史 workaround:
|
||||
|
||||
| 可移除的 workaround | 原因 |
|
||||
|--------------------|------|
|
||||
| 根据 productType 分发调用 `/mp/product/{id}` 或 `/mp/custom/product/{id}` | 现在 `/mp/product/{id}` 统一支持所有 productType |
|
||||
| CUSTOM 产品详情页特殊 catch 404 显示"产品不存在"文案 | 后端已正确返回 |
|
||||
| 任何针对"定制产品详情不可用"的 UI 兜底 | 不再必要 |
|
||||
|
||||
**保留**:`/mp/custom/product/{id}` 仍是定制产品的专属入口(带 refund policies enrich 等特化逻辑),适合"已完成定制"详情场景继续用。
|
||||
|
||||
---
|
||||
|
||||
## 五、测试环境已验证
|
||||
|
||||
```
|
||||
GET /mp/product/2043696016590327809 (CUSTOM + COMPLETED) → 200 "7天6晚草原VIP私定" ✓
|
||||
GET /mp/product/2045424500610125825 (CORE + PUBLISHED) → 200 "E2E-核心版本-V1" ✓
|
||||
GET /mp/product/2045486260364996609 (任意 + DRAFT) → 404 ✓
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、响应字段
|
||||
|
||||
与原 `MpProductDetailRespVO` 完全一致,不新增/删除/改名任何字段。CUSTOM 产品组装时,无相关数据的子表字段(如班期、价格日历)自然为 null/空集。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户