SysDicDataCacheManager.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. using Hotline.Caches;
  2. using Hotline.Settings;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using XF.Domain.Cache;
  9. using XF.Domain.Dependency;
  10. namespace Hotline.CacheManager
  11. {
  12. public class SysDicDataCacheManager : ISysDicDataCacheManager, IScopeDependency
  13. {
  14. private readonly ISysDicDataRepository _sysDicDataRepository;
  15. private readonly ITypedCache<IReadOnlyList<SysDicData>> _cacheSysDicData;
  16. public SysDicDataCacheManager(ISysDicDataRepository sysDicDataRepository,ITypedCache<IReadOnlyList<SysDicData>> cacheSysDicData)
  17. {
  18. _sysDicDataRepository = sysDicDataRepository;
  19. _cacheSysDicData = cacheSysDicData;
  20. }
  21. public IReadOnlyList<SysDicData> GetSysDicDataCache(string code)
  22. {
  23. var sysDicDataList = _cacheSysDicData.GetOrAdd(code, k =>
  24. {
  25. return _sysDicDataRepository.Queryable().Where(x => x.DicTypeCode == code).ToTreeAsync(x => x.Children, it => it.ParentId, "").GetAwaiter().GetResult();
  26. });
  27. return sysDicDataList;
  28. }
  29. }
  30. }