using DevExpress.Xpo; using Ips.Library.DxpLib; using Ips.Spd.SysSettings; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; namespace Ips.Sps.SysSettings { public class SysSettingManager { public static readonly SysSettingManager It = new SysSettingManager(); private SysSettingManager() { LoadSettings(); } public SiteSettingModel SiteSetting { get; set; } = new SiteSettingModel(); public PosSettingModel PosSetting { get; set; } = new PosSettingModel(); public List AdcSettings { get; set; } = new List() { new AdcSettingModel() }; public void LoadSettings() { Session session = new Session(); var settingList = session.Query().ToList(); foreach (var item in settingList) { try { switch (item.Name) { case nameof(SiteSetting): SiteSetting = JsonSerializer.Deserialize(item.Value); break; case nameof(PosSetting): PosSetting = JsonSerializer.Deserialize(item.Value); break; case nameof(AdcSettings): AdcSettings = JsonSerializer.Deserialize>(item.Value); break; } } catch (Exception ex) { MsgHelper.ShowError($"加载配置出错,错误消息:{ex.Message}"); } } } public void SaveSettings() { using (UnitOfWork uow = new UnitOfWork()) { var settingList = uow.Query().ToList(); SaveSettingItem(uow, settingList, nameof(SiteSetting), SiteSetting); SaveSettingItem(uow, settingList, nameof(PosSetting), PosSetting); SaveSettingItem(uow, settingList, nameof(AdcSettings), AdcSettings); uow.CommitChanges(); } } protected void SaveSettingItem(UnitOfWork uow, List settingList, string name, object value) { var settingVal = JsonSerializer.Serialize(value); var setting = settingList.FirstOrDefault(m => m.Name == name) ?? new SysSetting(uow, name, ""); setting.Value = settingVal; } } }