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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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