diff --git a/changelogs/2026-05/08_fix_resource_roomtype_disable_dimension.md b/changelogs/2026-05/08_fix_resource_roomtype_disable_dimension.md new file mode 100644 index 0000000..cbea70f --- /dev/null +++ b/changelogs/2026-05/08_fix_resource_roomtype_disable_dimension.md @@ -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