/// <summary>
        /// 第三方电商物流追踪信息回调
        /// </summary>
        /// <param name="expressJsonStr"></param>
        /// <returns></returns>
        public static ThirdResponse ExpressTraceCallback(string expressJsonStr)
        {
            LogHelper.Debug("ThirdECommerceOrderHelper.ExpressTraceCallback第三方电商物流追踪信息回调,Input:" + expressJsonStr);
            if (string.IsNullOrEmpty(expressJsonStr))
            {
                return new ThirdResponse {
                           Code = 10400, Msg = "缺少参数expressTrace"
                }
            }
            ;
            try
            {
                var expressResult = JsonConvert.DeserializeObject <ThirdOrderPackageExpress>(expressJsonStr);

                if (expressResult == null)
                {
                    return new ThirdResponse {
                               Code = 10401, Msg = "非法参数expressTrace"
                    }
                }
                ;
                Guid orderId;
                Guid.TryParse(expressResult.OrderId, out orderId);
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 10402, Msg = "非法参数OrderId"
                    }
                }
                ;
                if (string.IsNullOrEmpty(expressResult.ExpressCompany))
                {
                    return new ThirdResponse {
                               Code = 10403, Msg = "非法参数ExpressCompany"
                    }
                }
                ;
                if (string.IsNullOrEmpty(expressResult.ExpressNo))
                {
                    return new ThirdResponse {
                               Code = 10404, Msg = "非法参数ExpressNo"
                    }
                }
                ;
                if (expressResult.ExpressTraceList == null || expressResult.ExpressTraceList.Count == 0)
                {
                    return new ThirdResponse {
                               Code = 10405, Msg = "非法参数ExpressTraceList"
                    }
                }
                ;
                #region 判断是否第三方电商订单及获取订单信息
                var package = ThirdECOrderPackage.ObjectSet().FirstOrDefault(p => p.OrderId == orderId &&
                                                                             p.ExpressCompany == expressResult.ExpressCompany && p.ExpressNo == expressResult.ExpressNo);
                if (package == null)
                {
                    return new ThirdResponse {
                               Code = 10406, Msg = "未找到此包裹"
                    }
                }
                ;
                #endregion
                #region ThirdECExpressTrace
                var descFlag = false;
                var timeFlag = false;
                expressResult.ExpressTraceList.ForEach(trace =>
                {
                    DateTime traceTime;
                    DateTime.TryParse(trace.Time, out traceTime);
                    if (string.IsNullOrEmpty(trace.Desc))
                    {
                        descFlag = false; return;
                    }
                    else if (traceTime == DateTime.MinValue)
                    {
                        timeFlag = false; return;
                    }
                    var express = ThirdECExpressTrace.ObjectSet().FirstOrDefault(p => p.OrderId == orderId &&
                                                                                 p.ExpressCompany == expressResult.ExpressCompany && p.ExpressNo == expressResult.ExpressNo &&
                                                                                 p.Desc == trace.Desc && p.Time == traceTime);
                    if (express == null)
                    {
                        express = new ThirdECExpressTrace
                        {
                            Id             = Guid.NewGuid(),
                            OrderId        = package.OrderId,
                            OrderCode      = package.OrderCode,
                            PackageId      = package.Id,
                            ExpressCompany = package.ExpressCompany,
                            ExpressNo      = package.ExpressNo,
                            Time           = traceTime,
                            Desc           = trace.Desc,
                            EntityState    = EntityState.Added
                        };
                        ContextFactory.CurrentThreadContext.SaveObject(express);
                    }
                });
                if (descFlag)
                {
                    return new ThirdResponse {
                               Code = 10407, Msg = "非法参数ExpressTraceList"
                    }
                }
                ;
                if (timeFlag)
                {
                    return new ThirdResponse {
                               Code = 10408, Msg = "非法参数ExpressTraceList"
                    }
                }
                ;
                #endregion
                int count = ContextFactory.CurrentThreadContext.SaveChanges();
                if (count == 0)
                {
                    LogHelper.Error(string.Format("ThirdECommerceOrderHelper.ExpressTraceCallback第三方电商物流追踪信息回调失败,入参:{0}", expressJsonStr));

                    return(new ThirdResponse {
                        Code = 10409, Msg = "内部异常"
                    });
                }
            }
            catch (JsonReaderException ex)
            {
                LogHelper.Error("ThirdECommerceOrderHelper.ExpressTraceCallback第三方电商物流追踪信息回调反序列化异常,Input:" + expressJsonStr, ex);
                return(new ThirdResponse <ThirdOrderCancelResult> {
                    Msg = "反序列化异常"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("ThirdECommerceOrderHelper.ExpressTraceCallback第三方电商物流追踪信息回调异常,入参:{0}", expressJsonStr), ex);
                return(new ThirdResponse {
                    Code = 10410, Msg = "内部异常"
                });
            }
            return(new ThirdResponse {
                Code = 200, Msg = "ok"
            });
        }
        /// <summary>
        /// 第三方电商商品收货信息回调
        /// </summary>
        /// <param name="packageJsonStr"></param>
        /// <returns></returns>
        public static ThirdResponse ConfirmOrderCallback(string packageJsonStr)
        {
            LogHelper.Debug("ThirdECommerceOrderHelper.ConfirmOrderCallback第三方电商商品收货信息回调,Input:" + packageJsonStr);
            if (string.IsNullOrEmpty(packageJsonStr))
            {
                return new ThirdResponse {
                           Code = 10500, Msg = "缺少参数orderPackage"
                }
            }
            ;
            try
            {
                var packageResult = JsonConvert.DeserializeObject <ThirdOrderPackage>(packageJsonStr);

                if (packageResult == null)
                {
                    return new ThirdResponse {
                               Code = 10501, Msg = "非法参数orderPackage"
                    }
                }
                ;
                Guid orderId;
                Guid.TryParse(packageResult.OrderId, out orderId);
                DateTime confirmTime;
                DateTime.TryParse(packageResult.ConfirmTime, out confirmTime);
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 10502, Msg = "非法参数OrderId"
                    }
                }
                ;
                if (string.IsNullOrEmpty(packageResult.ExpressCompany))
                {
                    return new ThirdResponse {
                               Code = 10503, Msg = "非法参数ExpressCompany"
                    }
                }
                ;
                if (string.IsNullOrEmpty(packageResult.ExpressNo))
                {
                    return new ThirdResponse {
                               Code = 10504, Msg = "非法参数ExpressNo"
                    }
                }
                ;
                if (confirmTime == DateTime.MinValue)
                {
                    return new ThirdResponse {
                               Code = 10505, Msg = "非法参数ConfirmTime"
                    }
                }
                ;
                #region 判断是否第三方电商订单及获取订单信息
                var order = ThirdECOrder.ObjectSet().FirstOrDefault(o => o.OrderId == orderId);
                if (order == null)
                {
                    return new ThirdResponse {
                               Code = 10506, Msg = "未找到此订单"
                    }
                }
                ;
                #endregion
                #region ThirdECOrderPackage
                var package = ThirdECOrderPackage.ObjectSet().FirstOrDefault(p => p.OrderId == orderId &&
                                                                             p.ExpressCompany == packageResult.ExpressCompany && p.ExpressNo == packageResult.ExpressNo);
                if (package != null)
                {
                    package.ConfirmTime = confirmTime;
                }
                #endregion
                #region ThirdECOrderJournal
                var packageJournal = new ThirdECOrderJournal
                {
                    Id          = Guid.NewGuid(),
                    OrderId     = order.OrderId,
                    OrderCode   = order.OrderCode,
                    Name        = "订单商品收货",
                    Details     = packageResult.ExpressCompany + "|" + packageResult.ExpressNo,
                    Json        = packageJsonStr,
                    EntityState = EntityState.Added
                };
                ContextFactory.CurrentThreadContext.SaveObject(packageJournal);
                #endregion
                int count = ContextFactory.CurrentThreadContext.SaveChanges();
                if (count > 0)
                {
                    #region 订单所有商品收货后更新订单状态到已收货

                    #endregion
                }
                else
                {
                    LogHelper.Error(string.Format("ThirdECommerceOrderHelper.ConfirmOrderCallback第三方电商商品收货信息回调失败,入参:{0}", packageJsonStr));
                    return(new ThirdResponse {
                        Code = 10507, Msg = "内部异常"
                    });
                }
            }
            catch (JsonReaderException ex)
            {
                LogHelper.Error("ThirdECommerceOrderHelper.ConfirmOrderCallback第三方电商商品收货信息回调反序列化异常,Input:" + packageJsonStr, ex);
                return(new ThirdResponse <ThirdOrderCancelResult> {
                    Msg = "反序列化异常"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("ThirdECommerceOrderHelper.ConfirmOrderCallback第三方电商商品收货信息回调异常,入参:{0}", packageJsonStr), ex);
                return(new ThirdResponse {
                    Code = 10508, Msg = "内部异常"
                });
            }
            return(new ThirdResponse {
                Code = 200, Msg = "ok"
            });
        }

        #endregion
    }
        /// <summary>
        /// 第三方电商商品发货信息回调
        /// </summary>
        /// <param name="result"></param>
        public static ThirdResponse DeliverOrderCallback(string packageJsonStr)
        {
            LogHelper.Debug("ThirdECommerceOrderHelper.DeliverOrderCallback第三方电商商品发货信息回调,Input:" + packageJsonStr);
            if (string.IsNullOrEmpty(packageJsonStr))
            {
                return new ThirdResponse {
                           Code = 10300, Msg = "缺少参数orderPackage"
                }
            }
            ;
            try
            {
                var packageResult = JsonConvert.DeserializeObject <ThirdOrderPackage>(packageJsonStr);

                if (packageResult == null)
                {
                    return new ThirdResponse {
                               Code = 10301, Msg = "非法参数orderPackage"
                    }
                }
                ;
                Guid orderId;
                Guid.TryParse(packageResult.OrderId, out orderId);
                DateTime expCreateTime;
                DateTime.TryParse(packageResult.ExpCreateTime, out expCreateTime);
                if (orderId == Guid.Empty)
                {
                    return new ThirdResponse {
                               Code = 10302, Msg = "非法参数OrderId"
                    }
                }
                ;
                if (string.IsNullOrEmpty(packageResult.ExpressCompany))
                {
                    return new ThirdResponse {
                               Code = 10303, Msg = "非法参数ExpressCompany"
                    }
                }
                ;
                if (string.IsNullOrEmpty(packageResult.ExpressNo))
                {
                    return new ThirdResponse {
                               Code = 10304, Msg = "非法参数ExpressNo"
                    }
                }
                ;
                if (packageResult.SkuIdList == null || packageResult.SkuIdList.Count == 0)
                {
                    return new ThirdResponse {
                               Code = 10305, Msg = "非法参数SkuIdList"
                    }
                }
                ;
                if (expCreateTime == DateTime.MinValue)
                {
                    return new ThirdResponse {
                               Code = 10306, Msg = "非法参数ExpCreateTime"
                    }
                }
                ;
                #region 判断是否第三方电商订单及获取订单信息
                var order = ThirdECOrder.ObjectSet().FirstOrDefault(o => o.OrderId == orderId);
                if (order == null)
                {
                    return new ThirdResponse {
                               Code = 10307, Msg = "未找到此订单"
                    }
                }
                ;
                var orderItemList = OrderItem.ObjectSet()
                                    .Where(p => p.CommodityOrderId == orderId)
                                    .Select(p => new
                {
                    SkuId       = p.JDCode,
                    OrderItemId = p.Id,
                    p.CommodityId,
                    CommodityStockId = p.CommodityStockId ?? Guid.Empty,
                }).ToList();
                if (orderItemList.Count == 0)
                {
                    return new ThirdResponse {
                               Code = 10308, Msg = "未找到订单sku"
                    }
                }
                ;
                #endregion
                #region ThirdECOrderPackage和ThirdECOrderPackageSku
                var package = ThirdECOrderPackage.ObjectSet().FirstOrDefault(p => p.OrderId == orderId &&
                                                                             p.ExpressCompany == packageResult.ExpressCompany && p.ExpressNo == packageResult.ExpressNo);
                if (package == null)
                {
                    package = new ThirdECOrderPackage
                    {
                        Id             = Guid.NewGuid(),
                        OrderId        = order.OrderId,
                        OrderCode      = order.OrderCode,
                        ExpressCompany = packageResult.ExpressCompany,
                        ExpressNo      = packageResult.ExpressNo,
                        ExpCreateTime  = DateTime.Parse(packageResult.ExpCreateTime),
                        EntityState    = EntityState.Added
                    };

                    ContextFactory.CurrentThreadContext.SaveObject(package);
                    packageResult.SkuIdList.ForEach(skuId =>
                    {
                        var orderItem = orderItemList.FirstOrDefault(p => p.SkuId == skuId);
                        if (orderItem == null)
                        {
                            return;
                        }
                        var packageSku = new ThirdECOrderPackageSku
                        {
                            Id               = Guid.NewGuid(),
                            OrderId          = order.OrderId,
                            OrderCode        = order.OrderCode,
                            OrderItemId      = orderItem.OrderItemId,
                            CommodityId      = orderItem.CommodityId,
                            CommodityStockId = orderItem.CommodityStockId,
                            PackageId        = package.Id,
                            SkuId            = skuId,
                            ExpressCompany   = packageResult.ExpressCompany,
                            ExpressNo        = packageResult.ExpressNo,
                            EntityState      = EntityState.Added
                        };
                        ContextFactory.CurrentThreadContext.SaveObject(packageSku);
                    });
                }
                #endregion
                #region ThirdECOrderJournal
                var packageJournal = new ThirdECOrderJournal
                {
                    Id          = Guid.NewGuid(),
                    OrderId     = order.OrderId,
                    OrderCode   = order.OrderCode,
                    Name        = "订单商品发货",
                    Details     = packageResult.ExpressCompany + "|" + packageResult.ExpressNo,
                    Json        = packageJsonStr,
                    EntityState = EntityState.Added
                };
                ContextFactory.CurrentThreadContext.SaveObject(packageJournal);
                #endregion
                int count = ContextFactory.CurrentThreadContext.SaveChanges();
                if (count > 0)
                {
                    #region 订单所有商品发货后更新订单状态到已发货
                    if (ThirdECOrderPackageSku.ObjectSet().Count(p => p.OrderId == orderId) >= orderItemList.Select(x => x.SkuId).Distinct().Count())
                    {
                        var commodityOrder = new CommodityOrderDTO();
                        commodityOrder.Id            = orderId;
                        commodityOrder.State         = 2;
                        commodityOrder.ShipmentsTime = DateTime.Now;
                        var facade = new CommodityOrderFacade();
                        facade.ContextDTO = AuthorizeHelper.CoinInitAuthorizeInfo();
                        facade.UpdateCommodityOrder(commodityOrder);
                    }
                    #endregion
                }
                else
                {
                    LogHelper.Error(string.Format("ThirdECommerceOrderHelper.DeliverOrderCallback第三方电商商品发货信息回调失败,入参:{0}", packageJsonStr));
                    return(new ThirdResponse {
                        Code = 10309, Msg = "内部异常"
                    });
                }
            }
            catch (JsonReaderException ex)
            {
                LogHelper.Error("ThirdECommerceOrderHelper.DeliverOrderCallback第三方电商商品发货信息回调反序列化异常,Input:" + packageJsonStr, ex);
                return(new ThirdResponse <ThirdOrderCancelResult> {
                    Msg = "反序列化异常"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("ThirdECommerceOrderHelper.DeliverOrderCallback第三方电商商品发货信息回调异常,入参:{0}", packageJsonStr), ex);
                return(new ThirdResponse {
                    Code = 10310, Msg = "内部异常"
                });
            }
            return(new ThirdResponse {
                Code = 200, Msg = "ok"
            });
        }