hl-api-changelog/changelogs/2026-04/2026-04-19_schedule-max-participants-required.md
API Changelog Bot 553d14e034 feat: 2026-04-19 小蒙马班期 maxParticipants 必填 + 早鸟一产品一计划约束
- 2026-04-19_schedule-max-participants-required.md (PR #927 / Issue #859)
- 2026-04-19_early-bird-plan-product-unique.md (PR #929 / Issue #917)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 05:27:34 +08:00

2.2 KiB

fix: 小蒙马班期保存 maxParticipants 改为必填字段

服务: hl-product-service-v2 PR: #927 Issue: #859 日期: 2026-04-19 前端是否需要改动: 需要改动(之前允许不传或传 null,现在必须显式传数字;0=不限)


一、背景

测试环境反馈前端保存班期时缺传 maxParticipants 会收到模糊的"违反约束"报错,用户无法分辨是哪个字段出问题。

后端之前 ScheduleSaveReqVO.maxParticipants 只用 @ApiModelProperty(required=true) 做了文档标记,Bean Validation 层未强制校验,结果 null 一路打到 SQL 层才报错。

二、变更接口

方法 路径 变更类型
POST /admin/product/item/{id}/schedule 请求体字段校验收紧
POST /admin/product/item/{id}/schedule/batch-create 同上

三、字段约束变化

字段 之前 现在 允许值
maxParticipants 可不传 / null后端兜底 0 必传 0=不限;>0=上限人数

四、错误响应示例

缺传 maxParticipants

POST /admin/product/item/123/schedule
{
  "batchName": "五一特别团",
  "departureDate": "2026-05-01",
  "adultPrice": 5160,
  "childPrice": 4580
}

// 响应(之前是 "数据操作违反约束,请检查输入",歧义)
{
  "code": 400,
  "message": "最大参与人数不能为空",
  "success": false
}

正常请求

POST /admin/product/item/123/schedule
{
  "batchName": "五一特别团",
  "departureDate": "2026-05-01",
  "adultPrice": 5160,
  "childPrice": 4580,
  "maxParticipants": 30,    // 必填
  "maxRooms": 15            // 可选,默认取行程最少房间数
}

五、前端改动建议

  1. 班期创建/编辑表单maxParticipants 输入框加前端必填校验,避免到后端才被拦下
  2. 批量创建表单:同上
  3. 提示文案:如果字段空值,提示"最大参与人数不能为空,0 表示不限人数"

六、兼容性

  • 前端原本填写 0 或具体数字的调用方不受影响
  • 前端如有"不填=不限"的历史 UX,需改成"显式填 0=不限"
  • 后端 Service 层 null→0 兜底代码保留作为双保险,但实际不会再走到