zhuyiyi há 6 meses atrás
pai
commit
9e4a7d3b7c

+ 2 - 0
SiteCore/Handler/sync.order.cs

@@ -11143,6 +11143,8 @@ namespace SiteCore.Handler
                 }
                 if (ce.OrderState >= 5)
                 {
+                    ceErpMessageTip.isVisit = true;
+                    ceErpMessageTip.Update();
                     returnSuccessMsg("已上传文件无法修改!");
                     return;
                 }

+ 1 - 1
SiteCore/taobao/designHelper.cs

@@ -531,7 +531,7 @@ namespace SiteCore.Handler
                 byte[] ret = wc.UploadValues(post_url, "POST", PostVars);
                 string remoteInfo = Encoding.GetEncoding("utf-8").GetString(ret);
                 designApiResponseVo designApiResponseVo = JsonConvert.DeserializeObject<designApiResponseVo>(remoteInfo);
-                if (designApiResponseVo.code == 200)
+                if (designApiResponseVo != null && designApiResponseVo.code == 200)
                 {
                     result = designApiResponseVo.msg;
                 }

+ 62 - 26
SiteCore/taobao/preSalesHelper.cs

@@ -1515,6 +1515,7 @@ namespace SiteCore.Handler
             if (UrlPostParmsCheck("data"))
             {
                 string data = GetPostString("data");
+                string tempStr = data;
                 Api_trade_info info = null;
                 try
                 {
@@ -1538,36 +1539,70 @@ namespace SiteCore.Handler
                     returnErrorMsg("接口对象处理错误bizOrder=null");
                     return;
                 }
-                bool isCreate = false;
-                CeErpTrade trade = null;
-                trade = CeErpTrade.Get(bizOrder.thirdOrderId);
-                if (trade == null)
-                {
-                    isCreate = true;
-                }
-                List<tempResponse> callResult = null;
-                try
-                {
-                    trade = createTradeOrder(bizOrder, trade, isCreate);
-                    List<Api_trade_info.TradeItemOrder> orderList = bizOrder.bizOrderItems;
-                    createItemOrder(orderList, trade);
-                    List<Api_trade_info.bizOrderSplit> bizOrderSplit = bizOrder.bizOrderSplits;
-                    callResult = createCellOrder(bizOrderSplit, trade, isCreate);
-                }
-                catch (Exception ex)
-                {
-                    XLog.SaveLog(0, "create_order|2|" + ex);
-                    returnErrorMsg(ex.Message);
-                    return;
-                }
 
+                string sql = string.Format("insert into CE_ErpPreRequestData(tid,data,createtime) values('{0}','{1}',getdate()) ;" +
+                        "insert into CE_ErpPreRequestDataBackup(tid,data,createtime) values('{0}','{1}',getdate()) ;",
+                                                    bizOrder.thirdOrderId, tempStr);
+                XLog.ExecuteNonQuery(sql);
+                List<tempResponse> callResult = new List<tempResponse>();
                 returnSuccessMsg(JsonConvert.SerializeObject(callResult));
                 return;
-
             }
             returnErrorMsg("缺少必要的参数data");
         }
 
+        public static void dealMessageInfo(string data)
+        {
+
+            Api_trade_info info = null;
+            try
+            {
+                info = JsonConvert.DeserializeObject<Api_trade_info>(data);
+            }
+            catch (Exception ex)
+            {
+                XLog.SaveLog(0, "dealMessageInfo|1|" + ex.Message);
+                return;
+            }
+            if (info == null)
+            {
+                XLog.SaveLog(0, "dealMessageInfo Api_trade_info isNull");
+                return;
+            }
+
+            BizOrder bizOrder = info.bizOrder;
+            if (bizOrder == null)
+            {
+                XLog.SaveLog(0, "dealMessageInfo 接口对象处理错误bizOrder=null");
+                return;
+            }
+            bool isCreate = false;
+            CeErpTrade trade = null;
+            trade = CeErpTrade.Get(bizOrder.thirdOrderId);
+            if (trade == null)
+            {
+                isCreate = true;
+            }
+            List<tempResponse> callResult = null;
+            try
+            {
+                trade = createTradeOrder(bizOrder, trade, isCreate);
+                List<Api_trade_info.TradeItemOrder> orderList = bizOrder.bizOrderItems;
+                createItemOrder(orderList, trade);
+                List<Api_trade_info.bizOrderSplit> bizOrderSplit = bizOrder.bizOrderSplits;
+                callResult = createCellOrder(bizOrderSplit, trade, isCreate);
+            }
+            catch (Exception ex)
+            {
+                XLog.SaveLog(0, "dealMessageInfo|2|" + ex);
+                return;
+            }
+
+            return;
+
+
+        }
+
         public void refundOrder()
         {
             if (UrlPostParmsCheck("data"))
@@ -1787,7 +1822,7 @@ namespace SiteCore.Handler
             }
         }
 
