wxr
2020-11-12 a715181089be0d31cd737a5367ffd02690b9d77f
HDL_ON/UI/UI1-Login/LoginPageBLL.cs
@@ -1,8 +1,10 @@
using System;
using System.Text.RegularExpressions;
using System.Threading;
using HDL_ON.DAL.Server;
using System.Collections.Generic;
using HDL_ON.UI.CSS;
using Shared;
using HDL_ON.Entity;
namespace HDL_ON.UI.UI1Login
{
@@ -17,11 +19,11 @@
            LoadPage_SwitchLoginType();
            LoadMethod_VisiblePassword();
            LoadPage_SwitchLoginMode();
            LoadMethod_LoginMethod();
            LoadEvent_Login();
            LoadPage_SelectionEditText();
            LoadPage_RegisterPage();
            GetVerificationCode();
            LoadMethod_ForgetPassword();
        }
        /// <summary>
@@ -29,35 +31,115 @@
        /// </summary>
        void GetVerificationCode()
        {
            btnGetVerificationCode.MouseUpEventHandler += (sender, e) =>
            btnGetVerificationCode.MouseUpEventHandler = (sender, e) =>
            {
#if DEBUG
                etAccount.Text = "17576024298";
#endif
                string phoneNumber = etAccount.Text.Trim();
                btnGetVerificationCode.Enable = false;
                btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                int time = 60;
                new Thread(() =>
                if (btnGetVerificationCode.IsSelected)
                {
                    while (time != 0)
                    string phoneNumber = etAccount.Text.Trim();
                    if (string.IsNullOrEmpty(phoneNumber))
                    {
                        time--;
                        var tip = new Tip()
                        {
                            Text = Language.StringByID(StringId.PlsEntryPhoneNumber),
                            CloseTime = 1,
                            Direction = AMPopTipDirection.None
                        };
                        tip.Show(bodyView);
                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        return;
                    }
                    if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11))
                    {
                        var tip = new Tip()
                        {
                            Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
                            CloseTime = 1,
                            Direction = AMPopTipDirection.None
                        };
                        tip.Show(bodyView);
                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        return;
                    }
                    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.Text = time.ToString() + "s";
                            btnGetVerificationCode.IsSelected = true;
                            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
                        });
                        Thread.Sleep(1000);
                    }
                })
                { IsBackground = true }.Start();
                //检查手机是否已经被注册
                var checkPhoneResult = pm.IsExistingAccount(etAccount.Text.Trim());
                //手机已经被注册
                if (checkPhoneResult.StateCode == HttpRequesResult.SUCCESS.ToString())
                {
                    //获取验证码
                    pm.GetPhoneVerificationCode(phoneNumber,MainPage.Company);
                    })
                    { IsBackground = true }.Start();
                    new Thread(() =>
                    {
                        //获取验证码
                        var result = pm.GetLoginVerCode(phoneNumber);
                        if (result.StateCode.ToUpper() == "SUCCESS")
                        {
                        }
                        //登录失败
                        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();
                }
            };
        }
