文件
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[] 元素的「日期字段」从 date(LocalDate)改为 dayNumber(Integer,第几天,从 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_assignment 的 day_number 字段设计不一致