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 即可。
|