using System.Collections.Generic; using System.Threading.Tasks; using StackExchange.Redis; using Volo.Abp.EventBus; using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Wms.Job.Domain; using Win_in.Sfs.Wms.Job.Domain.Shared; using Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Job.Event.Requests; using Microsoft.Extensions.Configuration; public class DeliverJobEventHandler : JobEventHandlerBase , ILocalEventHandler> , ILocalEventHandler>> , ILocalEventHandler> { private const string DeliverRequestPrefix = "DeliverRequest"; private readonly IDeliverRequestAppService _deliverRequestAppService; public DeliverJobEventHandler( IDeliverRequestAppService deliverRequestAppService , IConfiguration configuration) { _deliverRequestAppService = deliverRequestAppService; var redisConnectionString = configuration["Redis:Configuration"]; var redisConnection = ConnectionMultiplexer.Connect(redisConnectionString); RedisDB = redisConnection.GetDatabase(); } public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData) { var entity = eventData.Entity; var cacheKey = GetCacheKey(entity.DeliverRequestNumber); var jobNumber = entity.Number; await RedisDB.HashSetAsync(cacheKey, jobNumber, true).ConfigureAwait(false); } public virtual async Task HandleEventAsync(SfsCreatedEntityEventData> eventData) { var entities = eventData.Entity; foreach (var entity in entities) { var cacheKey = GetCacheKey(entity.DeliverRequestNumber); var jobNumber = entity.Number; await RedisDB.HashSetAsync(cacheKey, jobNumber, true).ConfigureAwait(false); } } public virtual async Task HandleEventAsync(SfsCompletedEntityEventData eventData) { await Task.CompletedTask.ConfigureAwait(false); //var entity = eventData.Entity; //var cacheKey = GetCacheKey(entity.DeliverRequestNumber); //var jobNumber = entity.Number; //await RedisDB.HashDeleteAsync(cacheKey, jobNumber); //var count = await RedisDB.HashLengthAsync(cacheKey); //if (count == 0) //{ // await _deliverRequestAppService.CompleteAsync(entity.DeliverRequestNumber); //} } private static string GetCacheKey(string requestNumber) { return $"{JobConsts.CachePrefix}:{DeliverRequestPrefix}:{requestNumber}"; } }