xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI1-Login/LoginPageBLL.cs
@@ -36,11 +36,11 @@
            try
            {
                var mGlobalRegionListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GlobalRegionListRes>(result.Data.ToString());
                if (UserInfo.Current.RequestHttpsHost != mGlobalRegionListObj.regionUrl)
                if (OnAppConfig.Instance.RequestHttpsHost != mGlobalRegionListObj.regionUrl)
                {
                    UserInfo.Current.RequestHttpsHost = mGlobalRegionListObj.regionUrl;
                    UserInfo.Current.GlobalRegion = mGlobalRegionListObj;
                    UserInfo.Current.SaveUserInfo();
                    OnAppConfig.Instance.RequestHttpsHost = mGlobalRegionListObj.regionUrl;
                    OnAppConfig.Instance.GlobalRegion = mGlobalRegionListObj;
                    OnAppConfig.Instance.SaveConfig();
                }
            }
            catch { }
@@ -84,151 +84,97 @@
                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        return;
                    }
                    //加载Loading效果
                    var waitPage = new Loading();
                    bodyView.AddChidren(waitPage);
                    waitPage.Start(Language.StringByID(StringId.PleaseWait));
                    int time = 60;
                    new Thread(() =>
                    {
                        //1.先检查账号是否注册过
                        var result = pm.GetRegionByAccount(account);
                        if (result.Code != StateCode.SUCCESS)
                        try
                        {
                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
                            return;
                        }
                        else
                        {
                            //检测当前配置域名是否一致,不一致则替换
                            CheckAndSetUserRequestHost(result);
                            //
                            Application.RunOnMainThread(() =>
                            //1.先检查账号是否注册过
                            var result = pm.GetRegionByAccount(account);
                            if (result.Code != StateCode.SUCCESS)
                            {
                                btnGetVerificationCode.IsSelected = false;
                                btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                            });
                            new Thread(() =>
                                IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
                                ShowBtnAccountViewBottomLineError();
                                return;
                            }
                            else
                            {
                                while (time > 0)
                                //检测当前配置域名是否一致,不一致则替换
                                CheckAndSetUserRequestHost(result);
                                //2.1请求获取验证码
                                var resultObj = pm.VerificationCodeSend(VerifyType.VERIFY_LOGIN, account, true, phoneZoneCode);
                                if (resultObj.Code != StateCode.SUCCESS)
                                {
                                    time--;
                                    //2.2请求获取验证码失败
                                    Application.RunOnMainThread(() =>
                                    {
                                        btnGetVerificationCode.Text = time.ToString() + "s";
                                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                                    });
                                    Thread.Sleep(1000);
                                    // 提示错误
                                    IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                                }
                                Application.RunOnMainThread(() =>
                                else
                                {
                                    btnGetVerificationCode.IsSelected = true;
                                    btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                                });
                            })
                            { IsBackground = true }.Start();
                                    Application.RunOnMainThread(() =>
                                    {
                                        btnGetVerificationCode.IsSelected = false;
                                        btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                                    });
                            //2.1请求获取验证码
                            var resultObj = pm.VerificationCodeSend(VerifyType.VERIFY_LOGIN, account, true, phoneZoneCode);
                            if (resultObj.Code != StateCode.SUCCESS)
                            {
                                //2.2请求获取验证码失败
                                Application.RunOnMainThread(() =>
                                {
                                    btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                    btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                                });
                                // 提示错误
                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                                    new Thread(() =>
                                    {
                                        while (time > 0)
                                        {
                                            time--;
                                            Application.RunOnMainThread(() =>
                                            {
                                                btnGetVerificationCode.Text = time.ToString() + "s";
                                            });
                                            Thread.Sleep(1000);
                                        }
                                        Application.RunOnMainThread(() =>
                                        {
                                            btnGetVerificationCode.IsSelected = true;
                                            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                                        });
                                    })
                                    { IsBackground = true }.Start();
                                }
                            }
                        }
                        catch { }
                        finally
                        {
                            Application.RunOnMainThread(() =>
                            {
                                if (waitPage != null)
                                {
                                    waitPage.RemoveFromParent();
                                    waitPage = null;
                                }
                            });
                        }
                    })
                    { IsBackground = true }.Start();
                    //    btnGetVerificationCode.IsSelected = false ;
                    //    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                    //    int time = 60;
                    //    new Thread(() =>
                    //    {
                    //        while (time > 0)
                    //        {
                    //            time--;
                    //            Application.RunOnMainThread(() =>
                    //            {
                    //                btnGetVerificationCode.Text = time.ToString() + "s";
                    //            });
                    //            Thread.Sleep(1000);
                    //        }
                    //        Application.RunOnMainThread(() =>
                    //        {
                    //            btnGetVerificationCode.IsSelected = true;
                    //            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                    //        });
                    //    })
                    //    { IsBackground = true }.Start();
                    //    new Thread(() =>
                    //    {
                    //        //获取验证码
                    //        var result = pm.GetLoginVerCode(phoneNumber);
                    //        if (result.StateCode.ToUpper() == StateCode.SUCCESS_CODE)
                    //        {
                    //        }
                    //        //登录失败
                    //        else
                    //        {
                    //            string tipStr = "Sever erorr";
                    //            switch (result.StateCode.ToUpper())
                    //            {
                    //                case "USERNAMEORPWDERROR":
                    //                    tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
                    //                    Application.RunOnMainThread(() =>
                    //                    {
                    //                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                    //                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                    //                    });
                    //                    break;
                    //                case "ACCOUNTNOEXISTS":
                    //                    tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
                    //                    Application.RunOnMainThread(() =>
                    //                    {
                    //                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                    //                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                    //                    });
                    //                    break;
                    //                case "SENDFAIL":
                    //                    tipStr = Language.StringByID(StringId.FailedToSendVerificationCode);
                    //                    Application.RunOnMainThread(() =>
                    //                    {
                    //                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                    //                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                    //                    });
                    //                    break;
                    //                case "Self:Net_Error":
                    //                    tipStr = Language.StringByID(StringId.NetworkAnomaly);
                    //                    break;
                    //            }
                    //            Application.RunOnMainThread(() =>
                    //            {
                    //                //提示原因
                    //                var tip = new Tip()
                    //                {
                    //                    Text = tipStr,
                    //                    CloseTime = 1,
                    //                    Direction = AMPopTipDirection.None
                    //                };
                    //                tip.Show(bodyView);
                    //            });
                    //        }
                    //    })
                    //    { IsBackground = true }.Start();
                }
            };
        }
        /// <summary>
        /// 切换登录类型
        ///
        /// </summary>
        void LoadPage_SwitchLoginType()
        /// <param name="type">是否选择手机登录</param>
        void LoginTypeChange(bool isPhone)
        {
            //选择手机登录
            btnPhoneLogin.MouseUpEventHandler = (sender, e) =>
            if (isPhone)
            {
                if (loginType == 0)
                    return;
@@ -281,11 +227,8 @@
                    etPassword.SecureTextEntry = false;
                }
                #endregion
            };
            //选择邮箱登录
            btnEmailLogin.MouseUpEventHandler += (sender, e) =>
            }
            else
            {
                if (loginType == 1)
                    return;
@@ -319,14 +262,85 @@
                //if (btnGetVerificationCode.Parent != null)
                //{
                    //btnGetVerificationCode.RemoveFromParent();
                    btnGetVerificationCode.Visible = false;
                //btnGetVerificationCode.RemoveFromParent();
                btnGetVerificationCode.Visible = false;
                //}
                //隐藏密码
                etPassword.SecureTextEntry = true;
                //隐藏验证码登录方式,邮箱登录没有验证码登录
                btnSwitchLoginMode.Visible = false;
            }
        }
        /// <summary>
        /// 切换登录类型
        /// </summary>
        void LoadPage_SwitchLoginType()
        {
            //选择手机登录
            btnPhoneLogin.MouseUpEventHandler = (sender, e) =>
            {
                LoginTypeChange(true);
            };
            //选择邮箱登录
            btnEmailLogin.MouseUpEventHandler += (sender, e) =>
            {
                LoginTypeChange(false);
            };
        }
        /// <summary>
        /// 切换登录方式 验证码/密码
        /// </summary>
        void LoginModeChange()
        {
            //清除密码框文本数据
            etPassword.Text = "";
            //密码登录
            if (logintMode == 0)
            {
                btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
                passwordView.AddChidren(btnVisiblePassword);
                passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
                etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryPassword);
                passwordView.AddChidren(btnForgetPassword);
                btnPasswordIcon.IsSelected = false;
                //if (btnGetVerificationCode.Parent != null)
                //{
                //btnGetVerificationCode.RemoveFromParent();
                btnGetVerificationCode.Visible = false;
                //}
                //隐藏密码
                etPassword.SecureTextEntry = true;
            }
            //验证码登录
            else if (logintMode == 1)
            {
                if (Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11) && btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                {
                    btnGetVerificationCode.IsSelected = true;
                }
                btnSwitchLoginMode.TextID = StringId.PasswordLogin;
                //passwordView.AddChidren(btnGetVerificationCode);
                btnGetVerificationCode.Visible = true;
                etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode);
                btnPasswordIcon.IsSelected = true;
                if (btnVisiblePassword.Parent != null)
                {
                    btnVisiblePassword.RemoveFromParent();
                }
                if (btnDividingLineVertical_PasswordView2.Parent != null)
                {
                    btnDividingLineVertical_PasswordView2.RemoveFromParent();
                }
                if (btnForgetPassword.Parent != null)
                {
                    btnForgetPassword.RemoveFromParent();
                }
                //验证码不需要隐藏
                etPassword.SecureTextEntry = false;
            }
        }
        /// <summary>
