fix: 由于轨迹更新过快导致的轨迹还未落库,查询不出要修改轨迹,现增加重试策略,提高更新的可靠性,当更新还是失败时会返回400响应
This commit is contained in:
parent
ffd6d0e689
commit
8105d04144
@ -104,6 +104,35 @@ public partial class TrackService : ApplicationService, ITrackService
|
||||
.Where(x => x.TrackTime == input.TrackTime)
|
||||
.ToList();
|
||||
|
||||
//当为更新操作时发现更新的数目为0进行重试操作
|
||||
if (!input.IsAdd && tracks.Count == 0)
|
||||
{
|
||||
var curRetryCount = 0;
|
||||
var success = false;
|
||||
while (!success && curRetryCount < GlobalConst.MaxUpdateTrackRetryCount)
|
||||
{
|
||||
try
|
||||
{
|
||||
tracks = (await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true))
|
||||
.Where(x => x.TrackTime == input.TrackTime)
|
||||
.ToList();
|
||||
if (tracks.Count > 0)
|
||||
success = true;
|
||||
await Task.Delay(300);
|
||||
}
|
||||
finally
|
||||
{
|
||||
curRetryCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (tracks.Count == 0)
|
||||
{
|
||||
throw new BusinessException(message: $"订单:{input.OrderNo},轨迹代码:{input.TrackCode}没有要更新的记录");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//更新轨迹,同一时间存在多条轨迹记录,理由:不清晰到底要修改哪一条或是全部修改
|
||||
if (!input.IsAdd && tracks.Count > 1)
|
||||
{
|
||||
@ -366,6 +395,34 @@ public partial class TrackService : ApplicationService, ITrackService
|
||||
.Where(x => x.TrackTime == input.TrackTime)
|
||||
.ToList();
|
||||
|
||||
//当为更新操作时发现更新的数目为0进行重试操作
|
||||
if (!input.IsAdd && tracks.Count == 0)
|
||||
{
|
||||
var curRetryCount = 0;
|
||||
var success = false;
|
||||
while (!success && curRetryCount < GlobalConst.MaxUpdateTrackRetryCount)
|
||||
{
|
||||
try
|
||||
{
|
||||
tracks = (await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true))
|
||||
.Where(x => x.TrackTime == input.TrackTime)
|
||||
.ToList();
|
||||
if (tracks.Count > 0)
|
||||
success = true;
|
||||
await Task.Delay(300);
|
||||
}
|
||||
finally
|
||||
{
|
||||
curRetryCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (tracks.Count == 0)
|
||||
{
|
||||
throw new BusinessException(message: $"订单:[{string.Join(",", input.OrderNos)}],轨迹代码:{input.TrackCode}没有要更新的记录");
|
||||
}
|
||||
}
|
||||
|
||||
//更新轨迹,同一时间存在多条轨迹记录,理由:不清晰到底要修改哪一条或是全部修改
|
||||
if (!input.IsAdd && tracks.Count > 1)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user