@@ -68,18 +150,22 @@
        void LoadPage_SwitchLoginType()
        {
            //选择手机登录
            btnPhoneLogin.MouseUpEventHandler += (sender, e) =>
            btnPhoneLogin.MouseUpEventHandler = (sender, e) =>
            {
                if (loginType == 0)
                    return;
                etAccount.Text = registerPhone;
                etPassword.Text = "";
                #region 切换选中按钮
                btnEmailLogin.TextColor = CSS_Color.PromptingColor1;
                btnEmailLogin.TextSize = CSS_FontSize.TextFontSize;
                btnPhoneLogin.TextColor = CSS_Color.MainColor;
                btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
                etAccount.PlaceholderText = Language.StringByID(R.InternationalizationString.PlsEntryCorrectMobilNeumber);
                etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber);
                #endregion
                #region 切换登录方式及图标
                logintType = 0;
                loginType = 0;
                if (btnAccountIcon.Parent != null)
                {
                    btnAccountIcon.RemoveFromParent();
@@ -88,21 +174,55 @@
                //显示验证码登录方式,手机登录有验证码登录
                btnSwitchLoginMode.Visible = true;
                #endregion
                #region
                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;
                }
                #endregion
            };
            //选择邮箱登录
            btnEmailLogin.MouseUpEventHandler += (sender, e) =>
            {
                if (loginType == 1)
                    return;
                etAccount.Text = registerEmail;
                etPassword.Text = "";
                #region 切换选中按钮
                btnPhoneLogin.TextColor = CSS_Color.PromptingColor1;
                btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize;
                btnEmailLogin.TextColor = CSS_Color.MainColor;
                btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
                etAccount.PlaceholderText = Language.StringByID(R.InternationalizationString.PlsEntryEmailAddress);
                etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress);
                #endregion
                #region 切换登录类型及图标
                logintType = 1;
                loginType = 1;
                if (btnGlobalRoaming.Parent != null)
                {
                    btnGlobalRoaming.RemoveFromParent();
@@ -111,18 +231,19 @@
                #endregion
                //邮箱只有密码登录模式
                logintMode = 0;
                //logintMode = 0;
                //密码登录
                btnSwitchLoginMode.TextID = R.InternationalizationString.VerificationCodeLogin;
                btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
                passwordView.AddChidren(btnVisiblePassword);
                passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
                passwordView.AddChidren(btnForgetPassword);
                btnPasswordIcon.IsSelected = false;
                if (btnGetVerificationCode.Parent != null)
                {
                    btnGetVerificationCode.RemoveFromParent();
                }
                //if (btnGetVerificationCode.Parent != null)
                //{
                    //btnGetVerificationCode.RemoveFromParent();
                    btnGetVerificationCode.Visible = false;
                //}
                //隐藏密码
                etPassword.SecureTextEntry = true;
                //隐藏验证码登录方式,邮箱登录没有验证码登录
@@ -136,7 +257,7 @@
        /// </summary>
        void LoadPage_SwitchLoginMode()
        {
            btnSwitchLoginMode.MouseUpEventHandler += (sender, e) =>
            btnSwitchLoginMode.MouseUpEventHandler = (sender, e) =>
            {
                logintMode = logintMode == 0 ? 1 : 0;
                //清除密码框文本数据
@@ -144,23 +265,31 @@
                //密码登录
                if (logintMode == 0)
                {
                    btnSwitchLoginMode.TextID = R.InternationalizationString.VerificationCodeLogin;
                    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();
                    }
                    //if (btnGetVerificationCode.Parent != null)
                    //{
                        //btnGetVerificationCode.RemoveFromParent();
                        btnGetVerificationCode.Visible = false;
                    //}
                    //隐藏密码
                    etPassword.SecureTextEntry = true;
                }
                //验证码登录
                else if (logintMode == 1)
                {
                    btnSwitchLoginMode.TextID = R.InternationalizationString.PasswordLogin;
                    passwordView.AddChidren(btnGetVerificationCode);
                    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)
                    {
@@ -181,12 +310,12 @@
        }
        /// <summary>
        /// 文本框选中事件
        /// 文本框焦点变化事件
        /// </summary>
        void LoadPage_SelectionEditText()
        {
            //当焦点在账号文本框时,文本框底线点亮
            etAccount.FoucsChanged += (sender, e) =>
            etAccount.FoucsChanged = (sender, e) =>
            {
                if (etAccount.Foucs)
                {
@@ -197,10 +326,59 @@
                {
                    btnAccountViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
                    btnAccountViewBottomLine.Height = Application.GetRealHeight(1);
                    account = etAccount.Text.Trim();
                    if (loginType == 0)
                    {
                        registerPhone = account;
                    }
                    else
                    {
                        registerEmail = account;
                    }
                    if (account.Length == 0)
                        return;
                    if (loginType == 0)
                    {
                        if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11))
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        }
                        else
                        {
                            if (btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode))
                            {
                                btnGetVerificationCode.IsSelected = true;
                            }
                        }
                    }
                    else
                    {
                        if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                        }
                    }
                }
            };
            //当焦点在密码文本框时,文本框底线点亮
            etPassword.FoucsChanged += (sender, e) =>
            etPassword.FoucsChanged = (sender, e) =>
            {
                if (etPassword.Foucs)
                {
@@ -222,8 +400,13 @@
            //当焦点在密码文本框时,点击键盘回撤按键,触发的事件
            etPassword.EditorEnterAction += (obj) =>
            {
                etPassword.Foucs = false;
                Application.HideSoftInput();
            };
            etPassword.MouseUpEventHandler = (sender, e) =>
            {
                etPassword.Foucs = true;
            };
        }
        /// <summary>
@@ -248,7 +431,7 @@
        /// <summary>
        /// 登录按钮点击事件
        /// </summary>
        void LoadMethod_LoginMethod()
        void LoadEvent_Login()
        {
            btnLogin.MouseUpEventHandler += (sender, e) =>
            {
@@ -256,21 +439,63 @@
                {
                    account = etAccount.Text.Trim();
                    password = etPassword.Text.Trim();
                    if (loginType == 0)
                    {
                        if (!Regex.IsMatch(account, @"^[1]+\d{10}") && account.Length == 11)
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
                            return;
                        }
                    }
                    else
                    {
                        if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
                        {
                            var tip = new Tip()
                            {
                                Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
                                CloseTime = 1,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
                            return;
                        }
                    }
                    //创建登录线程
                    var loginThread = LoadMethod_LoginThread();
                    LoadPage_WaitPage(loginThread);
                    var loginThread = LoadThread_Login();
                    waitPage = new Loading();
                    new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
                }
            };
            #region 当账号密码都输入时,才能点击登录按钮
            etAccount.TextChangeEventHandler += (sender, e) =>
            etAccount.TextChangeEventHandler = (sender, e) =>
            {
                if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0)
                account = etAccount.Text.Trim();
                if (account.Length > 0 && etPassword.Text.Trim().Length > 0)
                {
                    btnLogin.IsSelected = true;
                }
                else
                {
                    btnLogin.IsSelected = false;
                }
                if (Regex.IsMatch(account, @"^[1]+\d{10}") )//&& account.Length == 11)
                {
                    btnGetVerificationCode.IsSelected = true;
                    btnGetVerificationCode.TextColor = CSS_Color.MainBackgroundColor;
                }
                else
                {
                    btnGetVerificationCode.IsSelected = false;
                    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
                }
            };
            etPassword.TextChangeEventHandler += (sender, e) =>
@@ -288,97 +513,476 @@
        }
        /// <summary>
        /// 加载等待界面
        /// </summary>
        void LoadPage_WaitPage(Thread thread)
        {
            waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(R.InternationalizationString.PleaseWait));
            var showedTime = DateTime.Now;
            //如果等待事件过长,可以允许用户取消当前操作
            waitPage.MouseUpEventHandler += (sender, e) =>
            {
                if (showedTime.AddSeconds(30) > DateTime.Now)
                {
                    waitPage.RemoveFromParent();
                    waitPage = null;
                    thread.Abort();
                }
            };
            thread.Start();
        }
        /// <summary>
        /// 加载登录线程
        /// </summary>
        Thread LoadMethod_LoginThread()
        Thread LoadThread_Login()
        {
            var loginThread = new Thread(() =>
            {
                try
                {
                    var loginResult = pm.LoginByPassword(account,password,MainPage.Company);
                    Application.RunOnMainThread(() =>
                    {
                        waitPage.RemoveFromParent();
                        waitPage = null;
                    });
                    //登录成功
                    if (loginResult.StateCode == HttpRequesResult.SUCCESS.ToString())
                    {
                        var loginResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(loginResult.ResponseData.ToString());
                        //记录用户数据
                        MainPage.LoginUser = new UserInfo
                        {
                            ID = loginResponseData.UserId,
                            MasterID = loginResponseData.MainUserId,
                            AccountType = loginResponseData.UserType,
                            AccountString = account,
                            Password = password,
                            LastTime = DateTime.Now,
                            SIP_Account = loginResponseData.AllVisionRegisterDevUserNameGuid,
                        };
                        MainPage.LoginUser.SaveUserInfo();
                        MainPage.Log("登录成功。");
                        /*
                         * Wait : 推送注册
                         */
                    }
                    //登录失败
                    else
                    //登录
                    var loginResult = LoadMethod_Login();
                    if( !string.IsNullOrEmpty (verAccount))//验证登录账号
                    {
                        Application.RunOnMainThread(() =>
                        {
                            //提示原因
                            var tip = new Tip()
                            if (verAccount == etPassword.Text.Trim())
                            {
                                Text = loginResult.ErrorInfo,
                                CloseTime = 3,
                                Direction = AMPopTipDirection.None
                            };
                            tip.Show(bodyView);
                            //if (loginResult.StateCode == HttpRequesResult.LoginFailed_AccountErorr.ToString())
                            {
                                btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                                //}
                                //else if (loginResult.StateCode == HttpRequesResult.LoginFailed_PasswordErorr.ToString())
                                //{
                                btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                                //跳转页面----
                                MainPage.GoUserPage();
                                return;
                            }
                        });
                    }
                    if (loginResult)
                    {
                        //获取住宅信息
                        var getResidencesResult = LoadMethod_GetResidences();
                        if (getResidencesResult)
                        {
                            /*
                             * Wait : 推送注册
                             */
                            /*
                             查看本地是否存在数据
                             存在则导出
                             */
                            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 (MainPage.LoginUser.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();
                            }
                            Application.RunOnMainThread(() =>
                            {
                                //跳转页面----
                                MainPage.GoUserPage();
                            });
                        }
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"LoginPage : {ex.Message}");
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            })
            { IsBackground = true };
            return loginThread;
        }
        /// <summary>
        /// 调用登录接口登录
        /// </summary>
        bool LoadMethod_Login()
        {
            var result = false;
            ResponsePack loginResult;
            if (logintMode == 0 || loginType == 1)
            {
                //调用登录接口
                loginResult = pm.LoginByPassword(account, password);
            }
            else
            {
                //调用验证码登录接口
                loginResult = pm.LoginValidCode(account, password);
            }
            if (loginResult.StateCode.ToUpper() == "SUCCESS")
            {
                var loginDataStr = Newtonsoft.Json.Linq.JObject.FromObject(loginResult.ResponseData);
                //记录用户数据
                MainPage.LoginUser = new UserInfo
                {
                    ID = (int)loginDataStr.GetValue("UserID"),
                    masterID = (int)loginDataStr.GetValue("MainUserID"),
                    accountType = (int)loginDataStr.GetValue("UserType"),
                    loginTokenString = loginDataStr.GetValue("Token").ToString(),
                    accountString = account,
                    password = password,
                    lastTime = DateTime.Now,
                    userName = loginDataStr.GetValue("Remark").ToString(),
                };
                MainPage.LoginUser.SaveUserInfo();
                MainPage.Log("登录成功。");
                result = true;
                //获取用户信息
                new Thread(() =>
                {
                    pm.GetUserInfo();
                })
                { IsBackground = true }.Start();
            }
            //登录失败
            else
            {
                string tipStr = "Sever erorr";
                switch (loginResult.StateCode)
                {
                    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()
                    {
                        Text = tipStr,
                        CloseTime = 1,
                        Direction = AMPopTipDirection.None
                    };
                    tip.Show(bodyView);
                });
            }
            return result;
        }
        /// <summary>
        /// 获取住宅列表
        /// </summary>
        bool LoadMethod_GetResidences()
        {
            var result = false;
            var responsePack = pm.GetHomePager();
            if (responsePack == "Success")
            {
                result = true;
            }
            else
            {
                var tipStr = "Server erorr";
                switch (responsePack)
                {
                    case "NoLogin":
                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
                        break;
                }
                Application.RunOnMainThread(() =>
                {
                    //提示原因
                    var tip = new Tip()
                    {
                        Text = tipStr,
                        CloseTime = 1,
                        Direction = AMPopTipDirection.None
                    };
                    tip.Show(bodyView);
                });
            }
            return result;
        }
        /// <summary>