@@ -338,52 +352,7 @@
            btnSwitchLoginMode.MouseUpEventHandler = (sender, e) =>
            {
                logintMode = logintMode == 0 ? 1 : 0;
                //清除密码框文本数据
                etPassword.Text = "";
                //密码登录
                if (logintMode == 0)
                {
                    btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
                    passwordView.AddChidren(btnVisiblePassword);
                    passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
                    etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryPassword);
                    passwordView.AddChidren(btnForgetPassword);
                    btnPasswordIcon.IsSelected = false;
                    //if (btnGetVerificationCode.Parent != null)
                    //{
                        //btnGetVerificationCode.RemoveFromParent();
                        btnGetVerificationCode.Visible = false;
                    //}
                    //隐藏密码
                    etPassword.SecureTextEntry = true;
                }
                //验证码登录
                else if (logintMode == 1)
                {
                    if (Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11) && btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                    {
                        btnGetVerificationCode.IsSelected = true;
                    }
                    btnSwitchLoginMode.TextID = StringId.PasswordLogin;
                    //passwordView.AddChidren(btnGetVerificationCode);
                    btnGetVerificationCode.Visible = true;
                    etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode);
                    btnPasswordIcon.IsSelected = true;
                    if (btnVisiblePassword.Parent != null)
                    {
                        btnVisiblePassword.RemoveFromParent();
                    }
                    if (btnDividingLineVertical_PasswordView2.Parent != null)
                    {
                        btnDividingLineVertical_PasswordView2.RemoveFromParent();
                    }
                    if (btnForgetPassword.Parent != null)
                    {
                        btnForgetPassword.RemoveFromParent();
                    }
                    //验证码不需要隐藏
                    etPassword.SecureTextEntry = false;
                }
                LoginModeChange();
            };
        }
