using DG.EntityFramework; using DG.Redis; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Zxd.Crm.Domain.Dto; using Zxd.Crm.Domain.Impl; using Zxd.Domain.Config; using Zxd.Entity.Zxd; using Zxd.EntityFramework; namespace Zxd.Crm.Domain { public 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); 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> GetDeptMapList() { var key = CacheKeys.UserDeptMapList; if (await _redisManager.ExistsAsync(key)) { try { return await _redisManager.GetListAsync(key); } catch (Exception ex) { await _redisManager.RemoveAsync(key); } } return new List(); } public async Task AddDeptMapInfo(List deptList) { var key = CacheKeys.UserDeptMapList; if (!await _redisManager.ExistsAsync(key)) { await _redisManager.SetAsync(key, deptList, TimeSpan.FromMinutes(30)); } else { var list = await _redisManager.GetListAsync(key); list.AddRange(deptList); await _redisManager.SetAsync(key, list, TimeSpan.FromMinutes(30)); } } public async Task UpdateDeptMapInfo(List deptList) { var key = CacheKeys.UserDeptMapList; if (deptList == null || deptList.Count == 0) { await _redisManager.RemoveAsync(key); return; } if (!await _redisManager.ExistsAsync(key)) { await _redisManager.SetAsync(key, deptList); } else { await _redisManager.SetAsync(key, deptList, TimeSpan.FromMinutes(30)); } } } }