using AutoDispathingWork.Utils; using WorkerService1.Domains; using WorkerService1.Dto; using WorkerService1.Services; namespace WorkerService1; public class Worker : BackgroundService { private readonly ILogger _logger; public Worker(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.LocalDateTime); } try { if (options.DispatchingRunning) await Handle(); } catch (Exception e) { $"执行控制器发生错误,错误信息:ex{e.StackTrace}".Error(); } finally { await Task.Delay(options.Delay, stoppingToken); scope.Dispose(); } } } private static async Task Handle() { var _spiderServices = StaticServiceProvider.Current.GetRequiredService(); var logger= StaticServiceProvider.Current.GetRequiredService>(); var listRes = await _spiderServices.GetTaskList(1); if (listRes.IsSuccess) { var needDispose = listRes.Result?.records.Where(x => x.disposalStatus == 1).ToList(); //轮询列表,看有没有符合状态的进行处理 if (needDispose?.Any() ?? false) { //处理逻辑 //1.查询角色是 城管?的用户 // var users = await _spiderServices.GetUsers(); // var cityManager = users.Result?.Records; // if (cityManager?.Any() ?? false) // { foreach (var item in needDispose) { //2.进行派单操作 var result = await _spiderServices.DispatchTask(item.caseNumber, item.address, item.typeCode); if (result.IsSuccess) { var message = $"成功派发任务,任务编号:{item.caseNumber},任务地址:{item.address},任务类型:{item.typeCode}"; message.Info(); } else { if (result.Code == SpiderResponseCode.Fail) { logger.LogError($"派发任务失败,错误信息:{result.Message}"); continue; } var message = $"派发任务失败,错误信息:{result.Message}"; message.Error(); } } } } } }