| | |
| | | if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false)
|
| | | {
|
| | | //不管结果怎么样,如果调用了这个函数,需要重头获取Token,所以必须返回失败
|
| | | await ReInitUserAccoutInfo();
|
| | | await ReInitUserAccoutInfo(listNotShowError);
|
| | | return false;
|
| | | }
|
| | | //获取接口的连接模式
|
| | |
| | | if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false)
|
| | | {
|
| | | //不管结果怎么样,如果调用了这个函数,需要重头获取Token,所以必须返回失败
|
| | | await ReInitUserAccoutInfo();
|
| | | await ReInitUserAccoutInfo(listNotShowError);
|
| | | return "Error";
|
| | | }
|
| | |
|
| | |
| | | if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false)
|
| | | {
|
| | | //不管结果怎么样,如果调用了这个函数,需要重头获取Token,所以必须返回失败
|
| | | await ReInitUserAccoutInfo();
|
| | | await ReInitUserAccoutInfo(listNotShowError);
|
| | | return null;
|
| | | }
|
| | | //获取接口的连接模式
|
| | |
| | | if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false)
|
| | | {
|
| | | //不管结果怎么样,如果调用了这个函数,需要重头获取Token,所以必须返回失败
|
| | | await ReInitUserAccoutInfo();
|
| | | await ReInitUserAccoutInfo(listNotShowError);
|
| | | return null;
|
| | | }
|
| | | //获取接口的连接模式
|
| | |
| | | {
|
| | | //设定一个时间
|
| | | Config.Instance.LoginDateTime = new DateTime(1970, 1, 1);
|
| | | //清空当前住宅id
|
| | | Config.Instance.HomeId = string.Empty;
|
| | | Config.Instance.Save();
|
| | | //收起左菜单
|
| | | CommonPage.Instance.CloseLeftMenu();
|
| | |
| | | Config.Instance.Save();
|
| | |
|
| | | //清空当前住宅id
|
| | | Shared.Common.Config.Instance.HomeId = string.Empty;
|
| | | Config.Instance.HomeId = string.Empty;
|
| | | HdlGatewayLogic.Current.ClearAllRealGateway();
|
| | | try
|
| | | {
|
| | |
| | | string errorMsgBase = strResultData;
|
| | | if (errorMsgBase == null)
|
| | | {
|
| | | Type myType = resultData.GetType();
|
| | | object errorObj = myType.InvokeMember("errorMessageBase", System.Reflection.BindingFlags.GetField, null, resultData, null);
|
| | | if (errorObj == null)
|
| | | if (resultData is ReceiptGatewayResult)
|
| | | {
|
| | | return errorMsg;
|
| | | errorMsgBase = string.Empty;
|
| | | if (((ReceiptGatewayResult)resultData).ErrorMsgDiv == 0)
|
| | | {
|
| | | errorMsgBase = "回复超时";
|
| | | }
|
| | | }
|
| | | errorMsgBase = errorObj.ToString();
|
| | | else
|
| | | {
|
| | | Type myType = resultData.GetType();
|
| | | object errorObj = myType.InvokeMember("errorMessageBase", System.Reflection.BindingFlags.GetField, null, resultData, null);
|
| | | if (errorObj == null)
|
| | | {
|
| | | return errorMsg;
|
| | | }
|
| | | errorMsgBase = errorObj.ToString();
|
| | | }
|
| | | }
|
| | |
|
| | | if (errorMsgBase.Contains("回复超时") == false)
|
| | |
| | | //初始化登陆账号的信息
|
| | | var hadNet = await InitUserAccoutInfo(true);
|
| | | //如果有网络的话
|
| | | if (hadNet == true)
|
| | | if (hadNet == 1)
|
| | | {
|
| | | //重新发送命令去绑定断网情况下备份的网关
|
| | | HdlGatewayLogic.Current.ResetComandToBindBackupGateway();
|
| | |
| | |
|
| | | //同步数据(二次调用没关系)
|
| | | int result = -1;
|
| | | if (hadNet == true)
|
| | | if (hadNet == 1)
|
| | | {
|
| | | result = await HdlAutoBackupLogic.SynchronizeDbAutoBackupData();
|
| | | }
|
| | |
| | | //初始化房间(郭雪城那边不做处理,需要这里特殊执行一步)
|
| | | HdlRoomLogic.Current.RefreshAllRoomByLocation();
|
| | |
|
| | | if (hadNet == true)
|
| | | if (hadNet == 1)
|
| | | {
|
| | | //同步云端的网关id,如果本地拥有云端不存在的id,则表示应该被换绑了,直接删除
|
| | | HdlGatewayLogic.Current.SynchronizeDbGateway();
|
| | |
| | | }
|
| | | });
|
| | |
|
| | | //当前主页,场景和功能所选择的分支 1:场景 2:功能
|
| | | UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 1;
|
| | | //当前分类,场景和功能所选择的分支 0:场景 1:功能 2:自动化
|
| | | UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex = 0;
|
| | |
|
| | | //切换住宅清除之前逻辑缓存数据;
|
| | | Common.Logic.LogicList.Clear();
|
| | | Common.Logic.LockLogicList.Clear();
|
| | |
| | | #region ■ 初始化登陆账号的信息_______________
|
| | |
|
| | | /// <summary>
|
| | | /// 初始化登陆账号的信息
|
| | | /// 初始化登陆账号的信息 -1:无网 1:正常 2:其他错误
|
| | | /// </summary>
|
| | | /// <param name="reLoad">是否从新从本地加载(重新初始化登陆账号的信息,不需要重新加载)</param>
|
| | | /// <returns></returns>
|
| | | private async static Task<bool> InitUserAccoutInfo(bool reLoad)
|
| | | private async static Task<int> InitUserAccoutInfo(bool reLoad)
|
| | | {
|
| | | //初始化个人信息的标识
|
| | | UserCenterResourse.UserInfo.InitUserInfoSuccess = false;
|
| | |
| | | byte[] byteData = await CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync("ZigbeeUsers/GetAccountInfo", Encoding.UTF8.GetBytes(requestJson));
|
| | | if (byteData == null)
|
| | | {
|
| | | return false;
|
| | | return -1;
|
| | | }
|
| | | //检测错误
|
| | | var revertObj = JsonConvert.DeserializeObject<ResponsePack>(Encoding.UTF8.GetString(byteData));
|
| | | if (revertObj.StateCode.ToUpper() != "SUCCESS")
|
| | | {
|
| | | return false;
|
| | | return 2;
|
| | | }
|
| | |
|
| | | var userInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInformation>(revertObj.ResponseData.ToString());
|
| | |
| | | UserCenterResourse.UserInfo.StringPwd = null;
|
| | |
|
| | | //初始化管理员控制主人的连接地址(因为这个连接Token是不会改变的,所以只需要初始化一次)
|
| | | bool flage = await InitAdminConnectMainInfo();
|
| | | var flage = await InitAdminConnectMainInfo();
|
| | | //初始化个人信息的标识
|
| | | UserCenterResourse.UserInfo.InitUserInfoSuccess = flage;
|
| | | UserCenterResourse.UserInfo.InitUserInfoSuccess = flage == 1;
|
| | |
|
| | | return flage;
|
| | | }
|
| | |
| | | /// 重新初始化登陆账号的信息(旨在对应那一瞬间,网络不好,导致误判的情况)
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private async static Task<bool> ReInitUserAccoutInfo()
|
| | | private async static Task<bool> ReInitUserAccoutInfo(List<string> listNotShowError)
|
| | | {
|
| | | //重新初始化账号信息
|
| | | var result = await InitUserAccoutInfo(false);
|
| | | if (result == false)
|
| | | //连接不了外网的时候
|
| | | if (result == -1)
|
| | | {
|
| | | return result;
|
| | | if (listNotShowError != null &&
|
| | | (listNotShowError.Contains("NotSetAgain") == true || listNotShowError.Contains("NotCheck") == true))
|
| | | {
|
| | | //有这两个标识时,不提示错误
|
| | | return false;
|
| | | }
|
| | | Application.RunOnMainThread(() =>
|
| | | {
|
| | | //当前无网络连接,请确认网络
|
| | | var alert = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uNowIsDonotNetworkAndCheckNetwork));
|
| | | alert.Show();
|
| | | });
|
| | | }
|
| | | //同步云端的网关id,如果本地拥有云端不存在的id,则表示应该被换绑了,直接删除
|
| | | HdlGatewayLogic.Current.SynchronizeDbGateway();
|
| | | //初始化个人信息的标识
|
| | | UserCenterResourse.UserInfo.InitUserInfoSuccess = true;
|
| | | if (result == 1)
|
| | | {
|
| | | //同步云端的网关id,如果本地拥有云端不存在的id,则表示应该被换绑了,直接删除
|
| | | HdlGatewayLogic.Current.SynchronizeDbGateway();
|
| | | //初始化个人信息的标识
|
| | | UserCenterResourse.UserInfo.InitUserInfoSuccess = true;
|
| | |
|
| | | return true;
|
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | #region ■ 初始化管理员权限远程连接___________
|
| | |
|
| | | /// <summary>
|
| | | /// 初始化管理员权限远程连接主人的信息
|
| | | /// 初始化管理员权限远程连接主人的信息 -1:无网 1:正常 2:其他错误
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private static async Task<bool> InitAdminConnectMainInfo()
|
| | | private static async Task<int> InitAdminConnectMainInfo()
|
| | | {
|
| | | if (UserCenterResourse.UserInfo.AuthorityNo != 2 && UserCenterResourse.UserInfo.AuthorityNo != 3)
|
| | | {
|
| | | //时代变了,这里管理员和成员都能调用
|
| | | return true;
|
| | | return 1;
|
| | | }
|
| | | var pra = new
|
| | | {
|
| | |
| | | byte[] byteData = await CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync("App/GetSharedHomeApiControl", Encoding.UTF8.GetBytes(requestJson));
|
| | | if (byteData == null)
|
| | | {
|
| | | return false;
|
| | | return -1;
|
| | | }
|
| | | //检测错误
|
| | | var revertObj = JsonConvert.DeserializeObject<ResponsePack>(Encoding.UTF8.GetString(byteData));
|
| | | if (revertObj.StateCode.ToUpper() != "SUCCESS")
|
| | | {
|
| | | return false;
|
| | | return 2;
|
| | | }
|
| | |
|
| | | //分享链接
|
| | |
| | | Config.Instance.AdminRequestBaseUrl = info.RequestBaseUrl;
|
| | | Config.Instance.AdminRequestToken = info.RequestToken;
|
| | |
|
| | | return true;
|
| | | return 1;
|
| | | }
|
| | |
|
| | | #endregion
|