private void DoJob()
        {
            var data = DalGroupBuying.GetExpiredUserList();

            if (data.Any())
            {
                using (var client = new OrderApiForCClient())
                {
                    foreach (var item in data)
                    {
                        var OrderData = client.FetchOrderByOrderId(item.OrderId);
                        var result    = OrderData.Success && OrderData.Result.Status == "7Canceled";
                        if (!result)
                        {
                            result = CancelPinTuanOrder(item.UserId, item.OrderId);
                        }
                        //if (result)
                        //{
                        //    var ChangeResult = DalGroupBuying.ChangeUserOrderStatus(item.OrderId);
                        //    if (ChangeResult == 0)
                        //    {
                        //        Logger.Warn($"修改拼团用户状态为订单取消失败/{item.OrderId}");
                        //    }
                        //}
                        if (!result)
                        {
                            Logger.Warn($"取消未付款订单{item.OrderId}失败");
                        }
                    }
                }
            }
        }
        private void DoJob()
        {
            var startTime = DateTime.Now.Date.AddDays(1);
            var endTime   = startTime.AddDays(1);
            var count     = DalGroupBuying.GetExpiringFreeCouponCount(startTime, endTime);

            if (count == 0)
            {
                Logger.Warn($"待过期的拼团免单券数量为{count}");
                return;
            }

            const int step  = 1000;
            var       start = 0;

            while (start < count)
            {
                var userList = DalGroupBuying.GetExpiringFreeCouponList(startTime, endTime, start, step);
                try
                {
                    PushMessage(2195, userList);
                    Logger.Info($"待过期拼团免单券推送成功,第{start / step + 1}批,共{count / step + 1}批");
                }
                catch (Exception ex)
                {
                    Logger.Warn(
                        $"待过期拼团免单券推送失败,第{start / step + 1}批,共{count / step + 1}批,{ex.Message}/{ex.InnerException}");
                }

                start += step;
            }
        }
