private void DoJob() { var dataList = DalExpiringIntegral.GetTerribleIntegralIds(); if (dataList.Any()) { var dt = DalExpiringIntegral.ConvertToDataTable(dataList); var deleteResult = DalExpiringIntegral.DeleteTerribleItem(dt); if (deleteResult) { var insertResult = DalExpiringIntegral.InsertIntegralStatistics(dt); if (insertResult > 0) { Logger.Info("数据修补完成"); } else { Logger.Warn("数据插入失败"); } } else { Logger.Warn("数据删除失败"); } } }
public static void DoJob() { var val = DalExpiringIntegral.CheckIntegralData(); if (val) { Logger.Warn($"去年的统计数据已存在,请检查数据库数据后重试"); return; } int index = 0; int step = 1000; Stopwatch sw = new Stopwatch(); sw.Start(); var data = DalExpiringIntegral.GetIntegralID(index, step); while (data.Any()) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { new DataColumn("Id", typeof(Guid)) }); foreach (var item in data) { DataRow r = dt.NewRow(); r[0] = item.IntegralID; dt.Rows.Add(r); } try { index += 1; var dat = DalExpiringIntegral.InsertIntegralStatistics(dt); sw.Stop(); Logger.Info($"插入{dat}条数据,用时{sw.ElapsedMilliseconds}毫秒"); sw.Reset(); sw.Start(); data = DalExpiringIntegral.GetIntegralID(index, step); } catch (Exception ex) { Logger.Info($"统计第{index}批数据出现异常{ex.Message}"); } } }
private static void DoJob(bool isTest) { var count = DalExpiringIntegral.GetExpiringIntegralUserCount(); if (count < 1) { Logger.Warn("待过期用户数量为0;"); return; } var start = 1500 * 95; const int step = 1500; Logger.Info($"需处理{count}位用户数据,共{count / step + 1}批"); var watcher = new Stopwatch(); while (start <= count) { watcher.Start(); var data = DalExpiringIntegral.GetUserExpiringPointInfo(start, step); start += step; if (!data.Any()) { continue; } var data2 = DalExpiringIntegral.GetUserConsumeIntegral(data.Select(g => g.UserId).ToList()); var totalData = data.Union(data2).GroupBy(g => g.UserId).Select(g => new UserExpiringPointModel { UserId = g.Key, Integral = g.Sum(t => t.Integral), IntegralId = g.Where(t => t.IntegralId != Guid.Empty).Select(t => t.IntegralId).FirstOrDefault() }).Where(g => g.Integral > 0 && g.IntegralId != Guid.Empty).ToList(); Logger.Info($"积分过期Job, 第{start / step}批数据,需过期{totalData.Count}条数据"); if (!totalData.Any()) { continue; } var client = new UserIntegralClient(); try { //DalExpiringIntegral.ExpireUserPoint(totalData, IntegralRule); foreach (var item in totalData) { var result = client.UserIntegralChangeByUserID(item.UserId, new UserIntegralDetailModel { IntegralID = item.IntegralId, IntegralRuleID = IntegralRule, TransactionIntegral = item.Integral, TransactionRemark = $"{DateTime.Now.Year - 2}年积分过期", TransactionDescribe = $"{DateTime.Now.Year - 2}年积分过期", TransactionChannel = "CJob", Versions = $"{DateTime.Now.Year - 2}", IntegralType = 1 }, null, 0); if (!result.Success || result.Result == null) { Logger.Warn( $"UserIntegralExpireJob==>fail==>{JsonConvert.SerializeObject(item)}==>{result.ErrorMessage}"); } } } catch (Exception ex) { Logger.Warn("插入数据出现异常", ex); } finally { client.Dispose(); } watcher.Stop(); Logger.Info($"积分过期Job,第{start / step}批完成,共{count / step + 1}批,用时{watcher.ElapsedMilliseconds}毫秒"); watcher.Reset(); if (isTest) { Logger.Info($"isTest==>{JsonConvert.SerializeObject(totalData.Take(10))}"); break; } } }