소스 검색

盛大接口修改

zhuyiyi 5 달 전
부모
커밋
b7f3696662
1개의 변경된 파일37개의 추가작업 그리고 28개의 파일을 삭제
  1. 37 28
      SiteCore/taobao/apiShengda.cs

+ 37 - 28
SiteCore/taobao/apiShengda.cs

@@ -25,6 +25,7 @@ using System.Threading.Tasks;
 using System.Web;
 using static SiteCore.taoObj.Api_trade_info;
 using System.Text.RegularExpressions;
+using NPOI.OpenXmlFormats.Shared;
 
 namespace SiteCore.Handler
 {
@@ -207,11 +208,18 @@ namespace SiteCore.Handler
             string decryptMsg = callbackCrypto.GetDecryptMsg(msgSignature, timeStamp, nonce, encrypt);
             JObject item = JsonConvert.DeserializeObject<JObject>(decryptMsg);
             string eventType, orderSn, expressCompany, expressName, expressNo;
+            int status = 0;
+            StringBuilder sb = new StringBuilder();
+
             try
             {
+                status = Convert.ToInt16(item["status"]);
+                if (status != 4)
+                {
+                    return;
+                }
                 eventType = item["eventType"].ToString();
                 orderSn = item["body"]["orderSN"].ToString();
-                Debug.WriteLine("订单号:" + orderSn);
                 expressCompany = item["body"]["extra"]["expressCompany"].ToString();
                 expressName = item["body"]["extra"]["expressName"].ToString();
                 expressNo = item["body"]["extra"]["expressNo"].ToString();
@@ -223,11 +231,10 @@ namespace SiteCore.Handler
                     {
                         entity = CeErpTradeCell.GetByCtid(ctid);
                     }
-                    StringBuilder sb = new StringBuilder();
 
                     if (entity != null && entity.SupplierId == 7)
                     {
-                        sb.AppendLine(string.Format("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid = '{0}' ;", entity.ctid, (int)OrderState.下单完成, 0, "测试-盛大接口发货:" + expressCompany + "-" + expressNo));
+                        sb.AppendLine(string.Format("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid = '{0}' ;", entity.ctid, (int)OrderState.下单完成, 0, "盛大接口发货:" + expressCompany + "-" + expressNo));
 
                         CeErpTrade mainEn = CeErpTrade.Get(entity.tid);
                         string apires = "";
@@ -239,7 +246,7 @@ namespace SiteCore.Handler
                         {
                             cpCode = "ZTO-SD";
                         }
-                        if ("PADTF".Equals(expressName) && expressCompany.IndexOf("平安达") > -1)
+                        if ("PADTF".Equals(expressName) && expressCompany.IndexOf("") > -1)
                         {
                             cpCode = "PADTF-SD";
                         }
@@ -303,29 +310,32 @@ namespace SiteCore.Handler
                         }
                         else if (mainEn.status == "SHIPPED" || mainEn.status == "PART_SHIPPED" || entity.OrderState >= 7) //已发货的不处理直接返回面单
                         {
-                            entity.OutSid = (entity.OutSid + "," + expressNo);
-                            if (entity.OrderState == 6)
+                            if (string.IsNullOrEmpty(entity.OutSid) || entity.OutSid.IndexOf(expressNo) == -1)
                             {
-                                entity.OrderState = 7;
-                            }
-                            entity.UpdateTime = DateTime.Now;
-                            entity.FinishDeliveryTime = DateTime.Now;
-                            entity.Update();
 
-                            CeErpExpressInfo exinfo = new CeErpExpressInfo();
-                            exinfo.tid = entity.ctid;
-                            exinfo.out_sid = expressNo;
-                            exinfo.company_code = cpCode;
-                            exinfo.company_name = expressCompany;
-                            exinfo.supplierUserName = supplierName;
-                            exinfo.deliveryType = "发货成功";
-                            exinfo.print_time = DateTime.Now;
-                            exinfo.printUser = userName;
-                            exinfo.postData = "";
-                            exinfo.Create();
-                            commonHelper.UpdateRelationOrder(entity.ctid);
-                            CeErpSukuraData.createInfo(entity.ctid, 4);
+                                entity.OutSid = (entity.OutSid + "," + expressNo);
+                                if (entity.OrderState == 6)
+                                {
+                                    entity.OrderState = 7;
+                                }
+                                entity.UpdateTime = DateTime.Now;
+                                entity.FinishDeliveryTime = DateTime.Now;
+                                entity.Update();
 
+                                CeErpExpressInfo exinfo = new CeErpExpressInfo();
+                                exinfo.tid = entity.ctid;
+                                exinfo.out_sid = expressNo;
+                                exinfo.company_code = cpCode;
+                                exinfo.company_name = expressCompany;
+                                exinfo.supplierUserName = supplierName;
+                                exinfo.deliveryType = "发货成功";
+                                exinfo.print_time = DateTime.Now;
+                                exinfo.printUser = userName;
+                                exinfo.postData = "";
+                                exinfo.Create();
+                                commonHelper.UpdateRelationOrder(entity.ctid);
+                                CeErpSukuraData.createInfo(entity.ctid, 4);
+                            }
                         }
                         else
                         {
@@ -333,23 +343,22 @@ namespace SiteCore.Handler
                             entity.LastBillCpCode = cpCode;
                             entity.LastBillWaybillCode = expressNo;
                             entity.Update();
-                            sb.AppendLine(string.Format("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid = '{0}' ;", entity.ctid, (int)OrderState.下单完成, 0, "测试-盛大接口发货失败:" + expressCompany + "-" + expressNo + "。发货失败:" + apires));
+                            sb.AppendLine(string.Format("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid = '{0}' ;", entity.ctid, (int)OrderState.下单完成, 0, "盛大接口发货失败:" + expressCompany + "-" + expressNo + "。发货失败:" + apires));
                         }
                     }
                     else
                     {
                         sb.AppendLine(string.Format("update [dbo].[CE_ErpShengdaRequestDataBack] set message = '查不到对应订单:{0}' where signature='{1}' and timestamp='{2}';", ctid, msgSignature, timeStamp));
                     }
-                    SqlHelper.ExecuteNonQuery(sb.ToString());
                 }
 
             }
-
-
             catch (Exception ex)
             {
+                sb.AppendLine(string.Format("update [dbo].[CE_ErpShengdaRequestDataBack] set message = '数据解析错误:{0}' where signature='{1}' and timestamp='{2}';", ex.Message, msgSignature, timeStamp));
                 XLog.SaveLog(0, "盛大数据解析错误:" + msgSignature);
             }
+            SqlHelper.ExecuteNonQuery(sb.ToString());
 
         }