hl-api-changelog/changelogs/2026-04/2026-04-19_mp-product-support-custom.md

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