@@ -568,7 +537,7 @@
                {
                    btnLogin.IsSelected = false;
                }
                if (Regex.IsMatch(account, @"^[1]+\d{10}") )//&& account.Length == 11)
                if (Regex.IsMatch(account, @"^[1]+\d{10}"))//&& account.Length == 11)
                {
                    btnGetVerificationCode.IsSelected = true;
                    btnGetVerificationCode.TextColor = CSS_Color.MainBackgroundColor;
@@ -610,6 +579,7 @@
                        if (result.Code != StateCode.SUCCESS)
                        {
                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
                            ShowBtnAccountViewBottomLineError();
                            return;
                        }
                        else
@@ -621,14 +591,14 @@
                    //登录
                    var loginResult = LoadMethod_Login();
                    if( !string.IsNullOrEmpty (verAccount))//验证登录账号
                    if (!string.IsNullOrEmpty(verAccount))//验证登录账号
                    {
                        Application.RunOnMainThread(() =>
                        {
                            if (verAccount == etPassword.Text.Trim())
                            {
                                //跳转页面----
                                MainPage.GoUserPage();
                                MainPage.GoUserPage(true);
                                return;
                            }
                        });
@@ -644,298 +614,44 @@
                             */
                            /*
                             查看本地是否存在数据
                             存在则导出
                             * 查看本地是否存在数据
                             * 存在则导出
                             */
                            var isExis = FileUtils.IsExisFolder(DB_ResidenceData.residenceData.CurReginID);
                            if (isExis)
                            {
                                FileUtils.DeleteAllFile();
                                string regionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID);
                                FileUtils.RestoreRegionFiles(regionRootPath);
                                DB_ResidenceData.residenceData.EixtAccount();
                                OnAppConfig.Instance.RefreshUserConfig();
                                DB_ResidenceData.InitRoomFunction();
                            }
                            if ( UserInfo.Current.userEmailInfo == "464027401@qq.com")
                            {
                                DB_ResidenceData.residenceData.floors.Add(new Floor() { name = "1F", sid = "09888" });
                                var r111 = new Room() { sid = "0001", name = "Room-1", floorId = "09888", backgroundImage = "Classification/Room/Roombg.png" };
                                DB_ResidenceData.rooms.Add(r111);
                                DB_ResidenceData.residenceData.floors.Add(new Floor() { sid = "000022222", name = "1F" });
                                r111.SaveRoomData();
                                new AC()
                                {
                                    sid = "030101123456780604010001ABCD",
                                    name = "空调",
                                    function = new List<Trait>() {
                                                                new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
                                                                new Trait { name="mode", max = 2,min =0,value_key = new List<string>{ "auto", "heat", "cool","dry" } },
                                                                new Trait { name = "fan",max = 3,min =0,value_key = new List<string>{ "low", "medium", "high" ,"auto"} },
                                                                new Trait { name = "set_temperature", max = 32,min=16,value_key = new List<string>{"up","down" } },
                                                            },
                                    roomIdList = new List<string>() { "0001" },
                                    lastState = "制冷 中风 18°C",
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 8,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Light()
                                {
                                    sid = "030101123456780202020002ABCD",
                                    name = "调光灯",
                                    function = new List<Trait>() {
                                                                new Trait { name="brightness", max=100,min = 0, value_key= new List<string> { "up","down"} },
                                                            },//"brightness",
                                    roomIdList = new List<string>() { "0001" },
                                    lastState = "20%",
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 9,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Curtain()
                                {
                                    sid = "030101123456780303010003ABCD",
                                    name = "窗帘模块",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                                new Trait { name="on_off", max=2,min = 0, value_key= new List<string> { "on","off","stop"} },
                                                            },// "curtain",
                                    lastState = "开",
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 7,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Curtain()
                                {
                                    sid = "030101123456780303030011ABCD",
                                    name = "开合帘",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                                new Trait { name="on_off", max=100,min = 0, value_key= new List<string> { "on","off","stop"} },
                                                            },//"curtaintype",
                                    lastState = "20%",
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 7,
                                        LoopID = 11,
                                    },
                                }.SaveFunctionData();
                                new Curtain()
                                {
                                    sid = "030101123456780503040012ABCD",
                                    name = "卷帘",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                                new Trait { name="on_off", max=2,min = 0, value_key= new List<string> { "on","off","stop"} },
                                                                new Trait { name="percent", max=100,min = 0, value_key= new List<string> { "percent" } },
                                                            },// "rollingshutter",
                                    lastState = "20%",
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 17,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new FloorHeating()
                                {
                                    sid = "030101123456780404020004ABCD",
                                    name = "地热",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                                new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
                                                                new Trait { name="mode", max = 2,min =0,value_key = new List<string>{ "normal", "day", "night","timer","away" } },
                                                                new Trait { name = "set_temperature", max = 32,min=5,value_key = new List<string>{"up","down" } },
                                                            },//
                                    lastState = "自动 25°C",
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 111,
                                        DeviceID = 12,
                                        LoopID = 1
                                    }
                                }.SaveFunctionData();
                                new Light()
                                {
                                    sid = "030101123456780202010005ABCD",
                                    name = "吊灯",
                                    function = new List<Trait>() {
                                                                new Trait { name="on_off", max=100,min = 0, value_key= new List<string> { "on","off"} },
                                                            },//"on_off",
                                    roomIdList = new List<string>() { "0001" },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 6,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Light()
                                {
                                    sid = "030101123456780202040006ABCD",
                                    name = "RGB灯",
                                    function = new List<Trait>() {
                                                                new Trait { name="brightness", max=100,min = 0, value_key= new List<string> { "on","off"} },
                                                                new Trait { name="color", max=100,min = 0, value_key= new List<string> { "255", "255", "255" } },
                                                            },
                                    roomIdList = new List<string>() { "0001" },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 4,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Fan()
                                {
                                    sid = "030101123456781010020006ABCD",
                                    name = "风扇",
                                    function = new List<Trait>() {
                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
                                                            new Trait { name="percent", max=7,min = 0, value_key= new List<string> { "percent" } },
                                                        },
                                    roomIdList = new List<string>() { "0001" },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 142,
                                        DeviceID = 4,
                                        LoopID = 11,
                                    },
                                }.SaveFunctionData();
                                new TV()
                                {
                                    sid = "030101123456781010020006ABCD",
                                    name = "电视",
                                    function = new List<Trait>() {
                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
                                                        },
                                    roomIdList = new List<string>() { "0001" },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 142,
                                        DeviceID = 4,
                                        LoopID = 111,
                                    },
                                }.SaveFunctionData();
                                new SwitchSocket()
                                {
                                    sid = "030101123456780101020006ABCD",
                                    name = "插座",
                                    function = new List<Trait>() {
                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
                                                        },
                                    roomIdList = new List<string>() { "0001" },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 42,
                                        DeviceID = 6,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Sensor()
                                {
                                    sid = "030101123456781005060006ABCD",
                                    name = "PM2.5",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "22"} },
                                                        },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 111,
                                        DeviceID = 15,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Sensor()
                                {
                                    sid = "030101123456781005070006ABCD",
                                    name = "CO2",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "1352"} },
                                                        },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 111,
                                        DeviceID = 15,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Sensor()
                                {
                                    sid = "030101123456781005020006ABCD",
                                    name = "温度",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "28"} },
                                                        },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 111,
                                        DeviceID = 15,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Sensor()
                                {
                                    sid = "030101123456781005050006ABCD",
                                    name = "TVOC",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "0.3"} },
                                                        },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 111,
                                        DeviceID = 15,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                new Sensor()
                                {
                                    sid = "030101123456781005030006ABCD",
                                    name = "湿度",
                                    roomIdList = new List<string>() { "0001" },
                                    function = new List<Trait>() {
                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "15"} },
                                                        },
                                    bus_Data = new BusData
                                    {
                                        SubnetID = 111,
                                        DeviceID = 15,
                                        LoopID = 1,
                                    },
                                }.SaveFunctionData();
                                DB_ResidenceData.residenceData.SaveResidenceData();
                            }
                            //var isExis = FileUtils.IsExisFolder(DB_ResidenceData.residenceData.CurReginID);
                            //if (isExis)
                            //{
                            //    FileUtils.DeleteAllFile();
                            //    string regionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID);
                            //    FileUtils.RestoreRegionFiles(regionRootPath);
                            //    DB_ResidenceData.residenceData.EixtAccount();
                            //    OnAppConfig.Instance.RefreshUserConfig();
                            //    SpatialInfo.CurrentSpatial.InitRoomFunction();
                            //}
                            Application.RunOnMainThread(() =>
                            {
                                //20201223-登录成功之后,将下载数据完成标记标记为false,防止主页提前加载
                                Common.ApiUtlis.Ins.DownloadDataComplete = false;
                                //跳转页面----
                                MainPage.GoUserPage();
                                MainPage.GoUserPage(true);
                            });
                        }
                        else
                        {
                            //Application.RunOnMainThread(() =>
                            //{
                            //    BindingResidencePage page = new BindingResidencePage();
                            //    MainPage.BaseView.AddChidren(page);
                            //    page.LoadView();
                            //});
                            //2020-11-13 待确认
                            //获取住宅失败,重新标记为未登录状态
                             UserInfo.Current.LastTime = DateTime.MinValue;
                             UserInfo.Current.SaveUserInfo();
                            UserInfo.Current.LastTime = DateTime.MinValue;
                            UserInfo.Current.SaveUserInfo();
                            //登录失败,请先添加住宅!
                            Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.FailedGetHomeList));
                            //Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.FailedGetHomeList));
                        }
                    }
                }
