using Hotline.Caching.Interfaces; using Hotline.Settings; using XF.Domain.Cache; using XF.Domain.Dependency; namespace Hotline.Caching.Services { public class SysDicDataCacheManager : ISysDicDataCacheManager, IScopeDependency { private readonly ISysDicDataRepository _sysDicDataRepository; private readonly ITypedCache> _cacheSysDicData; public SysDicDataCacheManager(ISysDicDataRepository 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).ToTreeAsync(x => x.Children, it => it.ParentId, "").GetAwaiter().GetResult(); }); return sysDicDataList; } } }