# 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 ```json POST /admin/product/item/123/schedule { "batchName": "五一特别团", "departureDate": "2026-05-01", "adultPrice": 5160, "childPrice": 4580 } // 响应(之前是 "数据操作违反约束,请检查输入",歧义) { "code": 400, "message": "最大参与人数不能为空", "success": false } ``` ### 正常请求 ```json 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 兜底代码保留作为双保险,但实际不会再走到