fix(mp-quote): /mp/product/{id}/quote 单房差 singleRoomDiff 按需返回(仅成人=1) — 通知前端 (#3190)

这个提交包含在:
API Changelog Bot 2026-05-28 15:41:42 +08:00
父节点 8262aa7385
当前提交 8564cdab91

查看文件

@ -0,0 +1,42 @@
# 【前端】小程序报价 /mp/product/{id}/quote: 单房差 singleRoomDiff 改为按需返回
> **类型**: 后端接口契约调整(fix,后端已改并部署测试服验证通过)
> **服务**: hl-product-service-v2
> **日期**: 2026-05-28
> **影响范围**: 小程序「产品报价」`POST /mp/product/{id}/quote` 返回体的 `singleRoomDiff` 字段
> **归属**: 后端已修(PR #3190 → dev,#3191 同步 dev-v3),本条同步契约变化给前端(mmg)
> **状态**: 已部署测试服并验证通过,前端可直接联调
---
## 一、问题
`/mp/product/{id}/quote` 之前**不论几个成人,`singleRoomDiff` 都返回配置值**(如 500),导致小程序在 2 人及以上时也展示单房差。
业务规则:**单房差只在「成人=1」(单人成行)时收取**。该规则是后端硬编码(`PricingRuleHelper`,触发条件不可配置;可配置的只是单房差金额)。价格本身(`grandTotal`)一直是对的,只有展示字段 `singleRoomDiff` 没对齐。
## 二、改动(后端已完成)
`singleRoomDiff` 现在**仅在本次实际收取(成人=1)时返回配置值,其余人数返回 `null`**:
| 字段 | 调整前 | 调整后 |
|------|--------|--------|
| `singleRoomDiff` | 永远返回配置值(如 500) | 成人=1 → 返回 500;成人≠1 → **null** |
| `singleRoomSurcharge` | 本次实际加价(成人=1 为值,否则 0) | 不变 |
| `grandTotal` | 已正确(仅成人=1 含单房差) | 不变 |
> 仅作用于 C端 `/mp/product/{id}/quote`;admin / 内部 Feign / 订单侧不变。
## 三、前端建议
- 单房差展示直接按 `singleRoomDiff != null` 判断即可(成人≠1 时为 null,不展示)。
- 如需「实际加价金额」用于价格明细,以 `singleRoomSurcharge` 为准(成人≠1 恒为 0)。
## 四、测试服实测(产品 2045345825172639746,单房差配置=500,日期 2026-05-28)
| 请求 | singleRoomDiff | singleRoomSurcharge | grandTotal |
|------|----------------|---------------------|------------|
| 成人=2 | **null** | 0 | 6.0 |
| 成人=1 | 500.0 | 500.0 | 503.0 |
| 成人=1 + 儿童=1 | 500.0 | 500.0 | 506.0 |
| 成人=3 | **null** | 0 | 9.0 |