using System;
|
using Shared.Common;
|
|
namespace Shared.Phone.UserView
|
{
|
/// <summary>
|
/// Home page.第二版呀
|
/// </summary>
|
public class HomePage : PageLayout
|
{
|
static HomePage homePage;
|
/// <summary>
|
/// Gets the instance.
|
/// </summary>
|
/// <value>The instance.</value>
|
public static HomePage Instance
|
{
|
get
|
{
|
if (homePage == null)
|
{
|
homePage = new HomePage { IsShowPoint = false };
|
}
|
return homePage;
|
}
|
}
|
/// <summary>
|
/// Inits the page.
|
/// </summary>
|
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)
|
{
|
ShowLoginLoadView();
|
CommonPage.Loading.Start();
|
Action action = async () =>
|
{
|
//CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining));
|
var loginSuccess = await LoginByPWDResultAsync(Config.Instance.Account, Config.Instance.Password);
|
if (loginSuccess == 1)
|
{
|
new System.Threading.Thread(async () =>
|
{
|
//登录成功
|
var homes = await House.GetHomeLists();
|
//刷新个人中心的内存及线程
|
await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
|
//启动ZigBee
|
ZigBee.Common.Application.Init();
|
|
Room.InitAllRoom();
|
|
Application.RunOnMainThread(() =>
|
{
|
CommonPage.Instance.RemoveViewByTag("Login");
|
UserPage.Instance.Fresh();
|
CommonPage.Loading.Hide();
|
});
|
})
|
{ IsBackground = true }.Start();
|
}
|
else
|
{
|
//未登录成功弹出登录界面 同时需要标记为未登录状态
|
//Config.Instance.LoginDateTime = new DateTime(1970, 1, 1);
|
//Config.Instance.Save();
|
//var accountLogin = new Device.Account.AccountLogin { };
|
//CommonPage.Instance.AddChidren(accountLogin);
|
//accountLogin.Show();
|
//CommonPage.Loading.Hide();
|
|
//登录失败,也直接进入主页
|
new System.Threading.Thread(async () =>
|
{
|
//登录成功
|
var homes = await House.GetHomeLists();
|
//刷新个人中心的内存及线程
|
await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
|
//启动ZigBee
|
ZigBee.Common.Application.Init();
|
|
Room.InitAllRoom();
|
|
Application.RunOnMainThread(() =>
|
{
|
CommonPage.Instance.RemoveViewByTag("Login");
|
UserPage.Instance.Fresh();
|
CommonPage.Loading.Hide();
|
});
|
})
|
{ IsBackground = true }.Start();
|
}
|
};
|
//登录过直接后台登录
|
action();
|
}
|
else
|
{
|
//未登录弹出登录界面
|
var accountLogin = new Device.Account.AccountLogin { };
|
Shared.Common.CommonPage.Instance.AddChidren(accountLogin);
|
accountLogin.Show();
|
}
|
}
|
|
|
public void ShowLoginLoadView()
|
{
|
var loginLoad = new LoginLoading { };
|
CommonPage.Instance.AddChidren(loginLoad);
|
loginLoad.Show();
|
}
|
|
/// <summary>
|
/// Logins the by PWDA sync.
|
/// </summary>
|
/// <returns>The by PWDA sync.</returns>
|
/// <param name="account">Account.</param>
|
/// <param name="password">Password.</param>
|
/// <param name="source">Source.</param>
|
/// <param name="company">Company.</param>
|
public async System.Threading.Tasks.Task<int> LoginByPWDAsync(string account, string password, string source = "", int company = 0)
|
{
|
var isLoginSuccess = -1;
|
try
|
{
|
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)
|
{
|
isLoginSuccess = -1;
|
return isLoginSuccess;
|
}
|
var stateCodeStr = revertObj.StateCode.ToUpper();
|
//Error 不能直接从服务器取,只能根据状态码逐一判断
|
if (stateCodeStr == "SUCCESS")
|
{
|
if (revertObj.ResponseData == null)
|
{
|
return -1;
|
}
|
|
var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString());
|
var revertData = responseDataObj;
|
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;
|
if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null)
|
{
|
Config.Instance.AccountList.Add(revertData.Account);
|
}
|
isLoginSuccess = 1;
|
var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID();
|
System.Console.WriteLine($"后台登录成功--{Config.Instance.LoginDateTime}");
|
}
|
else if (stateCodeStr == "YOUDATANOISLOCALREGION")
|
{
|
isLoginSuccess = -1;
|
//不在本区域,需要重定向区域后再次请求登录
|
if (revertObj.ResponseData == null)
|
{
|
return isLoginSuccess;
|
}
|
var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginLocalRegionRes>(revertObj.ResponseData.ToString());
|
CommonPage.RequestHttpsHost = responseDataObj.RegionServer;
|
}
|
else
|
{
|
isLoginSuccess = -1;
|
}
|
}
|
catch
|
{
|
isLoginSuccess = -1;
|
}
|
return isLoginSuccess;
|
}
|
|
/// <summary>
|
/// 后台登录
|
/// -1 失败 1 成功
|
/// </summary>
|
/// <returns>The by PWDA sync.</returns>
|
/// <param name="account">Account.</param>
|
/// <param name="password">Password.</param>
|
/// <param name="source">Source.</param>
|
/// <param name="company">Company.</param>
|
public async System.Threading.Tasks.Task<int> LoginByPWDResultAsync(string account, string password, string source = "", int company = 0)
|
{
|
var isLoginSuccess = await LoginByPWDAsync(account, password, source, company);
|
return isLoginSuccess;
|
}
|
}
|
}
|