Example #1
0
        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
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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}毫秒");
        }
Example #6
0
        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);
        }