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