From bbc74a6dae2e90a811b2507c5896fe89aa29ccc0 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期三, 08 一月 2020 11:30:46 +0800 Subject: [PATCH] 2020-01-08 1.替换新服务器接口。 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs | 385 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 296 insertions(+), 89 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs index 72ab748..0949f63 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Security.Cryptography; using System.Text; +using System.Text.RegularExpressions; namespace Shared.SimpleControl.Phone { @@ -18,7 +19,7 @@ var bodyView = new FrameLayout () { BackgroundColor = SkinStyle.Current.ViewColor }; - AddChidren (bodyView); + AddChidren (bodyView); if (MainPage.LoginUser != null && MainPage.LoginUser.IsLogin == true) { this.Close (); @@ -34,7 +35,7 @@ FrameLayout logoView = new FrameLayout () { Height = Application.GetRealHeight (400), }; - bodyView.AddChidren (logoView); + bodyView.AddChidren (logoView); //FrameLayout textView = new FrameLayout () { // Y = logoView.Bottom, @@ -49,7 +50,7 @@ //AddChidren (buttonView); Button btnLogo = new Button () { - Y = Application.GetRealHeight(30), + Y = Application.GetRealHeight (30), Height = Application.GetRealHeight (430), UnSelectedImagePath = MainPage.RegisterLogoString, }; @@ -63,7 +64,7 @@ BackgroundImagePath = "Register/Register_Email_Address.png", Radius = (uint)Application.GetRealHeight (0), }; - bodyView.AddChidren (accountView); + bodyView.AddChidren (accountView); var etAccount = new EditText () { Width = Application.GetRealWidth (400), @@ -75,7 +76,8 @@ TextColor = SkinStyle.Current.TextColor1, //Text = account, #if DEBUG - Text = "18926269190@189.cn" + //Text = "18926269190@189.cn" + Text = "721343314@qq.com" #endif }; accountView.AddChidren (etAccount); @@ -107,10 +109,10 @@ Y = accountView.Bottom + Application.GetRealHeight (50), BackgroundImagePath = "Register/Register_Password_kuang.png", }; - bodyView.AddChidren (passwrodView); + bodyView.AddChidren (passwrodView); var etPasswrod = new EditText () { - Width = Application.GetRealWidth (400-73), + Width = Application.GetRealWidth (400 - 73), X = Application.GetRealWidth (100), PlaceholderTextColor = SkinStyle.Current.PlaceholderTextColor, PlaceholderText = Language.StringByID (R.MyInternationalizationString.PleaseEnterPassword), @@ -125,7 +127,7 @@ passwrodView.AddChidren (etPasswrod); Button btnShowPassword = new Button () { - X = etPasswrod.Right , + X = etPasswrod.Right, Y = etPasswrod.Y + Application.GetRealHeight (12), Width = Application.GetRealWidth (73), Height = Application.GetRealHeight (60), @@ -160,7 +162,7 @@ }; etPasswrod.EditorEnterAction += (obj) => { Application.HideSoftInput (); - }; + }; Button btnRegister = new Button () { Width = Application.GetRealWidth (200), @@ -176,7 +178,7 @@ Close (); new AccountRegistration_Crabtree ().Show (); }; - bodyView.AddChidren (btnRegister); + bodyView.AddChidren (btnRegister); Button btnForgotPassword = new Button () { Width = Application.GetRealWidth (500 / 2), @@ -192,13 +194,13 @@ new ForgotPassword ().Show (); this.Close (); }; - bodyView.AddChidren (btnForgotPassword); + bodyView.AddChidren (btnForgotPassword); Button btnLogin = new Button () { Width = Application.GetRealWidth (504), Height = Application.GetRealHeight (89), X = Application.GetRealWidth (60), - Y = btnRegister.Bottom + Application.GetRealHeight(70), + Y = btnRegister.Bottom + Application.GetRealHeight (70), BackgroundColor = SkinStyle.Current.MainColor, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, TextID = R.MyInternationalizationString.Login, @@ -208,7 +210,7 @@ BorderColor = SkinStyle.Current.Transparent, BorderWidth = 0, }; - bodyView.AddChidren (btnLogin); + bodyView.AddChidren (btnLogin); btnLogin.MouseDownEventHandler += (sender, e) => { btnLogin.IsSelected = true; }; @@ -223,7 +225,7 @@ }); return; } - if (string.IsNullOrEmpty (account) ) { + if (string.IsNullOrEmpty (account)) { Application.RunOnMainThread (() => { new Tip () { Text = "Please enter your user id.", Direction = AMPopTipDirection.Up, CloseTime = 3 }.Show (btnLogo); }); @@ -244,15 +246,15 @@ MainPage.Loading.Start ("Login..."); } }); - if (UserConfig.Instance.internetStatus == 0 || !SystemRemote.checeInternet () ) { + if (UserConfig.Instance.internetStatus == 0 || !SystemRemote.checeInternet ()) { Application.RunOnMainThread (() => { - new Tip () { Text = "Network abnormal, unable to connect to the Internet", Direction = AMPopTipDirection.Down , CloseTime = 3}.Show (btnLogo); + new Tip () { Text = "Network abnormal, unable to connect to the Internet", Direction = AMPopTipDirection.Down, CloseTime = 3 }.Show (btnLogo); }); return; } - var revertConnectionObj = MainPage.RequestHttps ("Connection", ""); - if (revertConnectionObj.StateCode == "SUCCESS") { + var revertConnectionObj = MainPage.RequestHttps (API.Connection, ""); + if (revertConnectionObj.StateCode.ToUpper() == "SUCCESS") { Application.RunOnMainThread (() => { if (Language.CurrentLanguage == "Chinese") { MainPage.Loading.Start ("閾炬帴鏈嶅姟鍣ㄦ垚鍔�..."); @@ -261,71 +263,11 @@ } }); - var requestObj = new LoginObj () { Account = account, Password = password, Company = MainPage.SoftSmsType }; - var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); - var revertObj = MainPage.RequestHttps ("Login", requestJson, false); - if (revertObj.StateCode == "SUCCESS") { - - if (!accountListDB.account.Contains (account)) { - accountListDB.account.Add (account); - accountListDB.SaveAccountListDB (); - } - - var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes> (revertObj.ResponseData.ToString ()); - var revertData = responseDataObj; - MainPage.LoginUser = new UserInfo { - ID = revertData.UserId, MasterID = revertData.MainUserId, AccountType = revertData.UserType, AccountString = account, Password = password, LastTime = DateTime.Now, - AllVisionRegisterDevUserNameGuid = revertData.AllVisionRegisterDevUserNameGuid, Name = revertData.Contact - }; - var se = new service.hdlcontrol.com_push.WebServicePush (); - se.VerifySoapHeaderValue = new service.hdlcontrol.com_push.VerifySoapHeader () { Email = MainPage.LoginUser.AccountString, UserMode = 0 }; - se.AddRegId (UserConfig.Instance.tokenID, UserConfig.Instance.phoneName); - - var requestObj2 = new HomeListObj (); - var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2); - var revertObj2 = MainPage.RequestHttps ("HomeList", requestJson2); - if (revertObj2.StateCode == "SUCCESS") { - var responseDataObj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RegionInfoRes>> (revertObj2.ResponseData.ToString ()); - var revertRoomData = responseDataObj2; - if (revertRoomData.Find ((obj) => obj.RegionID == UserConfig.Instance.CurrentRegion.RegionID) == null) { - UserConfig.Instance.CurrentRegion = revertRoomData [0]; - UserConfig.Instance.GatewayMAC = revertRoomData [0].MAC; - IO.FileUtils.DeleteAllFile (); - } else { - Room.InitAllRoom (); - } - - var gatewayListObj = new GatewayListObj (); - var gatewayListJson = Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListObj); - var gatewayListRevertObj = MainPage.RequestHttps ("GatewayList", gatewayListJson); - if (gatewayListRevertObj.StateCode == "SUCCESS") { - UserConfig.Instance.GatewayList.Clear (); - var responseGatewayDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (gatewayListRevertObj.ResponseData.ToString ()); - UserConfig.Instance.GatewayList.AddRange (responseGatewayDataObj); - UserConfig.Instance.SaveUserConfig (); - MainPage.LoginUser.LastTime = DateTime.Now; - if (UserConfig.Instance.GatewayList.Count == 0) { - Application.RunOnMainThread (() => { - UserMiddle.Init (); - Close (); - }); - return; - } else { - UserConfig.Instance.HomeLists = revertRoomData; - MainPage.LoginUser.SaveUserInfo (); - UserConfig.Instance.SaveUserConfig (); - Scene.Refresh (); - A31MusicModel.Refresh (); - Application.RunOnMainThread (() => { - Close (); - UserMiddle.Init (); - EquipmentPublicClass.CheckLinkRemote (2); - }); - } - } - } - } + Login (account, password, accountListDB); + } else { + MainPage.FailureToServer (); } + } catch (Exception ex) { MainPage.FailureToServer (); Console.WriteLine (ex.Message); @@ -334,20 +276,20 @@ MainPage.Loading.Hide (); }); } - }) ; + }); }; - etAccount.FoucsChanged += ( sender, e) => { -//#if __IOS__ + etAccount.FoucsChanged += (sender, e) => { + //#if __IOS__ //btnRegister.Visible = btnForgotPassword.Visible = !e.Focus; -//#endif + //#endif if (e.Focus) { if (etAccount.Text == "") accountList.Clear (); else accountList = accountListDB.account.FindAll ((obj) => (obj.Contains (etAccount.Text) && obj != etAccount.Text)); if (accountListView.Parent == null) { - bodyView.AddChidren (accountListView); + bodyView.AddChidren (accountListView); } if (accountList.Count > 0) { accountListView.Visible = e.Focus; @@ -379,7 +321,7 @@ accountListView.Visible = false; return; } - accountList = accountListDB.account.FindAll ((obj) => (obj.Contains (e) && obj != e)); + accountList = accountListDB.account.FindAll ((obj) => (obj.Contains (e) && obj != e)); if (accountList.Count == 0) { accountListView.Visible = false; return; @@ -416,6 +358,271 @@ } - + + + /// <summary> + /// + /// </summary> + /// <param name="stateCodeStr"></param> + void ShowGetHomePagerErrorInfo (string stateCodeStr) + { + string mes = ""; + //2020-01-06 寰呰ˉ鍏� + if (stateCodeStr == ErrorCode.NetworkError) { + mes = ErrorCode.NetworkError; + } else { + mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr; + + } + if (!string.IsNullOrEmpty (mes)) { + Application.RunOnMainThread (() => { + new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + + + } + + + /// <summary> + /// + /// </summary> + /// <param name="stateCodeStr"></param> + void ShowGetAllBindGatewarysPaggerErrorInfo (string stateCodeStr) + { + string mes = ""; + //2020-01-06 寰呰ˉ鍏� + if (stateCodeStr == ErrorCode.NetworkError) { + mes = ErrorCode.NetworkError; + } else { + mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr; + + } + if (!string.IsNullOrEmpty (mes)) { + Application.RunOnMainThread (() => { + new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + + + } + + /// <summary> + /// 鐧诲綍 + /// </summary> + /// <param name="account">Account.</param> + /// <param name="password">Password.</param> + private void Login (string account, string password, AccountListDB accountListDB) + { + //string pattern = @"(http|https)://(?<domain>[^(:|/]*)"; + //Regex reg = new Regex (pattern, RegexOptions.IgnoreCase); + //Match m = reg.Match (MainPage.RequestHttpsHost); + //string mResult = m.Groups ["domain"].Value; + //if (!string.IsNullOrEmpty (mResult)) { + // MainPage.RequestHttpsHostMqtt = "https://" + mResult; + //} + + //return; + + var requestObj = new LoginObj () { Account = account, Password = password, Company = MainPage.SoftSmsType }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); + var revertObj = MainPage.RequestHttps (API.Login, requestJson, false, false); + if (revertObj.StateCode.ToUpper() == "SUCCESS") { + + if (!accountListDB.account.Contains (account)) { + accountListDB.account.Add (account); + accountListDB.SaveAccountListDB (); + } + + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes> (revertObj.ResponseData.ToString ()); + var revertData = responseDataObj; + MainPage.LoginUser = new UserInfo { + ID = revertData.UserId, + MainUserId = revertData.MainUserId, + AccountType = revertData.UserType, + AccountString = account, + Password = password, + LastTime = DateTime.Now, + AllVisionRegisterDevUserNameGuid = revertData.AllVisionRegisterDevUserNameGuid, + Name = revertData.Contact, + Guid = revertData.Guid, + MD5PWD = revertData.MD5PWD, + + + }; + //var se = new service.hdlcontrol.com_push.WebServicePush (); + //se.VerifySoapHeaderValue = new service.hdlcontrol.com_push.VerifySoapHeader () { Email = MainPage.LoginUser.AccountString, UserMode = 0 }; + //se.AddRegId (UserConfig.Instance.tokenID, UserConfig.Instance.phoneName); + var requestObj2 = new GetHomePagerObj (); + requestObj2.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString; + + var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2); + var revertObj2 = MainPage.RequestHttps (API.GetHomePager, requestJson2); + + if (revertObj2.StateCode.ToUpper () == "SUCCESS") { + + //var DD = Newtonsoft.Json.Linq.JObject.Parse ("GFGFDG"); + //DD["ResponseData"]["PageData"]; + var mResidenceRes = Newtonsoft.Json.JsonConvert.DeserializeObject<ResidenceRes> (revertObj2.ResponseData.ToString ()); + //if (mResidenceRes.TotalCount != 0) { + // //褰撲綇瀹呬负绌烘椂鍏堟彁绀虹敤鎴锋柊寤轰綇瀹� + + //} else { + + var revertRoomData = mResidenceRes.PageData; + if (revertRoomData.Find ((obj) => obj.Id == UserConfig.Instance.CurrentRegion.Id) == null) { + if (revertRoomData != null && revertRoomData.Count > 0) { + UserConfig.Instance.CurrentRegion = revertRoomData [0]; + if (UserConfig.Instance.CheckHomeGateways ()) { + UserConfig.Instance.GatewayMAC = revertRoomData [0].HomeGateways [0].GatewayUniqueId; + } + IO.FileUtils.DeleteAllFile (); + } + } else { + Room.InitAllRoom (); + } + + var gatewayListObj = new GetAllBindGatewarysPaggerObj (); + gatewayListObj.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString; + + //var gatewayListObj = new GatewayListObj (); + var gatewayListJson = Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListObj); + var gatewayListRevertObj = MainPage.RequestHttps (API.GetAllBindGatewarysPagger, gatewayListJson); + if (gatewayListRevertObj.StateCode.ToUpper () == "SUCCESS") { + UserConfig.Instance.GatewayList.Clear (); + + var mGateRes = Newtonsoft.Json.JsonConvert.DeserializeObject<AllBindGatewarysPaggerRes> (gatewayListRevertObj.ResponseData.ToString ()); + //var responseGatewayDataObj = mGateRes.PageData; + UserConfig.Instance.GatewayList.AddRange (mGateRes.PageData); + UserConfig.Instance.SaveUserConfig (); + MainPage.LoginUser.LastTime = DateTime.Now; + if (UserConfig.Instance.GatewayList.Count == 0) { + Application.RunOnMainThread (() => { + UserMiddle.Init (); + Close (); + }); + return; + } else { + UserConfig.Instance.HomeLists = revertRoomData; + MainPage.LoginUser.SaveUserInfo (); + UserConfig.Instance.SaveUserConfig (); + Scene.Refresh (); + A31MusicModel.Refresh (); + Application.RunOnMainThread (() => { + Close (); + UserMiddle.Init (); + EquipmentPublicClass.CheckLinkRemote (2); + }); + } + } else { + //GetAllBindGatewarysPagger 澶辫触鎻愮ず + ShowGetAllBindGatewarysPaggerErrorInfo (gatewayListRevertObj.StateCode); + } + //} + } else { + //GetHomePager 澶辫触鎻愮ず + ShowGetHomePagerErrorInfo (revertObj2.StateCode); + } + + //var requestObj2 = new HomeListObj (); + //var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2); + //var revertObj2 = MainPage.RequestHttps ("HomeList", requestJson2); + //if (revertObj2.StateCode.ToUpper() == "SUCCESS") { + // var responseDataObj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RegionInfoRes>> (revertObj2.ResponseData.ToString ()); + // var revertRoomData = responseDataObj2; + // if (revertRoomData.Find ((obj) => obj.RegionID == UserConfig.Instance.CurrentRegion.RegionID) == null) { + // UserConfig.Instance.CurrentRegion = revertRoomData [0]; + // UserConfig.Instance.GatewayMAC = revertRoomData [0].MAC; + // IO.FileUtils.DeleteAllFile (); + // } else { + // Room.InitAllRoom (); + // } + + // var gatewayListObj = new GatewayListObj (); + // var gatewayListJson = Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListObj); + // var gatewayListRevertObj = MainPage.RequestHttps ("GatewayList", gatewayListJson); + // if (gatewayListRevertObj.StateCode.ToUpper() == "SUCCESS") { + // UserConfig.Instance.GatewayList.Clear (); + // var responseGatewayDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (gatewayListRevertObj.ResponseData.ToString ()); + // UserConfig.Instance.GatewayList.AddRange (responseGatewayDataObj); + // UserConfig.Instance.SaveUserConfig (); + // MainPage.LoginUser.LastTime = DateTime.Now; + // if (UserConfig.Instance.GatewayList.Count == 0) { + // Application.RunOnMainThread (() => { + // UserMiddle.Init (); + // Close (); + // }); + // return; + // } else { + // UserConfig.Instance.HomeLists = revertRoomData; + // MainPage.LoginUser.SaveUserInfo (); + // UserConfig.Instance.SaveUserConfig (); + // Scene.Refresh (); + // A31MusicModel.Refresh (); + // Application.RunOnMainThread (() => { + // Close (); + // UserMiddle.Init (); + // EquipmentPublicClass.CheckLinkRemote (2); + // }); + // } + // } + //} + // + } else { + string stateCodeStr = revertObj.StateCode; + string mes = ""; + if (stateCodeStr == "NOTVERIFY") { + //鏈縺娲� + mes = ErrorCode.NOTVERIFY; + } + //else if (stateCodeStr == "NOTENABLE") { + + // //璇ョ敤鎴峰睘浜庤皟璇曡处鍙凤紝骞舵湭鍚敤 + // mes = "鐢ㄦ埛灞炰簬璋冭瘯璐﹀彿锛屽苟鏈惎鐢�"; + //} + else if (stateCodeStr == "USERNAMEORPWDERROR") { + //璐﹀彿鎴栧瘑鐮侀敊璇� + mes = ErrorCode.USERNAMEORPWDERROR; + } else if (stateCodeStr == "ACCOUNTNOEXISTS") { + //璐﹀彿涓嶅瓨鍦� + mes = ErrorCode.ACCOUNTNOEXISTS; + } else if (stateCodeStr == "YOUDATANOISLOCALREGION") { + //涓嶅湪鏈尯鍩燂紝闇�瑕侀噸瀹氬悜鍖哄煙鍚庡啀娆¤姹傜櫥褰� + if (revertObj.ResponseData == null) { + return; + } + var responseDataObj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginLocalRegionRes> (revertObj.ResponseData.ToString ()); + MainPage.RequestHttpsHost = responseDataObj2.RegionServer; + //姝e垯澶勭悊 + //MainPage.RequestHttpsHostMqtt = + SetMqttHost (responseDataObj2.RegionServer); + + ////鍐嶆鐧诲綍 + Login (account, password, accountListDB); + } else { + //RequestServerFailed + mes = ErrorCode.LoginFailed + ErrorCode.Reason + stateCodeStr; + } + + + if (!string.IsNullOrEmpty (mes)) { + Application.RunOnMainThread (() => { + new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + + } + } + + private void SetMqttHost (string URL) { + string pattern = @"(http|https)://(?<domain>[^(:|/]*)"; + Regex reg = new Regex (pattern, RegexOptions.IgnoreCase); + Match m = reg.Match (URL); + string mResult = m.Groups ["domain"].Value; + if (!string.IsNullOrEmpty (mResult)) { + MainPage.RequestHttpsHostMqtt = "https://" + mResult; + } + } + // } } \ No newline at end of file -- Gitblit v1.8.0