AutoDispatching/AutoDispathingWork/CloseWorker.cs
2023-11-14 22:54:12 +08:00

64 lines
2.0 KiB
C#

using Microsoft.Extensions.Options;
using WorkerService1.Dto.Configuration;
using WorkerService1.Services;
namespace WorkerService1;
public class CloseWorker : BackgroundService
{
private readonly ILogger<CloseWorker> _logger;
private readonly SpiderServices _spiderServices;
private readonly IServiceProvider _serviceProvider;
public CloseWorker(ILogger<CloseWorker> logger, SpiderServices spiderServices, IServiceProvider serviceProvider)
{
_logger = logger;
_spiderServices = spiderServices;
_serviceProvider = serviceProvider;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}
try
{
await Handle();
}
catch (Exception e)
{
_logger.LogError("执行控制器发生错误,错误信息:ex{}", e.StackTrace);
}
finally
{
using var scope = _serviceProvider.CreateScope();
var options = scope.ServiceProvider.GetRequiredService<IOptionsMonitor<ClientOptions>>();
await Task.Delay(options.CurrentValue.Delay, stoppingToken);
}
}
}
private async Task Handle()
{
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, "");
}
}
}
}
}