4.6 KiB
【前端待处理·管理后台】景区季节全量清空与标签同步(#5123)
目标前端
- 端类型:管理后台(Web)
- 目标仓库:
mmg/hl-ui - 目标分支:按前端仓库当前发布流程执行
- 后端工单:
wx/HL #5123 - 小程序:无需改页面,但必须参与接口与缓存回退验收
问题与根因
src/views/resource/scenic/SeasonDrawer.vue 的 handleSave() 目前只在
isSeasonConfigured(form) 为 true 时调用 PUT。已存在的季节被全部清空后,
该判断变为 false,前端既不发 PUT,也没有调用后端已有 DELETE,数据库旧记录仍在,
因此重新打开抽屉会回显旧内容,页签“已配置”和景区列表季节标签也不会消失。
后端同时修复了可空字段写入 null、季节素材引用解绑,以及管理后台/小程序相关缓存依赖失效。 前端不能继续用“不发请求”表达删除已存在季节。
接口契约
查询季节列表
GET /admin/scenic/spot/{scenicId}/seasons
保存仍有内容的季节
PUT /admin/scenic/spot/{scenicId}/season/{seasonType}
Content-Type: application/json
删除已全量清空的季节
DELETE /admin/scenic/spot/{scenicId}/season/{seasonType}
seasonType 取 spring、summer、autumn、winter。DELETE 无请求体,沿用现有管理后台鉴权。
前端改动要求
1. API 封装
在 src/api/scenic.js 新增并导出删除方法,例如:
export function deleteScenicSeason(scenicId, seasonType) {
return http.delete(`/scenic/spot/${scenicId}/season/${seasonType}`)
}
2. 记录初始已配置季节
SeasonDrawer.vue 每次打开并成功加载季节列表后,记录后端实际返回过的 seasonType 集合。
- 加载前清空该集合,避免切换景区时串数据。
- 只以后端列表是否存在记录作为“初始已配置”依据,不要用当前编辑中的
isSeasonConfigured()反推。 - 查询失败时不得把未知状态当成“从未配置”;应阻止保存或保留错误状态,避免误判删除。
3. 保存判定
遍历四季时按以下规则处理:
| 初始状态 | 当前表单 | 请求 |
|---|---|---|
| 不存在 | 全空 | 不请求 |
| 不存在 | 有内容 | PUT |
| 已存在 | 有内容 | PUT |
| 已存在 | 全空 | DELETE |
所有文本字段都按 trim() 后判断是否为空;素材按有效 id 判断,空壳对象不能让季节继续显示为已配置。
同一次保存中任一季节请求失败时,不得关闭抽屉或显示“全部保存成功”;应保留编辑内容并明确提示失败季节。 全部请求成功后重新 GET 季节列表,再触发父级景区列表刷新,确保以下状态以服务端结果收敛:
- 当前抽屉内容不再回显已删除季节。
- 对应页签“已配置”标记消失。
- 景区列表对应季节标签消失。
- 其他季节和景区基础信息不变。
小程序链路说明
小程序产品详情会经 product-service 和 resource-service 读取季节亮点及季节媒体。
后端已为实时产品详情、订单快照、mp-service 产品聚合和景区详情缓存补齐
table:scenic_season / table:scenic_spot 依赖。
季节删除后,小程序不得继续显示旧 seasonHighlights、封面、轮播图或视频;未命中季节时应回退景区本体媒体和节点快照描述。前端管理后台无需主动清小程序 Redis,也不得新增清缓存接口。
验收清单
- 仅配置描述和亮点的季节,两项全部清空并保存后,重新打开不再回显。
- 对应页签“已配置”标记消失。
- 保存成功并刷新景区列表后,对应季节标签消失。
- 保留其他内容时,可单独清空描述、亮点、封面、轮播图和视频。
- 清空一个季节不影响其他季节及景区基础信息。
- 从未配置且仍为空的季节不发 PUT 或 DELETE。
- 查询季节列表失败时不会误发 DELETE。
- 部分请求失败时抽屉保留,且不会提示全部成功。
- 小程序产品详情不再返回已删除季节的亮点或媒体。
- 小程序在季节未命中时正确回退景区本体媒体和节点快照描述。
发布说明
- 本文是前端修复与联调通知,不代表已修改或发布
mmg/hl-ui。 - 前端完成后须创建并指派自身工单,走分支、PR、测试和发布流程,并关联
wx/HL #5123。 - 测试环境验收必须通过网关使用真实管理员鉴权完成 PUT、DELETE、GET 回读;记录不得包含 token、Cookie 或真实隐私数据。