private static void BatchUpdate(int pageIndex, int pageSize, DateTime start, DateTime end) { List <ShopCommentDataModel> comments = DalShopCommentSync.GetShopCommentsPage(pageIndex, pageSize, start.ToString("yyyy-MM-dd"), end.AddDays(1).ToString("yyyy-MM-dd")).ToList(); #region 批量更新 using (var client = new ShopCommentClient()) { var result = client.BatchGetShopCommentType(comments.Select(p => p.OrderId).ToList()); if (result.Success && result.Result.Any()) { Logger.Info($"更新门店评论的类型 BatchGetShopCommentType pageIndex ={pageIndex} 有效的 shoptype 数目 ={result.Result.Where(p => !string.IsNullOrWhiteSpace(p.ShopType)).Count()} time={result.ElapsedMilliseconds} "); foreach (var item in comments) { try { if (result.Success && result.Result.Any()) { string ShopType = result.Result.Where(p => p.OrderId == item.OrderId).FirstOrDefault()?.ShopType; if (!string.IsNullOrWhiteSpace(ShopType)) { if (DalShopCommentSync.UpdateShopCommentShopType(item.CommentId ?? 0, ShopType)) { //logger.Info($"更新门店评论的类型 更新 完成 CommentId={item.CommentId}& ShopType={ShopType}"); } else { Logger.Error($"更新门店评论的类型 UpdateShopCommentShopType 更新失败 CommentId={item.CommentId}& ShopType={ShopType} "); } } else { //logger.Info($"更新门店评论的类型 BatchGetShopCommentType 更新 失败 CommentId={item.CommentId}& ShopType={ShopType}"); } } } catch (Exception ex) { Logger.Info($"更新门店评论的类型 BatchGetShopCommentType 更新 失败 CommentId={item.CommentId}& ex={ex.Message}"); } } } else { Logger.Info($"更新门店评论的类型 更新失败 BatchGetShopCommentType 异常 message={result.ErrorMessage} & count ={result.Result.Count()}"); } } #endregion }
public void Execute(IJobExecutionContext context) { //分页读取技师信息 //从Tuhu_comment..TechnicianComment 里统计每个技师的平均分 //写入到 Tuhu_comment..TechnicianStatistics 里 try { Logger.Info("开始执行"); int pageIndex = 1; int pageSize = 1000; int total = DalShopStatistics.GetTechsCount(); int pageTotal = (total - 1) / pageSize + 1; for (; pageIndex <= pageTotal; pageIndex++) { var techs = DalShopStatistics.GetTechsPage(pageIndex, pageSize); techs.ForEach((item) => { //查询门店里的美容团购订单 var statistics = DalShopCommentSync.GetTechCommentStatistics(item.PKID); Parallel.ForEach(statistics, new ParallelOptions() { MaxDegreeOfParallelism = 3 }, s => { DalShopCommentSync.SyncTechCommentStatistics(s.ShopId, s.TechnicianId, s); }); }); } using (var client = new ShopCommentClient()) { client.RefreshCommentStatisticsCache(1); } Logger.Info("执行结束"); } catch (Exception e) { Logger.Error("执行异常", e); } }
public static void DoJob() { DateTime start = new DateTime(2016, 1, 1); DateTime end = DateTime.Now; int pageIndex = 1; int pageSize = 600; int total = DalShopCommentSync.GetShopCommentCountByTime(start.ToString("yyyy-MM-dd"), end.AddDays(1).ToString("yyyy-MM-dd")); int pageTotal = (total - 1) / pageSize + 1; List <int> pageIndexList = new List <int>(); for (; pageIndex <= pageTotal; pageIndex++) { pageIndexList.Add(pageIndex); } //foreach (var f in pageIndexList) //{ // var sw = new Stopwatch(); // sw.Start(); // BatchUpdate(f, pageSize, start, end); // logger.Info($"更新门店评论的类型 第{f}页 页数={pageSize} 更新完成 time={sw.ElapsedMilliseconds}ms"); // sw.Stop(); //} Parallel.ForEach(pageIndexList, new ParallelOptions() { MaxDegreeOfParallelism = 5 }, f => { var sw = new Stopwatch(); sw.Start(); BatchUpdate(f, pageSize, start, end); //AsyncHelper.RunSync(() => BatchUpdate(f, pageSize, start, end)); Logger.Info($"更新门店评论的类型 第{f}页 页数={pageSize} 更新完成 time={sw.ElapsedMilliseconds}ms"); sw.Stop(); }); }
private void DoJob() { var products = DalShopCommentSync.GetProductInfo(); Logger.Info($"门店韩品评分统计,待统计保养团购商品共{products.Count}"); var index = 1; foreach (var product in products) { Logger.Info($"待统计保养团购产品{product}-->{index}/{products.Count}"); index++; var data = DalShopCommentSync.GetProductScore(product); foreach (var item in data) { var result = DalShopCommentSync.CreatOrUpdateRecord(item); if (!result) { Logger.Warn( $"门店产品评分统计插入或更新数据失败-->{item.Pid}/{item.ShopId}/{item.AvgScore}/{item.CommentCount}"); } } } }
private static void DoJob(bool isDay, string startTime, string endTime) { var watcher = new Stopwatch(); watcher.Start(); if ((string.IsNullOrEmpty(startTime) || string.IsNullOrEmpty(endTime)) && isDay) { Logger.Warn("配置时间读取失败"); return; } var start = 21000; if (isDay) { startTime = (DateTime.Now - TimeSpan.FromDays(3)).ToLocalTime().ToString("yyyy-MM-dd"); endTime = DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd"); start = 0; } var step = 1000; var commentCount = DalShopCommentSync.GetShopCommentCount(startTime, endTime); if (commentCount <= 0) { Logger.Warn("门店评论审核数据同步,待同步数据==>0条"); return; } Logger.Info($"门店评论审核数据同步,待同步数据==>{commentCount}条,共{(commentCount / step) + 1}批"); var sw = new Stopwatch(); while (start < commentCount) { try { sw.Start(); var commentIds = DalShopCommentSync.GetShopCommentId(startTime, endTime, start, step); start += step; foreach (var commentId in commentIds) { TuhuNotification.SendNotification("ShopCommentApproved", new Dictionary <string, object> { ["type"] = "shop", ["id"] = commentId }); Thread.Sleep(200); } sw.Stop(); Logger.Info( $"门店评论审核数据同步,第{(start / step) + 1}批数据,共{(commentCount / step) + 1}批数据,用时{sw.ElapsedMilliseconds}毫秒"); sw.Reset(); } catch (Exception ex) { Logger.Warn($"第{start / step + 1}批数据异常/{ex.Message}/{ex.InnerException}/{ex.Source}"); Thread.Sleep(20000); //start -= step; } } watcher.Stop(); Logger.Info($"门店评论审核数据同步结束,从{startTime}到{endTime},共{commentCount}条数据,用时{watcher.ElapsedMilliseconds}毫秒"); }
public void Execute(IJobExecutionContext context) { //分页读取门店信息 //分页获取美容团购订单,对已经统计过的产品-shopid,不在统计,对没统计过的产品,进行统计 //把统计的结果写入到 Tuhu_comment..ShopCommentStatistics try { logger.Info("开始执行"); int pageIndex = 1; int pageSize = 1000; int total = DalShopStatistics.GetShopsCount(); int pageTotal = (total - 1) / pageSize + 1; for (; pageIndex <= pageTotal; pageIndex++) { logger.Info($"门店页码 {pageIndex}/{pageTotal}"); var shops = DalShopStatistics.GetShopsPage(pageIndex, pageSize); shops.ForEach((item) => { //查询门店里的美容团购订单 int shopPageIndex = 1; int shopPageSize = 1000; int shopTotal = DalShopCommentSync.GetShopCommentOrderCount(item.PKID); int shopPageTotal = (shopTotal - 1) / shopPageSize + 1; for (; shopPageIndex <= shopPageTotal; shopPageIndex++) { logger.Info($"门店评论页码 shopId:{item.PKID} {shopPageIndex}/{shopPageTotal}"); var orders = DalShopCommentSync.GetShopCommentOrder(shopPageIndex, shopPageSize, item.PKID); var index = shopPageIndex; Parallel.ForEach(orders, new ParallelOptions() { MaxDegreeOfParallelism = 5 }, order => { //获取这个订单下的所有产品 var orderProducts = DalShopCommentSync.GetShopOrderProduct(order.OrderId); logger.Info($"门店评论页码 shopId:{item.PKID} {index}/{shopPageTotal} orderid:{order.OrderId}"); foreach (var product in orderProducts) { using (var client = CacheHelper.CreateCounterClient(typeof(ShopCommentStatisticsJob).FullName, TimeSpan.FromHours(12))) { var response = client.Increment(item.PKID + product.Pid); if (response.Success && response.Value > 1) { continue; } } //获取这个门店下这个产品对应的所有订单号 var productOrders = DalShopCommentSync.GetShopProductOrder(item.PKID, product.Pid); //根据这个产品的所有订单号统计评论的平均分,写入到这个产品下 var statistics = DalShopCommentSync.GetShopCommentStatistics(item.PKID, product.Pid, productOrders.Select(x => x.CommentId)); foreach (var s in statistics) { DalShopCommentSync.SyncShopCommentStatistics(s.ShopId, s); } } }); logger.Info($"门店评论页码 shopId:{item.PKID} {shopPageIndex}/{shopPageTotal} 执行结束"); } }); logger.Info($"门店页码 {pageIndex}/{pageTotal} 执行结束"); } using (var client = new ShopCommentClient()) { client.RefreshCommentStatisticsCache(2); } logger.Info("执行结束"); } catch (Exception e) { logger.Error("执行异常", e); } }
private static async Task <bool> BatchUpdate(int pageIndex, int pageSize, DateTime start, DateTime end) { List <ShopCommentDataModel> comments = DalShopCommentSync.GetShopCommentsPage(pageIndex, pageSize, start.ToString("yyyy-MM-dd"), end.AddDays(1).ToString("yyyy-MM-dd")).ToList(); #region 批量更新 //using (var client = new ShopCommentClient()) //{ // var result = client.BatchGetShopCommentType(comments.Select(p => p.OrderId).ToList()); // if (result.Success && result.Result.Any()) // { // Logger.Info($"更新门店评论的类型 BatchGetShopCommentType pageIndex ={pageIndex} 有效的 shoptype 数目 ={result.Result.Where(p => !string.IsNullOrWhiteSpace(p.ShopType)).Count()} time={result.ElapsedMilliseconds} "); // foreach (var item in comments) // { // try // { // if (result.Success && result.Result.Any()) // { // string ShopType = result.Result.Where(p => p.OrderId == item.OrderId).FirstOrDefault()?.ShopType; // if (!string.IsNullOrWhiteSpace(ShopType)) // { // if (DalShopCommentSync.UpdateShopCommentShopType(item.CommentId ?? 0, ShopType)) // { // //logger.Info($"更新门店评论的类型 更新 完成 CommentId={item.CommentId}& ShopType={ShopType}"); // } // else // { // Logger.Error($"更新门店评论的类型 UpdateShopCommentShopType 更新失败 CommentId={item.CommentId}& ShopType={ShopType} "); // } // } // else // { // //logger.Info($"更新门店评论的类型 BatchGetShopCommentType 更新 失败 CommentId={item.CommentId}& ShopType={ShopType}"); // } // } // } // catch (Exception ex) // { // Logger.Info($"更新门店评论的类型 BatchGetShopCommentType 更新 失败 CommentId={item.CommentId}& ex={ex.Message}"); // } // } // } // else // { // Logger.Info($"更新门店评论的类型 更新失败 BatchGetShopCommentType 异常 message={result.ErrorMessage} & count ={result.Result.Count()}"); // } //} #endregion List <ShopCommentShopTypeModel> models = new List <ShopCommentShopTypeModel>(); List <ShopCommentTypeRule> rules = await GetAllShopCommentTypeRules(); List <TaskOrderModel> results = await GetProductDetail(comments.Select(p => p.OrderId).ToList()); foreach (var item in results) { ShopCommentShopTypeModel model = new ShopCommentShopTypeModel() { OrderId = item.OrderId }; model.ShopType = CalCulateShopCommentType(item, rules); models.Add(model); } foreach (var item in comments) { try { string ShopType = models.Where(p => p.OrderId == item.OrderId).FirstOrDefault()?.ShopType; if (!string.IsNullOrWhiteSpace(ShopType)) { if (DalShopCommentSync.UpdateShopCommentShopType(item.CommentId ?? 0, ShopType)) { //logger.Info($"更新门店评论的类型 更新 完成 CommentId={item.CommentId}& ShopType={ShopType}"); } else { Logger.Error($"更新门店评论的类型 UpdateShopCommentShopType 更新失败 CommentId={item.CommentId}& ShopType={ShopType} "); } } else { //logger.Info($"更新门店评论的类型 BatchGetShopCommentType 更新 失败 CommentId={item.CommentId}& ShopType={ShopType}"); } } catch (Exception ex) { Logger.Info($"更新门店评论的类型 BatchGetShopCommentType 更新 失败 CommentId={item.CommentId}& ex={ex.Message}"); } } return(true); }