@@ -0,0 +1,52 @@
|
||||
# 小程序住宿详情 - 房型封面图 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 即可。
|
||||
在新工单中引用
屏蔽一个用户