SysDicDataCacheManager.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Hotline.Caching.Interfaces;
  2. using Hotline.Settings;
  3. using XF.Domain.Cache;
  4. using XF.Domain.Dependency;
  5. using XF.Domain.Repository;
  6. namespace Hotline.Caching.Services
  7. {
  8. public class SysDicDataCacheManager : ISystemDicDataCacheManager, IScopeDependency
  9. {
  10. private readonly IRepository<SystemDicData> _sysDicDataRepository;
  11. private readonly ITypedCache<IReadOnlyList<SystemDicData>> _cacheSysDicData;
  12. public SysDicDataCacheManager(IRepository<SystemDicData> sysDicDataRepository, ITypedCache<IReadOnlyList<SystemDicData>> cacheSysDicData)
  13. {
  14. _sysDicDataRepository = sysDicDataRepository;
  15. _cacheSysDicData = cacheSysDicData;
  16. }
  17. public IReadOnlyList<SystemDicData> GetSysDicDataCache(string code)
  18. {
  19. var sysDicDataList = _cacheSysDicData.GetOrSet(code, k =>
  20. {
  21. return _sysDicDataRepository.Queryable().Where(x => x.DicTypeCode == code && x.IsShow == true).OrderBy(x=>x.Sort).ToTreeAsync(x => x.Children, it => it.ParentId, "").GetAwaiter().GetResult();
  22. });
  23. return sysDicDataList;
  24. }
  25. public IReadOnlyList<SystemDicData> GetVisitSatisfaction()
  26. => GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction);
  27. public void RemoveSysDicDataCache(string code)
  28. {
  29. _cacheSysDicData.Remove(code);
  30. }
  31. }
  32. }