2.7 KiB
2.7 KiB
【小程序·前端待办】小蒙马(GROUP)下单放开「必须有儿童/小童」限制,允许纯成人下单
类型: 前端待办(hl-mini 小程序) - 业务规则放开 仓库: hl-mini(v1 分支,C 端小程序) 日期: 2026-06-01 背景: wx 反馈——小蒙马下单时「只有成人、没有儿童」也应能下单;现状是没有非成人(儿童/小童)就被拦,无法下单。 后端: 已支持纯成人下单,无需改后端(依据见下)。
一、需求
小蒙马(GROUP / 团队产品)下单,允许只有成人、不带任何儿童/小童/幼童也能正常下单。当前前端在确认下单时强制「至少 1 名儿童或小童」,需放开。
二、前端拦截点(要改的地方)
packages/product/_shared/components/booking-popup/booking-popup.js → onConfirm() 内:
// 约 758-761 行 —— 这段是唯一的硬拦截,删除即可
if (isGroupProduct && (childCount + youngChildCount) < 1) {
wx.showToast({ title: '至少需要1名儿童或小童', icon: 'none' });
return;
}
- 改法:删掉上面这个
if块。保留上方adultCount < 1 → '至少需要1名成人'的校验(成人仍是必须的)。 - 删除后,小蒙马即可纯成人下单(成人 ≥1、儿童/小童/幼童均可为 0)。
可选(体验,非阻塞)
同文件约 274 行,小蒙马儿童 stepper 默认起始值为 1(isGroupProduct ? 1 : ...)。这只是默认值,用户本就能手动减到 0(line 279-280 已把 min 设为 0),不影响纯成人下单。是否把默认值也改为 0 由前端按交互习惯决定,与本次放开无强依赖。
三、后端为什么不用改(依据)
后端全链路已支持纯成人,逐处确认:
| 位置 | 结论 |
|---|---|
MpOrderSaveReqVO / AdminOrderSaveReqVO(下单请求) |
adultCount @Min(1),childCount/youngChildCount/babyCount 无下限、默认可为 0/null |
GroupTourBatchService.getGroupQuote(团报价) |
纯成人时 childTotal/toddlerTotal/infantTotal = 0,grandTotal 正常,不依赖非成人 |
GroupOrderStrategy.validate(下单校验) |
只校验班期状态/报名截止/出发日期/房间库存,无人群结构校验 |
OrderCreateService.calcTotalPeople |
null-safe,纯成人 totalPeople = 成人数 > 0,正常扣减库存 |
PricingRuleHelper.singleRoomSurcharge |
单房差只看 adultCount(奇数成人),与是否有儿童无关 |
即:前端删掉那段校验后,纯成人下单会被后端正常受理、报价、扣库存。
四、验证建议(前端改完自测)
小蒙马产品 → 选报名中班期 → 成人 2、儿童/小童/幼童全 0 → 应能正常进入支付/确认页,不再弹「至少需要1名儿童或小童」。