Exemplo n.º 3
0
        private void DoJob()
        {
            var orderList = DalGroupBuying.GetOrderList();

            using (var client = new OrderOperationClient())
            {
                foreach (var item in orderList)
                {
                    var setResult = client.ExecuteOrderProcess(new ExecuteOrderProcessRequest
                    {
                        OrderId          = item.Item1,
                        CreateBy         = item.Item2.ToString("D"),
                        OrderProcessEnum = OrderProcessEnum.PinTuanSuccess
                    });
                    if (!setResult.Success)
                    {
                        Logger.Warn($"{item.Item1}出现异常", setResult.Exception);
                    }
                }
            }

            //var groupInfo = DalGroupBuying.GetCouponList();
            //foreach(var item in groupInfo)
            //{
            //    TuhuNotification.SendNotification("notification.GroupBuyingCreateCouponQueue",
            //        new Dictionary<string, object>
            //        {
            //            ["GroupId"] = item.Item1,
            //            ["ProductGroupId"] = item.Item2
            //        }, 10000);
            //}
        }
        private void DoJob()
        {
            const int step  = 10;
            var       start = 0;
            var       count = DalGroupBuying.GetGroupBuyingCount();

            Logger.Warn($"待刷新拼团数量为{count}个");
            while (start <= count)
            {
                var productGroupIds = DalGroupBuying.GetProductGroupList(start, step);
                if (productGroupIds.Any())
                {
                    using (var client = new PinTuanClient())
                    {
                        var result = client.UpdateGroupBuyingInfo(productGroupIds);
                        if (!(result.Success && result.Result))
                        {
                            Logger.Warn($"更新ES数据失败-->{result.Exception?.Message}");
                        }
                    }
                }

                start += step;
            }
        }
 public void DoJob()
 {
     using (var client = new PinTuanClient())
     {
         var result = client.RefreshCache();
         if (!(result.Success && result.Result.Code == 1))
         {
             Logger.Warn("刷新拼团首页模块数据失败");
         }
         var data = DalGroupBuying.GetAllPinTuanProduct();
         foreach (var item in data)
         {
             var resultItem = client.RefreshCache(item);
             if (!(result.Success && result.Result.Code == 1))
             {
                 Logger.Warn($"刷新拼团数据-->{item}--失败");
             }
         }
     }
     using (var client = new ShareBargainClient())
     {
         var result = client.RefreshShareBargainCache();
         if (!(result.Success && result.Result))
         {
             Logger.Warn("砍价首页模块数据失败");
         }
     }
 }
        private void DoJob()
        {
            var data = DalGroupBuying.GetExpiringGroupInfo();

            Logger.Info($"当前有{data.Count}个团处于拼团中状态");
            var span1 = TimeSpan.FromMinutes(160);
            var span2 = TimeSpan.FromMinutes(190);
            var span3 = TimeSpan.FromMinutes(50);
            var span4 = TimeSpan.FromMinutes(80);

            foreach (var item in data)
            {
                if (item.EndTime > DateTime.Now + span1 && item.EndTime < DateTime.Now + span2 &&
                    !GetExpiringCache(item.GroupId, 3))
                {
                    Logger.Info($"团号为{item.GroupId:D}拼团将在三个小时候结束,为相关用户推送提醒");
                    PushMessage(item.GroupId, 1651, 3);
                    SetExpiringCache(item.GroupId, 3);
                }

                else if (item.EndTime > DateTime.Now + span3 && item.EndTime < DateTime.Now + span4 &&
                         !GetExpiringCache(item.GroupId, 1))
                {
                    Logger.Info($"团号为{item.GroupId:D}拼团将在一个小时候结束,为相关用户推送提醒");
                    PushMessage(item.GroupId, 1651, 1);
                    SetExpiringCache(item.GroupId, 1);
                }

                else if (item.EndTime < DateTime.Now)
                {
                    using (var client = new PinTuanClient())
                    {
                        var pinTuanAutoFinishResult = client.PinTuanAutoFinish(new PinTuanAutoFinishRequest()
                        {
                            GroupId = item.GroupId
                        });
                        // 判断返回值
                        if (!pinTuanAutoFinishResult.Result)
                        {
                            var result = client.ExpireGroupBuying(item.GroupId);
                            if (result.Success && result.Result.Code == 1)
                            {
                                Logger.Info($"团{item.GroupId}过期,取消成功");
                            }
                            else
                            {
                                Logger.Warn($"团{item.GroupId}过期,取消失败,{result.Exception?.Message},{result.Result?.Info}");
                            }
                        }
                        else
                        {
                            Logger.Info($" GroupBuyingOrderJob -> DoJob -> {item.GroupId} auto finished ");
                        }
                    }
                }
            }
        }
        private void DoJob()
        {
            var data = DalGroupBuying.GetTerribleOrderList();

            if (data.Count < 1)
            {
                Logger.Warn("GroupBuyingCanceledJob==>待取消订单为O");
                return;
            }
            CanceledOrder(data);
        }
        private static void Exec()
        {
            // 1. GetNeedSendEmailMetadata
            var expiredInfo = DalGroupBuying.GetYiwuStockOutGroupBuyingInfo().ToList();

            expiredInfo.AddRange(DalGroupBuying.GetExpiredGroupBuyingInfo());
            expiredInfo.AddRange(GetNotExpiredRemindGroupBuyingInfos());

            // 2. SendEmail
            SendEmail(expiredInfo.Distinct(new ExpiredGroupBuyingInfoEqualityComparer()).ToArray());
        }
        /// <summary>
        /// 获取未过期要提醒的团信息
        /// </summary>
        /// <returns></returns>
        private static IEnumerable <ExpiredGroupBuyingInfo> GetNotExpiredRemindGroupBuyingInfos()
        {
            var preList = new List <ExpiredGroupBuyingInfo>();
            var list    = DalGroupBuying.GetActiveGroupBuyingInfo().ToList();

            using (var client = new ProductClient())
            {
                var result = client.SelectSkuProductListByPids(list.Select(_ => _.PID).Distinct().ToList());
                if (result.Success && result.Result.Any())
                {
                    foreach (var info in list)
                    {
                        info.IsActive = result.Result.FirstOrDefault(_ => _.Pid.Equals(info.PID))?.Onsale ?? false;
                    }
                }
            }
            using (var cacheClient = CacheHelper.CreateCacheClient())
            {
                var result = cacheClient.Get <List <ExpiredGroupBuyingInfo> >(PreGroupBuyingInfoCacheName);
                if (result.Success && result.Value?.FirstOrDefault() != null)
                {
                    preList.AddRange(result.Value);
                }
                else
                {
                    Logger.Warn($"获取缓存失败,{result.Message}", result.Exception);
                }
                cacheClient.Set(PreGroupBuyingInfoCacheName, list, TimeSpan.FromHours(24.2));
            }

            var infos = new List <ExpiredGroupBuyingInfo>();

            // 库存为0的情况
            foreach (var info in list.Where(_ => _.CurrentSoldCount >= _.TotalStockCount))
            {
                if (preList.Any(_ => _.TotalStockCount > _.CurrentSoldCount && _.ProductGroupId.Equals(info.ProductGroupId) && _.PID.Equals(info.PID)))
                {
                    info.TriggerType = "商品库存不足";
                    infos.Add(info);
                }
            }
            // 产品库商品下架
            foreach (var info in list.Where(_ => !_.IsActive))
            {
                if (preList.Any(_ => _.IsActive && _.ProductGroupId.Equals(info.ProductGroupId) && _.PID.Equals(info.PID)))
                {
                    info.TriggerType = "产品库商品下架";
                    infos.Add(info);
                }
            }
            return(infos);
        }
