gxc
2019-12-25 944b87b6bcccb095cd73f13f4410fb20faf48f74
ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
old mode 100755 new mode 100644
@@ -1,7 +1,4 @@
using 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;
            }