fix: 房型禁用校验维度修正 ROOM_TYPE (PR #1846, Closes wx/HL#1842)

实测证明同酒店 2 RoomType 提示产品数不同(2 vs 1), ROOM_TYPE 维度精确生效。
前端 API 行为无变化,业务码 ROOM_TYPE_DISABLE_IN_USE (310206) 不变。
这个提交包含在:
API Changelog Bot 2026-05-08 09:04:22 +08:00
父节点 b7e9e754b8
当前提交 0cde478342

查看文件

@ -0,0 +1,60 @@
---
date: 2026-05-08
type: backend-fix
module: hl-resource-service/hotel
priority: medium
notify: ["@mmg"]
status: tested-passed
restart_service: hl-resource-service
gitea_pr: 1846
gitea_issue: [1842]
---
# 房型禁用校验维度修复(ROOM_TYPE 而不是 HOTEL)
## 现象
用户禁用一个房型时,即使该房型本身没被任何产品引用,只要同酒店其他房型被引用就会被拦截,提示"该资源正被以下上架产品使用..."。
## 根因
PR #1815 引入 `RoomTypeService.submitRoomTypeApproval` 禁用校验时,因 product 侧 endpoint 当时不支持 ROOM_TYPE 维度,临时用 HOTEL 维度兜底:
```java
// 改前
referenceCheckHelper.throwIfInUse("HOTEL", rt.getHotelId(), HotelErrorCode.ROOM_TYPE_DISABLE_IN_USE);
```
PR #1838 实现 endpoint + ROOM_TYPE 路由后,本 PR 把维度修正回:
```java
// 改后
referenceCheckHelper.throwIfInUse("ROOM_TYPE", roomTypeId, HotelErrorCode.ROOM_TYPE_DISABLE_IN_USE);
```
## 前端可见变化
**API 路径/响应格式无变化**,业务码仍是 `ROOM_TYPE_DISABLE_IN_USE` (310206)。前端无需任何改动。
精确度提升:
- 改前:酒店 H 任一房型被引用,禁用 H 下任何房型都被拦
- 改后:只有该房型本身被引用才被拦,提示的产品名也只列引用了该房型的产品
## 测试服 round-trip 实测(同酒店 2 房型)
```
酒店: 呼伦贝尔香格里拉大酒店(2023714929877450753)
- RoomType 大床房 (3002000000000000013): 提示 2 个产品(测试定制wx-01、呼伦贝尔草原深度定制·3天2晚家庭私享团)
- RoomType 普通标间 (2023727403196502017): 提示 1 个产品(冻干粉发短信给)
```
两个 RoomType 引用产品数不同 → 证明 ROOM_TYPE 维度精确(若是 HOTEL 维度两次响应会一致)。
## 重启服务
测试服已部署:`hl-resource-service`(PR #1846 合 dev → deploy panel)。
## 关联
- Closes wx/HL #1842
- PR #1815 / PR #1838 / PR #1841 follow-up