old_flsystem/应用/BackupAndImport/速推客云端/Stk.cs

867 lines
47 KiB
C#
Raw Normal View History

2022-09-29 10:35:00 +00:00
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
/// <summary>
/// 获取机器人列表
/// </summary>
/// <param name="robots"></param>
public void GetRobot(Dictionary<string, string> 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<int>();//总用户数
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}页数据异常");
}
}
/// <summary>
/// 获取机器人对应的用户列表
/// </summary>
/// <param name="robotname"></param>
/// <param name="memberInfos"></param>
/// <param name="page"></param>
/// <param name="pageSize"></param>
public void GetMembers(string robotname, List<STKMemberInfo> 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<int>();//总用户数
var data = jObj["data"]?.ToArray();
if (data != null)
{
OnEvent(this, $"获取机器人{robotname},第{page}页用户数据成功");
if (data.Length != 0)
{
var members = jObj["data"].ToObject<List<STKMemberInfo>>();
if (members != null)
memberInfos.AddRange(members);
if (count > (page * pageSize))
{
page++;
//Thread.Sleep(200);
GetMembers(robotname, memberInfos, page, pageSize);
}
}
}
else
{
OnEvent(this, $"正在获取机器人{robotname},第{page}页用户数据异常");
}
}
/// <summary>
/// 插入用户数据到秒单客数据库(包括绑定上下级)
/// </summary>
/// <param name="STKMemberInfos"></param>
public void STKInsertMember(string robotname, ChatType chatType, List<STKMemberInfo> STKMemberInfos)
{
if (ReadLogIsContains(robotname))
{
OnEvent(this, $"机器人{robotname},执行过用户导入。跳过");
return;
}
var session = ApiClient.GetSession();
session.BeginTransaction();
try
{
//var srcMemberInfo = session.Find<fl_member_info>("select * from fl_member_info");
List<fl_member_info> unMemberInfos = new List<fl_member_info>();//保存不存在的用户对象
List<fl_member_info> memberInfos = new List<fl_member_info>();//保存存在的用户对象
foreach (var member in STKMemberInfos)
{
//TODO 这里就不判断企业微信了
var user = session.Queryable<fl_member_info>().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<fl_member_info>().First(f => f.robot_type == chatType && f.username == item.wx_id);
if (new_user != null && new_user.inviter_id == 0)
{
var inviter = session.Queryable<fl_member_info>().First(f => f.robot_type == chatType && f.username == item.father_id);//找出上级账号
if (inviter != null)
{
new_user.inviter_id = inviter.id;//填写上级ID
2022-10-10 07:15:51 +00:00
//session.Updateable<fl_member_info>(new { inviter_id = inviter.id }).Where(f => f.id == new_user.id).ExecuteCommand();
session.Updateable(new_user);
2022-09-29 10:35:00 +00:00
}
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;
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<double>();
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<DateTime>();
}
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}页完成,并成功导入信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_alimama>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_jingdong>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_pinduoduo>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_weipinhui>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_douyin>("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}页完成,并成功绑定用户信息");
}
}
//-------------------------------
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_alimama>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_jingdong>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_pinduoduo>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_weipinhui>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// 下载并绑定订单数据
/// </summary>
/// <param name="page"></param>
/// <param name="pageSize"></param>
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<int>();//总订单数
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<fl_order_douyin>("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}页完成,并成功绑定用户信息");
}
}
/// <summary>
/// http请求方法
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
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
}
}