Ejemplo n.º 1
0
 public static void LegworkUserTopPay(long orderID)
 {
     try
     {
         var orderModel = OrderServices.GetLegworkOrder(orderID);
         var workModel  = UserServices.GetWorkerAccount(orderModel.WorkerID.HasValue ? orderModel.WorkerID.Value : 0);
         //购买物品为已完成
         if (orderModel.OrderType == (int)LegworkOrderType.BuyGoods)
         {
             var PushCode  = workModel?.PushCode;
             var userModel = UserServices.GetUserModel(orderModel.UserID);
             var pushRedis = PushSettingFactory.Settings[PushType.LegworkUserTopPay];
             if (null != orderModel)
             {
                 if (null != pushRedis)
                 {
                     var msgContent = new PaymentCompletePushContent()
                     {
                         OrderID    = orderModel.OrderID,
                         OrderCode  = orderModel.OrderCode,
                         PushCode   = PushCode,
                         UserName   = userModel.Username,
                         Amount     = orderModel.ActualAmount,
                         CreateTime = orderModel.SubmitTime,
                     };
                     pushRedis.Database.ListRightPush <PaymentCompletePushContent>(pushRedis.Key, msgContent);
                 }
             }
         }
         else
         {
             //去送物品为待取货
             var PushCode  = workModel?.PushCode;
             var pushRedis = PushSettingFactory.Settings[PushType.LegworkUserConfirmOrder];
             if (null != orderModel)
             {
                 if (null != pushRedis)
                 {
                     var msgContent = new OrderConfirmPushContent()
                     {
                         OrderID     = orderModel.OrderID,
                         CreateTime  = orderModel.SubmitTime,
                         OrderCode   = orderModel.OrderCode,
                         PushCode    = PushCode,
                         OrderStatus = orderModel.Status,
                     };
                     pushRedis.Database.ListRightPush <OrderConfirmPushContent>(pushRedis.Key, msgContent);
                 }
             }
         }
     }
     catch
     {
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 执行
        /// </summary>
        public override void Execute()
        {
            var ServiceTime = DateTime.Now;

            while (true)
            {
                try
                {
                    //从预约订单推送消息数据链表左边起获取一条数据
                    PaymentCompletePushContent content = RedisDB.ListLeftPop <PaymentCompletePushContent>(LegworkConfig.RedisKey.LegworkUserTopPay);

                    //不存在,则休眠1秒钟,避免CPU空转
                    if (null == content)
                    {
                        Thread.Sleep(100);
                        continue;
                    }

                    //获取预约订单推送接口配置信息
                    var apiConfig = PushApiConfigManager.GetApiConfig(SysEnums.PushType.LegworkUserTopPay);

                    if (null == apiConfig)
                    {
                        continue;
                    }

                    //将订单数据转换成为字典以便参与接口加密
                    var dic = content.ToMap();

                    if (apiConfig.Method == "get")
                    {
                        DefaultClient.DoGet(apiConfig.Url, dic, PushApiConfigManager.Config.ModuleID, PushApiConfigManager.Config.Secret);
                    }
                    else if (apiConfig.Method == "post")
                    {
                        DefaultClient.DoPost(apiConfig.Url, dic, PushApiConfigManager.Config.ModuleID, PushApiConfigManager.Config.Secret);
                        ExceptionLoger loger = new ExceptionLoger(@"/logs/Sccess" + DateTime.Now.ToString("yyyyMMdd") + ".txt");
                        loger.Success("用户线上支付成功,推送给工作端送时", "推送结果:订单编号为“" + content.OrderCode + "”");
                    }
                }
                catch (Exception ex)
                {
                    if (ServiceTime.AddHours(1) <= DateTime.Now)
                    {
                        ServiceTime = DateTime.Now;
                        //异常处理
                        ExceptionLoger loger = new ExceptionLoger(@"/logs/Error" + DateTime.Now.ToString("yyyyMMdd") + ".txt");
                        loger.Write("用户线上支付成功,推送给工作端送时异常", ex);
                    }
                    Thread.Sleep(100);
                    continue;
                }
            }
        }