opt:优化更新轨迹
This commit is contained in:
parent
49eda2a3aa
commit
5cda1270fb
@ -104,7 +104,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
||||
private async Task HandleTrackAsync(TrackUpsertEvent @event, List<int> canNextOrderIds)
|
||||
{
|
||||
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, true);
|
||||
|
||||
var newOrderIds = orderIds.Except(tracks.Select(x => x.OrderId)).ToArray();
|
||||
var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode);
|
||||
|
||||
@ -4,7 +4,7 @@ namespace SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
|
||||
|
||||
public interface ITrackDetailsRepository
|
||||
{
|
||||
Task<List<TrackDetailsIndex>> GetListAsync(int[] orderIds, string trackCode);
|
||||
Task<List<TrackDetailsIndex>> GetListAsync(int[] orderIds, string trackCode, bool onlyIndexName = false);
|
||||
|
||||
Task<List<TrackDetailsIndex>> GetLatestListAsync(int[] eventOrderIds, List<string> trackCodes);
|
||||
|
||||
|
||||
@ -13,20 +13,35 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
||||
{
|
||||
}
|
||||
|
||||
public async Task<List<TrackDetailsIndex>> GetListAsync(int[] orderIds, string trackCode)
|
||||
public async Task<List<TrackDetailsIndex>> GetListAsync(int[] orderIds, string trackCode,
|
||||
bool onlyIndexName = false)
|
||||
{
|
||||
var r = await Context.SearchAsync<TrackDetailsIndex>(s => s
|
||||
.Source()
|
||||
.Size(1000)
|
||||
.Query(q => q
|
||||
.Bool(b => b
|
||||
.Must(
|
||||
mu => mu.Terms(t => t.Field(f => f.OrderId).Terms(orderIds)),
|
||||
mu => mu.Term(t => t.Field(f => f.TrackCode.Suffix("keyword")).Value(trackCode))
|
||||
var r = !onlyIndexName
|
||||
? await Context.SearchAsync<TrackDetailsIndex>(s => s
|
||||
.Source()
|
||||
.Size(1000)
|
||||
.Query(q => q
|
||||
.Bool(b => b
|
||||
.Must(
|
||||
mu => mu.Terms(t => t.Field(f => f.OrderId).Terms(orderIds)),
|
||||
mu => mu.Term(t => t.Field(f => f.TrackCode.Suffix("keyword")).Value(trackCode))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
: await Context.SearchAsync<TrackDetailsIndex>(s => s
|
||||
.Source(s2 => s2.Includes(fd => fd
|
||||
.Field(f => f.IndexName)))
|
||||
.Size(1000)
|
||||
.Query(q => q
|
||||
.Bool(b => b
|
||||
.Must(
|
||||
mu => mu.Terms(t => t.Field(f => f.OrderId).Terms(orderIds)),
|
||||
mu => mu.Term(t => t.Field(f => f.TrackCode.Suffix("keyword")).Value(trackCode))
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (!r.IsValid)
|
||||
{
|
||||
@ -144,9 +159,16 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
||||
|
||||
public async Task UpdateAsync(TrackDetailsIndex track)
|
||||
{
|
||||
var r = await Context.UpdateAsync<TrackDetailsIndex>(track.Id, u => u
|
||||
var r = await Context.UpdateAsync<TrackDetailsIndex, object>(track.Id, u => u
|
||||
.Index(track.IndexName)
|
||||
.Doc(track)
|
||||
.Doc(new
|
||||
{
|
||||
track.TrackPlace,
|
||||
track.TrackTime,
|
||||
track.TrackTimeZone,
|
||||
track.UpdateUser,
|
||||
UpdateTime = DateTime.Now,
|
||||
})
|
||||
);
|
||||
|
||||
if (!r.IsValid)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user