2.8 KiB
2.8 KiB
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/空集。