opt:拆包
This commit is contained in:
parent
2e551b21d7
commit
04ef345481
@ -49,7 +49,6 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
nextEvent.Visited.AddRange(@event.OrderIds);
|
nextEvent.Visited.AddRange(@event.OrderIds);
|
||||||
nextEvent.TrackCodes = @event.TrackCodes;
|
nextEvent.TrackCodes = @event.TrackCodes;
|
||||||
nextEvent.SubSystemId = group.Key;
|
nextEvent.SubSystemId = group.Key;
|
||||||
nextEvent.OrderIds = group.Select(x => x.OrderId).ToArray();
|
|
||||||
|
|
||||||
// 不同子系统需要做内容映射
|
// 不同子系统需要做内容映射
|
||||||
if (@event.SubSystemId != nextEvent.SubSystemId)
|
if (@event.SubSystemId != nextEvent.SubSystemId)
|
||||||
@ -60,13 +59,25 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
if (mapCodes.Count == 0)
|
if (mapCodes.Count == 0)
|
||||||
{
|
{
|
||||||
//throw new BusinessException(message: "订单跨子系统,未配置内容映射,请联系管理员");
|
//throw new BusinessException(message: "订单跨子系统,未配置内容映射,请联系管理员");
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
nextEvent.TrackCodes = mapCodes;
|
nextEvent.TrackCodes = mapCodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, nextEvent);
|
var identifiers = group.Select(x => x.OrderId).ToList();
|
||||||
|
var idx = 0;
|
||||||
|
while (idx < identifiers.Count)
|
||||||
|
{
|
||||||
|
var subEvent = nextEvent.DeepCopy();
|
||||||
|
var cnt = idx + GlobalConst.ChunkSize > identifiers.Count
|
||||||
|
? identifiers.Count - idx
|
||||||
|
: GlobalConst.ChunkSize;
|
||||||
|
subEvent.OrderIds = identifiers.GetRange(idx, cnt).ToArray();
|
||||||
|
idx += GlobalConst.ChunkSize;
|
||||||
|
|
||||||
|
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, subEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,12 +53,6 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
var nextEvent = @event.DeepCopy();
|
var nextEvent = @event.DeepCopy();
|
||||||
nextEvent.Visited.AddRange(orderIds);
|
nextEvent.Visited.AddRange(orderIds);
|
||||||
nextEvent.SubSystemId = group.Key;
|
nextEvent.SubSystemId = group.Key;
|
||||||
nextEvent.OrderIdentifiers = group.Select(x => new OrderIdentifier
|
|
||||||
{
|
|
||||||
OrderId = x.OrderId,
|
|
||||||
OrderNo = x.OrderNo,
|
|
||||||
OrderType = x.OrderType
|
|
||||||
}).ToArray();
|
|
||||||
nextEvent.TrackRefreshData = new TrackRefreshStruct
|
nextEvent.TrackRefreshData = new TrackRefreshStruct
|
||||||
{
|
{
|
||||||
ServiceProviderName = @event.TrackRefreshData.ServiceProviderName,
|
ServiceProviderName = @event.TrackRefreshData.ServiceProviderName,
|
||||||
@ -78,13 +72,30 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
if (mapCode == default)
|
if (mapCode == default)
|
||||||
{
|
{
|
||||||
// 跨子系统没做映射的轨迹不处理
|
// 跨子系统没做映射的轨迹不处理
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
nextEvent.TrackCode = mapCode;
|
nextEvent.TrackCode = mapCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, nextEvent);
|
var identifiers = group.Select(x => new OrderIdentifier
|
||||||
|
{
|
||||||
|
OrderId = x.OrderId,
|
||||||
|
OrderNo = x.OrderNo,
|
||||||
|
OrderType = x.OrderType
|
||||||
|
}).ToList();
|
||||||
|
var idx = 0;
|
||||||
|
while (idx < identifiers.Count)
|
||||||
|
{
|
||||||
|
var subEvent = nextEvent.DeepCopy();
|
||||||
|
var cnt = idx + GlobalConst.ChunkSize > identifiers.Count
|
||||||
|
? identifiers.Count - idx
|
||||||
|
: GlobalConst.ChunkSize;
|
||||||
|
subEvent.OrderIdentifiers = identifiers.GetRange(idx, cnt).ToArray();
|
||||||
|
idx += GlobalConst.ChunkSize;
|
||||||
|
|
||||||
|
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, subEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,7 +105,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
|
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
|
||||||
var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode);
|
var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode);
|
||||||
|
|
||||||
TrackDetailsIndex firstTrack = null;
|
TrackDetailsIndex? firstTrack = null;
|
||||||
|
|
||||||
var insertTracks = new List<TrackDetailsIndex>();
|
var insertTracks = new List<TrackDetailsIndex>();
|
||||||
|
|
||||||
|
|||||||
@ -4,4 +4,5 @@ public partial class GlobalConst
|
|||||||
{
|
{
|
||||||
public const string SystemUser = "系统";
|
public const string SystemUser = "系统";
|
||||||
public const string EmptyString = "--";
|
public const string EmptyString = "--";
|
||||||
|
public const int ChunkSize = 100;
|
||||||
}
|
}
|
||||||
@ -28,6 +28,11 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!r.IsValid)
|
||||||
|
{
|
||||||
|
throw new Exception($"轨迹查询,原因:{r.DebugInformation}。");
|
||||||
|
}
|
||||||
|
|
||||||
return r.ToIdList();
|
return r.ToIdList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +40,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
{
|
{
|
||||||
var excludeTrackCodes = trackCodes.ToList();
|
var excludeTrackCodes = trackCodes.ToList();
|
||||||
excludeTrackCodes.Add(GlobalConst.EmptyString);
|
excludeTrackCodes.Add(GlobalConst.EmptyString);
|
||||||
var data = await Context.SearchAsync<TrackDetailsIndex>(x => x
|
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
|
||||||
.Source(s => s.Includes(fd => fd
|
.Source(s => s.Includes(fd => fd
|
||||||
.Field(f => f.TrackEnContent)
|
.Field(f => f.TrackEnContent)
|
||||||
.Field(f => f.TrackContent)
|
.Field(f => f.TrackContent)
|
||||||
@ -74,7 +79,12 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
return data.Documents.ToList();
|
if (!r.IsValid)
|
||||||
|
{
|
||||||
|
throw new Exception($"轨迹查询,原因:{r.DebugInformation}。");
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.Documents.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> AnyAsync(int orderId, DateTime trackTime)
|
public async Task<bool> AnyAsync(int orderId, DateTime trackTime)
|
||||||
@ -87,6 +97,11 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!r.IsValid)
|
||||||
|
{
|
||||||
|
throw new Exception($"轨迹查询,原因:{r.DebugInformation}。");
|
||||||
|
}
|
||||||
|
|
||||||
return r.Hits.Count > 0;
|
return r.Hits.Count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,6 +115,11 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!r.IsValid)
|
||||||
|
{
|
||||||
|
throw new Exception($"轨迹查询,原因:{r.DebugInformation}。");
|
||||||
|
}
|
||||||
|
|
||||||
return r.Hits.Count > 0;
|
return r.Hits.Count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,7 +170,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
{
|
{
|
||||||
if (orderNos.Count < 1) return new List<TrackDetailsIndex>();
|
if (orderNos.Count < 1) return new List<TrackDetailsIndex>();
|
||||||
|
|
||||||
var data = await Context.SearchAsync<TrackDetailsIndex>(x => x
|
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
|
||||||
.Source(s => s.Includes(fd => fd
|
.Source(s => s.Includes(fd => fd
|
||||||
.Field(f => f.OrderNo)
|
.Field(f => f.OrderNo)
|
||||||
.Field(f => f.TrackStatus)
|
.Field(f => f.TrackStatus)
|
||||||
@ -170,19 +190,29 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
|||||||
.Size(1000)
|
.Size(1000)
|
||||||
);
|
);
|
||||||
|
|
||||||
return data.Documents.ToList();
|
if (!r.IsValid)
|
||||||
|
{
|
||||||
|
throw new Exception($"轨迹查询,原因:{r.DebugInformation}。");
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.Documents.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<List<TrackDetailsIndex>> GetListAsync(int orderId)
|
public async Task<List<TrackDetailsIndex>> GetListAsync(int orderId)
|
||||||
{
|
{
|
||||||
var data = await Context.SearchAsync<TrackDetailsIndex>(x => x
|
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
|
||||||
.Query(q =>
|
.Query(q =>
|
||||||
q.Term(t => t.OrderId, orderId)
|
q.Term(t => t.OrderId, orderId)
|
||||||
)
|
)
|
||||||
.Size(1000)
|
.Size(1000)
|
||||||
.Sort(s => s.Field(f => f.ZeroTrackTime, SortOrder.Descending)));
|
.Sort(s => s.Field(f => f.ZeroTrackTime, SortOrder.Descending)));
|
||||||
|
|
||||||
return data.Documents.ToList();
|
if (!r.IsValid)
|
||||||
|
{
|
||||||
|
throw new Exception($"轨迹查询,原因:{r.DebugInformation}。");
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.Documents.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteTrackAsync(int[] orderIds, List<string> trackCodes)
|
public async Task DeleteTrackAsync(int[] orderIds, List<string> trackCodes)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user