文件
hl-api-changelog/changelogs-v2/2026-09/26_8387_下线订单房间分配三口-删除接口-管理后台.md
T
Mimingguang bcfe323b60
changelog-filename-gate / validate (push) Failing after 1s
docs(changelog): 回写 #8385~#8390 前端 not_required(6 条 grep 实证零改动)
88caa74 房务接口审计批次:#8385 订房计划守卫/#8386 住宿驳回加门+删车务口/#8387 旧房间分配三口下线/#8388 回执认领校验+读门/#8389 家庭维度写口下线/#8390 16 读端点补门+菜单撤授。前端按钮后端字段驱动+错误码拦截器透 message+被删端点零调用/入口仅房务角色页,6 条均 not_required;#8387/#8389 后端已标,余 4 条翻 not_required,owner/ref 留空,status_note 引号内追充实证。
2026-09-27 09:55:25 +08:00

347 行
11 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
---
schema: "hl-changelog/v2"
ticket: "8387"
title: "订单房间分配:下线旧版三接口 GET/POST/PUT /v3/admin/order/{id}/room"
consumer: "admin"
author: "wx(GIT)"
change_type: "删除接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "not_required"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: ""
status_note: "订单侧旧版房间分配三个端点(GET list、POST add、PUT edit)已下线。API-SPEC 已标旧版,房务配房走 house 域 §2.5 接口。hl-ui 零调用。前端实证(mmg 2026-09-27):被删三口零调用(仅 /order/{id}/room-info/check-diff 不同路径),not_required 复核确认。"
updated_at: "2026-09-26"
base: "dev-v3"
---
# order-v3:下线订单房间分配旧版接口(管理后台)
**服务**: hl-order-service-v3
**PR**: #8398
**Issue**: #8387
---
## ⚠️ 关键变化
三个接口已删除,路由不存在:
- `GET /v3/admin/order/{id}/room`:查询订单房间分配列表(旧版)
- `POST /v3/admin/order/{id}/room`:新增房间分配(旧版)
- `PUT /v3/admin/order/{id}/room/{roomAssignmentId}`:编辑房间分配(旧版)
调用返回 HTTP 200 + `code: 404`(不是 HTTP 404)。房务配房改用 house 域接口:新增/清空配房走 `POST/DELETE /v3/admin/order/hotel-requirements/{requirementId}/assignments` 等 API-SPEC-HOUSE §2.2~§2.4c 写口;查询订单房间用 `GET /v3/admin/order/orders/{orderId}/rooms`(§2.5)。
---
## 一、背景
订单侧房间分配(`order_room_assignment` 表)是房务配房的补充记录,实现早于 house 域统一接口。API-SPEC §8 已标为"旧版",注释指向 house 域 §2.5 为正式接口。
hl-ui 全部远程 ref 无调用;房务页面已改用 house 域配房端点。后台读写入口全删,仅保留 internal bundle 读——house 域 `RoomAssignmentVO` 与 hl-mp-service 的 C 端聚合仍需 `order_room_assignment` 表数据,故表与内部读逻辑保留,仅删对外读写接口。
---
## 二、变更接口清单
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|---|------|------|------|----------|------|
| 1 | 查询房间分配列表(旧) | GET | `/v3/admin/order/{id}/room` | 删除 | 路由已删,任何调用返回 404 |
| 2 | 新增房间分配(旧) | POST | `/v3/admin/order/{id}/room` | 删除 | 路由已删,返回 404 |
| 3 | 编辑房间分配(旧) | PUT | `/v3/admin/order/{id}/room/{roomAssignmentId}` | 删除 | 路由已删,返回 404 |
房务配房改用 house 域接口(API-SPEC-HOUSE):提交配房 `POST /v3/admin/order/hotel-requirements/{requirementId}/assignments`(§2.2)、清空配房 `DELETE .../assignments`(§2.4b/§2.4c)、按天确认 `POST .../assignments/days/{dayNumber}/confirm`(§2.3)、调整入住 `PUT .../assignments/{id}/placement`(§2.3b);查询订单房间用 `GET /v3/admin/order/orders/{orderId}/rooms`(§2.5)。
---
## 三、接口详情
### 1. 房间分配查询 `GET /v3/admin/order/{id}/room`
**VO**: `已删除`
**状态**:已删除。路由不存在,返回 404。
#### 使用场景
该接口已删除。
#### 入参字段表
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|------|------|------|------|------|------|
| — | — | — | — | — | 已删除 |
#### 出参字段表
| 字段 | 类型 | 说明 |
|------|------|------|
| — | — | 已删除 |
#### 请求示例
```http
GET /v3/admin/order/770145/room HTTP/1.1
Host: api.test.1814.love:9443
Authorization: Bearer <admin token>
```
#### 响应示例
HTTP 状态码 **200**(非 404),业务错误码 404:
```json
{
"code": 404,
"message": "接口不存在: GET /v3/admin/order/770145/room",
"success": false,
"data": null
}
```
#### 空数据 / 降级响应
不适用。前端应只判 `code`,不依赖 HTTP 状态码。
#### 错误响应
```json
{
"code": 404,
"message": "接口不存在: GET /v3/admin/order/770145/room",
"success": false,
"data": null
}
```
#### 业务边界
- 接口已删除,路由不存在;调用返回 HTTP 200 + `code: 404`。
- 阳性对照:同 Controller 下 `GET /v3/admin/order/{id}` 正常返回 200,证明是该路由本身被删,不是订单不存在。
- `order_room_assignment` 表数据仍可由服务内部通过 `internal/order/orders/{orderId}/assignments` 读取(该 internal 端点经网关直接拒绝「接口不可访问」,只服务间可达,不对前端暴露)。
---
### 2. 房间分配新增 `POST /v3/admin/order/{id}/room`
**VO**: `已删除`
**状态**:已删除。路由不存在,返回 404。
#### 使用场景
该接口已删除。
#### 入参字段表
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|------|------|------|------|------|------|
| — | — | — | — | — | 已删除 |
#### 出参字段表
| 字段 | 类型 | 说明 |
|------|------|------|
| — | — | 已删除 |
#### 请求示例
```http
POST /v3/admin/order/770145/room HTTP/1.1
Host: api.test.1814.love:9443
Authorization: Bearer <admin token>
Content-Type: application/json
{}
```
#### 响应示例
HTTP 状态码 **200**(非 404),业务错误码 404:
```json
{
"code": 404,
"message": "接口不存在: POST /v3/admin/order/770145/room",
"success": false,
"data": null
}
```
#### 空数据 / 降级响应
不适用。前端应只判 `code`,不依赖 HTTP 状态码。
#### 错误响应
```json
{
"code": 404,
"message": "接口不存在: POST /v3/admin/order/770145/room",
"success": false,
"data": null
}
```
#### 业务边界
- 路由已删除;调用返回 HTTP 200 + `code: 404`。
- 新增房间分配改走 house 域 `POST /v3/admin/order/hotel-requirements/{requirementId}/assignments`(API-SPEC-HOUSE §2.2)。
---
### 3. 房间分配编辑 `PUT /v3/admin/order/{id}/room/{roomAssignmentId}`
**VO**: `已删除`
**状态**:已删除。路由不存在,返回 404。
#### 使用场景
该接口已删除。
#### 入参字段表
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|------|------|------|------|------|------|
| — | — | — | — | — | 已删除 |
#### 出参字段表
| 字段 | 类型 | 说明 |
|------|------|------|
| — | — | 已删除 |
#### 请求示例
```http
PUT /v3/admin/order/770145/room/123456 HTTP/1.1
Host: api.test.1814.love:9443
Authorization: Bearer <admin token>
Content-Type: application/json
{}
```
#### 响应示例
HTTP 状态码 **200**(非 404),业务错误码 404:
```json
{
"code": 404,
"message": "接口不存在: PUT /v3/admin/order/770145/room/123456",
"success": false,
"data": null
}
```
#### 空数据 / 降级响应
不适用。前端应只判 `code`,不依赖 HTTP 状态码。
#### 错误响应
```json
{
"code": 404,
"message": "接口不存在: PUT /v3/admin/order/770145/room/123456",
"success": false,
"data": null
}
```
#### 业务边界
- 路由已删除;调用返回 HTTP 200 + `code: 404`。
- 编辑房间分配改走 house 域 `PUT /v3/admin/order/hotel-requirements/{requirementId}/assignments/{id}/placement`(API-SPEC-HOUSE §2.3b)。
---
## 四、契约约束与正确调用方式
| 场景 | 改前 | 改后 |
|------|------|------|
| 查看订单的房间 | `GET /v3/admin/order/{orderId}/room` | 调用返回 HTTP 200 + code 404;改用 `GET /v3/admin/order/orders/{orderId}/rooms`(API-SPEC-HOUSE §2.5) |
| 新增房间 | `POST /v3/admin/order/{orderId}/room` | 路由已删,不可用;改用 `POST /v3/admin/order/hotel-requirements/{requirementId}/assignments`(§2.2) |
| 修改房间 | `PUT /v3/admin/order/{orderId}/room/{id}` | 路由已删,不可用;改用 `PUT /v3/admin/order/hotel-requirements/{requirementId}/assignments/{id}/placement`(§2.3b) |
C 端房型统计(`GET /mp/order/{orderId}/hotels`)的 `roomTypeStats` 仍从 `order_room_assignment` 表经 internal bundle(hl-mp-service `MpServiceDetailAggregationService`)汇聚,对外无变化。internal 端点仅服务间可达,网关对前端直接拒绝「接口不可访问」。
---
## 五、数据库行为
无变更、无 Flyway。表 `order_room_assignment` 保留;存量数据由 internal bundle 继续读取。
---
## 六、边界行为
| 场景 | 行为 |
|---|---|
| 调用 GET /order/{id}/room | 返回 HTTP 200 + code 404 |
| 调用 POST /order/{id}/room | 返回 HTTP 200 + code 404 |
| 调用 PUT /order/{id}/room/{roomAssignmentId} | 返回 HTTP 200 + code 404 |
| 前端经网关调用 `GET /v3/internal/order/orders/{orderId}/assignments` | 网关直接拒绝,返回「接口不可访问」(设计如此,非前端可用入口) |
| 调用 `GET /mp/order/{orderId}/hotels` | 返回 200,roomTypeStats 从 `order_room_assignment` 经 internal bundle 读 |
## 六.6、修改前后对比
| 维度 | 改前 | 改后 |
|------|------|------|
| 房间分配 GET | 路由存在,可查询 | 路由删除,返回 HTTP 200 + code 404 |
| 房间分配 POST | 路由存在,可新增 | 路由删除,返回 HTTP 200 + code 404 |
| 房间分配 PUT | 路由存在,可编辑 | 路由删除,返回 HTTP 200 + code 404 |
## 六.7、影响评估
- **兼容性**:hl-ui 零调用这三个端点,无迁移负担。C 端房型统计无变化(经 internal bundle)。
- **数据影响**:零;表与 API 读逻辑保留。
- **其它服务**:hl-mp-service 无直接调用;fleet 无影响。
---
## 七、不影响范围
- House 域房间分配接口(§2.5 GET/POST/DELETE):无改动。
- Internal bundle (`GET /v3/internal/order/orders/{orderId}/assignments`):保留,继续供 hl-mp-service 读。
- `order_room_assignment` 表:保留;级联软删仍在各写口生效。
- `RoomAssignmentVO` 与 `toRoomVO`:保留(bundle 在用)。
- 网关配置:无改动。
---
## 八、测试环境已验证
部署:测试环境 order-v3 `1f65d7894`(含 e2313790b)。网关 `api.test.1814.love:9443`。
| # | 场景 | 实测结果 |
|---|---|---|
| 1 | `GET /v3/admin/order/{id}/room` | HTTP 200 + code 404「接口不存在: …」 |
| 2 | `POST /v3/admin/order/{id}/room` | HTTP 200 + code 404「接口不存在: …」 |
| 3 | `PUT /v3/admin/order/{id}/room/{roomAssignmentId}` | HTTP 200 + code 404「接口不存在: …」 |
| 4 | 阳性对照:同 Controller `GET /v3/admin/order/{id}` | 200(证明是路由被删,不是订单不存在) |
| 5 | 服务内部端口直连读 `order_room_assignment`(internal bundle) | 读数与只读 SQL 一致(经网关 internal 不可达,这是设计) |
调用来源:测试网关 nginx 日志窗口内旧 `room` 三路径共 71 次,全部是脚本(Python-urllib / curl / 空 UA),零浏览器 UA。
---
## 十、相关文档
- Issue:https://git.1814.love/wx/HL/issues/8387
- PR:https://git.1814.love/wx/HL/pulls/8398
- 替代接口:写房间分配走 API-SPEC-HOUSE §2.5 的配房接口(`POST /v3/admin/order/hotel-requirements/{requirementId}/assignments` 等);读订单房间用 `GET /v3/admin/order/orders/{orderId}/rooms`
- API-SPEC:§8「房间分配」与 §11 错误码表已标下线
---
## 关联 / 联系人
### 联系人
- **后端负责人**: @wx