JLChen
2021-01-05 f500e14c0a994487070380c50c85e0929cbc8e63
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,21 +50,21 @@
            //AddChidren (buttonView);
            Button btnLogo = new Button () {
                Y = Application.GetRealHeight(30),
                Y = Application.GetRealHeight (30),
                Height = Application.GetRealHeight (430),
                UnSelectedImagePath = MainPage.RegisterLogoString,
            };
            logoView.AddChidren (btnLogo);
            var accountView = new FrameLayout () {
                Width = Application.GetMinRealAverage (500),
                Height = Application.GetMinRealAverage (85),
                Width = Application.GetRealWidth (500),
                Height = Application.GetRealWidth (85),
                X = Application.GetRealWidth (70),
                Y = btnLogo.Bottom + Application.GetRealHeight (30),
                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),
@@ -73,11 +74,16 @@
                TextAlignment = TextAlignment.CenterLeft,
                Radius = (uint)Application.GetRealHeight (0),
                TextColor = SkinStyle.Current.TextColor1,
                //Text = account,
#if DEBUG
                Text = "18926269190@189.cn"
#endif
                Text = account,
            };
#if DEBUG
            //etAccount.Text = "18926269190@189.cn";
            //etAccount.Text = "721343314@qq.com";
            //etAccount.Text = "crabtreel12019@gmail.com";
            etAccount.Text = "2791308028@qq.com";
#endif
            accountView.AddChidren (etAccount);
            var userConfigBytes = IO.FileUtils.ReadFile ("AccountListDB");
@@ -91,6 +97,13 @@
            }
            var accountList = accountListDB.account;
            //自动填写账号
            if (string.IsNullOrEmpty (account)) {
                if (accountList.Count > 0) {
                    etAccount.Text = accountList [accountList.Count - 1];
                }
            }
            var accountListView = new VerticalScrolViewLayout () {
                Width = Application.GetRealWidth (500),
                Height = Application.GetRealHeight (85 * 2),
@@ -101,36 +114,37 @@
            };
            var passwrodView = new FrameLayout () {
                Width = Application.GetMinRealAverage (500),
                Height = Application.GetMinRealAverage (85),
                Width = Application.GetRealWidth (500),
                Height = Application.GetRealWidth (85),
                X = Application.GetRealWidth (70),
                Y = accountView.Bottom + Application.GetRealHeight (50),
                Y = accountView.Bottom + Application.GetRealWidth (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),
                TextAlignment = TextAlignment.CenterLeft,
                SecureTextEntry = true,
                TextColor = SkinStyle.Current.TextColor1,
#if DEBUG
                Text = "123456"
#endif
                //Text = password,
                Text = password,
            };
#if DEBUG
            etPasswrod.Text = "123456";
#endif
            passwrodView.AddChidren (etPasswrod);
            Button btnShowPassword = new Button () {
                X = etPasswrod.Right ,
                Y = etPasswrod.Y + Application.GetRealHeight (12),
                X = etPasswrod.Right,
                Y = etPasswrod.Y + Application.GetRealWidth (12),
                Width = Application.GetRealWidth (73),
                Height = Application.GetRealHeight (60),
                UnSelectedImagePath = "CrabtreeAdd/ShowPW.png",
                SelectedImagePath = "CrabtreeAdd/HidePW.png",
                Height = Application.GetRealWidth (60),
                UnSelectedImagePath = "CrabtreeAdd/HidePW.png",
                SelectedImagePath = "CrabtreeAdd/ShowPW.png",
                BorderColor = SkinStyle.Current.Transparent,
                BorderWidth = 2,
                Radius = 1
@@ -141,32 +155,36 @@
                etPasswrod.SecureTextEntry = !btnShowPassword.IsSelected;
            };
