/// <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" }); }