using EasyCaching.Core; using IRaCIS.Core.Domain.Share; using Microsoft.Extensions.Logging; namespace IRaCIS.Application.Services.BackGroundJob { public interface IIRaCISCacheHangfireJob { Task MemoryCacheTrialStatus(); } public class IRaCISCacheHangfireJob: IIRaCISCacheHangfireJob { private readonly IRepository _trialRepository; private readonly IEasyCachingProvider _provider; private readonly ILogger _logger; private readonly IRepository _systemAnonymizationRepository; public IRaCISCacheHangfireJob(IRepository trialRepository, IRepository systemAnonymizationRepository, IEasyCachingProvider provider,ILogger logger) { _trialRepository = trialRepository; _provider = provider; _logger = logger; _systemAnonymizationRepository = systemAnonymizationRepository; } public async Task MemoryCacheTrialStatus() { _logger.LogInformation("hangfire 定时任务开始~"); try { await CacheTrialStatusAsync(); await CacheAnonymizeAsync(); } catch (Exception e) { _logger.LogError("hangfire 定时任务执行失败"+e.Message); } _logger.LogInformation("hangfire 定时任务执行结束"); } private async Task CacheTrialStatusAsync() { var list = await _trialRepository.Select(t => new { TrialId = t.Id, TrialStatusStr = t.TrialStatusStr }) .ToListAsync(); list.ForEach(t => _provider.Set(t.TrialId.ToString(), t.TrialStatusStr, TimeSpan.FromDays(7))); } private async Task CacheAnonymizeAsync() { var systemAnonymizationList = await _systemAnonymizationRepository.Where(t => t.IsEnable).ToListAsync(); _provider.Set(StaticData.Anonymize.Anonymize_AddFixedFiled, systemAnonymizationList.Where(t => t.IsAdd && t.IsFixed).ToList(), TimeSpan.FromDays(7)); _provider.Set(StaticData.Anonymize.Anonymize_AddIRCInfoFiled, systemAnonymizationList.Where(t => t.IsAdd && t.IsFixed == false).ToList(), TimeSpan.FromDays(7)); _provider.Set(StaticData.Anonymize.Anonymize_FixedField, systemAnonymizationList.Where(t => t.IsAdd == false && t.IsFixed).ToList(), TimeSpan.FromDays(7)); _provider.Set(StaticData.Anonymize.Anonymize_IRCInfoField, systemAnonymizationList.Where(t => t.IsAdd == false && t.IsFixed == false).ToList(), TimeSpan.FromDays(7)); } } }