You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

169 lines
4.6 KiB
C#

9 months ago
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();
}
}
}
}