hl-api-changelog/changelogs/2026-03/30_1130_frontend_material_id_bug.md
API Changelog Bot 772ca420f2 bug: 前端资源编辑传素材URL而非素材ID,导致封面图不保存
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:55:34 +08:00

1.8 KiB

🐛 前端BUG — 资源编辑传素材URL而非素材ID

日期: 2026-03-30 11:30 类型: 前端BUG 紧急程度: 高(正式环境所有资源编辑受影响)


问题现象

  1. 封面图上传后不显示:保存成功但重新打开编辑页封面图为空
  2. 横幅图超过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 → 封面图不保存
  • bannerMaterialIdsURL字符串直接存入数据库 → 详情页无法通过素材服务解析出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_leveltinyint 改为 varchar(32)
  • 所有 parseLongSafe 容错不再500,但数据存不进去