|
|
|
|
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<string , string> _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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 通用操作锁
|
|
|
|
|
/// </summary>
|
|
|
|
|
public object SyncLock = new object();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 全部重载
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void ReloadConfig()
|
|
|
|
|
{
|
|
|
|
|
this.InitConfig();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void InitConfig()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using (IDatabase db = Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
this._globalConfig = db.Dictionary<string , string>("select [keys],[values] from [pos_config];");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this._globalConfig != null)
|
|
|
|
|
{
|
|
|
|
|
logger.Debug("获取消息中心默认参数成功...");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this._globalConfig = new Dictionary<string, string>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 加载配置参数,返回Int类型
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="keys"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|