From 772ca420f2bed9702d6fa47a29883823f0656132 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 30 Mar 2026 12:55:34 +0800 Subject: [PATCH] =?UTF-8?q?bug:=20=E5=89=8D=E7=AB=AF=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=BC=A0=E7=B4=A0=E6=9D=90URL=E8=80=8C?= =?UTF-8?q?=E9=9D=9E=E7=B4=A0=E6=9D=90ID=EF=BC=8C=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E5=B0=81=E9=9D=A2=E5=9B=BE=E4=B8=8D=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- .../30_1130_frontend_material_id_bug.md | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 changelogs/2026-03/30_1130_frontend_material_id_bug.md diff --git a/changelogs/2026-03/30_1130_frontend_material_id_bug.md b/changelogs/2026-03/30_1130_frontend_material_id_bug.md new file mode 100644 index 0000000..6666301 --- /dev/null +++ b/changelogs/2026-03/30_1130_frontend_material_id_bug.md @@ -0,0 +1,48 @@ +# 🐛 前端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 → 封面图不保存 +- `bannerMaterialIds`:URL字符串直接存入数据库 → 详情页无法通过素材服务解析出URL → 图片靠前端直接用URL显示,但后端素材引用关系断裂 + +## 修复方向 + +前端素材选择组件(MaterialSelect)返回值应该是**素材ID**,提交表单时传ID数组,而不是URL数组。 + +后端接口定义: +``` +coverMaterialId: String // 素材ID,如 "2036285563975241730" +bannerMaterialIds: List // 素材ID数组 +videoMaterialIds: List // 素材ID数组 +``` + +可参考 Knife4j 文档:`https://api.1814.love/doc.html` + +## 后端已完成的修复 + +- `banner_material_ids` / `video_material_ids` 列类型从 `varchar(512)` 改为 `TEXT`(所有资源表) +- `star_level` 从 `tinyint` 改为 `varchar(32)` +- 所有 `parseLongSafe` 容错(不再500,但数据存不进去)