From eb424d24e39bab4a245725f35deab3f234ea0f13 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期五, 13 十二月 2019 10:48:50 +0800 Subject: [PATCH] 2019.12.13 --- ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs | 286 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 260 insertions(+), 26 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs old mode 100755 new mode 100644 index 2f5882d..f921ddf --- a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs +++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs @@ -1,7 +1,4 @@ 锘縰sing System; -using System.Collections.Generic; -using System.Net; -using System.Text; using Shared.Common; using Shared.Phone.UserView; using Shared.Phone.Device.CommonForm; @@ -67,6 +64,14 @@ /// 瀵嗙爜 /// </summary> private string password; + /// <summary> + /// wechat + /// </summary> + private Button wechatBtn; + /// <summary> + /// qq + /// </summary> + private Button qqBtn; #endregion @@ -78,6 +83,7 @@ /// </summary> public AccountLogin() { + CommonPage.Instance.IsDrawerLockMode = true; BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; Tag = "Login"; } @@ -187,7 +193,7 @@ Width = Application.GetRealWidth(942), Gravity = Gravity.CenterHorizontal, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, - Radius = (uint)Application.GetRealHeight(30) + Radius = (uint)Application.GetRealHeight(17) }; midFrameLayout.AddChidren(accountPwdFL); @@ -227,7 +233,7 @@ loginByCodeBtn = new Button() { X=Application.GetRealWidth(98), - Y = Application.GetRealHeight(1431), + Y = Application.GetRealHeight(1466), Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(49), TextID = R.MyInternationalizationString.LoginByCode, @@ -240,7 +246,7 @@ registerBtn = new Button() { X = Application.GetRealWidth(738), - Y = Application.GetRealHeight(1431), + Y = Application.GetRealHeight(1466), Width = Application.GetRealWidth(244), Height = Application.GetRealHeight(49), TextID = R.MyInternationalizationString.Register, @@ -249,6 +255,27 @@ TextSize = CommonFormResouce.loginTextSize }; midFrameLayout.AddChidren(registerBtn); + + wechatBtn = new Button + { + X = Application.GetRealWidth(395), + Y = Application.GetRealHeight(1737), + Width = Application.GetMinRealAverage(115), + Height = Application.GetMinRealAverage(115), + UnSelectedImagePath = "Account/Wechat.png", + Gravity=Gravity.CenterHorizontal + }; + midFrameLayout.AddChidren(wechatBtn); + + qqBtn = new Button + { + X = Application.GetRealWidth(567), + Y = Application.GetRealHeight(1737), + Width = Application.GetMinRealAverage(115), + Height = Application.GetMinRealAverage(115), + UnSelectedImagePath = "Account/QQ.png" + }; + //midFrameLayout.AddChidren(qqBtn); #endregion @@ -275,7 +302,10 @@ registerBtn.MouseUpEventHandler += Register; //蹇樿瀵嗙爜 forgotPasswordBtn.MouseUpEventHandler += ForgetPWD_MouseUpEvent; - + //wechat + wechatBtn.MouseUpEventHandler += LoginByWechat; + //qq + qqBtn.MouseUpEventHandler += LoginByQQ; } #endregion @@ -295,7 +325,7 @@ } else { - Login(phoneRow.AccountET.Text.Trim(), pwdRow.PasswrodET.Text.Trim()); + Login(emailRow.AccountET.Text.Trim(), pwdRow.PasswrodET.Text.Trim()); } } @@ -313,6 +343,11 @@ { try { + if(CheckAccount(accountStr)==false) + { + return; + } + CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining)); var requestObj = new SendDataToServer.LoginObj @@ -338,27 +373,21 @@ { return; } - this.RemoveFromParent(); - UserPage.Instance.Fresh(); + HomePage.Instance.ShowLoginLoadView(); new System.Threading.Thread(async () => { - //鍚姩ZigBee - ZigBee.Common.Application.Init(); //瀛樺偍鏁版嵁 var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString()); var revertData = responseDataObj; Config.ReFresh(); Config.Instance.Account = revertData.Account; - Config.Instance.MqttKey = revertData.MqttKey; Config.Instance.Password = passwordStr; Config.Instance.MD5PWD = revertData.MD5PWD; Config.Instance.Guid = revertData.Guid; Config.Instance.LoginDateTime = DateTime.Now; - Config.Instance.ConnectZigbeeMqttBrokerPwd = revertData.ConnectZigbeeMqttBrokerPwd; - Config.Instance.ConnectZigbeeMqttClientId = revertData.ConnectZigbeeMqttClientId; - Config.Instance.ZigbeeMqttBrokerLoadSubDomain = revertData.ZigbeeMqttBrokerLoadSubDomain; + Config.Instance.LoginToken = revertData.Token; if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null) { Config.Instance.AccountList.Add(revertData.Account); @@ -366,15 +395,18 @@ Config.Instance.Save(); var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); - var homes = await House.GetHomeLists(); + var homes = await House.GetHomeLists(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); - Shared.Common.Room.CanInitAllRoom = true; Shared.Common.Room.InitAllRoom(); Application.RunOnMainThread(() => { - UserPage.Instance.Fresh(); CommonPage.Loading.Hide(); + this.RemoveFromParent(); + CommonPage.Instance.RemoveViewByTag("Login"); + UserPage.Instance.Fresh(); }); }) { IsBackground = true }.Start(); @@ -437,17 +469,220 @@ } /// <summary> + /// CheckAccount + /// </summary> + /// <param name="accountStr"></param> + /// <returns></returns> + private bool CheckAccount(string accountStr) + { + if (phoneEmailForm.SelectedEmail.IsSelected) + { + if (AccountLogic.Instance.CheckEmail(accountStr) == false) + { + loginErrorBtn.TextID = R.MyInternationalizationString.TheEmailError; + return false; + } + } + else + { + if (AccountLogic.Instance.CheckPhone(accountStr) == false) + { + loginErrorBtn.TextID = R.MyInternationalizationString.ThePhoneError; + return false; + } + } + return true; + } + + /// <summary> /// 閫氳繃楠岃瘉鐮佺櫥褰� /// </summary> /// <param name="sender">Sender.</param> /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> private void LoginByCode(object sender,MouseEventArgs mouseEventArgs) { - this.RemoveFromParent(); + //this.RemoveFromParent(); var loginByCodePage = new AccountLoginByCode(); CommonPage.Instance.AddChidren(loginByCodePage); loginByCodePage.Show(); } + + /// <summary> + /// wechat鐧诲綍 + /// </summary> + /// <param name="sender"></param> + /// <param name="mouseEventArgs"></param> + private void LoginByWechat(object sender, MouseEventArgs mouseEventArgs) + { +#if Android + //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), + // Language.StringByID(R.MyInternationalizationString.LoginByWechat), + // Language.StringByID(R.MyInternationalizationString.Cancel), + // Language.StringByID(R.MyInternationalizationString.Confrim)); + //alert.Show(); + //alert.ResultEventHandler += (send, e) => + //{ + //if (e) + //{ + com.hdl.home.Application.WXLogin(); + com.hdl.home.WXEntryActivity.RespAction = (authStr) => + { + if (authStr == null) + { + + } + else + { + new System.Threading.Thread(async () => + { + var re = await isBindAuthAsync(authStr); + if (re) + { + Application.RunOnMainThread(() => + { + //鐩存帴鐧诲綍 + HomePage.Instance.ShowLoginLoadView(); + }); + var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); + var homes = await House.GetHomeLists(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); + Shared.Common.Room.InitAllRoom(); + Application.RunOnMainThread(() => + { + this.RemoveFromParent(); + CommonPage.Instance.RemoveViewByTag("Login"); + UserPage.Instance.Fresh(); + }); + } + else + { + var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); + Application.RunOnMainThread(() => + { + var registerPage = new AccountRegister(); + Shared.Common.CommonPage.Instance.AddChidren(registerPage); + registerPage.OpenID = authRes.openid; + registerPage.Show(); + }); + } + }) + { IsBackground = true }.Start(); + } + }; + //} + //}; +#endif + +#if iOS + Home.IOS.AppDelegate.WXLogin(); + Home.IOS.AppDelegate.RespAction = (authStr) => + { + if (authStr == null) + { + + } + else + { + new System.Threading.Thread(async () => + { + + var re = await isBindAuthAsync(authStr); + if (re) + { + //鐩存帴鐧诲綍 + //this.RemoveFromParent(); + + //UserPage.Instance.Fresh(); + var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); + var homes = await House.GetHomeLists(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); + Shared.Common.Room.InitAllRoom(); + Application.RunOnMainThread(() => + { + this.RemoveFromParent(); + UserPage.Instance.Fresh(); + }); + } + else + { + var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); + Application.RunOnMainThread(() => + { + var registerPage = new AccountRegister(); + Shared.Common.CommonPage.Instance.AddChidren(registerPage); + registerPage.OpenID = authRes.openid; + registerPage.Show(); + }); + } + }) + { IsBackground = true }.Start(); + } + }; +#endif + + + + } + + /// <summary> + /// qq鐧诲綍 + /// </summary> + /// <param name="sender"></param> + /// <param name="mouseEventArgs"></param> + private void LoginByQQ(object sender, MouseEventArgs mouseEventArgs) + { + + } + + /// <summary> + /// 鏄惁宸茬粦瀹� + /// </summary> + /// <param name="authStr"></param> + /// <returns></returns> + private async System.Threading.Tasks.Task<bool> isBindAuthAsync(string authStr) + { + var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); + var auth = new SendDataToServer.AuthUser() + { + AccessToken = authRes.access_token, + RefreshToken = authRes.refresh_token, + OpenID = authRes.openid + }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(auth); + var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/InsertOrUpdateAuthUser", System.Text.Encoding.UTF8.GetBytes(requestJson)); + if (revertObj == null) + { + return false; + } + var stateCodeStr = revertObj.StateCode.ToUpper(); + if (stateCodeStr == "SUCCESS") + { + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString()); + var revertData = responseDataObj; + Config.Instance.Account = revertData.Account; + Config.Instance.MD5PWD = revertData.MD5PWD; + Config.Instance.Guid = revertData.Guid; + Config.Instance.LoginDateTime = DateTime.Now; + if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null) + { + Config.Instance.AccountList.Add(revertData.Account); + } + Config.Instance.Save(); + return true; + } + else + { + return false; + } + } + + /// <summary> /// phone/email 閫夋嫨 @@ -458,6 +693,7 @@ { phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false; loginBtn.Enable = loginBtn.IsSelected = false; + loginErrorBtn.Text = string.Empty; (sender as Button).IsSelected = true; if((sender as Button).Tag.ToString()=="Phone") { @@ -493,8 +729,6 @@ pwdRow = new PwdLoginRowForm(); pwdRow.Init(accountPwdFrameLayout, 29, 225); pwdRow.PasswrodET.TextChangeEventHandler += Pwd_TextChange; - - } #endregion @@ -522,7 +756,7 @@ private void Register(object sender,MouseEventArgs mouseEventArgs) { var registerPage = new AccountRegister(); - Shared.Common.CommonPage.Instance.AddChidren(registerPage); + CommonPage.Instance.AddChidren(registerPage); registerPage.Show(); } @@ -536,7 +770,7 @@ /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> private void Account_TextChange(object sender,string mouseEventArgs) { - loginErrorBtn.Text = ""; + loginErrorBtn.Text = string.Empty; } /// <summary> @@ -546,8 +780,8 @@ /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> private void Pwd_TextChange(object sender,string mouseEventArgs) { - loginErrorBtn.Text = ""; - if (1 <= pwdRow.PasswrodET.Text.Trim().Length && pwdRow.PasswrodET.Text.Trim().Length <= 16 && phoneRow.AccountET.Text.Trim().Length > 0) + loginErrorBtn.Text = string.Empty; + if (1 <= pwdRow.PasswrodET.Text.Trim().Length && pwdRow.PasswrodET.Text.Trim().Length <= 16 && (phoneRow.AccountET.Text.Trim().Length > 0 || emailRow.AccountET.Text.Trim().Length>0)) { loginBtn.Enable = loginBtn.IsSelected = true; } -- Gitblit v1.8.0