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