-        public List<tempResponse> createCellOrder(List<Api_trade_info.bizOrderSplit> bizOrderSplit, CeErpTrade trade, bool isCreate)
+        public static List<tempResponse> createCellOrder(List<Api_trade_info.bizOrderSplit> bizOrderSplit, CeErpTrade trade, bool isCreate)
         {
             List<tempResponse> tempResponses = new List<tempResponse>();
             CeErpShop nShop = CeErpShop.GetShopIdByName(trade.seller_nick);
@@ -2174,6 +2209,7 @@ namespace SiteCore.Handler
                         response.flag = "1";
                         response.flagData = entity.ctid;
                         response.flagMsg = upResult == null ? "复制文件出错!" : upResult.result;
+                        tempResponses.Add(response);
                     }
                 }
 
@@ -2181,7 +2217,7 @@ namespace SiteCore.Handler
             return tempResponses;
         }
 
-        public void createItemOrder(List<Api_trade_info.TradeItemOrder> orderList, CeErpTrade trade)
+        public static void createItemOrder(List<Api_trade_info.TradeItemOrder> orderList, CeErpTrade trade)
         {
             foreach (Api_trade_info.TradeItemOrder item in orderList)
             {
@@ -2243,7 +2279,7 @@ namespace SiteCore.Handler
                 }
             }
         }
-        public CeErpTrade createTradeOrder(BizOrder bizOrder, CeErpTrade trade, bool isCreate)
+        public static CeErpTrade createTradeOrder(BizOrder bizOrder, CeErpTrade trade, bool isCreate)
         {
 
             if (trade == null)

+ 68 - 0
ecomServer/MainForm.cs

@@ -135,12 +135,15 @@ namespace ErpServer
 
         int tb_err = 0;
         int bu_err = 0;
+        int pre_err = 0;
         int refund_tb_err = 0;
         int refund_bu_err = 0;
         HttpHelper http = null;
         TimerCallback syncTaoBaoBack = null;
+        TimerCallback syncPreBack = null;
         TimerCallback syncRefundTB = null;
         System.Threading.Timer disTimer = null;
+        System.Threading.Timer preTimer = null;
         System.Threading.Timer refundDisTimer = null;
         string paidanSync = "";
         string dinggaolvSync = "";
@@ -180,6 +183,8 @@ namespace ErpServer
                 helper.writeLog("淘宝同步");
                 syncTaoBaoBack = new TimerCallback(syncTaoBaoCall);
                 disTimer = new System.Threading.Timer(syncTaoBaoBack, null, 3000, 3000);
+                syncPreBack = new TimerCallback(syncPreCall);
+                preTimer = new System.Threading.Timer(syncPreBack, null, 3000, 3000);
             }
             //****售后退款推送同步****/
             string refundTBSync = INI.GetIniValue("Config", "refundTbSync", iniFile);
@@ -559,6 +564,69 @@ namespace ErpServer
             }
         }
 
+        bool preIsGet = false;
+        private void syncPreCall(object obj)
+        {
+            if (preIsGet) return;
+            preIsGet = true;
+            string sql = "select top 200 * from CE_ErpPreRequestData order by id asc";
+            DataTable dt = SqlHelper.ExecuteDataset(sql).Tables[0];
+
+            try
+            {
+                if (dt != null && dt.Rows.Count > 0)
+                {
+                    List<string> idLst = new List<string>();
+                    helper.writeLog(dt.Rows[0]["id"].ToString());
+                    foreach (DataRow dr in dt.Rows)
+                    {
+                        idLst.Add(dr["id"].ToString());
+                        while (true)
+                        {
+                            if (pre_err >= 15)
+                            {
+                                Environment.Exit(0);
+                                return;
+                            }
+                            try
+                            {
+                                preSalesHelper.dealMessageInfo(dr["data"].ToString());
+                                pre_err = 0;
+                                break;
+                            }
+                            catch (Exception ex)
+                            {
+                                if (ex.Message.IndexOf("死锁") != -1)
+                                {
+                                    pre_err++;
+                                    helper.writeLog("同步死锁了,继续执行");
+                                    Thread.Sleep(1000);
+                                }
+                                else
+                                {
+                                    XLog.SaveLog(0, dr["message"].ToString() + "------" + ex.Message);
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                    if (idLst.Count > 0)
+                    {
+                        SqlHelper.ExecuteNonQuery("delete from CE_ErpPreRequestData where id in (" + string.Join(",", idLst) + ") ;");
+                        helper.writeLog("同步完成" + idLst.Count);
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+
+            }
+            finally
+            {
+                preIsGet = false;
+            }
+        }
+
         bool refundisGet = false;
         int refund_tbt_count = 0;
         int refundtbt_max = 0;