lcl пре 5 месеци
родитељ
комит
61d53a2144

+ 5 - 4
AppStart/Helper/PosPushDataNewHelper.cs

@@ -374,10 +374,11 @@ namespace MySystem
             Dictionary<string, object> data = new Dictionary<string, object>();
             data.Add("data_type", dataType);
             data.Add("data_content", dataContent);
-            if(RedisDbconn.Instance.Get<string>("KxsPosDataQueueStatus") == "1")
-            {
-                RedisDbconn.Instance.AddList("KxsPosDataQueue", Newtonsoft.Json.JsonConvert.SerializeObject(data));
-            }
+            // if(RedisDbconn.Instance.Get<string>("KxsPosDataQueueStatus") == "1")
+            // {
+            //     RedisDbconn.Instance.AddList("KxsPosDataQueue", Newtonsoft.Json.JsonConvert.SerializeObject(data));
+            // }
+            PosPushHelper.Instance.DoSomeThing(Newtonsoft.Json.JsonConvert.SerializeObject(data));
         }
 
         public static string getRequestId(int id, string type)

+ 142 - 0
AppStart/Helper/PosPushHelper.cs

@@ -0,0 +1,142 @@
+using System;
+using System.Linq;
+using System.Data;
+using System.Threading;
+using Library;
+using LitJson;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Net;
+
+namespace MySystem
+{
+    public class PosPushHelper
+    {
+        public readonly static PosPushHelper Instance = new PosPushHelper();
+        private PosPushHelper()
+        {
+        }
+
+        //要执行的方法
+        public void DoSomeThing(string content)
+        {
+            string url = "";
+            function.WriteLog(DateTime.Now.ToString() + "\n" + content, "统一推送日志");
+            content = content.Replace("null", "\"\"");
+            JsonData jsonObj = JsonMapper.ToObject(content);
+            string dataType = jsonObj["data_type"].ToString();
+            string dataContent = jsonObj["data_content"].ToJson();
+            if(dataType == "bind") url = "https://apigateway.kexiaoshuang.com/v1/kxs/statServer/sp/binding";
+            if(dataType == "un_bind") url = "https://apigateway.kexiaoshuang.com/v1/kxs/statServer/sp/unbind";
+            if(dataType == "trade") url = "https://apigateway.kexiaoshuang.com/v1/kxs/statServer/sp/trade";
+            if(dataType == "deposit") url = "https://apigateway.kexiaoshuang.com/v1/kxs/statServer/sp/cash";
+            if(dataType == "active") url = "https://apigateway.kexiaoshuang.com/v1/kxs/statServer/sp/extActData";
+            function.WriteLog("url:" + url, "统一推送日志");
+            string encryptContent = AesEncrypt(dataContent);
+            encryptContent = Convert.ToBase64String(Encoding.UTF8.GetBytes(encryptContent));
+            function.WriteLog("encryptContent:" + encryptContent, "统一推送日志");
+            string res = PostWebRequest(url, encryptContent, new Dictionary<string, string>());
+            function.WriteLog("res:" + res + "\n\n\n", "统一推送日志");
+            if(!res.Contains("\"status\""))
+            {
+                SaveToDb(dataContent, encryptContent, dataType, res);
+                return;
+            }
+            JsonData backObj = JsonMapper.ToObject(res);
+            if(backObj["status"].ToString() != "1")
+            {
+                SaveToDb(dataContent, encryptContent, dataType, res);
+                return;
+            }
+        }
+
+        public void SaveToDb(string content, string encryptContent, string dataType, string backContent)
+        {
+            // WebCMSEntities db = new WebCMSEntities();
+            // db.PushPosRecord.Add(new PushPosRecord()
+            // {
+            //     CreateDate = DateTime.Now,
+            //     Content = content,
+            //     DataType = dataType,
+            //     EncryptContent = encryptContent,
+            //     BackContent = backContent,
+            // });
+            // db.SaveChanges();
+            // db.Dispose();
+        }
+
+        public string AesEncrypt(string str)
+        {
+            if (string.IsNullOrEmpty(str)) return null;
+            Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
+            string key = "CBTU1dD4Kd5pyiGWTsI10jRQ3SvKusSV";
+            string iv = "DYgjCEIMVrj2W9xN";
+
+            System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
+            {
+                Key = Encoding.UTF8.GetBytes(key),
+                IV = Encoding.UTF8.GetBytes(iv),
+                Mode = System.Security.Cryptography.CipherMode.CBC,
+                Padding = System.Security.Cryptography.PaddingMode.PKCS7
+            };
+            System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateEncryptor();
+            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
+        }
+
+        public string PostWebRequest(string postUrl, string paramData, Dictionary<string, string> headers)
+        {
+            string ret = string.Empty;
+            try
+            {
+                byte[] postData = System.Text.Encoding.UTF8.GetBytes(paramData);
+                // 设置提交的相关参数 
+                HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
+                System.Text.Encoding myEncoding = System.Text.Encoding.UTF8;
+                request.Method = "POST";
+                request.KeepAlive = false;
+                request.AllowAutoRedirect = true;
+                request.ContentType = "application/json";
+                foreach (string key in headers.Keys)
+                {
+                    request.Headers.Add(key, headers[key]);
+                }
+                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR  3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
+
+                request.ContentLength = postData.Length;
+
+                // 提交请求数据 
+                Stream outputStream = request.GetRequestStream();
+                outputStream.Write(postData, 0, postData.Length);
+                outputStream.Close();
+                HttpWebResponse response;
+                Stream responseStream;
+                StreamReader reader;
+                string srcString;
+                response = request.GetResponse() as HttpWebResponse;
+                responseStream = response.GetResponseStream();
+                reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);
+                srcString = reader.ReadToEnd();
+                ret = srcString;   //返回值赋值
+                reader.Close();
+            }
+            catch (WebException ex)
+            {
+                HttpWebResponse response = (HttpWebResponse)ex.Response;
+                Stream myResponseStream = response.GetResponseStream();
+                //获取响应内容
+                StreamReader myStreamReader = new StreamReader(myResponseStream);
+                ret = myStreamReader.ReadToEnd();
+                myResponseStream.Close();
+            }
+            catch (Exception ex)
+            {
+                ret = "fail";
+                function.WriteLog(DateTime.Now.ToString() + "\r\n" + ex.ToString(), "POST请求异常");
+            }
+            return ret;
+        }
+        
+    }
+}