#if DEBUG
            int NigelLoginPass = 0;
            btnLogo.MouseUpEventHandler += (sender, e) => {
                if (NigelLoginPass == 3) {
                    etAccount.Text = @"464027401@qq.com";
                    etPasswrod.Text = "qqqqqq";
                } else if (NigelLoginPass == 5) {
                    etAccount.Text = @"Jai.singh@havells.com";
                    etPasswrod.Text = "123456";
                }
                NigelLoginPass++;
            };
#endif
//#if DEBUG
//            int NigelLoginPass = 0;
//            btnLogo.MouseUpEventHandler += (sender, e) => {
//                if (NigelLoginPass == 3) {
//                    etAccount.Text = @"464027401@qq.com";
//                    etPasswrod.Text = "qqqqqq";
//                } else if (NigelLoginPass == 5) {
//                    etAccount.Text = @"Jai.singh@havells.com";
//                    etPasswrod.Text = "123456";
//                }
//                NigelLoginPass++;
//            };
//#endif
            //if (accountList.Count > 0) {
            //    etAccount.Text = accountList [accountList.Count-1];
            //}
            etAccount.EditorEnterAction += (obj) => {
                Application.HideSoftInput ();
                etPasswrod.Foucs = true;
            };
            etPasswrod.EditorEnterAction += (obj) => {
                Application.HideSoftInput ();
            };
            };
            Button btnRegister = new Button () {
                Width = Application.GetRealWidth (200),
                Height = Application.GetRealHeight (85),
                Height = Application.GetRealWidth (85),
                X = Application.GetRealWidth (70),
                Y = passwrodView.Bottom + Application.GetRealHeight (10),
                Y = passwrodView.Bottom + Application.GetRealWidth (10),
                Text = "Sign up",
                TextSize = 15,
                TextColor = SkinStyle.Current.TextColor1,
@@ -176,13 +194,13 @@
                Close ();
                new AccountRegistration_Crabtree ().Show ();
            };
           bodyView.AddChidren (btnRegister);
            bodyView.AddChidren (btnRegister);
            Button btnForgotPassword = new Button () {
                Width = Application.GetRealWidth (500 / 2),
                Height = Application.GetRealHeight (85),
                Height = Application.GetRealWidth (85),
                X = btnRegister.Right + Application.GetRealWidth (50),
                Y = passwrodView.Bottom + Application.GetRealHeight (10),
                Y = passwrodView.Bottom + Application.GetRealWidth (10),
                Text = "Forgot password?",
                TextSize = 15,
                TextColor = SkinStyle.Current.TextColor1,
@@ -192,13 +210,13 @@
                new ForgotPassword ().Show ();
                this.Close ();
            };
           bodyView.AddChidren (btnForgotPassword);
            bodyView.AddChidren (btnForgotPassword);
            Button btnLogin = new Button () {
                Width = Application.GetRealWidth (504),
                Height = Application.GetRealHeight (89),
                Height = Application.GetRealWidth (89),
                X = Application.GetRealWidth (60),
                Y = btnRegister.Bottom + Application.GetRealHeight(70),
                Y = btnRegister.Bottom + Application.GetRealWidth (70),
                BackgroundColor = SkinStyle.Current.MainColor,
                SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
                TextID = R.MyInternationalizationString.Login,
@@ -208,7 +226,7 @@
                BorderColor = SkinStyle.Current.Transparent,
                BorderWidth = 0,
            };
           bodyView.AddChidren (btnLogin);
            bodyView.AddChidren (btnLogin);
            btnLogin.MouseDownEventHandler += (sender, e) => {
                btnLogin.IsSelected = true;
            };
