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(() => { //登录 var loginSuccess = LoginByPWDAsync(Config.Instance.Account, Config.Instance.Password); //登录成功,或者没有网络都可以登录 if (loginSuccess == 1 || loginSuccess == 2) { var homes = UserCenter.HdlResidenceLogic.Current.GetHomeListsFromDb(); //刷新个人中心的内存及线程 UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); //启动ZigBee ZigBee.Common.Application.Init(); UserCenter.HdlThreadLogic.Current.RunMain(() => { CommonPage.Instance.RemoveViewByTag("Login"); UserPage.Instance.ReFreshControl(); CommonPage.Loading.Hide(); }); } else { //设定一个时间 Config.Instance.LoginDateTime = new DateTime(1970, 1, 1); Config.Instance.Save(); UserCenter.HdlThreadLogic.Current.RunMain(() => { CommonPage.Loading.Hide(); CommonPage.Instance.RemoveViewByTag("Login"); //登录弹出登录界面 var accountLogin = new Login.AccountLoginForm { }; Shared.Common.CommonPage.Instance.AddChidren(accountLogin); accountLogin.ShowForm(); }); } }); } 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 int 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); //登陆接口特殊,需要快一点访问,设置3秒超时 var revertObj = CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson), 3); 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; //标记上一次是不是同一个账号登陆 Config.Instance.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 CommonPage.Instance.PushRegID(); isLoginSuccess = 1; } else if (stateCodeStr == "YOUDATANOISLOCALREGION") { //不在本区域,需要重定向区域后再次请求登录 var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString()); CommonPage.RequestHttpsHost = responseDataObj.RegionServer; //再次登录 return 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; } } }