old_flsystem/类库/Api.Framework/Timers/DownPinduoduoTimer - 复制.cs

794 lines
50 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Api.Framework.Cps;
using Api.Framework.Enums;
using Api.Framework.Events;
using Api.Framework.Model;
using Api.Framework.SDK;
using Api.Framework.Tools;
using Api.Framework.Utils;
using CsharpHttpHelper;
using Api.Framework.Tools;
using SqlSugar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Text;
namespace Api.Framework.Timers
{
/// <summary>
/// 下载拼多多订单,定时器
/// </summary>
public class DownPinduoduoTimer : TimerTask
{
private DateTime update_time = DateTime.Now.AddMinutes(-60);
public override void Run(object state, bool timedOut)
{
var end_time = DateTime.Now;
UpdateOrder(CpsClient.Members.Where(f => f.cpstype == CpsType. && f.is_download == SwitchType.).ToArray(), update_time, end_time);
update_time = DateTime.Now.AddMinutes(-20);
}
/// <summary>
/// 订单id
/// </summary>
public string order_id = string.Empty;
private object lock_obj = new object();
/// <summary>
/// 下载订单任务下达A
/// </summary>
/// <param name="member"></param>
/// <param name="start_time"></param>
/// <param name="end_time"></param>
public void UpdateOrder(List<fl_cps_member> members, DateTime start_time, DateTime end_time)
{
if (IsRunning) throw new Exception("任务繁忙,请稍后重试!");
try
{
IsRunning = true;
UpdateOrder(members.ToArray(), start_time, end_time);
}
catch (Exception ex)
{
EventClient.OnEvent(this, "更新拼多多订单异常:" + ex.Message);
}
finally
{
IsRunning = false;
}
}
/// <summary>
/// 更新订单
/// </summary>
/// <param name="start_time">开始时间</param>
/// <param name="end_time">结束时间</param>
/// <param name="order_id">订单id</param>
/// <returns></returns>
public bool UpdateOrder(DateTime start_time, DateTime end_time, string order_id = "")
{
if (IsRunning) throw new Exception("任务繁忙,请稍后重试!");
try
{
IsRunning = true;
this.order_id = order_id;
var members = CpsClient.Members.Where(f => f.cpstype == CpsType. && f.is_download == SwitchType.).ToArray();
UpdateOrder(members, start_time, end_time);
return true;
}
catch (Exception ex)
{
EventClient.OnEvent(this, "更新拼多多异常:" + ex.Message);
return false;
}
finally
{
this.order_id = string.Empty;
IsRunning = false;
}
}
private static string custom_parameters_regex = @"^robot=(?<机器人名>.*?)\stype=(?<类型>\d+)\suser=(?<会员名>.+?)(?:\smallid=(?<店铺ID>\d+)?)?$";
private static string custom_parameters_regex_new = @"^r=(?<机器人名>.*?)\st=(?<类型>\d+)\su=(?<会员名>.+?)$";
public void UpdateOrder(fl_order_pinduoduo db_order, SqlSugarClient session, List<OrderNoticeEvent> notice, bool isFrontData = false)
{
try
{
var old_status = db_order.db_status;
fl_member_info member = null;
var isRewards = false;//是否获得推荐新人奖励
var isFirstOrder = false;//是否获得用户首单奖励
//订单自动绑定
if (db_order.db_userid == 0 && ApiClient.Setting.SystemConfig.order_pinduoduo_bind == SwitchType.)
{
var isbind = false;
#region
//私人推广位强制绑定绑定
var privateAdzonePids = session.FindPinduoduoPrivatePid(db_order.p_id.ToString());
if (privateAdzonePids.Count == 1 && privateAdzonePids[0].is_auto_bind)//无条件设置开启中,直接自动绑定
{
var memberInfo = session.FindMemberInfoById(privateAdzonePids[0].member_id);
if (memberInfo != null)
{
db_order.db_userid = memberInfo.id;
db_order.db_robotname = memberInfo.robot_name;
db_order.db_robottype = memberInfo.robot_type;
isbind = true;
}
}
if (!isbind)
{
var bind_pids = session.FindPinduoduoAutoBindPid();
bool flag = bind_pids.FirstOrDefault(f => f == db_order.p_id) != null ? true : false;
#endregion
if (flag)
{
//var reg = Regex.Match(db_order.custom_parameters, @"^robot=(?<机器人名>.*?)\stype=(?<类型>\d+)\suser=(?<会员名>.*?)$");
//var reg = Regex.Match(db_order.custom_parameters, @"^robot=(?<机器人名>.*?)\stype=(?<类型>\d+)\suser=(?<会员名>.+?)(?:\smallid=(?<店铺ID>\d+))?$");
var reg = Regex.Match(db_order.custom_parameters, custom_parameters_regex_new);
if (!reg.Success)
reg = Regex.Match(db_order.custom_parameters, custom_parameters_regex);
if (reg.Success)
{
member = session.FindSingle<fl_member_info>("username=@username and robot_type=@robot_type", new { username = reg.Groups["会员名"].Value, robot_type = reg.Groups["类型"].Value });
if (member == null)
{
member = new fl_member_info() { robot_type = Util.ConvertEnum<ChatType>(int.Parse(reg.Groups["类型"].Value)), username = reg.Groups["会员名"].Value, robot_name = reg.Groups["机器人名"].ToString(), alipay_name = string.Empty, alipay_num = string.Empty, remark = string.Empty };
var groups = session.FindGroups();
if (groups.Count != 0)
member.group_id = groups[0].id;
session.SaveOrUpdate(member);
}
db_order.db_userid = member.id;
if (string.IsNullOrEmpty(db_order.db_robotname))
{
db_order.db_robotname = reg.Groups["机器人名"].Value;
db_order.db_robottype = Util.ConvertEnum<ChatType>(int.Parse(reg.Groups["类型"].Value));
}
#region
if (string.IsNullOrWhiteSpace(db_order.msg_groupid))
{
var query_item = session.Find<fl_query_hist>("userid=@userid and itemid=@itemid and adzoneid = @adzoneid", new { userid = db_order.db_userid, itemid = db_order.goods_id, adzoneid = db_order.p_id }).FirstOrDefault();
if (query_item != null)
{
db_order.msg_groupid = query_item.groupid;
}
}
#endregion
}
}
}
}
else
{
member = session.Find<fl_member_info>("id=@id", new { id = db_order.db_userid }).FirstOrDefault();
}
if ((db_order.order_status == 0 || db_order.order_status == 1) && db_order.db_userid != 0)
{
try
{
var record = session.FindStatisticsRecord(db_order.db_userid);
if (record == null)
record = new fl_statistics_record() { uid = db_order.db_userid };
record.ex5 = HttpExtend.GetTimeStamp(db_order.order_pay_time);
session.Saveable(record).ExecuteCommand();
}
catch (Exception)
{ }
}
//计算积分
if (string.IsNullOrEmpty(db_order.db_point))
{
if (member == null) session.Find<fl_member_info>("id=@id", new { id = db_order.db_userid }).FirstOrDefault();
var itempoint = session.FindItemPoint(member, db_order.promotion_amount, db_order.goods_quantity, CpsType.);
if (itempoint != null)
{
if (itempoint.UserPoint == 0 && ApiClient.Setting.SystemConfig.SubsidyPdd == SwitchType.)
itempoint.UserPoint = 0.01;
db_order.db_point = HttpHelper.ObjectToJson(itempoint);
db_order.db_userpoint = itempoint.UserPoint;
}
if (member != null)
{
member.bind_order++;
member = session.UpdateMemberGroup(member);
}
}
var status = Util.ConvertEnum<PinduoduoOrderStatus>(db_order.order_status);
switch (status)
{
case PinduoduoOrderStatus.:
case PinduoduoOrderStatus.:
case PinduoduoOrderStatus.:
{
//未发放佣金
if (db_order.db_endtime == DateTime.MinValue)
{
var sleep = session.FindSleep(CpsType., ApiClient.Setting.SystemConfig.FreezingCondition == FreezingConditionType. ? db_order.promotion_amount : db_order.db_userpoint);
if (sleep != null)
{
if (!string.IsNullOrEmpty(sleep.white_groups))
{
if (member != null && sleep.white_groups.Split(',').Contains(member.group_id.ToString()))
{
db_order.db_endtime = DateTime.Now;//该会员组不受限制
}
else
{
db_order.db_endtime = DateTime.Now.AddHours(sleep.sleep);//延迟多少小时
}
}
else db_order.db_endtime = DateTime.Now.AddHours(sleep.sleep);//延迟多少小时
}
else db_order.db_endtime = DateTime.Now;
#region 24
var config = Util.Read<Dictionary<string, object>>("插件-拼多多返利-配置");
if (config != null)
{
if (config.ContainsKey("ReceivingTimeCheck_Switch"))
{
var ReceivingTimeCheck_Switch = (bool)config["ReceivingTimeCheck_Switch"];
if (ReceivingTimeCheck_Switch)
{
if (config.ContainsKey("ReceivingTimeCheck_Hour"))
{
var ReceivingTimeCheck_Hour = (int)config["ReceivingTimeCheck_Hour"];
if ((DateTime.Now - db_order.order_pay_time).TotalHours <= ReceivingTimeCheck_Hour)//判断订单收货时间差
{
if (config.ContainsKey("ReceivingTimeCheck_OperateType"))
{
var ReceivingTimeCheck_OperateType = (OperateType)int.Parse(config["ReceivingTimeCheck_OperateType"].ToString());
if (ReceivingTimeCheck_OperateType == OperateType.)
{
if (config.ContainsKey("ReceivingTimeCheck_FreezeTime"))
{
var ReceivingTimeCheck_FreezeTime = (int)config["ReceivingTimeCheck_FreezeTime"];
db_order.db_endtime = db_order.db_endtime.AddHours(ReceivingTimeCheck_FreezeTime);//延迟多少小时
}
}
}
}
}
}
}
}
#endregion
}
if (db_order.db_endtime <= DateTime.Now)
{
db_order.db_status = SystemOrderStatus.;
//session.ExcuteSQL("update fl_order_pinduoduo set db_status=" + (int)db_order.db_status + " where id=" + db_order.id);
if (member != null)
{
var point = HttpHelper.JsonToObject<ItemPoint>(db_order.db_point) as ItemPoint;
if (point != null)
{
List<long> ids = new List<long>();
ids.Add(member.id);
//用户自身加积分
member = session.ChangePoint(PointType., point.UserPoint, member.id, $"拼多多购买:{db_order.goods_name}({db_order.order_sn})");
#region
isFirstOrder = OrderHelper.CheckMemberFirstOrderRewards(member, db_order.db_status);
#endregion
//notice.Add(new OrderNoticeEvent(CpsType.多多进宝, member, db_order));
//多级提成计算
//一级的提成小于等于0时,并且判断一级是否符合获得推荐新人奖励(无奖励一级提成)
if (point.AwardOne <= 0 && member.inviter_id > 0 && !ids.Contains(member.inviter_id) && member.id != member.inviter_id)
{
if (notice != null)
{
var inviter = session.FindMemberInfoById(member.inviter_id);
if (inviter != null)
{
#region
isRewards = OrderHelper.CheckSuperiorInviteRewards(member, db_order.db_endtime, db_order.order_amount);
#endregion
notice.Add(new OrderNoticeEvent(CpsType., inviter, db_order, OrderNoticeType.) { Customer = member, IsRewards = isRewards });//下级首单完成
}
}
}
else if (point.AwardOne > 0 && !ids.Contains(member.inviter_id) && member.id != member.inviter_id)
{
var flag = session.ChangePoint(PointType., point.AwardOne, member.inviter_id, $"{member.usernick},拼多多购物1级提成 - {db_order.goods_name}({db_order.order_sn})");
if (flag != null)
{
ids.Add(flag.id);
#region
isRewards = OrderHelper.CheckSuperiorInviteRewards(member, db_order.db_endtime, db_order.order_amount);
#endregion
notice.Add(new OrderNoticeEvent(CpsType., flag, db_order, OrderNoticeType.) { Customer = member, IsRewards = isRewards });
if (point.AwardTwo > 0 && flag.inviter_id != 0 && !ids.Contains(flag.inviter_id))
{
var flag2 = session.ChangePoint(PointType., point.AwardTwo, flag.inviter_id, $"{member.usernick},拼多多购物2级提成 - {db_order.goods_name}({db_order.order_sn})");
if (flag2 != null)
{
ids.Add(flag2.id);
if (flag2 != null)
{
notice.Add(new OrderNoticeEvent(CpsType., flag2, db_order, OrderNoticeType.) { Customer = member });
if (point.AwardThree > 0 && flag2.inviter_id != 0 && !ids.Contains(flag2.inviter_id))
{
var flag3 = session.ChangePoint(PointType., point.AwardThree, flag2.inviter_id, $"{member.usernick},拼多多购物3级提成 - {db_order.goods_name}({db_order.order_sn})");
if (flag3 != null)
{
ids.Add(flag3.id);
if (flag3 != null) notice.Add(new OrderNoticeEvent(CpsType., flag3, db_order, OrderNoticeType.) { Customer = member });
}
}
}
}
}
}
}
//创建人计算
if (point.AwardCreate > 0 && !string.IsNullOrEmpty(db_order.msg_groupid) && !string.IsNullOrEmpty(db_order.db_robotname))
{
var robot = session.FindRobotInfo(db_order.db_robotname, db_order.db_robottype);
if (robot != null)
{
var create = session.FindCreateInfo(db_order.msg_groupid, db_order.db_robottype);
if (create != null && member.id != create.id)
{
var flag = session.ChangePoint(PointType., point.AwardCreate, create.mid, $"{member.usernick},拼多多维护提成! - {db_order.goods_name}({db_order.order_sn})");
if (flag != null) notice.Add(new OrderNoticeEvent(CpsType., flag, db_order, OrderNoticeType.) { Customer = member });
}
}
}
}
}
}
else db_order.db_status = SystemOrderStatus.;
break;
}
case PinduoduoOrderStatus.:
case PinduoduoOrderStatus.:
{
db_order.db_status = SystemOrderStatus.;
}
break;
case PinduoduoOrderStatus.:
//db_order.db_status = (old_status == SystemOrderStatus.订单结算) ? SystemOrderStatus.全额退款 : SystemOrderStatus.订单失效;
#region
//if (member != null && old_status == SystemOrderStatus.订单结算 && db_order.db_status == SystemOrderStatus.全额退款)//扣除积分
if (db_order.db_endtime != DateTime.MinValue && db_order.db_endtime <= DateTime.Now)
{
db_order.db_status = SystemOrderStatus.退;
#region
//if (member != null)
//{
// var point = HttpHelper.JsonToObject<ItemPoint>(db_order.db_point) as ItemPoint;
// if (point != null)
// {
// List<long> ids = new List<long>();
// ids.Add(member.id);
// //用户自身加积分
// member = session.ChangePoint(PointType.维权扣除, point.UserPoint, member.id, $"拼多多购买:{db_order.goods_name}({db_order.order_sn}) - 售后中(扣除)");
// //#region 判断用户是否符合获得新人奖励
// //isFirstOrder = OrderHelper.CheckMemberFirstOrderRewards(member, db_order.db_status);
// //#endregion
// //notice.Add(new OrderNoticeEvent(CpsType.多多进宝, member, db_order));
// //多级提成计算
// //一级的提成小于等于0时,并且判断一级是否符合获得推荐新人奖励(无奖励一级提成)
// if (point.AwardOne <= 0 && member.inviter_id > 0 && !ids.Contains(member.inviter_id) && member.id != member.inviter_id)
// {
// if (notice != null)
// {
// var inviter = session.FindMemberInfoById(member.inviter_id);
// if (inviter != null)
// {
// #region 判断上级是否符合获得推荐新人奖励
// isRewards = OrderHelper.CheckSuperiorInviteRewards(member, db_order.db_endtime, db_order.order_amount);
// #endregion
// notice.Add(new OrderNoticeEvent(CpsType.多多进宝, inviter, db_order, OrderNoticeType.一级提成) { Customer = member, IsRewards = isRewards });//下级首单完成
// }
// }
// }
// else if (point.AwardOne > 0 && !ids.Contains(member.inviter_id) && member.id != member.inviter_id)
// {
// var flag = session.ChangePoint(PointType.维权扣除, point.AwardOne, member.inviter_id, $"{member.usernick},拼多多购物1级提成 - {db_order.goods_name}({db_order.order_sn}) - 售后中(扣除)");
// if (flag != null)
// {
// ids.Add(flag.id);
// //#region 判断上级是否符合获得推荐新人奖励
// //isRewards = OrderHelper.CheckSuperiorInviteRewards(member, db_order.db_endtime, db_order.order_amount);
// //#endregion
// //notice.Add(new OrderNoticeEvent(CpsType.多多进宝, flag, db_order, OrderNoticeType.一级提成) { Customer = member, IsRewards = isRewards });
// notice.Add(new OrderNoticeEvent(CpsType.多多进宝, flag, db_order, OrderNoticeType.一级提成) { Customer = member });
// if (point.AwardTwo > 0 && flag.inviter_id != 0 && !ids.Contains(flag.inviter_id))
// {
// var flag2 = session.ChangePoint(PointType.维权扣除, point.AwardTwo, flag.inviter_id, $"{member.usernick},拼多多购物2级提成 - {db_order.goods_name}({db_order.order_sn}) - 售后中(扣除)");
// if (flag2 != null)
// {
// ids.Add(flag2.id);
// if (flag2 != null)
// {
// notice.Add(new OrderNoticeEvent(CpsType.多多进宝, flag2, db_order, OrderNoticeType.二级提成) { Customer = member });
// if (point.AwardThree > 0 && flag2.inviter_id != 0 && !ids.Contains(flag2.inviter_id))
// {
// var flag3 = session.ChangePoint(PointType.维权扣除, point.AwardThree, flag2.inviter_id, $"{member.usernick},拼多多购物3级提成 - {db_order.goods_name}({db_order.order_sn}) - 售后中(扣除)");
// if (flag3 != null)
// {
// ids.Add(flag3.id);
// if (flag3 != null) notice.Add(new OrderNoticeEvent(CpsType.多多进宝, flag3, db_order, OrderNoticeType.三级提成) { Customer = member });
// }
// }
// }
// }
// }
// }
// }
// //创建人计算
// if (point.AwardCreate > 0 && !string.IsNullOrEmpty(db_order.msg_groupid) && !string.IsNullOrEmpty(db_order.db_robotname))
// {
// var robot = session.FindRobotInfo(db_order.db_robotname, db_order.db_robottype);
// if (robot != null)
// {
// var create = session.FindCreateInfo(db_order.msg_groupid, db_order.db_robottype);
// if (create != null && member.id != create.id)
// {
// var flag = session.ChangePoint(PointType.维权扣除, point.AwardCreate, create.mid, $"{member.usernick},拼多多维护提成! - {db_order.goods_name}({db_order.order_sn}) - 售后中(扣除)");
// if (flag != null) notice.Add(new OrderNoticeEvent(CpsType.多多进宝, flag, db_order, OrderNoticeType.群主分成) { Customer = member });
// }
// }
// }
// }
//}
#endregion
new OrderHelper().DeductPinDuoOrderPoint(notice, db_order);
}
else
{
db_order.db_status = SystemOrderStatus.;
}
#endregion
break;
case PinduoduoOrderStatus.:
case PinduoduoOrderStatus.:
db_order.db_status = SystemOrderStatus.;
break;
case PinduoduoOrderStatus.:
db_order.db_status = SystemOrderStatus.;
break;
default:
db_order.db_status = SystemOrderStatus.; break;
}
#region /
if (member != null && (db_order.db_status == SystemOrderStatus. || db_order.db_status == SystemOrderStatus.))
{
var point = HttpHelper.JsonToObject<ItemPoint>(db_order.db_point) as ItemPoint;
if (point != null)
{
List<long> ids = new List<long>();
ids.Add(member.id);
if (point.AwardOne > 0 && member.inviter_id > 0 && !ids.Contains(member.inviter_id) && member.id != member.inviter_id)
{
//一级用户对象
var member_one = session.FindMemberInfoById(member.inviter_id);
if (member_one != null)
{
ids.Add(member_one.id);
if (notice != null)
notice.Add(new OrderNoticeEvent(CpsType., member_one, db_order, OrderNoticeType.) { Customer = member });
if (point.AwardTwo > 0 && member_one.inviter_id != 0 && !ids.Contains(member_one.inviter_id))
{
//二级用户对象
var member_two = session.FindMemberInfoById(member_one.inviter_id);
if (member_two != null)
{
ids.Add(member_two.id);
if (notice != null && member_two != null)
{
notice.Add(new OrderNoticeEvent(CpsType., member_two, db_order, OrderNoticeType.) { Customer = member });
if (point.AwardThree > 0 && member_two.inviter_id != 0 && !ids.Contains(member_two.inviter_id))
{
//三级用户对象
var member_three = session.FindMemberInfoById(member_two.inviter_id);
if (member_three != null)
{
ids.Add(member_three.id);
if (notice != null && member_three != null)
notice.Add(new OrderNoticeEvent(CpsType., member_three, db_order, OrderNoticeType.) { Customer = member });
}
}
}
}
}
}
}
//创建人计算
if (point.AwardCreate > 0 && !string.IsNullOrEmpty(db_order.msg_groupid) && !string.IsNullOrEmpty(db_order.db_robotname))
{
var create = session.FindCreateInfo(db_order.msg_groupid, db_order.db_robottype);
if (create != null && member.id != create.id)
{
var member_create = session.FindMemberInfoById(create.mid);
if (notice != null && member_create != null) notice.Add(new OrderNoticeEvent(CpsType., member_create, db_order, OrderNoticeType.) { Customer = member });
}
}
}
}
#endregion
if (old_status != db_order.db_status)
db_order.db_status_time = HttpExtend.GetTimeStamp();
session.SaveOrUpdate(db_order);
if (db_order.db_status == SystemOrderStatus.)
{
#region
isFirstOrder = OrderHelper.CheckMemberFirstOrderRewards(member, db_order.db_status);
#endregion
}
if (notice != null && (isFrontData || old_status != db_order.db_status))
notice.Add(new Events.OrderNoticeEvent(CpsType., member, db_order, OrderNoticeType.) { IsRewards = isFirstOrder });
}
catch (Exception ex)
{
EventClient.OnEvent(this, "更新拼多多订单错误:" + db_order.order_sn + "," + ex.Message);
}
}
private void UpdateOrder(fl_cps_member[] members, DateTime start_time, DateTime end_time)
{
if (members == null || members.Length == 0) return;
int row_count = 50;//间隔
//var timespan = end_time - start_time;
//var forcount = 1;
//if (timespan.TotalHours > 24.00)
//{
// forcount = (int)(timespan.TotalHours / 24);
// if (timespan.TotalHours % 24 > 0) forcount++;
//};
var timespan = end_time - start_time;
TaskTool task = new TaskTool();
List<OrderNoticeEvent> notices = new List<OrderNoticeEvent>();
var not_download_pids = ApiClient.Setting.SystemConfig.order_pinduoduo_not_download_pid.Replace("", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList();
foreach (var item in members)
{
var _item = item;
var client = new PinduoduoApi(_item);
task.AddTask(delegate
{
try
{
var _star = timespan.TotalHours > 24 ? end_time : start_time;//倒叙24小时一个间断
var _end = end_time;
do
{
if (timespan.TotalHours > 24)
{
_end = _star;
_star = _star.AddHours(-23.99);
}
Dictionary<string, object> rst = null;
for (int i = 0; i < 3; i++)
{
try
{
rst = client.DownOrder(_star, _end, 1, row_count);
break;
}
catch (Exception ex)
{
Thread.Sleep(1000);
continue;
}
}
int total_count = int.Parse(rst["total_count"].ToString());
if (total_count == 0) continue;
var order_list = rst["order_list"] as ArrayList;
Exception _exception = null;
int count = total_count / row_count;
if (total_count % row_count != 0) count++;
for (int i = 1; i <= count; i++)
{
var page = i;
if (_exception != null) return;
try
{
Dictionary<string, object> _rst = null;
//下载
if (page != 1)
{
for (int z = 0; z < 3; z++)
{
try
{
_rst = client.DownOrder(_star, _end, page, row_count);
break;
}
catch (Exception ex)
{
Thread.Sleep(1000);
continue;
}
}
order_list = _rst["order_list"] as ArrayList;
}
if (order_list != null && order_list.Count > 0)
{
int _count = 1;
foreach (Dictionary<string, object> _order in order_list)
{
_count++;
var session = ApiClient.GetSession();
try
{
//if (_order["order_sn"].ToString() == "200525-419953705981880")
//if (_order["order_sn"].ToString() == "200705-538107904903242")
//{
//}
#region PID
if (not_download_pids.Count != 0)
{
var isExist = not_download_pids.Contains(_order["p_id"].ToString());//是否包含
//continue;
if (ApiClient.Setting.SystemConfig.order_pinduoduo_down_type == DownAdzoneType.广 && isExist)
continue;
else if (ApiClient.Setting.SystemConfig.order_pinduoduo_down_type == DownAdzoneType.广 && !isExist)
continue;
}
#endregion
if (ApiClient.Setting.DbConfig.DatabaseType == DatabaseType.SQLITE && _count % 10 == 0)
Thread.Sleep(150);
//计算订单信息
var status = Util.ConvertEnum<PinduoduoOrderStatus>(int.Parse(_order["order_status"].ToString()));
//if (status == PinduoduoOrderStatus.等待付款) continue;
//var db_order = session.Queryable<fl_order_pinduoduo>().Where(f => f.order_sn == _order["order_sn"].ToString()).First();
var db_order = session.FindSingle<fl_order_pinduoduo>("order_sn=@order_sn", new { order_sn = _order["order_sn"].ToString() });
if (db_order != null) //跳过相同状态
{
var statusTemp = (PinduoduoOrderStatus)db_order.order_status;
if (status == statusTemp ||
(status == PinduoduoOrderStatus. || status == PinduoduoOrderStatus. || status == PinduoduoOrderStatus.) && (statusTemp == PinduoduoOrderStatus. || status == PinduoduoOrderStatus. || status == PinduoduoOrderStatus.))
{
if (db_order.IsFinish()) continue;//是否已经完成
if (db_order.db_status == SystemOrderStatus. && db_order.db_endtime > DateTime.Now) continue;//跳过系统冻结
if (db_order.order_status != 2 && db_order.order_status == (int)status) continue;//跳过相同状态
}
db_order.order_status = (int)status;
if (db_order.goods_price == 0 || db_order.order_amount == 0 || db_order.promotion_amount == 0)
{
var temp = _order.ConvertToObj<fl_order_pinduoduo>();
db_order.promotion_amount = temp.promotion_amount == 0 ? 0 : Math.Round(temp.promotion_amount / 100.00, 2);
db_order.order_amount = temp.order_amount == 0 ? 0 : Math.Round(temp.order_amount / 100.00, 2);
db_order.goods_price = temp.goods_price == 0 ? 0 : Math.Round(temp.goods_price / 100.00, 2);
}
if (db_order.price_compare_status != (PinduoduoBiJiaType)db_order.price_compare_status)
db_order.price_compare_status = (PinduoduoBiJiaType)db_order.price_compare_status;
}
else
{
db_order = _order.ConvertToObj<fl_order_pinduoduo>();
db_order.promotion_amount = db_order.promotion_amount == 0 ? 0 : Math.Round(db_order.promotion_amount / 100.00, 2);
db_order.order_amount = db_order.order_amount == 0 ? 0 : Math.Round(db_order.order_amount / 100.00, 2);
db_order.goods_price = db_order.goods_price == 0 ? 0 : Math.Round(db_order.goods_price / 100.00, 2);
db_order.db_cpsname = _item.username;
db_order.db_cpsnick = _item.usernick;
}
if (string.IsNullOrWhiteSpace(db_order.mall_id))
{
//var reg = Regex.Match(db_order.custom_parameters, @"^robot=(?<机器人名>.*?)\stype=(?<类型>\d+)\suser=(?<会员名>.+?)(?:\smallid=(?<店铺ID>\d+))?$");
var reg = Regex.Match(db_order.custom_parameters, custom_parameters_regex);
if (reg.Success && reg.Groups["店铺ID"] != null && !string.IsNullOrWhiteSpace(reg.Groups["店铺ID"].ToString()))
db_order.mall_id = reg.Groups["店铺ID"].ToString();
if (string.IsNullOrWhiteSpace(db_order.mall_id))
{
var query_item = session.FindSingle<fl_query_hist>("select * from fl_query_hist where itemid = @itemid", new { itemid = db_order.goods_id });
if (query_item != null)
db_order.mall_id = query_item.mallid;
}
}
UpdateOrder(db_order, session, notices);
//if (!result.Result)
//{
// _exception = result.Exception;return;
//}
}
catch (Exception ex)
{
throw ex;
}
finally
{
//session.Close();
}
}
}
}
catch (Exception ex)
{
_exception = ex; return;
}
}
if (_exception != null) throw _exception;
//_star = _star.AddHours(-23.99);
} while (_star > start_time);
}
catch (Exception ex)
{
//throw ex;
}
});
}
task.Start(1, null);
if (string.IsNullOrEmpty(order_id))
{
var session = ApiClient.GetSession();
var end_orders = session.Find<fl_order_pinduoduo>("select * from fl_order_pinduoduo where db_status=@db_status and db_endtime<@db_endtime", new { db_status = (int)SystemOrderStatus., db_endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }).ToList();
foreach (var db_order in end_orders)
{
UpdateOrder(db_order, session, notices);
}
}
if (notices.Count != 0)
{
var tasks = TimerTask.GetTimer<Update_NoticeQueue>() as Update_NoticeQueue;
foreach (var item in notices)
{
if (item.Member == null) continue;
var order = item.Order as fl_order_pinduoduo;
if (order.order_sn == order_id) continue;
tasks.Add(item);
}
}
//TaskTool task = new TaskTool();
//task.AddTask(delegate {
//});
//var session = ApiClient.GetSession();//获得一个Session
//int thread_count = 6000;
}
}
}