Exemplo n.º 1
0
        /// <summary>
        /// 根据orderId获取订单信息
        /// </summary>
        public ResultDTO <CommodityOrderDTO> GetCommodityOrderExt(Guid orderId)
        {
            LogHelper.Debug("进入客服服务,调用根据orderId获取订单信息接口GetCommodityOrder:orderId:" + orderId);
            ResultDTO <CommodityOrderDTO> orderInfo = new ResultDTO <CommodityOrderDTO>()
            {
                isSuccess = false
            };

            try
            {
                CommodityOrderDTO orderDto = new CommodityOrderDTO();
                //获取订单实体对象
                CommodityOrder order = CommodityOrder.FindByID(orderId);
                //订单基本信息
                if (order != null && order.Id != Guid.Empty)
                {
                    orderDto.Id              = order.Id;
                    orderDto.Name            = order.Name;
                    orderDto.Code            = order.Code;
                    orderDto.SubId           = order.SubId;
                    orderDto.SubTime         = order.SubTime;
                    orderDto.UserId          = order.UserId;
                    orderDto.AppId           = order.AppId;
                    orderDto.State           = order.State;
                    orderDto.PaymentTime     = order.PaymentTime;
                    orderDto.ConfirmTime     = order.ConfirmTime;
                    orderDto.ShipmentsTime   = order.ShipmentsTime;
                    orderDto.ReceiptUserName = order.ReceiptUserName;
                    orderDto.ReceiptPhone    = order.ReceiptPhone;
                    orderDto.ReceiptAddress  = order.ReceiptAddress;
                    orderDto.Details         = order.Details;
                    orderDto.Payment         = order.Payment;
                    orderDto.MessageToBuyer  = order.MessageToBuyer;
                    orderDto.Province        = order.Province;
                    orderDto.City            = order.City;
                    orderDto.District        = order.District;
                    orderDto.Street          = order.Street;
                    orderDto.IsModifiedPrice = order.IsModifiedPrice;
                    orderDto.ModifiedOn      = order.ModifiedOn;
                    orderDto.ModifiedBy      = order.ModifiedBy;
                    orderDto.ModifiedId      = order.ModifiedId;
                    orderDto.PaymentState    = order.PaymentState;
                    orderDto.Price           = order.Price;
                    orderDto.RealPrice       = order.RealPrice;
                    orderInfo.isSuccess      = true;
                    orderInfo.Message        = "获取成功";
                    orderInfo.Data           = orderDto;
                }
                else
                {
                    orderInfo.isSuccess = false;
                    orderInfo.Message   = "获取失败";
                    orderInfo.Data      = null;
                }
            }
            catch (Exception ex)
            {
                orderInfo.Message = "获取异常";
                orderInfo.Data    = null;
                LogHelper.Error(string.Format("获取订单信息异常。orderId:{0}", orderId), ex);
            }
            return(orderInfo);
        }
Exemplo n.º 2
0
        /// <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"
            });
        }