TableAccessLevelCacheManager.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Hotline.Caches;
  7. using Hotline.Settings;
  8. using XF.Domain.Cache;
  9. using XF.Domain.Dependency;
  10. namespace Hotline.CacheManager
  11. {
  12. internal class TableAccessLevelCacheManager : ITableAccessLevelCacheManager, IScopeDependency
  13. {
  14. private const string TableAccessLevelCacheKey = "TableAccessLevel";
  15. private readonly ITypedCache<IReadOnlyList<TableAccessLevelCacheItem>> _cache;
  16. private readonly ITableAccessLevelRepository _repository;
  17. public TableAccessLevelCacheManager(ITypedCache<IReadOnlyList<TableAccessLevelCacheItem>> cache, ITableAccessLevelRepository repository)
  18. {
  19. _cache = cache;
  20. _repository = repository;
  21. }
  22. /// <summary>
  23. /// 查询所有
  24. /// </summary>
  25. /// <returns></returns>
  26. public IReadOnlyList<TableAccessLevelCacheItem> QueryAll() => _cache.Get(TableAccessLevelCacheKey);
  27. /// <summary>
  28. /// 重载
  29. /// </summary>
  30. public void Reload()
  31. {
  32. var levels = _repository.QueryAsync(d => true).GetAwaiter().GetResult();
  33. var items = levels.Select(d => new TableAccessLevelCacheItem
  34. {
  35. RoleCode = d.RoleCode,
  36. TableName = d.TableName,
  37. AccessLevel = d.AccessLevel,
  38. }).ToList();
  39. _cache.Remove(TableAccessLevelCacheKey);
  40. _cache.Add(TableAccessLevelCacheKey, items);
  41. }
  42. }
  43. }