# 小程序住宿详情 - 房型封面图 null 问题修复

- **日期**: 2026-04-18
- **PR**: [#825](https://git.1814.love:8443/wx/HL/pulls/825) (Closes #824)
- **类型**: BUG FIX
- **状态**: 已合并到 dev + 测试环境部署中

---

## 影响接口

- `GET /mp/hotel/{hotelId}` (C 端住宿详情)

## 现象

调用住宿详情返回的 `roomTypes` 数组中，**每个房型的 `coverUrl` 都是 null**（其他字段正常）。

```json
{
  "code": 200,
  "data": {
    "hotelId": "2023714929877450753",
    "roomTypes": [
      {
        "roomTypeId": "...",
        "name": "豪华大床房",
        "coverUrl": null,    // 错误：应为 https://.../cover.jpg
        "bannerUrls": [],    // 错误：应为图片 URL 数组
        "videoUrl": null     // 错误：应为视频 URL
      }
    ]
  }
}
```

## 根因（仅供参考，前端无需关注）

`RoomTypeService.listRoomTypes` 手动补救 `coverUrl` 时用 String 类型的 `coverMaterialId` 去查 `Map<Long, String>`，Java `HashMap.get` 不做类型转换导致永远返回 null。`banner/video` 的 materialId 同样未纳入批量查询。

## 修复后行为

- `roomTypes[i].coverUrl`：有封面素材时返回 https CDN URL
- `roomTypes[i].bannerUrls`：有横幅素材时返回 URL 数组（无素材的条目已 filter）
- `roomTypes[i].videoUrl`：有视频素材时返回 URL

## 前端 Action

**无需改代码**。后端修复后直接生效。

## 回归验证

测试环境部署完成后，调用 `GET /mp/hotel/{任一已上架酒店ID}` 检查 `roomTypes[0].coverUrl` 非 null 即可。
