diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 0dcaf748..7431244e 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -100,7 +100,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe // 推送新增,需要根据上一次的推送 推断 本次推送 是否可行 config = GetValidPushConfigAsync(_pushConfigs, order.LatestPushTrackCode, @event.TrackCode); if (config == null) continue; + // 是否自动推送 if (!config.IsAutoPush) continue; + //配置的类型如何和订单类型不一致则不允许推送 if (config.OrderType != order.OrderType) continue; var log = new TrackPushRecordIndex @@ -142,6 +144,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe if (config == null) continue; + //配置的类型如何和订单类型不一致则不允许推送 + if (config.OrderType != order.OrderType) continue; + var log = new TrackPushRecordIndex { OptionType = @event.OptionType.ToString(), @@ -202,6 +207,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var items = new List(); foreach (var order in _orders) { + //配置的类型如何和订单类型不一致则不允许推送 + if (config.OrderType != order.OrderType) continue; + var log = new TrackPushRecordIndex { OptionType = @event.OptionType.ToString(), diff --git a/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs b/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs index e467213d..5dd5e7ed 100644 --- a/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs +++ b/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs @@ -67,11 +67,11 @@ public class TrackPushCompletedEventHandler : ITransientDependency, IRabbitHandl var optionType = Base64Helper.DeSerialize(@event.Attach); if (optionType == OptionType.新增.ToString()) { - logStr = JsonConvert.DeserializeObject(@event.RequestParams)!.Log; + logStr = JsonConvert.DeserializeObject>(@event.RequestParams)!.First().Log; } else if (optionType == OptionType.修改.ToString()) { - logStr = JsonConvert.DeserializeObject(@event.RequestParams)!.Log; + logStr = JsonConvert.DeserializeObject>(@event.RequestParams)!.First().Log;; } if (logStr.IsNullOrEmpty()) throw new InvalidOperationException(); diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs index 78c97d7b..95fed12e 100644 --- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs +++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs @@ -13,7 +13,6 @@ using SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.TrackContents; -using SJZY.Track.Domain.Dtos.TrackTemplate; using SJZY.Track.Domain.Enums; using SJZY.Track.Domain.Queries; @@ -290,6 +289,11 @@ public class TrackContentService : ApplicationService if (order == default) throw new BusinessException(message: "订单不存在!"); + var res = new UnifyResultDto>(true) + { + Data = new List() + }; + //获取轨迹详情 var trackDetails = await _trackDetailsEsRepository.GetListAsync(order.Id); @@ -298,6 +302,17 @@ public class TrackContentService : ApplicationService { trackDetails = trackDetails.Where(m => m.Source != (int) TrackSourceEnum.ExternalServiceProvide).ToList(); } + //进行推送时,匹配订单类型一致的轨迹 + if (input.TrackOptionType == TrackOptionType.推送) + { + trackDetails = trackDetails.Where(t => t.OrderType == order.OrderType).ToList(); + } + + //进行删除和推送行为无任何轨迹内容,直接返回为空即可 + if (input.TrackOptionType is TrackOptionType.删除 or TrackOptionType.推送 && trackDetails.Count == 0) + { + return res; + } //获取当前子系统下所有的轨迹内容 var contentList = await _trackContentRepository.GetListBySystemIdAsync(input.SystemId); @@ -312,11 +327,6 @@ public class TrackContentService : ApplicationService contentList = contentList.Where(m => template.Contains(m.Code)).ToList(); } - var res = new UnifyResultDto>(true) - { - Data = new List() - }; - foreach (var item in contentList) { //新增时跳过已存在轨迹内容 @@ -351,7 +361,7 @@ public class TrackContentService : ApplicationService } - //修改操作,查轨迹内容列表反映明细表数据,重新构造响应数据 + //修改/删除/推送 操作,查轨迹内容列表反映明细表数据,重新构造响应数据 var matchContent = new List(); var contents = res.Data.Select(x => new { diff --git a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs index 9318e6ca..a26eb785 100644 --- a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs +++ b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs @@ -142,7 +142,8 @@ public class SjzyTrackApplicationModule : AbpModule options.PoolSize = configuration.GetValue("RabbitMQ:PoolSize"); options.Declarations = new List>() { - o=>o.ExchangeDeclare(GlobalConst.TrackChangeExchange, ExchangeType.Topic, true), + o => o.ExchangeDeclare(GlobalConst.TrackChangeExchange, ExchangeType.Topic, true), + o => o.ExchangeDeclare(GlobalConst.TrackPushExchange, ExchangeType.Topic, true) }; options.Consumes = new List { @@ -158,6 +159,19 @@ public class SjzyTrackApplicationModule : AbpModule o.QueueBind(GlobalConst.TrackRefreshSubscribe, GlobalConst.InterfaceRelayExchange, GlobalConst.TrackRefreshSubscribe); } + }, + new() + { + Queue = GlobalConst.TrackPushCompletedSubscribe, + FetchCount = configuration.GetValue("TrackApp:TrackRefreshFetchCount"), + FailedRequeue = false, + Declaration = o => + { + o.ExchangeDeclare(GlobalConst.InterfaceRelayExchange, ExchangeType.Direct, true); + o.QueueDeclare(GlobalConst.TrackPushCompletedSubscribe, true); + o.QueueBind(GlobalConst.TrackPushCompletedSubscribe, GlobalConst.InterfaceRelayExchange, + GlobalConst.TrackPushCompletedSubscribe); + } } }; }, typeof(SjzyTrackApplicationModule).Assembly);