Esempio n. 1
0
 /// <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 + "&param=" + 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
         });
     }
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 /// <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));
     }
 }
Esempio n. 4
0
        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("签名不正确");
            }
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
 /// <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 + "&param={\"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
         });
     }
 }
Esempio n. 8
0
 /// <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);
 }
Esempio n. 9
0
        /// <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);
        }
Esempio n. 10
0
 /// <summary>
 /// 校验某订单中某商品是否可以提交售后服务
 /// </summary>
 /// <returns></returns>
 public static bool GetAvailableNumberComp(string jdOrderId, string skuId)
 {
     try
     {
         string token    = JdHelper.GetToken();
         string postData = "token=" + token + "&param={\"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);
     }
 }
Esempio n. 11
0
        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));
        }
Esempio n. 12
0
        /// <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);
        }
Esempio n. 13
0
        /// <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);
        }
Esempio n. 14
0
        /// <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>());
        }
Esempio n. 15
0
        /// <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
                });
            }
        }
Esempio n. 16
0
 /// <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 + "&param={\"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>());
 }
Esempio n. 17
0
 /// <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 + "&param={\"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);
 }
Esempio n. 18
0
 /// <summary>
 /// 根据服务单号查询服务单明细信息
 /// </summary>
 /// <param name="afsServiceId"></param>
 /// <returns></returns>
 public static CompatibleServiceDetailDTO GetServiceDetailInfo(string afsServiceId)
 {
     try
     {
         string token    = JdHelper.GetToken();
         string postData = "token=" + token + "&param={\"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);
 }
Esempio n. 19
0
 /// <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());
 }
Esempio n. 20
0
        /// <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>());
        }
Esempio n. 21
0
 /// <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>());
 }
Esempio n. 22
0
        /// <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);
        }
Esempio n. 23
0
        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");
        }
Esempio n. 24
0
        /// <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);
            }
        }
Esempio n. 25
0
 // 更新京东订单
 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);
     }
 }
Esempio n. 26
0
        /// <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);
            }
        }
Esempio n. 27
0
        /// <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));
            }
        }
Esempio n. 28
0
        /// <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);
            }
        }
Esempio n. 29
0
        /// <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);
            }
        }