hl-api-changelog/changelogs/2026-04/2026-04-21_order-v2_hotel-assignment-day-number.md

3.8 KiB

酒店分配接口 date → dayNumber — 2026-04-21

服务 hl-order-service-v2端口 8094· 类型 refactor · 关联 Issue #1049 / PR #1051 破坏性变更:请求入参字段名由 date 改为 dayNumber


一、影响接口

✏️ PUT /admin/order/{orderId}/hotel-assignment — 分配酒店(管理端)

请求参数变更:每个 assignments[] 元素的「日期字段」从 dateLocalDate)改为 dayNumberInteger,第几天,从 1 开始)。

变更对比

旧字段 新字段 类型 必填 说明
date dayNumber Integer 第几天(从 1 开始,≥1

其他字段保持不变familyIndex · hotelId · hotelName · roomTypeId · roomType · upgradePrice · remark

新请求示例

PUT /admin/order/700001/hotel-assignment
{
  "assignments": [
    {
      "familyIndex": 1,
      "hotelId": 2023714929877450753,
      "hotelName": "呼伦贝尔香格里拉大酒店",
      "roomTypeId": 3002000000000000013,
      "roomType": "大床房",
      "dayNumber": 1,
      "remark": ""
    },
    {
      "familyIndex": 1,
      "hotelId": 2023714929877450753,
      "hotelName": "呼伦贝尔香格里拉大酒店",
      "roomTypeId": 3002000000000000013,
      "roomType": "大床房",
      "dayNumber": 2
    }
  ]
}

⚠️ 真实入住日期由后端按 order.departureDate + dayNumber - 1 现算,前端传递时不再需要知道订单出发日期


✏️ GET /admin/order/{orderId}/hotel-assignment — 查询酒店分配列表(管理端)

返回值字段变更:新增 dayNumber 字段;assignmentDate 字段保留Service 层按 order.departureDate + dayNumber - 1 现算填充,前端展示逻辑无需改)。

HotelAssignmentDetailVO 字段

字段 类型 说明
assignmentId Long 分配ID
orderId Long 订单ID
familyIndex Integer 家庭序号从1开始
hotelId Long 酒店ID
hotelName String 酒店名称
roomTypeId Long 房型ID
roomType String 房型名称
dayNumber Integer 新增第几天从1开始
assignmentDate LocalDate 入住日期(后端现算,保留)
upgradePrice BigDecimal 手动覆盖升级差价
remark String 备注

✏️ GET /mp/order/{orderId}/hotels — C 端订单住宿弹窗

MpHotelItemVO 同步新增 dayNumber 字段;assignmentDate 保留(后端现算)。


二、数据库变更

已在测试服执行(本 changelog 生成时):

ALTER TABLE order_hotel_assignment
    ADD COLUMN day_number INT NOT NULL COMMENT '第几天(从1开始,与meal/scenic assignment一致)' AFTER room_type;
ALTER TABLE order_hotel_assignment DROP COLUMN assignment_date;

历史数据按 DATEDIFF(assignment_date, order.departure_date) + 1 回填。

生产部署顺序必须 先跑迁移 SQL 再重启服务,否则老代码写入会因 assignment_date 列缺失而失败。


三、错误码

HTTP 始终返回 200,错误码在 Result.code 中。

code 触发 说明
200 正常 成功
400 dayNumber 缺失 第几天不能为空
400 dayNumber < 1 第几天必须大于等于1

四、关联

  • Issue: wx/HL#1049
  • PR: wx/HL#1051(已合并到 dev
  • 前置原因:原 assignment_date 在订单出发日变更时需要级联更新,且与 order_meal_assignment / order_scenic_assignmentday_number 字段设计不一致