@@ -386,23 +990,55 @@
        /// </summary>
        void LoadPage_RegisterPage()
        {
            btnRegister.MouseUpEventHandler += (sender, e) => {
            btnRegister.MouseUpEventHandler += (sender, e) =>
            {
                //回调事件
                Action<string> callBackAction = (callBackPar_Action) =>
                {
                    try
                    {
                        etAccount.Text = callBackPar_Action;
                    }
                    catch (Exception ex) {
                        MainPage.Log($"login callBackAction : {ex.Message}");
                    }
                };
                //Action callBackAction = () =>
                //{
                //    Application.RunOnMainThread(() =>
                //    {
                //        try
                //        {
                //        }
                //        catch (Exception ex)
                //        {
                //            MainPage.Log($"login callBackAction : {ex.Message}");
                //        }
                //    });
                //};
                var registerPage = new RegisterPage(callBackAction);
                var registerPage = new RegisterPage();
                registerPage.Show();
                registerPage.ShowDialog();
            };
        }
        /// <summary>
        /// 忘记密码
        /// </summary>
        void LoadMethod_ForgetPassword()
        {
            btnForgetPassword.MouseUpEventHandler += (sender, e) =>
            {
                Action<string> callBackAction = (callBackPar_Action) =>
                {
                    Application.RunOnMainThread(() =>
                    {
                        try
                        {
                            etAccount.Text = callBackPar_Action;
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"login callBackAction : {ex.Message}");
                        }
                    });
                };
                var forgetPasswordDialog = new ForgetPasswordPage(callBackAction);
                forgetPasswordDialog.Show();
                forgetPasswordDialog.ShowDialog();
            };
        }
    }
}
}