HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/Login/AccountLoginForm.cs
old mode 100755 new mode 100644
@@ -20,7 +20,7 @@
        /// <summary>
        /// 是否同意隐私协议
        /// </summary>
        private bool isAgreePrivacyPolicy = true;
        private bool isAgreePrivacyPolicy = false;
        #endregion
@@ -32,9 +32,10 @@
        /// <param name="account">登陆账号</param>
        public void ShowForm(string account = "")
        {
            if (Config.Instance.IsLogin == true)
            if (account == string.Empty)
            {
                return;
                //使用上一次登陆的账号
                account = Common.Config.Instance.Account;
            }
            CommonPage.Instance.IsDrawerLockMode = true;
            this.Tag = "Login";
@@ -51,14 +52,14 @@
            frameMidBack.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
            this.AddChidren(frameMidBack);
            //HdlHome的图标
            //Evoyo Home的图标
            var btnLogoIcon = new PicViewControl(184, 184);
            btnLogoIcon.Y = Application.GetRealHeight(230);
            btnLogoIcon.UnSelectedImagePath = "Account/Logo_White.png";
            btnLogoIcon.UnSelectedImagePath = "Account/Logo_WhiteHome.png";
            btnLogoIcon.Gravity = Gravity.CenterHorizontal;
            this.AddChidren(btnLogoIcon);
            //Hdl Home
            var btnLogoName = new NormalViewControl(300, 69, true);
            //Evoyo Home
            var btnLogoName = new NormalViewControl(700, 69, true);
            btnLogoName.Y = btnLogoIcon.Bottom;
            btnLogoName.Gravity = Gravity.CenterHorizontal;
            btnLogoName.TextID = R.MyInternationalizationString.AppName;
@@ -126,6 +127,9 @@
            frameMidBack.AddChidren(btnLoginByCode);
            btnLoginByCode.ButtonClickEvent += (sender, e) =>
            {
                //检测是否同意服务协议
                if (this.CheckPrivacyPolicy() == false) { return; }
                if (codeDiv == 1)
                {
                    //验证码登陆
@@ -165,6 +169,9 @@
            frameMidBack.AddChidren(btnRegister);
            btnRegister.ButtonClickEvent += (sender, e) =>
            {
                //检测是否同意服务协议
                if (this.CheckPrivacyPolicy() == false) { return; }
                var registerPage = new AccountRegister();
                CommonPage.Instance.AddChidren(registerPage);
                registerPage.Show();
@@ -175,7 +182,7 @@
            btnWebChat.Y = frameMidBack.Height - Application.GetRealHeight(69) - btnWebChat.IconSize;
            btnWebChat.UnSelectedImagePath = "Account/Wechat.png";
            btnWebChat.Gravity = Gravity.CenterHorizontal;
            frameMidBack.AddChidren(btnWebChat);
            //frameMidBack.AddChidren(btnWebChat);
            btnWebChat.ButtonClickEvent += (sender, e) =>
            {
                //微信登陆
@@ -183,7 +190,7 @@
            };
            //添加服务协议控件
            //this.AddServiceAgreementControl(frameMidBack);
            this.AddServiceAgreementControl(frameMidBack);
            //游客体验
            var btnTiyan = new NormalViewControl(300, 100, true);
@@ -196,9 +203,11 @@
            frameMidBack.AddChidren(btnTiyan);
            btnTiyan.ButtonClickEvent += (sender, e) =>
            {
                //检测是否同意服务协议
                if (this.CheckPrivacyPolicy() == false) { return; }
                btnTiyan.CanClick = false;
                //显示启动页
                HomePage.Instance.ShowLoginLoadView();
                HdlThreadLogic.Current.RunThread(() =>
                {
                    //初始化全部体验数据
@@ -207,7 +216,7 @@
                    {
                        this.RemoveFromParent();
                        CommonPage.Instance.RemoveViewByTag("Login");
                        UserPage.Instance.Fresh();
                        UserPage.Instance.ReFreshControl();
                    });
                });
            };
@@ -380,6 +389,9 @@
            frameWhiteBack.AddChidren(btnForgot);
            btnForgot.ButtonClickEvent += (sender, e) =>
            {
                //检测是否同意服务协议
                if (this.CheckPrivacyPolicy() == false) { return; }
                var forgot = new AccountForgetPWD();
                CommonPage.Instance.AddChidren(forgot);
                forgot.Show();
@@ -556,8 +568,11 @@
            btnSendCode.TextAlignment = TextAlignment.Center;
            btnSendCode.IsBold = true;
            rowVerCode.AddChidren(btnSendCode);
            btnSendCode.ButtonClickEvent += async (sender, e) =>
            btnSendCode.ButtonClickEvent += (sender, e) =>
            {
                //检测是否同意服务协议
                if (this.CheckPrivacyPolicy() == false) { return; }
                //检测输入的账号
                nowInputAccount = txtAccount.Text.Trim();
                if (this.CheckInputAccount("86", nowInputAccount, i_div) == false)
@@ -565,7 +580,7 @@
                    return;
                }
                //发送验证码
                hadSendCode = await this.SendVerCode(btnSendCode, nowInputAccount, i_div);
                hadSendCode = this.SendVerCode(btnSendCode, nowInputAccount, i_div);
            };
            //底线
@@ -599,6 +614,9 @@
            frameWhiteBack.AddChidren(btnForgot);
            btnForgot.ButtonClickEvent += (sender, e) =>
            {
                //检测是否同意服务协议
                if (this.CheckPrivacyPolicy() == false) { return; }
                var forgot = new AccountForgetPWD();
                CommonPage.Instance.AddChidren(forgot);
                forgot.Show();
@@ -666,7 +684,8 @@
            btnMsg2.ButtonClickEvent += (sender, e) =>
            {
                var form = new UserCenter.Abount.SLAForm();
                this.AddChidren(form);
                CommonPage.Instance.AddChidren(form);
                form.InitTopFrameLayout();
                form.InitBodyFrameLayout();
                form.ShowForm();
@@ -743,6 +762,8 @@
        /// <param name="i_div">1:手机号 2:邮箱</param>
        private void LoginByAccountAndPsw(string i_account, string i_psw, int i_div)
        {
            //检测是否同意服务协议
            if (this.CheckPrivacyPolicy() == false) { return; }
            //检测账号
            if (this.CheckInputAccount(string.Empty, i_account, i_div) == false)
            {
@@ -752,18 +773,16 @@
            //登陆中....
            CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining));
            HdlThreadLogic.Current.RunThread(async () =>
            HdlThreadLogic.Current.RunThread(() =>
            {
                //登陆参数
                var pra = new SendDataToServer.LoginObj();
                pra.Account = i_account;
                pra.Password = i_psw;
                pra.Source = CommonPage.Source;
                pra.Company = CommonPage.Company;
                //访问接口
                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(pra);
                var result = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson));
                var result = CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson));
                //处理登陆成功的数据
                this.AdjustLoginSuccessData(result, pra, i_account, i_psw, i_div);
@@ -815,6 +834,8 @@
        /// </summary>
        private void LoginByWechat()
        {
            //检测是否同意服务协议
            if (this.CheckPrivacyPolicy() == false) { return; }
#if Android
            com.hdl.home.Application.WXLogin();
            com.hdl.home.WXEntryActivity.RespAction = (authStr) =>
@@ -829,35 +850,38 @@
                {
                    return;
                }
                HdlThreadLogic.Current.RunThread(async () =>
                HdlThreadLogic.Current.RunThread(() =>
                {
                    //是否已经绑定
                    var re = await isBindAuthAsync(authStr);
                    var re = isBindAuthAsync(authStr);
                    if (re)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            //直接登录
                            HomePage.Instance.ShowLoginLoadView();
                        });
                        var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID();
                        var homes = await House.GetHomeLists();
                        ProgressBar.Show(Language.StringByID(R.MyInternationalizationString.Logining));
                        var resultRegID = Shared.Common.CommonPage.Instance.PushRegID();
                        var homes = HdlResidenceLogic.Current.GetHomeListsFromDb(false);
                        //刷新个人中心的内存及线程
                        await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
                        bool result = UserCenterLogic.InitUserCenterMenmoryAndThread();
                        //启动ZigBee
                        ZigBee.Common.Application.Init();
                        Application.RunOnMainThread(() =>
                        HdlThreadLogic.Current.RunMain(() =>
                        {
                            ProgressBar.Close();
                            this.RemoveFromParent();
                            CommonPage.Instance.RemoveViewByTag("Login");
                            UserPage.Instance.Fresh();
                            if (result == true)
                            {
                                //false:开启了调试功能
                                UserPage.Instance.ReFreshControl();
                            }
                        });
                    }
                    else
                    {
                        var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
                        Application.RunOnMainThread(() =>
                        HdlThreadLogic.Current.RunMain(() =>
                        {
                            var registerPage = new AccountRegister();
                            CommonPage.Instance.AddChidren(registerPage);
@@ -874,7 +898,7 @@
        /// </summary>
        /// <param name="authStr"></param>
        /// <returns></returns>
        private async System.Threading.Tasks.Task<bool> isBindAuthAsync(string authStr)
        private bool isBindAuthAsync(string authStr)
        {
            var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
            var auth = new SendDataToServer.AuthUser()
@@ -886,7 +910,7 @@
            //获取微信昵称
            var strUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + authRes.access_token;
            strUrl += "&openid=" + authRes.openid;
            var byteData = await Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, null, "GET");
            var byteData = Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, null, "GET");
            if (byteData == null)
            {
                return false;
@@ -896,7 +920,7 @@
            auth.UserName = nickData.nickname;
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(auth);
            var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/InsertOrUpdateAuthUser", System.Text.Encoding.UTF8.GetBytes(requestJson));
            var revertObj = CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/InsertOrUpdateAuthUser", System.Text.Encoding.UTF8.GetBytes(requestJson));
            if (revertObj == null)
            {
                return false;
@@ -907,7 +931,7 @@
                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString());
                var revertData = responseDataObj;
                //标记上一次是不是同一个账号登陆
                UserCenter.UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid;
                Config.Instance.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid;
                Config.Instance.Account = revertData.Account;
                Config.Instance.MD5PWD = revertData.MD5PWD;
                Config.Instance.Guid = revertData.Guid;
@@ -931,18 +955,26 @@
        /// <param name="i_account">账号</param>
        /// <param name="i_verCode">验证码</param>
        /// <param name="i_div">1:手机号 2:邮箱</param>
        private async void LoginByVerCode(string i_account, string i_verCode, int i_div)
        private void LoginByVerCode(string i_account, string i_verCode, int i_div)
        {
            var pra = new SendDataToServer.LoginValidCodeOBJ()
            //检测是否同意服务协议
            if (this.CheckPrivacyPolicy() == false) { return; }
            //登陆中....
            CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining));
            HdlThreadLogic.Current.RunThread(() =>
            {
                Account = i_account,
                Code = i_verCode,
                Language = CommonPage.ZigBeeLanguage,
                AreaCode = int.Parse(CommonPage.PhoneZoneStr)
            };
            var result = await CommonFormResouce.LoginByCode(pra);
            //处理登陆成功的数据
            this.AdjustLoginSuccessData(result, pra, i_account, string.Empty, i_div);
                var pra = new SendDataToServer.LoginValidCodeOBJ()
                {
                    Account = i_account,
                    Code = i_verCode,
                    Language = CommonPage.ZigBeeLanguage,
                    AreaCode = int.Parse(CommonPage.PhoneZoneStr)
                };
                var result = CommonFormResouce.LoginByCode(pra);
                //处理登陆成功的数据
                this.AdjustLoginSuccessData(result, pra, i_account, string.Empty, i_div);
            });
        }
        /// <summary>
@@ -952,7 +984,7 @@
        /// <param name="account">账号</param>
        /// <param name="i_div">1:手机号 2:邮箱</param>
        /// <returns></returns>
        private async System.Threading.Tasks.Task<bool> SendVerCode(NormalViewControl btnSendCode, string account, int i_div)
        private bool SendVerCode(NormalViewControl btnSendCode, string account, int i_div)
        {
            //不能再点击
            btnSendCode.CanClick = false;
@@ -973,7 +1005,7 @@
                AreaCode = int.Parse(CommonPage.PhoneZoneStr),
                Language = CommonPage.ZigBeeLanguage
            };
            var requestRevertObj = await CommonFormResouce.LoginSendVerCode(reqDtoSignPhone);
            var requestRevertObj = CommonFormResouce.LoginSendVerCode(reqDtoSignPhone);
            if (requestRevertObj == null)
            {
                //请求服务器失败
@@ -1067,7 +1099,7 @@
        /// <param name="i_account">账号</param>
        /// <param name="i_psw">密码,验证码登陆时,设置为 string.Empty</param>
        /// <param name="i_div">1:手机号 2:邮箱</param>
        private async void AdjustLoginSuccessData(Common.ResponseEntity.ResponsePack revertObj, object pra,
        private void AdjustLoginSuccessData(Common.ResponseEntity.ResponsePack revertObj, object pra,
            string i_account, string i_psw, int i_div)
        {
            if (revertObj == null)
@@ -1078,23 +1110,19 @@
                    CommonPage.Instance.FailureToServer();
                    CommonPage.Loading.Hide();
                });
                HdlLogLogic.Current.WriteLog(-1, "登陆时,没网络");
                return;
            }
            var stateCodeStr = revertObj.StateCode.ToUpper();
            //Error 不能直接从服务器取,只能根据状态码逐一判断
            if (stateCodeStr == "SUCCESS")
            {
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //显示启动页
                    HomePage.Instance.ShowLoginLoadView();
                });
                //存储数据
                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString());
                var revertData = responseDataObj;
                Config.ReFresh();
                //标记上一次是不是同一个账号登陆
                UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid;
                Config.Instance.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid;
                Config.Instance.Account = revertData.Account;
                Config.Instance.Password = i_psw;
                Config.Instance.MD5PWD = revertData.MD5PWD;
@@ -1103,19 +1131,31 @@
                Config.Instance.LoginToken = revertData.Token;
                Config.Instance.Save();
                var resultRegID = await CommonPage.Instance.PushRegID();
                var homes = await House.GetHomeLists();
                var resultRegID = CommonPage.Instance.PushRegID();
                var homes = HdlResidenceLogic.Current.GetHomeListsFromDb(false);
                //刷新个人中心的内存及线程
                await UserCenterLogic.InitUserCenterMenmoryAndThread();
                //启动ZigBee
                ZigBee.Common.Application.Init();
                bool result = UserCenterLogic.InitUserCenterMenmoryAndThread();
                //启动ZigBee
                ZigBee.Common.Application.Init();
//#if iOS
//                //初始化全视通
//                Shared.IOS.HDLFVSDK.Video.Init("", revertData.UserID.ToString());
//#endif
                HdlThreadLogic.Current.RunMain(() =>
                {
                    CommonPage.Loading.Hide();
                    this.RemoveFromParent();
                    CommonPage.Instance.RemoveViewByTag("Login");
                    UserPage.Instance.Fresh();
                    if (result == true)
                    {
                        //false:开启了调试功能
                        UserPage.Instance.ReFreshControl();
                    }
                });
                return;
            }
@@ -1158,6 +1198,11 @@
                    //请先获取验证码
                    btnErrorMsg.TextID = R.MyInternationalizationString.NORECORD;
                }
                else if (stateCodeStr == "BERESTRICT")
                {
                    //此账号无权登录
                    btnErrorMsg.TextID = R.MyInternationalizationString.ThisAccountHasNoAuthorityToLogin;
                }
                else if (stateCodeStr == "YOUDATANOISLOCALREGION")
                {
                    //不在本区域,需要重定向区域后再次请求登录
@@ -1186,9 +1231,9 @@
            });
        }
        #endregion
#endregion
        #region ■ 一般方法___________________________
#region ■ 一般方法___________________________
        /// <summary>
        /// 检测隐私协议
@@ -1206,6 +1251,6 @@
            return true;
        }
        #endregion
#endregion
    }
}