hl-api-changelog/changelogs/2026-04/2026-04-19_cache-evict-all-admin-interfaces.md

2.7 KiB

refactor: 字典/配置/酒店/活动/景点/餐厅等管理端修改后小程序立即生效

服务: hl-user-service + hl-resource-service + hl-mp-service PR: #894 + #896 Issue: #892 + #893 日期: 2026-04-19 前端是否需要改动: 无需改动(后端行为修复,原调用继续工作且立即可见新数据)


一、背景

继 PR #891 修好轮播图缓存问题后,排查发现项目内还有 6 个 Service 存在相同反模式。本次批量修复让以下对外接口都支持"管理端修改立即生效"

  • /admin/dict/type/*/admin/dict/data/*/mp/dict/*
  • /admin/frontend-config/*/mp/config/*
  • /admin/hotel/*/mp/hotel/*
  • /admin/activity/*/mp/activity/*
  • /admin/scenic/*/mp/scenic/*
  • /admin/restaurant/*/mp/restaurant/*

前端可清理的历史 workaround

  • 保存后刷新页面 / 二次请求 / 延迟拉取
  • 本地"乐观更新"对应数据
  • "请稍后刷新"类 toast 提示

二、变更接口清单

# 接口组 变更类型 前端改动
1 /admin/dict/type/*/admin/dict/data/* CUD 行为修复:保存立即生效 无需
2 /mp/dict/* 缓存 TTL 30min → 5min 无需
3 /admin/frontend-config/* CUD 行为修复:保存立即生效 无需
4 /mp/config/* 缓存 TTL 30min → 5min 无需
5 /admin/hotel/*/admin/activity/*/admin/scenic/*/admin/restaurant/* CUD 及批量操作 行为修复:保存立即生效;原本批量操作漏清缓存的 bug 也修复 无需
6 /mp/hotel/*/mp/activity/*/mp/scenic/*/mp/restaurant/* 无变化TTL 已合理) 无需

请求/响应结构完全不变


三、修复说明

  1. 抽公共工具 CacheEvictAfterCommit,把缓存清理统一推迟到事务提交后
  2. 6 个 Service 所有写方法改用这个工具
  3. Dict/Config 过长的读端 TTL 从 30 分钟降到 5 分钟(兜底)
  4. 顺带修复 resource 4 个 Service 的 batchUpdateStatus/batchDelete 原本根本没清缓存的 bug

四、前端行动项

无需任何代码改动。可评估清理以下历史 workaround

可移除的 workaround 原因
字典列表保存后手动刷新 缓存立即失效
配置改完调 refresh() 二次拉取 同上
酒店/活动/景点/餐厅列表保存后 setTimeout 重拉 同上
"请稍后刷新"类 toast 可改为"保存成功"

五、测试环境已验证

改 banner title → MP /mp/banner/active 立即返回新值(同一 pattern,其他 Service 沿用)。