using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Utils.Security;
|
|
using WeighBusiness.BL;
|
|
using WeighBusiness.Utils;
|
|
|
|
namespace WeighBusiness.BO
|
|
{
|
|
public class Setting : Base
|
|
{
|
|
public override string TableName { get { return TableNames.配置表; } }
|
|
|
|
public string RecentUser { get; set; }
|
|
public string Settings { get; set; }
|
|
}
|
|
|
|
public class SettingData
|
|
{
|
|
public long ID { get; set; }
|
|
public long RecentUserID { get; set; }
|
|
public string RecentUserName { get; set; }
|
|
public Dictionary<string, string> Setting { get; set; }
|
|
|
|
}
|
|
public static class SettingDataEx
|
|
{
|
|
|
|
public static SettingData ToSettingData(this Setting setting, bool all = true)//解密
|
|
{
|
|
var data = new SettingData();
|
|
data.ID = setting.ID;
|
|
var recentUser = SecurityUtil.ChangeBack(setting.RecentUser, UserBL.a);
|
|
SetRecentUser(recentUser, data);
|
|
if (all) {
|
|
var configs = SecurityUtil.ChangeBack(setting.Settings, UserBL.a);
|
|
SetSettings(configs, data);
|
|
}
|
|
return data;
|
|
}
|
|
|
|
public static Setting ToSetting(this SettingData data)//加密
|
|
{
|
|
var setting = new Setting();
|
|
setting.ID = data.ID;
|
|
var recentUser = GetRecentUser(data.RecentUserID, data.RecentUserName);
|
|
setting.RecentUser = SecurityUtil.Change(recentUser, UserBL.a);
|
|
var configs = GetConfigs(data.Setting);
|
|
setting.Settings = SecurityUtil.Change(configs, UserBL.a);
|
|
return setting;
|
|
}
|
|
|
|
#region private
|
|
private const char Pair = '|';
|
|
private const char ConfigSplit = '=';
|
|
|
|
private static void SetRecentUser(string recentUser, SettingData data)
|
|
{
|
|
if (recentUser.IsNullOrEmpty()) {
|
|
SetDefaultRecentUser(data);
|
|
return;
|
|
}
|
|
var pair = recentUser.Split(Pair);
|
|
if (pair.Length == 2) {
|
|
long id;
|
|
if (long.TryParse(pair[0], out id)) {
|
|
data.RecentUserID = id;
|
|
data.RecentUserName = pair[1];
|
|
return;
|
|
}
|
|
}
|
|
SetDefaultRecentUser(data);
|
|
}
|
|
|
|
private static void SetSettings(string configs, SettingData data)
|
|
{
|
|
data.Setting = new Dictionary<string, string>();
|
|
var list = configs.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
|
|
if (list == null || list.Length == 0)
|
|
return;
|
|
foreach (var item in list) {
|
|
var pair = item.Split(ConfigSplit);
|
|
if (pair.Length != 2 || pair[0].IsNullOrEmpty())
|
|
continue;
|
|
data.Setting[pair[0]] = pair[1];
|
|
}
|
|
}
|
|
|
|
private static void SetDefaultRecentUser(SettingData data)
|
|
{
|
|
data.RecentUserID = 1;
|
|
data.RecentUserName = "system";
|
|
}
|
|
|
|
private static string GetRecentUser(long recentUserID, string recentUserName)
|
|
{
|
|
return recentUserID.ToString() + Pair.ToString() + recentUserName;
|
|
}
|
|
|
|
private static string GetConfigs(Dictionary<string, string> dictionary)
|
|
{
|
|
if (dictionary == null || dictionary.Count == 0)
|
|
return string.Empty;
|
|
|
|
var sb = new StringBuilder();
|
|
bool isFirst = true;
|
|
foreach (var item in dictionary) {
|
|
if (isFirst)
|
|
isFirst = false;
|
|
else
|
|
sb.Append(Environment.NewLine);
|
|
|
|
sb.Append(item.Key).Append(ConfigSplit).Append(item.Value);
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|