using DotNetCore.CAP; using Hotline.EventBus; using Hotline.Orders; using Hotline.Orders.Notifications; using Hotline.OrderTranspond; using Hotline.Share.Dtos.Order; using Hotline.Share.Enums.Order; using MapsterMapper; using MediatR; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using Hotline.DI; using XF.Domain.Repository; namespace Hotline.Application.Orders.Handles.Order { // [Injection(AppScopes = EAppScope.YiBin)] public class TranspondCityNotifyHandler : INotificationHandler { private readonly IMapper _mapper; private readonly ILogger _logger; private readonly ICapPublisher _capPublisher; private readonly IOrderRepository _orderRepository; private readonly IRepository _transpondCityRawDataRepository; /// /// /// /// /// /// /// public TranspondCityNotifyHandler( IMapper mapper, ILogger logger, ICapPublisher capPublisher, IOrderRepository orderRepository, IRepository transpondCityRawDataRepository) { _mapper = mapper; _logger = logger; _capPublisher = capPublisher; _orderRepository = orderRepository; _transpondCityRawDataRepository = transpondCityRawDataRepository; } /// /// /// /// /// /// public async Task Handle(OrderStartWorkflowNotify notification, CancellationToken cancellationToken) { try { var id = notification.Id; var order = await _orderRepository.GetAsync(id, cancellationToken); if (order != null) { //是否市州互转 if (order.Transpond.HasValue && order.Transpond.Value) { var orderDto = _mapper.Map(order); await _capPublisher.PublishAsync(Share.Mq.EventNames.HotlineOrderTranspondCity, orderDto); //保存本地数据 TranspondCityRawData cityRawData = new TranspondCityRawData { OrderCode = order.No, TransferOutTime = DateTime.Now, CityName = order.TranspondCityName, Direction = ETranspondDirection.Out }; await _transpondCityRawDataRepository.AddAsync(cityRawData, cancellationToken); } } } catch (Exception e) { _logger.LogError(e.Message); throw; } } } }