46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
| using EasyCaching.Core;
 | ||
| using IRaCIS.Core.Domain.Share;
 | ||
| using IRaCIS.Core.Infra.EFCore;
 | ||
| using MediatR;
 | ||
| 
 | ||
| namespace IRaCIS.Core.Application.MediatR.Handlers
 | ||
| {
 | ||
| 
 | ||
|     public class TrialStateCacheRequest : IRequest<bool>
 | ||
|     {
 | ||
| 
 | ||
|     }
 | ||
|     public class TrialStateCacheHandler : IRequestHandler<TrialStateCacheRequest, bool>
 | ||
|     {     
 | ||
|         private readonly IRepository<Trial> _trialRepository;
 | ||
| 
 | ||
|         private readonly IEasyCachingProvider _provider;
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 构造函数注入
 | ||
|         /// </summary>
 | ||
|         public TrialStateCacheHandler(IRepository<Trial> trialRepository, IEasyCachingProvider provider)
 | ||
|         {
 | ||
|             _trialRepository = trialRepository;
 | ||
| 
 | ||
|             _provider = provider;
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|       
 | ||
|         public Task<bool> Handle(TrialStateCacheRequest request, CancellationToken cancellationToken)
 | ||
|         {
 | ||
|             //项目启动,将项目状态缓存,因为hangfire 加入后台任务,还是向队列添加任务,执行都有延迟,效果不好
 | ||
|             var list = _trialRepository.Select(t => new { TrialId = t.Id, TrialStatusStr = t.TrialStatusStr }).ToList();
 | ||
| 
 | ||
|             // 每天都会有任务刷新状态,项目编辑 添加时 都会处理到缓存中
 | ||
|             list.ForEach(t => _provider.Set(t.TrialId.ToString(), t.TrialStatusStr, TimeSpan.FromDays(7)));
 | ||
| 
 | ||
| 
 | ||
|             return Task.FromResult(true);
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
| }
 |