fix(oss): 删除文件后清除缓存防止查询命中已删除数据

This commit is contained in:
liyong 2026-09-14 14:57:39 +08:00
parent e3bc391887
commit 3bc4799436

View File

@ -21,6 +21,7 @@ import org.dromara.common.oss.enums.AccessPolicy;
import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.oss.model.Options; import org.dromara.common.oss.model.Options;
import org.dromara.common.oss.model.PutObjectResult; import org.dromara.common.oss.model.PutObjectResult;
import org.dromara.common.redis.utils.CacheUtils;
import org.dromara.system.api.OssService; import org.dromara.system.api.OssService;
import org.dromara.system.api.domain.OssDTO; import org.dromara.system.api.domain.OssDTO;
import org.dromara.system.domain.SysOss; import org.dromara.system.domain.SysOss;
@ -312,7 +313,12 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
for (SysOss sysOss : list) { for (SysOss sysOss : list) {
OssFactory.instance(sysOss.getService()).delete(sysOss.getFileName()); OssFactory.instance(sysOss.getService()).delete(sysOss.getFileName());
} }
return ossMapper.deleteByIds(ids) > 0; boolean flag = ossMapper.deleteByIds(ids) > 0;
if (flag) {
// 删除成功后需清除缓存否则 getById 仍会命中缓存返回已删除的文件信息
list.forEach(sysOss -> CacheUtils.evict(CacheNames.SYS_OSS, sysOss.getOssId()));
}
return flag;
} }
/** /**