53 行
1.6 KiB
Markdown
53 行
1.6 KiB
Markdown
# 小程序住宿详情 - 房型封面图 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 即可。
|