baogutang-music/src/main/java/top/baogutang/music/schedules/ZipCleanupScheduler.java
2024-12-15 16:04:33 +08:00

50 lines
1.6 KiB
Java

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<String, ZipMetadata> zipStore = zipService.getZipStore();
Iterator<Map.Entry<String, ZipMetadata>> iterator = zipStore.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, ZipMetadata> 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();
}
}
}
}