public KdSubscribeResultDTO orderTracesSubByJson(List <KdSubscribeDTO> kdSubList)
        {
            //string requestData = "{'Code': 'YTO','Item': [" +
            //                   "{'No': '710155965039','Bk': 'test'}" +
            //                   "]}";
            string requestData = JsonHelper.JsonSerializer(kdSubList);

            LogHelper.Debug(string.Format("KdApiSubscribeKit.orderTracesSubByJson.requestData:{0}", requestData));


            Dictionary <string, string> param = new Dictionary <string, string>();

            param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
            param.Add("EBusinessID", BTP.Common.CustomConfig.KdniaoEBusinessID);
            param.Add("RequestType", "1005");
            string dataSign = encrypt(requestData, BTP.Common.CustomConfig.KdniaoAppKey, "UTF-8");

            param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
            param.Add("DataType", "2");

            string result = sendPost(BTP.Common.CustomConfig.KdniaoSubscribeReqURL, param);

            LogHelper.Debug(string.Format("KdApiSubscribeKit.orderTracesSubByJson结果:{0}", result));
            //根据公司业务处理返回的信息......
            KdSubscribeResultDTO resultDto = JsonHelper.JsonDeserialize <KdSubscribeResultDTO>(result);

            return(resultDto);
        }
Exemple #2
0
        /// <summary>
        /// 向快递鸟订阅需要推送的快递单号
        /// </summary>
        /// <returns></returns>
        private ResultDTO SubscribeOrderExpressMultiple(List <OrderExpressRoute> expressList)
        {
            ResultDTO result = new ResultDTO {
                ResultCode = 0, Message = "Success"
            };

            try
            {
                if (expressList == null || !expressList.Any())
                {
                    result.ResultCode = 1;
                    result.Message    = "参数错误,参数不能为空!";
                    return(result);
                }

                List <KdSubscribeDTO> kdSubList = new List <KdSubscribeDTO>();
                var ecompany = (from exp in expressList select exp.ShipperCode).Distinct();
                foreach (string g in ecompany)
                {
                    KdSubscribeDTO kdSub = new KdSubscribeDTO();
                    kdSub.Code = g;
                    kdSub.Item = new List <SubItem>();

                    var expNos = from exp in expressList where exp.ShipperCode == g select exp;
                    foreach (var expNo in expNos)
                    {
                        //非法物流单号过滤掉。
                        if (string.IsNullOrWhiteSpace(expNo.ExpOrderNo) ||
                            expNo.ExpOrderNo.Length < 6 ||
                            expNo.ExpOrderNo.Length > 50)
                        {
                            expNo.State       = 3;
                            expNo.ModifiedOn  = DateTime.Now;
                            expNo.EntityState = System.Data.EntityState.Modified;
                            continue;
                        }
                        kdSub.Item.Add(new SubItem()
                        {
                            No = expNo.ExpOrderNo, Bk = ""
                        });
                    }
                    kdSubList.Add(kdSub);
                }

                //发布订阅。
                KdSubscribeResultDTO kdResult = KdApiSubscribeKit.Instance.orderTracesSubByJson(kdSubList);

                //发布订阅失败。
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                //发布订阅完成。
                if (!kdResult.Success)
                {
                    //发布订阅失败,记录下来,job重发。
                    result.ResultCode = 2;
                    result.Message    = "订阅物流信息失败!";

                    List <string> errorExpNos = new List <string>();
                    if (!string.IsNullOrWhiteSpace(kdResult.Reason))
                    {
                        string[] errorKD = kdResult.Reason.Split(";".ToCharArray());
                        foreach (string mi in errorKD)
                        {
                            int ind = mi.IndexOf("快递单号");
                            if (ind < 0)
                            {
                                continue;
                            }
                            string expNo = mi.Substring(0, ind).Trim();
                            errorExpNos.Add(expNo);
                        }
                    }
                    if (errorExpNos != null && errorExpNos.Count > 0)
                    {
                        foreach (string eNo in errorExpNos)
                        {
                            var expList = from exp in expressList
                                          where exp.ExpOrderNo == eNo
                                          select exp;
                            if (!expList.Any())
                            {
                                continue;
                            }
                            foreach (OrderExpressRoute oer in expList)
                            {
                                oer.State       = 3;
                                oer.ModifiedOn  = DateTime.Now;
                                oer.EntityState = System.Data.EntityState.Modified;
                            }
                        }
                    }
                }
                else
                {
                    foreach (OrderExpressRoute oer in expressList)
                    {
                        if (oer.State == 1)
                        {
                            oer.State = 2;
                        }
                        oer.ModifiedOn  = DateTime.Now;
                        oer.EntityState = System.Data.EntityState.Modified;
                    }
                }
                contextSession.SaveChanges();
            }
            catch (Exception ex)
            {
                result.ResultCode = -1;
                result.Message    = string.Format("向快递鸟订阅需要推送的快递单号异常,异常信息:{0}", ex);
                return(result);
            }

            return(result);
        }