133 行
4.3 KiB
Markdown
133 行
4.3 KiB
Markdown
# 订单出行人 MP 端 CRUD 接口新增 — 2026-04-20
|
||
|
||
> **服务** hl-order-service-v2(端口 8094)· **类型** feat · **关联** Issue #1020 / PR #1022
|
||
> **前端调用路径**: 网关(8080) → hl-mp-service(8085) → hl-order-service-v2(8094)
|
||
> **前端实际请求前缀**: `/mp/order/{orderId}/traveler`(4 个接口)
|
||
|
||
---
|
||
|
||
## 一、能力概述
|
||
|
||
给小程序端补齐**订单出行人** CRUD 能力,对应原型 **L4xYN 乘坐人员勾选列表**、**Bf9jC 添加人员弹窗**。
|
||
|
||
| 原型节点 | 功能 | 主要接口 |
|
||
| --- | --- | --- |
|
||
| L4xYN pplList | 乘坐人员勾选列表 | `GET /mp/order/{orderId}/traveler` |
|
||
| Bf9jC | 添加人员弹窗 | `POST /mp/order/{orderId}/traveler` |
|
||
| Bf9jC(编辑) | 修改出行人 | `PUT /mp/order/{orderId}/traveler/{travelerId}` |
|
||
| Bf9jC(删除) | 删除出行人 | `DELETE /mp/order/{orderId}/traveler/{travelerId}` |
|
||
|
||
**注意区分两套"出行人"模型**:
|
||
|
||
| 维度 | 路径 | 说明 |
|
||
| --- | --- | --- |
|
||
| 用户常用出行人 | `/mp/user/traveler/*` | user-service 管,已有 |
|
||
| **订单出行人**(本次新增) | `/mp/order/{orderId}/traveler/*` | order-v2 的 `order_traveler` 表 |
|
||
|
||
---
|
||
|
||
## 二、接口清单
|
||
|
||
鉴权:user token(登录态)
|
||
|
||
| 方法 | 路径 | 用途 |
|
||
| --- | --- | --- |
|
||
| GET | `/mp/order/{orderId}/traveler` | 查某订单的出行人列表 |
|
||
| POST | `/mp/order/{orderId}/traveler` | 新增出行人到某订单 |
|
||
| PUT | `/mp/order/{orderId}/traveler/{travelerId}` | 修改出行人(字段为 null 保持原值不变) |
|
||
| DELETE | `/mp/order/{orderId}/traveler/{travelerId}` | 删除出行人 |
|
||
|
||
---
|
||
|
||
## 三、请求体(`MpOrderTravelerSaveReqVO`)
|
||
|
||
```jsonc
|
||
{
|
||
"name": "张三", // 必填,≤50 字
|
||
"idCardType": "ID_CARD", // 字典 id_card_type
|
||
"idCardNo": "110101199001011234", // 必填
|
||
"phone": "13800000000",
|
||
"gender": "1", // 1=男 2=女
|
||
"birthday": "1990-01-01",
|
||
"travelerType": "ADULT", // 默认 ADULT,字典 traveler_type
|
||
"nationality": "中国",
|
||
"emergencyContact": "李四",
|
||
"emergencyPhone": "13900000000",
|
||
"email": "zhangsan@example.com"
|
||
}
|
||
```
|
||
|
||
**字典取值**:
|
||
- `idCardType`: `ID_CARD` 身份证 / `PASSPORT` 护照 / `HK_MACAO_PASS` 港澳通行证 / `TAIWAN_PASS` 台湾通行证 / `OTHER` 其他
|
||
- `travelerType`: `ADULT` 成人 / `CHILD` 儿童 / `YOUNG_CHILD` 幼儿 / `BABY` 婴儿
|
||
|
||
**后端自动处理**:
|
||
- 身份证(18 位)自动解析 `birthday` + `gender`(前端可不传)
|
||
- 同订单证件号重复检查(重复抛业务错误)
|
||
|
||
---
|
||
|
||
## 四、响应体
|
||
|
||
### 列表 `GET` 响应
|
||
|
||
```jsonc
|
||
{
|
||
"code": 200,
|
||
"data": [
|
||
{
|
||
"travelerId": 10001, // Long,注:未强制 String(现有约定)
|
||
"name": "张三",
|
||
"travelerType": "ADULT",
|
||
"travelerTypeLabel":"成人",
|
||
"idCardType": "ID_CARD",
|
||
"idCardTypeLabel": "身份证",
|
||
"idCardNo": "110101199001011234",
|
||
"gender": "1",
|
||
"birthday": "1990-01-01",
|
||
"phone": "13800000000",
|
||
"nationality": "中国",
|
||
"emergencyContact": "李四",
|
||
"emergencyPhone": "13900000000",
|
||
"email": "zhangsan@example.com"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 新增/修改返回
|
||
|
||
返回单个对象(同列表元素结构)。
|
||
|
||
### 删除返回
|
||
|
||
```jsonc
|
||
{ "code": 200, "data": null }
|
||
```
|
||
|
||
### 约定
|
||
|
||
- 所有枚举字段都配 `xxxLabel` 中文标签
|
||
- 空数据返回 `[]`,不是 `null`
|
||
- 时间格式统一 `yyyy-MM-dd`(出生日期)/ `yyyy-MM-dd HH:mm:ss`(含时间字段)
|
||
|
||
---
|
||
|
||
## 五、前端接入建议
|
||
|
||
**L4xYN 乘坐人员勾选列表**:
|
||
1. 打开页面 → `GET /mp/order/{orderId}/traveler` 拉取订单已有出行人
|
||
2. 用户勾选 → 把 travelerId 传给**到达信息**接口的 `travelerIds` 字段
|
||
|
||
**Bf9jC 添加人员弹窗**:
|
||
1. 可选:先调 `GET /mp/user/traveler`(已有)让用户从常用库选一个 → 填到表单里
|
||
2. 用户补全/修改字段(含 OCR 扫描身份证填入,OCR 用小程序原生插件前端做)
|
||
3. 提交 `POST /mp/order/{orderId}/traveler`
|
||
|
||
---
|
||
|
||
## 六、关联
|
||
|
||
- Issue: [wx/HL#1020](https://git.1814.love:8443/wx/HL/issues/1020)
|
||
- PR: [wx/HL#1022](https://git.1814.love:8443/wx/HL/pulls/1022)(已合并到 dev)
|