diff --git a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs index 8434072e..92ce75e1 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs @@ -22,6 +22,11 @@ public class TrackPushEvent /// public string OrderNo { get; set; } = null!; + /// + /// 订单类型 + /// + public int OrderType { get; set; } + /// /// 轨迹内容id /// diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs index 58ddb13a..a1f9aba4 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs @@ -44,7 +44,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var isSuccess = res.Code == InterfaceRelayConst.SuccessCode; - // 写推送日志 + // 往es 写推送日志 await _trackPushRecordsRepository.AddAsync(new TrackPushRecordIndex { IndexName = $"{GlobalConst.TrackPushRecordsIndex}-{DateTime.Now:yyyy.MM.dd}", @@ -52,6 +52,8 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe Message = res.Msg, OptionType = @event.OptionType.ToString(), OrderId = @event.OrderId, + OrderType = @event.OrderType, + OrderNo = @event.OrderNo, TrackStatus = @event.TrackStatus, TrackCode = @event.TrackCode, TrackContent = @event.TrackContent, diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs index ed4b838c..e3276d02 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs @@ -191,6 +191,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe OptionType = optionType, ServiceProviderCode = config.ServiceProviderCode, OrderNo = track.OrderNo, + OrderType = track.OrderType, OrderId = track.OrderId, TrackContentId = config.TrackContentId, TrackStatus = track.TrackStatus, diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs index 85e48c02..272f4c40 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs @@ -5,6 +5,7 @@ using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Services; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; +using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Enums; using SJZY.UserCenter.HttpApi.Services; @@ -22,16 +23,19 @@ public class TrackPushService : ApplicationService private readonly IOrderRepository _orderRepository; private readonly ITrackPushCacheService _pushCacheService; private readonly ICapPublisher _capPublisher; + private readonly ITrackPushRecordsRepository _trackPushRecordsRepository; public TrackPushService(ITrackPushCacheService pushCacheService, ITrackDetailsRepository trackDetailsRepository , IOrderRepository orderRepository - , ICapPublisher capPublisher) + , ICapPublisher capPublisher + , ITrackPushRecordsRepository trackPushRecordsRepository) { _pushCacheService = pushCacheService; _trackDetailsRepository = trackDetailsRepository; _orderRepository = orderRepository; _capPublisher = capPublisher; + _trackPushRecordsRepository = trackPushRecordsRepository; } /// @@ -47,7 +51,7 @@ public class TrackPushService : ApplicationService var orders = await _orderRepository.GetListAsync(x => x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo), x => new { - x.Id, x.OrderNo, x.SubSystemId, x.CustomId + x.Id, x.OrderNo, x.OrderType, x.SubSystemId, x.CustomId }); if (orders.Count == 0) @@ -81,6 +85,7 @@ public class TrackPushService : ApplicationService { ServiceProviderCode = config.ServiceProviderCode, OrderNo = order.OrderNo, + OrderType = order.OrderType, OrderId = order.Id, TrackContentId = config.TrackContentId, TrackStatus = track.TrackStatus, @@ -130,4 +135,15 @@ public class TrackPushService : ApplicationService return $"成功将:{orders.Count(x => x.QuestionType == (int)TrackProblemType.Warn)}个订单置为预警"; } + + /// + /// 获取轨迹推送记录 + /// + /// + /// + [HttpGet("GetTrackPushRecords")] + public async Task> GetTrackPushRecordsAsync(OrderNoInfo input) + { + return await _trackPushRecordsRepository.GetTrackPushRecordsAsync(input.OrderNo, input.OrderType); + } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs index e8115b13..e776b1f4 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs @@ -15,4 +15,6 @@ public interface ITrackPushRecordsRepository /// /// Task> GetTrackPushRecordsAsync(int orderId); + + Task> GetTrackPushRecordsAsync(string inputOrderNo, int inputOrderType); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs index 0d178b45..6efa70b5 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs @@ -17,6 +17,16 @@ public class TrackPushRecordIndex : IdBaseIndex /// public int OrderId { get; set; } + /// + /// 订单号 + /// + public string OrderNo { get; set; } = null!; + + /// + /// 订单类型(主数据枚举TrackOrderType) + /// + public int OrderType { get; set; } + /// /// 接口通请求Id /// diff --git a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs index b537adb1..3847d786 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs @@ -40,4 +40,18 @@ public class TrackPushRecordsRepository : ElasticSearchContextAbstract> GetTrackPushRecordsAsync(string orderNo, int orderType) + { + var data = await Context.SearchAsync(x => x + .Index(GlobalConst.TrackPushRecordsIndex) + .Query(q => + q.Term(t => t.OrderNo.Suffix("keyword"), orderNo) + && q.Term(f => f.OrderType, orderType) + ) + .Size(1000) + .Sort(s => s.Field(f => f.CreateTime, SortOrder.Descending))); + + return data.Documents.ToList(); + } } \ No newline at end of file