package top.baogutang.music.schedules; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import top.baogutang.music.domain.ZipMetadata; import top.baogutang.music.service.ZipService; import javax.annotation.Resource; import java.io.File; import java.time.LocalDateTime; import java.util.Iterator; import java.util.Map; @Slf4j @Component public class ZipCleanupScheduler { @Resource private ZipService zipService; // 每小时执行一次 @Scheduled(cron = "0 0 * * * ?") public void cleanupOldZips() { Map zipStore = zipService.getZipStore(); Iterator> iterator = zipStore.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); ZipMetadata metadata = entry.getValue(); if (LocalDateTime.now().isAfter(metadata.getExpirationTime())) { // 删除ZIP文件 File zipFile = new File(metadata.getZipFilePath()); if (zipFile.exists()) { boolean deleted = zipFile.delete(); if (deleted) { log.info(">>>>>>>>>>Deleted expired ZIP{}<<<<<<<<<<", metadata.getZipFilePath()); } else { log.error(">>>>>>>>>>Failed to delete ZIP:{}<<<<<<<<<<", metadata.getZipFilePath()); } } // 从映射中移除 iterator.remove(); } } } }