using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Api.Framework; using Api.Framework.Enums; using Api.Framework.Model; using Api.Framework.SDK; using Api.Framework.Tools; using BackupAndImport.速推客云端.Entitys; using Chat.Framework.WXSdk.IPAD; using CsharpHttpHelper; using CsharpHttpHelper.Enum; using Newtonsoft.Json.Linq; using static BackupAndImport.速推客云端.EventLog; namespace BackupAndImport.速推客云端 { public class Stk { private string ck; public Stk(string ck) { this.ck = ck; } #region 云端速推客导入 /// /// 获取机器人列表 /// /// public void GetRobot(Dictionary robots, int page = 1, int pageSize = 30) { var url = "http://yun.yunsutuike.com/page/robot/data.php?typeName=robotList&type=1&page=" + page + "&limit=" + pageSize; var html = GetHtml(url); #region 数据结构 //{"code":0,"msg":"","count":"4","data":[{"uid":"11","wx_img":"http:\/\/wx.qlogo.cn\/mmhead\/ver_1\/0SXNqzaIpVNdlUrezfv6Hlepsp6FMr1qWa13ozRFhCC2z8ntELjhPbHWficegATH7cRa71Ria7pFQXqxMAghswfpV3ZzdwvF3UGO1KkZvj2D8\/0","wx_type":"1","wx_id":"wxid_qhemii9dknvp22","wx_name":"A \u7701\u94b1\u7ba1\u5bb6 \u638f\u3001\u62fc\u3001\u4eac\u67e5\u8be2","gruop_name":"\u672a\u5206\u7ec4","km_user":"letee88","km_ip":"118.24.33.97","version":"2.0.6","remarks":null,"wx_number":"","km_expire_time":"2022-07-01 20:14:04","update_time":"2022-05-27 19:54:06","oauth":"\u65e0\/\u65e0\/22222\/\u65e0","status":0,"wx_version":"3.3.0","member_num":"4370"},{"uid":"6","wx_img":"http:\/\/wx.qlogo.cn\/mmhead\/ver_1\/9Pias2AZwGBYcuLlLUSiad23q9smXM8g3f9lQIc8EQoHo8ek0N0ODYUpg2eeYVDU4IAxJOic2ibdvVVHlocezEQOU7Esn7opz7KQ5HdaQBDJNFU\/0","wx_type":"1","wx_id":"wxid_scynpy2cpotu12","wx_name":"A \u5238\u9505\u513f\uff08\u638f\u3001\u62fc\u3001\u4eac\uff09","gruop_name":"\u672a\u5206\u7ec4","km_user":"letao879","km_ip":"118.24.33.97","version":"2.0.6","remarks":null,"wx_number":"","km_expire_time":"2023-04-02 09:01:17","update_time":"2022-05-27 19:54:09","oauth":"\u65e0\/\u65e0\/22222\/\u65e0","status":0,"wx_version":"3.3.0","member_num":"5451"},{"uid":"3","wx_img":"http:\/\/wx.qlogo.cn\/mmhead\/ver_1\/m6qtl2JnRJ3ibQV1t7jfetl9xXH0j3VGTjA1ZjQXUwicN5uYcwZVMNBrJiahR0veicj0MH6sAQVRHOYEzzWHVeuyQm5Q1roeRZtoUaxPlgj0tUc\/0","wx_type":"1","wx_id":"wxid_64arztvjyh512","wx_name":"A \u5238\u5927\u5927 ? \u638f\u62fc\u4eac24\u5c0f\u65f6\u67e5\u8be2","gruop_name":"\u672a\u5206\u7ec4","km_user":"18550782199","km_ip":"118.24.33.97","version":"2.0.6","remarks":null,"wx_number":"","km_expire_time":"2023-03-02 20:41:01","update_time":"2022-05-27 19:54:14","oauth":"\u65e0\/\u65e0\/22222\/\u65e0","status":0,"wx_version":"3.3.0","member_num":"4931"},{"uid":"1","wx_img":"http:\/\/wx.qlogo.cn\/mmhead\/ver_1\/4XBEJdC1ULpibibalNibS8N48h8UdKVnMtDwC4BcCjPeg9Hgjsk2czUuDajq98GaqicaBOGn2SwhhibKKucWibIG0qOHxKEH64Au1gczc7vaAE4Q0\/0","wx_type":"1","wx_id":"lzy1249923552","wx_name":"A\u5341\u7c73??\u5b9d\u770b\u670b\u53cb\u5708\u6f6e\u978b\u5728\u89c6\u9891\u53f7","gruop_name":"\u672a\u5206\u7ec4","km_user":"17312558003","km_ip":"120.242.233.249","version":"1.9.2","remarks":null,"wx_number":"","km_expire_time":"2022-02-10 13:22:34","update_time":"2022-02-09 23:48:08","oauth":"\u65e0\/\u65e0\/\u65e0\/\u65e0","status":2,"wx_version":"3.3.5","member_num":"4"}]} #endregion OnEvent(this, $"正在获取第{page}页机器人数据..."); var jObj = JObject.Parse(html); var count = jObj["count"].Value();//总用户数 var data = jObj["data"]?.ToArray(); if (data != null) { if (data.Length == 0) throw new Exception("不存在机器人,疑似没有任何数据"); OnEvent(this, $"获取第{page}页机器人数据成功"); foreach (var tmp in data) { robots[tmp["wx_id"].ToString()] = tmp["wx_type"].ToString(); } if (count > (page * pageSize)) { page++; //Thread.Sleep(200); GetRobot(robots, page, pageSize); } } else { OnEvent(this, $"正在获取机器人,第{page}页数据异常"); } } /// /// 获取机器人对应的用户列表 /// /// /// /// /// public void GetMembers(string robotname, List memberInfos, int page = 1, int pageSize = 100) { if (ReadLogIsContains(robotname)) { OnEvent(this, $"机器人{robotname},执行过用户导入。跳过"); return; } OnEvent(this, $"正在获取机器人{robotname},第{page}页用户数据..."); var url = "http://yun.yunsutuike.com/page/member/data.php?typeName=getMemberNew&data={%22desc_name%22:%22create_time%22,%22create_time%22:%22%22,%22order_time_type%22:%22update_money_time%22,%22order_time%22:%22%22,%22group_name%22:%22all%22,%22robot_id%22:%22" + robotname + "%22,%22screen_type%22:%22all%22,%22screen_val_1%22:%22%22,%22screen_val_2%22:%22%22,%22search_type%22:%22all%22,%22search_val%22:%22%22}&page=" + page + "&limit=" + pageSize; var html = GetHtml(url); html = HttpExtend.Unicode2String(html); #region 数据结构 // #endregion var jObj = JObject.Parse(html); var count = jObj["count"].Value();//总用户数 var data = jObj["data"]?.ToArray(); if (data != null) { OnEvent(this, $"获取机器人{robotname},第{page}页用户数据成功"); if (data.Length != 0) { var members = jObj["data"].ToObject>(); if (members != null) memberInfos.AddRange(members); if (count > (page * pageSize)) { page++; //Thread.Sleep(200); GetMembers(robotname, memberInfos, page, pageSize); } } } else { OnEvent(this, $"正在获取机器人{robotname},第{page}页用户数据异常"); } } /// /// 插入用户数据到秒单客数据库(包括绑定上下级) /// /// public void STKInsertMember(string robotname, ChatType chatType, List STKMemberInfos) { if (ReadLogIsContains(robotname)) { OnEvent(this, $"机器人{robotname},执行过用户导入。跳过"); return; } var session = ApiClient.GetSession(); session.BeginTransaction(); try { //var srcMemberInfo = session.Find("select * from fl_member_info"); List unMemberInfos = new List();//保存不存在的用户对象 List memberInfos = new List();//保存存在的用户对象 foreach (var member in STKMemberInfos) { //TODO 这里就不判断企业微信了 var user = session.Queryable().First(f => f.robot_type == chatType && f.username == member.wx_id); if (user == null) { user = new fl_member_info() { username = member.wx_id, robot_type = ChatType.微信, usernick = member.wx_name.Replace("'", "''"), cur_point = string.IsNullOrWhiteSpace(member.effec_money) ? 0 : double.Parse(member.effec_money), sum_point = string.IsNullOrWhiteSpace(member.take_money) ? 0 : double.Parse(member.take_money), ext_point = string.IsNullOrWhiteSpace(member.take_money) ? 0 : double.Parse(member.take_money), finish_order = member.order_num == "无" ? 0 : int.Parse(member.order_num), robot_name = member.robot_name, headurl = member.wx_img, bind_order = member.order_num == "无" ? 0 : int.Parse(member.order_num), remark = member.wx_note, realnick = member.wx_name, alipay_name = string.Empty, alipay_num = string.Empty, }; var groups = session.FindGroups(); if (groups.Count != 0) user.group_id = groups[0].id; unMemberInfos.Add(user); } else { user.cur_point = (double)((decimal)user.cur_point + (string.IsNullOrWhiteSpace(member.effec_money) ? 0m : decimal.Parse(member.effec_money))); user.finish_order = user.finish_order + (member.order_num == "无" ? 0 : long.Parse(member.order_num)); if (string.IsNullOrWhiteSpace(user.robot_name)) { user.robot_name = member.robot_id; user.robot_type = chatType; } memberInfos.Add(user); } } OnEvent(this, $"机器人{robotname},执行用户导入操作..."); var _num1 = (int)Math.Ceiling((decimal)unMemberInfos.Count / 1000m); for (int o = 1; o <= _num1; o++) { var _list = unMemberInfos.Skip((o - 1) * 1000).Take(1000).ToList(); session.Insertable(_list.ToArray()).ExecuteCommand(); } var _num2 = (int)Math.Ceiling((decimal)memberInfos.Count / 1000m); for (int o = 1; o <= _num2; o++) { var _list = memberInfos.Skip((o - 1) * 1000).Take(1000).ToList(); session.Updateable(_list.ToArray()).ExecuteCommand(); } OnEvent(this, $"机器人{robotname},导入数据完成,正在绑定上下级..."); //将有上级的用户筛选出来 STKMemberInfos = STKMemberInfos.Where(f => !string.IsNullOrEmpty(f.father_id)).ToList(); //绑定上下级 if (STKMemberInfos != null && STKMemberInfos.Count != 0) { foreach (var item in STKMemberInfos) { var new_user = session.Queryable().First(f => f.robot_type == chatType && f.username == item.wx_id); if (new_user != null && new_user.inviter_id == 0) { var inviter = session.Queryable().First(f => f.robot_type == chatType && f.username == item.father_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); } else { } } } } OnEvent(this, $"用户上下级关系绑定成功!"); session.Commit(); WriteLog(robotname); } catch (Exception ex) { OnEvent(this, $"导入用户数据异常,开始回滚数据..."); session.Rollback(); OnEvent(this, $"导入用户数据异常,回滚执行成功! 异常:{ex.Message} ~ {ex.StackTrace}"); throw new Exception($"{ex.Message} ~ {ex.StackTrace}"); } } private void WriteLog(string _log) { var log = _log; var m = new Action(delegate () { try { string filename = CsharpHttpHelper.HttpExtend.MapFile($"stk.log", "Cache"); //(优化写法)创建或打开日志文件,向日志文件末尾追加记录,关闭日志文件 using (StreamWriter mySw = File.AppendText(filename)) { string writeContent = log; mySw.WriteLine(writeContent);//向日志文件写入内容 mySw.Close(); //关闭日志文件 } } catch (Exception) { } }); m.BeginInvoke(null, null); } private bool ReadLogIsContains(string log) { string filename = CsharpHttpHelper.HttpExtend.MapFile($"stk.log", "Cache"); if (File.Exists(filename)) { var lines = File.ReadLines(filename).ToList(); return lines.Contains(log); } return false; } /// /// 下载并绑定订单数据 /// /// /// public void Exchanges(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取未审核数据,第{page}页..."); //未审核的订单 var url = "http://yun.yunsutuike.com/page/retrieve/data.php?typeName=mainListNew&data={%22create_time%22:%22%22,%22robot_id%22:%22all%22,%22grant_type%22:%22all%22,%22order_status%22:%220%22,%22search_type%22:%22all%22,%22search_val%22:%22%22}&page=" + page + "&limit=" + pageSize; var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var money = item["money"].ToObject(); var exchange = new fl_exchange_info(); var member = db.FindMemberInfoByUsername(wx_id); if (member != null) { var robot = db.FindRobotInfo(robot_id, member.robot_type); if (robot != null) { exchange.rid = robot.id; } exchange.uid = member.id; } var time = DateTime.Now; try { time = item["create_time"].ToObject(); } catch (Exception e) { time = DateTime.Now; } exchange.IsTransmatic = false; exchange.point = money; exchange.time = time; exchange.state = ApplyType.未审核; db.Saveable(exchange).ExecuteCommand(); } OnEvent(this, $"未审核数据,第{page}页完成,并成功导入信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindTBOrder(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取淘宝绑定数据,第{page}页..."); //三个月已经绑定的订单请求 var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getTbListNew&data={%22desc_name%22:%22tk_create_time%22,%22order_time_type%22:%22tk_create_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_type%22:%22all%22,%22tk_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var trade_parent_id = item["trade_parent_id"].ToString(); var trade_id = item["trade_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("trade_parent_id = @trade_parent_id and trade_id = @trade_id", new { trade_parent_id = trade_parent_id, trade_id = trade_id }); if (order != null && order.db_userid == 0) { var member = db.FindMemberInfoByUsername(wx_id); if (member != null) { order.db_robotname = robot_id; order.db_userid = member.id; order.db_robottype = member.robot_type; db.Updateable(order).ExecuteCommand(); } } } OnEvent(this, $"淘宝绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindJDOrder(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取京东绑定数据,第{page}页..."); //三个月已经绑定的订单请求 var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getJdListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22plus%22:%22all%22,%22valid_code%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var order_id = item["order_parent_id"].ToString(); var sku_id = item["sku_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("orderId = @orderId and skuId = @skuId", new { orderId = order_id, skuId = sku_id }); if (order != null && order.db_userid == 0) { var member = db.FindMemberInfoByUsername(wx_id); if (member != null) { order.db_robotname = robot_id; order.db_userid = member.id; order.db_robottype = member.robot_type; db.Updateable(order).ExecuteCommand(); } } } OnEvent(this, $"京东绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindPDDOrder(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取拼多多绑定数据,第{page}页..."); //三个月已经绑定的订单请求 var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getPddListNew&data={%22desc_name%22:%22order_pay_time%22,%22order_time_type%22:%22order_pay_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; //http://yun.yunsutuike.com/page/order/data.php?typeName=getPddListNew&data={%22desc_name%22:%22order_pay_time%22,%22order_time_type%22:%22order_pay_time%22,%22order_time%22:%222022-02-28%20-%202022-05-28%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=1&limit=15 var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var order_sn = item["order_sn"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("order_sn = @order_sn", new { order_sn = order_sn }); if (order != null && order.db_userid == 0) { var member = db.FindMemberInfoByUsername(wx_id); if (member != null) { order.db_robotname = robot_id; order.db_userid = member.id; order.db_robottype = member.robot_type; db.Updateable(order).ExecuteCommand(); } } } OnEvent(this, $"拼多多绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindWPHOrder(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取唯品会绑定数据,第{page}页..."); //三个月已经绑定的订单请求 var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getVipListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_sub_status_name%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; //http://yun.yunsutuike.com/page/order/data.php?typeName=getVipListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%222022-02-28%20-%202022-05-28%22,%22cps_user_id%22:%22all%22,%22order_sub_status_name%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=1&limit=15 var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var orderSn = item["order_parent_sn"].ToString(); var goodsId = item["goods_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var orders = db.Find("orderSn = @orderSn and goodsId= @goodsId", new { orderSn = orderSn, goodsId = goodsId }).ToList(); if (orders.Count != 0) { foreach (var order in orders) { if (order.db_userid == 0) { var member = db.FindMemberInfoByUsername(wx_id); if (member != null) { order.db_robotname = robot_id; order.db_userid = member.id; order.db_robottype = member.robot_type; db.Updateable(order).ExecuteCommand(); } } } } } OnEvent(this, $"唯品会绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindDYOrder(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取抖音绑定数据,第{page}页..."); //三个月已经绑定的订单请求 var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getDyListNew&data={%22desc_name%22:%22pay_time%22,%22order_time_type%22:%22pay_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; //http://yun.yunsutuike.com/page/order/data.php?typeName=getDyListNew&data={%22desc_name%22:%22pay_time%22,%22order_time_type%22:%22pay_time%22,%22order_time%22:%222022-05-02%20-%202022-06-14%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=1&limit=15 var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var order_id = item["order_id"].ToString(); var product_id = item["product_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("order_id = @order_id and product_id=@product_id", new { order_id = order_id, product_id = product_id }); if (order != null && order.db_userid == 0) { var member = db.FindMemberInfoByUsername(wx_id); if (member != null) { order.db_robotname = robot_id; order.db_userid = member.id; order.db_robottype = member.robot_type; db.Updateable(order).ExecuteCommand(); } } } OnEvent(this, $"抖音绑定数据,第{page}页完成,并成功绑定用户信息"); } } //------------------------------- /// /// 下载并绑定订单数据 /// /// /// public void BindTBOrder2(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取淘宝绑定数据,第{page}页..."); //三个月已经绑定的订单请求 //var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getTbListNew&data={%22desc_name%22:%22tk_create_time%22,%22order_time_type%22:%22tk_create_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_type%22:%22all%22,%22tk_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getTbListNew&data={%22desc_name%22:%22tk_create_time%22,%22order_time_type%22:%22tk_create_time%22,%22order_time%22:%22%22,%22cps_user_id%22:%22all%22,%22order_type%22:%22all%22,%22tk_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%222%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var trade_parent_id = item["trade_parent_id"].ToString(); var trade_id = item["trade_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("trade_parent_id = @trade_parent_id and trade_id = @trade_id", new { trade_parent_id = trade_parent_id, trade_id = trade_id }); if (order != null) { order.db_robotname = robot_id; order.db_status = SystemOrderStatus.订单冻结; order.db_endtime = DateTime.Now.AddMinutes(10); db.Updateable(order).ExecuteCommand(); } } OnEvent(this, $"淘宝绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindJDOrder2(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取京东绑定数据,第{page}页..."); //三个月已经绑定的订单请求 //var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getJdListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22plus%22:%22all%22,%22valid_code%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getJdListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%22%22,%22cps_user_id%22:%22all%22,%22plus%22:%22all%22,%22valid_code%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%222%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var order_id = item["order_parent_id"].ToString(); var sku_id = item["sku_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("orderId = @orderId and skuId = @skuId", new { orderId = order_id, skuId = sku_id }); if (order != null) { order.db_robotname = robot_id; order.db_status = SystemOrderStatus.订单冻结; order.db_endtime = DateTime.Now.AddMinutes(10); db.Updateable(order).ExecuteCommand(); } } OnEvent(this, $"京东绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindPDDOrder2(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取拼多多绑定数据,第{page}页..."); //三个月已经绑定的订单请求 //var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getPddListNew&data={%22desc_name%22:%22order_pay_time%22,%22order_time_type%22:%22order_pay_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getPddListNew&data={%22desc_name%22:%22order_pay_time%22,%22order_time_type%22:%22order_pay_time%22,%22order_time%22:%22%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%222%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; //http://yun.yunsutuike.com/page/order/data.php?typeName=getPddListNew&data={%22desc_name%22:%22order_pay_time%22,%22order_time_type%22:%22order_pay_time%22,%22order_time%22:%222022-02-28%20-%202022-05-28%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=1&limit=15 var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var order_sn = item["order_sn"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("order_sn = @order_sn", new { order_sn = order_sn }); if (order != null) { order.db_robotname = robot_id; order.db_status = SystemOrderStatus.订单冻结; order.db_endtime = DateTime.Now.AddMinutes(10); db.Updateable(order).ExecuteCommand(); } } OnEvent(this, $"拼多多绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindWPHOrder2(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取唯品会绑定数据,第{page}页..."); //三个月已经绑定的订单请求 //var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getVipListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_sub_status_name%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getVipListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%22%22,%22cps_user_id%22:%22all%22,%22order_sub_status_name%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%222%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; //http://yun.yunsutuike.com/page/order/data.php?typeName=getVipListNew&data={%22desc_name%22:%22order_time%22,%22order_time_type%22:%22order_time%22,%22order_time%22:%222022-02-28%20-%202022-05-28%22,%22cps_user_id%22:%22all%22,%22order_sub_status_name%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=1&limit=15 var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var orderSn = item["order_parent_sn"].ToString(); var goodsId = item["goods_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var orders = db.Find("orderSn = @orderSn and goodsId= @goodsId", new { orderSn = orderSn, goodsId = goodsId }).ToList(); if (orders.Count != 0) { foreach (var order in orders) { //if (order.db_userid == 0) //{ // var member = db.FindMemberInfoByUsername(wx_id); // if (member != null) // { // order.db_robotname = robot_id; // order.db_userid = member.id; // order.db_robottype = member.robot_type; // db.Updateable(order).ExecuteCommand(); // } //} order.db_robotname = robot_id; order.db_status = SystemOrderStatus.订单冻结; order.db_endtime = DateTime.Now.AddMinutes(10); db.Updateable(order).ExecuteCommand(); } } } OnEvent(this, $"唯品会绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// 下载并绑定订单数据 /// /// /// public void BindDYOrder2(DateTime date, int page, int pageSize, out int total) { OnEvent(this, $"正在获取抖音绑定数据,第{page}页..."); //三个月已经绑定的订单请求 //var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getDyListNew&data={%22desc_name%22:%22pay_time%22,%22order_time_type%22:%22pay_time%22,%22order_time%22:%22" + date.AddMonths(-3).ToString("yyyy-MM-dd") + "%20-%20" + date.ToString("yyyy-MM-dd") + "%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; var url = "http://yun.yunsutuike.com/page/order/data.php?typeName=getDyListNew&data={%22desc_name%22:%22pay_time%22,%22order_time_type%22:%22pay_time%22,%22order_time%22:%22%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%222%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=" + page + "&limit=" + pageSize; //http://yun.yunsutuike.com/page/order/data.php?typeName=getDyListNew&data={%22desc_name%22:%22pay_time%22,%22order_time_type%22:%22pay_time%22,%22order_time%22:%222022-05-02%20-%202022-06-14%22,%22cps_user_id%22:%22all%22,%22order_status%22:%22all%22,%22robot_id%22:%22all%22,%22fl_status%22:%22100%22,%22fl_source%22:%22all%22,%22search_type%22:%22all%22,%22search_val%22:%22%22,%22user_rate%22:%22%22}&page=1&limit=15 var html = GetHtml(url); html = HttpExtend.Unicode2String(html); var jObj = JObject.Parse(html); total = jObj["count"].Value();//总订单数 var data = jObj["data"]?.ToArray(); if (data != null) { var db = ApiClient.GetSession(); foreach (var item in data) { var order_id = item["order_id"].ToString(); var product_id = item["product_id"].ToString(); var robot_id = item["robot_id"].ToString(); var wx_id = item["wx_id"].ToString(); var order = db.FindSingle("order_id = @order_id and product_id=@product_id", new { order_id = order_id, product_id = product_id }); if (order != null && order.db_userid == 0) { order.db_robotname = robot_id; order.db_status = SystemOrderStatus.订单冻结; order.db_endtime = DateTime.Now.AddMinutes(10); db.Updateable(order).ExecuteCommand(); } } OnEvent(this, $"抖音绑定数据,第{page}页完成,并成功绑定用户信息"); } } /// /// http请求方法 /// /// /// private string GetHtml(string url) { for (int i = 0; i < 10; i++) { HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = url, Method = "GET", Timeout = 100000, ReadWriteTimeout = 30000, IsToLower = false, Cookie = ck, UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0", Accept = "text/html, application/xhtml+xml, */*", ContentType = "text/html", Referer = "http://yun.yunsutuike.com/page/member/mainNew.php", Allowautoredirect = false, AutoRedirectCookie = false, Postdata = "", ResultType = ResultType.String, }; HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { string html = result.Html; if (html.Contains("Empty needle in")) throw new Exception("可能Cookie错误"); return html; } OnEvent(this, $"请求数据异常,正在重试第{(i + 1)}次..."); Thread.Sleep(2000); } throw new Exception("多次请求数据异常:终止操作"); } #endregion } }