diff --git a/changelogs/2026-04/2026-04-20_mp-deposit-amount-auto-compute.md b/changelogs/2026-04/2026-04-20_mp-deposit-amount-auto-compute.md new file mode 100644 index 0000000..4cb70e0 --- /dev/null +++ b/changelogs/2026-04/2026-04-20_mp-deposit-amount-auto-compute.md @@ -0,0 +1,50 @@ +# mp 产品详情新增 depositAmount 自动计算(含档位级) + +**日期**: 2026-04-20 +**服务**: hl-product-service-v2 +**PR**: #996 + +## 背景 +`GET /mp/product/{id}` 在 `paymentType=DEPOSIT, depositRatio=10` 时返回 `depositAmount=null`。因为管理端的 ratio/amount 互斥(配比例会清空固定金额),mp 端此前直接透传 null,小程序需要定金的具体金额来展示"定金 ¥xxx"和点亮预订按钮。 + +## 后端新行为 + +### 产品级 `depositAmount` +- `paymentType=DEPOSIT` 且 `depositAmount=null` 且 `depositRatio ∈ [1,100]` 时: + `depositAmount = startPrice × depositRatio / 100`(2 位小数,HALF_UP) +- `paymentType=FULL` → `depositAmount` 始终 null +- 管理端配了固定 `depositAmount` 时直接使用,不重算 + +### 档位级 `tierPrices[].depositAmount`(新字段) +`MpProductDetailRespVO.TierPriceInfo` 新增: +```json +{ + "tierSeq": 1, + "tierName": "轻奢", + "tierDescription": "自由之旅", + "startPrice": 4105, + "depositAmount": 410.5 // 新增 +} +``` +各档按本档 `startPrice × ratio / 100` 独立计算;管理端配固定金额时各档统一取该金额。 + +## 验证(测试环境产品 2045345825172639746) +``` +paymentType: DEPOSIT +depositRatio: 10 +depositAmount: 410.5 (= 4105 × 10%) +startPrice: 4105 +tierPrices: + - tierSeq=1 startPrice=4105 depositAmount=410.5 + - tierSeq=2 startPrice=4865 depositAmount=486.5 +``` + +## 前端建议 +- 展示产品总体定金:直接用 `data.depositAmount` +- 选中某档位时:用 `tierPrices[i].depositAmount` +- 判断定金模式:`data.paymentType === 'DEPOSIT' && data.depositAmount != null` + +## 兼容 +- 非定金产品(FULL):depositAmount 仍为 null +- GROUP 类型(小蒙马):无 tierPrices,depositAmount 直接按 startPrice 计算 +- 管理端固定金额模式:不受影响