SysDicDataCacheManager.cs 1.0 KB

12345678910111213141516171819202122232425262728
  1. using Hotline.Caching.Interfaces;
  2. using Hotline.Settings;
  3. using XF.Domain.Cache;
  4. using XF.Domain.Dependency;
  5. namespace Hotline.Caching.Services
  6. {
  7. public class SysDicDataCacheManager : ISysDicDataCacheManager, IScopeDependency
  8. {
  9. private readonly ISysDicDataRepository _sysDicDataRepository;
  10. private readonly ITypedCache<IReadOnlyList<SysDicData>> _cacheSysDicData;
  11. public SysDicDataCacheManager(ISysDicDataRepository sysDicDataRepository, ITypedCache<IReadOnlyList<SysDicData>> cacheSysDicData)
  12. {
  13. _sysDicDataRepository = sysDicDataRepository;
  14. _cacheSysDicData = cacheSysDicData;
  15. }
  16. public IReadOnlyList<SysDicData> GetSysDicDataCache(string code)
  17. {
  18. var sysDicDataList = _cacheSysDicData.GetOrSet(code, k =>
  19. {
  20. return _sysDicDataRepository.Queryable().Where(x => x.DicTypeCode == code).ToTreeAsync(x => x.Children, it => it.ParentId, "").GetAwaiter().GetResult();
  21. });
  22. return sysDicDataList;
  23. }
  24. }
  25. }