using DotNetCore.CAP; using SJZY.Track.Application.Contract.Events; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Consts; using Volo.Abp.DependencyInjection; namespace SJZY.Track.Application.EventHandlers; public class TrackInsertForNotMappedEventHandler : ITransientDependency, ICapSubscribe { private readonly ITrackDetailsRepository _trackDetailsRepository; public TrackInsertForNotMappedEventHandler(ITrackDetailsRepository trackDetailsRepository) { _trackDetailsRepository = trackDetailsRepository; } [CapSubscribe(GlobalConst.TrackInsertForNotMappedEventSubscribe)] public async Task ConsumerAsync(TrackInsertForNotMappedEvent @event) { if (await _trackDetailsRepository.AnyAsync(@event.OrderId, @event.TrackTime)) { return; // 无法映射的轨迹只做新增 } // 新增服务商轨迹到es var track = new TrackDetailsIndex { IndexName = $"{GlobalConst.TrackIndex}-{DateTime.Now:yyyy.MM.dd}", OrderId = @event.OrderId, OrderNo = @event.OrderNo, OrderType = @event.OrderType, TrackPlace = @event.TrackPlace, TrackTime = @event.TrackTime, TrackTimeZone = @event.TrackTimeZone, ServiceProviderName = @event.ServiceProviderName, OriginTrackContent = @event.OriginTrackContent, OriginTrackData = @event.OriginTrackData, CreateUser = GlobalConst.SystemUser, CreateTime = DateTime.Now }; track.TrackCode = GlobalConst.EmptyString; track.TrackStatus = GlobalConst.EmptyString; track.TrackContent = GlobalConst.EmptyString; track.TrackEnContent = GlobalConst.EmptyString; track.ZeroTrackTime = track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone)); await _trackDetailsRepository.UpdateAsync(track); } }