old_flsystem/类库/Api.Framework/Timers/DownDouyinTimer.cs

1015 lines
61 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.EntityTmp.Douyin;
using Api.Framework.Enums;
using Api.Framework.Events;
using Api.Framework.Model;
using Api.Framework.Properties;
using Api.Framework.SDK;
using Api.Framework.Tools;
using Api.Framework.Utils;
using CsharpHttpHelper;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using static Api.Framework.Cps.AlimamaApi;
namespace Api.Framework.Timers
{
/// <summary>
/// 抖音订单下载定时器
/// </summary>
public class DownDouyinTimer : TimerTask
{
private static object rights = null;
private static readonly object objLock = new object();
//public DownDouyinTimer()
//{
// if (rights == null)
// {
// lock (objLock)
// {
// }
// }
//}
public override void Run(object state, bool timedOut)
{
//TODO 这里的时间还没有用,因为抖音巨量那边还搞不定(通过时间查询)
var update_time = DateTime.Now.AddDays(-1);
var end_time = DateTime.Now;
UpdateOrder(CpsClient.Members.Where(f => f.cpstype == CpsType. && f.is_download == SwitchType.).ToArray(), update_time, end_time);
#region
List<OrderNoticeEvent> notices = new List<OrderNoticeEvent>();
var session = ApiClient.GetSession();
var result = session.Find<fl_order_douyin>("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 result)
{
UpdateOrder(db_order, notices, session);
}
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_douyin;
tasks.Add(item);
}
}
#endregion
}
/// <summary>
/// 手动下载订单
/// </summary>
/// <param name="member">抖音cps对象集合</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>
private const int IntervalHour = 12;
/// <summary>
/// 下载订单
/// </summary>
/// <param name="members">抖音cps对象集合</param>
/// <param name="start_time">订单同步开始时间</param>
/// <param name="end_time">订单同步结束时间</param>
private void UpdateOrder(fl_cps_member[] members, DateTime start_time, DateTime end_time)
{
if (members == null || members.Length == 0) return;
//var memberList = members.Where(f => f.online).ToList();
var memberList = members.ToList();
var timespan = end_time - start_time;
TaskTool task = new TaskTool();
List<OrderNoticeEvent> notices = new List<OrderNoticeEvent>();
foreach (var item in memberList)
{
var _item = item;
var api = CpsClient.CreateDouyinRequest(_item);
task.AddTask(delegate
{
try
{
var _star = timespan.TotalHours > 12 ? end_time : start_time;//倒叙12小时一个间断
var _end = end_time;
do
{
try
{
if (timespan.TotalHours > 12)
{
_end = _star;
_star = _star.AddHours(-11.99);
}
var session = ApiClient.GetSession();
List<DyOrderInfo> orderList = new List<DyOrderInfo>();
//官方接口已经同步了订单,防止非官方接口再次同步
List<string> orderidCache = new List<string>();
//if (1 != 2)
{
var pids = session.Find<fl_adzone_info>("select * from fl_adzone_info").Where(f => f.adzone_pid_cps_name == _item.username).Where(f => !string.IsNullOrWhiteSpace(f.adzone_pid)).Select(f => f.adzone_pid).Distinct().ToList();
if (pids != null & pids.Count != 0)
{
foreach (var pid in pids)
{
var tmp = api.DownOrderApi(_star, _end, pid);
if (tmp != null)
orderList.AddRange(tmp);
}
Exception _exception = null;
for (int i = 0; i < orderList.Count; i++)
{
var orderInfo = orderList[i];
if (_exception != null) continue;
foreach (var order in orderInfo.orders)
{
try
{
try
{
//if (order.order_id == "4886104544279610848")
//{
//}
if (ApiClient.Setting.DbConfig.DatabaseType == DatabaseType.SQLITE)
Thread.Sleep(100);
var status = order.flow_point;
var db_order = session.FindSingle<fl_order_douyin>("order_id=@order_id and product_id=@product_id", new { order_id = order.order_id, product_id = order.product_id });
if (db_order != null) //跳过相同状态
{
if (db_order.order_status == DouyinOrderStatus.REFUND.ToString() || db_order.product_detail == "手动处理")
{
continue;
}
if (status == db_order.order_status || status != DouyinOrderStatus.PAY_SUCC.ToString())
{
if (db_order.IsFinish()) continue;//是否已经完成
if (db_order.db_status == SystemOrderStatus. && db_order.db_endtime > DateTime.Now) continue;//跳过系统冻结
//if (db_order.order_status != WeipinhuiOrderSubStatusName.已签收 && db_order.order_status == status) continue;//跳过相同状态
if (db_order.order_status == status) continue;//跳过相同状态
}
db_order.order_status = status;
}
else
{
var orderTmp = new fl_order_douyin()
{
order_id = order.order_id,
product_id = order.product_id,
product_name = order.product_name,
total_pay_amount = order.pay_goods_amount,
estimated_comission = order.estimated_commission,
order_status = order.flow_point,
pay_time = HttpExtend.GetTimeStamp(DateTime.Parse(order.pay_success_time))
//...
};
db_order = orderTmp;
db_order.db_cpsname = _item.username;
db_order.db_cpsnick = _item.usernick;
}
try
{
LogHelper.GetSingleObj().Debug("抖音订单: ", $@"抖音Api原始{JsonConvert.SerializeObject(order)}
order = {JsonConvert.SerializeObject(db_order)}");
}
catch (Exception)
{ }
orderidCache.Add(db_order.order_id);
UpdateOrder(db_order, notices, session);
try
{
LogHelper.GetSingleObj().Debug("抖音订单: ", $@"处理完成的 ,需要通知的用户 -> {notices.Count}
order = {JsonConvert.SerializeObject(db_order)}");
}
catch (Exception)
{ }
}
catch (Exception ex)
{
throw ex;
}
finally
{
//session.Close();
}
}
catch (Exception ex)
{
_exception = ex;
break;
}
}
}
}
//Console.WriteLine();
}
//return;
//int queryCount = 1;
if (api.Member.online)//在为检测是未失效的时候进行同步
{
#region
foreach (DouyinQueryOrderType type in Enum.GetValues(typeof(DouyinQueryOrderType)))
{
try
{
Stopwatch stop = new Stopwatch();
stop.Start();
var json = api.DownOrder(_star, _end, 1, type);
stop.Stop();
//Console.WriteLine($"_star={_star},_end={_end},type={type},用时:{stop.Elapsed.TotalSeconds}");
if (api.Member.online)
{
if (json == null || json.Count == 0 || json[0] == "error")
continue;
var orderObj = JsonConvert.DeserializeObject<DouYinOrder>(json[0]);
if (orderObj.code != 0) continue;
Exception _exception = null;
var data = orderObj.data;
if (data == null) continue;
for (int i = 0; i < data.Count; i++)
{
var order = data[i];
if (_exception != null) continue;
try
{
try
{
//if (order.order_id == "4933900340490065113")
//{
//}
//else
//if (order.order_id == "4934209762824039641")
//{
//}
//else
//if (order.order_id == "4934212125058641113")
//{
//}
//else
//if (order.order_id == "4934295228379604185")
//{
//}
//else
//if (order.order_id == "4936102872734510874")
//{
//}
//else
//{
// continue;
//}
if (orderidCache.Contains(order.order_id))
continue;
if (ApiClient.Setting.DbConfig.DatabaseType == DatabaseType.SQLITE)
Thread.Sleep(100);
var status = order.order_status;
var db_order = session.FindSingle<fl_order_douyin>("order_id=@order_id and product_id=@product_id", new { order_id = order.order_id, product_id = order.product_id });
if (db_order != null) //跳过相同状态
{
if (db_order.order_status == DouyinOrderStatus.REFUND.ToString() || db_order.product_detail == "手动处理")
{
continue;
}
if (status == db_order.order_status || status != DouyinOrderStatus.PAY_SUCC.ToString())
{
var isFinish = db_order.IsFinish();
if (isFinish && status == db_order.order_status) continue;//是否已经完成
if (db_order.db_status == SystemOrderStatus. && db_order.db_endtime > DateTime.Now) continue;//跳过系统冻结
//if (db_order.order_status != WeipinhuiOrderSubStatusName.已签收 && db_order.order_status == status) continue;//跳过相同状态
if (db_order.order_status == status) continue;//跳过相同状态
}
db_order.order_status = status;
}
else
{
db_order = order;
db_order.db_cpsname = _item.username;
db_order.db_cpsnick = _item.usernick;
}
try
{
LogHelper.GetSingleObj().Debug("抖音订单: ", $@"抖音原始:{JsonConvert.SerializeObject(order)}
order = {JsonConvert.SerializeObject(db_order)}");
}
catch (Exception)
{ }
UpdateOrder(db_order, notices, session);
try
{
LogHelper.GetSingleObj().Debug("抖音订单: ", $@"处理完成的 ,需要通知的用不 -> {notices.Count}
order = {JsonConvert.SerializeObject(db_order)}");
}
catch (Exception)
{ }
}
catch (Exception ex)
{
throw ex;
}
finally
{
//session.Close();
}
}
catch (Exception ex)
{
_exception = ex;
break;
}
}
}
else
{
EventClient.OnEvent("", $"抖音账号:{api.Member.usernick}({api.Member.username}),请重新登录");
break;
}
}
catch (Exception ex)
{
/*
{"st":0,"code":9001,"msg":"操作异常","log_id":"2022010221313001020404907424DA1368","data":[]}
*/
//if (ex.Message.Contains("操作异常") || ex.Message.Contains("请重新登录"))
// queryCount++;
//if (queryCount >= 2)
//{
// EventClient.OnEvent("", $"链接订单无法同步,请重新登录抖音:{api.Member.usernick}({api.Member.username})");
// api.Member.online = false;
// ApiClient.GetSession().SaveOrUpdate(api.Member);
// var shared = new Dictionary<string, object>();
// shared["msg_type"] = "抖音验证码";
// shared["cps_type"] = CpsType.抖音联盟;
// shared["msg_username"] = api.Member.username;
// shared["msg_usernick"] = api.Member.usernick;
// var sharedEvent = new SharedEvents(shared);
// EventClient.OnSharedEvent(null, sharedEvent);
// return;
//}
}
}
}
#endregion
}
catch (Exception ex)
{
//The underlying frame is no longer valid - please check the IsValid property before calling!
if (ex.Message.Contains("is no longer valid - please check the IsValid"))
{
api.Member.is_valid = false;
}
}
} while (_star > start_time);
}
catch (Exception ex)
{
//throw ex;
}
});
}
task.Start(1, null);
var db = ApiClient.GetSession();
var end_orders = db.Find<fl_order_douyin>("select * from fl_order_douyin 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, notices, db);
}
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_weipinhui;
tasks.Add(item);
}
}
}
/// <summary>
/// 订单 修改状态/用户绑定等操作通知用户
/// </summary>
/// <param name="db_order">抖音订单对象</param>
/// <param name="notice">事件集合</param>
/// <param name="session">数据库操作对象</param>
/// <param name="isFrontData"></param>
public void UpdateOrder(fl_order_douyin db_order, List<OrderNoticeEvent> notice, SqlSugarClient session, bool isFrontData = false)
{
//维权中的订单,直接跳出
if (db_order.db_status == SystemOrderStatus.)
return;
try
{
fl_plugin_allrebatesactivity_orderlist allrebatesactivity_orderlist = null;
var old_status = db_order.db_status;
var status = Util.ConvertEnum<DouyinOrderStatus>(db_order.order_status.ToUpper());
bool islotUserQuery = false;//订单是否为多人查询
// string old_md5 = Util.GetMd5_32byte(HttpHelper.ObjectToJson(db_order));
var isRewards = false;//是否获得推荐新人奖励
var isFirstOrder = false;//是否获得用户首单奖励
#region
#region
if (db_order.db_userid == 0 && status == DouyinOrderStatus.PAY_SUCC)
{
var bind = session.FindBindCache(db_order.order_id);
if (bind != null)
{
var memberInfo = session.FindMemberInfoById(bind.db_userid);
if (memberInfo != null)
{
db_order.db_userid = memberInfo.id;
db_order.db_robotname = memberInfo.robot_name;
db_order.db_robottype = memberInfo.robot_type;
db_order.msg_groupid = bind.groupid;
session.SaveOrUpdate(memberInfo);
//session.SaveOrUpdate(db_order);
#region
var query_item = session.FindSingle<fl_query_hist>("userid=@userid and itemid=@itemid and adzoneid = @adzoneid and crt_time > @time order by id desc", new { userid = db_order.db_userid, itemid = db_order.product_id, adzoneid = db_order.db_cpsname, time = DateTime.Now.AddHours(-24).ToString("yyyy-MM-dd HH:mm:ss") });
if (query_item != null && !string.IsNullOrWhiteSpace(query_item.compute_configdic))
{
if (db_order.id == 0)
session.SaveOrUpdate(db_order);
var queryRatioHist = new fl_query_ratio_hist()
{
compute_config = query_item.compute_configdic,
db_orderid = db_order.id,
createtime = DateTime.Now,
cpstype = CpsType.
};
session.SaveOrUpdate(queryRatioHist);
}
#endregion
}
}
}
#endregion
if (db_order.db_userid == 0 && status == DouyinOrderStatus.PAY_SUCC)
{
#region 广
#region 广
var privateAdzonePids = session.FindAlimamaPrivatePid(db_order.db_cpsname);//私人推广位对象
if (privateAdzonePids.Count == 1 && privateAdzonePids[0].is_auto_bind)//无条件设置开启中,直接自动绑定
{
var memberInfo = session.FindSingle<fl_member_info>("select * from fl_member_info where id = @id", new { id = 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;
//session.SaveOrUpdate(db_order);
#region
var query_item = session.FindSingle<fl_query_hist>("userid=@userid and itemid=@itemid and adzoneid = @adzoneid and crt_time > @time order by id desc", new { userid = db_order.db_userid, itemid = db_order.product_id, adzoneid = db_order.db_cpsname, time = DateTime.Now.AddHours(-24).ToString("yyyy-MM-dd HH:mm:ss") });
if (query_item != null && !string.IsNullOrWhiteSpace(query_item.compute_configdic))
{
if (db_order.id == 0)
session.SaveOrUpdate(db_order);
var queryRatioHist = new fl_query_ratio_hist()
{
compute_config = query_item.compute_configdic,
db_orderid = db_order.id,
createtime = DateTime.Now,
cpstype = CpsType.
};
session.SaveOrUpdate(queryRatioHist);
}
#endregion
}
}
#endregion
else
{
//var flag = false;
//if (!flag)
//{
//查询订单记录
if (db_order.db_userid == 0)
{
var query = session.FindTable("select userid,count(*) as count from fl_query_hist where userid != 0 and itemid = @itemid and adzoneid = @adzoneid and crt_time > @time group by userid ", new { itemid = db_order.product_id, adzoneid = db_order.db_cpsname, time = DateTime.Now.AddHours(-24).ToString("yyyy-MM-dd HH:mm:ss") });
if (query != null && query.Rows.Count > 0)
{
if (query.Rows.Count == 1)
{
if (ApiClient.Setting.SystemConfig.order_douyin_bind == SwitchType.)
{
var userid = int.Parse(query.Rows[0]["userid"].ToString());//要是查询记录已经标记为通知过的记录(userid 为 负数),将不通过查询记录进行绑定
if (userid > 0)
{
db_order.db_userid = userid;//根据查询记录认领
var query_item = session.FindSingle<fl_query_hist>("select * from fl_query_hist where userid = @userid and itemid = @itemid and adzoneid = @adzoneid and crt_time > @time order by id desc", new { userid = db_order.db_userid, itemid = db_order.product_id, adzoneid = db_order.db_cpsname, time = DateTime.Now.AddHours(-24).ToString("yyyy-MM-dd HH:mm:ss") });
if (query_item != null)
{
#region
if (!string.IsNullOrWhiteSpace(query_item.compute_configdic))
{
if (db_order.id == 0)
session.SaveOrUpdate(db_order);
var queryRatioHist = new fl_query_ratio_hist()
{
compute_config = query_item.compute_configdic,
db_orderid = db_order.id,
createtime = DateTime.Now,
cpstype = CpsType.
};
session.SaveOrUpdate(queryRatioHist);
}
#endregion
db_order.msg_groupid = query_item.groupid;
}
}
}
}
else
{
//订单多人查询,并且订单还未绑定
if (db_order.db_userid == 0)
islotUserQuery = true;
}
}
}
//}
}
#endregion
#region
if (string.IsNullOrWhiteSpace(db_order.msg_groupid))
{
var query_item = session.FindSingle<fl_query_hist>("select * from fl_query_hist where userid = @userid and itemid = @itemid and adzoneid = @adzoneid and crt_time > @time order by id desc", new { userid = db_order.db_userid, itemid = db_order.product_id, adzoneid = db_order.db_cpsname, time = DateTime.Now.AddHours(-24).ToString("yyyy-MM-dd HH:mm:ss") });
if (query_item != null)
{
db_order.msg_groupid = query_item.groupid;
#region
if (!string.IsNullOrWhiteSpace(query_item.compute_configdic))
{
if (db_order.id == 0)
session.SaveOrUpdate(db_order);
var queryRatioHist = new fl_query_ratio_hist()
{
compute_config = query_item.compute_configdic,
db_orderid = db_order.id,
createtime = DateTime.Now,
cpstype = CpsType.
};
session.SaveOrUpdate(queryRatioHist);
}
#endregion
}
}
#endregion
}
#endregion
if (db_order.order_status == DouyinOrderStatus.PAY_SUCC.ToString() && 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 = db_order.pay_time;
session.Saveable(record).ExecuteCommand();
}
catch (Exception)
{ }
}
//查询积分比例
var member = db_order.db_userid != 0 ? session.FindMemberInfoById(db_order.db_userid) : null;
if (string.IsNullOrEmpty(db_order.db_robotname) && member != null)
{
db_order.db_robotname = member.robot_name;
db_order.db_robottype = member.robot_type;
}
if (string.IsNullOrEmpty(db_order.db_point))
{
//查询历史查询比例
var compute = session.FindQueryRatioHist(CpsType., db_order.id);
ItemPoint itempoint = null;
//计算的佣金
if (compute != null)
itempoint = session.FindItemPoint(CpsType., compute, Util.ConvertDouble_FenToYuan(db_order.estimated_comission), 1);
else
itempoint = session.FindItemPoint(member, Util.ConvertDouble_FenToYuan(db_order.estimated_comission), 1, CpsType.);
if (itempoint != null)
{
db_order.db_point = HttpHelper.ObjectToJson(itempoint);
db_order.db_userpoint = itempoint.UserPoint;
}
if (member != null)
{
member.bind_order++;
member = session.UpdateMemberGroup(member);
}
}
switch (status)
{
case DouyinOrderStatus.CONFIRM:
case DouyinOrderStatus.SETTLE:
{
//进入冻结逻辑
if (db_order.db_endtime == DateTime.MinValue)
{
var sleep = session.FindSleep(CpsType., ApiClient.Setting.SystemConfig.FreezingCondition == FreezingConditionType. ? Util.ConvertDouble_FenToYuan(db_order.estimated_comission) : 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.Parse(config["ReceivingTimeCheck_Switch"].ToString());
if (ReceivingTimeCheck_Switch)
{
if (config.ContainsKey("ReceivingTimeCheck_Hour"))
{
var ReceivingTimeCheck_Hour = int.Parse(config["ReceivingTimeCheck_Hour"].ToString());
var payTime = HttpExtend.GetDateTime(db_order.pay_time.ToString());
if ((DateTime.Now - payTime).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.Parse(config["ReceivingTimeCheck_FreezeTime"].ToString());
db_order.db_endtime = db_order.db_endtime.AddHours(ReceivingTimeCheck_FreezeTime);//延迟多少小时
}
}
}
}
}
}
}
}
#endregion
}
//已经传递了参数~ 这里就不要强制读数据库
if (db_order.db_endtime <= DateTime.Now)
{
db_order.db_status = SystemOrderStatus.;
if (member != null && db_order.db_status != SystemOrderStatus.退)
{
var point = HttpHelper.JsonToObject<ItemPoint>(db_order.db_point) as ItemPoint;
if (point != null)
{
if (point.UserPoint == 0)
{
point.UserPoint = 0.01;
db_order.db_point = HttpHelper.ObjectToJson(point);
db_order.db_userpoint = point.UserPoint;
}
#region
var pointHists = session.Find<fl_point_hist>("select * from fl_point_hist where uid = @uid and type = @pointType_name and message = @message", new { uid = member.id, pointType_name = PointType..ToString(), message = $"抖音购买:{db_order.product_name} - ({db_order.order_id})" });
if (pointHists != null && pointHists.Count != 0)
{
session.SaveOrUpdate(db_order);
return;
}
#endregion
//用户自身加积分
member = session.ChangePoint(PointType., point.UserPoint, member.id, $"抖音购买:{db_order.product_name} - ({db_order.order_id})");
#region
isFirstOrder = OrderHelper.CheckMemberFirstOrderRewards(member, db_order.db_status);
#endregion
List<long> ids = new List<long>();
ids.Add(member.id);
//多级提成计算..用户自己的上级不能为自己
//一级的提成小于等于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, Util.ConvertDouble_FenToYuan(db_order.total_pay_amount));
#endregion
notice.Add(new OrderNoticeEvent(CpsType., inviter, db_order, OrderNoticeType.) { Customer = member, IsRewards = isRewards });//下级首单完成
}
}
}
else if (point.AwardOne > 0 && member.inviter_id > 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.product_name} - ({db_order.order_id})");
if (flag != null)
{
ids.Add(flag.id);
if (notice != null)
{
#region
isRewards = OrderHelper.CheckSuperiorInviteRewards(member, db_order.db_endtime, Util.ConvertDouble_FenToYuan(db_order.total_pay_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.product_name} - ({db_order.order_id})");
if (flag2 != null)
{
ids.Add(flag2.id);
if (notice != null && 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.product_name} - ({db_order.order_id})");
if (flag3 != null)
{
ids.Add(flag3.id);
if (notice != null && 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 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.product_name} - ({db_order.order_id})");
if (notice != null && flag != null) notice.Add(new OrderNoticeEvent(CpsType., flag, db_order, OrderNoticeType.) { Customer = member });
}
}
}
Thread.Sleep(40);
}
else
{
//提示查询该宝贝的人所有人
if (islotUserQuery)
{
notice.Add(new Events.OrderNoticeEvent(CpsType., null, db_order));
}
}
}
else
{
db_order.db_status = SystemOrderStatus.;
}
}
break;
case DouyinOrderStatus.:
db_order.db_status = SystemOrderStatus.;
break;
case DouyinOrderStatus.PAY_SUCC:
{
db_order.db_status = SystemOrderStatus.;
}
break;
case DouyinOrderStatus.REFUND:
db_order.db_status = SystemOrderStatus.;
if (member != null)//订单还没有绑定用户
{
if (db_order.db_endtime != DateTime.MinValue) //客户已经在冻结中
{
if (db_order.db_endtime <= DateTime.Now) //佣金已经解冻 - 已经把佣金给客户(需要扣除佣金)
{
ItemPoint itempointTmp = null;
var compute = session.FindQueryRatioHist(CpsType., db_order.id);
if (compute != null)
itempointTmp = session.FindItemPoint(CpsType., compute, Util.ConvertDouble_FenToYuan(db_order.estimated_comission), 1);
else
//判断用户的订单是否已经结算,如果已经结算通过实际佣金进行退款,如果没有结算通过预计佣进行计算
itempointTmp = session.FindItemPoint(member, Util.ConvertDouble_FenToYuan(db_order.estimated_comission), 1, CpsType.);
new OrderHelper().DeductDouYinOrderPoint(notice, db_order, itempointTmp);
db_order.db_status = SystemOrderStatus.退;
}
else
{
//if (itempoint != null)
//{
// //用户自身加积分
// //member = session.ChangePoint(PointType.维权扣除, itempoint.UserPoint, member.id, $"抖音购买:{db_order.skuName}({db_order.orderId}) - 售后中(扣除) - 订单还未结算(冻结中)");
//}
}
}
db_order.db_endtime = DateTime.MinValue;
}
break;
default:
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.UserPoint == 0 && ApiClient.Setting.SystemConfig.SubsidyTb == SwitchType.)
{
point.UserPoint = 0.01;
db_order.db_point = HttpHelper.ObjectToJson(point);
db_order.db_userpoint = point.UserPoint;
}
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 (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 (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
//string new_md5 = Util.GetMd5_32byte(HttpHelper.ObjectToJson(db_order));
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 (allrebatesactivity_orderlist != null)
{
allrebatesactivity_orderlist.oid = db_order.id;
session.Saveable(allrebatesactivity_orderlist).ExecuteCommand();
}
//if ((notice != null && old_status != db_order.db_status && order_id != db_order.trade_parent_id && member != null) || (notice != null && old_status != db_order.db_status && order_id != db_order.trade_parent_id && islotUserQuery && member == null))
if (notice != null && (isFrontData || old_status != db_order.db_status) && ((islotUserQuery && member == null) || member != null))
{
notice.Add(new Events.OrderNoticeEvent(CpsType., member, db_order) { IsRewards = isFirstOrder });
}
}
catch (Exception ex)
{
EventClient.OnEvent(this, "更新抖音联盟订单异常1:" + db_order.db_cpsname + " - " + db_order.order_id + "," + ex.Message + "," + ex.StackTrace);
}
}
}
}