/// <summary> /// 根据ExpRouteId删除物流详细信息 /// </summary> /// <returns></returns> public ResultDTO DelExpressTraceExt(Guid ExpRouteId) { ResultDTO dto = null; try { ContextSession contextSession = ContextFactory.CurrentThreadContext; var expressTrace = ExpressTrace.ObjectSet().Where(p => p.ExpRouteId == ExpRouteId).ToList(); if (expressTrace.Count() > 0) { foreach (var item in expressTrace) { item.EntityState = EntityState.Deleted; contextSession.Delete(item); } contextSession.SaveChanges(); } dto = new ResultDTO() { ResultCode = 0, Message = "删除物流信息成功", isSuccess = true }; } catch (Exception ex) { LogHelper.Error(string.Format("佣金信息删除异常。MallApply:{0}", ex.Message)); dto = new ResultDTO() { ResultCode = 1, Message = ex.Message, isSuccess = false }; } return(dto); }
/// <summary> /// 保存物流详细信息 /// </summary> /// <returns></returns> public ResultDTO SaveExpressTraceListExt(List <ExpressTraceDTO> list) { ResultDTO dto = null; try { ContextSession contextSession = ContextFactory.CurrentThreadContext; if (list.Count() > 0) { foreach (var item in list) { ExpressTrace model = new ExpressTrace(); model.Id = item.Id; model.ExpRouteId = item.ExpRouteId; model.AcceptTime = item.AcceptTime; model.AcceptStation = item.AcceptStation; model.Remark = item.Remark; model.EntityState = EntityState.Added; contextSession.SaveObject(model); } } contextSession.SaveChanges(); dto = new ResultDTO { ResultCode = 0, Message = "保存成功", isSuccess = true }; } catch (Exception ex) { LogHelper.Error(string.Format("佣金信息保存异常。ExpressTrace:{0}", ex.Message)); dto = new ResultDTO { ResultCode = 1, Message = ex.Message, isSuccess = false }; } return(dto); }
/// <summary> /// 根据ExpRouteId查询物流详细信息 /// </summary> /// <param name="search">查询类</param> /// <returns>结果</returns> public List <ExpressTraceDTO> GetExpressTraceListExt(ExpressTraceDTO search) { var expressTracelist = ExpressTrace.ObjectSet().ToList(); if (search.ExpRouteId != Guid.Empty) { expressTracelist = expressTracelist.Where(p => p.ExpRouteId == search.ExpRouteId).ToList(); } List <ExpressTraceDTO> searchlist = new List <ExpressTraceDTO>(); if (expressTracelist.Count() > 0) { foreach (var item in expressTracelist) { ExpressTraceDTO model = new ExpressTraceDTO(); model.Id = item.Id; model.ExpRouteId = item.ExpRouteId; model.AcceptTime = item.AcceptTime; model.AcceptStation = item.AcceptStation; model.Remark = item.Remark; searchlist.Add(model); } } return(searchlist); }
/// <summary> /// 删除极光物流数据信息 /// </summary> private ResultDTO DeleteExpressTrace(Guid orderExpressRouteId) { ResultDTO dto = null; try { string sql = " delete from ExpressTrace where ExpRouteId='" + orderExpressRouteId + "'"; ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sql); dto = new ResultDTO() { ResultCode = 0, Message = "删除成功", isSuccess = true }; } catch (Exception ex) { LogHelper.Debug(string.Format("OTMSJob删除急速物流异常信息:{0}", ex)); dto = new ResultDTO() { ResultCode = 1, Message = ex.Message, isSuccess = false }; } return(dto); }
/// <summary> /// 获取用户最新的所有订单的物流信息 /// 查询前三条数据 /// </summary> /// <param name="AppId"></param> /// <param name="Userid"></param> /// <returns></returns> public ResultDTO <ListResult <ComOrderExpressNew> > GetUserAllNewOrderExpressExt(Guid AppId, Guid Userid) { ListResult <ComOrderExpressNew> expressNews = new ListResult <ComOrderExpressNew>(); expressNews.List = new List <ComOrderExpressNew>(); ResultDTO <ListResult <ComOrderExpressNew> > result = new ResultDTO <ListResult <ComOrderExpressNew> >() { isSuccess = false, ResultCode = 1, Data = expressNews }; string json = string.Empty; JObject obj = null; try { LogHelper.Info("【三条---京东】京东物流[开始调用]AppId=" + AppId + " Userid=" + Userid + ""); //获取已发货的订单信息 //var comOrders = CommodityOrder.ObjectSet().Where(p => p.State == 2 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).ToList(); var comOrders = CommodityOrder.ObjectSet().Where(p => p.State != 0 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).Take(3).ToList(); LogHelper.Info("【三条---京东】京东物流comOrders-->[" + comOrders.Count() + "]"); if (comOrders != null) { List <ExpressTrace> expressList = null; ComOrderExpressNew expressNew = null; foreach (var order in comOrders.ToList()) { expressList = new List <ExpressTrace>(); expressNew = new ComOrderExpressNew(); var OrderItemInfo = OrderItem.ObjectSet().Where(p => p.CommodityOrderId == order.Id).FirstOrDefault(); expressNew.CommodityOrderId = order.Id; //订单id expressNew.Pic = OrderItemInfo.PicturesPath; //首条订单图片 //京东信息 var commodityOrderId = order.Id.ToString(); if (ThirdECommerceHelper.IsJingDongDaKeHu(order.AppId)) { //var jdOrderitem = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId)); var query = JdOrderItem.ObjectSet().Where(p => p.CommodityOrderId.Contains(commodityOrderId)); //去重后的父单集合 var jdOrderList = query.Select(p => new { p.JdOrderId }).GroupBy(p => p.JdOrderId).ToList(); if (jdOrderList.Any()) { jdOrderList.ForEach(p => { var jdwuliu = JdHelper.orderTrack(p.Key); LogHelper.Info("【三条---京东】京东物流====返回-->[" + jdwuliu + "]"); if (jdwuliu != null) { JArray objson = JArray.Parse(jdwuliu); foreach (var item in objson) { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = DateTime.Parse(item["msgTime"].ToString()); Express.AcceptStation = item["content"].ToString().Trim(); expressList.Add(Express); } AddExpressNewAll(expressNews, expressList, expressNew, "京东"); } }); } } else if (ThirdECommerceHelper.IsWangYiYanXuan(order.AppId))//网易严选或第三方电商 { var orderItem = OrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId == order.Id); var express = ThirdECommerceHelper.GetOrderItemExpressTrace(order.AppId, orderItem.Id); LogHelper.Info("【三条---严选】网易严选物流-->[" + JsonHelper.JsonSerializer(express) + "]"); if (express != null) { if (express.ExpressTraceList != null && express.ExpressTraceList.Count > 0) { express.ExpressTraceList.ForEach(p => { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = p.Time == null ? DateTime.Now : DateTime.Parse(p.Time); Express.AcceptStation = p.Desc; expressList.Add(Express); }); string name = "严选"; var yxExpress = YXExpressTrace.ObjectSet().Where(p => p.OrderId == order.Id).FirstOrDefault(); if (yxExpress != null) { name = yxExpress.ExpressCompany; } AddExpressNewAll(expressNews, expressList, expressNew, name); } } } else if (ThirdECommerceHelper.IsSuNingYiGou(order.AppId))//苏宁店铺 { var snOrderitem = SNOrderItem.ObjectSet().FirstOrDefault(p => p.OrderId == order.Id); SNExpressTraceFacade snExpress = new SNExpressTraceFacade(); var SuningWuliu = snExpress.GetExpressTrace(order.Id.ToString(), snOrderitem.OrderItemId.ToString()); LogHelper.Info("【三条---苏宁】苏宁物流[" + order.Id.ToString() + "," + snOrderitem.OrderItemId.ToString() + "]===返回-->[" + JsonHelper.JsonSerializer(SuningWuliu) + "]"); if (SuningWuliu != null) { SuningWuliu.ForEach(p => { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = p.OperateTime == null ? DateTime.Now : p.OperateTime.Value; Express.AcceptStation = p.OperateState; expressList.Add(Express); }); AddExpressNewAll(expressNews, expressList, expressNew, "苏宁"); } } else if (ThirdECommerceHelper.IsFangZheng(order.AppId))//方正店铺 { var FangZhengWuliu = FangZhengSV.FangZheng_Logistics_InfoList(order.Id); LogHelper.Info("【三条---方正】方正物流[" + commodityOrderId + "]===返回-->[" + JsonHelper.JsonSerializer(FangZhengWuliu) + "]"); if (FangZhengWuliu != null) { FangZhengWuliu.ExpressTraceList.ForEach(p => { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = DateTime.Parse(p.Time); Express.AcceptStation = p.Desc; expressList.Add(Express); }); AddExpressNewAll(expressNews, expressList, expressNew, "方正"); } } else { if (order.ExpOrderNo != null) { json = Express100SV.GetExpressFromKD100(order.ExpOrderNo, order.ShipExpCo); obj = JObject.Parse(json); LogHelper.Info(string.Format("【三条---快递100】快递100:订单Id:{0},物流信息:{1}", order.Id, obj)); if (obj["message"].ToString().ToLower().Equals("ok")) { JToken arr = obj["data"]; foreach (var item in arr) { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = Convert.ToDateTime(item["ftime"].ToString()); Express.AcceptStation = item["context"].ToString().Trim(); expressList.Add(Express); } LogHelper.Info(string.Format("【三条---快递100】arr[{0}]--->expressList[{1}]", arr.Count(), expressList.Count)); //快递单当前签收状态,包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态,其中4-7需要另外开通才有效 int deliverystatus = Convert.ToInt32(obj["state"].ToString()); LogHelper.Info("【三条---快递100】deliverystatus-->[" + deliverystatus + "]"); if (deliverystatus == 0) { expressNew.shipmentsTime = expressList.Min(p => p.AcceptTime); expressNew.state = "已发货"; expressNew.Remarked = "您的订单已发货,由" + order.ShipExpCo + "快递配送,请注意物流信息~"; expressNews.List.Add(expressNew); } else if (deliverystatus == 5) { expressNew.shipmentsTime = expressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime; expressNew.state = "派件中"; expressNew.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~"; expressNews.List.Add(expressNew); } else if (deliverystatus == 3) { expressNew.shipmentsTime = expressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime; expressNew.state = "已签收"; expressNew.Remarked = "您的订单已签收"; expressNews.List.Add(expressNew); } else { continue; } } } } } expressNews.Count = expressNews.List == null ? 0 : expressNews.List.Count(); if (expressNews.List.Any()) { ListResult <ComOrderExpressNew> express = new ListResult <ComOrderExpressNew>(); express.List = new List <ComOrderExpressNew>(); express.List = expressNews.List.Take(3).ToList(); //取前三条 result.Data = express; result.isSuccess = true; result.ResultCode = 0; } else { result.Data = expressNews; result.isSuccess = false; result.ResultCode = 1; } LogHelper.Info(string.Format("获取用户最新的所有订单物流信息返回数据:{0}", JsonHelper.JsonSerializer(result))); return(result); } else { return(result); } } catch (Exception ex) { LogHelper.Error(string.Format("获取用户最新的所有订单物流信息信息异常,异常信息:{0}", ex)); return(result); } }
/// <summary> /// 获取用户最新的订单物流信息 /// 查询第一条数据 /// </summary> public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.Commodity.ComOrderExpressNew> GetUserNewOrderExpressExt(System.Guid AppId, System.Guid Userid) { LogHelper.Info("【一条物流】====AppId-->[" + AppId + "]--->UserId=[" + Userid + "]"); ComOrderExpressNew ExpressNews = new ComOrderExpressNew(); ResultDTO <ComOrderExpressNew> result = new ResultDTO <ComOrderExpressNew>() { ResultCode = 1, isSuccess = false, Data = ExpressNews }; string json = null; JObject obj = null; try { //获取已发货的订单信息 var ComOrder = CommodityOrder.ObjectSet().Where(p => p.State == 2 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).FirstOrDefault(); if (ComOrder != null) { List <ExpressTrace> ExpressList = new List <ExpressTrace>(); var OrderItemInfo = OrderItem.ObjectSet().Where(p => p.CommodityOrderId == ComOrder.Id).FirstOrDefault(); ExpressNews.CommodityOrderId = ComOrder.Id; //订单id ExpressNews.Pic = OrderItemInfo.PicturesPath; //首条订单图片 //京东信息 var commodityOrderId = ComOrder.Id; /* * var jdOrderitem = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId)); * LogHelper.Debug(string.Format("物流信息(订单信息),订单id{0}:", ComOrder.Id)); * //急速数据信息 * if (!string.IsNullOrWhiteSpace(ComOrder.ExpOrderNo) && jdOrderitem == null) * { * //根据快递编号获取急速数据信息 * json = GetWuliuJson(ComOrder.ExpOrderNo); * obj = JObject.Parse(json); * LogHelper.Info(string.Format("极速物流信息:订单Id:{0},物流信息:{1}", ComOrder.Id, obj)); * if (Convert.ToInt32(obj["status"]) != 0) * { * return result; * } * JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString()); * foreach (var item in arr) * { * ExpressTrace Express = new ExpressTrace(); * Express.AcceptTime = Convert.ToDateTime(item["time"].ToString()); * Express.AcceptStation = item["status"].ToString().Trim(); * ExpressList.Add(Express); * } * * if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 1) * { * ExpressNews.shipmentsTime = ExpressList.Min(p => p.AcceptTime); * ExpressNews.state = "已发货"; * ExpressNews.Remarked = "您的订单已发货,由" + ComOrder.ShipExpCo + "快递配送,请注意物流信息~"; * result.ResultCode = 0; * result.isSuccess = true; * } * else if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 2) * { * ExpressNews.shipmentsTime = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime; * ExpressNews.state = "派件中"; * ExpressNews.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~"; * result.ResultCode = 0; * result.isSuccess = true; * } * else * { * result.ResultCode = 1; * result.isSuccess = false; * } * } * else * { * if (jdOrderitem != null) * { * var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId); * if (jdwuliu != null) * { * JArray objson = JArray.Parse(jdwuliu); * foreach (var item in objson) * { * ExpressTrace Express = new ExpressTrace(); * Express.AcceptTime = DateTime.Parse(item["msgTime"].ToString()); * Express.AcceptStation = item["content"].ToString().Trim(); * ExpressList.Add(Express); * } * var NewExpress = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault(); * if (NewExpress.AcceptStation.Contains("正在配送") || NewExpress.AcceptStation.Contains("自提")) * { * ExpressNews.shipmentsTime = NewExpress.AcceptTime; * ExpressNews.state = "派件中"; * ExpressNews.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~"; * result.ResultCode = 0; * result.isSuccess = true; * } * else if (NewExpress.AcceptStation.Contains("已签收")) * { * result.ResultCode = 1; * result.isSuccess = false; * } * else if (NewExpress.AcceptStation.Contains("出库") || NewExpress != null) * { * ExpressNews.shipmentsTime = ExpressList.Min(p => p.AcceptTime); * ExpressNews.state = "已发货"; * ExpressNews.Remarked = "您的订单已发货,由京东快递配送,请注意物流信息~"; * result.ResultCode = 0; * result.isSuccess = true; * } * } * } * }*/ if (ThirdECommerceHelper.IsJingDongDaKeHu(ComOrder.AppId)) { string orderId = commodityOrderId.ToString().ToLower(); LogHelper.Info("IsJingDongDaKeHu1--->" + orderId); var jdOrderitem = JdOrderItem.ObjectSet().Where(p => p.CommodityOrderId.ToLower() == orderId).FirstOrDefault(); LogHelper.Info("IsJingDongDaKeHu2--->" + orderId); if (jdOrderitem != null) { LogHelper.Info("IsJingDongDaKeHu3--->" + orderId); var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId); LogHelper.Info("【一条---京东】京东物流[" + JsonHelper.JsonSerializer(jdOrderitem) + "]====返回-->[" + jdwuliu + "]"); if (jdwuliu != null) { JArray objson = JArray.Parse(jdwuliu); foreach (var item in objson) { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = DateTime.Parse(item["msgTime"].ToString()); Express.AcceptStation = item["content"].ToString().Trim(); ExpressList.Add(Express); } AddExpressNew(ExpressList, ExpressNews, result); } } } else if (ThirdECommerceHelper.IsWangYiYanXuan(ComOrder.AppId))//网易严选或第三方电商 { var yxOrder = YXOrder.ObjectSet().FirstOrDefault(p => p.OrderId == commodityOrderId); if (yxOrder != null) { var express = ThirdECommerceHelper.GetOrderItemExpressTrace(AppId, yxOrder.Id); LogHelper.Info("【一条---严选】网易严选物流[" + JsonHelper.JsonSerializer(yxOrder) + "]===返回-->[" + JsonHelper.JsonSerializer(express) + "]"); if (express != null) { if (express.ExpressTraceList != null && express.ExpressTraceList.Count > 0) { express.ExpressTraceList.ForEach(p => { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = p.Time == null ? DateTime.Now : DateTime.Parse(p.Time); Express.AcceptStation = p.Desc; ExpressList.Add(Express); }); AddExpressNew(ExpressList, ExpressNews, result); } } } } else if (ThirdECommerceHelper.IsSuNingYiGou(ComOrder.AppId))//苏宁店铺 { var snOrderitem = SNOrderItem.ObjectSet().FirstOrDefault(p => p.OrderId == commodityOrderId); if (snOrderitem != null) { SNExpressTraceFacade snExpress = new SNExpressTraceFacade(); var SuningWuliu = snExpress.GetExpressTrace(commodityOrderId.ToString(), snOrderitem.Id.ToString()); LogHelper.Info("【一条---苏宁】苏宁物流[" + JsonHelper.JsonSerializer(snOrderitem) + "]===返回-->[" + JsonHelper.JsonSerializer(SuningWuliu) + "]"); if (SuningWuliu != null) { SuningWuliu.ForEach(p => { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = p.OperateTime == null ? DateTime.Now : p.OperateTime.Value; Express.AcceptStation = p.OperateState; ExpressList.Add(Express); }); AddExpressNew(ExpressList, ExpressNews, result); } } } else if (ThirdECommerceHelper.IsFangZheng(ComOrder.AppId))//方正店铺 { var FangZhengWuliu = FangZhengSV.FangZheng_Logistics_InfoList(commodityOrderId); LogHelper.Info("【一条---方正】方正物流[" + commodityOrderId + "]===返回-->[" + JsonHelper.JsonSerializer(FangZhengWuliu) + "]"); if (FangZhengWuliu != null) { FangZhengWuliu.ExpressTraceList.ForEach(p => { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = DateTime.Parse(p.Time); Express.AcceptStation = p.Desc; ExpressList.Add(Express); }); AddExpressNew(ExpressList, ExpressNews, result); } } else { json = Express100SV.GetExpressFromKD100(ComOrder.ExpOrderNo, ComOrder.ShipExpCo); obj = JObject.Parse(json); LogHelper.Info(string.Format("【一条---快递100】快递100:订单Id:{0},物流信息:{1}", commodityOrderId, obj)); if (obj["message"].ToString().ToLower().Equals("ok")) { JArray arr = (JArray)JsonConvert.DeserializeObject(obj["data"].ToString()); foreach (var item in arr) { ExpressTrace Express = new ExpressTrace(); Express.AcceptTime = Convert.ToDateTime(item["ftime"].ToString()); Express.AcceptStation = item["context"].ToString().Trim(); ExpressList.Add(Express); } //快递单当前签收状态,包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态,其中4-7需要另外开通才有效 int deliverystatus = Convert.ToInt32(obj["state"].ToString()); if (deliverystatus == 0) { ExpressNews.shipmentsTime = ExpressList.Min(p => p.AcceptTime); ExpressNews.state = "已发货"; ExpressNews.Remarked = "您的订单已发货,由" + ComOrder.ShipExpCo + "快递配送,请注意物流信息~"; result.ResultCode = 0; result.isSuccess = true; } else if (deliverystatus == 5) { ExpressNews.shipmentsTime = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime; ExpressNews.state = "派件中"; ExpressNews.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~"; result.ResultCode = 0; result.isSuccess = true; } else if (deliverystatus == 3) { ExpressNews.shipmentsTime = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault().AcceptTime; ExpressNews.state = "已签收"; ExpressNews.Remarked = "您的订单已签收"; result.ResultCode = 0; result.isSuccess = true; } } } result.Data = ExpressNews; LogHelper.Info("Express100--->result[" + JsonHelper.JsonSerializer(result) + "]"); return(result); } else { return(result); } } catch (Exception ex) { LogHelper.Error(string.Format("获取用户最新的订单物流信息信息异常,异常信息:{0}", ex)); return(result); } }
/// <summary> /// 获取物流跟踪信息 /// </summary> public void GetOrderExpressForJobExt() { ContextSession contextSession = ContextFactory.CurrentThreadContext; try { Guid EsAppId = Guid.Parse("8B4D3317-6562-4D51-BEF1-0C05694AC3A6"); var commodityOrder = CommodityOrder.ObjectSet().Where(p => (p.State == 1 || p.State == 2) && p.EsAppId == EsAppId).AsQueryable(); if (commodityOrder.Count() > 0) { LogHelper.Info(string.Format("commodityOrder中的Count:{0}", commodityOrder)); foreach (var item in commodityOrder) { //当表中存在这个订单式撤销 var exEntity = LongisticsTrack.ObjectSet().FirstOrDefault(p => p.Code == item.Code); if (exEntity == null) { LongisticsTrack model = new LongisticsTrack(); model.Id = Guid.NewGuid(); model.Code = item.Code; model.AppName = item.AppName; model.SupplierName = item.SupplierName; model.SupplierCode = item.SupplierCode; model.AppId = item.AppId; model.EsAppId = item.EsAppId ?? Guid.Empty; model.SupplierType = item.SupplierType.ToString(); var orderitem = OrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId == item.Id); if (orderitem != null) { model.CommodityDetail = orderitem.Name + "(数量:" + orderitem.Number + ",属性:" + orderitem.CommodityAttributes + ")"; } //下订单时间 model.Ordertime = item.SubTime; //上传订单时间 model.UploadExpresstime = item.ShipmentsTime; var commodityOrderId = item.Id.ToString(); var jdOrderitem = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId)); if (jdOrderitem != null) { //查询京东物流的订单信息 var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId); if (jdwuliu != null) { JArray objson = JArray.Parse(jdwuliu); LogHelper.Info(string.Format("obj京东信息:{0}", objson.ToString())); int count = 0; foreach (var _item in objson) { if (count == 0) { model.Expressdeliverytime = DateTime.Parse(_item["msgTime"].ToString()); } if (count == 1) { model.ExpressSdtime = DateTime.Parse(_item["msgTime"].ToString()); } count++; } } } else { if (!string.IsNullOrEmpty(item.ExpOrderNo)) { var result = (from a in ExpressTrace.ObjectSet() join b in OrderExpressRoute.ObjectSet() on a.ExpRouteId equals b.Id where b.ExpOrderNo == item.ExpOrderNo select a).ToList(); if (result.Count() == 1) { model.Expressdeliverytime = result[0].AcceptTime; model.ExpressSdtime = result[0].AcceptTime; } if (result.Count() > 2) { model.Expressdeliverytime = result[0].AcceptTime; model.ExpressSdtime = result[1].AcceptTime; } } } model.Confirmtime = item.ConfirmTime; model.SubTime = DateTime.Now; model.IsDel = false; model.EntityState = System.Data.EntityState.Added; contextSession.SaveObject(model); } } contextSession.SaveChanges(); } } catch (Exception ex) { LogHelper.Error(string.Format("OTMSJob错误信息:{0}", ex.Message)); } }
/// <summary> /// 按快递单号获取快递路由信息。 /// </summary> /// <returns></returns> public ResultDTO <OrderExpressRouteExtendDTO> GetExpressRouteByExpNoExt(Jinher.AMP.BTP.Deploy.OrderExpressRouteDTO express) { ResultDTO <OrderExpressRouteExtendDTO> result = new ResultDTO <OrderExpressRouteExtendDTO>(); try { if (express == null) { result.ResultCode = 1; result.Message = "参数错误,参数不能为空!"; return(result); } else if (string.IsNullOrWhiteSpace(express.ShipExpCo)) { result.ResultCode = 2; result.Message = "参数错误,物流公司名称不能为空!"; return(result); } else if (string.IsNullOrWhiteSpace(express.ExpOrderNo)) { result.ResultCode = 3; result.Message = "参数错误,运单号不能为空!"; return(result); } var cname = express.ShipExpCo.Replace("快递", "").Replace("速递", "").Replace("物流", "").Replace("配送", "").Replace("货运", "").Replace("快运", "").Replace("速运", "").ToUpper(); var ocInfo = ExpressCode.AllExpCodes.Where(ec => ec.ExpCompanyName.ToUpper().Contains(cname)); if (!ocInfo.Any()) { result.ResultCode = 4; result.Message = "暂不支持该物流公司的快递单号查询!"; return(result); } express.ShipperCode = ocInfo.First().ExpCode; var oerQuery = (from oer in OrderExpressRoute.ObjectSet() where oer.ShipperCode == express.ShipperCode && oer.ExpOrderNo == express.ExpOrderNo select oer).FirstOrDefault(); if (oerQuery == null) { return(result); } OrderExpressRouteExtendDTO oerDto = new OrderExpressRouteExtendDTO(); oerDto.FillWith(oerQuery); var etQuery = (from et in ExpressTrace.ObjectSet() where et.ExpRouteId == oerQuery.Id orderby et.AcceptTime descending select et).ToList(); if (etQuery.Any()) { List <ExpressTraceDTO> oerList = etQuery.ConvertAll <ExpressTraceDTO>(exp => exp.ToEntityData()); oerDto.Traces = oerList; } result.Data = oerDto; } catch (Exception ex) { result.ResultCode = -1; result.Message = string.Format("按快递单号获取快递路由信息异常,异常信息:{0}", ex); return(result); } return(result); }
/* * private void GetWuliu(OrderExpressRoute orderExpressRoute,Guid AppId) * { * JObject obj = null; * string json = null; * try * { * if (string.IsNullOrWhiteSpace(orderExpressRoute.Deliverystatus)) * { #region 当没有物流信息时添加数据 * json = GetWuliuJson(orderExpressRoute, AppId); * obj = JObject.Parse(json); * if (obj["status"].ToString() != null && obj["status"].ToString() == "0") * { * //先删除数据然后添加 * var res = DeleteExpressTrace(orderExpressRoute.Id); * if (res.isSuccess==true) * { * JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString()); * if (arr.Count() > 0) * { * StringBuilder sb = new StringBuilder(); * sb.Append("insert into ExpressTrace (Id,ExpRouteId,AcceptTime,AcceptStation,Remark) values"); * foreach (var item in arr) * { * sb.Append("("); * sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(item["time"].ToString()) + "','" + item["status"].ToString().Trim() + "',''"); * sb.Append("),"); * } * sb.Remove(sb.Length - 1, 1); * ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sb.ToString()); * } * int deliverystatus = Convert.ToInt32(obj["result"]["deliverystatus"].ToString()); * if (deliverystatus == 1) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.ZTZ); * } * if (deliverystatus == 2) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PJZ); * } * if (deliverystatus == 3) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.YQS); * } * if (deliverystatus == 4) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PSSB); * } * string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'"; * OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql); * } * * } * #endregion * } * else * { * //不存在下面两种情况时更新状态 * if (!orderExpressRoute.Deliverystatus.Contains("已签收") && !orderExpressRoute.Deliverystatus.Contains("派送失败")) * { #region 当物流信息存在时 * json = GetWuliuJson(orderExpressRoute, AppId); * obj = JObject.Parse(json); * if (obj["status"].ToString() != null && obj["status"].ToString() == "0") * { * //先删除数据然后添加 * var res = DeleteExpressTrace(orderExpressRoute.Id); * if (res.isSuccess == true) * { * JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString()); * if (arr.Count() > 0) * { * StringBuilder sb = new StringBuilder(); * sb.Append("insert into ExpressTrace (Id,ExpRouteId,AcceptTime,AcceptStation,Remark) values"); * * foreach (var item in arr) * { * sb.Append("("); * sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(item["time"].ToString()) + "','" + item["status"].ToString() + "',''"); * sb.Append("),"); * } * sb.Remove(sb.Length - 1, 1); * ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sb.ToString()); * } * int deliverystatus = Convert.ToInt32(obj["result"]["deliverystatus"].ToString()); * if (deliverystatus == 1) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.ZTZ); * } * if (deliverystatus == 2) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PJZ); * } * if (deliverystatus == 3) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.YQS); * } * if (deliverystatus == 4) * { * orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PSSB); * } * string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'"; * OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql); * } * * } #endregion * } * * } * } * catch (Exception ex) * { * LogHelper.Debug(string.Format("OTMSJob急速数据物流快递异常信息:{0}", ex.Message)); * } * * } */ /// <summary> /// 获取快递100物流信息 /// </summary> /// <param name="orderExpressRoute"></param> /// <param name="AppId"></param> /// <param name="shipExpCo"></param> private void GetExpress100Wuliu(OrderExpressRoute orderExpressRoute, Guid AppId, string shipExpCo) { JObject obj = null; string json = null; try { #region 当没有物流信息时添加数据 json = Express100SV.GetExpressFromKD100(orderExpressRoute.ExpOrderNo, shipExpCo); //LogHelper.Info("【获取快递100】AppId=[" + AppId + "]shipExpCo=[" + shipExpCo + "]====返回-->[" + json + "]"); obj = JObject.Parse(json); if (obj["message"].ToString().ToLower().Equals("ok")) { //先删除数据然后添加 var res = DeleteExpressTrace(orderExpressRoute.Id); if (res.isSuccess == true) { string data = obj["data"].ToString(); JArray arr = JArray.Parse(data); //JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString()); if (arr.Count() > 0) { JToken first = arr[arr.Count() - 1]; JToken end = arr[0]; StringBuilder sb = new StringBuilder(); sb.Append("insert into ExpressTrace (Id,ExpRouteId,AcceptTime,AcceptStation,Remark) values"); if (first != null) { sb.Append("("); sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(first["ftime"].ToString()) + "','" + first["context"].ToString().Trim() + "',''"); sb.Append("),"); } if (end != null) { sb.Append("("); sb.Append("'" + Guid.NewGuid() + "','" + orderExpressRoute.Id + "','" + Convert.ToDateTime(end["ftime"].ToString()) + "','" + end["context"].ToString().Trim() + "',''"); sb.Append("),"); } sb.Remove(sb.Length - 1, 1); ExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sb.ToString()); //LogHelper.Info("【获取快递100】Job 同步成功Sql--->[" + sb.ToString() + "]"); } //快递单当前签收状态,包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态,其中4-7需要另外开通才有效 int deliverystatus = Convert.ToInt32(obj["state"].ToString()); if (deliverystatus == 3) { orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.YQS); string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'"; OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql); } else if (deliverystatus == 6) { orderExpressRoute.Deliverystatus = new EnumHelper().GetDescription(DeliverystatusEnum.PSSB); string sql = "update OrderExpressRoute set Deliverystatus='" + orderExpressRoute.Deliverystatus + "' where Id='" + orderExpressRoute.Id + "'"; OrderExpressRoute.ObjectSet().Context.ExecuteStoreCommand(sql); } } } #endregion } catch (Exception ex) { LogHelper.Error(string.Format("GetExpress100Wuliu 快递100接口调用错误:{0}", ex.Message)); } }
/// <summary> /// 获取用户最新的订单物流信息 /// </summary> public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO <Jinher.AMP.BTP.Deploy.CustomDTO.Commodity.ComOrderExpressNew> GetUserNewOrderExpressExt(System.Guid AppId, System.Guid Userid) { ComOrderExpressNew ExpressNews = new ComOrderExpressNew(); ResultDTO <ComOrderExpressNew> result = new ResultDTO <ComOrderExpressNew>() { ResultCode = 1, isSuccess = false, Data = ExpressNews }; string json = null; JObject obj = null; try { //获取已发货的订单信息 var ComOrder = CommodityOrder.ObjectSet().Where(p => p.State == 2 && p.UserId == Userid && p.EsAppId == AppId).OrderByDescending(p => p.ModifiedOn).FirstOrDefault(); if (ComOrder != null) { List <ExpressTrace> ExpressList = new List <ExpressTrace>(); var OrderItemDebug = OrderItem.ObjectSet().Where(p => p.CommodityOrderId == ComOrder.Id).FirstOrDefault(); ExpressNews.CommodityOrderId = ComOrder.Id; //订单id ExpressNews.Pic = OrderItemDebug.PicturesPath; //首条订单图片 ExpressTrace Express = new ExpressTrace(); //急速数据信息 if (!string.IsNullOrWhiteSpace(ComOrder.ExpOrderNo)) { var orderexpressroute = OrderExpressRoute.ObjectSet().FirstOrDefault(p => p.ExpOrderNo == ComOrder.ExpOrderNo); //根据快递编号获取急速数据信息 json = GetWuliuJson(orderexpressroute, ComOrder.AppId); LogHelper.Debug(string.Format("极速快递物流信息:{0}", JsonHelper.JsonSerializer(json))); obj = JObject.Parse(json); if (Convert.ToInt32(obj["status"]) != 0) { return(result); } JArray arr = (JArray)JsonConvert.DeserializeObject(obj["result"]["list"].ToString()); foreach (var item in arr) { Express.AcceptTime = Convert.ToDateTime(item["time"].ToString()); Express.AcceptStation = item["status"].ToString().Trim(); ExpressList.Add(Express); } var NewExpress = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault(); if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 1) { result.ResultCode = 0; result.isSuccess = true; ExpressNews.shipmentsTime = ComOrder.ModifiedOn; ExpressNews.state = "已发货"; ExpressNews.Remarked = "您的订单已发货,由" + ComOrder.ShipExpCo + "快递配送,请注意物流信息~"; } else if (Convert.ToInt32(obj["result"]["deliverystatus"]) == 2) { result.ResultCode = 0; result.isSuccess = true; ExpressNews.shipmentsTime = NewExpress.AcceptTime; ExpressNews.state = "派件中"; ExpressNews.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~"; } else { result.ResultCode = 1; result.isSuccess = false; } } else { //京东信息 var commodityOrderId = ComOrder.Id.ToString(); var jdOrderitem = JdOrderItem.ObjectSet().FirstOrDefault(p => p.CommodityOrderId.Contains(commodityOrderId)); if (jdOrderitem != null) { var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId); LogHelper.Debug(string.Format("京东物流信息:{0}", JsonHelper.JsonSerializer(jdwuliu))); if (jdwuliu != null) { JArray objson = JArray.Parse(jdwuliu); foreach (var item in objson) { Express.AcceptTime = DateTime.Parse(item["msgTime"].ToString()); Express.AcceptStation = item["content"].ToString().Trim(); ExpressList.Add(Express); } var NewExpress = ExpressList.OrderByDescending(p => p.AcceptTime).FirstOrDefault(); if (NewExpress.AcceptStation.Contains("正在配送")) { result.ResultCode = 0; result.isSuccess = true; ExpressNews.shipmentsTime = NewExpress.AcceptTime; ExpressNews.state = "派件中"; ExpressNews.Remarked = "您的订单已开始派送,请保持电话畅通,确认商品外包装完好后签收~"; } else if (NewExpress.AcceptStation.Contains("订单已签收")) { result.ResultCode = 1; result.isSuccess = false; } else { result.ResultCode = 0; result.isSuccess = true; ExpressNews.shipmentsTime = ComOrder.ModifiedOn; ExpressNews.state = "已发货"; ExpressNews.Remarked = "您的订单已发货,由京东快递配送,请注意物流信息~"; } } } } result.Data = ExpressNews; LogHelper.Debug(string.Format("获取用户最新的订单物流信息返回数据:{0}", JsonHelper.JsonSerializer(result))); return(result); } else { return(result); } } catch (Exception ex) { LogHelper.Error(string.Format("获取用户最新的订单物流信息信息异常,异常信息:{0}", ex)); return(result); } }
/// <summary> /// 接收快递鸟推送的物流路由信息。 base.Do(false); /// </summary> public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO ReceiveKdniaoExpressRouteExt(System.Collections.Generic.List <Jinher.AMP.BTP.Deploy.CustomDTO.OrderExpressRouteExtendDTO> oerList) { ResultDTO result = new ResultDTO { ResultCode = 0, Message = "Success" }; try { if (oerList == null || !oerList.Any()) { result.ResultCode = 1; result.Message = "参数错误,物流路由信息不能为空!"; return(result); } ContextSession contextSession = ContextFactory.CurrentThreadContext; List <OrderExpressRoute> oerReadyList = new List <OrderExpressRoute>(); var distinctOEList = (from oe in oerList select new { oe.ShipperCode, oe.ExpOrderNo }).Distinct(); foreach (var oe in distinctOEList) { var oerQuery = (from oer in OrderExpressRoute.ObjectSet() where oer.ShipperCode == oe.ShipperCode && oer.ExpOrderNo == oe.ExpOrderNo select oer).ToList(); if (!oerQuery.Any()) { continue; } oerReadyList.AddRange(oerQuery); //清理同一运单已有路由信息。 var erids = (from oer in oerQuery select oer.Id).Distinct(); var etQuery = (from et in ExpressTrace.ObjectSet() where erids.Contains(et.ExpRouteId) select et).ToList(); foreach (var etq in etQuery) { etq.EntityState = System.Data.EntityState.Deleted; } } //将运单路由信息保存到db. foreach (var oere in oerList) { OrderExpressRoute oerNew = (from oerr in oerReadyList where oerr.ShipperCode == oere.ShipperCode && oerr.ExpOrderNo == oere.ExpOrderNo select oerr).FirstOrDefault(); if (oerNew == null) { continue; } oerNew.ModifiedOn = DateTime.Now; oerNew.EntityState = System.Data.EntityState.Modified; if (oere.Traces != null && oere.Traces.Any()) { foreach (ExpressTraceDTO etDto in oere.Traces) { ExpressTrace et = ExpressTrace.CreateExpressTrace(); et.FillWith(etDto); et.ExpRouteId = oerNew.Id; et.Id = Guid.NewGuid(); et.EntityState = System.Data.EntityState.Added; contextSession.SaveObject(et); } } } contextSession.SaveChanges(); } catch (Exception ex) { string s = string.Format("保存快递鸟推送的物流路由信息异常,异常信息:{0}", ex); LogHelper.Error(s); return(new ResultDTO { ResultCode = 1, Message = "Error" }); } return(result); }