fix(mp): PR#1894 到达/返程批次校验错误文案修正

620001/620002 message 按 direction 动态拼词,
到达信息不再误显"返程信息"。
这个提交包含在:
yaosutu 2026-05-08 17:46:17 +08:00
父节点 fdc1e70931
当前提交 417e635ddf

查看文件

@ -0,0 +1,152 @@
# 🐛 错误文案修复:到达/返程批次校验提示不再混淆
**更新时间**: 2026-05-08 17:45
**PR**: #1894 / Issue #1893
**服务**: hl-mp-service (端口 8085)
---
## 变了什么(前端视角)
`POST /mp/order/{orderId}/arrival/batch` 提交到达信息(`direction=ARRIVAL`)时,
若某批次 `travelerIds` 为空,原来错误 toast 错误地显示「**返程**信息」。
本次修复让 message 文案与实际 direction 一致。**错误码 code 不变620001 / 620002**,
只是 message 字符串更准确——前端只要是直接 toast 展示后端 message 的写法无需任何改动。
### 文案对照表
| 场景 | 旧文案 | 新文案 |
|------|--------|--------|
| body 空(`null``[]` | 请添加至少一批**返程**信息 | 请添加至少一批**批次** |
| `direction=ARRIVAL`,第 N 批 travelerIds 空 | 第 N 批**返程**信息:请选择至少一位乘坐人员 | 第 N 批**到达**:请选择至少一位乘坐人员 |
| `direction=DEPARTURE`,第 N 批 travelerIds 空 | 第 N 批**返程**信息:请选择至少一位乘坐人员 | 第 N 批**返程**:请选择至少一位乘坐人员(行为不变,字符串更简洁) |
| direction 缺失 / 未知值,第 N 批 travelerIds 空 | 第 N 批**返程**信息:请选择至少一位乘坐人员 | 第 N 批**批次**:请选择至少一位乘坐人员(兜底) |
---
## 前端要改的地方
**正常情况(直接 toast 后端 message**:无需改动。
**需要检查的情况**:如果前端代码对错误 message 做了**字符串匹配/包含判断**(例如用来走不同分支逻辑),请检查并更新:
- 若有类似 `if (msg.includes('返程信息'))` 的判断 → 原匹配「请添加至少一批返程信息」或「第 N 批返程信息」的逻辑**可能失效**,需改为不依赖具体文本,或更新匹配目标
- 若有类似 `msg === '请添加至少一批返程信息'` 的精确匹配 → 必须更新
常规弹 toast 代码无需任何修改。
---
## 涉及的接口
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|---|------|------|------|----------|------|
| 1 | 全量替换批次信息 | POST | `/mp/order/{orderId}/arrival/batch` | 🐛 错误文案修复 | 仅 message 文案变更,code / 请求体 / 响应结构零变化 |
---
## 接口详细定义
### POST `/mp/order/{orderId}/arrival/batch` — 全量替换批次信息
- **使用场景**:小程序「填写到达/返程信息」页,用户点击「确认提交」
- **路径参数**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| orderId | Long | 是 | 订单 ID |
- **请求参数Query**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| direction | String | 是 | `ARRIVAL`(到达)/ `DEPARTURE`(返程) |
- **请求体JSON Array**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| transportType | String | 是 | 交通方式:`SELF_DRIVE` / `FLIGHT` / `TRAIN` |
| travelerIds | Array\<Long\> | 是 | 出行人 ID 列表,不能为空数组 |
| flightNumber | String | 否 | 航班号transportType=FLIGHT 时填写) |
| trainNumber | String | 否 | 车次号transportType=TRAIN 时填写) |
| arrivalTime | String | 否 | 到达/出发时间,格式 `yyyy-MM-dd HH:mm` |
- **请求示例(到达,两批)**
```json
[
{
"transportType": "FLIGHT",
"travelerIds": [1001, 1002],
"flightNumber": "MU5100",
"arrivalTime": "2026-06-01 14:30"
},
{
"transportType": "TRAIN",
"travelerIds": [1003],
"trainNumber": "G1234",
"arrivalTime": "2026-06-01 18:00"
}
]
```
- **响应(成功)**
```json
{
"code": 200,
"msg": "success",
"data": null
}
```
- **响应(失败示例)**
```json
{
"code": 620002,
"msg": "第 1 批到达:请选择至少一位乘坐人员",
"data": null
}
```
---
## 错误码 / 校验规则
| Code | 触发条件 | direction=ARRIVAL message | direction=DEPARTURE message |
|------|----------|---------------------------|-----------------------------|
| `620001` | body 为 null 或空数组 | 请添加至少一批批次 | 请添加至少一批批次 |
| `620002` | 第 N 批 `travelerIds` 为 null 或空数组 | 第 N 批到达:请选择至少一位乘坐人员 | 第 N 批返程:请选择至少一位乘坐人员 |
> 说明620001 在 body 空时拿不到 direction,统一用「批次」兜底词;620002 按请求中的 direction 动态拼词。
### 边界行为
| 输入 | 结果 |
|------|------|
| body=null | 620001 |
| body=[] | 620001 |
| body=[{travelerIds:null}],direction=ARRIVAL | 620002 "第 1 批到达:请选择至少一位乘坐人员" |
| body=[{travelerIds:[]}],direction=DEPARTURE | 620002 "第 1 批返程:请选择至少一位乘坐人员" |
| body=[{travelerIds:[1001]}, {travelerIds:[]}],direction=ARRIVAL | 620002 "第 2 批到达:请选择至少一位乘坐人员" |
| body=[{travelerIds:[1001]}, {travelerIds:[1002]}] | 200,走 Feign 正常处理 |
---
## 兼容性说明
- **向后兼容**:是。请求结构(字段名/类型/必填)零变化
- **错误码 code**不变620001 / 620002
- **是否需要数据迁移**:否
- **是否需要重启服务**:是(见下方)
---
## 补充说明
本次修复是 PR #1830(错误友好化)的文案准确性 follow-up,不引入新的接口或字段。
前次 changelog 见 `07_fix_mp_arrival_batch_validation_friendly.md`,两个 PR 相互独立可分别部署。