SystemSettingCacheManager.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Hotline.Caching.Interfaces;
  2. using Hotline.Settings;
  3. using XF.Domain.Cache;
  4. using XF.Domain.Dependency;
  5. using XF.Domain.Exceptions;
  6. using XF.Domain.Repository;
  7. namespace Hotline.Caching.Services
  8. {
  9. public class SystemSettingCacheManager : ISystemSettingCacheManager, IScopeDependency
  10. {
  11. private readonly ITypedCache<SystemSetting> _cacheSystemSetting;
  12. private readonly IRepository<SystemSetting> _systemSettingRepository;
  13. public SystemSettingCacheManager(ITypedCache<SystemSetting> cacheSystemSetting, IRepository<SystemSetting> systemSettingRepository)
  14. {
  15. _cacheSystemSetting = cacheSystemSetting;
  16. _systemSettingRepository = systemSettingRepository;
  17. }
  18. public SystemSetting? GetSetting(string code)
  19. {
  20. var setting = _cacheSystemSetting.GetOrSet(code, x =>
  21. {
  22. var dbsetting = _systemSettingRepository.GetAsync(d => d.Code == code).GetAwaiter().GetResult();
  23. if (dbsetting == null)
  24. throw new UserFriendlyException("无效系统设置");
  25. return dbsetting;
  26. });
  27. return setting;
  28. }
  29. public void DelSystemSetting(string code)
  30. {
  31. _cacheSystemSetting.Remove(code);
  32. }
  33. }
  34. }