1.8 KiB
1.8 KiB
🐛 前端BUG — 资源编辑传素材URL而非素材ID
日期: 2026-03-30 11:30 类型: 前端BUG 紧急程度: 高(正式环境所有资源编辑受影响)
问题现象
- 封面图上传后不显示:保存成功但重新打开编辑页封面图为空
- 横幅图超过4张报500(已通过后端改字段类型修复,但数据格式仍不对)
根因
前端在提交资源编辑(酒店/景区/活动/餐厅等)时,媒体素材字段传的是 OSS URL 而不是素材ID(数字)。
具体表现
| 字段 | 应该传 | 实际传 |
|---|---|---|
coverMaterialId |
"2036285563975241730" |
"https://hlgl-test.oss-cn-beijing.aliyuncs.com/prod/material/xxx.jpg" |
bannerMaterialIds |
["2036285563975241730", "2036285563975241731"] |
["https://...xxx.jpg", "https://...yyy.jpg"] |
videoMaterialIds |
同上 | 同上 |
后果
coverMaterialId:后端parseLongSafe解析URL失败返回null → 封面图不保存bannerMaterialIds:URL字符串直接存入数据库 → 详情页无法通过素材服务解析出URL → 图片靠前端直接用URL显示,但后端素材引用关系断裂
修复方向
前端素材选择组件(MaterialSelect)返回值应该是素材ID,提交表单时传ID数组,而不是URL数组。
后端接口定义:
coverMaterialId: String // 素材ID,如 "2036285563975241730"
bannerMaterialIds: List<String> // 素材ID数组
videoMaterialIds: List<String> // 素材ID数组
可参考 Knife4j 文档:https://api.1814.love/doc.html
后端已完成的修复
banner_material_ids/video_material_ids列类型从varchar(512)改为TEXT(所有资源表)star_level从tinyint改为varchar(32)- 所有
parseLongSafe容错(不再500,但数据存不进去)