From 6ca34676850384bc39edfa17dc6111a362778392 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Tue, 12 May 2026 15:48:07 +0800 Subject: [PATCH] 12_feat resource icon_svg + node emojiIcon default copy (PR HL#2100) --- ...urce_icon_svg_default_to_node_emojiIcon.md | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 changelogs/2026-05/12_feat_admin_resource_icon_svg_default_to_node_emojiIcon.md diff --git a/changelogs/2026-05/12_feat_admin_resource_icon_svg_default_to_node_emojiIcon.md b/changelogs/2026-05/12_feat_admin_resource_icon_svg_default_to_node_emojiIcon.md new file mode 100644 index 0000000..2ad6ca0 --- /dev/null +++ b/changelogs/2026-05/12_feat_admin_resource_icon_svg_default_to_node_emojiIcon.md @@ -0,0 +1,109 @@ +# 后端 feat 通知 — 资源 3 类加回 icon_svg, 节点选资源时默认带到 emojiIcon + +**日期**: 2026-05-12 +**类型**: 后端新增功能 (PR #2100) +**模块**: 资源服务 (景区/游玩项目/服务) + 产品行程节点 +**通知**: @mmg +**前端是否需改动**: **需要** — 资源管理 3 个编辑弹窗加"上传 SVG 图标"入口 +**严重性**: P2 + +--- + +## 背景 + +前端反馈 PR #2091 后, 资源管理弹窗里**没法维护"图标"**。之前删 iconSvg 时把资源端的也一起删了过头, 但资源端实际没有可复用的图标字段 (cover_material_id 是大封面图, 语义不同)。 + +本次给资源 3 表加回 `icon_svg TEXT` 字段, 用户在资源管理页能上传 SVG 图标。节点选资源时, 后端自动把资源 iconSvg 复制到节点 emojiIcon (与 PR #2096 highlights→description 同样的"默认值, 可改不回写"机制)。 + +--- + +## API 变化 + +### 资源 admin CRUD 接口 (3 类) + +**景区** `/admin/scenic/spot` POST/PUT/GET, **游玩项目** `/admin/activity/...`, **服务** `/admin/service-item/...`: + +**请求体新增字段** (可选): +```json +{ + "iconSvg": "" +} +``` + +**响应体新增字段**: +```json +{ + "iconSvg": "" +} +``` + +ListVO 也包含 iconSvg, 前端列表可以快速预览图标。 + +### 资源端内部 Feign + +`GET /internal/mp/resource/batch-details` 返回 `ResourceDetailDTO` **新增 iconSvg 字段** (字段顺序: description → highlights → iconSvg → cover)。 + +### 产品节点保存接口 + +`PUT /admin/product/item/{id}/itinerary` 节点保存时: +- 节点不传 `emojiIcon` + 选了资源 (resourceId 非空) + 资源 iconSvg 非空 → **后端自动用资源 iconSvg 填到 node.emojiIcon** +- 节点显式传 emojiIcon → 不被覆盖 +- 之后修改资源 iconSvg 不影响已存在的节点 (节点 emojiIcon 是独立快照, 不回写资源) + +### 产品/MP 节点查询接口 + +`GET /admin/product/item/{id}` + 等 MP 接口: `node.emojiIcon` 字段结构不变, 但可能比之前更常有 SVG 字符串内容 (自动带的)。 + +--- + +## 前端 mmg 行动项 + +### 1. 资源管理 3 个编辑弹窗加图标上传 (景区/游玩项目/服务) + +建议位置: 编辑弹窗的「媒体素材」tab 里, 紧挨"封面图"上传组件下方加一个"小图标"上传组件: +- 接受 .svg 文件或直接粘贴 SVG XML +- 后端字段名: `iconSvg` +- 限制: TEXT 列, 一般 SVG 大小都不超过 64KB 完全够 + +### 2. 节点 emojiIcon 渲染逻辑增强 (可选) + +之前 emojiIcon 存的是 lucide 名 (如 "map-pin"), 现在可能是 SVG XML 字符串。前端渲染逻辑建议: +```js +if (emojiIcon?.startsWith("