using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Zxd.Domain { internal class CacheDomain : ICacheDomain { private readonly IRedisManager _redisManager; private readonly IBaseRepository _repository; public CacheDomain(IRedisManager redisManager, IBaseRepository repository) { _redisManager = redisManager; _repository = repository; } private async Task> GetParameterList() { if (!await _redisManager.ExistsAsync(CacheKeys.ParameterList)) { var list = await _repository.GetRepository().QueryListAsync(); await _redisManager.SetAsync(CacheKeys.ParameterList, list, new TimeSpan(0, 5, 0));//15分钟过期 return list; } else { return await _redisManager.GetListAsync(CacheKeys.ParameterList); } } public async Task GetValueParameter(string key) { var list = await GetParameterList(); return list.FirstOrDefault(x => x.PARAKEY == key)?.PARAVALUE ?? ""; } public async Task GetEarlyWarningValue() { var data = await GetValueParameter("EarlyWarningValue"); if (string.IsNullOrEmpty(data) || int.TryParse(data, out int value)) { return 5; } return value; } public async Task> GetTokens() { var key = CacheKeys.TokenList; if (await _redisManager.ExistsAsync(key)) { return await _redisManager.GetListAsync(key); } return new List(); } public async Task AddToken(SsoUserTokenInfo token) { var key = CacheKeys.TokenList; if (!await _redisManager.ExistsAsync(key)) { await _redisManager.SetAsync(key, new List() { token }); } else { var list = await _redisManager.GetListAsync(key); list.Add(token); await _redisManager.SetAsync(key, list, TimeSpan.FromDays(1)); } } } }