/// <summary> /// 第三方电商获取订单项物流轨迹信息 /// </summary> /// <param name="orderItemId"></param> /// <returns></returns> public static ThirdOrderPackageExpress GetExpressInfo(Guid orderItemId) { if (orderItemId == Guid.Empty) { return(null); } try { var expressSku = ThirdECOrderPackageSku.ObjectSet().Where(p => p.OrderItemId == orderItemId).FirstOrDefault(); if (expressSku == null) { return(null); } var express = new ThirdOrderPackageExpress { ExpressCompany = expressSku.ExpressCompany, ExpressNo = expressSku.ExpressNo, ExpressTraceList = new List <ThirdExpressTrace>() }; ThirdECExpressTrace.ObjectSet().Where(p => p.OrderId == expressSku.OrderId && p.PackageId == expressSku.PackageId && p.ExpressCompany == expressSku.ExpressCompany && p.ExpressNo == expressSku.ExpressNo).ToList().ForEach(p => { express.ExpressTraceList.Add(new ThirdExpressTrace { Desc = p.Desc, Time = p.Time.ToString("yyyy-MM-dd HH:mm:ss") }); }); return(express); } catch (Exception ex) { LogHelper.Error(string.Format("ThirdECommerceOrderHelper.GetExpressInfo第三方电商获取订单项物流轨迹信息异常,入参:orderItemId={0}", orderItemId), ex); } return(null); }
/// <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" }); }