06 fix: agency afterCommit 桥接 mp 缓存反向失效 (PR HL#1764)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
这个提交包含在:
父节点
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
|
||||||
正在加载...
x
在新工单中引用
屏蔽一个用户