77 lines
2.4 KiB
C#
77 lines
2.4 KiB
C#
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<ZxdDbContext> _repository;
|
|
|
|
public CacheDomain(IRedisManager redisManager,
|
|
IBaseRepository<ZxdDbContext> repository)
|
|
{
|
|
_redisManager = redisManager;
|
|
_repository = repository;
|
|
}
|
|
|
|
private async Task<List<BAS_PARAMETER>> GetParameterList()
|
|
{
|
|
if (!await _redisManager.ExistsAsync(CacheKeys.ParameterList))
|
|
{
|
|
var list = await _repository.GetRepository<BAS_PARAMETER>().QueryListAsync();
|
|
await _redisManager.SetAsync(CacheKeys.ParameterList, list, new TimeSpan(0, 5, 0));//15分钟过期
|
|
return list;
|
|
}
|
|
else
|
|
{
|
|
return await _redisManager.GetListAsync<BAS_PARAMETER>(CacheKeys.ParameterList);
|
|
}
|
|
}
|
|
|
|
public async Task<string> GetValueParameter(string key)
|
|
{
|
|
var list = await GetParameterList();
|
|
return list.FirstOrDefault(x => x.PARAKEY == key)?.PARAVALUE ?? "";
|
|
}
|
|
|
|
public async Task<int> GetEarlyWarningValue()
|
|
{
|
|
var data = await GetValueParameter("EarlyWarningValue");
|
|
if (string.IsNullOrEmpty(data) || int.TryParse(data, out int value))
|
|
{
|
|
return 5;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
public async Task<List<SsoUserTokenInfo>> GetTokens()
|
|
{
|
|
var key = CacheKeys.TokenList;
|
|
if (await _redisManager.ExistsAsync(key))
|
|
{
|
|
return await _redisManager.GetListAsync<SsoUserTokenInfo>(key);
|
|
}
|
|
return new List<SsoUserTokenInfo>();
|
|
}
|
|
|
|
public async Task AddToken(SsoUserTokenInfo token)
|
|
{
|
|
var key = CacheKeys.TokenList;
|
|
if (!await _redisManager.ExistsAsync(key))
|
|
{
|
|
await _redisManager.SetAsync(key, new List<SsoUserTokenInfo>() { token });
|
|
}
|
|
else
|
|
{
|
|
var list = await _redisManager.GetListAsync<SsoUserTokenInfo>(key);
|
|
list.Add(token);
|
|
await _redisManager.SetAsync(key, list, TimeSpan.FromDays(1));
|
|
}
|
|
}
|
|
}
|
|
}
|