PR #861: ScheduleSaveReqVO/ScheduleBatchCreateReqVO 加 @NotNull 错误消息从模糊的 '违反约束' 改为明确的 '最大参与人数不能为空'
1.6 KiB
1.6 KiB
班期保存 - 最大参与人数 强制必填校验
日期: 2026-04-18 PR: #861 → 合并到 dev 影响端: 管理后台 Web (hl-ui-admin) 影响接口:
POST /admin/product/item/{id}/schedule(Step4 创建班期)PUT /admin/product/item/{id}/schedule(Step4 修改班期)POST /admin/product/item/{id}/schedule/batch-create(Step4 班期批量创建)
背景
测试反馈:保存班期时填了价格、班期名、出发日,没填最大参与人数,后端报错"数据操作违反约束,请检查输入"——容易让运营误以为是价格问题。
根因是 ScheduleSaveReqVO.maxParticipants 缺 @NotNull 校验,NULL 直接打到 SQL(group_tour_batch.max_participants 是 NOT NULL 列),DB 抛异常被全局兜底为模糊消息。
行为变化
| 场景 | 修复前 | 修复后 |
|---|---|---|
maxParticipants 不传或传 null |
{"code":400,"message":"数据操作违反约束,请检查输入"} |
{"code":400,"message":"最大参与人数不能为空"} |
maxParticipants 传具体数字 |
200 入库 | 200 入库(无变化) |
前端建议
maxParticipants 字段在表单上加 required + 数字校验,避免提交空值再被后端打回。文档中 ApiModelProperty(required=true) 一直存在,本次只是把 runtime 校验补齐。
ScheduleBatchCreateReqVO(批量创建)同步加了 @NotNull,前端表单一致处理。
不影响
- 字段名、字段类型、字段语义不变
- 其他字段校验规则不变
- 业务流程(Step4 班期生命周期)不变
🤖 Generated with Claude Code