# 酒店分配接口 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` **新请求示例**: ```json 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 生成时): ```sql 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](https://git.1814.love:8443/wx/HL/issues/1049) - PR: [wx/HL#1051](https://git.1814.love:8443/wx/HL/pulls/1051)(已合并到 dev) - 前置原因:原 `assignment_date` 在订单出发日变更时需要级联更新,且与 `order_meal_assignment` / `order_scenic_assignment` 的 `day_number` 字段设计不一致