From b409ece9569247d7e7b44fc15e8a02556ca05a57 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期四, 01 七月 2021 15:27:23 +0800
Subject: [PATCH] 合并温居城代码

---
 HDL_ON/DAL/Server/HttpUtil.cs |  235 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 180 insertions(+), 55 deletions(-)

diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index 0fa2299..75c9b97 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -6,18 +6,20 @@
 using System.Text;
 using HDL_ON.Entity;
 using RestSharp;
-using Shared;
 
 namespace HDL_ON.DAL.Server
 {
     public class HttpUtil
     {
 
-        #region HttpUtil 鍏ㄥ眬甯搁噺
-        ///// <summary>
-        ///// API_HTTPS
-        ///// </summary>
-        //public const string API_HTTPS = "https://";
+        #region **********鍏ㄥ眬甯搁噺**********
+        /// <summary>
+        /// 鍥哄畾鍩熷悕,姝e紡鐜
+        /// 鍏叡鍩熷悕灏辫繎瑙f瀽
+        /// 
+        /// </summary>
+        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
         /// <summary>
         /// RegionMark
         /// </summary>
@@ -37,11 +39,7 @@
 
         #endregion
 
-        /// <summary>
-        /// 鍥哄畾鍩熷悕
-        /// </summary>
-        //public const string GlobalRequestHttpsHost = "https://center.hdlcontrol.com";
-        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
+        #region **********缃戠粶璇锋眰灏佽**********
 
         /// <summary>
         ///  Get  璇锋眰鏈嶅姟鍣ㄦ柟娉�
@@ -95,7 +93,7 @@
         /// <returns></returns>
         public static ResponsePackNew RequestHttpsPostFroHome(string apiPath, string bodyParameterJson, int mTimeout = 10)
         {
-            string urlHead = DB_ResidenceData.residenceData.residecenInfo.regionUrl;
+            string urlHead = DB_ResidenceData.Instance.CurrentRegion.regionUrl;
             //var replaceToken = "";
             //if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
             //{
@@ -146,29 +144,34 @@
         /// <param name="replaceToken"></param>
         /// <param name="mTimeout"></param>
         /// <returns></returns>
-        public static ResponsePackNew RequestHttps(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
+        static ResponsePackNew RequestHttpsBase(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
         {
+            //Dome妯″紡鐧诲綍
+
+            if(MainPage.NoLoginMode)
+            {
+                return new ResponsePackNew() { Code = "0" };
+            }
             #region HttpWebRequest
             try
             {
 
-                //if (string.IsNullOrEmpty(urlHead))
-                //{
-                //    urlHead = UserInfo.Current.RequestHttpsHost;
-                //}
-                //string requestFullUrl = urlHead + apiPath;
+                if (string.IsNullOrEmpty(urlHead))
+                {
+                    urlHead = OnAppConfig.Instance.RequestHttpsHost;
+                }
+                string requestFullUrl = urlHead + apiPath;
 
 
-                //**************娴嬭瘯**************
-                string requestFullUrl = GlobalRequestHttpsHost + apiPath;
-                //**************娴嬭瘯**************
+                ////**************娴嬭瘯**************
+                //string requestFullUrl = GlobalRequestHttpsHost + apiPath;
+                ////**************娴嬭瘯**************
 
                 RestClient client = new RestClient(requestFullUrl);
 
                 RestRequest request = new RestRequest(method);
                 request.Timeout = mTimeout * 1000;
                 request.AddHeader("content-type", "application/json");
-                //request.AddHeader ("cache-control", "no-cache");
 
                 if (string.IsNullOrEmpty(replaceToken))
                 {
@@ -213,7 +216,7 @@
                         //*****涓�浜涘垽绌哄鐞�*****************
                         if (revertObj.Code == null)
                         {
-                            revertObj.Code = "DATA_EXCEPTION";
+                            revertObj.Code = StateCode.DATA_EXCEPTION;
                         }
 
                         if (revertObj.Data == null)
@@ -222,31 +225,92 @@
                         }
                         //*****涓�浜涘垽绌哄鐞�*****************
 
-                        ////缁熶竴杞垚澶у啓
-                        //revertObj.StateCode = revertObj.StateCode.ToUpper ();
                         return revertObj;
                     }
                     catch (Exception ex)
                     {
                         HDL_ON.Utlis.WriteLine(ex.Message);
-                        return new ResponsePackNew() { Code = "DATA_EXCEPTION" };
+                        return new ResponsePackNew() { Code = StateCode.DATA_EXCEPTION };
                     }
                 }
                 else
                 {
                     HDL_ON.Utlis.WriteLine(response.Content);
-                    return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+                    return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
                 }
 
             }
             catch (Exception ex)
             {
                 HDL_ON.Utlis.WriteLine(ex.Message);
-                return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+                return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
             }
 
             #endregion
 
+        }
+
+        /// <summary>
+        /// 閫氱敤  璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// 澧炲姞token杩囨湡澶勭悊
+        /// </summary>
+        /// <param name="method"></param>
+        /// <param name="apiPath"></param>
+        /// <param name="bodyParameterJson"></param>
+        /// <param name="queryDictionary"></param>
+        /// <param name="urlSegmentDictionary"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static ResponsePackNew RequestHttps(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
+        {
+            var responsePackNew = RequestHttpsBase(method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
+            //*****************Token杩囨湡澶勭悊*****************
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                //鍒锋柊Token
+                if (RefreshToken()) {
+                    return RequestHttpsBase(method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
+                }
+                else
+                {
+                    return responsePackNew;
+                }
+            }
+            //*****************Token杩囨湡澶勭悊*****************
+            return responsePackNew;
+        }
+
+
+        /// <summary>
+        /// 鍒锋柊Token
+        /// </summary>
+        /// <returns></returns>
+        static bool RefreshToken()
+        {
+            try
+            {
+                var requestJson = GetSignRequestJson(new RefreshTokenObj()
+                {
+                    refreshToken = UserInfo.Current.RefreshToken,
+                });
+                var revertObj = RequestHttpsBase(Method.POST, NewAPI.API_POST_Login, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(revertObj.Data.ToString());
+                    UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
+                    UserInfo.Current.RefreshToken = revertData.refreshToken;
+                    UserInfo.Current.LastTime = DateTime.Now;
+                    UserInfo.Current.SaveUserInfo();
+                    return true;
+                }
+                return false;
+            }
+            catch
+            {
+                return false;
+            }
         }
 
         /// <summary>
@@ -264,17 +328,17 @@
             #region RestRequest
             try
             {
-                //if (string.IsNullOrEmpty (urlHead)) {
-                //    urlHead = UserInfo.Current.RequestHttpsHost;
-                //}
-                //string requestFullUrl = urlHead + apiPath;
+                if (string.IsNullOrEmpty(urlHead))
+                {
+                    urlHead = OnAppConfig.Instance.RequestHttpsHost;
+                }
+                string requestFullUrl = urlHead + apiPath;
 
-                //**************娴嬭瘯**************
-                string requestFullUrl = GlobalRequestHttpsHost + apiPath;
-                //**************娴嬭瘯**************
+                ////**************娴嬭瘯**************
+                //string requestFullUrl = GlobalRequestHttpsHost + apiPath;
+                ////**************娴嬭瘯**************
 
                 RestClient client = new RestClient(requestFullUrl);
-                //client.Timeout = mTimeout * 1000;
                 RestRequest request = new RestRequest(Method.POST);
                 request.Timeout = mTimeout * 1000;
                 request.AddHeader("content-type", "application/json");
@@ -334,14 +398,15 @@
             try
             {
 
-                //if (string.IsNullOrEmpty (urlHead)) {
-                //    urlHead = UserInfo.Current.RequestHttpsHost;
-                //}
-                //string requestFullUrl = urlHead + apiPath;
+                if (string.IsNullOrEmpty(urlHead))
+                {
+                    urlHead = OnAppConfig.Instance.RequestHttpsHost;
+                }
+                string requestFullUrl = urlHead + apiPath;
 
-                //**************娴嬭瘯**************
-                string requestFullUrl = GlobalRequestHttpsHost + apiPath;
-                //**************娴嬭瘯**************
+                ////**************娴嬭瘯**************
+                //string requestFullUrl = GlobalRequestHttpsHost + apiPath;
+                ////**************娴嬭瘯**************
 
                 RestClient client = new RestClient(requestFullUrl);
                 //client.Timeout = mTimeout * 1000;
@@ -392,7 +457,7 @@
                         revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content);
                         if (revertObj.Code == null)
                         {
-                            revertObj.Code = "DATA_EXCEPTION";
+                            revertObj.Code = StateCode.DATA_EXCEPTION;
                         }
                         ////缁熶竴杞垚澶у啓
                         //revertObj.StateCode = revertObj.StateCode.ToUpper ();
@@ -401,26 +466,60 @@
                     catch (Exception ex)
                     {
                         HDL_ON.Utlis.WriteLine(ex.Message);
-                        return new ResponsePackNew() { Code = "DATA_EXCEPTION" };
+                        return new ResponsePackNew() { Code = StateCode.DATA_EXCEPTION };
                     }
                 }
                 else
                 {
                     HDL_ON.Utlis.WriteLine(response.Content);
-                    return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+                    return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
                 }
 
             }
             catch (Exception ex)
             {
                 HDL_ON.Utlis.WriteLine(ex.Message);
-                return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+                return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
             }
 
             #endregion
 
         }
 
+        /// <summary>
+        /// 涓嬭浇鏂囦欢  璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// </summary>
+        /// <param name="apiPath"></param>
+        /// <param name="bodyParameterJson"></param>
+        /// <param name="queryDictionary"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static byte[] HttpsDownload(string requestFullUrl, int mTimeout = 30)
+        {
+            #region RestRequest
+            try
+            {
+                RestClient client = new RestClient(requestFullUrl);
+                RestRequest request = new RestRequest(Method.GET);
+                request.Timeout = mTimeout * 1000;
+
+                IRestResponse response = client.Execute(request);
+                return response.RawBytes;
+            }
+            catch (Exception ex)
+            {
+                HDL_ON.Utlis.WriteLine(ex.Message);
+                return null;
+            }
+            #endregion
+
+        }
+
+        #endregion
+
+        #region **********绛惧悕鏍¢獙**********
         /// <summary>
         /// 
         /// </summary>
@@ -437,7 +536,8 @@
         static string GetTimestamp()
         {
             System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
-            return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 鐩稿樊绉掓暟
+            return ((long)(DateTime.Now - startTime).TotalMilliseconds).ToString(); // 鐩稿樊绉掓暟
+            //return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 鐩稿樊绉掓暟
         }
 
         /// <summary>
@@ -455,19 +555,36 @@
             }
             return signstr.ToLower();
         }
