From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 09:07:13 +0800
Subject: [PATCH] 新云端Ver1.3

---
 ZigbeeApp/Shared/Phone/Common/Logic/HdlAccountLogic.cs | 1206 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,206 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Common/Logic/HdlAccountLogic.cs b/ZigbeeApp/Shared/Phone/Common/Logic/HdlAccountLogic.cs
new file mode 100644
index 0000000..7fe8264
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Common/Logic/HdlAccountLogic.cs
@@ -0,0 +1,1206 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.RegularExpressions;
+using Shared.Common;
+
+namespace Shared.Phone
+{
+    /// <summary>
+    /// 鐧婚檰鐣岄潰鐨勯�昏緫
+    /// </summary>
+    public class HdlAccountLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鐧婚檰鐣岄潰鐨勯�昏緫
+        /// </summary>
+        private static HdlAccountLogic m_Current;
+        /// <summary>
+        /// 鐧婚檰鐣岄潰鐨勯�昏緫
+        /// </summary>
+        public static HdlAccountLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlAccountLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 璐﹀彿娉ㄥ唽___________________________
+
+        /// <summary>
+        /// 娉ㄥ唽璐﹀彿,骞惰繑鍥炲凡缈昏瘧鐨勯敊璇俊鎭�(杩斿洖null浠h〃鎴愬姛)
+        /// </summary>
+        /// <param name="i_account">鎵嬫満鍙锋垨鑰呴偖绠�</param>
+        /// <param name="i_password">瀵嗙爜</param>
+        /// <param name="i_verifyCode">楠岃瘉鐮�</param>
+        /// <returns></returns>
+        public string RegisterAccount(string i_account, string i_password, string i_verifyCode)
+        {
+            string accountName = i_account.Contains("@") == true ? "memberEmail" : "memberPhone";
+            var dicBody = new Dictionary<string, string>();
+            dicBody["memberName"] = i_account;
+            dicBody[accountName] = i_account;
+            dicBody["loginPwd"] = i_password;
+            dicBody["verifyCode"] = i_verifyCode;
+
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/oauth/register", RestSharp.Method.POST, dicBody, null, null, CheckMode.A涓嶆娴�, false, 5, true);
+            if (result == null)
+            {
+                //娉ㄥ唽澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10017);
+            }
+            if (result.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                return null;
+            }
+            //鑾峰彇缈昏瘧
+            string errorMsg = HdlMessageLogic.Current.TranslateHttpCode(result.Code);
+            if (errorMsg == null)
+            {
+                //娉ㄥ唽澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10017);
+            }
+            return errorMsg;
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�侀獙璇佺爜_________________________
+
+        /// <summary>
+        /// 鍙戦�侀獙璇佺爜鍒伴偖绠�,骞惰繑鍥炲凡缈昏瘧鐨勯敊璇俊鎭�(杩斿洖null浠h〃鎴愬姛)
+        /// </summary>
+        /// <param name="i_email">閭</param>
+        /// <param name="codeType">楠岃瘉鐮佺殑绫诲瀷</param>
+        /// <param name="i_codeTime">楠岃瘉鐮佽繃鏈熸椂闂�(绉�)</param>
+        /// <returns></returns>
+        public string SendVeriCodeToEmail(string i_email, VerCodeType codeType, int i_codeTime = 300)
+        {
+            //鍘昏幏鍙栧畠鐨勫尯鍩熷湴鍧�(null:鏃犳硶鑱旂綉 绌哄瓧绗︿覆:璐﹀彿涓嶅瓨鍦� 闈炵┖:姝e父鑾峰彇)
+            var strUrl = this.GetAccoutRegionInfo(i_email);
+            if (strUrl == null)
+            {
+                //鍙戦�侀獙璇佺爜澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10210);
+            }
+            //妫�娴嬫帴鍙h繑鍥炵殑璐﹀彿鐨刄rl鏄惁鏈夐棶棰�
+            var errorMsg = this.CheckAccoutRegionUrlByCodeType(strUrl, codeType);
+            if (errorMsg != null)
+            {
+                return errorMsg;
+            }
+            var pra = new { mail = i_email, verifyType = (int)codeType, expireSecond = i_codeTime };
+            //璇锋眰Url鐨勫畬鎴愯矾寰�(鍙戦�侀獙璇佺爜闇�瑕佸彟澶栬幏鍙栧湴鍧�)
+            var fullUrl = strUrl + "/smart-footstone/verification/message/send";
+
+            var result = HdlHttpLogic.Current.DoRequestZigbeeHttps(fullUrl, Config.Instance.Token, RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, 3, true);
+            //杞崲鏁版嵁
+            var respone = HdlHttpLogic.Current.ConvertData(result);
+            if (respone == null)
+            {
+                //鍙戦�侀獙璇佺爜澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10210);
+            }
+            if (respone.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                return null;
+            }
+            //鑾峰彇缈昏瘧
+            errorMsg = HdlMessageLogic.Current.TranslateHttpCode(respone.Code);
+            if (errorMsg == null)
+            {
+                //鍙戦�侀獙璇佺爜澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10210);
+            }
+            return errorMsg;
+        }
+
+        /// <summary>
+        /// 鍙戦�侀獙璇佺爜鍒版墜鏈�,骞惰繑鍥炲凡缈昏瘧鐨勯敊璇俊鎭�(杩斿洖null浠h〃鎴愬姛)
+        /// </summary>
+        /// <param name="i_areaCode">鍦板尯鐮�</param>
+        /// <param name="i_phone">鎵嬫満鍙�</param>
+        /// <param name="codeType">楠岃瘉鐮佺殑绫诲瀷</param>
+        /// <param name="i_lanType">CHINESE or ENGLISH,褰撲笉鎸囧畾鏃�,榛樿浣跨敤搴曞眰鍙橀噺</param>
+        /// <param name="i_codeTime">楠岃瘉鐮佽繃鏈熸椂闂�(绉�)</param>
+        /// <returns></returns>
+        public string SendVeriCodeToPhone(string i_areaCode, string i_phone, VerCodeType codeType, string i_lanType = null, int i_codeTime = 300)
+        {
+            //鍘昏幏鍙栧畠鐨勫尯鍩熷湴鍧�(null:鏃犳硶鑱旂綉 绌哄瓧绗︿覆:璐﹀彿涓嶅瓨鍦� 闈炵┖:姝e父鑾峰彇)
+            var strUrl = this.GetAccoutRegionInfo(i_phone);
+            if (strUrl == null)
+            {
+                //鍙戦�侀獙璇佺爜澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10210);
+            }
+            //妫�娴嬫帴鍙h繑鍥炵殑璐﹀彿鐨刄rl鏄惁鏈夐棶棰�
+            var errorMsg = this.CheckAccoutRegionUrlByCodeType(strUrl, codeType);
+            if (errorMsg != null)
+            {
+                return errorMsg;
+            }
+
+            if (i_lanType == null)
+            {
+                i_lanType = Config.Instance.HttpLanguage;
+            }
+            var pra = new { phone = i_phone, phonePrefix = i_areaCode, languageType = i_lanType, verifyType = (int)codeType, expireSecond = i_codeTime };
+
+            //璇锋眰Url鐨勫畬鎴愯矾寰�(鍙戦�侀獙璇佺爜闇�瑕佸彟澶栬幏鍙栧湴鍧�)
+            var fullUrl = strUrl + "/smart-footstone/verification/message/send";
+
+            var result = HdlHttpLogic.Current.DoRequestZigbeeHttps(fullUrl, Config.Instance.Token, RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, 3, true);
+            //杞崲鏁版嵁
+            var respone = HdlHttpLogic.Current.ConvertData(result);
+            if (respone == null)
+            {
+                //鍙戦�侀獙璇佺爜澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10210);
+            }
+            if (respone.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                return null;
+            }
+            //鑾峰彇缈昏瘧
+            errorMsg = HdlMessageLogic.Current.TranslateHttpCode(respone.Code);
+            if (errorMsg == null)
+            {
+                //鍙戦�侀獙璇佺爜澶辫触
+                return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10210);
+            }
+            return errorMsg;
+        }
+
+        /// <summary>
+        /// 鏍¢獙楠岃瘉鐮�
+        /// </summary>
+        /// <param name="i_account">鎵嬫満鍙锋垨鑰呴偖绠�</param>
+        /// <param name="codeType">楠岃瘉鐮佺殑绫诲瀷</param>
+        /// <param name="i_verifyCode">楠岃瘉鐮�</param>
+        /// <returns></returns>
+        public bool CheckVeriCode(string i_account, VerCodeType codeType, string i_verifyCode)
+        {
+            //鍘昏幏鍙栧畠鐨勫尯鍩熷湴鍧�(null:鏃犳硶鑱旂綉 绌哄瓧绗︿覆:璐﹀彿涓嶅瓨鍦� 闈炵┖:姝e父鑾峰彇)
+            var strUrl = this.GetAccoutRegionInfo(i_account);
+            if (strUrl == null)
+            {
+                //鍙戦�侀獙璇佺爜澶辫触
+                return false;
+            }
+            //妫�娴嬫帴鍙h繑鍥炵殑璐﹀彿鐨刄rl鏄惁鏈夐棶棰�
+            var errorMsg = this.CheckAccoutRegionUrlByCodeType(strUrl, codeType);
+            if (errorMsg != null)
+            {
+                return false;
+            }
+
+            string accountName = i_account.Contains("@") == true ? "mail" : "phone";
+            var dicBody = new Dictionary<string, string>();
+            dicBody[accountName] = i_account;
+            dicBody["verifyType"] = ((int)codeType).ToString();
+            dicBody["verifyCode"] = i_verifyCode;
+
+            //璇锋眰Url鐨勫畬鎴愯矾寰�(鏍¢獙楠岃瘉鐮侀渶瑕佸彟澶栬幏鍙栧湴鍧�)
+            var fullUrl = strUrl + "/smart-footstone/verification/message/check";
+
+            var result = HdlHttpLogic.Current.DoRequestZigbeeHttps(fullUrl, Config.Instance.Token, RestSharp.Method.POST, dicBody, null, null, CheckMode.A涓嶆娴�, 3, true);
+            //杞崲鏁版嵁
+            var respone = HdlHttpLogic.Current.ConvertData(result);
+            if (respone == null)
+            {
+                return false;
+            }
+            return respone.Code == HttpMessageEnum.A鎴愬姛;
+        }
+
+        /// <summary>
+        /// 妫�娴嬫帴鍙h繑鍥炵殑璐﹀彿鐨刄rl鏄惁鏈夐棶棰�(null:娌¢棶棰� 闈瀗ull:宸茬粡缈昏瘧浜嗙殑閿欒淇℃伅)
+        /// </summary>
+        /// <param name="i_url">鎺ュ彛杩斿洖鐨勮处鍙风殑Url(null鐨勮瘽涓嶈璋冪敤)</param>
+        /// <param name="codeType">楠岃瘉鐮佺被鍨�</param>
+        /// <returns></returns>
+        private string CheckAccoutRegionUrlByCodeType(string i_url, VerCodeType codeType)
+        {
+            if (codeType == VerCodeType.A娉ㄥ唽)
+            {
+                //璐﹀彿宸茬粡娉ㄥ唽
+                if (i_url != string.Empty) { return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10016); }
+            }
+            else if (codeType == VerCodeType.A鎵惧洖瀵嗙爜)
+            {
+                //璐﹀彿涓嶅瓨鍦�
+                if (i_url == string.Empty) { return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10010); }
+            }
+            else if (codeType == VerCodeType.A鐧婚檰)
+            {
+                //璐﹀彿涓嶅瓨鍦�
+                if (i_url == string.Empty) { return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10010); }
+            }
+            else if (codeType == VerCodeType.A缁戝畾)
+            {
+                //璐﹀彿宸茬粡娉ㄥ唽
+                if (i_url != string.Empty) { return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10016); }
+            }
+            else if (codeType == VerCodeType.A鍏朵粬)
+            {
+                //璐﹀彿涓嶅瓨鍦�
+                if (i_url == string.Empty) { return HdlMessageLogic.Current.TranslateHttpCode(HttpMessageEnum.A10010); }
+            }
+            return null;
+        }
+
+        #endregion
+
+        #region 鈻� 璐﹀彿瀵嗙爜鐧婚檰_______________________
+
+        /// <summary>
+        /// 鑷姩鐧婚檰(鍙兘鐘舵�佺爜:Sucess  PswError  NotNetWork  OtherError)
+        /// </summary>
+        public AccountStatu AutoLoginByRefreshToken()
+        {
+            //鍒濆鍖栬处鍙锋墍鍦ㄧ殑鍖哄煙鍦板潃(-1:鑾峰彇涓嶅埌,浜戠涓婃病杩欎釜璐﹀彿 1:姝e父 2:鏃犵綉)
+            var result = this.InitAccoutRegionInfo(Config.Instance.Account);
+            if (result != AccountStatu.Sucess)
+            {
+                //娌$綉,鎴栬�呰处鍙蜂笉瀛樺湪,閮戒笉鐢ㄥ線涓嬭蛋
+                return result;
+            }
+
+            result = AccountStatu.OtherError;
+            //鐧婚檰
+            var revertObj = this.LoginByRefreshToken();
+            if (revertObj == null)
+            {
+                //娌℃湁缃戠粶
+                result = AccountStatu.NotNetWork;
+            }
+            else if (revertObj.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                //涓婃姤璁惧ID
+                this.PushDeviceIdToDB();
+                result = AccountStatu.Sucess;
+            }
+
+            //娌$綉,鎴栬�呮槸鏈夌綉骞朵笖鐧婚檰鎴愬姛鏃�,鍒锋柊涓汉淇℃伅
+            if (result == AccountStatu.Sucess || result == AccountStatu.NotNetWork)
+            {
+                //鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅(鐧婚檰鐨�,杩欓噷鎴愪笉鎴愬姛閮芥棤鎵�璋�)
+                this.InitUserAccoutInfo(true, result == AccountStatu.Sucess);
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 璐﹀彿瀵嗙爜鐧婚檰(鎴愬姛鏃�,鑷姩鍒锋柊Config)
+        /// </summary>
+        /// <param name="i_account">璐﹀彿</param>
+        /// <param name="i_password">瀵嗙爜</param>
+        public ResponsePack LoginByPassword(string i_account, string i_password)
+        {
+            //鍒濆鍖栬处鍙锋墍鍦ㄧ殑鍖哄煙鍦板潃(鍙兘鐘舵�佺爜:Sucess  NotAccount  NotNetWork)
+            var result = this.InitAccoutRegionInfo(i_account);
+            if (result == AccountStatu.NotAccount)
+            {
+                //璐﹀彿涓嶅瓨鍦�
+                return new ResponsePack { Code = HttpMessageEnum.A10010 };
+            }
+            if (result == AccountStatu.NotNetWork)
+            {
+                //娌$綉,涓嶇敤寰�涓嬭蛋
+                return null;
+            }
+
+            //鐧婚檰
+            var pra = new { grantType = "password", account = i_account, loginPwd = i_password };
+            var revertObj = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/oauth/login", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+
+            if (revertObj != null && revertObj.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                //浜戠涓嶅啀杩斿洖璐﹀彿瀛楁
+                Config.Instance.Account = i_account;
+                //鏍规嵁鐧婚檰涔嬪悗,浜戠杩斿洖鐨勬暟鎹�,鍒锋柊Config
+                this.RefreshConfigDataByLoginData(revertObj);
+
+                //鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅(鐧婚檰鐨�,杩欓噷鎴愪笉鎴愬姛閮芥棤鎵�璋�)
+                this.InitUserAccoutInfo(true, true);
+            }
+
+            return revertObj;
+        }
+
+        /// <summary>
+        /// 楠岃瘉鐮佺櫥闄�(鎴愬姛鏃�,鑷姩鍒锋柊Config)
+        /// </summary>
+        /// <param name="i_account">鎵嬫満鎴栬�呴偖绠�</param>
+        /// <param name="i_verifyCode">楠岃瘉鐮�</param>
+        public ResponsePack LoginByVerifyCode(string i_account, string i_verifyCode)
+        {
+            //鍒濆鍖栬处鍙锋墍鍦ㄧ殑鍖哄煙鍦板潃(-1:鑾峰彇涓嶅埌,浜戠涓婃病杩欎釜璐﹀彿 1:姝e父 2:鏃犵綉)
+            var result = this.InitAccoutRegionInfo(i_account);
+            if (result == AccountStatu.NotAccount)
+            {
+                //璐﹀彿涓嶅瓨鍦�
+                return new ResponsePack { Code = HttpMessageEnum.A10010 };
+            }
+            if (result == AccountStatu.NotNetWork)
+            {
+                //娌$綉,涓嶇敤寰�涓嬭蛋
+                return null;
+            }
+
+            var pra = new { grantType = "verify", account = i_account, verifyCode = i_verifyCode };
+            //鐧婚檰鎺ュ彛鐗规畩,闇�瑕佸揩涓�鐐硅闂�,璁剧疆3绉掕秴鏃�
+            var revertObj = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/oauth/login", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+
+            if (revertObj != null && revertObj.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                //鏍规嵁鐧婚檰涔嬪悗,浜戠杩斿洖鐨勬暟鎹�,鍒锋柊Config
+                this.RefreshConfigDataByLoginData(revertObj);
+
+                //鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅 -1:鏃犵綉 1:姝e父 2:鐧婚檰涓嶈繘鍘� 3:鏉冮檺鍙樻洿浜�
+                this.InitUserAccoutInfo(true, true);
+            }
+
+            return revertObj;
+        }
+
+        /// <summary>
+        /// 鐢ㄣ�愬埛鏂癟oken銆戠櫥闄�(鎴愬姛鏃�,鑷姩鍒锋柊Config)
+        /// </summary>
+        public ResponsePack LoginByRefreshToken()
+        {
+            var pra = new { grantType = "refresh_token", refreshToken = Config.Instance.RefreshToken };
+            //鐧婚檰鎺ュ彛鐗规畩,闇�瑕佸揩涓�鐐硅闂�,璁剧疆3绉掕秴鏃�
+            var revertObj = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/oauth/login", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+
+            if (revertObj != null && revertObj.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                //鏍规嵁鐧婚檰涔嬪悗,浜戠杩斿洖鐨勬暟鎹�,鍒锋柊Config
+                this.RefreshConfigDataByLoginData(revertObj);
+            }
+
+            return revertObj;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐧婚檰涔嬪悗,浜戠杩斿洖鐨勬暟鎹�,鍒锋柊Config
+        /// </summary>
+        /// <param name="i_response">鏍规嵁鐧婚檰涔嬪悗,浜戠杩斿洖鐨勬暟鎹�</param>
+        private void RefreshConfigDataByLoginData(ResponsePack i_response)
+        {
+            //瀛樺偍鏁版嵁
+            var result = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(i_response.Data.ToString());
+
+            //鏍囪涓婁竴娆℃槸涓嶆槸鍚屼竴涓处鍙风櫥闄�
+            Config.Instance.TheSameLoginAccount = Config.Instance.Guid == result.UserId;
+            Config.Instance.Guid = result.UserId;
+            Config.Instance.LoginDateTime = DateTime.Now;
+            Config.Instance.Token = result.AccessToken;
+            Config.Instance.RefreshToken = result.RefreshToken;
+            Config.Instance.HeaderPrefix = result.HeaderPrefix;
+            Config.Instance.Save();
+        }
+
+        #endregion
+
+        #region 鈻� 缁戝畾璐﹀彿___________________________
+
+        /// <summary>
+        /// 缁戝畾璐﹀彿,骞惰繑鍥炲凡缈昏瘧鐨勯敊璇俊鎭�(杩斿洖null浠h〃鎴愬姛)
+        /// </summary>
+        /// <param name="i_account">閭鎴栬�呮墜鏈�</param>
+        /// <param name="i_veriCode">楠岃瘉鐮�</param>
+        /// <returns></returns>
+        public string BindAccount(string i_account, string i_veriCode)
+        {
+            bool isEmail = i_account.Contains("@");
+            string keyValue = isEmail == true ? "memberMail" : "memberPhone";
+            var pra = new Dictionary<string, string>();
+            pra[keyValue] = i_account;
+            pra["verifyCode"] = i_veriCode;
+
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/memberInfo/bindWithAccount", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+            if (result == null)
+            {
+                if (isEmail == true)
+                {
+                    //缁戝畾閭澶辫触
+                    return Language.StringByID(R.MyInternationalizationString.uBindEmailFail);
+                }
+                else
+                {
+                    //缁戝畾鎵嬫満澶辫触
+                    return Language.StringByID(R.MyInternationalizationString.uBindPhoneFail);
+                }
+            }
+            if (result.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                return null;
+            }
+            //鑾峰彇缈昏瘧
+            string errorMsg = HdlMessageLogic.Current.TranslateHttpCode(result.Code);
+            if (errorMsg == null)
+            {
+                if (isEmail == true)
+                {
+                    //缁戝畾閭澶辫触
+                    return Language.StringByID(R.MyInternationalizationString.uBindEmailFail);
+                }
+                else
+                {
+                    //缁戝畾鎵嬫満澶辫触
+                    return Language.StringByID(R.MyInternationalizationString.uBindPhoneFail);
+                }
+            }
+            return errorMsg;
+        }
+
+        #endregion
+
+        #region 鈻� 淇敼瀵嗙爜___________________________
+
+        /// <summary>
+        /// 淇敼瀵嗙爜
+        /// </summary>
+        /// <param name="i_oldPsw">鏃у瘑鐮�</param>
+        /// <param name="i_newPsw">鏂板瘑鐮�</param>
+        /// <returns></returns>
+        public bool EditorPassword(string i_oldPsw, string i_newPsw)
+        {
+            var pra = new { loginPwd = i_oldPsw, loginNewPwd = i_newPsw };
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/memberInfo/updatePwd", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 5, true);
+            //妫�娴嬬姸鎬佺爜
+            if (HdlCheckLogic.Current.CheckNetCode(result, ShowNetCodeMode.YES) == false)
+            {
+                return false;
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 閲嶇疆瀵嗙爜___________________________
+
+        /// <summary>
+        /// 閲嶇疆瀵嗙爜,骞惰繑鍥炲凡缈昏瘧鐨勯敊璇俊鎭�(杩斿洖null浠h〃鎴愬姛)
+        /// </summary>
+        /// <param name="i_account">閭鎴栬�呮墜鏈哄彿</param>
+        /// <param name="i_newPsw">鏂板瘑鐮�</param>
+        /// <param name="i_verifyCode">楠岃瘉鐮�</param>
+        /// <returns></returns>
+        public string ResetPassword(string i_account, string i_newPsw, string i_verifyCode)
+        {
+            string accountName = i_account.Contains("@") == true ? "memberEmail" : "memberPhone";
+            var dicBody = new Dictionary<string, string>();
+            dicBody[accountName] = i_account;
+            dicBody["loginPwd"] = i_newPsw;
+            dicBody["verifyCode"] = i_verifyCode;
+
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/oauth/forgetPwd", RestSharp.Method.POST, dicBody, null, null, CheckMode.A涓嶆娴�, false, 5, true);
+            if (result == null)
+            {
+                //閲嶇疆瀵嗙爜澶辫触
+                return Language.StringByID(R.MyInternationalizationString.uReSetPasswordFail);
+            }
+            if (result.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                return null;
+            }
+            //鑾峰彇缈昏瘧
+            string errorMsg = HdlMessageLogic.Current.TranslateHttpCode(result.Code);
+            if (errorMsg == null)
+            {
+                //閲嶇疆瀵嗙爜澶辫触
+                return Language.StringByID(R.MyInternationalizationString.uReSetPasswordFail);
+            }
+            return errorMsg;
+        }
+
+        #endregion
+
+        #region 鈻� 閲嶆柊鐧诲綍___________________________
+
+        /// <summary>
+        /// 閲嶆柊鐧诲綍
+        /// </summary>
+        /// <param name="account">璐﹀彿</param>
+        /// <param name="noticeDb">鏄惁閫氱煡浜戠</param>
+        public void ReLoginAgain(string account = "", bool noticeDb = true)
+        {
+            if (Config.Instance.Home.IsVirtually == true)
+            {
+                //濡傛灉鏄櫄鎷熶綇瀹�
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //璁惧畾涓�涓椂闂�
+                    Config.Instance.LoginDateTime = new DateTime(1970, 1, 1);
+                    Config.Instance.Save();
+                    //娓呯┖褰撳墠浣忓畢id
+                    Config.Instance.HomeId = string.Empty;
+                    //鏀惰捣宸﹁彍鍗�
+                    CommonPage.Instance.CloseLeftMenu();
+                    //鍏抽棴鍏ㄩ儴寮圭獥
+                    ShowMsgControl.CloseAllMsgDialog();
+                    //鍏抽棴鎵�鏈夋墦寮�浜嗙殑鐣岄潰
+                    HdlFormLogic.Current.CloseAllOpenForm(null, false);
+
+                    //鏄剧ず鐧婚檰鐢婚潰
+                    var formLogin = new Login.AccountLoginForm();
+                    Shared.Common.CommonPage.Instance.AddChidren(formLogin);
+                    formLogin.ShowForm(account);
+                });
+                return;
+            }
+            //鍏抽棴鎵�鏈夋帴鏀�
+            HdlGatewayReceiveLogic.Current.RemoveAllEvent();
+            //娓呴櫎鍗囩骇鍒楄〃
+            HdlFirmwareUpdateResourse.dicUpdateList.Clear();
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //妫�娴婣PP鏄惁鑳藉閫�鍑�
+                while (HdlUserCenterResourse.AccountOption.AppCanSignout == false)
+                {
+                    System.Threading.Thread.Sleep(500);
+                }
+                //璁惧畾涓�涓椂闂�
+                Config.Instance.LoginDateTime = new DateTime(1970, 1, 1);
+                Config.Instance.Save();
+
+                //娓呯┖褰撳墠浣忓畢id
+                Config.Instance.HomeId = string.Empty;
+                HdlGatewayLogic.Current.ClearAllRealGatewayConection(false);
+
+                //鏂紑杩滅▼Mqtt杩炴帴
+                HdlThreadLogic.Current.RunThread(async () =>
+                {
+                    await ZigBee.Device.ZbGateway.CloseRemoteConnectionOnForce();
+                }, ShowErrorMode.NO);
+
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鏀惰捣宸﹁彍鍗�
+                    CommonPage.Instance.CloseLeftMenu();
+                    //鍏抽棴鎵�鏈夋墦寮�浜嗙殑鐣岄潰
+                    HdlFormLogic.Current.CloseAllOpenForm(null, false);
+
+                    //鏄剧ず鐧婚檰鐢婚潰
+                    var formLogin = new Login.AccountLoginForm();
+                    Shared.Common.CommonPage.Instance.AddChidren(formLogin);
+                    formLogin.ShowForm(account);
+                });
+
+                if (noticeDb == true)
+                {
+                    //閫氱煡浜戠锛屽凡缁忛��鍑虹櫥闄� 
+                    this.SignOutClearData();
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓婁紶澶村儚___________________________
+
+        /// <summary>
+        /// 涓婁紶澶村儚
+        /// </summary>
+        /// <param name="byteData">鍥惧儚鐨刡yte鏁版嵁</param>
+        /// <param name="mode">澶辫触鏃舵槸鍚︽樉绀簍ip娑堟伅</param>
+        /// <returns></returns>
+        public bool UpLoadUserIconImage(byte[] byteData, ShowNetCodeMode mode = ShowNetCodeMode.YES)
+        {
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/head/portrait/upload", RestSharp.Method.POST, byteData);
+            //妫�娴嬬姸鎬佺爜
+            if (HdlCheckLogic.Current.CheckNetCode(result, mode) == false)
+            {
+                return false;
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 缂栬緫鐢ㄦ埛鍚嶇О_______________________
+
+        /// <summary>
+        /// 缂栬緫鐢ㄦ埛鏄电О
+        /// </summary>
+        /// <param name="i_nikeName">鐢ㄦ埛鏄电О</param>
+        /// <param name="mode">澶辫触鏃舵槸鍚︽樉绀簍ip娑堟伅</param>
+        /// <returns></returns>
+        public bool EditorUserNikeName(string i_nikeName, ShowNetCodeMode mode = ShowNetCodeMode.YES)
+        {
+            var pra = new { memberName = i_nikeName };
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/memberInfo/updateMemberInfo", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+            //妫�娴嬬姸鎬佺爜
+            if (HdlCheckLogic.Current.CheckNetCode(result, mode) == false)
+            {
+                return false;
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅_______________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅(鍙兘鐨勭姸鎬佺爜:Sucess  NotNetWork)
+        /// </summary>
+        /// <param name="reLoad">鏄惁浠庢柊浠庢湰鍦板姞杞�(閲嶆柊鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅,涓嶉渶瑕侀噸鏂板姞杞�)</param>
+        /// <param name="tryHttp">鏄惁灏濊瘯璁块棶缃戠粶</param>
+        /// <returns></returns>
+        private AccountStatu InitUserAccoutInfo(bool reLoad, bool tryHttp)
+        {
+            //棰勫垱寤虹敤鎴蜂俊鎭�愭枃浠跺す銆�
+            HdlFileLogic.Current.CreateDirectory(HdlFileNameResourse.AccountDirectory);
+            HdlFileLogic.Current.CreateDirectory(HdlFileNameResourse.UserPictrueDirectory);
+
+            //鍔犺浇璐﹀彿閰嶇疆淇℃伅
+            HdlUserCenterResourse.AccountOption = HdlUserCenterResourse.AccountOption.Load();
+
+            if (reLoad == true)
+            {
+                //鑾峰彇鏈湴璁板綍鐨勭敤鎴蜂俊鎭�
+                HdlUserCenterResourse.UserInfo = GetUserInformationFromLocation();
+            }
+
+            var netStatu = tryHttp == true ? AccountStatu.Sucess : AccountStatu.NotNetWork;
+            //鍙鑳借仈缃�,灏卞幓鑾峰彇瀹冪殑璐﹀彿淇℃伅
+            if (netStatu == AccountStatu.Sucess)
+            {
+                //璁块棶鎺ュ彛
+                var resultData = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/memberInfo/getMemberInfo", RestSharp.Method.POST, null, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+                if (resultData != null && resultData.Code == HttpMessageEnum.A鎴愬姛)
+                {
+                    var persionData = Newtonsoft.Json.JsonConvert.DeserializeObject<PersionInfoResult>(resultData.Data.ToString());
+                    //璧嬪��
+                    HdlUserCenterResourse.UserInfo.NickName = persionData.MemberName;
+                    HdlUserCenterResourse.UserInfo.PhoneAreaCode = persionData.MemberPhonePrefix;
+                    HdlUserCenterResourse.UserInfo.UserPhone = persionData.MemberPhone;
+                    HdlUserCenterResourse.UserInfo.UserEmail = persionData.MemberEmail;
+
+                    //鍒濆鍖栨暟瀛楀拰鎵嬪娍瀵嗙爜
+                    this.InitNumberAndGesturePassword();
+                }
+                else
+                {
+                    netStatu = AccountStatu.NotNetWork;
+                }
+            }
+            HdlUserCenterResourse.UserInfo.Account = Config.Instance.Account;
+
+            if (string.IsNullOrEmpty(HdlUserCenterResourse.UserInfo.NickName) == true)
+            {
+                //娌℃湁鏄电О鐨勬椂鍊欙紝鎶婅处鍙蜂綔涓烘樀绉�
+                HdlUserCenterResourse.UserInfo.NickName = Config.Instance.Account;
+            }
+
+            if (netStatu != AccountStatu.NotNetWork)
+            {
+                //淇濆瓨缂撳瓨
+                HdlUserCenterResourse.AccountOption.Save();
+            }
+
+            //淇濆瓨鐢ㄦ埛鐨勭櫥闄嗕俊鎭埌鏈湴
+            this.SaveUserInformationToLocation();
+
+            //鍚庡彴鍘讳笅杞借处鍙风殑澶村儚
+            if (netStatu == AccountStatu.Sucess)
+            {
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //涓嬭浇澶村儚
+                    var imageData = this.DownLoadAccountPictrue(Config.Instance.Account);
+                    if (imageData != null && imageData.Length > 0)
+                    {
+                        //鍐欏叆澶村儚鍐呭
+                        HdlFileLogic.Current.SaveByteToFile(HdlFileNameResourse.UserHeadIconFile, imageData);
+                    }
+
+                }, ShowErrorMode.NO);
+            }
+
+            return netStatu;
+        }
+
+        /// <summary>
+        /// 閲嶆柊鍒濆鍖栫櫥闄嗚处鍙风殑淇℃伅(缃戠粶鍙樻洿鐨勬椂鍊欒皟鐢� 鍙兘鐨勭姸鎬佺爜:Sucess  NotNetWork  AuthorityChangd  TokenTimeOunt)
+        /// </summary>
+        /// <returns></returns>
+        public AccountStatu ReInitUserAccoutInfo()
+        {
+            if (Config.Instance.Home.Id == string.Empty)
+            {
+                //濡傛灉澶勫湪鐧婚檰鐣岄潰鏃�
+                return AccountStatu.NotNetWork;
+            }
+            //閲嶆柊鍒锋柊Token
+            var respone = this.LoginByRefreshToken();
+            if (respone == null) { return AccountStatu.NotNetWork; }
+
+            if (respone.Code != HttpMessageEnum.A鎴愬姛)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鐧婚檰Token宸茬粡杩囨湡,璇烽噸鏂扮櫥闄�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uLoginTokenIsTimeOutPleaseLoginAgain);
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, msg);
+
+                    this.ReLoginAgain(HdlUserCenterResourse.UserInfo.Account, false);
+                });
+                return AccountStatu.TokenTimeOunt;
+            }
+
+            //閲嶆柊鑾峰彇浣忓畢鍒楄〃
+            var listHouse = HdlResidenceLogic.Current.GetHomeListsFromDb(ShowNetCodeMode.No);
+            if (listHouse == null)
+            {
+                //鏂綉,鑾峰彇涓嶅埌浣忓畢
+                return AccountStatu.NotNetWork;
+            }
+
+            //妫�娴嬪綋鍓嶈繖涓綇瀹呰繕鍦ㄥ悧
+            bool houseIsEsixt = false;
+            foreach (var houseInfo in listHouse)
+            {
+                //鍒锋柊浣忓畢淇℃伅
+                HdlResidenceLogic.Current.RefreshResidenceMemory(houseInfo);
+                if (houseInfo.Id == Config.Instance.Home.Id)
+                {
+                    houseIsEsixt = true;
+                }
+            }
+            if (houseIsEsixt == false)
+            {
+                //褰撳墠杩欎釜浣忓畢涓嶈浜�,璁╀粬閲嶆柊鐧婚檰
+                return AccountStatu.TokenTimeOunt;
+            }
+
+            //鍒锋柊璐﹀彿鐨勬潈闄�(鍙兘鐨勭姸鎬佺爜:Sucess  AuthorityChangd)
+            var result22 = this.RefreshAccountAuthority();
+            if (result22 == AccountStatu.AuthorityChangd)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鎮ㄧ殑鏉冮檺宸茬粡鍙樻洿,璇烽噸鏂扮櫥闄�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uYouAccessHadChangedPleaseTakeToAdmin);
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, msg);
+
+                    this.ReLoginAgain(HdlUserCenterResourse.UserInfo.Account, false);
+                });
+                return result22;
+            }
+            //閲嶆柊鍒濆鍖栦富浜虹殑token(绠$悊鍛樹笓鐢�)
+            var success = this.InitMasterToken();
+            if (success == false)
+            {
+                return AccountStatu.NotNetWork;
+            }
+
+            //閲嶆柊鍒濆鍖栬处鍙蜂俊鎭�
+            var result = InitUserAccoutInfo(false, true);
+            if (result == AccountStatu.Sucess)
+            {
+                //濡傛灉鏈夌綉鍏虫病鏈夌粦瀹�,鍒欏幓缁戝畾缃戝叧
+                HdlGatewayLogic.Current.ResetComandToBindBackupGateway();
+
+                //鍚屾浜戠鐨勭綉鍏砳d锛屽鏋滄湰鍦版嫢鏈変簯绔笉瀛樺湪鐨刬d锛屽垯琛ㄧず搴旇琚崲缁戜簡锛岀洿鎺ュ垹闄�
+                HdlGatewayLogic.Current.SynchronizeDbGateway();
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 鍒锋柊璐﹀彿鐨勬潈闄�(鍙兘鐨勭姸鎬佺爜:Sucess  AuthorityChangd)
+        /// </summary>
+        /// <returns></returns>
+        public AccountStatu RefreshAccountAuthority()
+        {
+            //鍙栧綋鍓嶆棫鍊�
+            int oldAuthorityNo = HdlUserCenterResourse.ResidenceOption.OldAuthorityNo;
+
+            if (Config.Instance.Home.IsOtherShare == false)
+            {
+                //韬唤:绠$悊鍛�
+                HdlUserCenterResourse.ResidenceOption.AuthorityNo = 1;
+                HdlUserCenterResourse.ResidenceOption.AuthorityText = Language.StringByID(R.MyInternationalizationString.Administrator);
+            }
+            else if (Config.Instance.Home.AccountType == 1)
+            {
+                //韬唤:鎴愬憳(鎷ユ湁绠$悊鍛樻潈闄�)
+                HdlUserCenterResourse.ResidenceOption.AuthorityNo = 2;
+                HdlUserCenterResourse.ResidenceOption.AuthorityText = Language.StringByID(R.MyInternationalizationString.uMemberHadActionAuthority);
+            }
+            else
+            {
+                //韬唤:鎴愬憳
+                HdlUserCenterResourse.ResidenceOption.AuthorityNo = 3;
+                HdlUserCenterResourse.ResidenceOption.AuthorityText = Language.StringByID(R.MyInternationalizationString.uMember);
+            }
+            //淇濆瓨
+            HdlUserCenterResourse.ResidenceOption.Save();
+
+            //鐒跺悗鍊肩洊杩囧幓
+            HdlUserCenterResourse.ResidenceOption.OldAuthorityNo = HdlUserCenterResourse.ResidenceOption.AuthorityNo;
+
+            //UserInfo.OldAuthorityNo==0浠h〃鏈湴杩樻病鏈夌敓鎴愭枃浠�,杩欎釜鏃跺�欎笉闇�瑕佸鐞�
+            if (HdlUserCenterResourse.ResidenceOption.AuthorityNo != oldAuthorityNo
+                && oldAuthorityNo != 0)
+            {
+                //鍒囨崲缃戠粶鏃�,闇�瑕佸杩欎釜鍊艰繘琛岃涪浜轰笅绾�
+                return AccountStatu.AuthorityChangd;
+            }
+            return AccountStatu.Sucess;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栬处鍙风殑Url鍖哄煙鍦板潃(鍙兘鐘舵�佺爜:Sucess  NotAccount  NotNetWork)
+        /// </summary>
+        /// <returns></returns>
+        private AccountStatu InitAccoutRegionInfo(string i_account)
+        {
+            var regionUrl = this.GetAccoutRegionInfo(i_account);
+            if (regionUrl == null)
+            {
+                return AccountStatu.NotNetWork;
+            }
+            if (regionUrl == string.Empty)
+            {
+                return AccountStatu.NotAccount;
+            }
+            //鍙樻洿鍦板潃
+            HdlHttpLogic.Current.RequestHttpsHost = regionUrl;
+
+            return AccountStatu.Sucess;
+        }
+
+        /// <summary>
+        /// 鑾峰彇璐﹀彿鐨勫尯鍩熶俊鎭�(null:鏃犳硶鑱旂綉 绌哄瓧绗︿覆:璐﹀彿涓嶅瓨鍦� 闈炵┖:姝e父鑾峰彇)
+        /// </summary>
+        /// <param name="i_account">鎵嬫満鎴栬�呴偖绠�</param>
+        /// <returns></returns>
+        private string GetAccoutRegionInfo(string i_account)
+        {
+            var pra = new { account = i_account };
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/region/regionByAccount", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+            if (result == null)
+            {
+                return null;
+            }
+            if (result.Code != HttpMessageEnum.A鎴愬姛)
+            {
+                return string.Empty;
+            }
+            var info = Newtonsoft.Json.JsonConvert.DeserializeObject<AccoutRegionInfo>(result.Data.ToString());
+
+            return info.RegionUrl;
+        }
+
+        /// <summary>
+        /// 淇濆瓨鐢ㄦ埛鐨勭櫥闄嗕俊鎭埌鏈湴
+        /// </summary>
+        private void SaveUserInformationToLocation()
+        {
+            //鍐欏叆鍐呭
+            HdlFileLogic.Current.SaveFileContent(HdlFileNameResourse.UserInfoFile, HdlUserCenterResourse.UserInfo);
+
+            string iconFile = HdlFileNameResourse.UserHeadIconFile;
+            if (System.IO.File.Exists(iconFile) == false)
+            {
+                //鎼炰竴涓嬩富浜虹殑榛樿澶村儚
+                string defultFile = IO.FileUtils.GetImageFilePath("Center/Admin.png");
+                if (defultFile == string.Empty)
+                {
+                    return;
+                }
+                //澶嶅埗杩囧幓
+                System.IO.File.Copy(defultFile, iconFile);
+            }
+
+        }
+
+        /// <summary>
+        /// 浠庢湰鍦拌幏鍙栫敤鎴风殑鐧婚檰淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        private UserInformation GetUserInformationFromLocation()
+        {
+            var value = HdlFileLogic.Current.ReadFileTextContent(HdlFileNameResourse.UserInfoFile);
+            if (value == null)
+            {
+                return new UserInformation();
+            }
+            var info = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInformation>(value);
+            return info;
+        }
+
+        /// <summary>
+        /// 璐﹀彿鐨勫尯鍩熷湴鍧�淇℃伅
+        /// </summary>
+        private class AccoutRegionInfo
+        {
+            /// <summary>
+            /// 璐﹀彿鐨勫尯鍩熷湴鍧�(濡傛灉涓虹┖,浠h〃璐﹀彿涓嶅瓨鍦�)
+            /// </summary>
+            public string RegionUrl = string.Empty;
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栦富浜虹殑Token__________________
+
+        /// <summary>
+        /// 鍒濆鍖栦富浜虹殑token
+        /// </summary>
+        public bool InitMasterToken()
+        {
+            if (HdlUserCenterResourse.ResidenceOption.AuthorityNo != 2)
+            {
+                //姝ゆ帴鍙e彧鑳界鐞嗗憳璋冪敤
+                return true;
+            }
+            var pra = new { homeId = Config.Instance.Home.Id };
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/app/child/account/debug", RestSharp.Method.POST, pra);
+            if (result == null || result.Code != HttpMessageEnum.A鎴愬姛)
+            {
+                return false;
+            }
+
+            var data = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(result.Data.ToString());
+            //璁板綍璧疯繖涓や釜token
+            Config.Instance.MasterToken = data.AccessToken;
+
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨暟瀛楀拰鎵嬪娍瀵嗙爜_______________
+
+        /// <summary>
+        /// 鍒濆鍖栨暟瀛楀拰鎵嬪娍瀵嗙爜
+        /// </summary>
+        /// <returns></returns>
+        private bool InitNumberAndGesturePassword()
+        {
+            //璇诲彇浜戠鏁版嵁
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/memberInfo/getLockCode", RestSharp.Method.POST, null, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+            if (result != null)
+            {
+                if (result.Code == HttpMessageEnum.A鎴愬姛)
+                {
+                    var info = Newtonsoft.Json.JsonConvert.DeserializeObject<NumberAndGesturePasswordInfo>(result.Data.ToString());
+                    //鎵嬪娍瀵嗙爜
+                    HdlUserCenterResourse.AccountOption.GestureAuthentication = info.GestureCode;
+                    //瀵嗙爜楠岃瘉
+                    HdlUserCenterResourse.AccountOption.PswAuthentication = info.DigitCode;
+
+                    return true;
+                }
+                //鏈厤缃� 鍒欐竻绌�
+                else if (result.Code == HttpMessageEnum.A11005)
+                {
+                    //鎵嬪娍瀵嗙爜
+                    HdlUserCenterResourse.AccountOption.GestureAuthentication = string.Empty;
+                    //瀵嗙爜楠岃瘉
+                    HdlUserCenterResourse.AccountOption.PswAuthentication = string.Empty;
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 缂栬緫鏁板瓧鍜屾墜鍔垮瘑鐮�
+        /// </summary>
+        /// <param name="i_numPsw">鏁板瓧瀵嗙爜,濡傛灉涓嶆洿鏂�,璇风疆涓簄ull</param>
+        /// <param name="i_gesturePsw">鎵嬪娍瀵嗙爜,濡傛灉涓嶆洿鏂�,璇风疆涓簄ull</param>
+        /// <returns></returns>
+        public bool EditorNumberAndGesturePassword(string i_numPsw, string i_gesturePsw)
+        {
+            var pra = new Dictionary<string, string>();
+            if (i_numPsw != null) { pra["digitCode"] = i_numPsw; }
+            if (i_gesturePsw != null) { pra["gestureCode"] = i_gesturePsw; }
+
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/memberInfo/setLockCode", RestSharp.Method.POST, pra, null, null, CheckMode.A涓嶆娴�, false, 3, true);
+            if (result != null && result.Code == HttpMessageEnum.A鎴愬姛)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 鏁板瓧鍜屾墜鍔垮瘑鐮�
+        /// </summary>
+        private class NumberAndGesturePasswordInfo
+        {
+            /// <summary>
+            /// 鎵嬪娍瀵嗙爜
+            /// </summary>
+            public string GestureCode = string.Empty;
+            /// <summary>
+            /// 鏁板瓧
+            /// </summary>
+            public string DigitCode = string.Empty;
+        }
+
+        #endregion
+
+        #region 鈻� 涓嬭浇鎸囧畾璐﹀彿鐨勫ご鍍廮________________
+
+        /// <summary>
+        /// 涓嬭浇鎸囧畾璐﹀彿鐨勫ご鍍�
+        /// </summary>
+        /// <param name="i_account">閭鎴栬�呮墜鏈哄彿</param>
+        /// <returns></returns>
+        public byte[] DownLoadAccountPictrue(string i_account)
+        {
+            var pra = new { account = i_account };
+            var result = HdlHttpLogic.Current.RequestByteFromZigbeeHttps("home-wisdom/app/head/portrait/downWithAccount", RestSharp.Method.POST, pra);
+            if (result != null && result.Length == 0)
+            {
+                result = null;
+            }
+            return result;
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 閫�鍑虹櫥褰曟椂璋冪敤锛屾竻闄ゆ帹閫佹暟鎹�
+        /// </summary>
+        public void SignOutClearData()
+        {
+            //閫氱煡浜戠锛屽凡缁忛��鍑虹櫥闄� 
+            var pra = new { pushId = Config.Instance.PushId };
+            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/app/push-information/delete", RestSharp.Method.POST, pra);
+            if (result == null)
+            {
+                //璋冭瘯:璁板綍鏋佸厜ID
+                HdlLogLogic.Current.WriteOtherText(HdlFileNameResourse.JiguangFile, "SignOut:" + Config.Instance.RegistrationID + " fail,receive obj is null", false, true);
+            }
+            else
+            {
+                //璋冭瘯:璁板綍鏋佸厜ID
+                HdlLogLogic.Current.WriteOtherText(HdlFileNameResourse.JiguangFile, "SignOut:" + Config.Instance.RegistrationID + " result:" + result.Code, false, true);
+            }
+        }
+
+        /// <summary>
+        /// 鐧诲綍鎴愬姛鍚庝笂鎶ヨ澶噄d绛夌浉鍏充俊鎭粰鍚庣
+        /// </summary>
+        /// <returns>杩斿洖鐘舵�佺爜</returns>
+        public string PushDeviceIdToDB()
+        {
+            try
+            {
+                string deviceAlias;
+                string deviceType;
+#if iOS
+                deviceAlias = UIKit.UIDevice.CurrentDevice.Name;
+                deviceType = "IOS";
+#elif Android
+                deviceAlias = Android.OS.Build.Manufacturer;
+                deviceType = "Android";
+#endif
+                var pra = new { deviceName = deviceAlias, deviceType = deviceType, produce = false, pushToken = Config.Instance.RegistrationID, software = "Evoyo" };
+                var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/app/push-information/add", RestSharp.Method.POST, pra);
+
+                if (result == null)
+                {
+                    //璋冭瘯:璁板綍鏋佸厜ID
+                    HdlLogLogic.Current.WriteOtherText(HdlFileNameResourse.JiguangFile, "send:" + Config.Instance.RegistrationID + " fail,receive obj is null", false, true);
+                    return null;
+                }
+                //璋冭瘯:璁板綍鏋佸厜ID
+                HdlLogLogic.Current.WriteOtherText(HdlFileNameResourse.JiguangFile, "send:" + Config.Instance.RegistrationID + " result:" + result.Code, false, true);
+                if (result.Code == HttpMessageEnum.A鎴愬姛)
+                {
+                    Config.Instance.PushId = result.Data.ToString();
+                    Config.Instance.Save();
+                }
+
+                return result.Code;
+            }
+            catch
+            {
+                return null;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 涓汉淇℃伅
+        /// </summary>
+        private class PersionInfoResult
+        {
+            /// <summary>
+            /// 鏄电О
+            /// </summary>
+            public string MemberName = string.Empty;
+            /// <summary>
+            /// 閭
+            /// </summary>
+            public string MemberEmail = string.Empty;
+            /// <summary>
+            /// 鎵嬫満
+            /// </summary>
+            public string MemberPhone = string.Empty;
+            /// <summary>
+            /// 鎵嬫満鐨勫湴鍖虹爜
+            /// </summary>
+            public string MemberPhonePrefix = string.Empty;
+        }
+
+        /// <summary>
+        /// 鐧婚檰缁撴灉
+        /// </summary>
+        private class UserLoginRes
+        {
+            /// <summary>
+            /// 璐﹀彿
+            /// </summary>
+            public string Account = string.Empty;
+            /// <summary>
+            /// 浠ょ墝绫诲瀷,娌″暐鐢�
+            /// </summary>
+            public string TokenType = string.Empty;
+            /// <summary>
+            /// 杩欎釜鏄柊鎺ュ彛鐨凣uid,涔熸槸璐﹀彿id
+            /// </summary>
+            public string UserId = string.Empty;
+            /// <summary>
+            /// 娣诲姞鍒癟oken澶撮儴鐨勪笢瑗�(涓嶈鐞嗗畠,鍙粰搴曞眰浣跨敤)
+            /// </summary>
+            public string HeaderPrefix = string.Empty;
+            /// <summary>
+            /// Token(涓嶇敤璁板綍浠�涔堟湁鏁堟湡,濡傛灉鐧婚檰澶辫触,灏辨嬁RefreshToken鍘诲埛鏂�)
+            /// </summary>
+            public string AccessToken = string.Empty;
+            /// <summary>
+            /// 鍒锋柊accessToken鐢ㄧ殑token(涓嶇敤璁板綍浠�涔堟湁鏁堟湡,濡傛灉鍒锋柊澶辫触,灏辫涪浜哄嵆鍙�)
+            /// </summary>
+            public string RefreshToken = string.Empty;
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0