WJC
2019-12-30 f1c3921b08bb22ac6f5db22d620e01d7e8e5c49f
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
@@ -117,10 +117,20 @@
            {
                return;
            }
            List<string> listBackupGwId = new List<string>();
            var fileData = Global.ReadFileByDirectory(DirNameResourse.LocalMemoryDirectory, DirNameResourse.BackupGatewayIdFile);
            if (fileData != null)
            {
                //新增:虽然概率低,但是确实发生了。如果有网络时,App重新绑定记录的网关失败的话
                //不应该删除它
                listBackupGwId = JsonConvert.DeserializeObject<List<string>>(System.Text.Encoding.UTF8.GetString(fileData));
            }
            List<string> listDelete = new List<string>();
            foreach (var gatewayId in this.dicGateway.Keys)
            {
                if (result.ContainsKey(gatewayId) == false)
                if (result.ContainsKey(gatewayId) == false && listBackupGwId.Contains(gatewayId) == false)
                {
                    //本地存在云端不存在的网关,则删除
                    listDelete.Add(gatewayId);
@@ -707,7 +717,7 @@
            //移除
            ZbGateway.GateWayList.RemoveAll((obj) => this.GetGatewayId(obj) == zbGatewayID);
            //断开mqtt连接
            realWay.DisConnect("GD");
            realWay.DisConnectLocalMqttClient("GD");
            return true;
        }
@@ -1556,7 +1566,7 @@
            //最后再断开mqtt连接
            for (int i = 0; i < list.Count; i++)
            {
                list[i].DisConnect("G");
                list[i].DisConnectLocalMqttClient("G");
            }
            list.Clear();
        }
@@ -1833,50 +1843,6 @@
            realWay.Send("GwLinuxLocate_Respon", jObject.ToString());
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 弹出网关不在线的
        /// </summary>
        private void ShowGatewayNotOnlineMsg()
        {
            Application.RunOnMainThread(() =>
            {
                //网关连接失败,请确认网络
                string msg = Language.StringByID(R.MyInternationalizationString.uGatewayIsNotLinkAndCheckNetwork);
                var control = new ShowMsgControl(ShowMsgType.Tip, msg);
                control.Show();
            });
        }
        /// <summary>
        /// 显示错误信息窗口
        /// </summary>
        /// <param name="msg"></param>
        private void ShowErrorMsg(string msg)
        {
            Application.RunOnMainThread(() =>
            {
                var contr = new ShowMsgControl(ShowMsgType.Error, msg);
                contr.Show();
            });
        }
        /// <summary>
        /// 显示Tip信息窗口
        /// </summary>
        /// <param name="msg"></param>
        private void ShowTipMsg(string msg)
        {
            Application.RunOnMainThread(() =>
            {
                var contr = new ShowMsgControl(ShowMsgType.Tip, msg);
                contr.Show();
            });
        }
        #endregion
        #region ■ 网关监视___________________________
@@ -2080,17 +2046,19 @@
            {
                return;
            }
            //获取当前接受在线状态推送的界面
            var listForm = new List<CommonFormBase>();
            listForm.AddRange(UserCenterResourse.listGatewayOnlinePushForm);
            if (listForm.Count > 0)
            //保存当前激活的界面ID
            var listId = new List<string>();
            listId.AddRange(UserCenterResourse.listActionFormId);
            for (int i = 0; i < listId.Count; i++)
            {
                for (int i = 0; i < listChange.Count; i++)
                if (UserCenterResourse.DicActionForm.ContainsKey(listId[i]) == false)
                {
                    foreach (var form in listForm)
                    {
                        form?.GatewayOnlinePush(listChange[i], listChangeStatu[i]);
                    }
                    continue;
                }
                //网关在线推送
                for (int j = 0; j < listChange.Count; j++)
                {
                    UserCenterResourse.DicActionForm[listId[i]]?.GatewayOnlinePush(listChange[j], listChangeStatu[j]);
                }
            }
        }
@@ -2644,5 +2612,49 @@
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 弹出网关不在线的
        /// </summary>
        private void ShowGatewayNotOnlineMsg()
        {
            Application.RunOnMainThread(() =>
            {
                //网关连接失败,请确认网络
                string msg = Language.StringByID(R.MyInternationalizationString.uGatewayIsNotLinkAndCheckNetwork);
                var control = new ShowMsgControl(ShowMsgType.Tip, msg);
                control.Show();
            });
        }
        /// <summary>
        /// 显示错误信息窗口
        /// </summary>
        /// <param name="msg"></param>
        private void ShowErrorMsg(string msg)
        {
            Application.RunOnMainThread(() =>
            {
                var contr = new ShowMsgControl(ShowMsgType.Error, msg);
                contr.Show();
            });
        }
        /// <summary>
        /// 显示Tip信息窗口
        /// </summary>
        /// <param name="msg"></param>
        private void ShowTipMsg(string msg)
        {
            Application.RunOnMainThread(() =>
            {
                var contr = new ShowMsgControl(ShowMsgType.Tip, msg);
                contr.Show();
            });
        }
        #endregion
    }
}