fix:推送swap

This commit is contained in:
李鹏军 2024-04-02 19:41:29 +08:00
parent 6997d71696
commit 4ebbe1b67c
2 changed files with 11 additions and 24 deletions

View File

@ -80,12 +80,11 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
// 推断 本次推送 是否可行
config = await _trackPushCacheService.IsValidPushAsync(order.SubSystemId, order.CustomId,
order.LatestPushTrackCode, @event.TrackCode);
allPush = true;
}
}
if (config == null) return;
await DoAddAsync(@event, config, log, allPush);
await DoAddAsync(@event, config, log);
break;
case OptionType.删除:
break;
@ -144,7 +143,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
}
private async Task DoAddAsync(TrackPushEvent @event,
TrackPushContentConfigDto config, TrackPushRecordIndex log, bool allPush)
TrackPushContentConfigDto config, TrackPushRecordIndex log)
{
var track = new
{
@ -166,7 +165,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
data = new[] { track }
});
if (allPush)
if (config.IsAllPush)
{
var history = await _trackPushRecordsRepository.GetLatestTrackPushRecordAsync(@event.OrderId);
if (history != default)

View File

@ -44,28 +44,16 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc
var cache = await GetPushContentConfigsAsync(subSystemId, customId);
if (cache == null || cache.Count < 1) return default;
TrackPushContentConfigDto? matched;
if (latestPushTrackCode == null)
{
matched = cache.First();
}
else
{
var idx = cache.FindIndex(x => x.TrackCode == latestPushTrackCode);
var idx = cache.FindIndex(x => x.TrackCode == latestPushTrackCode);
if (idx == -1) return default; // 是否预警?
if (idx + 1 >= cache.Count) return default; // 推完了
// find next
if (idx + 1 < cache.Count && cache[idx + 1].TrackCode == trackCode)
{
matched = cache[idx + 1];
}
else
{
// find swap
matched = cache.FirstOrDefault(x => x.TrackCode == cache[idx].SwapTrackCode);
}
}
// find next
var matched = cache[idx + 1].TrackCode == trackCode
? cache[idx + 1]
:
// find swap
cache.FirstOrDefault(x => x.TrackCode == cache[idx + 1].SwapTrackCode);
return matched != null && matched.TrackCode == trackCode && matched.IsAutoPush ? matched : default;
}