f2b6ca2834
问题:RegionServiceImpl.importRegion 是唯一没有 @Transactional 的导入板块, 循环内吞掉异常后正常 return,已落库行直接提交。且 cacheChanged 标志导致 「先清缓存、再提交事务」:循环内已有行 submit 成功 → 后面行失败 → 方法 正常返回 → 惰性树缓存被清/重算成失败批次的中间状态,库回滚后缓存脏掉。 改动: - 服务层:补 @Transactional(rollbackFor = Exception.class);错误收集完后 抛 ImportFailureException(org.springblade.common.excel)触发整批回滚。 - 缓存语义重构:submit 拆出 clearCache 参数(公开 submit(region) 行为不变, 手工新增仍即时清缓存);导入路径传 false 不逐行清缓存, 统一移到方法末尾成功路径上——异常抛出后不可达,失败批次缓存保持原状。 - 控制器:改 catch 异常导出(exportFailureReasonOnly)+ 补上传文件校验。 验证:mvn install -DskipTests 通过;行政区划回归 25/25 (tests/fixtures/region/),Redis 断言覆盖:成功路径缓存被清、 失败路径缓存键原样保留、基线行不被失败批次污染。