using Cms.Core.WebApi.Config; using Cms.Core.WebApi.Domain.Impl; using DG.Core; using DG.Redis; using Zxd.Core.Shared.Dto; namespace Cms.Core.WebApi.Domain { internal class CacheDomain : ICacheDomain { private readonly IHttpClient _httpClient; private readonly IRedisManager _redisManager; private readonly IMapper _mapper; private readonly IConfiguration _configuration; private readonly IHttpContextAccessor _httpContext; private readonly SystemConfig _systemConfig; public CacheDomain(IRedisManager redisManager, IMapper mapper, IConfiguration configuration, IHttpContextAccessor httpContext, IHttpClient httpClient) { _redisManager = redisManager; _mapper = mapper; _configuration = configuration; _httpContext = httpContext; _httpClient = httpClient; _systemConfig = _configuration.GetSection("SystemConfig").Get(); } public async Task> GetDeptments() { var key = $"{CacheKeys.DeptList}"; if (!await _redisManager.ExistsAsync(key)) { var response = await _httpClient.GetAsync>>(_systemConfig.GetDepts()); if (response.Code == 0) { await _redisManager.SetAsync(key, response.Data, TimeSpan.FromDays(1)); return response.Data; } } else { return await _redisManager.GetListAsync(key); } return new List(); } } }