SysSettingManager.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using DevExpress.Xpo;
  2. using Ips.Library.DxpLib;
  3. using Ips.Spd.SysSettings;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. namespace Ips.Sps.SysSettings
  11. {
  12. public class SysSettingManager
  13. {
  14. public static readonly SysSettingManager It = new SysSettingManager();
  15. private SysSettingManager()
  16. {
  17. LoadSettings();
  18. }
  19. public SiteSettingModel SiteSetting { get; set; } = new SiteSettingModel();
  20. public PosSettingModel PosSetting { get; set; } = new PosSettingModel();
  21. public List<AdcSettingModel> AdcSettings { get; set; } = new List<AdcSettingModel>()
  22. {
  23. new AdcSettingModel()
  24. };
  25. public void LoadSettings()
  26. {
  27. Session session = new Session();
  28. var settingList = session.Query<SysSetting>().ToList();
  29. foreach (var item in settingList)
  30. {
  31. try
  32. {
  33. switch (item.Name)
  34. {
  35. case nameof(SiteSetting):
  36. SiteSetting = JsonSerializer.Deserialize<SiteSettingModel>(item.Value);
  37. break;
  38. case nameof(PosSetting):
  39. PosSetting = JsonSerializer.Deserialize<PosSettingModel>(item.Value);
  40. break;
  41. case nameof(AdcSettings):
  42. AdcSettings = JsonSerializer.Deserialize<List<AdcSettingModel>>(item.Value);
  43. break;
  44. }
  45. }
  46. catch (Exception ex)
  47. {
  48. MsgHelper.ShowError($"加载配置出错,错误消息:{ex.Message}");
  49. }
  50. }
  51. }
  52. public void SaveSettings()
  53. {
  54. using (UnitOfWork uow = new UnitOfWork())
  55. {
  56. var settingList = uow.Query<SysSetting>().ToList();
  57. SaveSettingItem(uow, settingList, nameof(SiteSetting), SiteSetting);
  58. SaveSettingItem(uow, settingList, nameof(PosSetting), PosSetting);
  59. SaveSettingItem(uow, settingList, nameof(AdcSettings), AdcSettings);
  60. uow.CommitChanges();
  61. }
  62. }
  63. protected void SaveSettingItem(UnitOfWork uow, List<SysSetting> settingList, string name, object value)
  64. {
  65. var settingVal = JsonSerializer.Serialize(value);
  66. var setting = settingList.FirstOrDefault(m => m.Name == name) ?? new SysSetting(uow, name, "");
  67. setting.Value = settingVal;
  68. }
  69. }
  70. }