using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using Api.Framework.Cps; using Api.Framework.EntityTmp.KuaiShou; using Api.Framework.Enums; using Api.Framework.Events; using Api.Framework.Extents; using Api.Framework.Model; using Api.Framework.SDK; using Api.Framework.Tools; using Api.Framework.Utils; using CsharpHttpHelper; using Newtonsoft.Json; using SqlSugar; namespace Api.Framework.Timers { public class DownKuaiShouTimer : TimerTask { private DateTime update_time = DateTime.Now.AddMinutes(-60); public override void Run(object state, bool timedOut) { var endTime = DateTime.Now; UpdateOrder(CpsClient.Members.Where(f => f.cpstype == CpsType.快手联盟 && f.is_download == SwitchType.开启).ToArray(), update_time, endTime); update_time = DateTime.Now.AddMinutes(-20); } /// /// 手动同步订单 /// /// 快手cps对象集合 /// 开始时间 /// 结束时间 public void UpdateOrder(List 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} - {ex.StackTrace}"); } finally { IsRunning = false; } } /// /// 同步订单 /// /// 快手cps对象集合 /// 开始时间 /// 结束时间 private void UpdateOrder(fl_cps_member[] members, DateTime start_time, DateTime end_time) { if (members == null || members.Length == 0) return; UnValidCpsMember(members); int row_count = 50; //间隔 var timespan = end_time - start_time; TaskTool task = new TaskTool(); List notices = new List(); var not_download_pids = ApiClient.Setting.SystemConfig.order_kuaishou_not_download_pid.Replace(",", ",") .Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList(); members = members.Where(f => f.is_valid).ToArray(); foreach (var item in members) { var _item = item; var client = new KuaiShouApi(_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); } client.DownOrder(_star, _end, OrderHandle, ""); } while (_star > start_time); #region 处理完成冻结订单 var session = ApiClient.GetSession(); var end_orders = session.Find("select * from fl_order_kuaishou 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); } #endregion } catch (Exception ex) { //throw ex; } }); } task.Start(1, null); //if (string.IsNullOrEmpty(order_id)) //{ // var session = ApiClient.GetSession(); // var end_orders = session.Find("select * from fl_order_kuaishou 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() as Update_NoticeQueue; // foreach (var item in notices) // { // //if (item.Member == null) continue; // var order = item.Order as fl_order_kuaishou; // if (order.order_sn == order_id) continue; // tasks.Add(item); // } //} } private void OrderHandle(KS_OrderInfo orderInfo, string username, string usernick) { try { if (orderInfo?.orderList != null && orderInfo.orderList.Count != 0) { List notices = new List(); var notDownloadPids = ApiClient.Setting.SystemConfig.order_kuaishou_not_download_pid.Replace(",", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList(); int count = 1; foreach (var item in orderInfo.orderList) { try { if (item.cpsKwaimoneyOrderProductView == null || item.cpsKwaimoneyOrderProductView.Count == 0) continue; var db = ApiClient.GetSession(); foreach (var orderItem in item.cpsKwaimoneyOrderProductView) { count++; #region 不处理的PID if (ApiClient.Setting.SystemConfig.order_kuaishou_download_set_pids == SwitchType.关闭) { if (notDownloadPids.Count != 0) { var isExist = notDownloadPids.Contains(orderItem.cpsPid);//是否包含 //continue; if (ApiClient.Setting.SystemConfig.order_kuaishou_down_type == DownAdzoneType.不下载推广位 && isExist) continue; else if (ApiClient.Setting.SystemConfig.order_kuaishou_down_type == DownAdzoneType.只下载推广位 && !isExist) continue; } } else { var adzoneList = new List(); var adzones = db.FindAdzoneInfos(); adzoneList.AddRange(adzones.Where(f => f.custom_type == "快手返利" && !string.IsNullOrEmpty(f.adzone_pid) && f.adzone_pid.Contains(orderItem.cpsPid))); adzoneList.AddRange(adzones.Where(f => f.custom_type == "用户私人pid" && f.extend == "快手私人pid" && !string.IsNullOrEmpty(f.adzone_pid) && f.adzone_pid.Contains(orderItem.cpsPid))); if (adzoneList.Count() == 0) continue; } #endregion if (ApiClient.Setting.DbConfig.DatabaseType == DatabaseType.SQLITE && count % 10 == 0) Thread.Sleep(150); var dbOrder = db.FindSingle("oid=@oid and oid2=@oid2", new { oid = item.oid, oid2 = orderItem.oid }); if (dbOrder != null) { var updateTime = item.updateTime.ToDateTime(); if (dbOrder.updateTime == updateTime) continue; if (dbOrder.IsFinish())//是否已经完成 continue; if (dbOrder.db_status == SystemOrderStatus.订单冻结 && dbOrder.db_endtime > DateTime.Now)//跳过冻结 continue; dbOrder.updateTime = updateTime; dbOrder.cpsOrderStatus = (CpsOrderStatus)item.cpsOrderStatus; dbOrder.settlementSuccessTime = item.settlementSuccessTime.ToDateTime(); dbOrder.settlementAmount = item.settlementAmount.ExecDivision(); } else { dbOrder = ToDbKusishou(item, orderItem); dbOrder.db_cpsname = username; dbOrder.db_cpsnick = usernick; } UpdateOrder(dbOrder, db, notices); } } catch (Exception ex) { //Console.WriteLine($"处理订单异常1:{ex.Message} - {ex.StackTrace}"); } } //通知 if (notices.Count != 0) { var tasks = TimerTask.GetTimer() as Update_NoticeQueue; foreach (var item in notices) { var order = item.Order as fl_order_kuaishou; tasks.Add(item); } } } } catch (Exception ex) { //Console.WriteLine($"处理订单异常2:{ex.Message} - {ex.StackTrace}"); } } private fl_order_kuaishou ToDbKusishou(OrderList order, CpsOrderProductView orderItem) { var dbOrder = new fl_order_kuaishou(); dbOrder.oid = order.oid; dbOrder.cpsOrderStatus = (CpsOrderStatus)order.cpsOrderStatus; dbOrder.orderCreateTime = order.orderCreateTime.ToDateTime(); dbOrder.payTime = order.payTime.ToDateTime(); dbOrder.orderTradeAmount = order.orderTradeAmount.ExecDivision(); dbOrder.createTime = order.createTime.ToDateTime(); dbOrder.updateTime = order.updateTime.ToDateTime(); dbOrder.settlementSuccessTime = order.settlementSuccessTime.ToDateTime(); dbOrder.settlementAmount = order.settlementAmount.ExecDivision(); dbOrder.kwaimoneyUserId = order.kwaimoneyUserId; dbOrder.oid2 = orderItem.oid; dbOrder.itemId = orderItem.itemId; dbOrder.itemTitle = orderItem.itemTitle; dbOrder.itemPicUrl = orderItem.itemPicUrl; dbOrder.itemPrice = orderItem.itemPrice.ExecDivision(); dbOrder.skuDesc = orderItem.skuDesc; dbOrder.estimatedIncome = orderItem.estimatedIncome.ExecDivision(); dbOrder.commissionRate = orderItem.commissionRate.ExecDivision(1000, 3); dbOrder.cpsPid = orderItem.cpsPid; dbOrder.sellerId = orderItem.sellerId; dbOrder.sellerNickname = orderItem.sellerNickname; dbOrder.num = orderItem.num; dbOrder.cpsType = orderItem.cpsType; dbOrder.distributorId = orderItem.distributorId; dbOrder.distributorNickname = orderItem.distributorNickname; dbOrder.comments = orderItem.comments; dbOrder.pidName = orderItem.pidName; dbOrder.paymentFee = orderItem.paymentFee.ExecDivision(); return dbOrder; } internal bool UpdateOrder(DateTime start_time, DateTime end_time) { if (IsRunning) throw new Exception("任务繁忙,请稍后重试!"); try { IsRunning = true; var members = CpsClient.Members.Where(f => f.cpstype == CpsType.快手联盟 && f.is_download == SwitchType.开启).ToArray(); UnValidCpsMember(members); UpdateOrder(members, start_time, end_time); return true; } catch (Exception ex) { EventClient.OnEvent(this, "更新快手异常:" + ex.Message); return false; } finally { IsRunning = false; } } /// /// 订单 修改状态/用户绑定等操作通知用户 /// /// 快手订单对象 /// 数据库操作对象 /// 事件集合 /// public void UpdateOrder(fl_order_kuaishou dbOrder, SqlSugarClient db, List notice, bool isFrontData = false) { try { var old_status = dbOrder.db_status; fl_member_info member = null; ; var isRewards = false;//是否获得推荐新人奖励 var isFirstOrder = false;//是否获得用户首单奖励 var islotUserQuery = false;//订单是否为多人查询 //历史佣金计算id fl_itempoint1_hist itemPointHist = null; //订单自动绑定 if (dbOrder.db_userid == 0 && ApiClient.Setting.SystemConfig.order_kuaishou_bind == SwitchType.开启) { var isbind = false; #region 快手返利进行自动绑定 //私人推广位强制绑定绑定 var privateAdzonePids = db.FindKuaishouPrivatePid(dbOrder.cpsPid); if (privateAdzonePids.Count == 1 && privateAdzonePids[0].is_auto_bind)//无条件设置开启中,直接自动绑定 { var memberInfo = db.FindMemberInfoById(privateAdzonePids[0].member_id); if (memberInfo != null) { dbOrder.db_userid = memberInfo.id; dbOrder.db_robotname = memberInfo.robot_name; dbOrder.db_robottype = memberInfo.robot_type; isbind = true; } } if (!isbind) { var bind_pids = db.FindKuaishouAutoBindPid(); bool flag = bind_pids.FirstOrDefault(f => f == dbOrder.cpsPid) != null ? true : false; if (flag) { #region 有定义参数 if (!string.IsNullOrWhiteSpace(dbOrder.comments)) { itemPointHist = db.Queryable().First(f => f.guidkey == dbOrder.comments); if (itemPointHist != null) { member = db.FindMemberInfoById(itemPointHist.uid); if (member != null) { dbOrder.db_userid = member.id; if (string.IsNullOrEmpty(dbOrder.db_robotname)) { dbOrder.db_robotname = itemPointHist.robotname; dbOrder.db_robottype = member.robot_type; } dbOrder.msg_groupid = itemPointHist.gid; } } } #endregion } } #endregion } else { member = db.Find("id=@id", new { id = dbOrder.db_userid }).FirstOrDefault(); } #region 更新用户的最后付款时间 if (dbOrder.cpsOrderStatus == CpsOrderStatus.已付款 && dbOrder.db_userid != 0) { try { var record = db.FindStatisticsRecord(dbOrder.db_userid); if (record == null) record = new fl_statistics_record() { uid = dbOrder.db_userid }; record.ex5 = HttpExtend.GetTimeStamp(dbOrder.payTime); db.Saveable(record).ExecuteCommand(); } catch (Exception) { } } #endregion //计算积分 if (string.IsNullOrEmpty(dbOrder.db_point)) { if (member == null) member = db.Find("id=@id", new { id = dbOrder.db_userid }).FirstOrDefault(); ItemPoint itempoint = null; Compute compute = null; if (itemPointHist != null) compute = JsonConvert.DeserializeObject(itemPointHist.text); //计算的佣金 if (compute != null) itempoint = db.FindItemPoint(CpsType.快手联盟, compute, dbOrder.estimatedIncome, dbOrder.num); else itempoint = db.FindItemPoint(member, dbOrder.estimatedIncome, dbOrder.num, CpsType.快手联盟); if (itempoint != null) { dbOrder.db_point = HttpHelper.ObjectToJson(itempoint); dbOrder.db_userpoint = itempoint.UserPoint; } if (member != null) { member.bind_order++; member = db.UpdateMemberGroup(member); } } if (member != null && string.IsNullOrWhiteSpace(dbOrder.db_robotname)) { dbOrder.db_robotname = member.robot_name; dbOrder.db_robottype = member.robot_type; } switch (dbOrder.cpsOrderStatus) { case CpsOrderStatus.已结算: case CpsOrderStatus.已收货: { //未发放佣金 if (dbOrder.db_endtime == DateTime.MinValue) { var sleep = db.FindSleep(CpsType.快手联盟, ApiClient.Setting.SystemConfig.FreezingCondition == FreezingConditionType.商品总佣金 ? dbOrder.estimatedIncome : dbOrder.db_userpoint); if (sleep != null) { if (!string.IsNullOrEmpty(sleep.white_groups)) { if (member != null && sleep.white_groups.Split(',').Contains(member.group_id.ToString())) { dbOrder.db_endtime = DateTime.Now;//该会员组不受限制 } else { dbOrder.db_endtime = DateTime.Now.AddHours(sleep.sleep);//延迟多少小时 } } else dbOrder.db_endtime = DateTime.Now.AddHours(sleep.sleep);//延迟多少小时 } else dbOrder.db_endtime = DateTime.Now; #region 验证订单是否为24小时 var config = Util.Read>("插件-快手返利-配置"); 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()); if ((DateTime.Now - dbOrder.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()); dbOrder.db_endtime = dbOrder.db_endtime.AddHours(ReceivingTimeCheck_FreezeTime);//延迟多少小时 } } } } } } } } #endregion } if (dbOrder.db_endtime <= DateTime.Now) { dbOrder.db_status = SystemOrderStatus.订单结算; //session.ExcuteSQL("update fl_order_kuaishou set db_status=" + (int)db_order.db_status + " where id=" + db_order.id); if (member != null) { var point = HttpHelper.JsonToObject(dbOrder.db_point) as ItemPoint; if (point != null) { #region 获取是否已经结算给客户 var pointHists = db.Find("select * from fl_point_hist where uid = @uid and type = @pointType_name and message = @message", new { uid = member.id, pointType_name = PointType.消费补贴.ToString(), message = $"快手购买:{dbOrder.itemTitle}({dbOrder.oid}-{dbOrder.oid2})" }); if (pointHists != null && pointHists.Count != 0) { db.SaveOrUpdate(dbOrder); return; } #endregion List ids = new List(); ids.Add(member.id); //用户自身加积分 member = db.ChangePoint(PointType.消费补贴, point.UserPoint, member.id, $"快手购买:{dbOrder.itemTitle}({dbOrder.oid}-{dbOrder.oid2})"); #region 判断用户是否符合获得新人奖励 isFirstOrder = OrderHelper.CheckMemberFirstOrderRewards(member, dbOrder.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 = db.FindMemberInfoById(member.inviter_id); if (inviter != null) { #region 判断上级是否符合获得推荐新人奖励 isRewards = OrderHelper.CheckSuperiorInviteRewards(member, dbOrder.db_endtime, dbOrder.paymentFee); #endregion notice.Add(new OrderNoticeEvent(CpsType.快手联盟, inviter, dbOrder, OrderNoticeType.一级提成) { Customer = member, IsRewards = isRewards });//下级首单完成 } } } else if (point.AwardOne > 0 && !ids.Contains(member.inviter_id) && member.id != member.inviter_id) { var flag = db.ChangePoint(PointType.提成奖励, point.AwardOne, member.inviter_id, $"{member.usernick},快手购物1级提成! - {dbOrder.itemTitle}({dbOrder.oid}-{dbOrder.oid2})"); if (flag != null) { ids.Add(flag.id); #region 判断上级是否符合获得推荐新人奖励 isRewards = OrderHelper.CheckSuperiorInviteRewards(member, dbOrder.db_endtime, dbOrder.paymentFee); #endregion notice.Add(new OrderNoticeEvent(CpsType.快手联盟, flag, dbOrder, OrderNoticeType.一级提成) { Customer = member, IsRewards = isRewards }); if (point.AwardTwo > 0 && flag.inviter_id != 0 && !ids.Contains(flag.inviter_id)) { var flag2 = db.ChangePoint(PointType.提成奖励, point.AwardTwo, flag.inviter_id, $"{member.usernick},快手购物2级提成! - {dbOrder.itemTitle}({dbOrder.oid}-{dbOrder.oid2})"); if (flag2 != null) { ids.Add(flag2.id); if (flag2 != null) { notice.Add(new OrderNoticeEvent(CpsType.快手联盟, flag2, dbOrder, OrderNoticeType.二级提成) { Customer = member }); if (point.AwardThree > 0 && flag2.inviter_id != 0 && !ids.Contains(flag2.inviter_id)) { var flag3 = db.ChangePoint(PointType.提成奖励, point.AwardThree, flag2.inviter_id, $"{member.usernick},快手购物3级提成! - {dbOrder.itemTitle}({dbOrder.oid}-{dbOrder.oid2})"); if (flag3 != null) { ids.Add(flag3.id); if (flag3 != null) notice.Add(new OrderNoticeEvent(CpsType.快手联盟, flag3, dbOrder, OrderNoticeType.三级提成) { Customer = member }); } } } } } } } //创建人计算 if (point.AwardCreate > 0 && !string.IsNullOrEmpty(dbOrder.msg_groupid) && !string.IsNullOrEmpty(dbOrder.db_robotname)) { var robot = db.FindRobotInfo(dbOrder.db_robotname, dbOrder.db_robottype); if (robot != null) { var create = db.FindCreateInfo(dbOrder.msg_groupid, dbOrder.db_robottype); if (create != null && member.id != create.id) { var flag = db.ChangePoint(PointType.提成奖励, point.AwardCreate, create.mid, $"{member.usernick},快手维护提成! - {dbOrder.itemTitle}({dbOrder.oid}-{dbOrder.oid2})"); if (flag != null) notice.Add(new OrderNoticeEvent(CpsType.快手联盟, flag, dbOrder, OrderNoticeType.群主分成) { Customer = member }); } } } } } } else dbOrder.db_status = SystemOrderStatus.订单冻结; break; } case CpsOrderStatus.已付款: dbOrder.db_status = SystemOrderStatus.订单付款; break; case CpsOrderStatus.已失效: dbOrder.db_status = SystemOrderStatus.订单失效; if (member != null)//订单还没有绑定用户 { if (dbOrder.db_endtime != DateTime.MinValue) //客户已经在冻结中 { if (dbOrder.db_endtime <= DateTime.Now) //佣金已经解冻 - 已经把佣金给客户(需要扣除佣金) { ItemPoint itempointTmp = null; var compute = db.FindQueryRatioHist(CpsType.快手联盟, dbOrder.id); if (compute != null) itempointTmp = db.FindItemPoint(CpsType.快手联盟, compute, dbOrder.estimatedIncome, dbOrder.num); else //判断用户的订单是否已经结算,如果已经结算通过实际佣金进行退款,如果没有结算通过预计佣进行计算 itempointTmp = db.FindItemPoint(member, dbOrder.estimatedIncome, dbOrder.num, CpsType.快手联盟); new OrderHelper().DeductKuaiShouOrderPoint(notice, dbOrder, itempointTmp); dbOrder.db_status = SystemOrderStatus.全额退款; } else { //if (itempoint != null) //{ // //用户自身加积分 // //member = session.ChangePoint(PointType.维权扣除, itempoint.UserPoint, member.id, $"抖音购买:{db_order.skuName}({db_order.orderId}) - 售后中(扣除) - 订单还未结算(冻结中)"); //} } } dbOrder.db_endtime = DateTime.MinValue; } break; default: dbOrder.db_status = SystemOrderStatus.订单未知; break; } #region 通知客户订单付款/失效 提示上级 if (member != null && (dbOrder.db_status == SystemOrderStatus.订单付款 || dbOrder.db_status == SystemOrderStatus.订单失效)) { var point = HttpHelper.JsonToObject(dbOrder.db_point) as ItemPoint; if (point != null) { List ids = new List(); 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 = db.FindMemberInfoById(member.inviter_id); if (member_one != null) { ids.Add(member_one.id); if (notice != null) notice.Add(new OrderNoticeEvent(CpsType.快手联盟, member_one, dbOrder, OrderNoticeType.一级提成) { Customer = member }); if (point.AwardTwo > 0 && member_one.inviter_id != 0 && !ids.Contains(member_one.inviter_id)) { //二级用户对象 var member_two = db.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, dbOrder, OrderNoticeType.二级提成) { Customer = member }); if (point.AwardThree > 0 && member_two.inviter_id != 0 && !ids.Contains(member_two.inviter_id)) { //三级用户对象 var member_three = db.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, dbOrder, OrderNoticeType.三级提成) { Customer = member }); } } } } } } } //创建人计算 if (point.AwardCreate > 0 && !string.IsNullOrEmpty(dbOrder.msg_groupid) && !string.IsNullOrEmpty(dbOrder.db_robotname)) { var create = db.FindCreateInfo(dbOrder.msg_groupid, dbOrder.db_robottype); if (create != null && member.id != create.id) { var member_create = db.FindMemberInfoById(create.mid); if (notice != null && member_create != null) notice.Add(new OrderNoticeEvent(CpsType.快手联盟, member_create, dbOrder, OrderNoticeType.群主分成) { Customer = member }); } } } } #endregion if (old_status != dbOrder.db_status) dbOrder.db_status_time = HttpExtend.GetTimeStamp(); db.SaveOrUpdate(dbOrder); if (dbOrder.db_status == SystemOrderStatus.订单付款) { #region 判断用户是否符合获得新人奖励 isFirstOrder = OrderHelper.CheckMemberFirstOrderRewards(member, dbOrder.db_status); #endregion } //if (notice != null && (isFrontData || old_status != db_order.db_status)) if (notice != null && (isFrontData || old_status != dbOrder.db_status) && ((islotUserQuery && member == null) || member != null)) notice.Add(new Events.OrderNoticeEvent(CpsType.快手联盟, member, dbOrder, OrderNoticeType.客户订单) { IsRewards = isFirstOrder }); } catch (Exception ex) { EventClient.OnEvent(this, "更新快手订单错误:" + dbOrder.oid + "-" + dbOrder.oid2 + "," + ex.Message); } } private static DateTime invalidnotice_time = DateTime.MinValue;//阿里妈妈账号无效通知时间 private static DateTime invalidnotice_time2 = DateTime.MinValue;//阿里妈妈账号日志无效时间 /// /// 无效的快手账号通知 /// /// 快手cps对象集合 private void UnValidCpsMember(fl_cps_member[] _members) { try { var invalid_members = _members.Where(f => !f.is_valid).ToArray(); if (invalid_members.Length != 0) { var strb = new StringBuilder(); strb.AppendLine($"快手更新订单异常"); strb.AppendLine(); for (int i = 0; i < invalid_members.Length; i++) { strb.AppendLine($"{invalid_members[i].usernick} ({invalid_members[i].username})"); } strb.AppendLine(); strb.AppendLine($"以上账号授权状态已过期"); strb.AppendLine($"跳过以上账号下载操作"); strb.AppendLine($"请重新登录快手账号"); var timelag2 = (DateTime.Now - invalidnotice_time2).TotalMinutes; if (timelag2 > 5) { invalidnotice_time2 = DateTime.Now; EventClient.OnEvent(this, strb.ToString()); } var timelag = (DateTime.Now - invalidnotice_time).TotalMinutes; if (timelag > 30) { strb.AppendLine($"系统时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); invalidnotice_time = DateTime.Now; ApiClient.SendNoticeMessage(strb.ToString()); ApiClient.SendAdminEmail(ApiClient.Setting.SystemConfig.account_admin_email, "快手账号授权失效通知", strb.ToString(), true); } } } catch (Exception ex) { EventClient.OnEvent(this, $"更新快手订单异常7:{ex.Message},{ex.StackTrace}"); } } } }