Files
EmailBill/Service/Jobs/HolidaySyncJob.cs
SunCheng 51172e8c5a
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 4m27s
Docker Build & Deploy / Deploy to Production (push) Successful in 7s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s
Docker Build & Deploy / WeChat Notification (push) Successful in 1s
fix
2026-02-11 13:00:01 +08:00

46 lines
1.6 KiB
C#

using Quartz;
namespace Service.Jobs;
/// <summary>
/// 节假日同步定时任务 - 每10天执行一次
/// </summary>
[DisallowConcurrentExecution] // 防止并发执行
public class HolidaySyncJob(
IServiceProvider serviceProvider,
ILogger<HolidaySyncJob> logger) : IJob
{
public async Task Execute(IJobExecutionContext context)
{
try
{
logger.LogInformation("开始执行节假日同步任务");
using var scope = serviceProvider.CreateScope();
var holidayService = scope.ServiceProvider.GetRequiredService<IHolidayService>();
// 获取当前年份和下一年份
var currentYear = DateTime.Now.Year;
var nextYear = currentYear + 1;
// 同步当前年和下一年的数据
var currentYearResult = await holidayService.FetchAndCacheHolidaysAsync(currentYear);
var nextYearResult = await holidayService.FetchAndCacheHolidaysAsync(nextYear);
if (currentYearResult && nextYearResult)
{
logger.LogInformation("节假日同步任务执行完成,成功同步 {CurrentYear} 和 {NextYear} 年数据", currentYear, nextYear);
}
else
{
logger.LogWarning("节假日同步任务部分失败,当前年: {CurrentResult}, 下一年: {NextResult}", currentYearResult, nextYearResult);
}
}
catch (Exception ex)
{
logger.LogError(ex, "节假日同步任务执行出错");
throw; // 让 Quartz 知道任务失败
}
}
}