| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 检测当前配置域名是否一致,不一致则替换 |
| | | /// </summary> |
| | | /// <param name="result"></param> |
| | | void CheckAndSetUserRequestHost(ResponsePackNew result) |
| | | { |
| | | try |
| | | { |
| | | var mGlobalRegionListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GlobalRegionListRes>(result.Data.ToString()); |
| | | if (OnAppConfig.Instance.RequestHttpsHost != mGlobalRegionListObj.regionUrl) |
| | | { |
| | | OnAppConfig.Instance.RequestHttpsHost = mGlobalRegionListObj.regionUrl; |
| | | OnAppConfig.Instance.GlobalRegion = mGlobalRegionListObj; |
| | | OnAppConfig.Instance.SaveConfig(); |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 点击按钮获取验证码 |
| | | /// </summary> |
| | | void GetVerificationCode() |
| | |
| | | btnAccountViewBottomLine.Height = Application.GetRealHeight(2); |
| | | return; |
| | | } |
| | | if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11)) |
| | | if (!Utlis.CheckPhoneNumber(phoneNumber, phoneZoneCode)) |
| | | { |
| | | var tip = new Tip() |
| | | { |
| | |
| | | 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(NewAPI.API_POST_GetRegionByAccount, result.Code); |
| | | return; |
| | | //1.先检查账号是否注册过 |
| | | var result = pm.GetRegionByAccount(account); |
| | | if (result.Code != StateCode.SUCCESS) |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(result.Code); |
| | | ShowBtnAccountViewBottomLineError(); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | //检测当前配置域名是否一致,不一致则替换 |
| | | CheckAndSetUserRequestHost(result); |
| | | |
| | | //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); |
| | | } |
| | | else |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnGetVerificationCode.IsSelected = false; |
| | | btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1; |
| | | }); |
| | | |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | catch { } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnGetVerificationCode.IsSelected = false; |
| | | btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1; |
| | | }); |
| | | new Thread(() => |
| | | { |
| | | while (time > 0) |
| | | if (waitPage != null) |
| | | { |
| | | time--; |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnGetVerificationCode.Text = time.ToString() + "s"; |
| | | }); |
| | | Thread.Sleep(1000); |
| | | waitPage.RemoveFromParent(); |
| | | waitPage = null; |
| | | } |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnGetVerificationCode.IsSelected = true; |
| | | btnGetVerificationCode.TextID = StringId.GetVerificationCode; |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | //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(NewAPI.API_POST_Verification_Send, resultObj.Code); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | }) |
| | | { 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; |
| | |
| | | etPassword.SecureTextEntry = false; |
| | | } |
| | | #endregion |
| | | |
| | | }; |
| | | |
| | | //选择邮箱登录 |
| | | btnEmailLogin.MouseUpEventHandler += (sender, e) => |
| | | } |
| | | else |
| | | { |
| | | if (loginType == 1) |
| | | return; |
| | |
| | | |
| | | //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> |
| | |
| | | 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(); |
| | | }; |
| | | } |
| | | |
| | |
| | | return; |
| | | if (loginType == 0) |
| | | { |
| | | if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11)) |
| | | if (!Utlis.CheckPhoneNumber(registerPhone, phoneZoneCode)) |
| | | { |
| | | var tip = new Tip() |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+")) |
| | | if (!Utlis.CheckEmail(registerEmail)) |
| | | { |
| | | var tip = new Tip() |
| | | { |
| | |
| | | { |
| | | if (btnLogin.IsSelected) |
| | | { |
| | | //判断是否同意了隐私政策 |
| | | if (CheckPrivacyPolicy() == false) return; |
| | | |
| | | account = etAccount.Text.Trim(); |
| | | password = etPassword.Text.Trim(); |
| | | |
| | | if (loginType == 0) |
| | | { |
| | | if (!Regex.IsMatch(account, @"^[1]+\d{10}") && account.Length == 11) |
| | | if (!Utlis.CheckPhoneNumber(account, phoneZoneCode)) |
| | | { |
| | | var tip = new Tip() |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+")) |
| | | if (!Utlis.CheckEmail(account)) |
| | | { |
| | | var tip = new Tip() |
| | | { |
| | |
| | | { |
| | | 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; |
| | |
| | | var result = pm.GetRegionByAccount(account); |
| | | if (result.Code != StateCode.SUCCESS) |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(NewAPI.API_POST_GetRegionByAccount, result.Code); |
| | | IMessageCommon.Current.ShowErrorInfoAlter(result.Code); |
| | | ShowBtnAccountViewBottomLineError(); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | //设置用户所注册地区的域名,用户相关操作都用这个域名 |
| | | CheckAndSetUserRequestHost(result); |
| | | } |
| | | } |
| | | |
| | | //登录 |
| | | 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; |
| | | } |
| | | }); |
| | |
| | | */ |
| | | |
| | | /* |
| | | 查看本地是否存在数据 |
| | | 存在则导出 |
| | | * 查看本地是否存在数据 |
| | | * 存在则导出 |
| | | */ |
| | | 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(); |
| | | } |
| | | //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 待确认 |
| | | MainPage.ShowAlertOnMainThread("登录失败,请先添加住宅。"); |
| | | //获取住宅失败,重新标记为未登录状态 |
| | | UserInfo.Current.LastTime = DateTime.MinValue; |
| | | UserInfo.Current.SaveUserInfo(); |
| | | //登录失败,请先添加住宅! |
| | | //Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.FailedGetHomeList)); |
| | | } |
| | | } |
| | | } |
| | |
| | | if (loginResult.Code == StateCode.SUCCESS) |
| | | { |
| | | var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(loginResult.Data.ToString()); |
| | | MainPage.LoginUser = new UserInfo |
| | | // UserInfo.Current = new UserInfo |
| | | //{ |
| | | // userType = revertData.userType, |
| | | // accountString = account, |
| | | // password = password, |
| | | // lastTime = DateTime.Now, |
| | | // ID = revertData.userId, |
| | | // loginTokenString = revertData.headerPrefix + revertData.accessToken, |
| | | // refreshToken = revertData.refreshToken, |
| | | // userName = revertData.name |
| | | //}; |
| | | if (OnAppConfig.Instance.LastLoginUserId != revertData.userId) |
| | | { |
| | | userType = revertData.userType, |
| | | accountString = account, |
| | | password = password, |
| | | lastTime = DateTime.Now, |
| | | ID = revertData.userId, |
| | | loginTokenString = revertData.headerPrefix + revertData.accessToken, |
| | | refreshToken = revertData.refreshToken, |
| | | userName = revertData.name |
| | | }; |
| | | MainPage.LoginUser.SaveUserInfo(); |
| | | 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.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; |
| | | //获取用户信息 |
| | |
| | | //登录失败 |
| | | 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> |
| | |
| | | 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 (MainPage.LoginUser.regionList != null && MainPage.LoginUser.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(NewAPI.API_POST_Gethomepager, responsePack); |
| | | IMessageCommon.Current.ShowErrorInfoAlter(code); |
| | | } |
| | | return result; |
| | | } |
| | |
| | | { |
| | | 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(); |
| | | }; |
| | |
| | | { |
| | | 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); |
| | | } |
| | | } |
| | | } |