hl-api-changelog/changelogs/2026-04/2026-04-20_mp-deposit-amount-auto-compute.md

1.8 KiB

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=DEPOSITdepositAmount=nulldepositRatio ∈ [1,100] 时: depositAmount = startPrice × depositRatio / 1002 位小数,HALF_UP
  • paymentType=FULLdepositAmount 始终 null
  • 管理端配了固定 depositAmount 时直接使用,不重算

档位级 tierPrices[].depositAmount(新字段)

MpProductDetailRespVO.TierPriceInfo 新增:

{
  "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

兼容

  • 非定金产品FULLdepositAmount 仍为 null
  • GROUP 类型(小蒙马):无 tierPrices,depositAmount 直接按 startPrice 计算
  • 管理端固定金额模式:不受影响