50 lines
1.6 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|
|
}
|