+ 0 - 1
AppStart/Helper/SycnSpServer/SycnSpBindService.cs

@@ -54,7 +54,6 @@ namespace MySystem
                                 if(Bind.ProductType == "12" || Bind.ProductType == "30")
                                 {
                                     RedisDbconn.Instance.Set("sppos:" + Bind.MerNo, Bind.MerSnNo);
-                                    RedisDbconn.Instance.SetExpire("sppos:" + Bind.MerNo, 1800);
                                 }
                                 if(Utils.Instance.IsWifi(int.Parse(Bind.ProductType)))
                                 {

+ 6 - 1
AppStart/Helper/SycnSpServer/SycnSpMerchantRecordService.cs

@@ -37,10 +37,15 @@ namespace MySystem
                         var tran = db.Database.BeginTransaction();
                         try
                         {
-                            if(Mer.ProductType == "12") Mer.MerSnNo = RedisDbconn.Instance.Get<string>("sppos:" + Mer.MerNo);
+                            if(Mer.ProductType == "12") 
+                            {
+                                Mer.MerSnNo = RedisDbconn.Instance.Get<string>("sppos:" + Mer.MerNo);
+                                RedisDbconn.Instance.SetExpire("sppos:" + Mer.MerNo, -1);
+                            }
                             if(Mer.ProductType == "30") 
                             {
                                 Mer.MerSnNo = RedisDbconn.Instance.Get<string>("sppos:" + Mer.Field3);
+                                RedisDbconn.Instance.SetExpire("sppos:" + Mer.MerNo, -1);
                                 if(!db.LklMerNo.Any(m => m.ExtMerNo == Mer.Field3))
                                 {
                                     db.LklMerNo.Add(new PxcModels.LklMerNo()