diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index b4a7fb469..b0830d81a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -21,6 +21,7 @@ import org.dromara.common.oss.enums.AccessPolicy; import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.oss.model.Options; 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.domain.OssDTO; import org.dromara.system.domain.SysOss; @@ -312,7 +313,12 @@ public class SysOssServiceImpl implements ISysOssService, OssService { for (SysOss sysOss : list) { 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; } /**