@@ -223,18 +241,33 @@
                    });
                    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);
                    });
                    return;
                }
                //邮箱格式不对
                if (!CommonUtlis.Current.CheckEmail(account)) {
                    Application.RunOnMainThread (() => {
                        new Tip () { Text = Language.StringByID (R.MyInternationalizationString.PleaseCheckEmailAddressCorrectly), Direction = AMPopTipDirection.Up, CloseTime = 3 }.Show (btnLogo);
                    });
                    return;
                }
                if (string.IsNullOrEmpty (password)) {
                    Application.RunOnMainThread (() => {
                        new Tip () { Text = "Please enter your password.", Direction = AMPopTipDirection.Up, CloseTime = 3 }.Show (btnLogo);
                    });
                    return;
                }
                //检测账号是否锁定
                if (CommonConfig.Current.CheckIfLock (account)) {
                    return;
                }
                System.Threading.Tasks.Task.Run (() => {
                    try {
                        Application.RunOnMainThread (() => {
@@ -244,15 +277,15 @@
                                MainPage.Loading.Start ("Login...");
                            }
                        });
                        if (UserConfig.Instance.internetStatus == 0 || !SystemRemote.checeInternet () ) {
                        if (UserConfig.Instance.internetStatus == 0) {
                            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,93 +294,33 @@
                                }
                            });
                            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);
                        Utlis.WriteLine (ex.Message);
                    } finally {
                        Application.RunOnMainThread (() => {
                            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 +352,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 +389,376 @@
        }
        /// <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>
        /// 登录 2020-01-11
        /// </summary>
        /// <param name="account">Account.</param>
        /// <param name="password">Password.</param>
        private void Login (string account, string password, AccountListDB accountListDB)
        {
            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);
            if (revertObj.StateCode.ToUpper() == "SUCCESS") {
                //if (!accountListDB.account.Contains (account)) {
                //    accountListDB.account.Add (account);
                //    accountListDB.SaveAccountListDB ();
                //}
                if (accountListDB.account.Contains (account)) {
                    accountListDB.account.Remove (account);
                }
                accountListDB.account.Add (account);
                accountListDB.SaveAccountListDB ();
                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes> (revertObj.ResponseData.ToString ());
                var revertData = responseDataObj;
                MainPage.LoginUser = new UserInfo {
                    LoginToken = revertData.Token,
                    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 mResidenceRes = Newtonsoft.Json.JsonConvert.DeserializeObject<ResidenceRes> (revertObj2.ResponseData.ToString ());
                    //if (mResidenceRes.TotalCount != 0) {
                    //    //当住宅为空时先提示用户新建住宅
                    //} else {
                    var revertRoomData = mResidenceRes.PageData;
                    UserConfig.Instance.HomeLists = revertRoomData;
                    if (UserConfig.Instance.CurrentRegion == null) {
                        if (revertRoomData != null && revertRoomData.Count > 0) {
                            var bFind = false;
                            foreach (var mHome in revertRoomData) {
                                if (UserConfig.Instance.CheckThisHomeGatewaysNotEmpty (mHome)) {
                                    bFind = true;
                                    UserConfig.Instance.CurrentRegion = mHome;
                                    break;
                                }
                            }
                            if (!bFind) {
                                UserConfig.Instance.CurrentRegion = revertRoomData [0];
                            }
                            IO.FileUtils.DeleteAllFile ();
                        }
                    } else {
                        //2020-01-11
                        var findRoom = revertRoomData.Find ((obj) => obj.Id == UserConfig.Instance.CurrentRegion.Id);
                        if (findRoom != null && UserConfig.Instance.CheckThisHomeGatewaysNotEmpty (findRoom)) {
                            //刷新住宅 解决子账号问题
                            UserConfig.Instance.CurrentRegion = findRoom;
                            Room.InitAllRoom ();
                        } else {
                            //if (findRoom == null) {
                            if (revertRoomData != null && revertRoomData.Count > 0) {
                                var bFind = false;
                                foreach (var mHome in revertRoomData) {
                                    if (UserConfig.Instance.CheckThisHomeGatewaysNotEmpty (mHome)) {
                                        bFind = true;
                                        UserConfig.Instance.CurrentRegion = mHome;
                                        break;
                                    }
                                }
                                //if (!bFind) {
                                //    UserConfig.Instance.CurrentRegion = revertRoomData [0];
                                //}
                                if (!bFind) {
                                    var findRoom2 = revertRoomData.Find ((obj) => obj.IsOthreShare == false);
                                    if (findRoom2 != null) {
                                        UserConfig.Instance.CurrentRegion = findRoom2;
                                    } else {
                                        UserConfig.Instance.CurrentRegion = revertRoomData [0];
                                    }
                                }
                                IO.FileUtils.DeleteAllFile ();
                            }
                            //}else {
                            //    //刷新住宅 解决子账号问题
                            //    UserConfig.Instance.CurrentRegion = findRoom;
                            //    Room.InitAllRoom ();
                            //}
                        }
                }
                    ////原方案
                    //GetAllBindGatewarysPagger (revertRoomData);
                    ////获取当前住宅网关方案
                    //GetNowHomeGateway (revertRoomData);
                    SaveUserConfig (revertRoomData);
                    //}
                } else {
                    //GetHomePager 失败提示
                    ShowGetHomePagerErrorInfo (revertObj2.StateCode);
                }
            } 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;
                    if (CommonConfig.Current.ErrorLockListUpdate (account)) {
                        return;
                    }
                } 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;
                    //正则处理
                    //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.Value;
            if (!string.IsNullOrEmpty (mResult)) {
                MainPage.RequestHttpsHostMqtt = mResult;
            }
        }
        /// <summary>
        /// 保存数据 并加载页面
        /// </summary>
        /// <param name="revertRoomData"></param>
        void SaveUserConfig (List<RegionInfoRes> revertRoomData)
        {
            UserConfig.Instance.SaveUserConfig ();
            MainPage.LoginUser.LastTime = DateTime.Now;
            if (UserConfig.Instance.CheckHomeGatewaysNotEmpty ()) {
                //UserConfig.Instance.HomeLists = revertRoomData;
                MainPage.LoginUser.SaveUserInfo ();
                //UserConfig.Instance.SaveUserConfig ();
                Scene.Refresh ();
                A31MusicModel.Refresh ();
                Application.RunOnMainThread (() => {
                    Close ();
                    UserMiddle.Init (false, true);
                    EquipmentPublicClass.CheckLinkRemote (UserConfig.Instance.internetStatus);
                });
            } else {
                Application.RunOnMainThread (() => {
                    UserMiddle.Init (false, true);
                    Close ();
                });
            }
        }
        ///// <summary>
        ///// 查询当前住宅 网关列表
        ///// </summary>
        //void GetNowHomeGateway (List<RegionInfoRes> revertRoomData)
        //{
        //    var requestObj3 = new GetSingleHomeGatewayPaggerObj ();
        //    requestObj3.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
        //    requestObj3.ReqDto.HomeId = UserConfig.Instance.CurrentRegion.Id;
        //    requestObj3.ReqDto.PageSetting.Page = 1;
        //    requestObj3.ReqDto.PageSetting.PageSize = 999;
        //    string urlHead = MainPage.RequestHttpsHost;
        //    if (requestObj3.IsOtherAccountCtrl) {
        //        urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
        //        requestObj3.ReqDto.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
        //    }
        //    //var requestObj3 = new GatewayByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id };
        //    var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3);
        //    var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3, urlHead);
        //    if (revertObj3.StateCode.ToUpper () == "SUCCESS") {
        //        var mGateRes = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.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 {
        //        Application.RunOnMainThread (() => {
        //            new Alert ("", ErrorCode.FailedGetGatewaysForHome, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
        //        });
        //    }
        //}
        ///// <summary>
        ///// GetAllBindGatewarysPagger
        ///// </summary>
        ///// <param name="revertRoomData"></param>
        //void GetAllBindGatewarysPagger (List<RegionInfoRes> revertRoomData) {
        //    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);
        //    }
        //}
        
    }
}