@@ -990,14 +706,24 @@
                //    refreshToken = revertData.refreshToken,
                //    userName = revertData.name
                //};
                if (OnAppConfig.Instance.LastLoginUserId != revertData.userId)
                {
                    OnAppConfig.Instance.LastLoginUserId = revertData.userId;
                    OnAppConfig.Instance.SaveConfig();
                }
                UserInfo.Current.ClearUserInfo();
                UserInfo.Current.userType = revertData.userType;
                UserInfo.Current.AccountString = account;
                //UserInfo.Current.password = password;
                UserInfo.Current.LastTime = DateTime.Now;
                UserInfo.Current.ID = revertData.userId;
                UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
                UserInfo.Current.refreshToken = revertData.refreshToken;
                UserInfo.Current.RefreshToken = revertData.refreshToken;
                UserInfo.Current.userName = revertData.name;
                //UserInfo.Current.userMobileInfo = "";//重置用户手机
                //UserInfo.Current.userEmailInfo = "";//重置用户邮箱
                //UserInfo.Current.headImagePagePath = "LoginIcon/2.png";//
                //UserInfo.Current.CurrentRegion.RegionID = "";
                UserInfo.Current.SaveUserInfo();
                MainPage.Log("登录成功。");
                result = true;
@@ -1011,56 +737,75 @@
            //登录失败
            else
            {
                //2020-11-13 待修改
                string tipStr = "Sever erorr";
                switch (loginResult.Code)
                {
                    case "ValidCodeAndPhoneNoEqual":
                        tipStr = Language.StringByID(StringId.VerificationCodeError);
                        Application.RunOnMainThread(() =>
                        {
                            btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                        });
                        break;
                    case "USERNAMEORPWDERROR":
                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
                        Application.RunOnMainThread(() =>
                        {
                            btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                        });
                        break;
                    case "ACCOUNTNOEXISTS":
                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
                        Application.RunOnMainThread(() =>
                        {
                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        });
                        break;
                    case "NoRecord":
                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
                        break;
                    case "Self:Net_Error":
                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
                        break;
                }
                //账号或者密码错误
                Application.RunOnMainThread(() =>
                {
                    waitPage.Hide();
                    //提示原因
                    var tip = new Tip()
                    if (loginResult.Code == "10008")
                    {
                        Text = tipStr,
                        CloseTime = 1,
                        Direction = AMPopTipDirection.None
                    };
                    tip.Show(bodyView);
                        //用户名或密码错误
                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                    }
                    else if (loginResult.Code == "10010")
                    {
                        //用户不存在
                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                    }
                    else if (loginResult.Code == StateCode.VERIFICATION_CODE_WRONG)
                    {
                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                    }
                    else if (loginResult.Code == StateCode.AccountLoginLock)
                    {
                        ShowAccountLoginLockTip(loginResult);
                        //var tipStr = Language.StringByID(StringId.AccountLoginLock) + "\r\n" + Language.StringByID(StringId.PleaseTryToForgetPassword);
                        //Utlis.ShowTip(tipStr);
                        return;
                    }
                    IMessageCommon.Current.ShowErrorInfoAlter(loginResult.Code);
                });
            }
            return result;
        }
        /// <summary>
        /// 解析提示用户解锁时间
        /// 密码错误次数过多,账号被锁定!请通过忘记密码找回密码或{0}分钟后重试.
        /// </summary>
        /// <param name="loginResult"></param>
        void ShowAccountLoginLockTip(ResponsePackNew loginResult)
        {
            //密码错误次数过多,账号被锁定!
            var tipStr = Language.StringByID(StringId.AccountLoginLock);
            try
            {
                if (loginResult.extra != null)
                {
                    //请通过忘记密码找回密码或{0}分钟后重试.
                    var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountLoginLockExtraRes>(loginResult.extra.ToString());
                    string msg = Language.StringByID(StringId.PleaseTryToForgetPassword);
                    //var unlockTime = Utlis.UnixToDateTimeWithFormatMS(revertData.unlockTime, "HH:mm");
                    //msg = msg.Replace("{0}", unlockTime);
                    var unlockDatetime = Utlis.UnixToDateTimeMS(revertData.unlockTime);
                    var unlockTimeInt = unlockDatetime.Minute - DateTime.Now.Minute;
                    if (unlockTimeInt <= 0)
                    {
                        unlockTimeInt = 1;
                    }
                    msg = msg.Replace("{0}", unlockTimeInt.ToString());
                    tipStr = tipStr + "\r\n" + msg;
                }
            }
            catch { }
            Utlis.ShowTip(tipStr);
        }
        /// <summary>
