hl-api-changelog/changelogs-v2/2026-06/18_4018_出行人新增拦截未来出生日期-修改接口-管理后台.md

45 行
2.0 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 出行人新增(单加)拦截未来出生日期 — 修改接口 — 管理后台
> 变更类型:⚠️ 校验增强(新增 `@PastOrPresent` 守卫,未来出生日期被拒)
> 端类型:管理后台(订单 → 出行人 → 单个新增)
> 日期2026-06-18
> 服务hl-order-service-v3traveler 模块)
> PRhttps://git.1814.love:8443/wx/HL/pulls/4018 (每日定时代码审查发现,无关联工单)
---
## ⚠️ 关键说明
出行人类型(成人/儿童/小童/幼童)今日改为**后端按出生日期自动派生**#3981),不再由前端传 `travelerType`。此前**单个新增**路径 `birthday` 仅校验 `@NotNull`,未拦截「未来日期」——传一个未来出生日期会被静默派生成「幼童(BABY)」,与批量编辑路径(已显式抛 `581114 出生日期不能晚于今天`)口径不一。
本次给单加请求 `birthday``@PastOrPresent` 守卫对齐:**允许「今天」、只拒「未来」**。
**前端影响:**`POST /v3/admin/order/{id}/traveler` 时若 `birthday` 晚于今天,现返回 **400 参数校验失败**message`出生日期不能晚于今天`),不再静默落库为幼童。请前端日期选择器侧限制出生日期 ≤ 今天(与既有批量编辑校验一致)。
---
## 1. 受影响接口
**`POST /v3/admin/order/{id}/traveler`**(单个出行人新增,路径与出入参结构均不变)
请求体 `birthday` 字段校验规则变化:
| 字段 | 旧规则 | 新规则 |
|------|--------|--------|
| `birthday` | `@NotNull`(仅非空) | `@NotNull` + `@PastOrPresent`(非空且 ≤ 今天) |
### 反例(未来日期)请求
```json
POST /v3/admin/order/123456/traveler
{ "name": "测试", "birthday": "2099-01-01", "idType": "ID_CARD", "idNo": "..." }
```
响应400,Bean 校验失败):
```json
{ "code": 400, "message": "出生日期不能晚于今天", "data": null }
```
合法日期(今天及以前)行为不变。批量编辑路径 `PUT .../travelers/batch` 早已有等价拦截,本次仅补齐单加路径。