Exemplo n.º 10
0
        private void DoJob()
        {
            var data = DalGroupBuying.GetGroupInfo();

            foreach (var item in data)
            {
                TuhuNotification.SendNotification("notification.GroupBuyingCreateCouponQueue", new Dictionary <string, object>
                {
                    ["GroupId"]        = item.Item1,
                    ["ProductGroupId"] = item.Item2
                });
            }
        }
Exemplo n.º 11
0
        private void DoJob()
        {
            // 获取超时的订单
            var data = DalGroupBuying.GetExpiredUserList();

            if (data.Any())
            {
                using (var client = new OrderApiForCClient())
                    using (var clientPinTuna = new PinTuanClient())
                    {
                        foreach (var item in data)
                        {
                            var OrderData = client.FetchOrderByOrderId(item.OrderId);
                            var result    = OrderData.Success && OrderData.Result?.Status == "7Canceled";
                            if (!result && OrderData.Result != null)
                            {
                                //判断状态能不能取消
                                if (new[] { "0NewPingTuan", "0New" }.Contains(OrderData.Result.Status))
                                {
                                    result = CancelPinTuanOrder(item.UserId, item.OrderId);
                                }
                                else
                                {
                                    result = true;
                                    //调用补足服务,订单已取消 ,拼团状态未改变
                                    clientPinTuna.RepairPinTuanOrderStatus(new List <int> {
                                        item.OrderId
                                    });
                                }

                                Logger.Info($"当前订单:{item.OrderId} {OrderData.Result.Status} ");
                            }

                            //if (result)
                            //{
                            //    var ChangeResult = DalGroupBuying.ChangeUserOrderStatus(item.OrderId);
                            //    if (ChangeResult == 0)
                            //    {
                            //        Logger.Warn($"修改拼团用户状态为订单取消失败/{item.OrderId}");
                            //    }
                            //}
                            if (!result)
                            {
                                Logger.Warn($"取消未付款订单{item.OrderId}失败");
                            }
                        }
                    }
            }
        }
Exemplo n.º 12
0
        public void DoJob()
        {
            var orderList = (DalGroupBuying.GetPinTuanOrderList()).Distinct()?.ToList() ?? new List <int>();

            if (orderList.Any())
            {
                Logger.Warn($"查出{orderList.Count}个异常订单待补偿-->{string.Join("/", orderList)}");
                using (var client = new PinTuanClient())
                {
                    var result = client.RepairPinTuanOrderStatus(orderList);
                    if (result.Success && !string.IsNullOrWhiteSpace(result.Result.Info))
                    {
                        Logger.Info(result.Result.Info);
                        Email(result.Result.Info);
                    }
                    else
                    {
                        Logger.Error($"拼团异常订单处理失败-->{string.Join("/", orderList)}");
                    }
                }
            }
        }