using System; using Shared.Common; namespace Shared.Phone.UserView { /// /// Home page.第二版呀 /// public class HomePage : PageLayout { static HomePage homePage; /// /// Gets the instance. /// /// The instance. public static HomePage Instance { get { if (homePage == null) { homePage = new HomePage { IsShowPoint = false }; } return homePage; } } /// /// Inits the page. /// public void InitPage() { if (0 < ChildrenCount) { return; } AddChidren(UserPage.Instance); UserPage.Instance.InitPage(); this.PageChange += (sender, e) => { while (e < this.ChildrenCount - 1) { this.GetChildren(this.ChildrenCount - 1).RemoveFromParent(); } if (e == 0) { this.ScrollEnabled = true; } }; //直接登录 if (Config.Instance.IsLogin) { //显示启动页 this.ShowLoginLoadView(); CommonPage.Loading.Start(); UserCenter.HdlThreadLogic.Current.RunThread(async () => { //登录 var loginSuccess = await LoginByPWDAsync(Config.Instance.Account, Config.Instance.Password); //登录成功,或者没有网络都可以登录 if (loginSuccess == 1 || loginSuccess == 2) { var homes = await House.GetHomeLists(); //刷新个人中心的内存及线程 await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); //启动ZigBee ZigBee.Common.Application.Init(); UserCenter.HdlThreadLogic.Current.RunMain(() => { CommonPage.Instance.RemoveViewByTag("Login"); UserPage.Instance.Fresh(); CommonPage.Loading.Hide(); }); } }); } else { //未登录弹出登录界面 var accountLogin = new Login.AccountLoginForm { }; Shared.Common.CommonPage.Instance.AddChidren(accountLogin); accountLogin.ShowForm(); } } /// /// 显示启动页 /// public void ShowLoginLoadView() { var loginLoad = new LoginLoading { }; CommonPage.Instance.AddChidren(loginLoad); loginLoad.Show(); } /// /// 1:登录成功 0:密码错误 -1:其他异常 2:无法联网 /// /// The by PWDA sync. /// Account. /// Password. /// Source. /// Company. public async System.Threading.Tasks.Task LoginByPWDAsync(string account, string password, string source = "", int company = 0) { var isLoginSuccess = -1; var requestObj = new SendDataToServer.LoginObj { Account = account, Password = password, Source = source, Company = company }; var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj); var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson)); if (revertObj == null) { return 2; } var stateCodeStr = revertObj.StateCode.ToUpper(); //Error 不能直接从服务器取,只能根据状态码逐一判断 if (stateCodeStr == "SUCCESS") { var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString()); var revertData = responseDataObj; //标记上一次是不是同一个账号登陆 UserCenter.UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid; Config.Instance.Account = revertData.Account; Config.Instance.Password = password; Config.Instance.MD5PWD = revertData.MD5PWD; Config.Instance.Guid = revertData.Guid; Config.Instance.LoginDateTime = DateTime.Now; Config.Instance.LoginToken = revertData.Token; //上报设备ID await CommonPage.Instance.PushRegID(); isLoginSuccess = 1; } else if (stateCodeStr == "YOUDATANOISLOCALREGION") { //不在本区域,需要重定向区域后再次请求登录 var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString()); CommonPage.RequestHttpsHost = responseDataObj.RegionServer; //再次登录 return await this.LoginByPWDAsync(account, password, source, company); } if (stateCodeStr == "NOTVERIFY") { //未激活 } else if (stateCodeStr == "NOTENABLE") { //该用户属于调试账号,并未启用 } else if (stateCodeStr == "PARAMETEROREMPTY") { //提供的参数错误 } else if (stateCodeStr == "USERNAMEORPWDERROR") { //账号或密码错误 isLoginSuccess = 0; } else if (stateCodeStr == "ACCOUNTNOEXISTS") { //账号不存在 isLoginSuccess = 0; } return isLoginSuccess; } } }