opt:优化更新轨迹

This commit is contained in:
李鹏军 2024-05-09 11:45:44 +08:00
parent 49eda2a3aa
commit 5cda1270fb
3 changed files with 36 additions and 14 deletions

View File

@ -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);

View File

@ -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);

View File

@ -13,9 +13,11 @@ 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
var r = !onlyIndexName
? await Context.SearchAsync<TrackDetailsIndex>(s => s
.Source()
.Size(1000)
.Query(q => q
@ -26,6 +28,19 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
)
)
)
)
: 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)