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); }
/// <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); }