This commit is contained in:
xiaolipro 2024-09-12 12:14:13 +08:00
parent d5e4a6ef8c
commit 66a85a221a
2 changed files with 41 additions and 19 deletions

View File

@ -20,6 +20,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
{
var r = !forUpsert
? await Context.SearchAsync<TrackDetailsIndex>(s => s
.Index(GlobalConst.TrackDetailsIndex)
.Source()
.Size(SafelyLimit)
.Query(q => q
@ -32,6 +33,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
)
)
: await Context.SearchAsync<TrackDetailsIndex>(s => s
.Index(GlobalConst.TrackDetailsIndex)
.Source(s2 => s2.Includes(fd => fd
.Field(f => f.IndexName)
.Field(f => f.OrderId)
@ -63,6 +65,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
var excludeTrackCodes = trackCodes.ToList();
excludeTrackCodes.Add(GlobalConst.EmptyString);
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Source(s => s.Includes(fd => fd
.Field(f => f.TrackEnContent)
.Field(f => f.TrackContent)
@ -113,6 +116,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task<bool> AnyAsync(int orderId, string originTrackDataHash)
{
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Source(s => s.Includes(fd => fd.Field(f => f.TrackCode)))
.Query(q =>
q.Term(f => f.OrderId, orderId)
@ -182,6 +186,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
if (orderNos.Count < 1) return new List<TrackDetailsIndex>();
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Source(s => s.Includes(fd => fd
.Field(f => f.OrderNo)
.Field(f => f.TrackStatus)
@ -225,6 +230,7 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task<List<TrackDetailsIndex>> GetListAsync(int orderId)
{
var r = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Index(GlobalConst.TrackDetailsIndex)
.Query(q =>
q.Term(t => t.OrderId, orderId)
)
@ -241,27 +247,41 @@ public class TrackDetailsEsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task DeleteTrackAsync(int[] orderIds, List<string> trackCodes)
{
var search = await Context.SearchAsync<TrackDetailsIndex>(x => x
.Source(s => s.Includes(fd => fd.Field(f => f.IndexName)))
.Size(SafelyLimit)
var deleteResponse = await Context.DeleteByQueryAsync<TrackDetailsIndex>(d => d
.Index($"{GlobalConst.TrackDetailsIndex}-*") // 使用通配符匹配所有相关索引
.Query(q =>
q.Terms(t => t.Field(f => f.OrderId).Terms(orderIds))
&& q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes))
)
);
if (!search.IsValid)
if (!deleteResponse.IsValid)
{
throw new InvalidOperationException(
$"轨迹查询失败,orderIds:[{orderIds.JoinAsString(", ")}],trackCodes:[{trackCodes.JoinAsString(", ")}],原因:{search.DebugInformation}。");
$"删除轨迹失败,orderIds:[{string.Join(", ", orderIds)}],trackCodes:[{string.Join(", ", trackCodes)}],原因:{deleteResponse.DebugInformation}。");
}
var tracks = search.ToIdList();
foreach (var track in tracks)
{
await DeleteTrackByIdAsync(track.Id, track.IndexName);
}
// var search = await Context.SearchAsync<TrackDetailsIndex>(x => x
// .Source(s => s.Includes(fd => fd.Field(f => f.IndexName)))
// .Size(SafelyLimit)
// .Query(q =>
// q.Terms(t => t.Field(f => f.OrderId).Terms(orderIds))
// && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes))
// )
// );
//
// if (!search.IsValid)
// {
// throw new InvalidOperationException(
// $"轨迹查询失败,orderIds:[{orderIds.JoinAsString(", ")}],trackCodes:[{trackCodes.JoinAsString(", ")}],原因:{search.DebugInformation}。");
// }
//
// var tracks = search.ToIdList();
//
// foreach (var track in tracks)
// {
// await DeleteTrackByIdAsync(track.Id, track.IndexName);
// }
}
public async Task DeleteTrackByIdAsync(string id, string indexName)

View File

@ -48,14 +48,15 @@ public class WarningRecordEsRepository : ElasticSearchContextAbstract<WarningRec
{
foreach (var rule in rules)
{
var r = await Context.UpdateByQueryAsync<WarningRecordIndex>(u =>
u.Query(q =>
q.Term(f => f.RuleId, rule.ruleId)
&& q.Term(f => f.OrderId, rule.orderId)
)
.Script(s => s.Source("ctx._source.warningStatus = params.warningStatus")
.Params(p => p.Add("warningStatus", WarningStatus.Processed))
)
var r = await Context.UpdateByQueryAsync<WarningRecordIndex>(u => u
.Index($"{GlobalConst.TrackWarningRecordIndex}-*")
.Query(q =>
q.Term(f => f.RuleId, rule.ruleId)
&& q.Term(f => f.OrderId, rule.orderId)
)
.Script(s => s.Source("ctx._source.warningStatus = params.warningStatus")
.Params(p => p.Add("warningStatus", WarningStatus.Processed))
)
);
if (!r.IsValid)
@ -94,6 +95,7 @@ public class WarningRecordEsRepository : ElasticSearchContextAbstract<WarningRec
: null);
var data = await Context.SearchAsync<WarningRecordIndex>(x => x
.Index(GlobalConst.TrackWarningRecordIndex)
.Source()
.Sort(s => s.Field(f => f.CreateTime, SortOrder.Descending))
.From((input.PageIndex - 1) * input.PageSize)