Пример #1
0
        /// <summary>
        /// 获得方正物流包裹信息
        /// </summary>
        public static List <ThirdOrderItemExpress> FangZheng_Logistics_Package(Guid OrderId)
        {
            var ReturnList = new List <ThirdOrderItemExpress>();

            FangZhengOrder.ObjectSet().Where(w => w.OrderId == OrderId)
            .ToList().ForEach(Item =>
            {
                var MyOrder = CommodityOrder.ObjectSet()
                              .Where(w => w.Id == Item.OrderId)
                              .FirstOrDefault();
                if (MyOrder != null)
                {
                    ReturnList.Add(new ThirdOrderItemExpress
                    {
                        OrderItemId = Item.OrderItemId,
                        ExpressNo   = MyOrder.ExpOrderNo
                    });
                }
            });
            return(ReturnList);
        }
Пример #2
0
        /// <summary>
        /// 方正订单提交异常补救
        /// </summary>
        public static void FangZheng_Order_ForJobs()
        {
            try
            {
                var            SubmitDate      = DateTime.Now.AddHours(-1);
                var            FangZhengAppIds = CustomConfig.FZAppIdList;
                ContextSession contextSession  = ContextFactory.CurrentThreadContext;
                //对提交失败的订单重新提交
                FangZhengOrder.ObjectSet().Where(w => w.SubTime < SubmitDate)
                .Where(w => w.OrderStatus == 400 || w.OrderStatus == 900 || w.OrderStatus == 0)
                .Select(s => s.OrderId).Distinct().ToList()
                .ForEach(Item =>
                {
                    if (CommodityOrder.ObjectSet().Where(w => w.Id == Item && w.PaymentTime.HasValue && w.State == 1).Count() > 0)
                    {
                        FangZheng_Order_Confirm(Item);
                    }
                });
                //获得方正订单产品的 SN码
                #region MyRegion
                //var StartTime = DateTime.Parse("2018-09-18");
                //CommodityOrder.ObjectSet().Where(w => w.SubTime > StartTime && w.ExpOrderNo == null &&
                //            w.PaymentTime.HasValue && FangZhengAppIds.Contains(w.AppId))
                //.ToList().ForEach(Item =>
                //{
                //    var ExpName = string.Empty;
                //    var ExoCode = string.Empty;
                //    var SnDir = new Dictionary<string, string>();

                //    var Result = FangZheng_Logistics_Status(Item.Id);
                //    if (Result["code"].ToString() == "200")
                //    {
                //        var ExpInfo = Result["data"]["logistics"].Children();
                //        ExpInfo.ToList().ForEach(model =>
                //        {
                //            if (!string.IsNullOrWhiteSpace(model["logisticsCompany"].ToString()))
                //                ExpName = model["logisticsCompany"].ToString();
                //            if (!string.IsNullOrWhiteSpace(model["logisticsOrderId"].ToString()))
                //                ExoCode = model["logisticsOrderId"].ToString();
                //        });
                //        ExpInfo["snInfo"].ToList().ForEach(model =>
                //        {
                //            var code = model.First["productCode"].ToString();
                //            var sn = string.Join(",", model.First["sn"]);
                //            SnDir.Add(code, sn);
                //        });
                //        Item.ShipExpCo = ExpName;
                //        Item.ExpOrderNo = ExoCode;
                //        OrderItem.ObjectSet().Where(w => w.CommodityOrderId == Item.Id)
                //        .ToList().ForEach(ItemChild =>
                //        {
                //            if (string.IsNullOrWhiteSpace(ItemChild.SNCode))
                //            {
                //                var SnStr = SnDir[ItemChild.JDCode];
                //                ItemChild.SNCode = SnStr;
                //            }
                //        });
                //        contextSession.SaveChange();
                //    }
                //});
                #endregion
                var StartTime  = DateTime.Parse("2018-09-18");
                var orderItems = (from a in OrderItem.ObjectSet()
                                  join b in CommodityOrder.ObjectSet() on a.CommodityOrderId equals b.Id
                                  where a.SubTime > StartTime && b.SubTime > StartTime &&
                                  (a.SNCode == null || b.ExpOrderNo == null) &&
                                  b.PaymentTime.HasValue && FangZhengAppIds.Contains(b.AppId)
                                  select new { orderItem = a, commodityOrder = b }).ToList();
                var orderIds = orderItems.Select(p => p.orderItem.CommodityOrderId).Distinct().ToList();
                orderIds.ForEach(p =>
                {
                    try
                    {
                        var IsDelivery = false;
                        var snDir      = new Dictionary <string, string>();
                        var Result     = FangZheng_Logistics_Status(p);
                        if (Result["code"].ToString() == "200")
                        {
                            Result["data"]["logistics"].Children()["snInfo"]
                            .ToList().ForEach(model =>
                            {
                                var code = model.First["productCode"].ToString();
                                var sn   = string.Join(",", model.First["sn"]);
                                snDir.Add(code, sn);
                            });
                            orderItems.Where(x => x.orderItem.CommodityOrderId == p)
                            .ToList().ForEach(x =>
                            {
                                if (snDir.ContainsKey(x.orderItem.JDCode))
                                {
                                    if (string.IsNullOrWhiteSpace(x.orderItem.SNCode))
                                    {
                                        x.orderItem.SNCode = snDir[x.orderItem.JDCode];
                                    }
                                    if (string.IsNullOrWhiteSpace(x.commodityOrder.ExpOrderNo))
                                    {
                                        Result["data"]["logistics"].Children()
                                        .ToList().ForEach(Item =>
                                        {
                                            if (!string.IsNullOrWhiteSpace(Item["logisticsCompany"].ToString()))
                                            {
                                                x.commodityOrder.ShipExpCo = Item["logisticsCompany"].ToString();
                                            }
                                            if (!string.IsNullOrWhiteSpace(Item["logisticsOrderId"].ToString()))
                                            {
                                                x.commodityOrder.ExpOrderNo = Item["logisticsOrderId"].ToString();
                                            }
                                        });
                                        IsDelivery = true;
                                    }
                                }
                            });
                            if (contextSession.SaveChange() >= 0)
                            {
                                //更改状态为已经发货
                                if (IsDelivery)
                                {
                                    var commodityorderfacade = new CommodityOrderFacade()
                                    {
                                        ContextDTO = AuthorizeHelper.CoinInitAuthorizeInfo()
                                    };
                                    var result = commodityorderfacade.UpdateCommodityOrder(
                                        new Jinher.AMP.BTP.Deploy.CommodityOrderDTO()
                                    {
                                        Id            = p,
                                        State         = 2,
                                        ShipmentsTime = DateTime.Now
                                    });
                                    if (result.ResultCode != 0)
                                    {
                                        LogHelper.Error("方正订单状态更改失败:OrderId" + p);
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        LogHelper.Error("方正电商接口请求异常:" + ex);
                    }
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error("方正电商Job-Exception:" + ex);
            }
        }
Пример #3
0
 private static void FangZheng_Order_Confirm(Guid MyOrderId)
 {
     Task.Factory.StartNew(() =>
     {
         var LogMessage         = string.Empty;
         CommodityOrder MyOrder = null;
         try
         {
             if (FangZhengOrder.ObjectSet().Where(w => w.OrderId == MyOrderId && w.OrderStatus == 200).Count() > 0)
             {
                 return;
             }
             MyOrder = CommodityOrder.ObjectSet().Where(w => w.Id == MyOrderId)
                       .Where(w => w.PaymentTime.HasValue)
                       .Where(w => w.State == 1)
                       .FirstOrDefault();
             if (MyOrder != null)
             {
                 Decimal OrderSumPrice = 0;
                 var CommodityList     = new List <object>();
                 OrderItem.ObjectSet().Where(w => w.CommodityOrderId == MyOrderId)
                 .ToList().ForEach(Item =>
                 {
                     if (Item.AppId != null)
                     {
                         var AppId = (Guid)Item.AppId;
                         if (ThirdECommerceHelper.IsFangZheng(AppId))
                         {
                             if (Item.CostPrice == null)
                             {
                                 throw new Exception("商品[" + Item.Name + "]价格为空!");
                             }
                             CommodityList.Add(new
                             {
                                 orderId         = Item.CommodityOrderId,
                                 orderEntryId    = Item.Id,
                                 productMapType  = 1,
                                 productCode     = Item.JDCode,
                                 productName     = Item.Name,
                                 productNum      = Item.Number,
                                 basePrice       = Item.CostPrice,
                                 realPrice       = Item.CostPrice,
                                 mallDiscountFee = 0,
                                 discountFee     = 0
                             });
                             OrderSumPrice += Item.Number * (decimal)Item.CostPrice;
                         }
                     }
                     else
                     {
                         throw new Exception("订单中商品AppId为空!");
                     }
                 });
                 if (CommodityList.Count > 0 && OrderSumPrice > 0)
                 {
                     var RequestTime   = TimeHelper.GetTimestampM();
                     var RequestParams = JsonConvert.SerializeObject(new
                     {
                         sign    = GetMd5(GetFangZhengInfo.Password + RequestTime + GetFangZhengInfo.ShopId),
                         shopId  = GetFangZhengInfo.ShopId,
                         reqTime = RequestTime,
                         data    = new
                         {
                             orderId          = MyOrder.Id,
                             orderStatus      = 1,
                             payTotalPrice    = OrderSumPrice,
                             totalPrice       = OrderSumPrice,
                             mallDiscountFee  = 0,
                             discountFee      = 0,
                             orderCreateTime  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                             remark           = MyOrder.Details,
                             orderEntryList   = CommodityList,
                             hasInvoice       = true,                 //是否要发票
                             invoiceTitle     = "中国石化销售有限公司北京石油分公司",  //发票抬头
                             invoiceTitleType = 1,                    //0:个人,1:企业
                             taxpayerNumber   = "911100008011253056", //企业识别号
                             invoiceEmail     = "*****@*****.**",    //用户收发票的邮箱
                             receiverinfo     = new
                             {
                                 receiverPhone    = "",
                                 receiverName     = MyOrder.ReceiptUserName,
                                 receiverMobile   = MyOrder.ReceiptPhone,
                                 receiverProvince = FangZheng_Order_Confirm("省", MyOrder),
                                 receiverCity     = FangZheng_Order_Confirm("市", MyOrder),
                                 receiverDistrct  = FangZheng_Order_Confirm("区", MyOrder),
                                 receiverCounty   = "",
                                 receiverAddress  = MyOrder.ReceiptAddress,
                                 receiverZip      = MyOrder.RecipientsZipCode
                             }
                         }
                     });
                     var ResponseData = SendRequest(GetFangZhengInfo.UrlBase + "/submitorder", RequestParams);
                     ContextSession contextSession = ContextFactory.CurrentThreadContext;
                     FangZhengOrder.ObjectSet().Where(w => w.OrderId == MyOrderId)
                     .ToList().ForEach(Item =>
                     {
                         int Code = Convert.ToInt32(ResponseData["code"]);
                         if (Code != 200)
                         {
                             LogMessage = Code + "-" + ResponseData["msg"].ToString();
                         }
                         Item.OrderStatus = Code;
                         Item.ModifiedOn  = DateTime.Now;
                         Item.EntityState = EntityState.Modified;
                         contextSession.SaveObject(Item);
                     });
                     contextSession.SaveChange();
                 }
                 else
                 {
                     throw new Exception("订单商品总价为0元!");
                 }
             }
             else
             {
                 throw new Exception("未查到易捷订单信息");
             }
         }
         catch (Exception ex)
         {
             LogMessage = ex.Message;
             LogHelper.Error("方正电商订单提交接口Exception:" + ex);
         }
         finally
         {
             if (!string.IsNullOrWhiteSpace(LogMessage))
             {
                 var LogInfo = new Jinher.AMP.BTP.Deploy.JdlogsDTO
                 {
                     Id                 = Guid.NewGuid(),
                     Content            = ",Exception:" + LogMessage,
                     SubTime            = DateTime.Now,
                     AppId              = MyOrder.AppId,
                     ThirdECommerceType = (int)ThirdECommerceTypeEnum.FangZheng
                 };
                 if (MyOrder == null)
                 {
                     LogInfo.Content = "订单主键:[" + MyOrderId + "]" + LogInfo.Content;
                 }
                 else
                 {
                     LogInfo.Content = "订单Code:[" + MyOrder.Code + "]" + LogInfo.Content;
                 }
                 new JdlogsFacade().SaveJdlogs(LogInfo);
             }
         }
     });
 }