06 fix: agency afterCommit 桥接 mp 缓存反向失效 (PR HL#1764)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot 2026-05-06 21:30:37 +08:00
父节点 ce3c5e29b1
当前提交 490465f9ec

查看文件

@ -0,0 +1,56 @@
# 修复 agency 写动作未桥接 mp 缓存反向失效 (#1758 follow-up)
**类型**: BUG 修复(后端单点 / 缓存一致性)
**前端处理者**: mmg(无前端动作)
**日期**: 2026-05-06
**关联**: PR #1764 (#1758 follow-up of PR #1760)
---
## 现象
PR #1760 修复了 `/mp/common/merchant-qualifications` 漏过滤 visible 字段的 BUG, 但部署后 round-trip 发现:
- DB 真值 `hulai-wenlu` visible=0, status=ENABLED
- mp 接口仍返回 3 家公司(包含 hulai-wenlu)
## 根因
`TravelAgencyServiceImpl.afterCommitAuditAndCacheBust` 注释明确「跨服务缓存失效由后续 PR 处理」, 实际只清了本地 Caffeine, **从未调 `DependencyAwareCacheManager.invalidateSource`**
PR #1707 引入 agency 模块以来, admin update/create/delete agency 后:
- 本地 Caffeine 立刻清
- mp service 的 `@MpCache(deps={"table:travel_agency", "table:travel_agency_qualification"})` 在 redis 反向索引上从未被失效
- mp 端 1800s TTL 内永远拿旧数据
## 修复
参照 `ProductHelperService` / `ActivityService` 同模式:
```java
private final DependencyAwareCacheManager depsManager;
private static final String SRC_TRAVEL_AGENCY = "table:travel_agency";
private static final String SRC_TRAVEL_AGENCY_QUALIFICATION = "table:travel_agency_qualification";
// afterCommit 内追加
try {
depsManager.invalidateSources(SRC_TRAVEL_AGENCY, SRC_TRAVEL_AGENCY_QUALIFICATION);
} catch (Exception e) {
log.warn("...");
}
```
## 验证
测试服 round-trip 双向:
- visible=0 后立即 GET mp → 返回 2 家(hulai, qianshou,无 hulai-wenlu) ✓
- visible=1 还原后立即 GET mp → 返回 3 家(全部) ✓
- 缓存即时生效, 不等 1800s TTL ✓
## 前端无需改动
接口 URL/响应结构无变化, 仅缓存一致性修复, mmg 无需任何动作。
## 影响范围
- agency 主表 6 个写动作(create/update/disable/enable/delete/setPrimary)经同一 afterCommit 触发,本 PR 一次性桥接全部
- agency 子表 service (qualifications/payments) 写动作未在本 PR 范围 - 后续 follow-up