This commit is contained in:
xiaolipro 2024-07-30 15:13:55 +08:00
parent 67811638a9
commit 84e2764ebe
2 changed files with 32 additions and 32 deletions

View File

@ -24,7 +24,7 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
[CapSubscribe(GlobalConst.TrackChangeAfterUpdateOrderSubscribe)] [CapSubscribe(GlobalConst.TrackChangeAfterUpdateOrderSubscribe)]
public async Task ConsumerAsync(TrackChangeAfterUpdateOrderEvent @event) public async Task ConsumerAsync(TrackChangeAfterUpdateOrderEvent @event)
{ {
var orders = await _orderRepository.GetListAsync(x => @event.OrderIds.Contains(x.Id), x => MapOrderSummary(x)); var orders = await GetOrdersAsync(@event.OrderIds);
if (orders.Count == 0) return; if (orders.Count == 0) return;
@ -68,7 +68,34 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
}); });
// 预警计算 // 预警计算
await _forewarningNotifyService.WarningCalculateAsync( BuiltWarningDto(orders, @event)); await _forewarningNotifyService.WarningCalculateAsync(BuiltWarningDto(orders, @event));
}
private async Task<List<OrderEntity>> GetOrdersAsync(int[] orderIds)
{
return await _orderRepository.GetListAsync(order => orderIds.Contains(order.Id), order => new OrderEntity
{
Id = order.Id,
// 轨迹
IsCompleted = order.IsCompleted,
LatestTrackContent = order.LatestTrackContent,
LatestTrackEnContent = order.LatestTrackEnContent,
LatestTrackPlace = order.LatestTrackPlace,
LatestTrackTime = order.LatestTrackTime,
LatestTrackTimeZone = order.LatestTrackTimeZone,
// 因素
CargoType = order.CargoType,
CreateTime = order.CreateTime,
ArrivalCountry = order.ArrivalCountry,
ArrivalProvince = order.ArrivalProvince,
ArrivalCity = order.ArrivalCity,
ArrivalPostCode = order.ArrivalPostCode,
IsTransit = order.IsTransit,
LeavePort = order.LeavePort,
ProductCode = order.ProductCode
});
} }
private WarningDto BuiltWarningDto(List<OrderEntity> orders, TrackChangeAfterUpdateOrderEvent @event) private WarningDto BuiltWarningDto(List<OrderEntity> orders, TrackChangeAfterUpdateOrderEvent @event)
@ -95,31 +122,4 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
}).ToList() }).ToList()
}; };
} }
private OrderEntity MapOrderSummary(OrderEntity order)
{
return new OrderEntity
{
Id = order.Id,
// 轨迹
IsCompleted = order.IsCompleted,
LatestTrackContent = order.LatestTrackContent,
LatestTrackEnContent = order.LatestTrackEnContent,
LatestTrackPlace = order.LatestTrackPlace,
LatestTrackTime = order.LatestTrackTime,
LatestTrackTimeZone = order.LatestTrackTimeZone,
// 因素
CargoType = order.CargoType,
CreateTime = order.CreateTime,
ArrivalCountry = order.ArrivalCountry,
ArrivalProvince = order.ArrivalProvince,
ArrivalCity = order.ArrivalCity,
ArrivalPostCode = order.ArrivalPostCode,
IsTransit = order.IsTransit,
LeavePort = order.LeavePort,
ProductCode = order.ProductCode
};
}
} }

View File

@ -51,10 +51,10 @@ public class ForewarningNotifyService : IForewarningNotifyService, ITransientDep
order order
); );
foreach (var rule in endingRules) foreach (var member in endingRules.Select(rule =>
new WarningNotifyCacheEntry(rule.Id, order.Id).ToString())
)
{ {
var entry = new WarningNotifyCacheEntry(rule.Id, order.Id);
var member = entry.ToString();
// todo: pipeline optimize? // todo: pipeline optimize?
var score = await RedisHelper.Client.ZScoreAsync(GlobalConst.ForewarningNotifyKey, member); var score = await RedisHelper.Client.ZScoreAsync(GlobalConst.ForewarningNotifyKey, member);
// tips: score is null 说明发生ending时,没有匹配到规则,所以没有add到set,不需要删除 // tips: score is null 说明发生ending时,没有匹配到规则,所以没有add到set,不需要删除