From e90209beae6a4e822cecb18e6889f8bda23f630e Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 14 十二月 2020 11:16:06 +0800
Subject: [PATCH] 合并了晾衣架(非新云端)

---
 ZigbeeApp/Shared/Common/CommonPage.cs |  352 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 349 insertions(+), 3 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/CommonPage.cs b/ZigbeeApp/Shared/Common/CommonPage.cs
index b0eceaf..b91f081 100755
--- a/ZigbeeApp/Shared/Common/CommonPage.cs
+++ b/ZigbeeApp/Shared/Common/CommonPage.cs
@@ -9,14 +9,14 @@
 {
     public class CommonPage : UIDrawerLayout
     {
-        private static CommonPage commonPage;
+        static CommonPage commonPage;
         public static CommonPage Instance
         {
             get
             {
                 if (commonPage == null)
                 {
-                    commonPage = new CommonPage();
+                    commonPage = new CommonPage { };
                 }
                 return commonPage;
             }
@@ -40,17 +40,363 @@
             Application.SetStatusBarTextBlack(true);
         }
 
+        //public static string RequestHttpsHost = "https://global.hdlcontrol.com/HangZhouHdlCloudApi";
+        public static string RequestHttpsHost = "https://global.hdlcontrol.com/ProposedProductionApi";
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string CodeIDString = "1.1.0120101501";
+        public static string CodeIDString = "1.1.0120121401";
+        /// <summary>
+        /// 娉ㄥ唽鏉ユ簮(0:HDL On 1:Zigbee)
+        /// </summary>
+        public static int RegisterSoruceFromZIGBEE = 0;
+        /// <summary>
+        /// Company 鐢ㄦ埛鍏徃鐢ㄤ簬鍏徃App瀹氬埗鐗�  榛樿0
+        /// </summary>
+        public static int Company = 0;
+        /// <summary>
+        /// 娴峰 娉ㄥ唽鏃禔PI璋冪敤鍜屽浗鍐呭尯鍒�
+        ///</summary>
+        public static int CompanyForINTERNETION = 4;
         /// <summary>
         /// 璇锋眰鐗堟湰鍙�
         /// </summary>
         public static string RequestVersion = "2.0";
         /// <summary>
+        /// 宸﹁竟璺濈灞忓箷鐨勫搴�--58
+        /// </summary>
+        public static int XLeft = 58;
+        /// <summary>
+        /// 浣跨敤鐨勮瑷�
+        /// </summary>
+        public static string ZigBeeLanguage
+        {
+            get
+            {
+                return Language.CurrentLanguage;
+            }
+        }
+        /// <summary>
         /// 榛樿鎵嬫満鍖哄彿涓�86涓浗澶ч檰
         /// </summary>
         public static string PhoneZoneStr = "86";
+        /// <summary>
+        /// APP瀹藉害 -- 1080
+        /// </summary>
+        public static int AppRealWidth = 1080;
+
+        /// <summary>
+        /// 鐢ㄤ簬涓浗澶ч檰楠岃瘉鎵嬫満鍙锋鍒欒〃杈惧紡
+        /// </summary>
+        public static string PhoneRegexStr = "^[1][0-9]{10}$";
+        /// <summary>
+        /// 鐢ㄤ簬楠岃瘉闈炰腑鍥藉ぇ闄嗘墜鏈哄彿姝e垯琛ㄨ揪寮�
+        /// </summary>
+        public static string PhoneForForeignRegexStr = "^[0-9]*$";
+        /// <summary>
+        /// 鐢ㄤ簬楠岃瘉閭姝e垯琛ㄨ揪寮�
+        /// </summary>
+        public static string EmailRegexStr = "^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$";
+        /// <summary>
+        /// 瀹夊崜鐨勭郴缁熻繑鍥炴寜閿兘鍚︽寜涓�(姣斿鍦ㄥ浠借繕鍘熸椂,涓嶈兘鎸変笅杩斿洖閿�)
+        /// </summary>
+        public static bool BackKeyCanClick = true;
+
+        /// <summary>
+        /// 璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁
+        /// </summary>
+        /// <param name="requestUrl">璇锋眰Url</param>
+        /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param>
+        /// <param name="timeout">瓒呮椂,榛樿5绉�</param>
+        /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns>
+        public ResponseEntity.ResponsePack RequestHttpsZigbeeAsync(string requestUrl, byte[] byteData, int timeout = 5)
+        {
+            string result = this.RequestHttpsZigbeeResultAsync(requestUrl, byteData, timeout);
+            if (result != null)
+            {
+                try
+                {
+                    var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResponsePack>(result);
+                    return data;
+                }
+                catch (Exception ex)
+                {
+                    System.Console.WriteLine(ex.Message);
+                }
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁
+        /// </summary>
+        /// <param name="requestUrl">璇锋眰Url</param>
+        /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param>
+        /// <param name="timeout">瓒呮椂,榛樿5绉�</param>
+        /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns>
+        public string RequestHttpsZigbeeResultAsync(string requestUrl, byte[] byteData, int timeout = 5)
+        {
+            var result = RequestHttpsZigbeeBytesResultAsync(requestUrl, byteData, "POST", timeout);
+            if (result != null)
+            {
+                return Encoding.UTF8.GetString(result);
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁
+        /// </summary>
+        /// <param name="requestUrl">璇锋眰Url</param>
+        /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param>
+        /// <param name="requestMethod">POST 鎴栬�� GET 绛夌瓑</param>
+        /// <param name="timeout">瓒呮椂,榛樿5绉�</param>
+        /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns>
+        public byte[] RequestHttpsZigbeeBytesResultAsync(string requestUrl, byte[] byteData, string requestMethod = "POST", int timeout = 5)
+        {
+            //璇锋眰Url鐨勫畬鎴愯矾寰�
+            var fullUrl = $"{RequestHttpsHost}/{requestUrl}";
+            return this.DoRequestZigbeeHttpsInterface(fullUrl, byteData, Config.Instance.Token, requestMethod, timeout);
+        }
+
+        /// <summary>
+        /// <pra>璇锋眰鏈嶅姟鍣ㄦ柟娉�,鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁</pra>
+        /// <pra>娉ㄦ剰!!姝ゆ柟娉曚粎闄愩�愭嫢鏈夌鐞嗗憳鏉冮檺鐨勬垚鍛樸�戣皟鐢�</pra>
+        /// </summary>
+        /// <param name="requestUrl">璇锋眰Url</param>
+        /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param>
+        /// <param name="requestMethod">POST 鎴栬�� GET 绛夌瓑</param>
+        /// <param name="timeout">瓒呮椂,榛樿5绉�</param>
+        /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns>
+        public byte[] RequestZigbeeHttpsByAdmin(string requestUrl, byte[] byteData, string requestMethod = "POST", int timeout = 5)
+        {
+            //璇锋眰Url鐨勫畬鎴愯矾寰�
+            var fullUrl = $"{Config.Instance.AdminRequestBaseUrl}/{requestUrl}";
+            return this.DoRequestZigbeeHttpsInterface(fullUrl, byteData, Config.Instance.AdminRequestToken, requestMethod, timeout);
+        }
+
+        /// <summary>
+        /// 璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// 鎸囧畾涓�涓猆rl,鍜岃姹傛柟娉曪紝鏁版嵁锛孋ookie锛屽緱鍒板搷搴旂殑鏁版嵁
+        /// </summary>
+        /// <param name="requestFullUrl">璇锋眰Url鐨勫畬鎴愯矾寰�</param>
+        /// <param name="byteData">璇锋眰鐨勭殑鏁版嵁</param>
+        /// <param name="token">token</param>
+        /// <param name="requestMethod">POST 鎴栬�� GET 绛夌瓑</param>
+        /// <param name="timeout">瓒呮椂,榛樿5绉�</param>
+        /// <returns>寰楀埌鍝嶅簲鐨勬暟鎹�</returns>
+        public byte[] DoRequestZigbeeHttpsInterface(string requestFullUrl, byte[] byteData, string token, string requestMethod = "POST", int timeout = 5)
+        {
+            try
+            {
+                //鍒濆鍖栨柊鐨剋ebRequst
+                //1锛� 鍒涘缓httpWebRequest瀵硅薄
+                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(requestFullUrl));
+
+                //2锛� 鍒濆鍖朒ttpWebRequest瀵硅薄
+                webRequest.Method = requestMethod;
+                webRequest.Timeout = timeout * 1000;
+                //鍙栨秷浣跨敤浠g悊璁块棶
+                webRequest.Proxy = null;
+                webRequest.UseDefaultCredentials = false;
+                if (token != null)
+                {
+                    //瀵瑰簲寰俊缃戝潃
+                    webRequest.Headers.Add(HttpRequestHeader.Authorization, token);
+                }
+                if (requestMethod == "GET")
+                {
+                    //webRequest.ContentType = "text/html";
+                    webRequest.ContentType = "application/json";
+                }
+                else
+                {
+                    webRequest.ContentType = "application/json";
+                    webRequest.ContentLength = byteData.Length;
+
+                    //3锛� 闄勫姞瑕丳OST缁欐湇鍔″櫒鐨勬暟鎹埌HttpWebRequest瀵硅薄(闄勫姞POST鏁版嵁鐨勮繃绋嬫瘮杈冪壒娈婏紝瀹冨苟娌℃湁鎻愪緵涓�涓睘鎬х粰鐢ㄦ埛瀛樺彇锛岄渶瑕佸啓鍏ttpWebRequest瀵硅薄鎻愪緵鐨勪竴涓猻tream閲岄潰銆�)
+                    var newStream = webRequest.GetRequestStream();//鍒涘缓涓�涓猄tream,璧嬪�兼槸鍐欏叆HttpWebRequest瀵硅薄鎻愪緵鐨勪竴涓猻tream閲岄潰
+                    newStream.Write(byteData, 0, byteData.Length);
+                    newStream.Flush();
+                    newStream.Close();
+                }
+
+                //4锛� 璇诲彇鏈嶅姟鍣ㄧ殑杩斿洖淇℃伅
+                var response = (HttpWebResponse)webRequest.GetResponse();
+                using (var stream = response.GetResponseStream())
+                {
+                    if (stream == null)
+                    {
+                        return null;
+                    }
+                    var ms = new MemoryStream();
+                    var bytes = new byte[1024];
+                    var len = int.MaxValue;
+                    while (stream.CanRead && 0 < len)
+                    {
+                        len = stream.Read(bytes, 0, bytes.Length);
+                        ms.Write(bytes, 0, len);
+                    }
+                    return ms.ToArray();
+                }
+            }
+            catch (WebException e)
+            {
+                if (e.Status == WebExceptionStatus.ConnectFailure//鐢辨湁缃戠粶鍒囨崲鍒版棤缃戠粶鏃惰Е鍙�
+                    || e.Status == WebExceptionStatus.Timeout//瓒呮椂
+                    || e.Status == WebExceptionStatus.NameResolutionFailure)//鏈韩灏辨槸鏃犵綉缁滄椂鍚姩鏃惰Е鍙�
+                {
+                    Phone.UserCenter.HdlWifiLogic.Current.CanAccessHttp = false;
+                }
+                return null;
+            }
+            catch (Exception e)
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄨ幏鍙栨暟鎹け璐ユ彁绀�
+        /// </summary>
+        public void FailureToServer()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.RequestServerFailed), Language.StringByID(R.MyInternationalizationString.Confrim));
+                alert.Show();
+            });
+        }
+        /// <summary>
+        /// 鏄剧ず閿欒鎻愮ず
+        /// </summary>
+        /// <param name="errorStringID">Error string identifier.</param>
+        public void ShowErrorInfoAlert(int errorStringID)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(errorStringID), Language.StringByID(R.MyInternationalizationString.Confrim));
+                alert.Show();
+            });
+        }
+        /// <summary>
+        /// Get鏈嶅姟鍣ㄦ柟娉�1
+        /// </summary>
+        public string GetMethod(string requestUrl)
+        {
+            string requestMethod = "get";
+            string urlHead = $"{RequestHttpsHost}/FeerView/";
+            string url = urlHead + requestUrl;
+            HttpWebRequest httpWebRequestObj = WebRequest.CreateHttp(url);
+            httpWebRequestObj.Method = requestMethod;
+            using (HttpWebResponse httpWebResponseObj = httpWebRequestObj.GetResponse() as HttpWebResponse)
+            {
+                if (httpWebResponseObj == null)
+                {
+                    return null;
+                }
+                else
+                {
+                    Stream ResponseStream = httpWebResponseObj.GetResponseStream();
+                    using (StreamReader Sr = new StreamReader(ResponseStream))
+                    {
+                        string responseString = Sr.ReadToEnd();
+                        return responseString;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鐧诲嚭
+        /// </summary>
+        public void SingOut()
+        {
+            try
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    //璁惧畾涓�涓椂闂�
+                    Config.Instance.LoginDateTime = new DateTime(1970, 1, 1);
+                    Config.Instance.Save();
+                    CommonPage.Instance.RemoveAll();
+                    CommonPage.Instance.Show();
+                    var login = new Phone.Login.AccountLoginForm();
+                    CommonPage.Instance.AddChidren(login);
+                    login.ShowForm();
+                });
+            }
+            catch { }
+        }
+
+        /// <summary>
+        /// 閫�鍑虹櫥褰曟椂璋冪敤锛屾竻闄ゆ帹閫佹暟鎹�
+        /// </summary>
+        public void SignOutClearData()
+        {
+            try
+            {
+                System.Threading.Tasks.Task.Run(() =>
+                {
+                    using (var client = new System.Net.Http.HttpClient())
+                    {
+                        client.DefaultRequestHeaders.Add("ContentType", "application/json");
+                        client.DefaultRequestHeaders.Add("Authorization", Shared.Common.Config.Instance.Token);
+                        var responseString = client.GetStringAsync($"{CommonPage.RequestHttpsHost}/ZigbeeUsers/SignOut");
+                    }
+                });
+            }
+            catch { }
+        }
+
+        /// <summary>
+        /// 鐧诲綍鎴愬姛鍚庝笂鎶ヨ澶噄d绛夌浉鍏充俊鎭粰鍚庣
+        /// </summary>
+        /// <returns>杩斿洖鐘舵�佺爜</returns>
+        public string PushRegID()
+        {
+#if DEBUG
+            //璋冭瘯涓嶉渶瑕佸彂閫佽繖涓笢瑗�
+            return null;
+#endif
+            try
+            {
+                string deviceAlias;
+                string deviceType;
+#if iOS
+                deviceAlias = UIKit.UIDevice.CurrentDevice.Name;
+                deviceType = "iphone";
+#elif Android
+                deviceAlias = Android.OS.Build.Manufacturer;
+                deviceType = "android";
+#endif
+
+                var RegIDObj = new SendDataToServer.SignZigbeeNeedPushRegIDObj()
+                {
+                    RegID = Shared.Common.Config.Instance.RegistrationID,
+                    DeviceAlias = deviceAlias,
+                    DeviceType = deviceType
+                };
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(RegIDObj);
+                var reverObj = CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/SignZigbeeNeedPushRegID", System.Text.Encoding.UTF8.GetBytes(requestJson), 4);
+                if (reverObj == null)
+                {
+                    //璋冭瘯:璁板綍鏋佸厜ID
+                    Phone.UserCenter.HdlLogLogic.Current.WriteOtherText(Shared.Phone.UserCenter.DirNameResourse.JiguangFile, "send:" + RegIDObj.RegID + " fail,receive obj is null", false, true);
+                    return null;
+                }
+                //璋冭瘯:璁板綍鏋佸厜ID
+                Phone.UserCenter.HdlLogLogic.Current.WriteOtherText(Shared.Phone.UserCenter.DirNameResourse.JiguangFile, "send:" + RegIDObj.RegID + " result:" + reverObj.StateCode, false, true);
+
+                return reverObj.StateCode;
+            }
+            catch
+            {
+                return null;
+            }
+        }
     }
 }

--
Gitblit v1.8.0