using Hg.Core.Domain; using Hg.Core.Domain.Impl; namespace Hg.Core.WebApi.Workers { public class ComplaintWorker : BackgroundService { private readonly IServiceProvider _serviceProvider; public ComplaintWorker(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { using IServiceScope scope = _serviceProvider.CreateScope(); var outComplaintDomain = scope.ServiceProvider.GetRequiredService(); var inComplaintDomain = scope.ServiceProvider.GetRequiredService(); var orderRefundApplyDomain = scope.ServiceProvider.GetRequiredService(); while (!stoppingToken.IsCancellationRequested) { var now = DateTime.Now; if (now.Minute == 0) { if (now.Hour == 0) { await outComplaintDomain.SyncOutComplaintStatus(); } await inComplaintDomain.SyncInComplaintStatus(); await orderRefundApplyDomain.SyncOrderRefundApplyStatus(); } await Task.Delay(60 * 1000); } } } }