using AutoDispathingWork.Utils; using Microsoft.Extensions.Options; using WorkerService1.Domains; using WorkerService1.Dto.Configuration; using WorkerService1.Services; namespace WorkerService1; public class CloseWorker : BackgroundService { private readonly ILogger _logger; public CloseWorker(ILogger logger) { _logger = logger; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { var scope = StaticServiceProvider.Current.CreateScope(); var settingServices = scope.ServiceProvider.GetRequiredService(); var options = await settingServices.GetClientOptions(); if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } try { if (options.CloseFileRunning) await Handle(); } catch (Exception e) { $"执行控制器发生错误,错误信息:ex{e.StackTrace}".Error(); } finally { await Task.Delay(options.Delay, stoppingToken); scope.Dispose(); } } } private async Task Handle() { var _spiderServices = StaticServiceProvider.Current.GetRequiredService(); var listRes = await _spiderServices.GetTaskList(3); if (listRes.IsSuccess) { var needDispose = listRes.Result?.records; //轮询列表,看有没有符合状态的进行处理 if (needDispose?.Any() ?? false) { foreach (var item in needDispose) { //2.结案操作 var result = await _spiderServices.CloseFile(item.caseNumber, "",item.address); if (result.IsSuccess) { var message = $"结案成功,任务编号:{item.caseNumber},任务地址:{item.address},任务类型:{item.typeCode}"; message.Info(); } else { var message = $"结案失败,错误信息:{result.Message}"; message.Error(); } } } } } }