using NPoco; using System; using System.Collections.Generic; using System.Data.SQLite; using System.IO; using NLog; namespace POSV.Service { public class Global { private static Logger logger = NLog.LogManager.GetCurrentClassLogger(); private static object _lock = new object(); private Dictionary _globalConfig = null; private static Global _instance = null; public static Global Instance { get { if (_instance == null) { lock (_lock) { _instance = new Global(); _instance.InitConfig(); logger.Info("加载全局配置参数......"); } } return _instance; } } public string DataBaseFullPath { get { return Path.Combine(AppDomain.CurrentDomain.BaseDirectory , @"data\msc.s3db"); } } public Database OpenDataBase { get { return new Database(Global.Instance.SQLiteConnectionString, DatabaseType.SQLite, SQLiteFactory.Instance); } } /// /// 通用操作锁 /// public object SyncLock = new object(); /// /// 全部重载 /// public void ReloadConfig() { this.InitConfig(); } public void InitConfig() { try { using (IDatabase db = Instance.OpenDataBase) { this._globalConfig = db.Dictionary("select [keys],[values] from [pos_config];"); } if (this._globalConfig != null) { logger.Debug("获取消息中心默认参数成功..."); } else { this._globalConfig = new Dictionary(); } } catch (Exception ex) { logger.Error(ex, "加载消息中心全局配置异常"); } } public string GlobalConfigValue(string keys) { if (this._globalConfig.ContainsKey(keys)) { return this._globalConfig[keys]; } else { return null; } } public string GlobalConfigStringValue(string keys) { return GlobalConfigStringValue(keys , string.Empty); } public string GlobalConfigStringValue(string keys,string defaultValue) { if (this._globalConfig.ContainsKey(keys)) { return this._globalConfig[keys]; } else { return defaultValue; } } /// /// 加载配置参数,返回Int类型 /// /// /// public int GlobalConfigIntValue(string keys) { return GlobalConfigIntValue(keys , 0); } public int GlobalConfigIntValue(string keys , int defaultValue) { if (this._globalConfig.ContainsKey(keys)) { int result = defaultValue; int.TryParse(this._globalConfig[keys] , out result); return result; } else { return defaultValue; } } public string SQLiteConnectionString { get { SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder(); builder.DataSource = Path.Combine(AppDomain.CurrentDomain.BaseDirectory , @"data\msc.s3db"); //builder.Password = "passwd"; builder.Version = 3; builder.CacheSize = 10000; builder.DefaultTimeout = 5000; //builder.PageSize = 4096; builder.FailIfMissing = true; builder.Pooling = true; //builder.DefaultIsolationLevel = System.Data.IsolationLevel.ReadCommitted; builder.SyncMode = SynchronizationModes.Off; builder.JournalMode = SQLiteJournalModeEnum.Truncate; builder.UseUTF16Encoding = false; return builder.ToString(); } } } }