From 770d439780cff04f41ef70eefb61ee7f9ae6c289 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 22 Apr 2026 18:43:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=87=BA=E8=A1=8C=E4=BA=BA=E6=8E=A5=E5=8F=A3=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=20travelerType=20=E5=85=A5=E5=8F=82,=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=8C=89=E5=AD=97=E5=85=B8=E5=AE=9E=E6=97=B6=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E4=B8=94=E4=B8=8D=E8=90=BD=E5=BA=93=20(HL=20#1197)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 小程序「常用出行人」页新增/编辑接口请求体不再传 travelerType, 后端按 birthday + 字典 traveler_type_age_rule 实时算并返回,DB 列不再写入。 响应字段不变。下单路径 MpOrderTravelerSaveReqVO 未涉及。 --- ...26-04-22_mp-traveler-type-auto-computed.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 changelogs/2026-04/2026-04-22_mp-traveler-type-auto-computed.md diff --git a/changelogs/2026-04/2026-04-22_mp-traveler-type-auto-computed.md b/changelogs/2026-04/2026-04-22_mp-traveler-type-auto-computed.md new file mode 100644 index 0000000..dd9469e --- /dev/null +++ b/changelogs/2026-04/2026-04-22_mp-traveler-type-auto-computed.md @@ -0,0 +1,86 @@ +--- +date: 2026-04-22 +type: change +scope: mp-traveler +pr: "#1197" +issue: "#1196" +breaking: false +consumers: [mp-miniprogram] +--- + +# 小程序新增/编辑出行人接口移除 `travelerType` 入参,后端按字典实时计算 + +## 摘要 + +`POST /mp/user/traveler` 与 `PUT /mp/user/traveler/{id}` 的请求体**不再接收 `travelerType` 字段**。出行人类型(ADULT/CHILD/YOUNG_CHILD/BABY)由后端依据 `birthday` + 字典 `traveler_type_age_rule` **实时计算**,且**不落库**——字典规则后续调整时历史数据口径会自动跟随,无须数据迁移。 + +## 前端需要做什么 + +### 1. 新增 / 编辑出行人 + +- **删除请求体里的 `travelerType` 字段**。即使偷传也会被后端忽略(字段已从 DTO 删除,JSON 反序列化静默丢弃)。 +- `birthday` 仍可选;不传则后端兜底 `ADULT`。 + +**之前**: + +```json +POST /mp/user/traveler +{ + "name": "张三", + "travelerType": "CHILD", // ← 删掉 + "birthday": "2020-05-01", + "idCardType": "PASSPORT", + "idCardNo": "E12345678" +} +``` + +**之后**: + +```json +POST /mp/user/traveler +{ + "name": "张三", + "birthday": "2020-05-01", + "idCardType": "PASSPORT", + "idCardNo": "E12345678" +} +``` + +### 2. 响应字段不变 + +`travelerType` 仍出现在所有响应 VO(POST/PUT/GET/GET list)里,值由后端按 birthday + 字典实时算: + +```json +{ + "code": 200, + "data": { + "travelerId": 2046901540208214018, + "name": "张三", + "birthday": "2020-05-01", + "travelerType": "CHILD", // 实时计算 + ... + } +} +``` + +## 年龄分段规则(来自字典 `traveler_type_age_rule`) + +| 类型 | 年龄范围(含下限不含上限) | +|---|---| +| BABY | 0 ≤ age < 2 | +| YOUNG_CHILD | 2 ≤ age < 5 | +| CHILD | 5 ≤ age < 12 | +| ADULT | 12 ≤ age | +| 无 birthday | → ADULT(兜底) | + +> 规则由管理端「字典管理 → traveler_type_age_rule」配置,后端缓存到 Redis `cache:dict:data:traveler_type_age_rule`,改动后自动生效。 + +## 兼容性 + +- **非 breaking**:旧前端仍带 `travelerType` 不会报错,字段被静默忽略。 +- 下单路径 `MpOrderTravelerSaveReqVO` **暂不涉及**(仍接受 `travelerType`),只改「常用出行人」页的 `MpTravelerRequest`。 + +## 相关 + +- 后端 PR: https://git.1814.love:8443/wx/HL/pulls/1197 +- 工单: https://git.1814.love:8443/wx/HL/issues/1196