- 新增 GET /admin/order/{orderId}/itinerary/summary 聚合接口(PR #1064)
- 修复 GET /admin/order/{orderId} 的 hotelAssignmentDetails[].assignmentDate 现算(PR #1064)
- PUT /admin/order/{orderId}/vehicle-assignment 请求 body 删除 vehicleCount(PR #1054)
5.3 KiB
管理端行程安排聚合接口 + 订单详情房间日期补全 — 2026-04-21
服务 hl-order-service-v2(端口 8094)· 类型 feat + fix · 关联 PR #1064 使用场景:管理端订单详情 · 行程安排 Tab · 查看场景一次性加载 前端调用路径:网关(8080) → hl-order-service-v2(8094)
一、新增聚合接口
🆕 GET /admin/order/{orderId}/itinerary/summary — 行程安排聚合
功能:一次返回【行程安排】Tab 所需的 房间 / 车辆 / 交通 三段数据,替代前端分别调用
/hotel-assignment、/vehicle-assignment、/arrival 的三次并发请求。
原三个接口保留不动,编辑场景仍各自调用;查看场景推荐走此聚合接口。
请求参数:
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
orderId |
Path | Long |
✅ | 订单ID |
返回值 Result<OrderItineraryRespVO>:
| 字段 | 类型 | 说明 |
|---|---|---|
orderId |
Long |
订单ID |
hotelAssignments |
List<HotelAssignmentDetailVO> |
房间安排列表(字段同 GET /hotel-assignment,含 assignmentDate 现算值) |
vehicleAssignments |
List<VehicleAssignmentVO> |
车辆安排列表(字段同 GET /vehicle-assignment,司机电话脱敏) |
transports |
ArrivalListRespVO |
交通信息(字段同 GET /arrival,按 ARRIVAL/DEPARTURE 分组) |
💡
transports是 VO 包对象而非扁平 List,内部按到达/离开方向拆成arrivals/departures两个子列表,结构与GET /arrival一致,保留方向分组语义。
transports 子结构:
| 字段 | 类型 | 说明 |
|---|---|---|
orderId |
Long |
订单ID |
arrivals |
List<ArrivalPlanRespVO> |
到达批次(direction=ARRIVAL) |
departures |
List<ArrivalPlanRespVO> |
离开批次(direction=DEPARTURE) |
响应示例:
{
"code": 200,
"data": {
"orderId": 700001,
"hotelAssignments": [
{
"assignmentId": 800001,
"orderId": 700001,
"familyIndex": 1,
"hotelId": 500001,
"hotelName": "香格里拉",
"roomTypeId": 500101,
"roomType": "大床房",
"dayNumber": 1,
"assignmentDate": "2026-07-01",
"upgradePrice": null,
"remark": null
}
],
"vehicleAssignments": [
{
"assignmentId": 900001,
"orderId": 700001,
"vehicleType": "丰田普拉多",
"vehicleCount": 1,
"plateNumber": "蒙A·A1234",
"driverName": "李师傅",
"driverPhone": "138****1234",
"remark": null,
"createTime": "2026-04-20 10:00:00"
}
],
"transports": {
"orderId": 700001,
"arrivals": [
{
"planId": 800001,
"orderId": 700001,
"direction": "ARRIVAL",
"directionLabel": "到达",
"transportType": "FLIGHT",
"transportTypeLabel": "飞机",
"transportNo": "CZ6255"
}
],
"departures": []
}
}
}
💡 三段子项都带主键:
hotelAssignments[].assignmentId/vehicleAssignments[].assignmentId/transports.arrivals[].planId,从查看态进入编辑态的路径完全通畅。
二、现有接口字段修复
🐛 GET /admin/order/{orderId} — 订单详情
修复:hotelAssignmentDetails[].assignmentDate 之前返回 null(由于字段存储方式改为 dayNumber),现已由后端按 order.departureDate + dayNumber - 1 现算填充。
前端若此前已降级为展示 - 或基于 dayNumber 自行计算日期,可在本次迭代后恢复直接读取 assignmentDate。其他字段保持不变。
三、与已有接口关系
| 接口 | 作用 | 状态 |
|---|---|---|
GET /admin/order/{orderId}/hotel-assignment |
查酒店分配 | 已有(未变,仍可单独调) |
GET /admin/order/{orderId}/vehicle-assignment |
查车辆分配 | 已有(未变,仍可单独调) |
GET /admin/order/{orderId}/arrival |
查到达批次(按方向分组) | 已有(未变,仍可单独调) |
GET /admin/order/{orderId}/itinerary/summary |
一次返回上述三段 | 本期新增 |
聚合接口与三个独立接口并存:
- 查看态:推荐走
/itinerary/summary,一次请求拿全。 - 编辑态:仍各自调子接口,减少无关数据传输。
四、数据库变更
无。纯服务层聚合,数据源均是既有表。
五、错误码
HTTP 始终返回 200,错误码在 Result.code 中。
| code | 触发 | 说明 |
|---|---|---|
| 200 | 正常 | 成功(无分配数据返回空列表/空子对象) |
| 400 | 订单不存在 | BusinessException |
六、关联
- PR: wx/HL#1064(已合并到 dev)
- 相关接口:
GET /admin/order/{orderId}/hotel-assignment·GET /admin/order/{orderId}/vehicle-assignment— 见2026-04-20_order-v2_admin-assignment-get.mdGET /admin/order/{orderId}/arrival— 见2026-04-20_order-v2_arrival.md(C 端,管理端字段结构一致)PUT /admin/order/{orderId}/hotel-assignmentdate → dayNumber破坏性变更 — 见2026-04-21_order-v2_hotel-assignment-day-number.md