114 行
3.8 KiB
Markdown
114 行
3.8 KiB
Markdown
# 酒店分配接口 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` 字段设计不一致
|