using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Zxd.Core.Shared.Dto; namespace Hg.Core.Domain { internal class DepartmentDomain : IDepartmentDomain { private readonly IBaseRepository _companyBaseConfRepository; private readonly IHttpClient _httpClient; private readonly IMapper _mapper; private readonly ICacheDomain _cacheDomain; private readonly IConfiguration _configuration; private readonly IRedisManager _redisManager; private readonly SystemConfig _systemConfig; public DepartmentDomain(IConfiguration configuration, IBaseRepository companyBaseConfRepository, IHttpClient httpClient, IMapper mapper, ICacheDomain cacheDomain, IRedisManager redisManager ) { _systemConfig = configuration.GetSection("SystemConfig").Get(); _configuration = configuration; _companyBaseConfRepository = companyBaseConfRepository; _httpClient = httpClient; _mapper = mapper; _cacheDomain = cacheDomain; _redisManager = redisManager; } public async Task> GetDeptments(string? appid = null) { var key = CacheKeys.DeptmentList; var data = new List(); if (!await _redisManager.ExistsAsync(key)) { var response = await _httpClient.GetAsync>>(_systemConfig.GetZxdDepts()); if (response.Code == 0) { data = response.Data.Where(x => x.IsDept.HasValue && x.IsDept.Value) .If(!string.IsNullOrEmpty(appid), x => x.Where(x => x.Appid == appid)).ToList(); } } else { data = await _redisManager.GetListAsync(key); data = data.Where(x => x.IsDept.HasValue && x.IsDept.Value) .If(!string.IsNullOrEmpty(appid), x => x.Where(x => x.Appid == appid)).ToList(); } return data; } public async Task> GetDeptmentAll() { var key = CacheKeys.DeptmentList; var data = new List(); if (!await _redisManager.ExistsAsync(key)) { var response = await _httpClient.GetAsync>>(_systemConfig.GetZxdDepts()); if (response.Code == 0) { data = response.Data; } } else { data = await _redisManager.GetListAsync(key); data = data.ToList(); } return data; } } }