-
+        /// <summary>
+        /// 鍒ゆ柇褰撳墠鍊兼槸鍚﹂渶瑕佸弬涓庣鍚嶏紝淇濇寔璺熶簯绔竴鑷�
+        /// 绌哄瓧绗︿覆涓嶅弬涓�
+        /// 鏁扮粍,闆嗗悎,瀵硅薄涓嶅弬涓�
+        /// </summary>
+        /// <param name="valueStr"></param>
+        /// <returns></returns>
+        static bool IfValueNeedSign(string valueStr)
+        {
+            if (string.IsNullOrEmpty(valueStr) || valueStr.StartsWith("{") || valueStr.StartsWith("["))
+            {
+                return false;
+            }
+            return true;
+        }
         /// <summary>
         /// 2020-11-02
         /// 鍩虹鏈嶅姟鐨勬帴鍙i兘瑕佹牎楠宻ign
         /// 璁$畻sign绛惧悕
         /// </summary>
         /// <returns></returns>
-        public static string GetSignRequestJson(object requestObj)
+        public static string GetSignRequestJson(object requestObj,Dictionary<string,object> paramDictionary = null)
         {
             try
             {
                 //1. 灏唌odel瀹炰綋杞负Dictionary<string, object>
-                var paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj));
+                if (paramDictionary == null)
+                {
+                    paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj));
+                }
                 //2. 璁$畻sign
                 if (paramDictionary != null)
                 {
@@ -483,7 +600,10 @@
                         if (item.Value != null)
                         {
                             //Value.ToString()涓簄ull鎴栬��""涔熶笉鍙傚姞鏍¢獙
-                            if (!string.IsNullOrEmpty(item.Value.ToString()))
+                            //if (!string.IsNullOrEmpty(item.Value.ToString()) && (item.Value is string || item.Value.GetType().IsValueType))
+                            //{
+                            //妫�娴嬪綋鍓嶅弬鏁版槸鍚﹂渶瑕佸弬涓庢牎楠�
+                            if (IfValueNeedSign(item.Value.ToString()))
                             {
                                 //濡傛灉鏄痓ool绫诲瀷锛岃杞皬鍐�
                                 if (item.Value is bool)
@@ -503,7 +623,8 @@
                     //2.4 MD5杞崲+杞皬鍐�
                     var signstr = SignMD5Encrypt(str);
                     paramDictionary.Add("sign", signstr);
-                    return Newtonsoft.Json.JsonConvert.SerializeObject(paramDictionary);
+                    var signResult = Newtonsoft.Json.JsonConvert.SerializeObject(paramDictionary);
+                    return signResult;
                 }
                 else
                 {
@@ -516,6 +637,7 @@
             }
         }
 
+        #endregion
     }
 
     /// <summary>
@@ -539,6 +661,11 @@
         /// </summary>
         public string message;
 
+        /// <summary>
+        /// 杩欎釜鏄姹傞敊璇椂鐨勬墿灞曟暟鎹�,浠ュ悗鎵�鏈夌殑闄勫甫鎵╁睍鏁版嵁閮戒細鏀惧湪杩欓噷闈㈠姩鎬佺淮鎶�
+        /// </summary>
+        public object extra;
+
         ///// <summary>
         ///// isSuccess
         ///// </summary>
@@ -551,7 +678,5 @@
 
 
     }
-
-
 
 }

--
Gitblit v1.8.0