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

122 lines
3.1 KiB

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
}
}