---
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
