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)
|
.Where(x => x.TrackTime == input.TrackTime)
|
||||||
.ToList();
|
.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)
|
if (!input.IsAdd && tracks.Count > 1)
|
||||||
{
|
{
|
||||||
@ -366,6 +395,34 @@ public partial class TrackService : ApplicationService, ITrackService
|
|||||||
.Where(x => x.TrackTime == input.TrackTime)
|
.Where(x => x.TrackTime == input.TrackTime)
|
||||||
.ToList();
|
.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)
|
if (!input.IsAdd && tracks.Count > 1)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user