diff --git a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs index 04369975..378d2d02 100644 --- a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs +++ b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs @@ -9,6 +9,14 @@ public interface ITrackPushCacheService /// Task IsPushAsync(int customId); + /// + /// 判断客户是否需要推送 + /// + /// + /// + /// + Task IsPushAsync(int subSystemId, int customId); + /// /// 更新缓存 /// diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs index 21ddffc0..fd33d3e1 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs @@ -99,7 +99,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe }; // todo:推送只做新增的,更新和删除的不做先 - if (!@event.IsPushCompleted && await _trackPushCacheService.IsPushAsync(@event.CustomId)) + if (!@event.IsPushCompleted && + await _trackPushCacheService.IsPushAsync(@event.SubSystemId, @event.CustomId)) { //await PushTrack(); } diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs index 046ea943..ba084f93 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs @@ -32,6 +32,21 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc return (bool)isPush; } + public async Task IsPushAsync(int subSystemId, int customId) + { + var isPush = + await RedisHelper.Client.GetAsync(RedisKey(customId)); + + if (isPush == null) + { + isPush = await _trackPushConfigQuery.GetFirstAsync(x => x.CustomId == customId, + x => x.IsAutoPush); + await RedisHelper.Client.SetAsync(RedisKey(customId), isPush); + } + + return (bool)isPush; + } + public async Task UpdateAsync(int customId, bool isPush) { await RedisHelper.Client.SetAsync(RedisKey(customId), isPush);