using Hotline.Caching.Interfaces; using Hotline.Settings; using XF.Domain.Cache; using XF.Domain.Dependency; using XF.Domain.Repository; namespace Hotline.Caching.Services { public class SysDicDataCacheManager : ISystemDicDataCacheManager, IScopeDependency { private readonly IRepository _sysDicDataRepository; private readonly ITypedCache> _cacheSysDicData; public SysDicDataCacheManager(IRepository sysDicDataRepository, ITypedCache> cacheSysDicData) { _sysDicDataRepository = sysDicDataRepository; _cacheSysDicData = cacheSysDicData; } public IReadOnlyList GetSysDicDataCache(string code) { var sysDicDataList = _cacheSysDicData.GetOrSet(code, k => { return _sysDicDataRepository.Queryable().Where(x => x.DicTypeCode == code && x.IsShow == true).OrderBy(x=>x.Sort).ToTreeAsync(x => x.Children, it => it.ParentId, "").GetAwaiter().GetResult(); }); return sysDicDataList; } public IReadOnlyList GetVisitSatisfaction() => GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction); public void RemoveSysDicDataCache(string code) { _cacheSysDicData.Remove(code); } } }