@@ -1069,19 +814,28 @@
        bool LoadMethod_GetResidences()
        {
            var result = false;
            var responsePack = pm.GetHomePager();
            if (responsePack == StateCode.SUCCESS)
            var code = pm.GetHomePager();
            if (code == StateCode.SUCCESS)
            {
                //2020-11-13 待确认,没有住宅,不算登录成功
                if ( UserInfo.Current.regionList != null &&  UserInfo.Current.regionList.Count > 0){
                    result = true;
                }
                //result = true;
                ////2020-11-13 待确认,没有住宅,不算登录成功
                //if (UserInfo.Current.regionList != null && UserInfo.Current.regionList.Count > 0)
                //{
                //    result = true;
                //}
                //2020-12-10 没有住宅登录成功,但是不能进入主界面
                result = true;
            }
            else if( code == "null")
            {
                Application.RunOnMainThread(() =>
                {
                    MainPage.GoUserPage(false);
                });
            }
            else
            {
                // 提示错误
                IMessageCommon.Current.ShowErrorInfoAlter(responsePack);
                IMessageCommon.Current.ShowErrorInfoAlter(code);
            }
            return result;
        }
@@ -1093,22 +847,26 @@
        {
            btnRegister.MouseUpEventHandler += (sender, e) =>
            {
                //回调事件
                //Action callBackAction = () =>
                //{
                //    Application.RunOnMainThread(() =>
                //    {
                //        try
                //        {
                //        }
                //        catch (Exception ex)
                //        {
                //            MainPage.Log($"login callBackAction : {ex.Message}");
                //        }
                //    });
                //};
                //2020-12-22 增加点击隐藏键盘事件
                Application.HideSoftInput();
                var registerPage = new RegisterPage();
                //判断是否同意了隐私政策
                if (CheckPrivacyPolicy() == false) return;
                Action<string, string, bool> autoLoginAction = (account, password, isPhone) =>
                {
                    try
                    {
                        AutoLoginAction(account, password, isPhone);
                    }
                    catch (Exception ex)
                    {
                        MainPage.Log($"login callBackAction : {ex.Message}");
                    }
                };
                var registerPage = new RegisterPage(autoLoginAction);
                registerPage.Show();
                registerPage.ShowDialog();
            };
@@ -1121,25 +879,68 @@
        {
            btnForgetPassword.MouseUpEventHandler += (sender, e) =>
            {
                Action<string> callBackAction = (callBackPar_Action) =>
                //2020-12-22 增加点击隐藏键盘事件
                Application.HideSoftInput();
                //判断是否同意了隐私政策
                if (CheckPrivacyPolicy() == false) return;
                Action<string, string, bool> autoLoginAction = (account, password, isPhone) =>
                {
                    Application.RunOnMainThread(() =>
                    try
                    {
                        try
                        {
                            etAccount.Text = callBackPar_Action;
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"login callBackAction : {ex.Message}");
                        }
                    });
                        AutoLoginAction(account, password, isPhone);
                    }
                    catch (Exception ex)
                    {
                        MainPage.Log($"login callBackAction : {ex.Message}");
                    }
                };
                var forgetPasswordDialog = new ForgetPasswordPage(callBackAction);
                var forgetPasswordDialog = new ForgetPasswordPage(autoLoginAction);
                forgetPasswordDialog.Show();
                forgetPasswordDialog.ShowDialog();
            };
        }
        /// <summary>
        /// 用户不存在
        /// </summary>
        void ShowBtnAccountViewBottomLineError()
        {
            Application.RunOnMainThread(() =>
            {
                //用户不存在
                btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
            });
        }
        /// <summary>
        /// 自动登录回调事件
        /// </summary>
        /// <param name="mAccount"></param>
        /// <param name="mPassword"></param>
        /// <param name="isPhone"></param>
        void AutoLoginAction(string mAccount, string mPassword, bool isPhone)
        {
            //切换回手机或者邮箱登录
            LoginTypeChange(isPhone);
            //切换回密码登录1
            logintMode = 0;
            //切换回密码登录2
            LoginModeChange();
            //设置账户名和密码
            etAccount.Text = account;
            etPassword.Text = password;
            this.account = mAccount;
            this.password = mPassword;
            //创建登录线程
            var loginThread = LoadThread_Login();
            waitPage = new Loading();
            new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
        }
    }
}