using Quartz; namespace Service.Jobs; /// /// 周期性账单定时任务 /// [DisallowConcurrentExecution] // 防止并发执行 public class PeriodicBillJob( IServiceProvider serviceProvider, ILogger logger) : IJob { public async Task Execute(IJobExecutionContext context) { try { logger.LogInformation("开始执行周期性账单检查任务"); // 执行周期性账单检查 using var scope = serviceProvider.CreateScope(); var periodicService = scope.ServiceProvider.GetRequiredService(); await periodicService.ExecutePeriodicBillsAsync(); logger.LogInformation("周期性账单检查任务执行完成"); } catch (Exception ex) { logger.LogError(ex, "周期性账单检查任务执行出错"); throw; // 让 Quartz 知道任务失败 } } }