MonthlyQuotaResetTask.java
package com.yumu.noveltranslator.task;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* 每月1号0点清理过期的字符配额使用记录
*/
@Slf4j
@Component
public class MonthlyQuotaResetTask {
private final JdbcTemplate jdbcTemplate;
public MonthlyQuotaResetTask(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Scheduled(cron = "0 0 0 1 * ?")
public void resetMonthlyUsage() {
log.info("开始执行月度字符配额清理任务");
try {
int deleted = jdbcTemplate.update(
"DELETE FROM quota_usage WHERE usage_date < DATE_SUB(CURDATE(), INTERVAL 3 MONTH)"
);
log.info("月度字符配额清理完成,清理了 {} 条过期记录", deleted);
} catch (Exception e) {
log.error("月度字符配额清理失败", e);
}
}
}