hl-api-changelog/changelogs/2026-04/2026-04-21_order-v2_admin-itinerary-summary.md
yaosutu 68c8d61f39 changelog(order-v2): 管理端行程安排接口变更(聚合接口新增 + vehicleCount 下线)
- 新增 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)
2026-04-21 15:38:48 +08:00

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.md
    • GET /admin/order/{orderId}/arrival — 见 2026-04-20_order-v2_arrival.mdC 端,管理端字段结构一致)
    • PUT /admin/order/{orderId}/hotel-assignment date → dayNumber 破坏性变更 — 见 2026-04-21_order-v2_hotel-assignment-day-number.md