黄学彪
2020-12-16 0d9f64668fd7350d6a21fd157e32009a96d98134
ZigbeeApp/Shared/Phone/Common/Logic/HdlWifiLogic.cs
File was renamed from ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
@@ -3,7 +3,7 @@
using System.Security.Cryptography;
using System.Text;
namespace Shared.Phone.UserCenter
namespace Shared.Phone
{
    /// <summary>
    /// WiFi的逻辑
@@ -131,35 +131,6 @@
        /// </summary>
        private bool hadAddListenNetWork = false;
        /// <summary>
        /// 能否访问http
        /// </summary>
        private bool m_CanAccessHttp = true;
        /// <summary>
        /// 上一次访问http的时间
        /// </summary>
        private DateTime oldAccessHttpTime = DateTime.Now;
        /// <summary>
        /// 能否访问http
        /// </summary>
        public bool CanAccessHttp
        {
            set
            {
                m_CanAccessHttp = value;
                oldAccessHttpTime = DateTime.Now;
            }
            get
            {
                //8秒后允许再次访问
                if (m_CanAccessHttp == true || (DateTime.Now - oldAccessHttpTime).TotalMilliseconds > 8 * 1000)
                {
                    oldAccessHttpTime = DateTime.Now;
                    return true;
                }
                return false;
            }
        }
        /// <summary>
        /// 变更网络时的事件
        /// </summary>
@@ -398,15 +369,12 @@
            //没有网络
            if (value == 0)
            {
                this.CanAccessHttp = false;
                //关闭Socket
                ZigBee.Common.Application.FindGateWaySocket.Stop();
            }
            //WIFI或者4G时
            if (value == 1 || value == 2)
            {
                //允许联网
                this.CanAccessHttp = true;
                this.changedNetworkTime = DateTime.Now.ToString("yyyyMMdd HH.mm.ss");
                //当前执行此线程的时间
                string thisThreadTime = this.changedNetworkTime;
@@ -416,19 +384,6 @@
                    //不管如何,都要显示转圈
                    ProgressBar.Show();
                    //检测是否已经完成账号信息初始化
                    if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false
                       && Common.Config.Instance.HomeId != string.Empty)
                    {
                        //重新初始化账号信息
                        UserCenterLogic.ReInitUserAccoutInfo();
                        //因为上面这个东西耗时蛮久的,所以处理完之后进行判断
                        if (thisThreadTime != this.changedNetworkTime)
                        {
                            //在处理的过程中,切换了网络,把下面的处理交给另外的线程
                            return;
                        }
                    }
                    //重新初始化Socket
                    ZigBee.Common.Application.FindGateWaySocket.Stop();
                    System.Threading.Thread.Sleep(100);
@@ -438,47 +393,30 @@
                    //断掉远程
                    ZigBee.Device.ZbGateway.CloseRemoteConnectionOnForce();
                    //如果是wifi
                    if (value == 2)
                    //启动socket
                    ZigBee.Common.Application.FindGateWaySocket.Start();
                    //重新初始化账号信息 (可能的状态码:Sucess  NotNetWork  AuthorityChangd  TokenTimeOunt)(-1:无网 1:正常 2:登陆不进去 3:权限变更了)
                    var result = HdlAccountLogic.Current.ReInitUserAccoutInfo();
                    if (result == AccountStatu.TokenTimeOunt || result == AccountStatu.AuthorityChangd)
                    {
                        ZigBee.Common.Application.FindGateWaySocket.Start();
                        //借用一下这个变量(检测能否广播到网关)
                        UserCenterResourse.DicReceiveGatewayTest = new Dictionary<string, ZigBee.Device.ZbGateway>();
                        UserCenterResourse.HideOption.CheckCanReceiveGateway = 1;
                        //固定等个3秒吧
                        System.Threading.Thread.Sleep(2500);
                        //这两个已经被踢到了登陆界面
                        ProgressBar.Close();
                        return;
                    }
                    //当无网时,里面已经等待了3秒
                    int waitCount = result == AccountStatu.NotNetWork ? 3 : 9;
                    //固定等待4.5秒
                    for (int i = 0; i < waitCount; i++)
                    {
                        if (thisThreadTime != this.changedNetworkTime)
                        {
                            //变更了网络,交由其他线程处理
                            //在处理的过程中,切换了网络,把下面的处理交给另外的线程
                            return;
                        }
                        UserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
                        System.Threading.Thread.Sleep(500);
                    }
                        bool canReceiveGw = false;
                        foreach (var gateway in UserCenterResourse.DicReceiveGatewayTest.Values)
                        {
                            if (gateway.HomeId == Common.Config.Instance.Home.Id)
                            {
                                //能够搜索得到网关
                                canReceiveGw = true;
                                break;
                            }
                        }
                        UserCenterResourse.DicReceiveGatewayTest = null;
                        //设置远程连接的初始值
                        ZigBee.Device.ZbGateway.IsRemote = canReceiveGw == false;
                        if (canReceiveGw == false)
                        {
                            //如果是远程的话,追加等待时间(总共5秒)
                            System.Threading.Thread.Sleep(2000);
                        }
                    }
                    else if (value == 1)
                    {
                        //如果是4G的话,直接等待
                        System.Threading.Thread.Sleep(4500);
                    }
                    ProgressBar.Close();
                }, ShowErrorMode.NO);