/// <summary> /// 服务单保存申请 /// </summary> /// <param name="afsServiceId"></param> /// <returns></returns> public static ResultDTO CreateAfsApply(AfterSaleDto dto) { try { string token = JdHelper.GetToken(); var par = JsonHelper.JsonSerializer(dto); string postData = "token=" + token + "¶m=" + par; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "afterSale/createAfsApply", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto>(jsonstr); if (resullt.Success) { LogHelper.Info("JDSV.CreateAfsApply 服务单保存申请 成功,Request: " + postData + ",Response: " + jsonstr); return(new ResultDTO { isSuccess = true }); } else { LogHelper.Error("JDSV.CreateAfsApply 服务单保存申请 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); return(new ResultDTO { isSuccess = false, ResultCode = resullt.ResultCode ?? -1, Message = resullt.ResultMessage }); } } catch (Exception ex) { LogHelper.Error("JDSV.CreateAfsApply 服务单保存申请 异常", ex); return(new ResultDTO { isSuccess = false, Message = ex.Message, ResultCode = -1 }); } }
/// <summary> /// 获取库存信息 /// </summary> /// <param name="type">消息类型(2代表商品价格变更)</param> /// <returns></returns> public static List <JdStockDto> GetStockById(List <string> skus, string area) { var result = new List <JdStockDto>(); try { skus = skus.Where(_ => _.Length > 5 && _.Length < 9).ToList(); string token = JdHelper.GetToken(); string postData = "token=" + token + "&sku=" + string.Join(",", skus) + "&area=" + area; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "stock/getStockById", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <string> >(jsonstr); if (resullt.Success) { result = Newtonsoft.Json.JsonConvert.DeserializeObject <List <JdStockDto> >(resullt.Result); } else { LogHelper.Error("JDSV.GetStockById 获取库存信息 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetStockById 获取库存信息 异常", ex); } return(result); }
/// <summary> /// 添加京东物流信息 /// </summary> private void AddJdwuliu(JdOrderItem jdOrderitem) { try { //查询京东物流的订单信息 var jdwuliu = JdHelper.orderTrack(jdOrderitem.JdOrderId); if (jdwuliu != null) { JArray objson = JArray.Parse(jdwuliu); LogHelper.Info(string.Format("OTMSJobobj京东信息:{0}", objson.ToString())); StringBuilder sb = new StringBuilder(); sb.Append("insert into JdExpressTrace (Id,ExpRouteId,AcceptTime,AcceptStation,Remark) values"); foreach (var _item in objson) { sb.Append("("); sb.Append("'" + Guid.NewGuid() + "','" + jdOrderitem.Id + "','" + DateTime.Parse(_item["msgTime"].ToString()) + "','" + _item["content"].ToString().Trim() + "',''"); sb.Append("),"); } sb.Remove(sb.Length - 1, 1); JdExpressTrace.ObjectSet().Context.ExecuteStoreCommand(sb.ToString()); } } catch (Exception ex) { LogHelper.Info(string.Format("OTMSJob添加京东物流异常信息:{0}", ex)); } }
public void VerifyDefrayPayCallback(DefrayPayCallbackQM qm) { qm.NotNull("请求参数"); qm.sign_data.NotNull("签名"); qm.sign_type.NotNull("签名类型"); var pairs = new List <string>(); qm.GetType().GetProperties().OrderBy(w => w.Name).ToList().ForEach(prop => { if (!JdHelper.IGNORES.Contains(prop.Name)) { var val = Convert.ToString(prop.GetValue(qm)); if (!String.IsNullOrEmpty(val)) { pairs.Add($"{prop.Name}={val}"); } } }); var signSrc = String.Join("&", pairs); var sign = JdHelper.ComputeSha1(signSrc + jdConfig.Sha256SignKey); if (sign != qm.sign_data) { throw new BizException("签名不正确"); } }
/// <summary> /// 参数要判断response_code,然后判断trade_status状态是否成功。 /// </summary> /// <param name="req"></param> /// <returns></returns> public async Task <DefrayPayRsp> DefrayPayAsync(DefrayPayReq req) { req.NotNull("请求参数"); debugInfo.Info($"代付请求:{req.ToJsonString()}"); req.CustomerNo.NotNull("客户号"); req.OutTradeNo.NotNull("商户订单流水号"); req.TradeAmount.NotNull("订单交易金额"); if (!decimal.TryParse(req.TradeAmount, out decimal tradeAmount)) { throw new BizException("金额不合法"); } tradeAmount.ShouldLargeThan(0, "订单交易金额"); req.TradeSubject.NotNull("订单摘要"); if (req.PayTool == PayTool.ACCT.ToString()) { req.PayeeBankCode.NotNull("收款银行编码"); req.PayeeCardType.NotNull("收款卡种"); req.PayeeAccountType.EnumValueValid("收款账户类型"); req.PayeeAccountNo.NotNull("收款账户号"); req.PayeeAccountName.NotNull("收款账户名称"); } var rst = await JdHelper.GetWithdrawRspAsync <DefrayPayRsp>(jdConfig.DefrayPayUrl, jdConfig.CustomerNo, jdConfig.Sha256SignKey, req); return(rst); }
/// <summary> /// /// </summary> /// <param name="req"></param> /// <returns></returns> public async Task <TradeQueryRsp> TradeQueryAsync(TradeQueryReq req) { req.NotNull("请求参数"); debugInfo.Info($"交易查询:{req.ToJsonString()}"); req.CustomerNo.NotNull("提交者会员号"); req.OutTradeNo.NotNull("商户订单号"); var reqDateTime = DateTime.Now.ToString("yyyyMMddHHmmss"); var dic = new Dictionary <string, string>() { { "customer_no", jdConfig.CustomerNo }, { "out_trade_no", req.OutTradeNo }, { "request_datetime", reqDateTime } }; dic.Add("sign_type", "SHA-256"); var signSrcTxt = $"customer_no={jdConfig.CustomerNo}&out_trade_no={req.OutTradeNo}&request_datetime={reqDateTime}{jdConfig.Sha256SignKey}"; var sign = JdHelper.ComputeSha256(signSrcTxt); dic.Add("sign_data", sign); var rsp = await HttpHelper.GetResultAsync <TradeQueryRsp>(new HttpReqModel() { Url = jdConfig.TradeQueryUrl, Method = "post", ReqBody = dic }); debugInfo.Info($"交易查询返回:{rsp.ToJsonString()}"); return(rsp); }
/// <summary> /// 取消服务单 /// </summary> /// <param name="afsServiceId"></param> /// <returns></returns> public static ResultDTO AuditMultipulCancel(List <string> serviceIds, string approveNotes) { try { string token = JdHelper.GetToken(); var serviceIdstr = string.Join("\",\"", serviceIds); string postData = "token=" + token + "¶m={\"serviceIdList\":[\"" + serviceIdstr + "\"],\"approveNotes\":\"" + approveNotes + "\"}"; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "afterSale/auditCancel", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto>(jsonstr); if (resullt.Success) { return(new ResultDTO { isSuccess = true }); } else { LogHelper.Error("JDSV.AuditCancel 取消服务单 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); return(new ResultDTO { isSuccess = false, Message = resullt.ResultMessage, ResultCode = -1 }); } } catch (Exception ex) { LogHelper.Error("JDSV.AuditCancel 取消服务单 异常", ex); return(new ResultDTO { isSuccess = false, Message = ex.Message, ResultCode = -1 }); } }
/// <summary> /// 获取推送消息 /// </summary> /// <param name="type">消息类型(2-商品价格变更 3-库存变化 4-商品上下架变更)</param> /// <returns></returns> public static List <JdPriceMessageDto> GetMessage(string type) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "&type=" + type; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "message/get", postData); //发送数据到mq var json = SerializationHelper.JsonSerialize(new { MsgType = type, Request = postData, Response = jsonstr }); RabbitMqHelper.Send(RabbitMqRoutingKey.JdCommodityMsgReceived, RabbitMqExchange.Commodity, json); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <List <JdPriceMessageDto> > >(jsonstr); if (resullt.Success) { return(resullt.Result); } else { LogHelper.Error("JDSV.GetMessage 获取推送消息 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetMessage 获取推送消息 异常", ex); } return(null); }
/// <summary> /// 快捷支付签约 /// </summary> /// <param name="req"></param> /// <returns></returns> /// <exception cref="BizException"></exception> public async Task <ExpressContractedClientRsp> ExpressContractAsync(TypeVItem req) { req.NotNull("请求参数"); debugInfo.Info($"快捷签约:{req.ToJsonString()}"); req.Card.NotNull("卡信息"); req.Trade.NotNull("交易信息"); var card = req.Card; card.Bank.NotNull("持卡人支付卡号发卡行"); card.Type.EnumValueValid("持卡人支付卡号卡类型"); card.No.NotNull("持卡人支付卡号"); card.Name.NotNull("持卡人姓名"); card.IdType.NotNull("持卡人证件类型"); card.IdNo.NotNull("持卡人证件号"); card.Phone.NotNull("持卡人手机号"); var trade = req.Trade; trade.Type.ShouldBe("V", "交易类型"); trade.Id.NotNull("交易号"); trade.Id.NotTooLong(30, "交易号"); trade.Amount.DecimalValid("交易金额"); trade.Currency.ShouldBe("CNY", "交易币种"); var xmlData = JdHelper.GetTypeVXml(req); var desEncrypted = JdHelper.DesEncrypt(xmlData, jdConfig.DesKey); var sign = JdHelper.Md5(jdConfig.Version, jdConfig.Merchant, jdConfig.Terminal, desEncrypted, jdConfig.Md5Key); var xml = JdHelper.CreateChinaBank(jdConfig.Version, jdConfig.Merchant, jdConfig.Terminal, desEncrypted, sign); var base64EncodedStr = JdHelper.Base64Encode(xml); var reqModel = new HttpReqModel() { Method = "post", ReqBody = new Dictionary <string, string>() { { "req", base64EncodedStr }, { "charset", "utf-8" } }, Url = jdConfig.FastPayUrl }; var rspStr = await HttpHelper.GetResultAsync <string>(reqModel); var content = rspStr.Substring(rspStr.IndexOf('=') + 1); debugInfo.Info($"快捷签约返回原文:{rspStr}"); var rsp = await ParseExpresssContractAsync(content); debugInfo.Info($"快捷签约解析:{rsp.ToJsonString()}"); return(rsp); }
/// <summary> /// 校验某订单中某商品是否可以提交售后服务 /// </summary> /// <returns></returns> public static bool GetAvailableNumberComp(string jdOrderId, string skuId) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "¶m={\"jdOrderId\":" + jdOrderId + ",\"skuId\":" + skuId + "}"; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "afterSale/getAvailableNumberComp", postData); var json = JObject.Parse(jsonstr); return(json["success"].ToObject <bool>()); } catch (Exception ex) { LogHelper.Error("JDSV.GetAvailableNumberComp 异常", ex); return(false); } }
public async Task <FastPayRsp> ParseFastPayAsync(string content) { var decodedXml = JdHelper.Base64Decode(content); var chinaBank = JdHelper.ParseXml <ChinaBank>(decodedXml); var exceptedSign = JdHelper.Md5(jdConfig.Version, jdConfig.Merchant, jdConfig.Terminal, chinaBank.Data, jdConfig.Md5Key); if (exceptedSign != chinaBank.Sign) { throw new BizException("返回结果签名不正确"); } var desDecrypted = JdHelper.DesDecrypt(chinaBank.Data, jdConfig.DesKey); return(JdHelper.ParseXml <FastPayRsp>(desDecrypted)); }
/// <summary> /// 快捷支付 /// </summary> /// <param name="req"></param> /// <returns></returns> public async Task <FastPayRsp> FastPayAsync(TypeSItem req) { req.NotNull("请求参数"); debugInfo.Info($"快捷支付:{req.ToJsonString()}"); var trade = req.Trade; trade.NotNull("交易参数"); trade.Notice = jdConfig.ExpressPayNotifyUrl; trade.Type.ShouldBe("S", "交易类型应为S"); trade.Id.NotNull("交易号"); trade.Amount.LongValid("金额"); trade.Code.NotNull("交易验证码"); trade.Currency.NotNull("交易币种"); var card = req.Card; card.NotNull("卡片信息"); card.Bank.NotNull("持卡人支付卡号发卡行"); card.Type.ShouldBe("D", "持卡人卡类型"); card.No.NotNull("持卡人支付卡号"); card.Name.NotNull("持卡人姓名"); card.IdType.NotNull("持卡人证件类型"); card.IdNo.NotNull("持卡人证件号"); card.Phone.NotNull("持卡人手机号"); var typeSXml = JdHelper.GetTypeSXml(req); var desEncrypted = JdHelper.DesEncrypt(typeSXml, jdConfig.DesKey); var sign = JdHelper.Md5(jdConfig.Version, jdConfig.Merchant, jdConfig.Terminal, desEncrypted, jdConfig.Md5Key); var chinabank = JdHelper.CreateChinaBank(jdConfig.Version, jdConfig.Merchant, jdConfig.Terminal, desEncrypted, sign); var base64Encoded = JdHelper.Base64Encode(chinabank); var reqModel = new HttpReqModel() { Method = "post", ReqBody = new Dictionary <string, string>() { { "req", base64Encoded }, { "charset", "utf-8" } }, Url = jdConfig.FastPayUrl }; var rspStr = await HttpHelper.GetResultAsync <string>(reqModel); var content = rspStr.Substring(rspStr.IndexOf('=') + 1); var rsp = await ParseFastPayAsync(content); return(rsp); }
/// <summary> /// 获取二级地址 /// </summary> /// <returns></returns> public ThirdResponse <Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDTO> GetCityExt(string Code) { ThirdResponse <Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDTO> res = new ThirdResponse <Deploy.CustomDTO.JD.AreaDTO>(); try { Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDTO Areadto = new Deploy.CustomDTO.JD.AreaDTO(); List <Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDto> objlist = new List <Deploy.CustomDTO.JD.AreaDto>(); string objstr = JdHelper.GetCity(Code); if (!string.IsNullOrEmpty(objstr)) { JObject obj = JObject.Parse(objstr); if (obj.Count > 0) { foreach (var item in obj) { Jinher.AMP.BTP.Deploy.CustomDTO.JD.AreaDto model = new Deploy.CustomDTO.JD.AreaDto(); model.Name = item.Key; model.Code = item.Value.ToString(); objlist.Add(model); } } Areadto.Count = objlist.Count(); Areadto.Data = objlist; res.Code = 200; res.Result = Areadto; res.Msg = "查询成功!"; } else { res.Code = 200; res.Result = Areadto; res.Msg = "查询成功!"; } } catch (Exception ex) { res.Code = 200; res.Result = new Deploy.CustomDTO.JD.AreaDTO(); res.Msg = ex.Message; } return(res); }
/// <summary> /// 批量查询协议价价格 /// </summary> /// <returns></returns> public static List <JdPriceDto> GetPrice(List <string> skuId) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "&sku=" + string.Join(",", skuId); string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "price/getPrice", postData); //LogHelper.Info("JDSV.GetPrice 批量查询协议价价格,Request: " + postData + ",Response: " + jsonstr); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <List <JdPriceDto> > >(jsonstr); if (resullt.Success) { // {"success":true,"resultMessage":"5090522不在您的商品池中,价格为null或者小于0时,为暂无报价","resultCode":"0000","result":[{"price":105.84,"skuId":5090521,"jdPrice":108.00}]} // {"success":true,"resultMessage":"价格为null或者小于0时,为暂无报价","resultCode":"0000","result":[{"price":105.84,"skuId":5090521,"jdPrice":108.00}]} //if (resullt.ResultMessage != "价格为null或者小于0时,为暂无报价") //{ // var facade = new Jinher.AMP.BTP.IBP.Facade.JdlogsFacade(); // facade.ContextDTO = AuthorizeHelper.InitAuthorizeInfo(); // var log = new Jinher.AMP.BTP.Deploy.JdlogsDTO // { // Id = Guid.NewGuid(), // Content = "【价格同步】" + resullt.ResultMessage // }; // facade.SaveJdlogs(log); //} return(resullt.Result); } else { LogHelper.Error("JDSV.GetPrice 批量查询协议价价格 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetPrice 批量查询协议价价格异常", ex); } return(new List <JdPriceDto>()); }
/// <summary> /// 删除推送消息 /// </summary> /// <param name="ids"></param> /// <returns></returns> public static ResultDTO DelMessage(List <string> ids) { if (!IsProduction) { return new ResultDTO { isSuccess = true } } ; try { string token = JdHelper.GetToken(); string postData = "token=" + token + "&id=" + string.Join(",", ids); string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "message/del", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto>(jsonstr); if (resullt.Success) { LogHelper.Info("JDSV.DelMessage 删除推送消息 成功,Request: " + postData + ",Response: " + resullt.ResultMessage); return(new ResultDTO { isSuccess = true }); } else { LogHelper.Error("JDSV.DelMessage 删除推送消息 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); return(new ResultDTO { isSuccess = false, Message = resullt.ResultMessage, ResultCode = -1 }); } } catch (Exception ex) { LogHelper.Error("JDSV.DelMessage 删除推送消息 异常", ex); return(new ResultDTO { isSuccess = false, Message = ex.Message, ResultCode = -1 }); } }
/// <summary> /// 根据订单号、商品编号查询支持的商品返回京东方式 /// </summary> /// <param name="jdOrderId"></param> /// <param name="skuId"></param> /// <returns></returns> public static List <JdComponentExport> GetWareReturnJdComp(string jdOrderId, string skuId) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "¶m={\"jdOrderId\":" + jdOrderId + ",\"skuId\":" + skuId + "}"; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "afterSale/getWareReturnJdComp", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <List <JdComponentExport> > >(jsonstr); if (resullt.Success) { return(resullt.Result); } else { LogHelper.Error("JDSV.GetWareReturnJdComp 查询支持的商品返回京东方式 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetWareReturnJdComp 查询支持的商品返回京东方式 异常", ex); } return(new List <JdComponentExport>()); }
/// <summary> /// 根据客户账号和订单号分页查询服务单概要信息 /// </summary> /// <param name="jdOrderId"></param> /// <param name="skuId"></param> /// <returns></returns> public static List <AfsServicebyCustomerPin> GetServiceListPage(string jdOrderId) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "¶m={\"jdOrderId\":" + jdOrderId + ", \"pageIndex\":1, \"pageSize\":10}"; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "afterSale/getServiceListPage", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <AfsServicebyCustomerPinPage> >(jsonstr); if (resullt.Success) { return(resullt.Result.serviceInfoList); } else { LogHelper.Error("JDSV.GetServiceListPage 查询服务单概要信息 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetServiceListPage 查询服务单概要信息 异常", ex); } return(null); }
/// <summary> /// 根据服务单号查询服务单明细信息 /// </summary> /// <param name="afsServiceId"></param> /// <returns></returns> public static CompatibleServiceDetailDTO GetServiceDetailInfo(string afsServiceId) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "¶m={\"afsServiceId\":" + afsServiceId + ", \"appendInfoSteps\":[1,2,3,4,5]}"; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "afterSale/getServiceDetailInfo", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <CompatibleServiceDetailDTO> >(jsonstr); if (resullt.Success) { return(resullt.Result); } else { LogHelper.Error("JDSV.GetServiceDetailInfo 查询服务单明细信息 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetServiceDetailInfo 查询服务单明细信息 异常", ex); } return(null); }
/// <summary> /// 获取京东商品详情 /// </summary> /// <returns></returns> public static JdComDetailDto GetJdDetail(string sku) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "&sku=" + sku + "&isShow=" + true; string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "product/getDetail", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <JdComDetailDto> >(jsonstr); LogHelper.Info("JDSV.GetJdDetail 批量查询京东商品详情,,Request: " + postData + ",Response: " + resullt.Success); if (resullt.Success) { return(resullt.Result); } else { LogHelper.Error("JDSV.GetJdDetail获取京东商品详情失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetJdDetail 获取京东商品详情异常", ex); } return(new JdComDetailDto()); }
/// <summary> /// 批量获取商品图片信息 /// </summary> /// <returns></returns> public static List <JdComPicturesDto> GetComPictures(List <string> skuId) { try { string token = JdHelper.GetToken(); string postData = "token=" + token + "&sku=" + string.Join(",", skuId); string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "product/skuImage", postData); LogHelper.Info("JDSV.GetComPictures 批量获取京东商品图片,Request: " + postData + ",Response: " + jsonstr); var result = new List <JdComPicturesDto>(); var jsonObj = JObject.Parse(jsonstr); if (jsonObj["success"].ToObject <bool>()) { foreach (var sku in skuId) { var skuObj = jsonObj["result"][sku].ToObject <List <JdComPicturesDto> >(); if (skuObj != null) { result.AddRange(skuObj); } } return(result); } else { //LogHelper.Error("JDSV.GetComPictures 批量获取京东商品图片 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetComPictures 批量获取京东商品图片", ex); } return(new List <JdComPicturesDto>()); }
/// <summary> /// 获取上下架状态 /// </summary> /// <param name="type">消息类型(2代表商品价格变更)</param> /// <returns></returns> public static List <JdSkuStateDto> GetSkuState(List <string> skus) { try { skus = skus.Where(_ => _.Length > 5 && _.Length < 9).ToList(); string token = JdHelper.GetToken(); string postData = "token=" + token + "&sku=" + string.Join(",", skus); string jsonstr = WebRequestHelper.SendPostInfo(UrlBase + "product/skuState", postData); var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <List <JdSkuStateDto> > >(jsonstr); if (resullt.Success) { return(resullt.Result); } else { LogHelper.Error("JDSV.GetSkuState 获取上下架状态 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage); } } catch (Exception ex) { LogHelper.Error("JDSV.GetSkuState 获取上下架状态 异常", ex); } return(new List <JdSkuStateDto>()); }
/// <summary> /// 保存一个京东订单 /// </summary> /// <param name="item">一个订单</param> /// <param name="comList">订单项对应的商品</param> private ResultDTO SaveOneJdOrder(OrderSDTO item, List <Commodity> comList) { ResultDTO <List <CommoditySummaryDTO> > result = new ResultDTO <List <CommoditySummaryDTO> >(); if (item == null) { result.ResultCode = (int)ReturnCodeEnum.ParamEmpty; result.Message = ReturnCodeEnum.ParamEmpty.GetDescription(); return(result); } if (item.ShoppingCartItemSDTO == null || !item.ShoppingCartItemSDTO.Any() || comList == null || !comList.Any()) { result.ResultCode = (int)ReturnCodeEnum.ParamEmpty; result.Message = ReturnCodeEnum.ParamEmpty.GetDescription(); return(result); } //易捷北京所有的AppId string Appids = CustomConfig.AppIds; LogHelper.Info(string.Format("Appids{0}", Appids)); List <string> Appidlist = null; if (!string.IsNullOrEmpty(Appids)) { Appidlist = Appids.Split(new char[] { ',' }).ToList(); } if (!Appidlist.Contains(comList[0].AppId.ToString().ToUpper())) { //todo 返回非京东app. result.ResultCode = (int)ReturnCodeEnum.NotJdShop; result.Message = ReturnCodeEnum.NotJdShop.GetDescription(); return(result); } LogHelper.Info(string.Format("Appidlist的数量{0}", Appidlist.Count())); string orderPriceSnap = null; string sku = null; //订单项里的商品都是同一店铺的,店铺名称相同。 string appName = APPSV.GetAppName(comList[0].AppId); List <CommoditySummaryDTO> errorCommodities = new List <CommoditySummaryDTO>(); orderPriceSnap = null; sku = null; ContextSession contextSession = ContextFactory.CurrentThreadContext; var scis = item.ShoppingCartItemSDTO; foreach (var _item in scis) { Commodity commodity = comList.FirstOrDefault(_ => _.Id == _item.Id); LogHelper.Info(string.Format("京东日志:商品Id:{0},JDCode:{1},AppId:{2}", commodity.Id, commodity.JDCode, commodity.AppId)); //京东店铺的商品没有JDCode,返回错误。 if (string.IsNullOrWhiteSpace(commodity.JDCode)) { #region Jdlogs model = new Jdlogs(); model.Id = Guid.NewGuid(); model.Content = (appName + "App中" + commodity.Name + "商品的备注编码不存在,请尽快补充填写~"); model.Remark = string.Empty; model.AppId = commodity.AppId; model.ModifiedOn = DateTime.Now; model.SubTime = DateTime.Now; model.Isdisable = false; model.EntityState = EntityState.Added; contextSession.SaveObject(model); bool falg = EmailHelper.SendEmail("京东错误日志", model.Content, "*****@*****.**"); var errorCommodity = new CommoditySummaryDTO(); errorCommodity.Id = commodity.Id; errorCommodity.Name = commodity.Name; errorCommodity.PicturesPath = commodity.PicturesPath; errorCommodity.Price = _item.Price; errorCommodity.Sku = _item.SizeAndColorId; errorCommodity.ShopCartItemId = _item.ShopCartItemId; errorCommodities.Add(errorCommodity); result.ResultCode = (int)ReturnCodeEnum.CommoditySold; result.Message = ReturnCodeEnum.CommoditySold.GetDescription(); result.Data = errorCommodities; return(result); #endregion } orderPriceSnap += "{'price':" + commodity.CostPrice + ",'skuId':" + commodity.JDCode + "},"; sku += "{'skuId':" + commodity.JDCode + ", 'num':" + _item.CommodityNumber + ",'bNeedAnnex':true, 'bNeedGift':false},"; LogHelper.Info(string.Format("京东日志2:{0}:{1}", orderPriceSnap, sku)); } LogHelper.Info(string.Format("京东日志3:{0}:{1}", orderPriceSnap, sku)); if (string.IsNullOrEmpty(orderPriceSnap) || string.IsNullOrEmpty(sku)) { //没有商品要去京东下单。 result.ResultCode = (int)ReturnCodeEnum.NoCommodityNeedJdOrder; result.Message = ReturnCodeEnum.NoCommodityNeedJdOrder.GetDescription(); return(result); } orderPriceSnap = orderPriceSnap.Remove(orderPriceSnap.Length - 1, 1); sku = sku.Remove(sku.Length - 1, 1); orderPriceSnap = "[" + orderPriceSnap + "]"; sku = "[" + sku + "]"; string thirdOrder = Guid.NewGuid().ToString(); if (string.IsNullOrEmpty(item.StreetCode)) { item.StreetCode = "0"; } //获取京东编号 ResultDTO jdResult = JdHelper.GetJDOrderNew(thirdOrder, orderPriceSnap, sku, item.ReceiptUserName, item.ReceiptAddress, item.ReceiptPhone, "*****@*****.**", item.ProvinceCode, item.CityCode, item.DistrictCode, item.StreetCode); LogHelper.Info(string.Format("京东日志4:{0}:{1}", orderPriceSnap, sku)); //正常下单,保存订单项关系。 if (jdResult.ResultCode == 0) { #region 京东下单情况 JdOrderItem jdorderitemdto = new JdOrderItem() { Id = Guid.NewGuid(), //todo jdporderId???? //JdPorderId = jdporderId, TempId = Guid.Parse(thirdOrder), JdOrderId = Guid.Empty.ToString(), MainOrderId = Guid.Empty.ToString(), CommodityOrderId = Guid.Empty.ToString(), State = Convert.ToInt32(JdEnum.YZ), StateContent = new EnumHelper().GetDescription(JdEnum.YZ), SubTime = DateTime.Now, ModifiedOn = DateTime.Now }; //todo SaveJdOrderItem(jdorderitemdto); JdJournal jdjournaldto = new JdJournal() { Id = Guid.NewGuid(), //todo jdporderId //JdPorderId = jdporderId, TempId = Guid.Parse(thirdOrder), JdOrderId = Guid.Empty.ToString(), MainOrderId = Guid.Empty.ToString(), CommodityOrderId = Guid.Empty.ToString(), Name = "京东统一下单接口", Details = "初始状态为" + Convert.ToInt32(JdEnum.YZ), SubTime = DateTime.Now }; //todo SaveJdJournal(jdjournaldto); #endregion } else { #region 记录京东日志 int resultCode = jdResult.ResultCode; string jdlog = jdResult.Message; if (resultCode == 3017) //账户异常情况特殊 { #region EmailHelper.SendEmail("京东错误日志", "您的京东账户余额不足,请充值!", "*****@*****.**"); Jinher.AMP.BTP.Deploy.JdlogsDTO model = new Jinher.AMP.BTP.Deploy.JdlogsDTO(); model.Id = Guid.NewGuid(); model.Content = "您的京东账户余额不足,请充值!"; model.Remark = string.Empty; model.AppId = Guid.Empty; model.ModifiedOn = DateTime.Now; model.SubTime = DateTime.Now; model.Isdisable = false; //SaveJdlogs(model); foreach (var itemlog in scis) { var errorCommodity = new CommoditySummaryDTO(); errorCommodity.Id = itemlog.Id; errorCommodity.Name = itemlog.Name; errorCommodity.PicturesPath = itemlog.Pic; errorCommodity.Price = itemlog.Price; errorCommodity.Sku = itemlog.SizeAndColorId; errorCommodity.ShopCartItemId = itemlog.ShopCartItemId; errorCommodities.Add(errorCommodity); } #endregion } else { #region if (!string.IsNullOrEmpty(jdResult.Message)) { string num = null; var matches = Regex.Matches(jdResult.Message, @"(\d+)"); int count = 0; foreach (Match match in matches) { if (count == 0) { num = match.Value; } count++; } foreach (var itemlog in scis) { Commodity commodity = comList.FirstOrDefault(_ => _.Id == itemlog.Id); if (commodity.JDCode != num.ToString()) { continue; } var errorCommodity = new CommoditySummaryDTO(); errorCommodity.Id = commodity.Id; errorCommodity.Name = commodity.Name; errorCommodity.PicturesPath = commodity.PicturesPath; errorCommodity.Price = itemlog.Price; errorCommodity.Sku = itemlog.SizeAndColorId; errorCommodity.ShopCartItemId = itemlog.ShopCartItemId; errorCommodities.Add(errorCommodity); string content = null; content += (APPSV.GetAppName(commodity.AppId) + "App中" + itemlog.Name) + "商品[" + commodity.JDCode + "]"; if (resultCode == 2004) { content += "京东商品池中不存在"; } else if (resultCode == 3019) { string str = jdlog; if (!string.IsNullOrEmpty(str)) { content += "价格错误,"; int num1 = str.IndexOf('['); int num2 = str.IndexOf(']'); string strjdprice = str.Substring(num1 + 1, (num2 - num1 - 1)); string[] arr = strjdprice.Split(new char[] { '=' }); content += "京东价" + arr[1] + "元," + "易捷价" + commodity.CostPrice + "元"; } } else if (resultCode == 3008) { content += "已售馨"; } else { content += "异常信息:" + jdlog; } EmailHelper.SendEmail("京东错误日志", content, "*****@*****.**"); Jinher.AMP.BTP.Deploy.JdlogsDTO model = new Jinher.AMP.BTP.Deploy.JdlogsDTO(); model.Id = Guid.NewGuid(); model.Content = content; model.Remark = string.Empty; model.AppId = itemlog.AppId; model.ModifiedOn = DateTime.Now; model.SubTime = DateTime.Now; model.Isdisable = false; //SaveJdlogs(model); } } #endregion } #endregion #region 获取京东订单单号失败的情况 //////京东确认取消订单 ////bool flag = JdHelper.OrderCancel(jdorderid.JdporderId); ////if (flag == true) ////{ //// List<string> jdorder = new List<string>(); //// jdorder.Add(jdorderid.JdporderId); //// //删除京东对应订单 //// var res = jdorderitemfacade.DeleteJdOrderItem(jdorder); //// if (res.isSuccess == true) //// { //// JdJournal jdjournaldto = new JdJournal() //// { //// Id = Guid.NewGuid(), //// JdPorderId = jdporderId, //// TempId = Guid.Parse(thirdOrder), //// JdOrderId = Guid.Empty.ToString(), //// MainOrderId = Guid.Empty.ToString(), //// CommodityOrderId = Guid.Empty.ToString(), //// Name = "京东确认取消订单", //// Details = "删除JdOrderItem表中相应的内容", //// SubTime = DateTime.Now //// }; //// //SaveJdJournal(jdjournaldto); //// } ////} #endregion //LogHelper.Error("商品已售馨,请选择其他商品,Jdlogs:" + jdlog + " resultCode:" + resultCode); //return Json(new OrderResultDTO { ResultCode = 2, Message = "商品已售馨,请选择其他商品", ErrorCommodities = errorCommodities }, JsonRequestBehavior.AllowGet); } return(result); }
public static string RepairJdOrder(string jdPorderId) { var commodityorderfacade = new Jinher.AMP.BTP.IBP.Facade.CommodityOrderFacade(); commodityorderfacade.ContextDTO = AuthorizeHelper.CoinInitAuthorizeInfo(); var jdorderitemfacade = new Jinher.AMP.BTP.IBP.Facade.JdOrderItemFacade(); jdorderitemfacade.ContextDTO = AuthorizeHelper.CoinInitAuthorizeInfo(); var jdjournalfacade = new Jinher.AMP.BTP.IBP.Facade.JdJournalFacade(); jdjournalfacade.ContextDTO = AuthorizeHelper.CoinInitAuthorizeInfo(); //开始拆单 JdOrderItemDTO model = new JdOrderItemDTO(); model.JdPorderId = jdPorderId; model.State = 1;// //获取jdorderitem表中的数据 var jdorderitem = jdorderitemfacade.GetJdOrderItemList(model).FirstOrDefault(); if (jdorderitem != null) { var getFullOrderInfo = commodityorderfacade.GetFullOrderInfoById(jdorderitem.CommodityOrderId); bool flag = JdHelper.IsjdOrder(jdPorderId); if (flag == true) { #region 父订单拆单行为 var selectJdOrder2 = JdHelper.selectJdOrder2(jdPorderId); if (!string.IsNullOrWhiteSpace(selectJdOrder2)) { List <string> list = new List <string>(); list.Add(jdPorderId); //删除已有的父类订单 var delresult = jdorderitemfacade.DeleteJdOrderItem(list); if (delresult.isSuccess == true) { JArray objson = JArray.Parse(selectJdOrder2); foreach (var item in objson) { JArray objsku = JArray.Parse(item["sku"].ToString()); foreach (var ZiJdOrder in objsku) { #region 子订单包含包含多个商品的情况 string skuId = ZiJdOrder["skuId"].ToString(); Guid TempId = Guid.Empty; Guid commodityOrderItemId = Guid.Empty; if (getFullOrderInfo.OrderItems != null && getFullOrderInfo.OrderItems.Count() > 0) { var commoditydto = getFullOrderInfo.OrderItems.Where(p => p.JdCode == skuId).FirstOrDefault(); if (commoditydto != null) { commodityOrderItemId = commoditydto.Id; TempId = commoditydto.CommodityId; } } int State = Convert.ToInt32(JdEnum.BCF); string StateContent = new EnumHelper().GetDescription(JdEnum.BCF); string JdOrderId = item["jdOrderId"].ToString(); string Name = "京东下订单" + StateContent; string Details = "订单状态由" + jdorderitem.State + "变成" + State; if (item["orderState"].ToString() == "0") { State = Convert.ToInt32(JdEnum.BCF); StateContent = new EnumHelper().GetDescription(JdEnum.BCF); Name = "京东下订单" + StateContent; Details = "订单状态由" + jdorderitem.State + "变成" + State; } JdOrderItemDTO jdorderitemdto = new JdOrderItemDTO() { Id = Guid.NewGuid(), JdPorderId = jdPorderId, TempId = TempId, JdOrderId = JdOrderId, MainOrderId = jdorderitem.MainOrderId, CommodityOrderId = jdorderitem.CommodityOrderId, State = State, StateContent = StateContent, SubTime = DateTime.Now, ModifiedOn = DateTime.Now, CommoditySkuId = skuId, CommodityOrderItemId = commodityOrderItemId }; var restult = jdorderitemfacade.SaveJdOrderItem(jdorderitemdto); if (restult.isSuccess == true) { JdJournalDTO ex = new JdJournalDTO() { JdPorderId = jdPorderId, TempId = TempId, JdOrderId = JdOrderId, MainOrderId = jdorderitem.MainOrderId, CommodityOrderId = jdorderitem.CommodityOrderId, Name = Name, Details = StateContent }; var res = jdjournalfacade.GetJdJournalList(ex); if (res.Count() == 0) { JdJournalDTO jdjournaldto = new JdJournalDTO() { Id = Guid.NewGuid(), JdPorderId = jdPorderId, TempId = TempId, JdOrderId = JdOrderId, MainOrderId = jdorderitem.MainOrderId, CommodityOrderId = jdorderitem.CommodityOrderId, Name = Name, Details = StateContent, SubTime = DateTime.Now }; jdjournalfacade.SaveJdJournal(jdjournaldto); } } #endregion } } } } #endregion } else { #region 拆单行为 var selectJdOrder1 = JdHelper.selectJdOrder1(jdPorderId); if (!string.IsNullOrWhiteSpace(selectJdOrder1)) { JObject objs = JObject.Parse(selectJdOrder1); JArray objson = JArray.Parse(objs["sku"].ToString()); foreach (var ZiJdOrder in objson) { #region 子订单包含包含多个商品的情况 string skuId = ZiJdOrder["skuId"].ToString(); Guid TempId = Guid.Empty; Guid commodityOrderItemId = Guid.Empty; if (getFullOrderInfo.OrderItems != null && getFullOrderInfo.OrderItems.Count() > 0) { var commoditydto = getFullOrderInfo.OrderItems.Where(p => p.JdCode == skuId).FirstOrDefault(); if (commoditydto != null) { commodityOrderItemId = commoditydto.Id; TempId = commoditydto.CommodityId; } } int State = Convert.ToInt32(JdEnum.BCF); string StateContent = new EnumHelper().GetDescription(JdEnum.BCF); string JdOrderId = objs["jdOrderId"].ToString(); string Name = "京东下订单" + StateContent; string Details = "订单状态由" + jdorderitem.State + "变成" + State; jdorderitem.TempId = TempId; jdorderitem.JdOrderId = JdOrderId; jdorderitem.State = State; jdorderitem.StateContent = StateContent; jdorderitem.CommoditySkuId = skuId; jdorderitem.CommodityOrderItemId = commodityOrderItemId; var restult = jdorderitemfacade.UpdateJdOrderItem(jdorderitem); if (restult.isSuccess == true) { JdJournalDTO ex = new JdJournalDTO() { JdPorderId = jdPorderId, TempId = TempId, JdOrderId = JdOrderId, MainOrderId = jdorderitem.MainOrderId, CommodityOrderId = jdorderitem.CommodityOrderId, Name = Name, Details = StateContent }; var res = jdjournalfacade.GetJdJournalList(ex); if (res.Count() == 0) { JdJournalDTO jdjournaldto = new JdJournalDTO() { Id = Guid.NewGuid(), JdPorderId = jdPorderId, TempId = TempId, JdOrderId = JdOrderId, MainOrderId = jdorderitem.MainOrderId, CommodityOrderId = jdorderitem.CommodityOrderId, Name = Name, Details = StateContent, SubTime = DateTime.Now }; jdjournalfacade.SaveJdJournal(jdjournaldto); } } #endregion } } #endregion } #region 更新订单信息状态 Jinher.AMP.BTP.Deploy.CommodityOrderDTO commodity = new Jinher.AMP.BTP.Deploy.CommodityOrderDTO(); commodity.Id = Guid.Parse(jdorderitem.CommodityOrderId); commodity.State = 2; commodity.ShipmentsTime = DateTime.Now; //更新订单状态 commodityorderfacade.UpdateCommodityOrder(commodity); #endregion return("ok"); } return("no found"); }
/// <summary> /// 金采支付 京东订单补发job /// </summary> //[Obsolete("没有符合SupplierCode=43266570的订单")] public static void SynchroJdForJC() { //return; try { //var orders = CommodityOrder.ObjectSet().Where(_ => _.State == 1 && _.Payment == 2001 && _.SupplierCode == "43266570").ToList(); var orders = CommodityOrder.ObjectSet().Where(_ => _.State == 1 && _.SupplierCode == "43266570").ToList(); foreach (var order in orders) { //如果更新成功 京东下单 CommodityOrderFacade commodityorderfacade = new CommodityOrderFacade { ContextDTO = AuthorizeHelper.InitAuthorizeInfo() }; JdOrderItemFacade jdorderitemfacade = new JdOrderItemFacade { ContextDTO = AuthorizeHelper.InitAuthorizeInfo() }; JdJournalFacade jdjournalfacade = new JdJournalFacade { ContextDTO = AuthorizeHelper.InitAuthorizeInfo() }; var commodityorder = commodityorderfacade.GetMainOrderInfo(order.Id); JdOrderItemDTO model = new JdOrderItemDTO { State = 1, CommodityOrderId = order.Id.ToString() }; //获取最早的京东数据模型 var jdorderitem = jdorderitemfacade.GetJdOrderItemList(model).ToList().FirstOrDefault(); if (jdorderitem != null) { //京东确认下单 bool flag = JdHelper.confirmOrder(jdorderitem.JdPorderId); if (flag) { jdorderitem.StateContent = "确认预占"; jdorderitem.MainOrderId = commodityorder.MainOrderId.ToString(); var res = jdorderitemfacade.UpdateJdOrderItem(jdorderitem); if (res.isSuccess) { JdJournalDTO jdjournaldto = new JdJournalDTO() { Id = Guid.NewGuid(), JdPorderId = jdorderitem.JdPorderId, TempId = jdorderitem.TempId, JdOrderId = Guid.Empty.ToString(), MainOrderId = commodityorder.MainOrderId.ToString(), CommodityOrderId = jdorderitem.CommodityOrderId, Name = "京东确认预占库存订单接口", Details = "京东确认预占库存订单接口", SubTime = DateTime.Now }; //添加明细记录 jdjournalfacade.SaveJdJournal(jdjournaldto); } } } else { LogHelper.Info("SynchroJdForJC方法,jdorderitem为空"); } } } catch (Exception ex) { LogHelper.Error("SynchroJdForJC方法异常", ex); } }
// 更新京东订单 public static void UpdateJdorder(Guid orderId) { try { //如果更新成功 京东下单 Jinher.AMP.BTP.IBP.Facade.CommodityOrderFacade commodityorderfacade = new Jinher.AMP.BTP.IBP.Facade.CommodityOrderFacade(); commodityorderfacade.ContextDTO = AuthorizeHelper.InitAuthorizeInfo(); Jinher.AMP.BTP.IBP.Facade.JdOrderItemFacade jdorderitemfacade = new Jinher.AMP.BTP.IBP.Facade.JdOrderItemFacade(); jdorderitemfacade.ContextDTO = AuthorizeHelper.InitAuthorizeInfo(); Jinher.AMP.BTP.IBP.Facade.JdJournalFacade jdjournalfacade = new Jinher.AMP.BTP.IBP.Facade.JdJournalFacade(); jdjournalfacade.ContextDTO = AuthorizeHelper.InitAuthorizeInfo(); var mainOrder = commodityorderfacade.GetMainOrderInfo(orderId); var order = commodityorderfacade.GetCommodityOrder(orderId, Guid.Empty); if (mainOrder == null || order == null || !order.PaymentTime.HasValue) { LogHelper.Info("订单未支付orderId=" + orderId); return; } JdOrderItemDTO model = new JdOrderItemDTO(); model.State = 1; model.CommodityOrderId = orderId.ToString(); LogHelper.Info("jdorderitem是否为空数据单号:" + model.CommodityOrderId + ""); //获取最早的京东数据模型 var jdorderitem = jdorderitemfacade.GetJdOrderItemList(model).ToList().FirstOrDefault(); if (jdorderitem != null) { //京东确认下单 bool flag = JdHelper.confirmOrder(jdorderitem.JdPorderId); if (flag == true) { jdorderitem.StateContent = "确认预占"; jdorderitem.MainOrderId = mainOrder.MainOrderId.ToString(); var res = jdorderitemfacade.UpdateJdOrderItem(jdorderitem); LogHelper.Info("京东确认下单res:" + res + ""); if (res.isSuccess == true) { JdJournalDTO jdjournaldto = new JdJournalDTO() { Id = Guid.NewGuid(), JdPorderId = jdorderitem.JdPorderId, TempId = jdorderitem.TempId, JdOrderId = Guid.Empty.ToString(), MainOrderId = mainOrder.MainOrderId.ToString(), CommodityOrderId = jdorderitem.CommodityOrderId, Name = "京东确认预占库存订单接口", Details = "京东确认预占库存订单接口", SubTime = DateTime.Now }; //添加明细记录 jdjournalfacade.SaveJdJournal(jdjournaldto); } } } else { LogHelper.Info("jdorderitemjdorderitemjdorderitemjdorderitemjdorderitem为空"); } } catch (Exception ex) { LogHelper.Error("OrderEventHelper.UpdateJdorder 异常", ex); } }
/// <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> /// 获取物流跟踪信息 /// </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> 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> /// <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); } }