diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index a8ff5339..d78beaca 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -1,6 +1,7 @@ using DotNetCore.CAP; using Microsoft.Extensions.Options; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.InterfaceRelay.Application.Contracts; using SJZY.Track.Application.Contract.Dtos.TrackPush; @@ -306,16 +307,19 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe if (config.IsAllPushWithLatest) { var old = body!.Data + .Where(x => x["code"] == cur["code"]) .WhereIf(!compareFields.IsNullOrWhiteSpace(), x => { - if (x["extra"] is Dictionary extra && extra.TryGetValue(compareFields!, out var value)) + if (x["extra"] == null || log.Extra == null) return false; + var extra = JObject.FromObject(x["extra"]!); + var curExtra = JObject.FromObject(log.Extra!); + if (extra.TryGetValue(compareFields!, out var value) && curExtra.TryGetValue(compareFields!, out var curValue) ) { - return value ==log.Extra![compareFields!]; + return value == curValue; } - return false; }) - .FirstOrDefault(x => x["code"] == cur["code"]); + .FirstOrDefault(); if (old != null) { body.Data.Remove(old);