Beispiel #1
0
        public void Execute(IJobExecutionContext context)
        {
            _logger.Info("CleanDupYewuUser开始执行:" + DateTime.Now.ToString());
            try
            {
                //获取YewuUser表里uid\3rdId\channel都一样的数据
                var stepOne_GetDupYewuUsers = UACManager.GetDupYewuUsers();
                if (null == stepOne_GetDupYewuUsers)
                {
                    _logger.Info("CleanDupYewuUser没有需要合并的记录:" + DateTime.Now.ToString());
                }
                else
                {
                    //针对每组相同UserId+ThirdpartyId+Channel,选择pkid最小的,其余记录下来,然后删除
                    var stepTwo_CollectNeedDeleteList = UACManager.CollectNeedDeleteDupYewuUserList(stepOne_GetDupYewuUsers);

                    if (UACManager.CheckSwitch(runtimeSwitch)) //如果开关开着,跑一条,如果开关关了跑全部
                    {
                        stepTwo_CollectNeedDeleteList = stepTwo_CollectNeedDeleteList.Take(1).ToList();
                    }

                    //删除stepTwo数据,并记录数据
                    var stepThree_DeleteAndRecord = UACManager.DeleteAndRecordDupYewuUsers(stepTwo_CollectNeedDeleteList);
                    if (!stepThree_DeleteAndRecord)
                    {
                        _logger.Info("CleanDupYewuUser清理重复三方业务表数据失败");
                    }
                }
                _logger.Info("CleanDupYewuUser执行结束");
            }
            catch (Exception ex)
            {
                _logger.Info($"CleanDupYewuUser:运行异常=》{ex}");
            }
            _logger.Info("CleanDupYewuUser执行结束");
        }
        public void Execute(IJobExecutionContext context)
        {
            _logger.Info("CollectUserDailyIncJob开始执行:" + DateTime.Now.ToString());
            if (UACManager.CheckSwitch(runtimeSwitch))
            {
                DateTime      startTime = DateTime.Now.Date.AddDays(-30);
                DateTime      endTime   = DateTime.Now.Date.AddDays(-1);
                List <string> dateList  = new List <string>();

                for (DateTime date = startTime; date <= endTime; date = date.AddDays(1))
                {
                    dateList.Add(date.ToString("yyyy-MM-dd"));
                }

                #region 多线程,处理批量日期
                //try
                //{
                //    Dictionary<int, List<Task>> taskDic = new Dictionary<int, List<Task>>();

                //    for (int index = 0; index < dateList.Count; index++)
                //    {
                //        var task = new Task(() =>
                //        {
                //            UACManager.CollectUserTableDailyInc(dateList[index]);
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var num = index / 10;
                //        if (taskDic.ContainsKey(num) && taskDic[num] != null)
                //        {
                //            taskDic[num].Add(task);
                //        }
                //        else
                //        {
                //            taskDic[num] = new List<Task>() { task };
                //        }
                //    }

                //    foreach (var tasks in taskDic.Values)
                //    {
                //        foreach (var item in tasks)
                //        {
                //            item.Start();
                //        }
                //        Task.WaitAll(tasks.ToArray());
                //    }
                //}
                //catch (AggregateException ex)
                //{
                //    foreach (Exception inner in ex.InnerExceptions)
                //    {
                //        _logger.Info($"CollectUserDailyIncJob:运行异常=》{ex}");
                //    }
                //}
                #endregion
                #region 单线程,处理批量日期
                try
                {
                    foreach (var date in dateList)
                    {
                        UACManager.CollectUserTableDailyInc(date);
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info($"CollectUserDailyIncJob:运行异常=》{ex}");
                    Tuhu.TuhuMessage.SendEmail("【用户日增长Warning】批量执行从" +
                                               startTime.ToString("yyyy-MM-dd") + "到" +
                                               endTime.ToString("yyyy-MM-dd") + "时,脚本异常EOM",
                                               "[email protected];[email protected]",
                                               "请检查数据和日志." + ex);
                }
                #endregion
            }
            else
            {
                //单线程,及时收集前一天数据
                try
                {
                    DateTime collectTime = DateTime.Now.Date.AddDays(-1);
                    UACManager.CollectUserTableDailyInc(collectTime.ToString("yyyy-MM-dd"));
                }
                catch (Exception ex)
                {
                    _logger.Info($"CollectUserDailyIncJob:运行异常=》{ex}");
                    Tuhu.TuhuMessage.SendEmail("【用户日增长Warning】日期" + DateTime.Now.Date.AddDays(-1).ToString("yyyy-MM-dd") + "脚本执行异常EOM",
                                               "[email protected];[email protected]",
                                               "请检查数据和日志." + ex);
                }
            }
            _logger.Info("CollectUserDailyIncJob执行结束");
        }
        void IJob.Execute(IJobExecutionContext context)
        {
            _logger.Info("UserCombineViaPhoneAndRecordLogJob开始执行:" + DateTime.Now.ToString());
            if (UACManager.CheckSwitch(runtimeSwitch))
            {
                //多线程执行模块
                //try
                //{
                //    //获取UAC_NeedCombineUserId表里IsOperateSuccess=0(即操作失败,或者还没执行)的数据
                //    var stepOne_GetNeedCombineUserIdViaPhoneList = UACManager.GetNeedCombineUserIdViaPhoneList();
                //    if (null == stepOne_GetNeedCombineUserIdViaPhoneList)
                //    {
                //        _logger.Info("UserCombineViaPhoneAndRecordLogJob没有需要合并的记录:" + DateTime.Now.ToString());
                //    }
                //    else
                //    {
                //        var task_0 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "0");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_1 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "1");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_2 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "2");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_3 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "3");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_4 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "4");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_5 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "5");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_6 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "6");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_7 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "7");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_8 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "8");
                //            System.Threading.Thread.Sleep(1000);
                //        });
                //        var task_9 = new Task(() =>
                //        {
                //            UACManager.Task_CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList,
                //            runtimeSwitch, "9");
                //            System.Threading.Thread.Sleep(1000);
                //        });

                //        task_2.Start();
                //        task_3.Start();
                //        task_4.Start();
                //        task_5.Start();
                //        task_6.Start();
                //        task_7.Start();
                //        task_8.Start();
                //        task_9.Start();

                //        Task.WaitAll(task_2, task_3, task_4, task_5, task_6, task_7, task_8, task_9);
                //    }
                //}
                //catch (AggregateException ex)
                //{
                //    foreach (Exception inner in ex.InnerExceptions)
                //    {
                //        _logger.Info($"UserCombineViaPhoneAndRecordLogJob:运行异常=》{inner.Message}");
                //    }
                //}
                //单线程模块
                try
                {
                    //获取UAC_NeedCombineUserId表里IsOperateSuccess=0(即操作失败,或者还没执行)的数据
                    var stepOne_GetNeedCombineUserIdViaPhoneList = UACManager.GetNeedCombineUserIdViaPhoneList();
                    if (null == stepOne_GetNeedCombineUserIdViaPhoneList)
                    {
                        _logger.Info("UserCombineViaPhoneAndRecordLogJob没有需要合并的记录:" + DateTime.Now.ToString());
                    }
                    else
                    {
                        //循环遍历,对于每条记录,
                        //如果所有表都更新成功,更新IsOperateSuccess = 1,记录所有表操作日志
                        //否者,记录报错,回滚操作,记录失败
                        //stepTwo_CombineAndRecordAction计数了需要完成\成功\失败的行数
                        if (null == stepOne_GetNeedCombineUserIdViaPhoneList || !stepOne_GetNeedCombineUserIdViaPhoneList.Any())
                        {
                            _logger.Info("UserCombineViaPhoneAndRecordLogJob所有测试数据已经跑完" + DateTime.Now.ToString());
                        }
                        else
                        {
                            var stepTwo_CombineAndRecordAction = UACManager.CombineAndRecordActionForPhoneCombile(stepOne_GetNeedCombineUserIdViaPhoneList, runtimeSwitch);
                            _logger.Info("UserCombineViaPhoneAndRecordLogJob:" + stepTwo_CombineAndRecordAction);
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info($"UserCombineViaPhoneAndRecordLogJob:运行异常=》{ex}");
                }
            }
            _logger.Info("UserCombineViaPhoneAndRecordLogJob执行结束");
        }