SystemSettingCacheManager.cs 1.2 KB

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