hl-api-changelog/changelogs/2026-06/01_frontend_mengma_allow_adult_only_booking.md

2.7 KiB

【小程序·前端待办】小蒙马(GROUP)下单放开「必须有儿童/小童」限制,允许纯成人下单

类型: 前端待办(hl-mini 小程序) - 业务规则放开 仓库: hl-mini(v1 分支,C 端小程序) 日期: 2026-06-01 背景: wx 反馈——小蒙马下单时「只有成人、没有儿童」也应能下单;现状是没有非成人(儿童/小童)就被拦,无法下单。 后端: 已支持纯成人下单,无需改后端(依据见下)。


一、需求

小蒙马(GROUP / 团队产品)下单,允许只有成人、不带任何儿童/小童/幼童也能正常下单。当前前端在确认下单时强制「至少 1 名儿童或小童」,需放开。

二、前端拦截点(要改的地方)

packages/product/_shared/components/booking-popup/booking-popup.jsonConfirm() 内:

// 约 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名儿童或小童」。