# 🐛 前端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<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，但数据存不进去）
