using Api.Framework; using Api.Framework.Enums; using Api.Framework.Model; using Api.Framework.SDK; using Api.Framework.Tools; using Api.Framework.Utils; using BackupAndImport; using BackupAndImport.ECO; using BackupAndImport.ECO.Entitys; using BackupAndImport.ECO.Events; using BackupAndImport.Entitys; using BackupAndImport.Entitys.annaer; using BackupAndImport.Entitys.annaer_cloud; using BackupAndImport.Entitys.lieke; using BackupAndImport.Entitys.悠哉; using BackupAndImport.Entitys.淘某喵; using BackupAndImport.Entitys.速推客; using BackupAndImport.NianChu; using BackupAndImport.Properties; using CsharpHttpHelper; using DataDocking.Entitys; using DataDocking.Utils; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using SqlSugar; using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using BackupAndImport.速推客云端; using BackupAndImport.速推客云端.Entitys; using CsharpHttpHelper.Enum; using DevExpress.Data.Helpers; using Newtonsoft.Json.Linq; using UI.Framework.Forms; using static Api.Framework.Cps.AlimamaApi; using static BackupAndImport.ECO.Eco; using static BackupAndImport.ECO.EventLog; namespace DataDocking { public partial class MainForm : BaseForm { /// /// 用户自定义回复库 /// public class fl_plugin_autoanswer_definedlib : base_model { /// /// 平台类型 /// public string chat_type { get; set; } /// /// 关键词 /// public string antistop { get; set; } /// /// 匹配模式 0是为完全匹配,false为模糊 and 正则表达式 【这里用int类型,主要是因为dev中的Gridcontrol bool好像不支持 修改界面显示】 /// public int match_pattern { get; set; } /// /// 指定回复的机器人信息,为空时所有机器人都使用 /// public string specific_robot_setting_text { get; set; } /// /// 回复内容 /// [SugarColumn(Length = 10000)]//设置字段为长文本 public string content { get; set; } /// /// 是否通知管理员 【这里用int类型,主要是因为dev中的Gridcontrol bool好像不支持 修改界面显示】 /// public int is_alert_admin { get; set; } public bool CheckChatType(ChatType type) { return string.IsNullOrWhiteSpace(this.chat_type) ? false : this.chat_type.Split(',').FirstOrDefault(f => ushort.Parse(f) == (ushort)type) != null ? true : false; } } public class fl_plugin_autoanswer_userdefinedlibrary : base_model { /// /// 平台类型 /// public string chat_type { get; set; } /// /// 关键词 /// public string antistop { get; set; } /// /// 匹配模式 0是为完全匹配,false为模糊 and 正则表达式 【这里用int类型,主要是因为dev中的Gridcontrol bool好像不支持 修改界面显示】 /// public int match_pattern { get; set; } /// /// 回复内容 /// [SugarColumn(Length = 10000)]//设置字段为长文本 public string content { get; set; } /// /// 是否通知管理员 【这里用int类型,主要是因为dev中的Gridcontrol bool好像不支持 修改界面显示】 /// public int is_alert_admin { get; set; } public bool CheckChatType(ChatType type) { return string.IsNullOrWhiteSpace(this.chat_type) ? false : this.chat_type.Split(',').FirstOrDefault(f => ushort.Parse(f) == (ushort)type) != null ? true : false; } } /// /// 打标记条件 /// public enum SignType { 好友天数 = 0, 查询次数 = 1, 订单总数 = 2, 退款总数 = 3, 推荐人数 = 4 } /// /// 自动打标签数据表 /// public class fl_plugin_signcontacts_sign_info : base_model { public SignType signtype { get; set; } public long amount { get; set; } public string sign { get; set; } } public MainForm() { InitializeComponent(); this.Text = Resources.MainFormTitle; } public void CloseForm() { if (!this.IsDisposed) { this.Invoke(new Action(delegate { this.Close(); this.Dispose(); })); } } /// /// 数据库表中的数据 /// List tableData = new List() { "延迟结算配置", "会员分组配置", "分出比例配置", "自定义问答", "自动打标签数据", "独立分出比例" }; private void MainForm_Load(object sender, EventArgs e) { BackupAndImport.ECO.EventLog.LogEvent += EventLog_LogEvent; BackupAndImport.NianChu.EventLog.LogEvent += NCEventLog_LogEvent; BackupAndImport.速推客云端.EventLog.LogEvent += STKEventLog_LogEvent; this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, "全选")); this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, "全消")); this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, tableData[0])); this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, tableData[1])); this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, tableData[2])); this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, tableData[3])); this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, tableData[4])); this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, tableData[5])); var session = ApiClient.GetSession(); var system_configs = session.Find("select * from fl_dictionary_item"); if (system_configs != null && system_configs.Count != 0) { foreach (var item in system_configs) { this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, item.dickey)); } this.checkedListBoxControl1.Tag = system_configs; } else this.checkedListBoxControl1.Items.Add(new CheckedListBoxItem(null, "无配置信息!")); Auto_Bak_onoff.Checked = Class1.Config.Auto_Bak_OnOff; label12.Text = (session.CurrentConnectionConfig.DbType == SqlSugar.DbType.MySql) ? "Mysql" : "Sqlite"; if (string.IsNullOrWhiteSpace(Class1.Config.Auto_Bak_Path)) Class1.Config.Auto_Bak_Path = Util.MapPath($"File\\备份"); textEdit7.Text = Class1.Config.Auto_Bak_Path; dateTimePicker1.Value = Class1.Config.Auto_Bak_Time; numericUpDown2.Value = Class1.Config.Auto_Bak_Day; checkBox6.Checked = Class1.Config.Is_Bak_Send_Email; #region 增加所有微信机器人账号 this.comboBoxEdit3.Properties.Items.Clear(); //var weixinBases = Chat.Framework.ChatClient.WXClient.Values.ToList(); var objList = new List() { "请选择机器人" }; var robotWXInfos = session.Find("select * from fl_robot_info where type = 2"); if (robotWXInfos != null && robotWXInfos.Count != 0) { foreach (var item in robotWXInfos) { objList.Add(item.name); } } this.comboBoxEdit3.Properties.Items.AddRange(objList); #endregion #region 增加所有QQ机器人账号 this.comboBoxEdit1.Properties.Items.Clear(); //var qqBases = Chat.Framework.ChatClient.QQPool.QQClients.Values; var objqqList = new List() { "请选择机器人" }; var robotQQInfos = session.Find("select * from fl_robot_info where type = 1"); if (robotQQInfos != null && robotQQInfos.Count != 0) { foreach (var item in robotQQInfos) { objqqList.Add(item.name); } } this.comboBoxEdit1.Properties.Items.AddRange(objqqList); #endregion } private void STKEventLog_LogEvent(object sender, LogEvent e) { this.Invoke(new Action(() => { try { if (memoEdit5.Text.Length >= 1000000) { memoEdit5.Text = memoEdit5.Text.Remove(300); } memoEdit5.Text = $@" {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:{e.Message.Trim()} {memoEdit5.Text}"; //memoEdit5.SelectionStart = memoEdit5.Text.Length; } catch (Exception ex) { ShowError($"日志异常:{ex.Message} - {ex.StackTrace}"); } })); } public string RemoveEmoji(string text) { try { if (string.IsNullOrWhiteSpace(text)) return string.Empty; if (Regex.IsMatch(text, @"^(\d+(\.\d+)?)$")) return text; //if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["RemoveWechatEmoji"]) && System.Configuration.ConfigurationManager.AppSettings["RemoveWechatEmoji"].ToUpper() == "FALSE") //{ // return text; //} //text = Regex.Replace(Regex.Replace(text, @"\%uD.{3}", ""), "[👃☺️☹️☠️✊✌️☝✋✍️♀️♂️]", ""); foreach (var a in text) { byte[] bts = Encoding.UTF32.GetBytes(a.ToString()); if (bts[0].ToString() == "253" && bts[1].ToString() == "255") { text = text.Replace(a.ToString(), ""); } } } catch (Exception ex) { } return text; } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { try { Class1.Config.Is_Bak_Send_Email = checkBox6.Checked; BackupAndImport.ECO.EventLog.LogEvent -= EventLog_LogEvent; BackupAndImport.NianChu.EventLog.LogEvent -= NCEventLog_LogEvent; Api.Framework.Tools.Util.Save(Class1.Config); } catch (Exception ex) { ShowError(ex); } } private void EventLog_LogEvent(object sender, BackupAndImport.ECO.Events.LogEvent e) { this.Invoke(new Action(() => { try { if (memoEdit3.Text.Length >= 1000) { memoEdit3.Text = memoEdit3.Text.Remove(300); } memoEdit3.Text = $@" {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:{e.Message.Trim()} {memoEdit3.Text}"; //memoEdit3.SelectionStart = memoEdit3.Text.Length; } catch (Exception ex) { ShowError($"日志异常:{ex.Message} - {ex.StackTrace}"); } })); } private void NCEventLog_LogEvent(object sender, LogEvent e) { this.Invoke(new Action(() => { try { if (memoEdit4.Text.Length >= 1000) { memoEdit4.Text = memoEdit4.Text.Remove(300); } memoEdit4.Text = $@" {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:{e.Message.Trim()} {memoEdit4.Text}"; //memoEdit4.SelectionStart = memoEdit4.Text.Length; } catch (Exception ex) { ShowError($"日志异常:{ex.Message} - {ex.StackTrace}"); } })); } #region 导入其他数据库 string checkState = string.Empty; private void simpleButton1_Click(object sender, EventArgs e) { try { if (comboBoxEdit2.SelectedIndex == 0) throw new Exception("请先选择要导入的软件名称"); if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { bool isEnabled = false; var path = folderBrowserDialog1.SelectedPath; if (Directory.Exists(path)) { checkState = string.Empty; //string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(数据库.db$)|(AliPro.db$)|(aliTools.db$)|(AlimamaPro.Framework.Configs.SQLConfig.config$)|(db.db$)|(积分.db$)|(订单.db$)|(lieke.db)|(AlimamaPro.Framework.Configs.Config))", -1); bool isSeek = false; #region alitools if (comboBoxEdit2.SelectedIndex == 1) { string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(AliPro.db$)|(aliTools.db$)|(AlimamaPro.Framework.Configs.SQLConfig.config$)|(AlimamaPro.Framework.Configs.Config))", -1); if (!string.IsNullOrEmpty(paths.FirstOrDefault(f => f.Contains("AliPro.db") || f.Contains("aliTools.db") || f.Contains("AlimamaPro.Framework.Configs.SQLConfig.config")))) { isSeek = true; var sqlConfig = paths.FirstOrDefault(f => f.Contains("AlimamaPro.Framework.Configs.SQLConfig.config")); var settingConfig = paths.FirstOrDefault(f => f.Contains("AlimamaPro.Framework.Configs.Config")); if (sqlConfig != null && settingConfig != null) { var settingJson = File.ReadAllText(settingConfig); var settingResult = HttpExtend.JsonToDictionary(settingJson); if (settingResult != null && settingResult.ContainsKey("积分_换算比例")) { var ratio = settingResult["积分_换算比例"].ToString(); if (ratio == "0") { ShowError("Alitools积分比例为0,终止操作~!"); return; } simpleButton2.Tag = ratio; } else { ShowError("AlimamaPro.Framework.Configs.Config 配置不存在,终止操作~!"); return; } var text = File.ReadAllText(sqlConfig); var result = HttpExtend.JsonToDictionary(text); var slqModel = result["SQLModel"].ToString(); if (slqModel == "1") //SQLiteConfig { textEdit1.Text = paths.FirstOrDefault(f => f.ToLower().Contains("alipro.db")); if (string.IsNullOrEmpty(textEdit1.Text)) textEdit1.Text = paths.FirstOrDefault(f => f.ToLower().Contains("alitools.db")); checkState = conn.CheckSqliteLink(textEdit1.Text.Trim(), ""); //label7.Text = "AliTools"; label8.Text = "Sqlite"; } else if (slqModel == "2")//MySQLConfig { textEdit1.Text = sqlConfig; var mySQLConfig = result["MySQLConfig"] as Dictionary; checkState = conn.CheckMysqlLink(mySQLConfig["Host"].ToString(), mySQLConfig["Name"].ToString(), mySQLConfig["User"].ToString(), mySQLConfig["Pass"].ToString(), mySQLConfig["Port"].ToString()); //mysql链接是否成功 //label7.Text = "AliTools"; label8.Text = "MySql"; } isEnabled = true; } else throw new Exception("选中的目录中未存在源数据库信息,请确定后重试"); } } #endregion #region 安娜尔 else if (comboBoxEdit2.SelectedIndex == 2) { string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(数据库.db$))", -1); textEdit1.Text = paths.FirstOrDefault(f => f.Contains("数据库.db")); if (!string.IsNullOrEmpty(textEdit1.Text.Trim())) { isSeek = true; checkState = conn.CheckSqliteLink(textEdit1.Text.Trim(), ""); //label7.Text = "安娜尔"; label8.Text = "Sqlite"; } } #endregion #region 悠哉 else if (comboBoxEdit2.SelectedIndex == 3) { string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(数据库.db$)|(AliPro.db$)|(aliTools.db$)|(AlimamaPro.Framework.Configs.SQLConfig.config$)|(db.db$)|(积分.db$)|(订单.db$)|(lieke.db)|(AlimamaPro.Framework.Configs.Config))", -1); if (!string.IsNullOrEmpty(paths.FirstOrDefault(f => f.Contains("db.db")))) { isSeek = true; textEdit1.Text = paths.FirstOrDefault(f => f.Contains("db.db")); checkState = conn.CheckSqliteLink(textEdit1.Text.Trim(), ""); //label7.Text = "悠哉"; label8.Text = "Sqlite"; } } #endregion #region 速推客 else if (comboBoxEdit2.SelectedIndex == 4) { string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(积分.db$))", -1); if (!string.IsNullOrEmpty(paths.FirstOrDefault(f => f.Contains("积分.db"))))//&& !string.IsNullOrEmpty(paths.FirstOrDefault(f => f.Contains("订单.db")))) //速推客 { isSeek = true; textEdit1.Text = paths.FirstOrDefault(f => f.Contains("积分.db")); checkState = conn.CheckSqliteLink(textEdit1.Text.Trim(), ""); //速推客积分库 //label7.Text = "速推客"; label8.Text = "Sqlite"; } } #endregion #region 猎客 else if (comboBoxEdit2.SelectedIndex == 5) { string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(lieke.db))", -1); if (!string.IsNullOrEmpty(paths.FirstOrDefault(f => f.Contains("lieke.db")))) { isSeek = true; textEdit1.Text = paths.FirstOrDefault(f => f.Contains("lieke.db")); checkState = conn.CheckSqliteLink(textEdit1.Text.Trim(), ""); //label7.Text = "猎客"; label8.Text = "Sqlite"; } } #endregion #region 淘客喵 else if (comboBoxEdit2.SelectedIndex == 6) { string[] paths = BackupAndImport.Tools.GetFiles(path, @"(?(data_\d+.db))", -1); if (!string.IsNullOrEmpty(paths.FirstOrDefault(f => f.Contains("data_46349.db")))) { isSeek = true; //textEdit1.Text = paths.FirstOrDefault(f => f.Contains("data_46349.db")); textEdit1.Text = paths.FirstOrDefault(f => f.Contains("data_46349.db")); checkState = conn.CheckSqliteLink(textEdit1.Text.Trim(), ""); //label7.Text = "淘客喵"; label8.Text = "Sqlite"; } } #endregion #region 安娜尔云控版 else if (comboBoxEdit2.SelectedIndex == 7) { string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(数据库.db$))", -1); textEdit1.Text = paths.FirstOrDefault(f => f.Contains("数据库.db")); if (!string.IsNullOrEmpty(textEdit1.Text.Trim())) { isSeek = true; checkState = conn.CheckSqliteLink(textEdit1.Text.Trim(), ""); //label7.Text = "安娜尔"; label8.Text = "Sqlite"; } } #endregion if (!isSeek && string.IsNullOrEmpty(checkState)) checkState = "目录中没有找到数据库文件或配置文件"; if (isSeek && string.IsNullOrEmpty(checkState)) { comboBoxEdit1.Enabled = isEnabled; ShowSuccess("数据库链接成功!"); } else { //label7.Text = label8.Text = "请选择数据库"; ShowError(checkState); } } else throw new Exception("选择的目录路径存在异常"); } } catch (Exception ex) { ShowError(ex); } } private void simpleButton14_Click(object sender, EventArgs e) { try { //checkState = conn.CheckMysqlLink(mySQLConfig["Host"].ToString(), mySQLConfig["Name"].ToString(), mySQLConfig["User"].ToString(), mySQLConfig["Pass"].ToString(), mySQLConfig["Port"].ToString());//mysql链接是否成功 checkState = conn.CheckMysqlLink(textEdit9.Text.Trim(), textEdit10.Text.Trim(), textEdit11.Text.Trim(), textEdit12.Text.Trim(), textEdit13.Text.Trim());//mysql链接是否成功 if (string.IsNullOrEmpty(checkState)) { comboBoxEdit1.Enabled = false; label8.Text = "MySql"; ShowSuccess("数据库链接成功!"); } else { //label7.Text = label8.Text = "请选择数据库"; label8.Text = "请选择数据库"; ShowError(checkState); } } catch (Exception ex) { tempConfig = null; ShowError(ex); } } SetConnectionConfig conn = new SetConnectionConfig(); //测试数据链接的对象 /// /// 开始同步订单 /// /// /// private void simpleButton2_Click(object sender, EventArgs e) { try { if (comboBoxEdit2.SelectedIndex == 0) throw new Exception("请先选择要导入的软件名称"); if (conn == null || conn.tempConfig == null) throw new Exception("请选择数据库~!"); //if (label7.Text == "AliTools") if (comboBoxEdit2.SelectedIndex == 1) { if (comboBoxEdit3.SelectedIndex == 0 && comboBoxEdit1.SelectedIndex == 0) throw new Exception(@"请选择导入的对应机器人账号 1.只导入微信请选择""微信对应机器人账号"" 2.只导入QQ请选择""QQ对应机器人账号"" 3.微信、QQ两个都导入请都选择 注:一个数据库只能导入一次"); } else { if (comboBoxEdit3.SelectedIndex == 0) throw new Exception("请选择对应机器人账号"); } if (checkBox1.Checked || checkBox2.Checked) { comboBoxEdit1.Enabled = comboBoxEdit3.Enabled = simpleButton2.Enabled = false; simpleButton2.Text = "同步中.."; //index = comboBox1.SelectedIndex; TaskTool task = new TaskTool(); task.AddTask(delegate { try { EventClient.StopParsing = false; SynchronousMemberData(); SynchronousBindTBOrderData(); } catch (Exception ex) { this.Invoke(new Action(delegate { ShowError(ex); })); } finally { EventClient.StopParsing = true; } }); task.Start(1, callback); } else throw new Exception("至少选择一项导入任务"); } catch (Exception ex) { ShowError(ex.Message); comboBoxEdit1.Enabled = comboBoxEdit3.Enabled = simpleButton2.Enabled = true; } } private void callback(IAsyncResult ar) { try { this.Invoke(new Action(delegate { comboBoxEdit3.Enabled = simpleButton2.Enabled = true; simpleButton2.Text = "开始同步"; ShowSuccess($"同步操作已执行完毕!"); })); } catch (Exception ex) { ShowError(ex); } } /// /// 将新用的id和旧的id保存起来.用于之后的修改上级id /// List pkts = new List(); private object objLock = new object(); private object lock_obj = new object(); private void AddJindu(string text = "", int max = 0) { base.UpdateUI(() => { try { lock (lock_obj) { if (!string.IsNullOrEmpty(text) && max == 0) { label31.Text = text; } else if (!string.IsNullOrEmpty(text) && max != 0) { label31.Text = text; this.progressBar1.Value = 0; this.progressBar1.Maximum = max; } else { if (this.progressBar1.Value < this.progressBar1.Maximum) this.progressBar1.Value++; label31.Text = $"{this.progressBar1.Value}/{this.progressBar1.Maximum}"; } } Application.DoEvents(); } catch (Exception) { } }); } /// /// 同步会员信息 /// private void SynchronousMemberData() { try { if (checkBox1.Checked) //会员数据同步 { var session = ApiClient.GetSession(); session.BeginTransaction(); var srcSession = ApiClient.GetSession(conn.tempConfig, false); pkts = new List(); try { #region AliTools //if (label7.Text == "AliTools") if (comboBoxEdit2.SelectedIndex == 1) { if (!srcSession.TableExist()) throw new Exception(@"导入会员数据失败,可能原因:会员信息执行过一次导入操作"); AddJindu("正在读取会员数据..."); List old_member_infos; if (comboBoxEdit3.SelectedIndex != 0 && comboBoxEdit1.SelectedIndex != 0) old_member_infos = srcSession.Find("select * from MemberInfo");//预导入的会员数据 else old_member_infos = srcSession.Find("select * from MemberInfo where UserType = @UserType", new { UserType = comboBoxEdit3.SelectedIndex != 0 ? 1 : 0 });//预导入的会员数据 1是微信,0是QQ if (old_member_infos.Count > 0) AddJindu("导入会员数据中...", old_member_infos.Count); if (old_member_infos != null && old_member_infos.Count != 0) { List member_infos = null; if (comboBoxEdit3.SelectedIndex != 0 && comboBoxEdit1.SelectedIndex != 0) member_infos = session.Queryable().ToList(); else { var chatType = comboBoxEdit3.SelectedIndex != 0 ? ChatType.微信 : ChatType.QQ; member_infos = session.Queryable().Where(f => f.robot_type == chatType).ToList(); } var Exists_old_members = old_member_infos.Where(old => member_infos.Exists(goal => goal.username == old.UserName)).ToList();//已经存在的用户,直接加积分 var UnExists_old_members = old_member_infos.Where(old => !member_infos.Exists(goal => goal.username == old.UserName)).ToList();//不存在的用户,创建用户对象 var ratio = 1;//积分比例 if (simpleButton2.Tag != null) ratio = int.Parse(simpleButton2.Tag as string); //将所有的订单结算 用户id查询到集合中 var userIds = srcSession.Find("select userId from AliOrder where status = '订单结算' and userId != 0", new { }); #region 已经存在的用户 if (Exists_old_members.Count != 0) { List memberInfos = new List();//保存存在的用户对象 foreach (var oldmember in Exists_old_members) { long finishOrder = 0;//已完成订单数量 if (userIds != null) finishOrder = userIds.Count(f => f == oldmember.Id); double point = double.Parse((oldmember.Point / ratio).ToString("#0.00 ")); double ticPoint = double.Parse((oldmember.TicPoint / ratio).ToString("#0.00 ")); double sumPoint = double.Parse((oldmember.SumPoint / ratio).ToString("#0.00 ")); var member = member_infos.FirstOrDefault(f => f.username == oldmember.UserName && f.robot_type == (oldmember.UserType == 1 ? ChatType.微信 : ChatType.QQ));//获取对应的对象 if (member == null) continue; member.cur_point = (double)((decimal)member.cur_point + (decimal)point); member.ext_point = (double)((decimal)member.ext_point + (decimal)ticPoint); member.sum_point = (double)((decimal)member.sum_point + (decimal)sumPoint); member.finish_order = (long)((decimal)member.finish_order + (decimal)finishOrder); member.bind_order = member.finish_order; member.remark = member.remark + (string.IsNullOrEmpty(member.remark) ? "" : " -- ") + oldmember.Remark; if (string.IsNullOrWhiteSpace(member.robot_name)) { member.robot_name = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; } memberInfos.Add(member); pkts.Add(new PrimaryKeyTemp() { NewId = member.id, UserName = oldmember.UserName, OldId = oldmember.Id }); AddJindu(); } var _num1 = (int)Math.Ceiling((decimal)memberInfos.Count / 500m); for (int o = 1; o <= _num1; o++) { var _list = memberInfos.Skip((o - 1) * 500).Take(500).ToList(); session.Updateable(_list.ToArray()).ExecuteCommand(); } } #endregion #region 不存在的用户 if (UnExists_old_members.Count != 0) { List unMemberInfos = new List();//保存不存在的用户对象 foreach (var oldmember in UnExists_old_members) { long finishOrder = 0;//已完成订单数量 if (userIds != null) finishOrder = userIds.Count(f => f == oldmember.Id); double point = double.Parse(((decimal)oldmember.Point / (decimal)ratio).ToString("#0.00 ")); double ticPoint = double.Parse(((decimal)oldmember.TicPoint / (decimal)ratio).ToString("#0.00 ")); double sumPoint = double.Parse(((decimal)oldmember.SumPoint / (decimal)ratio).ToString("#0.00 ")); var member = new fl_member_info() { crt_time = oldmember.CrtTime, robot_type = (oldmember.UserType == 1 ? ChatType.微信 : ChatType.QQ), username = oldmember.UserName, usernick = oldmember.NickName.Replace("'", "''"), cur_point = point, sum_point = sumPoint, ext_point = ticPoint, remark = oldmember.Remark, inviter_id = 0, finish_order = finishOrder, bind_order = finishOrder, robot_name = oldmember.UserType == 1 ? comboBoxEdit3.Text : comboBoxEdit1.Text, alipay_name = "", alipay_num = "" }; var groups = session.FindGroups(); if (groups.Count != 0) member.group_id = groups[0].id; if (unMemberInfos.FirstOrDefault(f => f.username == member.username) == null) unMemberInfos.Add(member); else { } pkts.Add(new PrimaryKeyTemp() { NewId = 0, UserName = oldmember.UserName, OldId = oldmember.Id }); AddJindu(); } var _num1 = (int)Math.Ceiling((decimal)unMemberInfos.Count / 500m); for (int o = 1; o <= _num1; o++) { var _list = unMemberInfos.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); } } #endregion #region 绑定上下级关系 //member_infos = session.Find("select * from fl_member_info");//现有的会员数据 if (comboBoxEdit3.SelectedIndex != 0 && comboBoxEdit1.SelectedIndex != 0) member_infos = session.Queryable().ToList();//现有的会员数据 else { var chatType = comboBoxEdit3.SelectedIndex != 0 ? ChatType.微信 : ChatType.QQ; member_infos = session.Queryable().Where(f => f.robot_type == chatType).ToList(); } foreach (var item in pkts) item.NewId = member_infos.FirstOrDefault(f => f.username == item.UserName).id;//增加fl_member_info对应的id var allRecIdMember = old_member_infos.Where(f => f.RecId != 0).OrderBy(f => f.RecId).ThenBy(f => f.Id).ToList(); //2.获取预导入集合中所有有上级的用户. if (allRecIdMember != null && allRecIdMember.Count != 0) { AddJindu("绑定上下级关系中...", allRecIdMember.Count); //member_infos = session.Find("select * from fl_member_info");//现有的会员数据 foreach (var item in allRecIdMember) { var value = pkts.FirstOrDefault(f => f.OldId == item.Id);//获取... if (value != null) { var oldmember = old_member_infos.FirstOrDefault(f => f.Id == value.OldId); if (oldmember != null) { var pkt = pkts.FirstOrDefault(f => f.OldId == oldmember.RecId);//通过对比老的id获取新的id值 if (pkt != null) { var member = member_infos.FirstOrDefault(f => f.id == value.NewId); if (member != null && member.inviter_id == 0) { member.inviter_id = pkt.NewId;//赋值推荐人 session.SaveOrUpdate(member); } else { } } else { } } else { } } else { } AddJindu(); } } #endregion AddJindu("保存会员数据中.."); if (label8.Text.ToLower() == "sqlite") srcSession.ExcuteSQL("ALTER TABLE 'MemberInfo' RENAME TO 'MemberInfo_备份'"); else if (label8.Text.ToLower() == "mysql") srcSession.ExcuteSQL("ALTER TABLE MemberInfo RENAME TO MemberInfo_备份"); session.Commit(); AddJindu("保存会员数据成功"); //base.UpdateUI(() =>{ label31.Text = "导入会员数据完成";}); //this.Invoke(new Action(delegate //{ // ShowSuccess($"会员数量预导入数据量:{old_member_infos.Count}条,成功导入:{old_member_infos.Count}"); //})); return; } else throw new Exception(@"导入会员数据失败,可能原因:选中数据库中会员数据为空"); } #endregion #region 安娜儿 //else if (label7.Text == "安娜尔") else if (comboBoxEdit2.SelectedIndex == 2) { try { if (!srcSession.TableExist()) throw new Exception(@"导入会员数据失败,可能原因:会员信息执行过一次导入操作");//检测表是否存在 AddJindu("正在读取会员数据..."); srcSession.ExcuteSQL("DROP TABLE IF EXISTS '会员信息A'"); srcSession.ExcuteSQL("ALTER TABLE 会员信息 RENAME TO 会员信息A"); srcSession.ExcuteSQL(@"CREATE TABLE '会员信息'( '对应ID' TEXT NOT NULL, '微信名字' varchar(255) DEFAULT '', '姓名' varchar(255) DEFAULT '', '支付宝' varchar(255) DEFAULT '', '总提现金额' double DEFAULT 0, '可提现金额' double DEFAULT 0, '未收货金额' double DEFAULT 0, '总成功订单' double DEFAULT 0, '签到次数' double DEFAULT 0, '签到奖励' double DEFAULT 0, '签到时间' varchar(255) DEFAULT '', '推广奖励' double DEFAULT 0, '定向比例' varchar(255) DEFAULT '', '独立PID' varchar(255) DEFAULT '', '注册时间' varchar(255) DEFAULT '', '公众号对应ID' varchar(255) DEFAULT '', PRIMARY KEY('对应ID' ASC) ); "); srcSession.ExcuteSQL("INSERT INTO 会员信息 SELECT 对应ID,微信名字,姓名,支付宝,总提现金额,可提现金额,未收货金额,总成功订单,签到次数,签到奖励,签到时间,推广奖励,定向比例,独立PID,注册时间,公众号对应ID FROM 会员信息A"); srcSession.ExcuteSQL("DROP TABLE '会员信息A'"); var member_infos = srcSession.Queryable().ToList(); var current_member_infos = session.Find("select * from fl_member_info");//目标数据库中获取所有的会员数据 if (member_infos.Count > 0) AddJindu("导入会员数据中...", member_infos.Count); List unMemberInfos = new List();//保存不存在的用户对象 List memberInfos = new List();//保存存在的用户对象 //var tixian = decimal.Parse(session.FindTable(@"select uid,COALESCE(sum(point),0) from fl_point_hist where '2019-06-15 16:40:00' <= crt_time and crt_time <= '2019-06-16 15:00:00' and point < 0 and uid = @uid group by uid").Rows[0]["num"].ToString()); foreach (var item in member_infos) { var user = current_member_infos.FirstOrDefault(f => f.username == item.对应ID && f.robot_type == ChatType.微信); if (user == null) { user = new fl_member_info() { username = item.对应ID, robot_type = ChatType.微信, usernick = item.微信名字.Replace("'", "''"), cur_point = item.可提现金额 == null ? 0d : (double)item.可提现金额, sum_point = item.总提现金额 == null ? 0d : (double)item.总提现金额, ext_point = item.推广奖励 == null ? 0d : (double)item.推广奖励, finish_order = (long)item.总成功订单, bind_order = (long)item.总成功订单, robot_name = comboBoxEdit3.Text, alipay_name = string.Empty, alipay_num = string.Empty, remark = string.Empty }; var groups = session.FindGroups(); if (groups.Count != 0) user.group_id = groups[0].id; unMemberInfos.Add(user); AddJindu(); } else { user.cur_point = (double)((decimal)user.cur_point + (item.可提现金额 == null ? 0m : (decimal)item.可提现金额)); user.sum_point = user.sum_point + (item.总提现金额 == null ? 0d : (double)item.总提现金额); user.ext_point = user.ext_point + (item.推广奖励 == null ? 0d : (double)item.推广奖励); user.finish_order = user.finish_order + (long)item.总成功订单; user.bind_order = user.finish_order; if (string.IsNullOrWhiteSpace(user.robot_name)) { user.robot_name = comboBoxEdit3.Text; user.robot_type = ChatType.微信; } memberInfos.Add(user); AddJindu(); } } if (unMemberInfos.Count != 0) session.Insertable(unMemberInfos.ToArray()).ExecuteCommand(); if (memberInfos.Count != 0) session.Updateable(memberInfos.ToArray()).ExecuteCommand(); //绑定上下级 if (member_infos != null && member_infos.Count != 0) { AddJindu("绑定上下级关系中...", member_infos.Count); var newDbs = session.Queryable().ToList(); var old = srcSession.Find<上下级管理>("select * from 上下级管理"); foreach (var item in old) { var new_user = newDbs.FirstOrDefault(f => f.username == item.下级对应ID); if (new_user != null && new_user.inviter_id == 0) { var inviter = newDbs.FirstOrDefault(f => f.username == item.上级对应ID);//找出上级账号 if (inviter != null) { new_user.inviter_id = inviter.id;//填写上级ID //session.Updateable(new { inviter_id = inviter.id }).Where(f => f.id == new_user.id).ExecuteCommand(); session.Updateable(new_user); } } AddJindu(); } AddJindu("保存会员数据中.."); srcSession.ExcuteSQL("ALTER TABLE '会员信息' RENAME TO '会员信息_备份'"); AddJindu("保存会员数据成功"); } session.Commit(); return; } catch (Exception ex) { throw new Exception($"数据异常,同步终止.{ex.Message}"); } } #endregion #region 速推客 //else if (label7.Text == "速推客") else if (comboBoxEdit2.SelectedIndex == 4) { try { if (!srcSession.TableExist()) throw new Exception(@"导入会员数据失败,可能原因:会员信息执行过一次导入操作");//检测表是否存在 AddJindu("正在读取会员数据..."); var member_infos = srcSession.Find("select * from 会员信息"); //获取预导入表的所有数据 var current_member_infos = session.Find("select * from fl_member_info");//目标数据库中获取所有的会员数据 if (member_infos.Count > 0) AddJindu("导入会员数据中...", member_infos.Count); //var tableNum = srcSession.FindTable("select count(ID) as num from 订单管理 where ID = @username and 订单状态 = '订单结算' GROUP BY ID,订单状态", new { username = item.ID }); var usernames = srcSession.Find("select ID from 订单管理 where 订单状态 = '订单结算'", new { }); List unMemberInfos = new List();//保存不存在的用户对象 List memberInfos = new List();//保存存在的用户对象 foreach (var item in member_infos) { var user = current_member_infos.FirstOrDefault(f => f.username == item.ID && f.robot_type == ChatType.微信);//判断是否存在存在给用户的数据 long finishOrder = 0;//已完成订单数量 //var tableNum = srcSession.FindTable("select count(ID) as num from 订单管理 where ID = @username and 订单状态 = '订单结算' GROUP BY ID,订单状态", new { username = item.ID }); //if (tableNum.Rows.Count != 0) // finishOrder = long.Parse(tableNum.Rows[0]["num"].ToString()); if (usernames != null) finishOrder = usernames.Count(f => f.username == item.ID); if (user == null) { decimal _cur_point = 0; decimal.TryParse(item.结算金额, out _cur_point); user = new fl_member_info() { username = item.ID, robot_type = ChatType.微信, usernick = item.名称.Replace("'", "''"), cur_point = (double)((string.IsNullOrWhiteSpace(item.结算金额) ? 0m : _cur_point) + (string.IsNullOrWhiteSpace(item.签到奖励) ? 0m : decimal.Parse(item.签到奖励)) + (string.IsNullOrWhiteSpace(item.推广奖励) ? 0m : decimal.Parse(item.推广奖励)) + (string.IsNullOrWhiteSpace(item.额外奖励) ? 0m : decimal.Parse(item.额外奖励)) - (string.IsNullOrWhiteSpace(item.已提现金额) ? 0m : decimal.Parse(item.已提现金额))), sum_point = (double)(string.IsNullOrWhiteSpace(item.已提现金额) ? 0m : decimal.Parse(item.已提现金额)), ext_point = (double)(string.IsNullOrWhiteSpace(item.推广奖励) ? 0m : decimal.Parse(item.推广奖励)), finish_order = finishOrder, bind_order = finishOrder, robot_name = comboBoxEdit3.Text, alipay_name = string.Empty, alipay_num = string.Empty, remark = string.Empty }; var groups = session.FindGroups(); if (groups.Count != 0) user.group_id = groups[0].id; unMemberInfos.Add(user); AddJindu(); } else { decimal _cur_point = 0; decimal.TryParse(item.结算金额, out _cur_point); user.cur_point = user.cur_point + (double)((string.IsNullOrWhiteSpace(item.结算金额) ? 0m : _cur_point) + (string.IsNullOrWhiteSpace(item.签到奖励) ? 0m : decimal.Parse(item.签到奖励)) + (string.IsNullOrWhiteSpace(item.推广奖励) ? 0m : decimal.Parse(item.推广奖励)) + (string.IsNullOrWhiteSpace(item.额外奖励) ? 0m : decimal.Parse(item.额外奖励)) - (string.IsNullOrWhiteSpace(item.已提现金额) ? 0m : decimal.Parse(item.已提现金额))); user.sum_point = user.sum_point + (double)(string.IsNullOrWhiteSpace(item.已提现金额) ? 0m : decimal.Parse(item.已提现金额)); user.ext_point = user.ext_point + (double)(string.IsNullOrWhiteSpace(item.推广奖励) ? 0m : decimal.Parse(item.推广奖励)); user.finish_order = user.finish_order + finishOrder; user.bind_order = user.finish_order; if (string.IsNullOrWhiteSpace(user.robot_name)) { user.robot_name = comboBoxEdit3.Text; user.robot_type = ChatType.微信; } memberInfos.Add(user); AddJindu(); } //session.SaveOrUpdate(user); } if (unMemberInfos.Count != 0) { //session.Insertable(unMemberInfos.ToArray()).ExecuteCommand(); var _num = (int)Math.Ceiling((decimal)unMemberInfos.Count / 500m); for (int o = 1; o <= _num; o++) { var _list = unMemberInfos.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); AddJindu2($"用户表 保存中...{_num - o}"); } } if (memberInfos.Count != 0) { //session.Updateable(memberInfos.ToArray()).ExecuteCommand(); var _num = (int)Math.Ceiling((decimal)memberInfos.Count / 500m); for (int o = 1; o <= _num; o++) { var _list = memberInfos.Skip((o - 1) * 500).Take(500).ToList(); session.Updateable(_list.ToArray()).ExecuteCommand(); AddJindu2($"用户表2 保存中...{_num - o}"); } } //绑定上下级 if (member_infos != null && member_infos.Count != 0) { AddJindu("绑定上下级关系中...", member_infos.Count); var newDbs = session.Find("select * from fl_member_info"); var old = srcSession.Find<代理管理>("select * from 代理管理"); foreach (var item in newDbs) { AddJindu(); if (item.inviter_id != 0) continue; if (old != null && old.Count != 0) { //Console.WriteLine($"{item.username},{item.usernick}"); var i = old.FirstOrDefault(f => f.下级ID == item.username); if (i != null) { var inviter = newDbs.FirstOrDefault(f => f.username == i.上级ID);//找出上级账号 if (inviter != null) { item.inviter_id = inviter.id;//填写上级ID session.SaveOrUpdate(item); } } } } AddJindu("保存会员数据中.."); srcSession.ExcuteSQL("ALTER TABLE '会员信息' RENAME TO '会员信息_备份'"); AddJindu("保存会员数据成功"); } session.Commit(); //this.Invoke(new Action(delegate //{ // ShowSuccess($"会员数量预导入数据量:{member_infos.Count}条,成功导入:{member_infos.Count}"); //})); return; } catch (Exception ex) { throw new Exception($"数据异常,同步终止.{ex.Message}"); } } #endregion #region 悠哉 //else if (label7.Text == "悠哉") else if (comboBoxEdit2.SelectedIndex == 3) { if (!srcSession.TableExist()) throw new Exception(@"导入会员数据失败,可能原因:会员信息执行过一次导入操作"); AddJindu("正在读取会员数据..."); var old_member_infos = srcSession.Find("select * from member where wxid != ''");//预导入的会员数据 if (old_member_infos != null && old_member_infos.Count != 0) { if (old_member_infos.Count > 0) AddJindu("导入会员数据中...", old_member_infos.Count); var member_infos = session.Find("select * from fl_member_info");//现有的会员数据 var TBOrders = srcSession.Find(@"select userid from orders where orderstatus = '1' and userid is not null", new { }); var PDDOrders = srcSession.Find(@"select userid from pddorders where orderstatus = '1' and userid is not null", new { }); var JDOrders = srcSession.Find(@"select userid from jdorders where orderstatus = '1' and userid is not null", new { }); List unMemberInfos = new List();//保存不存在的用户对象 List memberInfos = new List();//保存存在的用户对象 foreach (var oldmember in old_member_infos) { var member = member_infos.FirstOrDefault(f => f.username == oldmember.wxid && f.robot_type == (oldmember.usertype == 1 ? ChatType.微信 : ChatType.QQ));//现有的集合中是否已经存在预导入的会员 long finishOrder = 0;//已完成订单数量 if (TBOrders.Count != 0)//淘宝订单完成数 finishOrder += TBOrders.Count(f => f == oldmember.uid); if (PDDOrders.Count != 0)//拼多多订单完成数 finishOrder += PDDOrders.Count(f => f == oldmember.uid); if (JDOrders.Count != 0)//京东订单完成数 finishOrder += JDOrders.Count(f => f == oldmember.uid); double ticPoint = 0; double sumPoint = 0; oldmember.balance = (oldmember.balance.ToString().ToLower().Contains("e-") ? null : oldmember.balance); double point = oldmember.balance == null ? 0d : (double)oldmember.balance; if (member == null) { member = new fl_member_info() { crt_time = DateTime.Parse(oldmember.regtime.Replace("/星期一", "").Replace("/星期二", "").Replace("/星期三", "").Replace("/星期四", "").Replace("/星期五", "").Replace("/星期六", "").Replace("/星期日", "")), robot_type = ChatType.微信,//oldmember.usertype = 1 为普通用户 2 为客户设置的vip用户 username = oldmember.wxid, usernick = oldmember.nickname.Replace("'", "''"), cur_point = point, sum_point = sumPoint, ext_point = ticPoint, inviter_id = 0, finish_order = finishOrder, bind_order = finishOrder, remark = string.Empty, robot_name = oldmember.usertype == 1 ? comboBoxEdit3.Text : comboBoxEdit1.Text, alipay_name = string.Empty, alipay_num = string.Empty }; var groups = session.FindGroups(); if (groups.Count != 0) member.group_id = groups[0].id; unMemberInfos.Add(member); } else { member.cur_point = member.cur_point + point; member.ext_point = member.ext_point + ticPoint; member.sum_point = member.sum_point + sumPoint; member.finish_order = member.finish_order + finishOrder; member.bind_order = member.finish_order; member.remark = string.Empty; if (string.IsNullOrWhiteSpace(member.robot_name)) { member.robot_name = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; //member.robot_name = comboBoxEdit3.Text; //member.robot_type = ChatType.微信; } memberInfos.Add(member); } AddJindu(); pkts.Add(new PrimaryKeyTemp() { NewId = member.id, UserName = oldmember.wxid, OldId = (int)oldmember.uid }); } if (unMemberInfos.Count != 0) session.Insertable(unMemberInfos.ToArray()).ExecuteCommand(); if (memberInfos.Count != 0) session.Updateable(memberInfos.ToArray()).ExecuteCommand(); member_infos = session.Queryable().ToList();//现有的会员数据 foreach (var pkt in pkts) pkt.NewId = member_infos.FirstOrDefault(f => f.username == pkt.UserName).id;//增加fl_member_info对应的id var allRecIdMember = old_member_infos.Where(f => f.trjid != 0).OrderBy(f => f.trjid).ThenBy(f => f.uid).ToList(); //2.获取预导入集合中所有有上级的用户. if (allRecIdMember != null && allRecIdMember.Count != 0) { AddJindu("绑定上下级关系中...", allRecIdMember.Count); member_infos = session.Find("select * from fl_member_info");//现有的会员数据 foreach (var item in allRecIdMember) { AddJindu(); var value = pkts.FirstOrDefault(f => f.OldId == item.uid);//获取... if (value != null) { var oldmember = old_member_infos.FirstOrDefault(f => f.uid == value.OldId); if (oldmember != null) { var pkt = pkts.FirstOrDefault(f => f.OldId == oldmember.trjid);//通过对比老的id获取新的id值 if (pkt != null) { var member = member_infos.FirstOrDefault(f => f.id == value.NewId); if (member != null && member.inviter_id == 0) { member.inviter_id = pkt.NewId;//赋值推荐人 session.SaveOrUpdate(member); } else { } } else { } } else { } } else { } } } AddJindu("保存会员数据中.."); if (label8.Text.ToLower() == "sqlite") srcSession.ExcuteSQL("ALTER TABLE 'member' RENAME TO 'member_备份'"); else if (label8.Text.ToLower() == "mysql") srcSession.ExcuteSQL("ALTER TABLE member RENAME TO member_备份"); AddJindu("保存会员数据成功"); session.Commit(); //this.Invoke(new Action(delegate //{ // ShowSuccess($"会员数量预导入数据量:{old_member_infos.Count}条,成功导入:{old_member_infos.Count}"); //})); return; } else throw new Exception(@"导入会员数据失败,可能原因:选中数据库中会员数据为空"); } #endregion #region 猎客 //else if (label7.Text == "猎客") else if (comboBoxEdit2.SelectedIndex == 5) { try { if (!srcSession.TableExist()) throw new Exception(@"导入会员数据失败,可能原因:会员信息执行过一次导入操作");//检测表是否存在 //var member_infos = srcSession.Find("select * from Member"); //获取预导入表的所有数据 AddJindu("正在读取会员数据..."); var member_infos = srcSession.Queryable().ToList(); var current_member_infos = session.Find("select * from fl_member_info");//目标数据库中获取所有的会员数据 if (member_infos.Count > 0) AddJindu("导入会员数据中...", member_infos.Count); var TBuserNames = srcSession.Find("select lkid from PaymentDetail where payStatusInfo = '订单结算'", new { }); var JDuserNames = srcSession.Find("select lkid from JDOrder where payStatusInfo = '已结算'", new { }); var PDDuserNames = srcSession.Find("select lkid from PddOrder where payStatusInfo = '已结算'", new { }); List unMemberInfos = new List();//保存不存在的用户对象 List memberInfos = new List();//保存存在的用户对象 foreach (var item in member_infos) { var user = current_member_infos.FirstOrDefault(f => f.username == item.lkid && f.robot_type == ChatType.微信); long finishOrder = 0;//已完成订单数量 if (PDDuserNames.Count != 0) finishOrder += PDDuserNames.Count(f => f.username == item.lkid); if (JDuserNames.Count != 0) finishOrder += JDuserNames.Count(f => f.username == item.lkid); if (TBuserNames.Count != 0) finishOrder += TBuserNames.Count(f => f.username == item.lkid); if (user == null) { if (item.lkid.Length > 30) continue; user = new fl_member_info() { username = item.lkid, robot_type = ChatType.微信, usernick = item.usernick.Replace("'", "''"), cur_point = item.ketixianMoney == null ? 0.00 : (double)item.ketixianMoney, sum_point = item.yitixianMoney == null ? 0.00 : (double)item.yitixianMoney, ext_point = 0, finish_order = finishOrder, bind_order = finishOrder, robot_name = comboBoxEdit3.Text, alipay_name = string.Empty, alipay_num = string.Empty, remark = string.Empty }; var groups = session.FindGroups(); if (groups.Count != 0) user.group_id = groups[0].id; unMemberInfos.Add(user); AddJindu(); } else { user.cur_point = user.cur_point + (item.ketixianMoney == null ? 0.00 : (double)item.ketixianMoney); user.sum_point = user.sum_point + (item.yitixianMoney == null ? 0.00 : (double)item.yitixianMoney); user.ext_point = user.ext_point; user.finish_order = user.finish_order + finishOrder; user.bind_order = user.finish_order; if (string.IsNullOrWhiteSpace(user.robot_name)) { user.robot_name = comboBoxEdit3.Text; user.robot_type = ChatType.微信; } memberInfos.Add(user); AddJindu(); } //session.SaveOrUpdate(user); } if (unMemberInfos.Count != 0) session.Insertable(unMemberInfos.ToArray()).ExecuteCommand(); if (memberInfos.Count != 0) session.Updateable(memberInfos.ToArray()).ExecuteCommand(); //绑定上下级 if (member_infos != null && member_infos.Count != 0) { AddJindu("绑定上下级关系中...", member_infos.Count); var newDbs = session.Find("select * from fl_member_info"); var old = srcSession.Find("select * from groupInvite"); foreach (var item in newDbs) { AddJindu(); if (item.inviter_id != 0) continue; if (old != null && old.Count != 0) { //Console.WriteLine($"{item.username},{item.usernick}"); var i = old.FirstOrDefault(f => f.inviteeLkid == item.username); if (i != null) { var inviter = newDbs.FirstOrDefault(f => f.username == i.inviterLkid);//找出上级账号 if (inviter != null) { item.inviter_id = inviter.id;//填写上级ID session.SaveOrUpdate(item); } } } } AddJindu("保存会员数据中.."); //srcSession.ExcuteSQL("ALTER TABLE 'Member' RENAME TO 'Member_备份'"); if (label8.Text.ToLower() == "sqlite") srcSession.ExcuteSQL("ALTER TABLE 'Member' RENAME TO 'Member_备份'"); else if (label8.Text.ToLower() == "mysql") srcSession.ExcuteSQL("ALTER TABLE Member RENAME TO Member_备份"); AddJindu("保存会员数据成功"); } session.Commit(); //this.Invoke(new Action(delegate //{ // ShowSuccess($"会员数量预导入数据量:{member_infos.Count}条,成功导入:{member_infos.Count}"); //})); return; } catch (Exception ex) { throw new Exception($"数据异常,同步终止.{ex.Message}"); } } #endregion #region 淘某喵 //else if (label7.Text == "淘某喵") else if (comboBoxEdit2.SelectedIndex == 6) { try { if (!srcSession.TableExist()) throw new Exception(@"导入会员数据失败,可能原因:会员信息执行过一次导入操作");//检测表是否存在 AddJindu("正在读取会员数据..."); var member_infos = srcSession.Queryable().ToList(); var current_member_infos = session.Find("select * from fl_member_info");//目标数据库中获取所有的会员数据 if (member_infos.Count > 0) AddJindu("导入会员数据中...", member_infos.Count); List unMemberInfos = new List();//保存不存在的用户对象 List memberInfos = new List();//保存存在的用户对象 //var tixian = decimal.Parse(session.FindTable(@"select uid,COALESCE(sum(point),0) from fl_point_hist where '2019-06-15 16:40:00' <= crt_time and crt_time <= '2019-06-16 15:00:00' and point < 0 and uid = @uid group by uid").Rows[0]["num"].ToString()); foreach (var item in member_infos) { var user = current_member_infos.FirstOrDefault(f => f.username == item.wxid && f.robot_type == ChatType.微信); var coins = (item.frozen_coins == null ? 0d : (double)item.frozen_coins); if (user == null) { user = new fl_member_info() { username = item.wxid, robot_type = ChatType.微信, usernick = item.name.Replace("'", "''"), cur_point = item.coins == null ? 0d + coins : (double)item.coins + coins, sum_point = 0d, ext_point = 0d, finish_order = item.purchase_volume == null ? 0L : (long)item.purchase_volume, bind_order = item.purchase_volume == null ? 0L : (long)item.purchase_volume, robot_name = comboBoxEdit3.Text, alipay_name = string.Empty, alipay_num = string.Empty, remark = string.Empty }; var groups = session.FindGroups(); if (groups.Count != 0) user.group_id = groups[0].id; unMemberInfos.Add(user); AddJindu(); } else { user.cur_point = (double)((decimal)user.cur_point + (decimal)(item.coins == null ? 0d + coins : (double)item.coins + coins)); //user.sum_point = user.sum_point + (item.总提现金额 == null ? 0d : (double)item.总提现金额); //user.ext_point = user.ext_point + (item.推广奖励 == null ? 0d : (double)item.推广奖励); user.finish_order = user.finish_order + (item.purchase_volume == null ? 0L : (long)item.purchase_volume); user.bind_order = user.finish_order; if (string.IsNullOrWhiteSpace(user.robot_name)) { user.robot_name = comboBoxEdit3.Text; user.robot_type = ChatType.微信; } memberInfos.Add(user); AddJindu(); } } if (unMemberInfos.Count != 0) session.Insertable(unMemberInfos.ToArray()).ExecuteCommand(); if (memberInfos.Count != 0) session.Updateable(memberInfos.ToArray()).ExecuteCommand(); //绑定上下级 if (member_infos != null && member_infos.Count != 0) { AddJindu("获取所有的上级信息..."); var superiors = member_infos.GroupBy(f => f.superior).Select(f => f.Key).Where(f => !string.IsNullOrWhiteSpace(f)).ToList(); current_member_infos = session.Find("select * from fl_member_info");//重新获取用户列表 Dictionary inviters = new Dictionary();//上级用户微信号与对应的id foreach (var item in superiors) { var member = current_member_infos.FirstOrDefault(f => f.username == item); if (member != null) inviters.Add(item, member.id); } AddJindu("获取的上级信息完毕"); AddJindu("整理的需要绑定上级的用户..."); var wantBindInviterMembers = member_infos.Where(f => !string.IsNullOrWhiteSpace(f.superior)).ToList();//需要绑定上级的用户 AddJindu("需要绑定上级的用户整理完毕"); AddJindu("绑定上下级关系中...", wantBindInviterMembers.Count); foreach (var item in wantBindInviterMembers) { var member = current_member_infos.FirstOrDefault(f => f.username == item.wxid); if (member != null && member.inviter_id == 0) { if (inviters.ContainsKey(item.superior)) { member.inviter_id = inviters[item.superior]; session.Updateable(member).ExecuteCommand(); } } AddJindu(); } AddJindu("保存会员数据中.."); srcSession.ExcuteSQL("ALTER TABLE 'members_46349' RENAME TO 'members_46349_备份'"); AddJindu("保存会员数据成功"); } session.Commit(); return; } catch (Exception ex) { throw new Exception($"数据异常,同步终止.{ex.Message}"); } } #endregion #region 安娜儿云控版 //else if (label7.Text == "安娜尔云控版") else if (comboBoxEdit2.SelectedIndex == 7) { try { if (!srcSession.TableExist()) throw new Exception(@"导入会员数据失败,可能原因:会员信息执行过一次导入操作");//检测表是否存在 AddJindu("正在读取会员数据..."); var member_infos = srcSession.Queryable().ToList(); var current_member_infos = session.Find("select * from fl_member_info");//目标数据库中获取所有的会员数据 if (member_infos.Count > 0) AddJindu("导入会员数据中...", member_infos.Count); List unMemberInfos = new List();//保存不存在的用户对象 List memberInfos = new List();//保存存在的用户对象 //var tixian = decimal.Parse(session.FindTable(@"select uid,COALESCE(sum(point),0) from fl_point_hist where '2019-06-15 16:40:00' <= crt_time and crt_time <= '2019-06-16 15:00:00' and point < 0 and uid = @uid group by uid").Rows[0]["num"].ToString()); foreach (var item in member_infos) { var user = current_member_infos.FirstOrDefault(f => f.username == item.wxid && f.robot_type == ChatType.微信); if (user == null) { user = new fl_member_info() { username = item.wxid, robot_type = ChatType.微信, usernick = item.wx_name.Replace("'", "''"), cur_point = item.ktx_money, sum_point = item.ztx_money, ext_point = item.royalty_total,//推广奖励, finish_order = item.zcg_number, bind_order = item.zcg_number, robot_name = comboBoxEdit3.Text, alipay_name = string.Empty, alipay_num = string.Empty, remark = string.Empty }; var groups = session.FindGroups(); if (groups.Count != 0) user.group_id = groups[0].id; unMemberInfos.Add(user); AddJindu(); } else { user.cur_point = (double)((decimal)user.cur_point + (decimal)item.ktx_money); user.sum_point = user.sum_point + item.ztx_money; user.ext_point = user.ext_point + item.royalty_total; user.finish_order = user.finish_order + item.zcg_number; user.bind_order = user.finish_order; if (string.IsNullOrWhiteSpace(user.robot_name)) { user.robot_name = comboBoxEdit3.Text; user.robot_type = ChatType.微信; } memberInfos.Add(user); AddJindu(); } } if (unMemberInfos.Count != 0) session.Insertable(unMemberInfos.ToArray()).ExecuteCommand(); if (memberInfos.Count != 0) session.Updateable(memberInfos.ToArray()).ExecuteCommand(); //绑定上下级 if (member_infos != null && member_infos.Count != 0) { AddJindu("绑定上下级关系中...", member_infos.Count); var newDbs = session.Queryable().ToList(); //var old = srcSession.Find("select * from fission"); var old = srcSession.Queryable().ToList(); foreach (var item in old) { var new_user = newDbs.FirstOrDefault(f => f.username == item.xj_wxid); if (new_user != null && new_user.inviter_id == 0) { var inviter = newDbs.FirstOrDefault(f => f.username == item.sj_wxid);//找出上级账号 if (inviter != null) { new_user.inviter_id = inviter.id;//填写上级ID //session.Updateable(new { inviter_id = inviter.id }).Where(f => f.id == new_user.id).ExecuteCommand(); session.Updateable(new_user); } } AddJindu(); } AddJindu("保存会员数据中.."); try { srcSession.ExcuteSQL("ALTER TABLE 'member' RENAME TO 'member_2_备份'"); } catch (Exception) { } AddJindu("保存会员数据成功"); } session.Commit(); return; } catch (Exception ex) { throw new Exception($"数据异常,同步终止.{ex.Message}"); } } #endregion } catch (Exception ex) { base.UpdateUI(() => { label31.Text = "导入会员数据失败!"; }); session.Rollback(); throw ex; } } } catch (Exception ex) { throw ex; } } /// /// 同步绑定淘宝订单数据 /// public void SynchronousBindTBOrderData() { try { if (checkBox2.Checked) //淘宝订单同步 { var srcSession = ApiClient.GetSession(conn.tempConfig, false); var session = ApiClient.GetSession(); session.BeginTransaction(); try { #region AliTools //if (label7.Text == "AliTools") if (comboBoxEdit2.SelectedIndex == 1) { #region 淘宝 string sql = string.Empty; AddJindu("正在读取淘宝订单到缓存..."); //if (!srcSession.TableExist()) // sql = "select username,orderid,status,endTime from AliOrder a inner join MemberInfo_备份 m on a.userid = m.id GROUP BY orderid"; //else // sql = "select username,orderid,status,endTime from AliOrder a inner join MemberInfo m on a.userid = m.id GROUP BY orderid"; //var aliOrders = srcSession.Find(sql); if (!srcSession.TableExist()) sql = "select username,orderid,status,endTime from AliOrder a inner join MemberInfo_备份 m on a.userid = m.id GROUP BY username,orderid"; else sql = "select username,orderid,status,endTime from AliOrder a inner join MemberInfo m on a.userid = m.id GROUP BY username,orderid"; var aliOrders = srcSession.Find(sql); if (aliOrders != null && aliOrders.Count != 0) { var unBinds = session.Find("select * from fl_order_alimama where db_userid = 0");//所有没有绑定的订单 if (unBinds != null && unBinds.Count != 0) { var userId = session.Find("select id,username from fl_member_info", new { });//所有 fl_member_info 用户id 和 username AddJindu("正在绑定订单...", unBinds.Count); foreach (var item in unBinds) { var result = aliOrders.FirstOrDefault(f => f.orderid == item.trade_parent_id); //EventClient.OnEvent(this,$"找到订单-{item.trade_parent_id}"); if (result != null) { try { var user = userId.FirstOrDefault(f => f.username == result.username);//fl_member_info 查询用户信息 //EventClient.OnEvent(this, $"找到用户-{item.trade_parent_id}"); if (user != null) { item.db_userid = user.id; if (!item.IsFinish()) { SystemOrderStatus enumOne = (SystemOrderStatus)Enum.Parse(typeof(SystemOrderStatus), result.status); item.db_status = enumOne; item.db_endtime = DateTime.Parse(result.endtime); var member = session.FindMemberInfoById(user.id); if (member != null) { item.db_robotname = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; item.db_robottype = member.robot_type; } } else { if (string.IsNullOrWhiteSpace(item.db_robotname)) { var member = session.FindMemberInfoById(user.id); if (member != null) { item.db_robotname = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; item.db_robottype = member.robot_type; } } } session.SaveOrUpdate(item); } } catch (Exception) { } } Thread.Sleep(2); AddJindu(); } } } AddJindu("订单绑定执行完毕"); #endregion session.Commit(); } #endregion #region 安娜儿 //else if (label7.Text == "安娜尔") else if (comboBoxEdit2.SelectedIndex == 2) { #region 淘宝 AddJindu("正在读取订单到缓存..."); var bindCaches = srcSession.Find("select 订单编号 as orderid,对应ID as username,状态 as status from 订单管理 where 类目 = '淘宝' GROUP BY 订单编号"); if (bindCaches != null && bindCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_alimama where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = bindCaches.FirstOrDefault(f => f.orderid == item.trade_parent_id); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "交易成功" || result.status == "等待收货") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddDays(-1); item.tk_status = 3; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_alimama set db_status = 1002,tk_status = 3,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 拼多多 AddJindu("正在读取拼多多订单到缓存..."); var pddBindCaches = srcSession.Find("select 订单编号 as orderid,对应ID as username,状态 as status from 订单管理 where 类目 = '拼多多' GROUP BY 订单编号"); if (pddBindCaches != null && pddBindCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_pinduoduo where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定拼多多订单...", unBinds.Count); var userids = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = pddBindCaches.FirstOrDefault(f => f.orderid == item.order_sn); if (result != null) { var user = userids.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "交易成功" || result.status == "等待收货") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddDays(-1); item.order_status = 2; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_pinduoduo set db_status = 1002,order_status = 2,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 京东 AddJindu("正在读取京东订单到缓存..."); var jdBindCaches = srcSession.Find("select 订单编号 as orderid,对应ID as username,状态 as status from 订单管理 where 类目 = '京东' GROUP BY 订单编号"); if (jdBindCaches != null && jdBindCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_jingdong where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = jdBindCaches.FirstOrDefault(f => f.orderid == item.orderId.ToString()); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "交易成功" || result.status == "等待收货") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddDays(-1); item.validCode = 17; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_jingdong set db_status = 1002,validCode = 17,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion AddJindu("订单绑定执行完毕"); session.Commit(); } #endregion #region 悠哉 //else if (label7.Text == "悠哉") else if (comboBoxEdit2.SelectedIndex == 3) { #region 淘宝 AddJindu("正在读取淘宝订单到缓存..."); string sql = string.Empty; var aliOrders = srcSession.Find("select wxid as username,orderno as orderid,orderstatus as status,accountdt as endtime from orders where wxid is not null GROUP BY orderno"); var users = session.Find("select id,username from fl_member_info", new { }); if (aliOrders != null && aliOrders.Count != 0) { var unBinds = session.Find("select * from fl_order_alimama where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定淘宝订单...", unBinds.Count); foreach (var item in unBinds) { AddJindu(); var result = aliOrders.FirstOrDefault(f => f.orderid == item.trade_parent_id); if (result != null) { var user = users.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; /* 订单创建 = 1006, 订单付款 = 1005, 订单失效 = 1004, 订单退款 = 1003, 订单结算 = 1002, 订单冻结 = 1001, 订单未知 = -99 ------------------------- 0 付款 1 结算 2 失效 3 退款 */ int status = -1; int tk_status = -1; if (!string.IsNullOrEmpty(result.endtime) && result.status == 1) { if (DateTime.Parse(result.endtime) <= DateTime.Now) status = 1002; else status = 1001; tk_status = 3; } if (result.status == 0) { status = 1005; tk_status = 12; } else if (result.status == 2) { status = 1004; tk_status = 13; } else if (result.status == 3) { status = 1003; tk_status = 3; } SystemOrderStatus enumOne = (SystemOrderStatus)Enum.ToObject(typeof(SystemOrderStatus), status); item.db_status = enumOne; item.db_endtime = string.IsNullOrEmpty(result.endtime) ? DateTime.MinValue : DateTime.Parse(result.endtime); item.tk_status = tk_status; if (string.IsNullOrWhiteSpace(item.db_robotname) && user != null) { var member = session.FindMemberInfoById(user.id); if (member != null) { item.db_robotname = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; item.db_robottype = member.robot_type; } } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_alimama set db_status = 1002,tk_status = 3,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 拼多多 AddJindu("正在读取拼多多订单到缓存..."); var pddOrders = srcSession.Find("select wxid as username,ordersn as orderid,orderstatus as status,accountdt as endtime from pddorders where wxid is not null GROUP BY ordersn"); if (pddOrders != null && pddOrders.Count != 0) { var unBinds = session.Find("select * from fl_order_pinduoduo where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定拼多多订单...", unBinds.Count); foreach (var item in unBinds) { AddJindu(); var result = pddOrders.FirstOrDefault(f => f.orderid == item.order_sn); if (result != null) { //var value = session.FindRow("select id from fl_member_info where username = @username", new { username = result.username }); var user = users.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; /* 订单创建 = 1006, 订单付款 = 1005, 订单失效 = 1004, 订单退款 = 1003, 订单结算 = 1002, 订单冻结 = 1001, 订单未知 = -99 ----------------------------------- 0 付款 1 结算 2 失效 3 退款 */ int status = -1; int order_status = -1; if (!string.IsNullOrEmpty(result.endtime) && result.status == 1) { if (DateTime.Parse(result.endtime) <= DateTime.Now) status = 1002; else status = 1001; order_status = 2; } if (result.status == 0) { status = 1005; order_status = 1; } else if (result.status == 2) { status = 1004; order_status = 4; } else if (result.status == 3) { status = 1003; order_status = 2; } SystemOrderStatus enumOne = (SystemOrderStatus)Enum.ToObject(typeof(SystemOrderStatus), status); item.db_status = enumOne; item.db_endtime = string.IsNullOrEmpty(result.endtime) ? DateTime.MinValue : DateTime.Parse(result.endtime); item.order_status = order_status; if (string.IsNullOrWhiteSpace(item.db_robotname) && user != null) { var member = session.FindMemberInfoById(user.id); if (member != null) { item.db_robotname = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; item.db_robottype = member.robot_type; } } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_pinduoduo set db_status = 1002,order_status = 2,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 京东 AddJindu("正在读取京东订单到缓存..."); var jdBindTBCaches = srcSession.Find("select ordersn as orderid,wxid as username from jdorders where wxid is not null GROUP BY ordersn"); if (jdBindTBCaches != null && jdBindTBCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_jingdong where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = jdBindTBCaches.FirstOrDefault(f => f.orderid == item.orderId.ToString()); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; /* 订单创建 = 1006, 订单付款 = 1005, 订单失效 = 1004, 订单退款 = 1003, 订单结算 = 1002, 订单冻结 = 1001, 订单未知 = -99 -------------------- 0 付款 1 结算 2 失效 3 退款 */ int status = -1; int validCode = -1; if (!string.IsNullOrEmpty(result.endtime) && result.status == 1) { if (DateTime.Parse(result.endtime) <= DateTime.Now) status = 1002; else status = 1001; validCode = 17; } if (result.status == 0) { status = 1005; validCode = 15; } else if (result.status == 2) { status = 1004; validCode = 3; } else if (result.status == 3) { status = 1003; validCode = 17; } SystemOrderStatus enumOne = (SystemOrderStatus)Enum.ToObject(typeof(SystemOrderStatus), status); item.db_status = enumOne; item.db_endtime = string.IsNullOrEmpty(result.endtime) ? DateTime.MinValue : DateTime.Parse(result.endtime); item.validCode = validCode; if (string.IsNullOrWhiteSpace(item.db_robotname) && user != null) { var member = session.FindMemberInfoById(user.id); if (member != null) { item.db_robotname = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; item.db_robottype = member.robot_type; } } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_jingdong set db_status = 1002,validCode = 17,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion AddJindu("订单绑定执行完毕"); session.Commit(); } #endregion #region 速推客 //else if (label7.Text == "速推客") else if (comboBoxEdit2.SelectedIndex == 4) { #region 淘宝 AddJindu("正在读取淘宝订单到缓存..."); var bindTBCaches = srcSession.Find("select 订单ID as orderid,ID as username,订单状态 as status from 订单管理 where 类目 = '淘宝' GROUP BY 订单ID"); if (bindTBCaches != null && bindTBCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_alimama where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定淘宝订单...", unBinds.Count); var userids = session.Find("select id,username from fl_member_info", new { }); List GZHs = new List(); if (srcSession.TableExist("会员信息") || srcSession.TableExist("会员信息_备份")) { GZHs = srcSession.Find("select ID,公众号ID from 会员信息_备份 where 公众号ID != \"\""); } foreach (var item in unBinds) { AddJindu(); var result = bindTBCaches.FirstOrDefault(f => f.orderid == item.trade_parent_id); if (result != null) { var user = userids.FirstOrDefault(f => f.username == result.username); if (user == null)//速推客用公总号ID绑定 { var gzh = GZHs.FirstOrDefault(f => f.公众号ID == result.username); if (gzh != null) { user = userids.FirstOrDefault(f => f.username == gzh.ID); } } if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "订单结算") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddHours(-2); item.tk_status = 3; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_alimama set db_status = 1002,tk_status = 3,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 拼多多 AddJindu("正在读取拼多多订单到缓存..."); var bindPDDCaches = srcSession.Find("select 订单ID as orderid,ID as username,订单状态 as status from 订单管理 where 类目 = '拼多多' GROUP BY 订单ID"); if (bindPDDCaches != null && bindPDDCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_pinduoduo where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在拼多多绑定订单...", unBinds.Count); var userids = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = bindPDDCaches.FirstOrDefault(f => f.orderid == item.order_sn); if (result != null) { var user = userids.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "订单结算") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddHours(-2); item.order_status = 2; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_pinduoduo set db_status = 1002,order_status = 2,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 京东 AddJindu("正在读取京东订单到缓存..."); var jdBindTBCaches = srcSession.Find("select 订单ID as orderid,ID as username,订单状态 as status from 订单管理 where 类目 = '京东' GROUP BY 订单ID"); if (jdBindTBCaches != null && jdBindTBCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_jingdong where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在京东绑定订单...", unBinds.Count); var userids = session.Find("select id,username from fl_member_info", new { }); List GZHs = new List(); if (srcSession.TableExist("会员信息") || srcSession.TableExist("会员信息_备份")) { GZHs = srcSession.Find("select ID,公众号ID from 会员信息_备份 where 公众号ID != \"\""); } foreach (var item in unBinds) { AddJindu(); var result = jdBindTBCaches.FirstOrDefault(f => f.orderid == item.orderId.ToString()); if (result != null) { var user = userids.FirstOrDefault(f => f.username == result.username); if (user == null)//速推客用公总号ID绑定 { var gzh = GZHs.FirstOrDefault(f => f.公众号ID == result.username); if (gzh != null) { user = userids.FirstOrDefault(f => f.username == gzh.ID); } } if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "订单结算") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddHours(-2); item.validCode = 17; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_jingdong set db_status = 1002,validCode = 17,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } //session.Commit(); //this.Invoke(new Action(delegate //{ // ShowSuccess($"速推客 - 淘宝订单绑定完成"); //})); } #endregion AddJindu("订单绑定执行完毕"); session.Commit(); } #endregion #region 猎客 //else if (label7.Text == "猎客") else if (comboBoxEdit2.SelectedIndex == 5) { #region 淘宝 AddJindu("正在读取淘宝订单到缓存..."); var bindTBCaches = srcSession.Find("select taobaoTradeParentId as orderid,lkid as username,payStatusInfo as status from PaymentDetail where lkid is not null GROUP BY taobaoTradeParentId"); if (bindTBCaches != null && bindTBCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_alimama where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在淘宝绑定订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = bindTBCaches.FirstOrDefault(f => f.orderid == item.trade_parent_id); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "订单结算") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddHours(-2); item.tk_status = 3; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_alimama set db_status = 1002,tk_status = 3,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 拼多多 AddJindu("正在读取拼多多订单到缓存..."); var bindPDDCaches = srcSession.Find("select pddTradeParentId as orderid,lkid as username,payStatusInfo as status from PddOrder where lkid is not null GROUP BY pddTradeParentId"); if (bindPDDCaches != null && bindPDDCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_pinduoduo where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定拼多多订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = bindPDDCaches.FirstOrDefault(f => f.orderid == item.order_sn); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "订单结算") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddHours(-2); } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_pinduoduo set db_status = 1002,order_status = 2,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 京东 AddJindu("正在读取京东订单到缓存..."); var jdBindTBCaches = srcSession.Find("select jdTradeParentId as orderid,lkid as username,payStatusInfo as status from JDOrder where lkid is not null GROUP BY jdTradeParentId"); if (jdBindTBCaches != null && jdBindTBCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_jingdong where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定京东订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = jdBindTBCaches.FirstOrDefault(f => f.orderid == item.orderId.ToString()); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "订单结算") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddHours(-2); item.validCode = 17; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_jingdong set db_status = 1002,validCode = 17,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion AddJindu("订单绑定执行完毕"); session.Commit(); } #endregion #region 淘客喵 if (comboBoxEdit2.SelectedIndex == 6) { #region 淘宝 string sql = string.Empty; AddJindu("正在读取淘宝订单到缓存..."); //if (!srcSession.TableExist()) // sql = "select username,orderid,status,endTime from AliOrder a inner join MemberInfo_备份 m on a.userid = m.id GROUP BY orderid"; //else // sql = "select username,orderid,status,endTime from AliOrder a inner join MemberInfo m on a.userid = m.id GROUP BY orderid"; //var aliOrders = srcSession.Find(sql); //if (!srcSession.TableExist()) // sql = "select username,orderid,status,endTime from AliOrder a inner join members_46349_备份 m on a.userid = m.id GROUP BY username,orderid"; //else // sql = "select username,orderid,status,endTime from AliOrder a inner join members_46349 m on a.userid = m.id GROUP BY username,orderid"; var aliOrders = srcSession.Find("select * from rewarded_orders_46349 where wxid != ''", new { }); if (aliOrders != null && aliOrders.Count != 0) { var unBinds = session.Find("select * from fl_order_alimama where db_userid = 0");//所有没有绑定的订单 if (unBinds != null && unBinds.Count != 0) { var userId = session.Find("select id,username from fl_member_info", new { });//所有 fl_member_info 用户id 和 username AddJindu("正在绑定订单...", unBinds.Count); foreach (var item in unBinds) { var result = aliOrders.FirstOrDefault(f => f.order_no.ToString() == item.trade_parent_id); //EventClient.OnEvent(this,$"找到订单-{item.trade_parent_id}"); if (result != null) { try { var user = userId.FirstOrDefault(f => f.username == result.wxid);//fl_member_info 查询用户信息 //EventClient.OnEvent(this, $"找到用户-{item.trade_parent_id}"); if (user != null) { item.db_userid = user.id; if (!item.IsFinish()) { var status = (AlimamaOrderStatus)result.pay_status; switch (status) { case AlimamaOrderStatus.全部订单: break; case AlimamaOrderStatus.订单结算: case AlimamaOrderStatus.订单成功: item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now; break; case AlimamaOrderStatus.订单付款: item.db_status = SystemOrderStatus.订单付款; item.db_endtime = DateTime.MinValue; break; case AlimamaOrderStatus.订单失效: item.db_status = SystemOrderStatus.订单失效; item.db_endtime = DateTime.MinValue; break; case AlimamaOrderStatus.订单维权中: break; default: break; } var member = session.FindMemberInfoById(user.id); if (member != null) { item.db_robotname = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; item.db_robottype = member.robot_type; } } else { if (string.IsNullOrWhiteSpace(item.db_robotname)) { var member = session.FindMemberInfoById(user.id); if (member != null) { item.db_robotname = member.robot_type == ChatType.微信 ? comboBoxEdit3.Text : comboBoxEdit1.Text; item.db_robottype = member.robot_type; } } } session.SaveOrUpdate(item); } } catch (Exception) { } } Thread.Sleep(2); AddJindu(); } } } AddJindu("订单绑定执行完毕"); #endregion session.Commit(); } #endregion #region 安娜儿 //else if (label7.Text == "安娜尔") else if (comboBoxEdit2.SelectedIndex == 7) { #region 淘宝 AddJindu("正在读取订单到缓存..."); var bindCaches = srcSession.Find("select order_main as orderid,wxid as username,order_state as status from register_order where platform = '淘宝' GROUP BY order_main"); if (bindCaches != null && bindCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_alimama where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = bindCaches.FirstOrDefault(f => f.orderid == item.trade_parent_id); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "交易成功" || result.status == "等待收货") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddDays(-1); item.tk_status = 3; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_alimama set db_status = 1002,tk_status = 3,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 拼多多 AddJindu("正在读取拼多多订单到缓存..."); //var pddBindCaches = srcSession.Find("select 订单编号 as orderid,对应ID as username,状态 as status from 订单管理 where 类目 = '拼多多' GROUP BY 订单编号"); var pddBindCaches = srcSession.Find("select order_main as orderid,wxid as username,order_state as status from register_order where platform = '拼多多' GROUP BY order_main"); if (pddBindCaches != null && pddBindCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_pinduoduo where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定拼多多订单...", unBinds.Count); var userids = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = pddBindCaches.FirstOrDefault(f => f.orderid == item.order_sn); if (result != null) { var user = userids.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "交易成功" || result.status == "等待收货") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddDays(-1); item.order_status = 2; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_pinduoduo set db_status = 1002,order_status = 2,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion #region 京东 AddJindu("正在读取京东订单到缓存..."); //var jdBindCaches = srcSession.Find("select 订单编号 as orderid,对应ID as username,状态 as status from 订单管理 where 类目 = '京东' GROUP BY 订单编号"); var jdBindCaches = srcSession.Find("select order_main as orderid,wxid as username,order_state as status from register_order where platform = '京东' GROUP BY order_main"); if (jdBindCaches != null && jdBindCaches.Count != 0) { var unBinds = session.Find("select * from fl_order_jingdong where db_userid = 0"); if (unBinds != null && unBinds.Count != 0) { AddJindu("正在绑定订单...", unBinds.Count); var userIds = session.Find("select id,username from fl_member_info", new { }); foreach (var item in unBinds) { AddJindu(); var result = jdBindCaches.FirstOrDefault(f => f.orderid == item.orderId.ToString()); if (result != null) { var user = userIds.FirstOrDefault(f => f.username == result.username); if (user != null) item.db_userid = user.id; if (item.db_status == SystemOrderStatus.订单冻结) { if (result.status == "交易成功" || result.status == "等待收货") { item.db_status = SystemOrderStatus.订单结算; item.db_endtime = DateTime.Now.AddDays(-1); item.validCode = 17; } } if (string.IsNullOrWhiteSpace(item.db_robotname)) { item.db_robotname = comboBoxEdit3.Text; item.db_robottype = ChatType.微信; } session.SaveOrUpdate(item); } } session.ExcuteSQL("update fl_order_jingdong set db_status = 1002,validCode = 17,db_endtime = @endtime where db_status = 1001 and db_userid = 0", new { endtime = DateTime.Now.AddDays(-2) }); } } #endregion AddJindu("订单绑定执行完毕"); session.Commit(); } #endregion } catch (Exception ex) { base.UpdateUI(() => { label31.Text = "绑定订单失败!"; }); session.Rollback(); throw ex; } finally { srcSession.Close(); } } } catch (Exception ex) { this.Invoke(new Action(delegate { ShowError(ex); })); } } #endregion #region 导出导入配置文件 /// /// 保存文件 /// /// /// private void simpleButton4_Click(object sender, EventArgs e) { try { var checks = checkedListBoxControl1.CheckedItems; if (checks != null && checks.Count != 0) { var checkAdminForm = new CheckAdminForm(); if (checkAdminForm.ShowDialog() == DialogResult.OK) { //var system_configs = checkedListBoxControl1.Tag as List; var out_configs = new List(); var strb = new StringBuilder(); var session = ApiClient.GetSession(); foreach (var item in checks) { try { if (!string.IsNullOrWhiteSpace(tableData.FirstOrDefault(f => f == item.ToString()))) { fl_dictionary_item config = new fl_dictionary_item() { dickey = item.ToString() }; if (item.ToString() == tableData[0])//"延迟结算配置" { var order_sleeps = session.Find("select * from fl_order_sleep"); if (order_sleeps.Count != 0) { config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", order_sleeps } });//Tools.Serialize(order_sleeps); } } else if (item.ToString() == tableData[1])//"会员分组配置" { var member_group = session.Find("select * from fl_member_group"); if (member_group.Count != 0) config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", member_group } }); } else if (item.ToString() == tableData[2])//"分出比例配置" { var ratio_info = session.Find("select * from fl_ratio_info"); if (ratio_info.Count != 0) config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", ratio_info } }); } else if (item.ToString() == tableData[3])//"自定义问答" { try { if (session.TableExist("fl_plugin_autoanswer_userdefinedlibrary")) { var userdefinedlibrarys = session.Queryable().ToList(); if (userdefinedlibrarys.Count != 0) config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", userdefinedlibrarys } }); } } catch (Exception) { } try { if (session.TableExist("fl_plugin_autoanswer_definedlib")) { var userdefinedlibrarys = session.Queryable().ToList(); if (userdefinedlibrarys.Count != 0) config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", userdefinedlibrarys } }); } } catch (Exception) { } } else if (item.ToString() == tableData[4])//"自动打标签数据" { if (session.TableExist("fl_plugin_signcontacts_sign_info")) { var signcontacts_sign_infos = session.Queryable().ToList(); if (signcontacts_sign_infos.Count != 0) config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", signcontacts_sign_infos } }); } } else if (item.ToString() == tableData[5])//"独立分出比例" { var dic = new Dictionary(); if (session.TableExist("fl_ratio_info_custom_group")) { var fl_ratio_info_custom_groups = session.Queryable().ToList(); if (fl_ratio_info_custom_groups.Count != 0) dic["data"] = fl_ratio_info_custom_groups; } if (session.TableExist("fl_ratio_info_custom")) { var fl_ratio_info_customs = session.Queryable().ToList(); if (fl_ratio_info_customs.Count != 0) dic["data2"] = fl_ratio_info_customs; } config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", dic } }); } out_configs.Add(config); strb.AppendLine($"{item},读取成功."); } else { if (item.ToString() == "全选" || item.ToString() == "全消") continue; var config = session.FindSingle("select * from fl_dictionary_item where dickey = @dickey", new { dickey = item.ToString() }); if (config == null) throw new Exception(""); //var config = system_configs.FirstOrDefault(f => f.dickey == item.ToString()); out_configs.Add(config); strb.AppendLine($"{config.dickey},读取成功."); } } catch (Exception) { strb.AppendLine($"{item.ToString()},读取失败."); } } SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.Filter = "文本文件|*.dxd"; if (saveDlg.ShowDialog() == DialogResult.OK) { FileStream fs = File.Open(saveDlg.FileName, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(HttpHelper.ObjectToJson(out_configs)); //关闭文件 sw.Flush(); sw.Close(); fs.Close(); } memoEdit1.Text = $"{strb.ToString()}\r\n配置文件导出成功!\r\n导出路径:{saveDlg.FileName}"; } else memoEdit1.Text = "终止配置导出任务"; } else { throw new Exception("请勾选要到导出的配置文件!"); } } catch (Exception ex) { ShowError(ex); } } private void simpleButton5_Click(object sender, EventArgs e) { try { OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = false; dialog.Title = "请选择文件夹"; dialog.Filter = "所有文件(*.dxd)|*.dxd"; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string json = File.ReadAllText(dialog.FileName); var configs = HttpHelper.JsonToObject>(json) as List; if (configs != null && configs.Count != 0) { this.checkedListBoxControl2.Items.Add(new CheckedListBoxItem(null, "全选")); this.checkedListBoxControl2.Items.Add(new CheckedListBoxItem(null, "全消")); foreach (var item in configs) { this.checkedListBoxControl2.Items.Add(new CheckedListBoxItem(null, item.dickey)); } checkedListBoxControl2.SelectAll(); this.checkedListBoxControl2.Tag = configs; } else throw new Exception("无配置信息!"); } } catch (Exception ex) { ShowError(ex); } } private void simpleButton6_Click(object sender, EventArgs e) { try { var check_config = checkedListBoxControl2.CheckedItems; if (check_config != null && check_config.Count != 0) { var out_configs = checkedListBoxControl2.Tag as List; var strb = new StringBuilder(); var session = ApiClient.GetSession(); foreach (var item in check_config) { if (item.ToString() == "全选" || item.ToString() == "全消") continue; try { var new_config = out_configs.FirstOrDefault(f => f.dickey == item.ToString()); //新的配置 if (!string.IsNullOrWhiteSpace(tableData.FirstOrDefault(f => f == item.ToString()))) { if (item.ToString() == tableData[0])//"延迟结算配置" { var order_sleeps = session.Find("select * from fl_order_sleep"); if (checkBox3.Checked || order_sleeps.Count == 0) { session.ExcuteSQL("DELETE FROM fl_order_sleep"); var _sleeps = HttpExtend.JsonToDictionary(new_config.dicvalue);//Tools.Serialize(order_sleeps); List list = new List(); var array = _sleeps["data"] as ArrayList; foreach (Dictionary arr in array) { list.Add(new fl_order_sleep() { money = double.Parse(arr["money"].ToString()), cps_type = (CpsType)(int.Parse(arr["cps_type"].ToString())), sleep = int.Parse(arr["sleep"].ToString()), white_groups = arr["white_groups"].ToString() }); } session.Insertable(list).ExecuteCommand(); strb.AppendLine($"{item},配置已覆盖."); } else { strb.AppendLine($"{item},配置已存在."); continue; } } else if (item.ToString() == tableData[1])//"会员分组配置" { var order_sleeps = session.Find("select * from fl_member_group"); if (checkBox3.Checked || order_sleeps.Count == 0) { session.ExcuteSQL("DELETE FROM fl_member_group"); var _sleeps = HttpExtend.JsonToDictionary(new_config.dicvalue);//Tools.Serialize(order_sleeps); List list = new List(); var array = _sleeps["data"] as ArrayList; foreach (Dictionary arr in array) { list.Add(new fl_member_group() { name = arr["name"] == null ? string.Empty : arr["name"].ToString(), subsidy = double.Parse(arr["subsidy"].ToString()), subsidy_type = (SubsidyType)int.Parse(arr["subsidy_type"].ToString()), terms = double.Parse(arr["terms"].ToString()), terms_ordersum = long.Parse(arr["terms_ordersum"].ToString()), ratio_custom_dy = int.Parse(arr["ratio_custom_dy"].ToString()), ratio_custom_jd = int.Parse(arr["ratio_custom_jd"].ToString()), ratio_custom_pdd = int.Parse(arr["ratio_custom_pdd"].ToString()), ratio_custom_sn = int.Parse(arr["ratio_custom_sn"].ToString()), ratio_custom_ks = int.Parse(arr["ratio_custom_ks"].ToString()), ratio_custom_tb = int.Parse(arr["ratio_custom_tb"].ToString()), ratio_custom_wph = int.Parse(arr["ratio_custom_wph"].ToString()) }); } session.Insertable(list).ExecuteCommand(); strb.AppendLine($"{item},配置已覆盖."); } else { strb.AppendLine($"{item},配置已存在."); continue; } } else if (item.ToString() == tableData[2])//"分出比例配置" { var order_sleeps = session.Find("select * from fl_ratio_info"); if (checkBox3.Checked || order_sleeps.Count == 0) { session.ExcuteSQL("DELETE FROM fl_ratio_info"); var _sleeps = HttpExtend.JsonToDictionary(new_config.dicvalue);//Tools.Serialize(order_sleeps); List list = new List(); var array = _sleeps["data"] as ArrayList; foreach (Dictionary arr in array) { list.Add(new fl_ratio_info() { comm = double.Parse(arr["comm"].ToString()), cps_type = (CpsType)(int.Parse(arr["cps_type"].ToString())), subsidy_num = double.Parse(arr["subsidy_num"].ToString()), subsidy_type = (SubsidyType)(int.Parse(arr["subsidy_type"].ToString())) }); } session.Insertable(list).ExecuteCommand(); strb.AppendLine($"{item},配置已覆盖."); } else { strb.AppendLine($"{item},配置已存在."); continue; } } else if (item.ToString() == tableData[3])//"自定义问答" { try { var order_sleeps = session.Find("select * from fl_plugin_autoanswer_definedlib"); if (checkBox3.Checked || order_sleeps.Count == 0) { session.ExcuteSQL("DELETE FROM fl_plugin_autoanswer_definedlib"); var _sleeps = HttpExtend.JsonToDictionary(new_config.dicvalue);//Tools.Serialize(order_sleeps); //List list = new List(); var array = _sleeps["data"] as ArrayList; foreach (Dictionary arr in array) { //list.Add(new fl_plugin_autoanswer_definedlib() { antistop = arr["antistop"].ToString(), chat_type = arr["chat_type"].ToString(), content = arr["content"].ToString(), match_pattern = (int.Parse(arr["match_pattern"].ToString())), is_alert_admin = (int.Parse(arr["is_alert_admin"].ToString())), specific_robot_setting_text = arr["specific_robot_setting_text"].ToString() }); try { session.Insertable(new fl_plugin_autoanswer_definedlib() { antistop = arr["antistop"].ToString(), chat_type = arr["chat_type"].ToString(), content = arr["content"].ToString(), match_pattern = (int.Parse(arr["match_pattern"].ToString())), is_alert_admin = (int.Parse(arr["is_alert_admin"].ToString())), specific_robot_setting_text = arr["specific_robot_setting_text"].ToString() }).ExecuteCommand(); } catch (Exception) { } finally { Thread.Sleep(20); } } //session.Insertable(list).ExecuteCommand(); strb.AppendLine($"{item},配置已覆盖."); } else { strb.AppendLine($"{item},配置已存在."); continue; } } catch (Exception) { } try { var order_sleeps = session.Find("select * from fl_plugin_autoanswer_userdefinedlibrary"); if (checkBox3.Checked || order_sleeps.Count == 0) { session.ExcuteSQL("DELETE FROM fl_plugin_autoanswer_userdefinedlibrary"); var _sleeps = HttpExtend.JsonToDictionary(new_config.dicvalue);//Tools.Serialize(order_sleeps); List list = new List(); var array = _sleeps["data"] as ArrayList; foreach (Dictionary arr in array) { list.Add(new fl_plugin_autoanswer_userdefinedlibrary() { antistop = arr["antistop"].ToString(), chat_type = arr["chat_type"].ToString(), content = arr["content"].ToString(), match_pattern = (int.Parse(arr["match_pattern"].ToString())), is_alert_admin = (int.Parse(arr["is_alert_admin"].ToString())) }); } session.Insertable(list).ExecuteCommand(); strb.AppendLine($"{item},配置已覆盖."); } else { strb.AppendLine($"{item},配置已存在."); continue; } } catch (Exception) { } } else if (item.ToString() == tableData[4])//"自动打标签数据" { var order_sleeps = session.Find("select * from fl_plugin_signcontacts_sign_info"); if (checkBox3.Checked || order_sleeps.Count == 0) { session.ExcuteSQL("DELETE FROM fl_plugin_signcontacts_sign_info"); var _sleeps = HttpExtend.JsonToDictionary(new_config.dicvalue);//Tools.Serialize(order_sleeps); List list = new List(); var array = _sleeps["data"] as ArrayList; foreach (Dictionary arr in array) { list.Add(new fl_plugin_signcontacts_sign_info() { amount = long.Parse(arr["amount"].ToString()), sign = arr["sign"].ToString(), signtype = (SignType)(int.Parse(arr["signtype"].ToString())) }); } session.Insertable(list).ExecuteCommand(); strb.AppendLine($"{item},配置已覆盖."); } else { strb.AppendLine($"{item},配置已存在."); continue; } } else if (item.ToString() == tableData[5])//"独立分出比例" { //if (session.TableExist("fl_ratio_info_custom_group")) //{ // var fl_ratio_info_custom_groups = session.Queryable().ToList(); // if (fl_ratio_info_custom_groups.Count != 0) // config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", fl_ratio_info_custom_groups } }); //} //else if (session.TableExist("fl_ratio_info_custom")) //{ // var fl_ratio_info_customs = session.Queryable().ToList(); // if (fl_ratio_info_customs.Count != 0) // config.dicvalue = HttpHelper.ObjectToJson(new Dictionary() { { "data", fl_ratio_info_customs } }); //} var custom_groups = session.Find("select * from fl_ratio_info_custom_group"); if (checkBox3.Checked || custom_groups.Count == 0) { session.ExcuteSQL("DELETE FROM fl_ratio_info_custom_group"); var _datas = HttpExtend.JsonToDictionary(new_config.dicvalue);//Tools.Serialize(order_sleeps); List list = new List(); var _sleeps = _datas["data"] as Dictionary; var array = _sleeps["data"] as ArrayList; foreach (Dictionary arr in array) { //list.Add(new fl_ratio_info_custom_group() { name = arr["name"].ToString(), cps_type = (CpsType)(int.Parse(arr["cps_type"].ToString())), id = long.Parse(arr["id"].ToString()) }); session.Ado.ExecuteCommand($"INSERT INTO 'fl_ratio_info_custom_group' ('name', 'cps_type', 'id') VALUES ('{arr["name"].ToString()}', {(int.Parse(arr["cps_type"].ToString()))}, {long.Parse(arr["id"].ToString())});"); } //------------------ session.ExcuteSQL("DELETE FROM fl_ratio_info_custom"); List list2 = new List(); var array2 = _sleeps["data2"] as ArrayList; foreach (Dictionary arr in array2) { //list2.Add(new fl_ratio_info_custom() { cgid = long.Parse(arr["cgid"].ToString()), comm = double.Parse(arr["comm"].ToString()), subsidy_num = double.Parse(arr["subsidy_num"].ToString()), subsidy_type = (SubsidyType)(int.Parse(arr["subsidy_type"].ToString())), cps_type = (CpsType)(int.Parse(arr["cps_type"].ToString())), id = long.Parse(arr["id"].ToString()) }); session.Ado.ExecuteCommand($"INSERT INTO 'fl_ratio_info_custom' ('cgid', 'comm', 'subsidy_num', 'subsidy_type', 'cps_type', 'id') VALUES ({long.Parse(arr["cgid"].ToString())}, {double.Parse(arr["comm"].ToString())},{double.Parse(arr["subsidy_num"].ToString())},{(int.Parse(arr["subsidy_type"].ToString()))}, {int.Parse(arr["cps_type"].ToString())}, {long.Parse(arr["id"].ToString())});"); } strb.AppendLine($"{item},配置已覆盖."); } else { strb.AppendLine($"{item},配置已存在."); continue; } } } else { var src_config = session.Find("select * from fl_dictionary_item where dickey = @dickey", new { dickey = new_config.dickey }).FirstOrDefault(); //原来的配置 if (src_config != null) { if (checkBox3.Checked) { src_config.dicvalue = new_config.dicvalue; strb.AppendLine($"{src_config.dickey},配置已覆盖."); } else { strb.AppendLine($"{src_config.dickey},配置已存在."); continue; } } else { src_config = new fl_dictionary_item() { dickey = new_config.dickey, dicvalue = new_config.dicvalue }; strb.AppendLine($"{src_config.dickey},导入成功"); } session.SaveOrUpdate(src_config); } } catch (Exception ex) { strb.AppendLine(ex.Message); } } memoEdit2.Text = strb.ToString(); if (strb.Length != 0 && memoEdit2.Text.Contains("配置已覆盖")) { //覆盖成功提示用户是否重启软件 if (MessageBox.Show("配置导入成功,启动后生效,是否马上重启软件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { #region 是否允许软件重启[创建一个名为 reset 的空文件,在FLSystem的Program中判断这个文件是否存在,存在将允许重启] var reset_program = Util.MapFile("reset", "File"); File.Create(reset_program); #endregion Application.ExitThread(); Thread thtmp = new Thread(new ParameterizedThreadStart(run)); object appName = Application.ExecutablePath; Thread.Sleep(500); thtmp.Start(appName); } } } else throw new Exception("请选择要导入的配置"); } catch (Exception ex) { ShowError(ex); } } private void checkedListBoxControl1_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e) { try { if (e.Index == 0 && e.State == CheckState.Checked) { for (int j = 0; j < checkedListBoxControl1.Items.Count; j++) checkedListBoxControl1.SetItemChecked(j, j != 1); } else if (e.Index == 1 && e.State == CheckState.Checked) { for (int j = 0; j < checkedListBoxControl1.Items.Count; j++) checkedListBoxControl1.SetItemChecked(j, j == 1); } } catch (Exception ex) { ShowError(ex); } } private void checkedListBoxControl2_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e) { try { if (e.Index == 0 && e.State == CheckState.Checked) { for (int j = 0; j < checkedListBoxControl2.Items.Count; j++) checkedListBoxControl2.SetItemChecked(j, j != 1); } else if (e.Index == 1 && e.State == CheckState.Checked) { for (int j = 0; j < checkedListBoxControl2.Items.Count; j++) checkedListBoxControl2.SetItemChecked(j, j == 1); } } catch (Exception ex) { ShowError(ex); } } #endregion private void run(Object obj) { Process ps = new Process(); ps.StartInfo.FileName = obj.ToString(); ps.Start(); } #region 自转 Sqlite 转 MySql private object lock_obj4 = new object(); private void AddJindu4(string text = "", int max = 0) { base.UpdateUI(() => { try { lock (lock_obj4) { if (!string.IsNullOrEmpty(text) && max == 0) { label7.Text = text; } else if (!string.IsNullOrEmpty(text) && max != 0) { label7.Text = text; this.progressBar4.Value = 0; this.progressBar4.Maximum = max; } else { if (this.progressBar4.Value < this.progressBar4.Maximum) this.progressBar4.Value++; label7.Text = $"{this.progressBar4.Value}/{this.progressBar4.Maximum}"; } } Application.DoEvents(); } catch (Exception) { } }); } Api.Framework.Tools.ConnectionConfig tempConfig = null; private void simpleButton3_Click(object sender, EventArgs e) { try { if (ApiClient.Setting.DbConfig.DatabaseType == DatabaseType.MYSQL) throw new Exception("当前运行环境使用的数据库为Mysql,本次操作终止"); tempConfig = new Api.Framework.Tools.ConnectionConfig(); tempConfig.ConnectionString = string.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID={2};Password={3};Port={4};Min Pool Size = 5; Max Pool Size = 30;Charset=utf8;", this.textEdit6.Text, this.textEdit3.Text, this.textEdit4.Text, this.textEdit5.Text, this.textEdit2.Text); tempConfig.DatabaseType = DatabaseType.MYSQL; var session = ApiClient.GetSession(tempConfig); session.BeginTransaction(); session.Rollback(); ShowSuccess("恭喜您,数据库连接成功!"); } catch (Exception ex) { tempConfig = null; ShowError(ex); } } private async void simpleButton7_Click(object sender, EventArgs e) { bool flag = false; simpleButton7.Enabled = false; await Task.Run(() => { var tableNameLog = string.Empty;//记录表的名称 try { if (tempConfig == null) throw new Exception("请先测试Mysql 是否可以正常连接!"); var mySqlSession = ApiClient.GetSession(tempConfig); //Loding.ShowWaitForm(); mySqlSession.BeginTransaction(); try { AddJindu4("检测并创建基础表信息..."); ApiClient.CreateTables(mySqlSession); AddJindu4("基础表创建完成~!"); var sqliteSession = ApiClient.GetSession(); //查询数据库名字 AddJindu4("获取所有存在表的信息..."); var query = sqliteSession.FindTable("SELECT name,sql FROM sqlite_master WHERE type='table' and name != 'sqlite_sequence'", new { }); AddJindu4("获取所有存在表的信息完成~!"); if (query.Rows.Count > 0) { AddJindu4("整理阿里妈妈表数据...(数据越多,等待时间越长)"); sqliteSession.ExcuteSQL("update fl_order_alimama set paid_time = '0001-01-01 00:00:00' where paid_time IS NULL"); AddJindu4("整理阿里妈妈表数据完成~!"); AddJindu4("整理京东表数据...(数据越多,等待时间越长)"); sqliteSession.ExcuteSQL("update fl_order_jingdong set refundcreatetime = '0001-01-01 00:00:00' where refundcreatetime IS NULL"); AddJindu4("整理京东表数据完成~!"); sqliteSession.ExcuteSQL("update fl_exchange_info set check_time = '0001-01-01 00:00:00' where check_time IS NULL"); sqliteSession.ExcuteSQL("update fl_order_pinduoduo set price_compare_status = 0 where price_compare_status IS NULL"); for (int i = 0; i < query.Rows.Count; i++) { var name = query.Rows[i]["name"].ToString(); try { if (name.ToLower() == "sqlite_stat1" || name.ToLower() == "fl_plugin_encourage__tasks" || name.ToLower() == "fl_plugin_encourage_tasks" || name.ToLower() == "fl_plugin_tbcirclepromotion_goodsinfos" || name.ToLower() == "fl_plugin_pddcirclepromotion_goodsinfos" || name.ToLower() == "fl_plugin_jdcirclepromotion_goodsinfos" || name.ToLower() == "fl_plugin_wphcirclepromotion_goodsinfos" || name.ToLower() == "fl_plugin_couponssend_goodsinfos" || name.ToLower() == "fl_debug_log" ) continue; tableNameLog = name; if (!mySqlSession.TableExist(name)) { AddJindu4($"表{name}不存在,正在创建..."); #region 不存在的表 var sql = query.Rows[i]["sql"].ToString(); sql = sql.Replace("AUTOINCREMENT", "AUTO_INCREMENT").Replace("\"", ""); if (name.ToLower().Contains("fl_wechat_device")) sql = "CREATE TABLE " + name + " (weixinhao varchar(255) default '' ,device_info text ,id integer primary key AUTO_INCREMENT not null )"; AddJindu4($"表{name}创建完成~!"); sql = sql.Replace("text default ''", "text default null"); mySqlSession.ExcuteSQL(sql, new { }); #endregion } if (mySqlSession.TableExist(name))//mysql数据库存在 { AddJindu4($"表{name}存在,正在清空数据..."); #region 数据库表存在 mySqlSession.ExcuteSQL("TRUNCATE TABLE " + name, new { }); AddJindu4($"表{name}清空数据完成~!"); AddJindu4($"获取表{name}所有字段..."); List fieldList = new List();//字段 var sql = "pragma table_info('" + name + "')"; var fields = sqliteSession.FindTable(sql, new { }); for (int k = 0; k < fields.Rows.Count; k++) { var temp = fields.Rows[k]["name"].ToString(); fieldList.Add($"`{temp}`"); } AddJindu4($"获取表{name}所有字段完成~!"); //读取数量 sql = $"select count(1) from {name}"; var countResult = sqliteSession.FindTable(sql); //数据总数量 //if(countResult.Rows.Count) var rowCount = Convert.ToInt32(countResult.Rows[0].ItemArray[0]); if (rowCount == 0) continue; var querySize = 1000; //倍率 var rate = (int)Math.Ceiling((decimal)rowCount / querySize); //分页查询数据并添加到数据库 for (int j = 0; j < rate; j++) { sql = $"select * from {name} limit {j * querySize},{querySize}"; var result = sqliteSession.FindTable(sql); List valueList = new List();//值 if (result.Rows.Count > 0) { AddJindu4($"表{name},总共{rate + 1}页数据,正在获取第{j + 1}页数据..."); //循环过一次就情况 valueList.Clear(); //存字段对应的数 var list = new List(); for (int k = 0; k < result.Rows.Count; k++) { var temp = string.Empty; //foreach (var item in fieldList) for (int z = 0; z < fieldList.Count; z++) { try { var item = fieldList[z]; temp = result.Rows[k][item.Replace("`", "")].ToString().ToLower(); temp = temp == "false" ? "0" : temp == "true" ? "1" : temp.Replace(@"\", @"\\").Replace("'", "\''"); list.Add(temp); } catch (Exception exx) { //Console.WriteLine(temp); throw exx; } } valueList.Add("'" + string.Join("','", list) + "'"); list.Clear(); //AddJindu4(); } AddJindu4($"表{name},总共{rate + 1}页数据,准备转移插入第{j + 1}数据中..."); if (valueList.Count != 0) { int size = 120; var num = (int)Math.Ceiling((decimal)valueList.Count / size); //AddJindu4($"表{name},总共{rate+1}页数据,准备转移插入第{j + 1}数据中...", num); for (int o = 1; o <= num; o++) { var _list = valueList.Skip((o - 1) * size).Take(size).ToList(); sql = "INSERT INTO " + name + " (" + string.Join(",", fieldList) + ") VALUES (" + string.Join("),(", _list) + ")"; sql = RemoveEmoji(sql); mySqlSession.ExcuteSQL(sql, new { }); //AddJindu4(); _list.Clear(); _list = null; } } AddJindu4($"表{name},总共{rate + 1}页数据,转移插入第{j + 1}数据成功~!"); //AddJindu4($"表{name},获取数据完成~!"); //AddJindu4($"表{name},准备转移插入数据中..."); //if (valueList.Count != 0) //{ // int size = 120; // var num = (int)Math.Ceiling((decimal)valueList.Count / size); // AddJindu4($"表{name},准备转移插入数据中...", num); // for (int o = 1; o <= num; o++) // { // var _list = valueList.Skip((o - 1) * size).Take(size).ToList(); // sql = "INSERT INTO " + name + " (" + string.Join(",", fieldList) + ") VALUES (" + string.Join("),(", _list) + ")"; // sql = RemoveEmoji(sql); // mySqlSession.ExcuteSQL(sql, new { }); // AddJindu4(); // _list.Clear(); // _list = null; // } //} //valueList.Clear(); //valueList = null; //AddJindu4($"表{name},转移插入第{j + 1}数据成功~!"); } } #endregion } } catch (Exception ex) { //Console.WriteLine(name); throw ex; } } } AddJindu4($"所有数据转移完毕,正在提交数据...请稍等~!"); mySqlSession.Commit(); AddJindu4($"所有数据转移完成~!软件重启即可~!"); ApiClient.Setting.DbConfig = tempConfig; Util.Save(ApiClient.Setting); flag = true; } catch (Exception ex) { flag = false; AddJindu4($"转移失败,正在回滚数据..."); mySqlSession.Rollback(); AddJindu4($"转移失败,数据回滚完成~!"); if (!this.IsDisposed) ShowError($"数据转移异常:({tableNameLog}) {ex}"); } finally { //Loding.CloseWaitForm(); } } catch (Exception ex) { if (!this.IsDisposed) ShowError($"数据转移异常_:({tableNameLog})" + ex); } }); simpleButton7.Enabled = true; if (flag) { if (MessageBox.Show("配置导入成功,启动后生效,是否马上重启软件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { #region 是否允许软件重启[创建一个名为 reset 的空文件,在FLSystem的Program中判断这个文件是否存在,存在将允许重启] var reset_program = Util.MapFile("reset", "File"); File.Create(reset_program); #endregion Application.ExitThread(); Thread thtmp = new Thread(new ParameterizedThreadStart(run)); object appName = Application.ExecutablePath; Thread.Sleep(500); thtmp.Start(appName); } } } /// /// 保存数据 /// /// /// /// /// /// private void SaveData(List valueList, string name, string sql, List fieldList, SqlSugarClient mySqlSession) { } #endregion #region 自动备份 private void simpleButton8_Click(object sender, EventArgs e) { try { if (label12.Text.ToLower() != "sqlite") throw new Exception("当前使用的是mysql数据库,该版块功能不支持"); if (string.IsNullOrWhiteSpace(textEdit7.Text)) throw new Exception("数据库备份路径不能为空"); else if (!Directory.Exists(textEdit7.Text.Trim())) throw new Exception("数据库备份路径不存在"); //var path = textEdit7.Text.Trim() + "数据库" + DateTime.Now.ToString("yyyyMMddHHmmss_fff.db"); var path = Path.Combine(new string[] { textEdit7.Text.Trim(), "数据库" + DateTime.Now.ToString("yyyyMMddHHmmssfff") }); File.Copy(Util.MapFile("数据库.db", "Config"), path); if (File.Exists(path)) { if (Class1.Config.Is_Bak_Send_Email) { Zip.Process(new string[] { path }); var zipPath = path + ".zip"; if (File.Exists(zipPath)) ApiClient.SendAdminEmail(ApiClient.Setting.SystemConfig.account_admin_email, $"数据库备份{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}", "数据库备份", zipPath, true); } ShowSuccess("数据库备份成功"); } else ShowError("数据库备份失败"); } catch (Exception ex) { ShowError(ex); } } private void Auto_Bak_onoff_Click(object sender, EventArgs e) { Class1.Config.Auto_Bak_OnOff = Auto_Bak_onoff.Checked; } private void textEdit7_TextChanged(object sender, EventArgs e) { Class1.Config.Auto_Bak_Path = textEdit7.Text; } private void dateTimePicker1_ValueChanged(object sender, EventArgs e) { Class1.Config.Auto_Bak_Time = dateTimePicker1.Value; } private void numericUpDown2_ValueChanged(object sender, EventArgs e) { Class1.Config.Auto_Bak_Day = (int)numericUpDown2.Value; } private void simpleButton9_Click(object sender, EventArgs e) { try { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择文件路径"; if (dialog.ShowDialog() == DialogResult.OK) { textEdit7.Text = dialog.SelectedPath; } } catch (Exception ex) { ShowError(ex); } } #endregion #region 一键重新计算订单分出金额 private async void simpleButton12_Click(object sender, EventArgs e) { try { simpleButton12.Enabled = simpleButton15.Enabled = simpleButton16.Enabled = false; await Task.Run(() => { var session = ApiClient.GetSession(); try { session.BeginTransaction(); AddJindu3("正在读取淘宝订单..."); var tb_orders = session.Find("select * from fl_order_alimama", new { }); AddJindu3($"淘宝订单获取成功", tb_orders.Count); var members = session.Find("select * from fl_member_info"); foreach (var order in tb_orders) { var member = members.FirstOrDefault(f => f.id == order.db_userid); //计算的佣金 - 判断使用设置模式,符合将扣除用户自定义预扣佣金 var commission = session.GetTbComparisonFeeRate(order); //var itempoint = session.FindItemPoint(member, order.pub_share_pre_fee, order.item_num, CpsType.阿里妈妈); var itempoint = session.FindItemPoint(member, commission, order.item_num, CpsType.阿里妈妈); order.db_userpoint = itempoint.UserPoint; order.db_point = HttpHelper.ObjectToJson(itempoint); session.SaveOrUpdate(order); AddJindu3(); } tb_orders.Clear(); AddJindu3("淘宝订单修改完毕~!"); AddJindu3("正在读取京东订单..."); var jd_orders = session.Find("select * from fl_order_jingdong", new { }); AddJindu3($"京东订单获取成功", jd_orders.Count); foreach (var order in jd_orders) { var member = members.FirstOrDefault(f => f.id == order.db_userid); var itempoint = session.FindItemPoint(member, order.estimateFee, (int)order.skuNum, CpsType.京东联盟); order.db_userpoint = itempoint.UserPoint; order.db_point = HttpHelper.ObjectToJson(itempoint); session.SaveOrUpdate(order); AddJindu3(); } jd_orders.Clear(); AddJindu3("京东订单修改完毕~!"); AddJindu3("正在读取拼多多订单..."); var pdd_orders = session.Find("select * from fl_order_pinduoduo", new { }); AddJindu3($"京东订单获取成功", pdd_orders.Count); foreach (var order in pdd_orders) { var member = members.FirstOrDefault(f => f.id == order.db_userid); var itempoint = session.FindItemPoint(member, order.promotion_amount, order.goods_quantity, CpsType.多多进宝); order.db_userpoint = itempoint.UserPoint; order.db_point = HttpHelper.ObjectToJson(itempoint); session.SaveOrUpdate(order); } pdd_orders.Clear(); AddJindu3("拼多多订单修改完毕~!"); } catch (Exception ex) { AddJindu3("修改异常,正在回滚数据~"); session.Rollback(); AddJindu3("修改异常,回滚数据完成~!"); } finally { AddJindu3("所有订单修改完毕!!!"); session.Commit(); } }); simpleButton12.Enabled = simpleButton15.Enabled = simpleButton16.Enabled = true; } catch (Exception ex) { if (!this.IsDisposed) ShowError("批量修改异常:" + ex.Message + " - " + ex.StackTrace); } } private object lock_obj3 = new object(); private void AddJindu3(string text = "", int max = 0) { base.UpdateUI(() => { try { lock (lock_obj3) { if (!string.IsNullOrEmpty(text) && max == 0) { label6.Text = text; } else if (!string.IsNullOrEmpty(text) && max != 0) { label6.Text = text; this.progressBar3.Value = 0; this.progressBar3.Maximum = max; } else { if (this.progressBar3.Value < this.progressBar3.Maximum) this.progressBar3.Value++; label6.Text = $"{this.progressBar3.Value}/{this.progressBar3.Maximum}"; } } Application.DoEvents(); } catch (Exception) { } }); } #endregion #region ECO数据导入 /// /// 用户登录信息 /// EcoLoginInfo loginInfo = null; /// /// 获取验证码 /// /// /// private async void button4_Click(object sender, EventArgs e) { //try //{ // if (string.IsNullOrWhiteSpace(textBox4.Text.Trim())) throw new Exception("请输入手机号码"); // Eco eco = new Eco(); // button4.Enabled = false; // await Task.Run(() => // { // if (eco.ECOFindCerificationCode(textBox4.Text.Trim())) // { // if (!this.IsDisposed) ShowSuccessAutoClose("请求验证码成功"); // Thread.Sleep(20000); // } // else // this.Invoke(new Action(() => // { // if (!this.IsDisposed) ShowErrorAutoClose("获取验证码失败,请稍后重试"); // })); // }); // button4.Enabled = true; //} //catch (Exception ex) //{ // if (!this.IsDisposed) ShowError($"{ex.Message} - {ex.StackTrace}"); //} } /// /// 手机号码登录 /// /// /// private void button2_Click(object sender, EventArgs e) { try { //if (string.IsNullOrWhiteSpace(textBox3.Text.Trim())) throw new Exception("请输入验证码"); //Eco eco = new Eco(); ////var html = eco.ECOCheckVerificationCode(textBox4.Text.Trim(), textBox3.Text.Trim()); //var html = eco.ECOLogin(textBox4.Text.Trim(), textBox3.Text.Trim(), Eco.LoginType.手机号码登录); //if (string.IsNullOrWhiteSpace(html)) throw new Exception("请求异常,返回数据为空"); //var dic = HttpExtend.JsonToDictionary(html); //if (dic != null && dic.ContainsKey("msg")) //{ // var msg = dic["msg"].ToString(); // //ShowSuccess(msg);//TODO 这里看怎么显示 // if (msg != "登录成功") return; // if (!dic.ContainsKey("data")) throw new Exception("数据异常,未包含data"); // var data = dic["data"] as Dictionary; // if (!data.ContainsKey("loginValicateSingle")) throw new Exception("数据异常,未包含loginValicateSingle"); // var loginValicateSingle = data["loginValicateSingle"].ToString(); // if (!data.ContainsKey("loginValicateName")) throw new Exception("数据异常,未包含loginValicateName"); // var loginValicateName = data["loginValicateName"].ToString(); // if (!data.ContainsKey("token")) throw new Exception("数据异常,未包含token"); // var token = data["token"].ToString(); // if (!data.ContainsKey("username")) throw new Exception("数据异常,未包含username"); // var username = data["username"].ToString(); // loginInfo = new EcoLoginInfo() { loginValicateName = loginValicateName, loginValicateSingle = loginValicateSingle, token = token, username = username }; // ShowSuccess("第二步操作完成"); //} loginInfo = new EcoLoginInfo() { loginValicateName = textBox1.Text.Trim(), loginValicateSingle = textBox2.Text.Trim(), token = textBox5.Text.Trim(), username = textBox6.Text.Trim() }; ShowSuccess("第二步操作完成"); } catch (Exception ex) { ShowError($"{ex.Message} - {ex.StackTrace}"); } } #region ECO /// /// ECO数据导入 /// /// /// private void button3_Click(object sender, EventArgs e) { if (loginInfo == null) { ShowErrorAutoClose("请先登录"); return; } try { bool tbIsSelect = false; bool pddIsSelect = false; bool jdIsSelect = false; if (!checkBox5.Checked && !checkBox8.Checked && !checkBox9.Checked && !checkBox10.Checked && !checkBox11.Checked && !checkBox12.Checked && !checkBox13.Checked && !checkBox14.Checked && !checkBox15.Checked && !checkBox16.Checked) { ShowSuccessAutoClose(@"会员数据,订单绑定至少勾选一个需要同步的数据!"); return; } if (checkBox8.Checked || checkBox9.Checked || checkBox10.Checked) tbIsSelect = true; if (checkBox11.Checked || checkBox12.Checked || checkBox13.Checked) jdIsSelect = true; if (checkBox14.Checked || checkBox15.Checked || checkBox16.Checked) pddIsSelect = true; if (checkBox5.Checked) { if (XtraMessageBox.Show(@"如果以前导入成功过会员数据,请勿重复导入! 点击 yes 继续导入", "温馨提示", MessageBoxButtons.YesNo) == DialogResult.No) return; } Task.Run(() => { //EventClient.StopParsing = false; try { OnEvent(this, "ECO导入开始执行..."); Eco eco = new Eco(); #region 导入eco用户 if (checkBox5.Checked) { try { #region excel用户数据导入(用户数据好像有缺失) // //第一步找到设备列表(获取所有的机器人id) // var robotids = new List(); // OnEvent(this, "开始获取机器人列表..."); // eco.ECOFindRobotList(loginInfo.loginValicateName, loginInfo.loginValicateSingle, loginInfo.token, robotids); // OnEvent(this, "获取机器人列表结束!"); // var savepath = @"Cache\ECO"; // //第二步下载excel // OnEvent(this, $"开始获取用户数据..."); // OnEvent(this, $"第一个阶段开始..."); // eco.ECODownloadMemberExcel(robotids, loginInfo.token, savepath); // //第三步读取excel // OnEvent(this, $"第二个阶段开始..."); // List memberInfos = eco.ECOReadExcel(savepath); // OnEvent(this, $"获取用户数据结束!"); // //var ss = memberInfos.FirstOrDefault(f=>f.username == "wxid_9njcmjotsgm512"); // //第四部插入用户数据 // OnEvent(this, $"导入用户数据开始..."); // eco.ECOInsertMember(memberInfos); // OnEvent(this, $"导入用户数据结束..."); // this.UpdateUI(() => // { // labelControl8.Text = "【导入成功】"; // robotids.Clear(); // }); // ShowSuccess(@"用户数据导入成功 //请勿重复导入用户数据,否则会导致积分叠加"); #endregion #region 数据采集 //第一步找到设备列表(获取所有的机器人id) var robotids = new List(); OnEvent(this, "开始获取机器人列表..."); eco.ECOFindRobotList(loginInfo.loginValicateName, loginInfo.loginValicateSingle, loginInfo.token, robotids); OnEvent(this, "获取机器人列表结束!"); //var savepath = @"Cache\ECO"; ////第二步下载excel //OnEvent(this, $"开始获取用户数据..."); //OnEvent(this, $"第一个阶段开始..."); //eco.ECODownloadMemberExcel(robotids, loginInfo.token, savepath); ////第三步读取excel //OnEvent(this, $"第二个阶段开始..."); //List memberInfos = eco.ECOReadExcel(savepath); //OnEvent(this, $"获取用户数据结束!"); //第二步采集用户数据 OnEvent(this, $"开始采集用户数据"); List memberInfos = eco.ECOFindMembers(loginInfo.token, robotids); //第三步数据校验 eco.ECOFindMemberList(loginInfo.token, string.Empty, memberInfos); //var ss = memberInfos.FirstOrDefault(f=>f.username == "wxid_9njcmjotsgm512"); //第四部插入用户数据 OnEvent(this, $"导入用户数据开始..."); eco.ECOInsertMember(memberInfos); OnEvent(this, $"导入用户数据结束..."); this.UpdateUI(() => { labelControl8.Text = "【导入成功】"; robotids.Clear(); }); ShowSuccess(@"用户数据导入成功 请勿重复导入用户数据,否则会导致积分叠加"); #endregion } catch (Exception ex) { this.UpdateUI(() => { labelControl8.Text = "【导入失败】"; }); ShowErrorAutoClose($@"用户数据导入失败 - {ex.Message} - {ex.StackTrace}"); } } #endregion #region 绑定订单数据 if (tbIsSelect) { var session = ApiClient.GetSession(); #region ECO淘宝订单采集 var tbBindOrderList = new List(); //保存采集到的已经绑定的订单数据 OnEvent(this, $"ECO淘宝订单信息开始采集..."); #region 淘宝采集 if (checkBox8.Checked) eco.ECOBindOrder(1, Eco.OrderType.淘宝, OrderStateType.已结算, tbBindOrderList, loginInfo.token, ""); //eco.ECOBindOrder(1, OrderType.淘宝, OrderStateType.已失效, tbBindOrderList, loginInfo.token, ""); if (checkBox9.Checked) eco.ECOBindOrder(1, Eco.OrderType.淘宝, OrderStateType.未结算, tbBindOrderList, loginInfo.token, ""); #endregion #region 淘宝订单(剩余那些绑定的订单(超过1000的)) if (checkBox10.Checked) { List tbOrders = null; if (!checkEdit1.Checked) { //tbOrders = session.Find("select * from fl_order_alimama where db_userid = 0 and db_status != 1004 and create_time > @create_time", new { create_time = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm::ss") }).ToList(); tbOrders = session.Find("select * from fl_order_alimama where db_userid = 0 and db_status != 1004 order by create_time desc", new { }).ToList(); } else { tbOrders = session.Find("select * from fl_order_alimama where db_userid = 0 and db_status != 1004 and @create_time1 <= create_time and create_time <= @create_time2 order by create_time desc", new { create_time1 = dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss"), create_time2 = dateTimePicker3.Value.ToString("yyyy-MM-dd HH:mm:ss") }).ToList(); } //tbOrders = session.Find("select * from fl_order_alimama where db_userid = 0 and db_status != 1004 and trade_parent_id in ('664726848631005452','664726240485482072','664933795817639226')", new { }).ToList(); if (tbOrders != null) { var tbBindOrderList2 = new List(); //保存采集到的剩余没有绑定的订单数据 foreach (var item in tbOrders) { if (tbBindOrderList.FirstOrDefault(f => f.orderId == item.trade_parent_id && f.itemId == item.num_iid) == null) eco.ECOBindOrder(1, Eco.OrderType.淘宝, OrderStateType.所有, tbBindOrderList2, loginInfo.token, item.trade_parent_id); if (tbBindOrderList2.Count > 20) { eco.ECOOrderBind(CpsType.阿里妈妈, tbBindOrderList2); tbBindOrderList2 = new List(); } } //防止还有订单遗漏提交 if (tbBindOrderList2.Count != 0) { eco.ECOOrderBind(CpsType.阿里妈妈, tbBindOrderList2); tbBindOrderList2 = new List(); } } } #endregion OnEvent(this, $"ECO淘宝订单采集完毕!!!"); OnEvent(this, $"开始进行淘宝用户绑定..."); //tbBindOrderList.AddRange(tbBindOrderList2); eco.ECOOrderBind(CpsType.阿里妈妈, tbBindOrderList); OnEvent(this, $"淘宝订单绑定完毕!"); #endregion } if (jdIsSelect) { var session = ApiClient.GetSession(); #region ECO京东订单采集 var jdBindOrderList = new List(); //保存采集到的已经绑定的订单数据 OnEvent(this, $"ECO京东订单信息开始采集..."); if (checkBox11.Checked) eco.ECOBindOrder(1, Eco.OrderType.京东, OrderStateType.已结算, jdBindOrderList, loginInfo.token, ""); //eco.ECOBindOrder(1, OrderType.京东, OrderStateType.已失效, jdBindOrderList, loginInfo.token, ""); if (checkBox12.Checked) eco.ECOBindOrder(1, Eco.OrderType.京东, OrderStateType.未结算, jdBindOrderList, loginInfo.token, ""); #region 京东订单 剩余那些绑定的订单(超过1000的) var jdBindOrderList2 = new List(); //保存采集到的剩余没有绑定的订单数据 if (checkBox13.Checked) { //var jdOrders = session.Find("select * from fl_order_jingdong where db_userid = 0 and db_status != 1004").ToList(); List jdOrders = null; if (!checkEdit1.Checked) { jdOrders = session.Find("select * from fl_order_jingdong where db_userid = 0 and db_status != 1004 order by orderTime desc", new { }).ToList(); } else { jdOrders = session.Find("select * from fl_order_jingdong where db_userid = 0 and db_status != 1004 and @orderTime1 <= orderTime and orderTime <= @orderTime2 order by orderTime desc", new { orderTime1 = dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss"), orderTime2 = dateTimePicker3.Value.ToString("yyyy-MM-dd HH:mm:ss") }).ToList(); } if (jdOrders != null) { foreach (var item in jdOrders) { if (jdBindOrderList.FirstOrDefault(f => f.orderId == item.orderId.ToString() && f.itemId == item.skuId.ToString()) == null) eco.ECOBindOrder(1, Eco.OrderType.京东, OrderStateType.所有, jdBindOrderList2, loginInfo.token, item.orderId.ToString()); if (jdBindOrderList2.Count > 20) { eco.ECOOrderBind(CpsType.京东联盟, jdBindOrderList2); jdBindOrderList2 = new List(); } } //防止还有订单遗漏提交 if (jdBindOrderList2.Count != 0) { eco.ECOOrderBind(CpsType.京东联盟, jdBindOrderList2); jdBindOrderList2 = new List(); } } } #endregion OnEvent(this, $"ECO京东订单采集完毕!!!"); OnEvent(this, $"开始进行京东用户绑定..."); //jdBindOrderList.AddRange(jdBindOrderList2); eco.ECOOrderBind(CpsType.京东联盟, jdBindOrderList); OnEvent(this, $"京东订单绑定完毕!"); #endregion } if (pddIsSelect) { var session = ApiClient.GetSession(); #region 拼多多采集 var pddBindOrderList = new List(); //保存采集到的已经绑定的订单数据 OnEvent(this, $"ECO拼多多订单信息开始采集..."); if (checkBox14.Checked) eco.ECOBindOrder(1, Eco.OrderType.拼多多, OrderStateType.已结算, pddBindOrderList, loginInfo.token, ""); //eco.ECOBindOrder(1, OrderType.拼多多, OrderStateType.已失效, pddBindOrderList, loginInfo.token, ""); if (checkBox15.Checked) eco.ECOBindOrder(1, Eco.OrderType.拼多多, OrderStateType.未结算, pddBindOrderList, loginInfo.token, ""); #region 拼多多订单 剩余那些绑定的订单(超过1000的) var pddBindOrderList2 = new List(); //保存采集到的剩余没有绑定的订单数据 if (checkBox16.Checked) { //var pddOrders = session.Find("select * from fl_order_pinduoduo where db_userid = 0 and db_status != 1004").ToList(); List pddOrders = null; if (!checkEdit1.Checked) { pddOrders = session.Find("select * from fl_order_pinduoduo where db_userid = 0 and db_status != 1004 order by order_create_time desc", new { }).ToList(); } else { pddOrders = session.Find("select * from fl_order_pinduoduo where db_userid = 0 and db_status != 1004 and @orderTime1 <= order_create_time and order_create_time <= @orderTime2 order by order_create_time desc", new { orderTime1 = dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss"), orderTime2 = dateTimePicker3.Value.ToString("yyyy-MM-dd HH:mm:ss") }).ToList(); } if (pddOrders != null) { foreach (var item in pddOrders) { if (pddBindOrderList.FirstOrDefault(f => f.orderId == item.order_sn && f.itemId == item.goods_id) == null) eco.ECOBindOrder(1, Eco.OrderType.拼多多, OrderStateType.所有, pddBindOrderList2, loginInfo.token, item.order_sn); if (pddBindOrderList2.Count > 20) { eco.ECOOrderBind(CpsType.多多进宝, pddBindOrderList2); pddBindOrderList2 = new List(); } } //防止还有订单遗漏提交 if (pddBindOrderList2.Count != 0) { eco.ECOOrderBind(CpsType.多多进宝, pddBindOrderList2); pddBindOrderList2 = new List(); } } } #endregion OnEvent(this, $"ECO拼多多订单采集完毕!!!"); OnEvent(this, $"开始进行拼多多用户绑定..."); #region 绑定本地数据库的订单 //pddBindOrderList.AddRange(pddBindOrderList2); eco.ECOOrderBind(CpsType.多多进宝, pddBindOrderList); OnEvent(this, $"拼多多订单绑定完毕!"); #endregion #endregion } OnEvent(this, $"ECO订单所有执行完毕同步绑定执行完毕!"); if (!this.IsDisposed) ShowSuccess(@"订单绑定成功"); #endregion } catch (Exception ex) { OnEvent(this, $"ECO导入异常,已经终止导入操作~{ex.Message} - {ex.StackTrace}"); if (!this.IsDisposed) ShowError($"ECO导入异常:{ex.Message} - {ex.StackTrace}"); } finally { OnEvent(this, "ECO导入执行完毕!"); //EventClient.StopParsing = true; } }); } catch (Exception ex) { if (!this.IsDisposed) ShowError($"{ex.Message} - {ex.StackTrace}"); } } #endregion #endregion #region 数据库合并 public static List ConvertTo(DataTable table, string name) { if (table == null) { return null; } List list = new List(); foreach (DataRow row in table.Rows) { list.Add(row[name].ToString()); } return list; } public static IList ConvertTo(IList rows) { IList list = null; if (rows != null) { list = new List(); foreach (DataRow row in rows) { T item = CreateItem(row); list.Add(item); } } return list; } public static T CreateItem(DataRow row) { T obj = default(T); if (row != null) { obj = Activator.CreateInstance(); foreach (DataColumn column in row.Table.Columns) { PropertyInfo prop = obj.GetType().GetProperty(column.ColumnName); try { object value = row[column.ColumnName]; prop.SetValue(obj, value, null); } catch { //You can log something here //throw; } } } return obj; } /// /// 选择合并的数据库 /// /// /// private void simpleButton11_Click(object sender, EventArgs e) { try { checkState = "-1"; if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { var path = folderBrowserDialog1.SelectedPath; if (Directory.Exists(path)) { string[] paths = BackupAndImport.Tools.GetFiles(path, "(?(系统配置.ini$)|(数据库.db$))", -1); if (paths != null && paths.Length != 0) { var iniConfig = paths.FirstOrDefault(f => f.ToLower().Contains("系统配置.ini")); if (iniConfig != null) { Api.Framework.Tools.IniHelper ini = new Api.Framework.Tools.IniHelper(iniConfig); var slqModel = ini.GetValue("数据库", "类型"); if (slqModel == "5") //SQLiteConfig { textEdit8.Text = paths.FirstOrDefault(f => f.ToLower().Contains("数据库.db")); checkState = conn.CheckSqliteLink(textEdit8.Text.Trim(), ""); label9.Text = "Sqlite"; } else if (slqModel == "4") //MySQLConfig { textEdit8.Text = iniConfig; var mySQLConfig = ini.GetValue("数据库", "链接"); var reg = Regex.Match(mySQLConfig, "Data Source=(?.*?);Initial Catalog=(?.*?);Persist Security Info=True;User ID=(?.*?);Password=(?.*?);Port=(?.*?);"); if (reg.Success) { checkState = conn.CheckMysqlLink(reg.Groups["db_host"].ToString(), reg.Groups["db_name"].ToString(), reg.Groups["db_user"].ToString(), reg.Groups["db_pass"].ToString(), reg.Groups["db_port"].ToString()); //mysql链接是否成功 label9.Text = "MySql"; } } } else throw new Exception("未搜索到数据库"); //else //{ // var db = paths.FirstOrDefault(f => f.ToLower().Contains("数据库.db")); // if (db != null) // { // textEdit8.Text = db; // checkState = conn.CheckSqliteLink(db, ""); // label9.Text = "Sqlite"; // } // else throw new Exception("未搜索到数据库"); //} if (string.IsNullOrEmpty(checkState)) ShowSuccess("数据库链接成功!"); else { label9.Text = "请选择数据库"; ShowError(checkState); } } } } } catch (Exception ex) { ShowError(ex); } } #region 合并的进度条 private object lock_obj2 = new object(); private void AddJindu2(string text = "", int max = 0) { base.UpdateUI(() => { try { lock (lock_obj2) { if (!string.IsNullOrEmpty(text) && max == 0) { label36.Text = text; } else if (!string.IsNullOrEmpty(text) && max != 0) { label36.Text = text; this.progressBar2.Value = 0; this.progressBar2.Maximum = max; } else { if (this.progressBar2.Value < this.progressBar2.Maximum) this.progressBar2.Value++; label36.Text = $"{this.progressBar2.Value}/{this.progressBar2.Maximum}"; } } Application.DoEvents(); } catch (Exception) { } }); } #endregion /// /// 通用插入数据 /// /// /// /// /// private void InsertData(SqlSugarClient session, SqlSugarClient srcSession, IList tableNamelist, string tableNme, string fieldName = "", Dictionary memberIdDic = null, Dictionary robotIdDic = null, string defaultFieldName = "") { try { if (tableNamelist.Contains(tableNme)) { List fieldList = new List();//字段 var sql = string.Empty; if (conn.tempConfig.DatabaseType == DatabaseType.MYSQL) sql = "select COLUMN_NAME as name from information_schema.COLUMNS where table_name = '" + tableNme + "'"; else sql = "pragma table_info('" + tableNme + "')"; var fields = srcSession.FindTable(sql, new { }); for (int k = 0; k < fields.Rows.Count; k++) { var temp = fields.Rows[k]["name"].ToString(); if (temp.ToLower() != "id") fieldList.Add(temp); } sql = "select * from " + tableNme + ""; var resultSrc = srcSession.FindTable(sql); if (resultSrc.Rows.Count > 0) { List valueList = new List();//值 for (int k = 0; k < resultSrc.Rows.Count; k++) { var _list = new List(); var temp = string.Empty; //foreach (var item in fieldList) for (int z = 0; z < fieldList.Count; z++) { var item = fieldList[z]; if (item.ToLower() == "id") continue; temp = resultSrc.Rows[k][item].ToString().ToLower(); if (!string.IsNullOrEmpty(fieldName) && item == fieldName) { if (memberIdDic != null && memberIdDic.ContainsKey(int.Parse(temp))) temp = memberIdDic[int.Parse(temp)].ToString(); if (robotIdDic != null && robotIdDic.ContainsKey(int.Parse(temp))) temp = robotIdDic[int.Parse(temp)].ToString(); } //回复默认值 if (!string.IsNullOrEmpty(defaultFieldName) && item == defaultFieldName) { temp = "0"; } temp = temp == "false" ? "0" : temp == "true" ? "1" : temp.Replace(@"\", @"\\").Replace("'", "\''"); if (item.Contains("remark") || item.Contains("name") || item.Contains("custom_type") || item.Contains("nick") || item.Contains("title") || item.Contains("text") || item.Contains("comment") || item.Contains("sign") || item.Contains("message") ) _list.Add(RemoveEmoji(temp)); else _list.Add(temp); } valueList.Add("'" + string.Join("','", _list) + "'"); } if (valueList.Count != 0) { var num1 = (int)Math.Ceiling((decimal)valueList.Count / 100m); int size = 100; for (int o = 1; o <= num1; o++) { var _list = valueList.Skip((o - 1) * size).Take(size).ToList(); sql = "INSERT INTO " + tableNme + " (" + string.Join(",", fieldList) + ") VALUES (" + string.Join("),(", _list) + ")"; session.ExcuteSQL(sql, new { }); } } } } } catch (Exception ex) { EventClient.OnEvent(this, ex.Message + "-" + ex.StackTrace); } } /// /// 开始合并 /// /// /// private void simpleButton10_Click(object sender, EventArgs e) { try { simpleButton10.Enabled = false; if (conn == null) throw new Exception("请选择数据库~!"); //await Task.Run(delegate () Task.Run(delegate () { var session = ApiClient.GetSession(); session.BeginTransaction(); try { var srcSession = ApiClient.GetSession(conn.tempConfig, false); DataTable query = null; AddJindu2("正在读取数据库表结构..."); if (ApiClient.Setting.DbConfig.DatabaseType == DatabaseType.SQLITE) { query = session.FindTable("SELECT name FROM sqlite_master WHERE type='table' and name != 'sqlite_sequence'", new { }); session.ExcuteSQL("update fl_order_alimama set paid_time = '0001-01-01 00:00:00' where paid_time IS NULL"); session.ExcuteSQL("update fl_order_jingdong set refundcreatetime = '0001-01-01 00:00:00' where refundcreatetime IS NULL"); } else if (ApiClient.Setting.DbConfig.DatabaseType == DatabaseType.MYSQL) { var reg = Regex.Match(ApiClient.Setting.DbConfig.ConnectionString, "Data Source=(?.*?);Initial Catalog=(?.*?);Persist Security Info=True;User ID=(?.*?);Password=(?.*?);Port=(?.*?);"); if (!reg.Success) { AddJindu2("读取数据库表名失败,终止操作"); return; } //获取数据库表结构 query = session.FindTable("select table_name as name from information_schema.tables where table_schema=@table_schema and table_type='base table'", new { table_schema = reg.Groups["db_name"].ToString() }); //下面两句是将异常的字段数据改为正常的数据 session.ExcuteSQL("update fl_order_alimama set paid_time = '0001-01-01 00:00:00' where ISNULL(paid_time)"); session.ExcuteSQL("update fl_order_jingdong set refundcreatetime = '0001-01-01 00:00:00' where ISNULL(refundcreatetime)"); } if (query == null || query.Rows.Count == 0) { AddJindu2("读取数据库表结构失败,终止操作"); return; } DataTable srcquery = null; if (query != null && query.Rows.Count > 0) { AddJindu2("读取所有表结构成功"); var list = ConvertTo(query, "name"); //将DataTable 转成 List #region 读取原数据库表结构 if (conn.tempConfig.DatabaseType == DatabaseType.SQLITE) { srcquery = srcSession.FindTable("SELECT name FROM sqlite_master WHERE type='table' and name != 'sqlite_sequence'", new { }); srcSession.ExcuteSQL("update fl_order_alimama set paid_time = '0001-01-01 00:00:00' where paid_time IS NULL"); } else if (conn.tempConfig.DatabaseType == DatabaseType.MYSQL) { var reg = Regex.Match(conn.tempConfig.ConnectionString, "Data Source=(?.*?);Initial Catalog=(?.*?);Persist Security Info=True;User ID=(?.*?);Password=(?.*?);Port=(?.*?);"); if (!reg.Success) { AddJindu2("读取数据库表名失败,终止操作"); return; } srcquery = srcSession.FindTable("select table_name as name from information_schema.tables where table_schema=@table_schema and table_type='base table'", new { table_schema = reg.Groups["db_name"].ToString() }); srcSession.ExcuteSQL("update fl_order_alimama set paid_time = '0001-01-01 00:00:00' where ISNULL(paid_time)"); } if (srcquery == null || srcquery.Rows.Count == 0) { AddJindu2("读取目标数据库表结构失败,终止操作"); return; } var srclist = ConvertTo(srcquery, "name"); //将DataTable 转成 List #endregion #region fl_wechat_device 微信设备表 AddJindu2("正在判断表:设备表 是否存在"); if (list.Contains("fl_wechat_device") && srclist.Contains("fl_wechat_device")) { AddJindu2("设备表 存在,正在读取数据..."); var wechat_device = session.Find("select * from fl_wechat_device", new { }); var wechat_device_src = srcSession.Find("select * from fl_wechat_device", new { }); AddJindu2($"设备表 导入中...", wechat_device_src.Count); foreach (var item in wechat_device_src) { if (wechat_device.FirstOrDefault(f => f.weixinhao == item.weixinhao) == null) session.Insertable(item).ExecuteReturnIdentity(); AddJindu2(); } AddJindu2("设备表 数据导入成功"); wechat_device.Clear(); wechat_device_src.Clear(); } else AddJindu2("设备表 不存在"); #endregion #region fl_robot_info 机器人表 AddJindu2("正在判断表:机器人表 是否存在"); if (list.Contains("fl_robot_info") && srclist.Contains("fl_robot_info")) { AddJindu2("机器人表 存在,正在读取数据..."); var robot_info = session.Find("select * from fl_robot_info", new { }); var robot_info_src = srcSession.Find("select * from fl_robot_info", new { }); Dictionary robotIdDic = new Dictionary(); //原来的和现在的ID保存,以后直接替换机器人ID//前旧后新 AddJindu2($"机器人表 导入中...", robot_info_src.Count); foreach (var item in robot_info_src) { if (robot_info.FirstOrDefault(f => f.name == item.name && f.type == item.type) == null) { var oldId = item.id; item.id = 0; item.nick = Util.RemoveEmoji(item.nick); var id = session.Insertable(item).ExecuteReturnIdentity(); if (!robotIdDic.ContainsKey(oldId)) robotIdDic.Add(oldId, id); } AddJindu2(); } robot_info_src.Clear(); robot_info.Clear(); AddJindu2("机器人表 数据导入成功"); #region fl_adzone_group 推广位组表 AddJindu2("正在判断表:推广位组表 是否存在"); if (list.Contains("fl_adzone_group") && srclist.Contains("fl_adzone_group")) { AddJindu2("推广位组表 存在,正在读取数据..."); var adzone_groups = srcSession.Queryable().ToList(); var srcadzone_groups = srcSession.Queryable().ToList(); AddJindu2($"推广位组表 导入中...", srcadzone_groups.Count); foreach (var item in srcadzone_groups) { var adzone_group = adzone_groups.FirstOrDefault(f => f.name == item.name); if (adzone_group == null) { session.Insertable(item).ExecuteCommand(); } AddJindu2(); } AddJindu2("推广位组表 数据导入成功"); } #endregion #region fl_adzone_info 推广位表 AddJindu2("正在判断表:推广位表 是否存在"); if (list.Contains("fl_adzone_info") && srclist.Contains("fl_adzone_info")) { AddJindu2("推广位表 存在,正在读取数据..."); var adzone_info = srcSession.Find("select * from fl_adzone_info"); AddJindu2($"推广位表 导入中...", adzone_info.Count); foreach (var item in adzone_info) { if (robotIdDic.ContainsKey(item.robot_id)) //将机器人存在的ID的数据导过来,不存在的不要了 { item.robot_id = robotIdDic[item.robot_id]; item.id = 0; session.Saveable(item).ExecuteCommand(); } AddJindu2(); } AddJindu2("推广位表 数据导入成功"); } #endregion #region fl_weixin_password 微信其他信息 AddJindu2("正在判断表:微信其他信息表 是否存在"); if (list.Contains("fl_weixin_password") && srclist.Contains("fl_weixin_password")) { AddJindu2("微信其他信息表 存在,正在读取数据..."); var weixin_password = srcSession.Find("select * from fl_weixin_password"); AddJindu2($"微信其他信息表 导入中...", weixin_password.Count); foreach (var item in weixin_password) { if (robotIdDic.ContainsKey((int)item.robot_id)) //将机器人存在的ID的数据导过来,不存在的不要了 { item.robot_id = robotIdDic[item.robot_id]; item.id = 0; session.Saveable(item).ExecuteCommand(); } AddJindu2(); } AddJindu2("微信其他信息表 数据导入成功"); } else AddJindu2("微信其他信息表 不存在"); #endregion } else AddJindu2("微信其他信息表 不存在"); #endregion #region fl_cps_member 联盟账号 AddJindu2("正在判断表:联盟账号表 是否存在"); if (list.Contains("fl_cps_member") && srclist.Contains("fl_cps_member")) { AddJindu2("联盟账号表 存在,正在读取数据..."); var cps_member = session.Find("select * from fl_cps_member", new { }); var cps_member_src = srcSession.Find("select * from fl_cps_member", new { }); var exp = cps_member_src.Where(a => !cps_member.Where(t => a.username == t.username).Any()).ToList(); AddJindu2($"联盟账号表 导入中...", cps_member_src.Count); foreach (var _item in cps_member_src) { var item = exp.FirstOrDefault(f => f.username == _item.username); if (item != null) { item.id = 0; session.Saveable(item).ExecuteCommand(); } AddJindu2(); } cps_member_src.Clear(); cps_member.Clear(); AddJindu2("联盟账号表 数据导入成功"); } else AddJindu2("联盟账号表 不存在"); #endregion #region fl_member_info 用户数据 AddJindu2("正在判断表:用户数据表 是否存在"); if (list.Contains("fl_member_info") && srclist.Contains("fl_member_info")) { AddJindu2("用户数据表 存在,正在读取数据..."); var member_info = session.Find("select * from fl_member_info", new { }); var member_info_src = srcSession.Find("select * from fl_member_info", new { }); Dictionary memberIdDic = new Dictionary();//前旧后新 Dictionary bindDic = new Dictionary();//记录老的用户上级id,前面的是新用户的id_后面的是上级用户的老的id int id = 0; var robots = session.FindRobots(true); AddJindu2($"用户数据表 导入中...", member_info_src.Count); foreach (var item in member_info_src) { var member = member_info.FirstOrDefault(f => f.username == item.username); if (member != null) { member.chat_count = member.chat_count + item.chat_count; member.cur_point = (double)((decimal)member.cur_point + (decimal)item.cur_point); member.buy_point = (double)((decimal)member.buy_point + (decimal)item.buy_point); member.sum_point = (double)((decimal)member.sum_point + (decimal)item.sum_point); member.ext_point = (double)((decimal)member.ext_point + (decimal)item.ext_point); member.rew_point = (double)((decimal)member.rew_point + (decimal)item.rew_point); member.finish_order = member.finish_order + item.finish_order; member.bind_order = member.finish_order; member.remark = member.remark + (string.IsNullOrEmpty(member.remark) ? "" : " -- ") + item.remark; session.Updateable(member).ExecuteCommand(); memberIdDic.Add(item.id, member.id); } else { item.group_id = 0; var robot = robots.FirstOrDefault(f => f.name == item.robot_name && f.type == item.robot_type); item.robot_name = robot == null ? string.Empty : robot.name; if (robot != null) item.robot_type = robot.type; item.usernick = Util.RemoveEmoji(item.usernick); item.realnick = Util.RemoveEmoji(item.realnick); //TODO 还要绑定上下级,这里还要绑定机器人信息 id = session.Insertable(item).ExecuteReturnIdentity(); memberIdDic.Add(item.id, id); if (item.inviter_id != 0) bindDic.Add(id, (int)item.inviter_id); } AddJindu2(); } AddJindu2("用户数据表 数据导入成功"); member_info_src.Clear();//释放 member_info.Clear();//释放 #region 将老的上级替换成对应的新id用户 AddJindu2("用户数据表 正在绑定上下级关系中...", bindDic.Count); if (bindDic.Count != 0) { foreach (var item in bindDic) { var member = session.FindMemberInfoById(item.Key); if (member != null && memberIdDic.ContainsKey(member.inviter_id)) { member.inviter_id = memberIdDic[member.inviter_id]; session.SaveOrUpdate(member); } AddJindu2(); } } bindDic.Clear(); AddJindu2("用户数据表 绑定上下级成功"); #endregion #region fl_alimama_order_lastnum 用户订单尾号 AddJindu2("正在判断表:用户订单尾号表 是否存在"); if (list.Contains("fl_alimama_order_lastnum") && srclist.Contains("fl_alimama_order_lastnum")) { AddJindu2("用户订单尾号表 存在,正在读取数据..."); var alimama_order_lastnum = session.Find("select * from fl_alimama_order_lastnum", new { });//现有的 var alimama_order_lastnum_src = srcSession.Find("select * from fl_alimama_order_lastnum", new { });//导入的 AddJindu2("用户订单尾号表 导入中...", alimama_order_lastnum_src.Count); foreach (var item in alimama_order_lastnum_src) { if (memberIdDic.ContainsKey(item.userid)) { var order_lastnum = alimama_order_lastnum.FirstOrDefault(f => f.userid == memberIdDic[item.userid]); if (order_lastnum == null) //不存在的插入,存在的不管 { item.userid = memberIdDic[item.userid]; session.Insertable(item).ExecuteCommand(); } } AddJindu2(); } alimama_order_lastnum_src.Clear(); alimama_order_lastnum.Clear(); } AddJindu2("用户订单尾号表 合并成功"); #endregion #region 黄海的合并需要注释掉 #region fl_order_alimama 淘宝订单 AddJindu2("正在判断表:淘宝订单表 是否存在"); if (list.Contains("fl_order_alimama") && srclist.Contains("fl_order_alimama")) { AddJindu2("淘宝订单表 存在,正在读取数据...(数据越多等待时间越长)"); var order_alimama = session.Find("select * from fl_order_alimama", new { });//现有的数据 var order_alimama_src = srcSession.Find("select * from fl_order_alimama where db_userid != 0", new { });//导入的数据 var _temp = new List();//要保存的订单 var _temp2 = new List();//本地有的订单,但是没有被绑定 AddJindu2($"淘宝订单表 导入中...", order_alimama_src.Count); foreach (var item in order_alimama_src) { var order = order_alimama.FirstOrDefault(f => f.trade_id == item.trade_id && f.trade_parent_id == item.trade_parent_id);//匹配订单 if (order == null) { if (item.db_userid != 0) { if (memberIdDic.ContainsKey(item.db_userid)) item.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 item.db_userid = 0; } item.id = 0; _temp.Add(item); } else { if (order.db_userid == 0 && item.db_userid != 0)//本地的订单没有绑定用户,但是导入的的订单已经绑定了用户 { if (memberIdDic.ContainsKey(item.db_userid)) order.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 order.db_userid = 0; } _temp2.Add(order); } AddJindu2(); } order_alimama_src.Clear(); order_alimama.Clear(); AddJindu2("淘宝订单表 保存中..."); var _num1 = (int)Math.Ceiling((decimal)_temp.Count / 500m); var _num2 = (int)Math.Ceiling((decimal)_temp2.Count / 500m); var _num = _num1 + _num2; for (int o = 1; o <= _num1; o++) { var _list = _temp.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); AddJindu2($"淘宝订单表 保存中...{_num - o}"); } for (int o = 1; o <= _num2; o++) { var _list = _temp2.Skip((o - 1) * 500).Take(500).ToList(); session.Updateable(_list.ToArray()).ExecuteCommand(); AddJindu2($"淘宝订单表 保存中...{_num - o - _num1}"); } _temp2.Clear(); _temp.Clear(); AddJindu2("淘宝订单表 保存成功"); } #endregion #region fl_order_pinduoduo 拼多多订单 AddJindu2("正在判断表:拼多多订单表 是否存在"); if (list.Contains("fl_order_pinduoduo") && srclist.Contains("fl_order_pinduoduo")) { AddJindu2("拼多多订单表 存在,正在读取数据...(数据越多等待时间越长)"); var order_pinduoduo = session.Find("select * from fl_order_pinduoduo", new { }); var order_pinduoduo_src = srcSession.Find("select * from fl_order_pinduoduo where db_userid != 0", new { }); var _temp = new List(); var _temp2 = new List(); AddJindu2($"拼多多订单表 导入中...", order_pinduoduo_src.Count); foreach (var item in order_pinduoduo_src) { var order = order_pinduoduo.FirstOrDefault(f => f.order_sn == item.order_sn); if (order == null) { if (item.db_userid != 0) { if (memberIdDic.ContainsKey(item.db_userid)) item.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 item.db_userid = 0; } item.id = 0; _temp.Add(item); } else { if (order.db_userid == 0 && item.db_userid != 0)//本地的订单没有绑定用户,但是导入的的订单已经绑定了用户 { if (memberIdDic.ContainsKey(item.db_userid)) order.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 order.db_userid = 0; } _temp2.Add(order); } AddJindu2(); } order_pinduoduo.Clear(); order_pinduoduo_src.Clear(); AddJindu2("拼多多订单表 保存中..."); var _num1 = (int)Math.Ceiling((decimal)_temp.Count / 500m); var _num2 = (int)Math.Ceiling((decimal)_temp2.Count / 500m); var _num = _num1 + _num2; for (int o = 1; o <= _num1; o++) { var _list = _temp.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); AddJindu2($"拼多多订单表 保存中...{_num - o}"); } for (int o = 1; o <= _num2; o++) { var _list = _temp2.Skip((o - 1) * 500).Take(500).ToList(); session.Updateable(_list.ToArray()).ExecuteCommand(); AddJindu2($"拼多多订单表 保存中...{_num - o - _num1}"); } _temp2.Clear(); _temp.Clear(); AddJindu2("拼多多订单表 保存成功"); } #endregion #region fl_order_jingdong 京东订单 AddJindu2("正在判断表:京东订单表 是否存在"); if (list.Contains("fl_order_jingdong") && srclist.Contains("fl_order_jingdong")) { AddJindu2("京东订单表 存在,正在读取数据...(数据越多等待时间越长)"); var order_jingdong = session.Find("select * from fl_order_jingdong", new { }); var order_jingdong_src = srcSession.Find("select * from fl_order_jingdong where db_userid != 0", new { }); var _temp = new List(); var _temp2 = new List(); AddJindu2($"京东订单表 导入中...", order_jingdong_src.Count); foreach (var item in order_jingdong_src) { var order = order_jingdong.FirstOrDefault(f => f.orderId == item.orderId); if (order == null) { if (item.db_userid != 0) { if (memberIdDic.ContainsKey(item.db_userid)) item.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 item.db_userid = 0; } item.id = 0; _temp.Add(item); } else { order = order_jingdong.FirstOrDefault(f => f.orderId == item.orderId && f.db_userid == 0); if (order != null && order.db_userid == 0 && item.db_userid != 0)//本地的订单没有绑定用户,但是导入的的订单已经绑定了用户 { if (memberIdDic.ContainsKey(item.db_userid)) order.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 order.db_userid = 0; } if (order != null) _temp2.Add(order); else { } } AddJindu2(); } order_jingdong_src.Clear(); order_jingdong.Clear(); AddJindu2("京东订单表 保存中..."); var _num1 = (int)Math.Ceiling((decimal)_temp.Count / 500m); var _num2 = (int)Math.Ceiling((decimal)_temp2.Count / 500m); var _num = _num1 + _num2; for (int o = 1; o <= _num1; o++) { var _list = _temp.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); AddJindu2($"京东订单表 保存中...{_num - o}"); } for (int o = 1; o <= _num2; o++) { var _list = _temp2.Skip((o - 1) * 500).Take(500).ToList(); session.Updateable(_list.ToArray()).ExecuteCommand(); AddJindu2($"京东订单表 保存中...{_num - o - _num1}"); } _temp.Clear(); _temp2.Clear(); AddJindu2("京东订单表 保存成功"); } #endregion #region fl_order_weipinhui 唯品会订单 AddJindu2("正在判断表:唯品会订单 是否存在"); if (list.Contains("fl_order_weipinhui") && srclist.Contains("fl_order_weipinhui")) { AddJindu2("唯品会订单表 存在,正在读取数据...(数据越多等待时间越长)"); var order_weipinhui = session.Find("select * from fl_order_weipinhui", new { });//现有的数据 var order_weipinhui_src = srcSession.Find("select * from fl_order_weipinhui where db_userid != 0", new { });//导入的数据 var _temp = new List();//要保存的订单 var _temp2 = new List();//本地有的订单,但是没有被绑定 AddJindu2($"唯品会订单表 导入中...", order_weipinhui_src.Count); foreach (var item in order_weipinhui_src) { var order = order_weipinhui.FirstOrDefault(f => f.orderSn == item.orderSn && f.goodsId == item.goodsId && f.sizeId == item.sizeId);//匹配订单 if (order == null) { if (item.db_userid != 0) { if (memberIdDic.ContainsKey(item.db_userid)) item.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 item.db_userid = 0; } item.id = 0; _temp.Add(item); } else { if (order.db_userid == 0 && item.db_userid != 0)//本地的订单没有绑定用户,但是导入的的订单已经绑定了用户 { if (memberIdDic.ContainsKey(item.db_userid)) order.db_userid = memberIdDic[item.db_userid]; else//要是用户不存在,改订单不属于任何人 order.db_userid = 0; } _temp2.Add(order); } AddJindu2(); } order_weipinhui_src.Clear(); order_weipinhui.Clear(); AddJindu2("唯品会订单表 保存中..."); var _num1 = (int)Math.Ceiling((decimal)_temp.Count / 500m); var _num2 = (int)Math.Ceiling((decimal)_temp2.Count / 500m); var _num = _num1 + _num2; for (int o = 1; o <= _num1; o++) { var _list = _temp.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); AddJindu2($"唯品会订单表 保存中...{_num - o}"); } for (int o = 1; o <= _num2; o++) { var _list = _temp2.Skip((o - 1) * 500).Take(500).ToList(); session.Updateable(_list.ToArray()).ExecuteCommand(); AddJindu2($"唯品会订单表 保存中...{_num - o - _num1}"); } _temp2.Clear(); _temp.Clear(); AddJindu2("唯品会订单表 保存成功"); } #endregion #endregion #region fl_point_hist 积分日志 AddJindu2("正在判断表:积分日志表 是否存在"); if (list.Contains("fl_point_hist") && srclist.Contains("fl_point_hist")) { AddJindu2("积分日志表 存在,正在读取数据..."); var point_hist_src = srcSession.Find("select * from fl_point_hist", new { }); AddJindu2("积分日志表 导入中...", point_hist_src.Count); foreach (var item in point_hist_src) { item.uid = memberIdDic.ContainsKey((int)item.uid) ? memberIdDic[(int)item.uid] : 0; if (item.rid != 0 && item.uid != 0) { var member = session.FindMemberInfoById(item.uid); if (member != null) { var robot = robots.FirstOrDefault(f => f.name == member.robot_name && f.type == member.robot_type); item.rid = robot == null ? 0 : robot.id; } } item.id = 0; AddJindu2(); } var num = (int)Math.Ceiling((decimal)point_hist_src.Count / 500m); for (int o = 1; o <= num; o++) { var _list = point_hist_src.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); } AddJindu2("积分日志表 保存成功"); point_hist_src.Clear(); } else AddJindu2("积分日志表 不存在"); #endregion #region fl_query_hist 查询日志 xxx这个不导了 //AddJindu2("正在判断表:查询日志表 是否存在"); //if (list.Contains("fl_query_hist")) //{ // AddJindu2("查询日志表 存在"); // var query_hist = srcSession.Find("select * from fl_query_hist", new { }); // AddJindu2("查询日志表 导入中...", query_hist.Count); // foreach (var item in query_hist) // { // item.userid = memberIdDic.ContainsKey((int)item.userid) ? memberIdDic[(int)item.userid] : 0; // item.id = 0; // AddJindu2(); // } // var _num = (int)Math.Ceiling((decimal)query_hist.Count / 500m); // for (int o = 1; o <= _num; o++) // { // var _list = query_hist.Skip((o - 1) * 500).Take(500).ToList(); // session.Insertable(_list.ToArray()).ExecuteCommand(); // } // AddJindu2("查询日志表 导入成功"); //} //else AddJindu2("查询日志表 不存在"); #endregion #region fl_private_pid 用户私人pid表 AddJindu2("正在判断表:用户私人pid表 是否存在"); if (list.Contains("fl_private_pid") && srclist.Contains("fl_private_pid")) { AddJindu2("用户私人pid表 存在,正在读取数据..."); var private_pid = srcSession.Find("select * from fl_private_pid", new { }); AddJindu2("用户私人pid表 导入中...", private_pid.Count); List items = new List(); foreach (var item in private_pid) { if (memberIdDic.ContainsKey((int)item.uid)) { item.uid = memberIdDic[(int)item.uid]; item.id = 0; items.Add(item); } AddJindu2(); } var _num_ = (int)Math.Ceiling((decimal)items.Count / 500m); for (int o = 1; o <= _num_; o++) { var _list = items.Skip((o - 1) * 500).Take(500).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); } items.Clear(); private_pid.Clear(); AddJindu2("用户私人pid表 导入成功"); } else AddJindu2("用户私人pid表 不存在"); #endregion #region fl_exchange_info 积分兑换记录 AddJindu2("正在判断表:积分兑换记录表 是否存在"); if (list.Contains("fl_exchange_info") && srclist.Contains("fl_exchange_info")) { AddJindu2("积分兑换记录表 存在,正在读取数据..."); AddJindu2("积分兑换记录表 导入中...(速度可能有点慢)"); InsertData(session, srcSession, list, "fl_exchange_info", "uid", memberIdDic, defaultFieldName: "rid"); //重新查询导入后的数据,进行rid绑定 var unRobotBind = session.Find("select * from fl_exchange_info where rid = 0", new { }); if (unRobotBind != null && unRobotBind.Count != 0) { foreach (var item in unRobotBind) { var _member = session.FindMemberInfoById(item.uid); if (_member != null) { var robot = robots.FirstOrDefault(f => f.name == _member.robot_name && f.type == _member.robot_type); item.rid = robot == null ? 0 : robot.id; session.Saveable(item).ExecuteCommand(); } AddJindu2(); } } if (unRobotBind != null) unRobotBind.Clear(); AddJindu2("积分兑换记录表 导入完成"); } else AddJindu2("积分兑换记录表 不存在"); #endregion #region fl_plugin_pointmanage_checkin_info 签到数据 xxx这个不导入 //AddJindu2("正在判断表:签到数据表 是否存在"); //if (list.Contains("fl_plugin_pointmanage_checkin_info")) //{ // AddJindu2("签到数据表 存在"); // var plugin_pointmanage_checkin_info = session.Queryable("fl_plugin_pointmanage_checkin_info", "").ToDataTable(); // var plugin_pointmanage_checkin_info_src = srcSession.Queryable("fl_plugin_pointmanage_checkin_info", "").ToDataTable(); // List fieldList = new List(); //字段 // string sql = string.Empty; // string name = "fl_plugin_pointmanage_checkin_info"; // if (conn.tempConfig.DatabaseType == DatabaseType.MYSQL) // sql = "select COLUMN_NAME as name from information_schema.COLUMNS where table_name = '" + name + "'"; // else // sql = "pragma table_info('" + name + "')"; // var fields = srcSession.FindTable(sql, new { }); // for (int k = 0; k < fields.Rows.Count; k++) // { // var temp = fields.Rows[k]["name"].ToString(); // if (temp.ToLower() != "id") // fieldList.Add(temp); // } // sql = "select * from " + name + ""; // var resultSrc = srcSession.FindTable(sql); // if (resultSrc.Rows.Count > 0) // { // var result = session.FindTable(sql); // List valueList = new List(); //值 // for (int k = 0; k < resultSrc.Rows.Count; k++) // { // #region 两个数据库数据合并 // if (result.Rows.Count > 0) // { // var uidSrc = long.Parse(resultSrc.Rows[k]["uid"].ToString()); // if (memberIdDic.ContainsKey((int)uidSrc)) // { // var uidSrcStr = memberIdDic[(int)uidSrc].ToString(); // for (int i = 0; i < result.Rows.Count; i++) // { // if (result.Rows[i]["uid"].ToString() == uidSrcStr) // { // var daysSrc = // long.Parse(resultSrc.Rows[k]["days"].ToString()); // var days = long.Parse(result.Rows[i]["days"].ToString()); // var sumdaySrc = // long.Parse(resultSrc.Rows[k]["sumday"].ToString()); // var sumday = long.Parse(result.Rows[i]["sumday"].ToString()); // var timeSrc = // DateTime.Parse(resultSrc.Rows[k]["sumday"].ToString()); // var time = DateTime.Parse( // result.Rows[i]["sumday"].ToString()); // session.ExcuteSQL( // "update " + name + // " set days = @days,sumday = @sumday,time = @time where id = @id", // new // { // days = days + daysSrc, // sumday = sumdaySrc + sumday, // time = (timeSrc > time ? timeSrc : time), // id = long.Parse(result.Rows[i]["id"].ToString()) // }); // uidSrcStr = string.Empty; //赋值为空,用于外部continue; // break; // } // } // if (string.IsNullOrEmpty(uidSrcStr)) continue; // } // } // #endregion // var _list = new List(); // var temp = string.Empty; // foreach (var item in fieldList) // { // if (item.ToLower() == "id") continue; // temp = resultSrc.Rows[k][item].ToString(); // if (item == "uid") // { // if (memberIdDic.ContainsKey(int.Parse(temp))) // temp = memberIdDic[int.Parse(temp)].ToString(); // } // temp = temp.ToLower() == "false" ? "0" : // temp.ToLower() == "true" ? "1" : // temp.Replace(@"\", @"\\").Replace("'", "\''"); // _list.Add(RemoveEmoji(temp)); // } // valueList.Add("'" + string.Join("','", _list) + "'"); // } // if (valueList.Count != 0) // { // var num1 = (int)Math.Ceiling((decimal)valueList.Count / 100m); // int size = 100; // for (int o = 1; o <= num1; o++) // { // var _list = valueList.Skip((o - 1) * size).Take(size).ToList(); // sql = "INSERT INTO " + name + " (" + string.Join(",", fieldList) + // ") VALUES (" + string.Join("),(", _list) + ")"; // session.ExcuteSQL(sql, new { }); // } // } // } //} //else AddJindu2("签到数据表 不存在"); #endregion #region fl_plugin_userfission_user_invitation_code 用户邀请码xxx这个不导入 //InsertData(session, srcSession, list, "fl_plugin_userfission_user_invitation_code", "member_info_id", memberIdDic); #endregion } else AddJindu2("用户数据表 不存在"); #endregion #region fl_order_refund_alimama 维权的订单数据表 //AddJindu2("正在判断表:维权的订单数据表 是否存在"); //if (list.Contains("fl_order_refund_alimama") && srclist.Contains("fl_order_refund_alimama")) //{ // AddJindu2("维权的订单数据表 存在,正在读取数据..."); // var order_refund_alimama = session.Find("select * from fl_order_refund_alimama", new { }); // var order_refund_alimama_src = srcSession.Find("select * from fl_order_refund_alimama", new { }); // AddJindu2($"维权的订单数据表 导入中...", order_refund_alimama_src.Count); // foreach (var item in order_refund_alimama_src) // { // var order_refund = order_refund_alimama.FirstOrDefault(f => f.tbtradeparentid == item.tbtradeparentid && f.tbtradeid == item.tbtradeid); // if (order_refund == null) // { // item.id = 0; // session.Insertable(item).ExecuteCommand(); // } // AddJindu2(); // } // order_refund_alimama.Clear(); // order_refund_alimama_src.Clear(); // AddJindu2("维权的订单数据表 导入成功"); //} #endregion #region fl_plugin_userfission_applyfriend_info 加好友申请 xxx //InsertData(session, srcSession, list, "fl_plugin_userfission_applyfriend_info"); #endregion #region fl_plugin_userfission_invite_record 用户邀请进群邀请记录 //InsertData(session, srcSession, list, "fl_plugin_userfission_invite_record"); #endregion } session.Commit(); Thread.Sleep(200); AddJindu2("所有数据已经全部合并完成,并提交成功!"); Thread.Sleep(2000); } catch (Exception ex) { AddJindu2("合并操作执行异常,正在回滚数据..."); session.Rollback(); AddJindu2("合并操作执行异常,数据回滚完毕!"); this.Invoke(new Action(delegate { ShowError(ex); })); } finally { this.Invoke(new Action(delegate { simpleButton10.Enabled = true; })); } }); } catch (Exception ex) { if (!this.IsDisposed) ShowError(ex); } } private void comboBoxEdit2_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxEdit2.SelectedIndex == 5) { checkBox4.Enabled = true; if (checkBox4.Checked) { panelControl1.Visible = true; labelControl34.Visible = labelControl32.Visible = textEdit1.Visible = simpleButton1.Visible = false; } else { panelControl1.Visible = false; labelControl34.Visible = labelControl32.Visible = textEdit1.Visible = simpleButton1.Visible = true; } } else { labelControl34.Visible = labelControl32.Visible = textEdit1.Visible = simpleButton1.Visible = true; checkBox4.Enabled = panelControl1.Visible = checkBox4.Checked = false; } } private void checkBox4_CheckedChanged(object sender, EventArgs e) { panelControl1.Visible = checkBox4.Checked; labelControl34.Visible = labelControl32.Visible = textEdit1.Visible = simpleButton1.Visible = !checkBox4.Checked; } private void simpleButton13_Click(object sender, EventArgs e) { var session = ApiClient.GetSession(); session.BeginTransaction(); try { var members = session.Find("select * from fl_member_info"); var tblist = session.Find("select * from fl_order_alimama where db_userid != 0 and db_robotname = ''"); foreach (var item in tblist) { var member = members.FirstOrDefault(f => f.id == item.db_userid); if (member != null) { item.db_robotname = member.robot_name; item.db_robottype = member.robot_type; } session.SaveOrUpdate(item); } var pddlist = session.Find("select * from fl_order_pinduoduo where db_userid != 0 and db_robotname = ''"); foreach (var item in pddlist) { var member = members.FirstOrDefault(f => f.id == item.db_userid); if (member != null) { item.db_robotname = member.robot_name; item.db_robottype = member.robot_type; } session.SaveOrUpdate(item); } var jdlist = session.Find("select * from fl_order_jingdong where db_userid != 0 and db_robotname = ''"); foreach (var item in jdlist) { var member = members.FirstOrDefault(f => f.id == item.db_userid); if (member != null) { item.db_robotname = member.robot_name; item.db_robottype = member.robot_type; } session.SaveOrUpdate(item); } session.Commit(); } catch (Exception ex) { session.Rollback(); } } private void simpleButton15_Click(object sender, EventArgs e) { try { var EditRobotNameForm = new EditRobotNameForm(); EditRobotNameForm.ShowDialog(); var RobotNameDic = EditRobotNameForm.RobotNameDic; if (RobotNameDic.Count == 0) labelControl48.Text = "无设置"; else { labelControl48.Text = "已经设置"; labelControl48.Tag = RobotNameDic; } } catch (Exception ex) { } } private async void simpleButton16_Click(object sender, EventArgs e) { try { if (labelControl48.Tag == null) throw new Exception("请先设置要修改的机器人账号,点击【修改数据】设置."); simpleButton12.Enabled = simpleButton15.Enabled = simpleButton16.Enabled = false; Action restatr = null; EventClient.StopParsing = false; await Task.Run(() => { var session = ApiClient.GetSession(); session.BeginTransaction(); try { var RobotNameDic = labelControl48.Tag as Dictionary; AddJindu3($"获取需要修改的数据{RobotNameDic.Count}条", RobotNameDic.Count); Thread.Sleep(1300); foreach (KeyValuePair item in RobotNameDic) { if (session.TableExist("fl_robot_info")) { AddJindu3($"正在修改{item.Key},表 fl_robot_info 数据..."); session.ExcuteSQL("update fl_robot_info set name = @newName where name = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_member_info")) { AddJindu3($"正在修改{item.Key},表 fl_member_info 数据..."); session.ExcuteSQL("update fl_member_info set robot_name = @newName where robot_name = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_order_alimama")) { AddJindu3($"正在修改{item.Key},表 fl_order_alimama 数据..."); session.ExcuteSQL("update fl_order_alimama set db_robotname = @newName where db_robotname = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_order_pinduoduo")) { AddJindu3($"正在修改{item.Key},表 fl_order_pinduoduo 数据..."); session.ExcuteSQL("update fl_order_pinduoduo set db_robotname = @newName where db_robotname = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_order_jingdong")) { AddJindu3($"正在修改{item.Key},表 fl_order_jingdong 数据..."); session.ExcuteSQL("update fl_order_jingdong set db_robotname = @newName where db_robotname = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_plugin_pointmanage_exchange_list")) { AddJindu3($"正在修改{item.Key},表 fl_plugin_pointmanage_exchange_list 数据..."); session.ExcuteSQL("update fl_plugin_pointmanage_exchange_list set robot_name = @newName where robot_name = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_plugin_userfission_applyfriend_info")) { AddJindu3($"正在修改{item.Key},表 fl_plugin_userfission_applyfriend_info 数据..."); session.ExcuteSQL("update fl_plugin_userfission_applyfriend_info set robot_name = @newName where robot_name = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_query_hist")) { AddJindu3($"正在修改{item.Key},表 fl_query_hist 数据..."); session.ExcuteSQL("update fl_query_hist set robot_name = @newName where robot_name = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_wechat_device")) { AddJindu3($"正在修改{item.Key},表 fl_wechat_device 数据..."); session.ExcuteSQL("update fl_wechat_device set weixinhao = @newName where weixinhao = @robot_name", new { newName = item.Value, robot_name = item.Key }); } if (session.TableExist("fl_plugin_autoanswer__log")) { AddJindu3($"正在修改{item.Key},表 fl_plugin_autoanswer__log 数据..."); session.ExcuteSQL("update fl_plugin_autoanswer__log set robot_name = @newName where robot_name = @robot_name", new { newName = item.Value, robot_name = item.Key }); } AddJindu3($"修改{item.Key}相关的表数据成功~!"); AddJindu3(); session.Commit(); AddJindu3("所有账号修改完毕!!!"); restatr = ReStart; } } catch (Exception ex) { AddJindu3("修改异常,正在回滚数据~"); session.Rollback(); ShowError(ex); AddJindu3("修改异常,回滚数据完成~!"); } }); EventClient.StopParsing = true; simpleButton12.Enabled = simpleButton15.Enabled = simpleButton16.Enabled = true; restatr?.Invoke(); } catch (Exception ex) { if (!this.IsDisposed) ShowError("批量修改异常:" + ex.Message + " - " + ex.StackTrace); } } /// /// 软件重启 /// public void ReStart() { try { labelControl48.Text = "无设置"; labelControl48.Tag = null; //覆盖成功提示用户是否重启软件 if (MessageBox.Show("机器人账号修改成功,启动后生效,是否马上重启软件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { #region 是否允许软件重启[创建一个名为 reset 的空文件,在FLSystem的Program中判断这个文件是否存在,存在将允许重启] var reset_program = Util.MapFile("reset", "File"); File.Create(reset_program); #endregion Application.ExitThread(); Thread thtmp = new Thread(new ParameterizedThreadStart(run)); object appName = Application.ExecutablePath; Thread.Sleep(500); thtmp.Start(appName); } } catch (Exception ex) { ShowError(ex); } } #region 念初新版 Nianchu nc = null; /// /// 验证token的有效性 /// /// /// private void button6_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(textBox7.Text)) throw new Exception("请先填写念初token"); nc = new Nianchu(textBox7.Text); ShowSuccess("验证成功,请进行下一步操作!"); } catch (Exception ex) { nc = null; ShowError($"{ex.Message} - {ex.StackTrace}"); } } /// /// 开始念初导入 /// /// /// private void button5_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(textBox7.Text) || nc == null) throw new Exception("请先填写念初token"); Task.Run(() => { try { OnEvent(this, "念初导入开始执行..."); #region 导入念初用户 if (checkBox19.Checked) { try { //导入用户操作(获取机器人列表,机器人对应用户列表) nc.InsertMember(); ShowSuccess(@"用户数据导入成功 请勿重复导入用户数据,否则会导致积分叠加"); } catch (Exception ex) { ShowError($@"用户数据导入失败 - {ex.Message} - {ex.StackTrace}"); } } #endregion #region 同步淘宝订单 if (checkBox18.Checked) { nc.BindTb(); } #endregion #region 同步京东订单 if (checkBox17.Checked) { } #endregion #region 同步拼多多订单 if (checkBox7.Checked) { } #endregion OnEvent(this, $"念初订单所有执行完毕同步绑定执行完毕!"); if (!this.IsDisposed) ShowSuccess(@"订单绑定成功"); #endregion } catch (Exception ex) { OnEvent(this, $"念初导入异常,已经终止导入操作~{ex.Message} - {ex.StackTrace}"); if (!this.IsDisposed) ShowError($"念初导入异常:{ex.Message} - {ex.StackTrace}"); } finally { OnEvent(this, "念初导入执行完毕!"); //EventClient.StopParsing = true; } }); } catch (Exception ex) { ShowError("念初导入异常:" + ex.Message + " - " + ex.StackTrace); } } #endregion private void checkedListBoxControl1_SelectedIndexChanged(object sender, EventArgs e) { } private void textEdit1_EditValueChanged(object sender, EventArgs e) { } private void labelControl34_Click(object sender, EventArgs e) { } private void button7_Click(object sender, EventArgs e) { if (textBox8.Text == null) { ShowErrorAutoClose("请填写速推客云端cookie"); return; } try { if (checkBox20.Checked) { if (XtraMessageBox.Show(@"如果以前导入成功过会员数据,请勿重复导入! 点击 yes 继续导入", "温馨提示", MessageBoxButtons.YesNo) == DialogResult.No) return; } var ck = textBox8.Text; button7.Enabled = false; Task.Run(() => { try { BackupAndImport.速推客云端.EventLog.OnEvent(this, "速推客云端导入开始执行..."); Stk stk = new Stk(ck); #region 导入eco用户 if (checkBox20.Checked) { try { #region 数据采集 //第一步找到设备列表(获取所有的机器人id以及机器人类型 ,1为普通微信,2为企业微信) var robotids = new Dictionary(); BackupAndImport.速推客云端.EventLog.OnEvent(this, "开始获取机器人列表..."); stk.GetRobot(robotids); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"获取机器人列表结束,一共{robotids.Count}!"); //第二步采集用户数据 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"开始采集用户数据"); //Dictionary> memberdic = new Dictionary>(); foreach (KeyValuePair robotinfo in robotids) { BackupAndImport.速推客云端.EventLog.OnEvent(this, $"{robotinfo.Key}导入用户数据开始..."); var members = new List(); stk.GetMembers(robotinfo.Key, members); //memberdic[robotinfo.Key] = members; stk.STKInsertMember(robotinfo.Key, robotids[robotinfo.Key] == "1" ? ChatType.微信 : ChatType.企业微信, members); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"{robotinfo.Key},导入用户数据结束!!!\r\n"); } ////第四部插入用户数据 //BackupAndImport.速推客云端.EventLog.OnEvent(this, $"导入用户数据开始..."); //foreach (var dic in memberdic) //{ // stk.STKInsertMember(dic.Key, robotids[dic.Key] == "1" ? ChatType.微信 : ChatType.企业微信, dic.Value); //} //BackupAndImport.速推客云端.EventLog.OnEvent(this, $"导入用户数据结束!!!"); this.UpdateUI(() => { labelControl8.Text = "【导入成功】"; robotids.Clear(); }); ShowSuccess(@"用户数据导入成功 请勿重复导入用户数据,否则会导致积分叠加"); #endregion } catch (Exception ex) { this.UpdateUI(() => { labelControl8.Text = "【导入失败】"; }); ShowErrorAutoClose($@"用户数据导入失败 - {ex.Message} - {ex.StackTrace}"); } } #endregion if (checkBox31.Checked) { #region STK未审核提现采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客未审核提现信息开始采集..."); int total = 0; int page = 0; int pageSize = 100; var date = DateTime.Now; do { page++; //Thread.Sleep(200); stk.Exchanges(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"未审核提现采集完毕!"); #endregion } #region 绑定订单数据 if (checkBox21.Checked) { #region STK淘宝订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客淘宝订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; //Thread.Sleep(200); stk.BindTBOrder(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"淘宝订单绑定完毕!"); #endregion } if (checkBox22.Checked) { #region STK京东订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客京东订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; //Thread.Sleep(200); stk.BindJDOrder(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"京东订单绑定完毕!"); #endregion } if (checkBox23.Checked) { #region STK拼多多订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客拼多多订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; //Thread.Sleep(200); stk.BindPDDOrder(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"拼多多订单绑定完毕!"); #endregion } if (checkBox24.Checked) { #region STK唯品会订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客唯品会订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; stk.BindWPHOrder(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"唯品会订单绑定完毕!"); #endregion } if (checkBox25.Checked) { #region STK抖音订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客抖音订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; stk.BindDYOrder(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"抖音订单绑定完毕!"); #endregion } //--------- if (checkBox26.Checked) { #region STK淘宝订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客淘宝订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; //Thread.Sleep(200); stk.BindTBOrder2(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"淘宝订单绑定完毕!"); #endregion } if (checkBox27.Checked) { #region STK京东订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客京东订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; //Thread.Sleep(200); stk.BindJDOrder2(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"京东订单绑定完毕!"); #endregion } if (checkBox28.Checked) { #region STK拼多多订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客拼多多订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; //Thread.Sleep(200); stk.BindPDDOrder2(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"拼多多订单绑定完毕!"); #endregion } if (checkBox29.Checked) { #region STK唯品会订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客唯品会订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; stk.BindWPHOrder2(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"唯品会订单绑定完毕!"); #endregion } if (checkBox30.Checked) { #region STK抖音订单采集 BackupAndImport.速推客云端.EventLog.OnEvent(this, $"速推客抖音订单信息开始采集..."); int total = 0; int page = 0; int pageSize = 30; var date = DateTime.Now; do { page++; stk.BindDYOrder2(date, page, pageSize, out total); } while (total > (page * pageSize)); BackupAndImport.速推客云端.EventLog.OnEvent(this, $"抖音订单绑定完毕!"); #endregion } BackupAndImport.速推客云端.EventLog.OnEvent(this, $"云端速推客订单所有执行完毕同步绑定执行完毕!"); if ((checkBox21.Checked || checkBox22.Checked || checkBox23.Checked || checkBox24.Checked || checkBox25.Checked || checkBox26.Checked || checkBox27.Checked || checkBox28.Checked || checkBox29.Checked || checkBox30.Checked) && !this.IsDisposed) ShowSuccess(@"订单绑定成功"); #endregion } catch (Exception ex) { BackupAndImport.速推客云端.EventLog.OnEvent(this, $"云端速推客导入异常,已经终止导入操作~{ex.Message} - {ex.StackTrace}"); if (!this.IsDisposed) ShowError($"云端速推客导入异常:{ex.Message} - {ex.StackTrace}"); } finally { this.Invoke(new Action(() => { button7.Enabled = true; })); BackupAndImport.速推客云端.EventLog.OnEvent(this, "云端速推客导入执行完毕!"); //EventClient.StopParsing = true; } }); } catch (Exception ex) { if (!this.IsDisposed) ShowError($"{ex.Message} - {ex.StackTrace}"); } } } class point { public long uid { get; set; } public double num { get; set; } } }