陈嘉乐
2020-09-02 652243206427f35a256400a149a1734085824cb9
ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
old mode 100644 new mode 100755
@@ -12,6 +12,7 @@
{
    public class Send
    {
        #region  ----Logic所有发送命令
        /// <summary>
        /// 获取LogicId的方法
@@ -22,7 +23,9 @@
            return await System.Threading.Tasks.Task.Run(async () =>
            {
                List<int> logicIdList = new List<int>();
                bool if_theme = false;
                int if_number = -1;
                Action<string, string> action = (topic, data) =>
                {
                    var gatewayID = topic.Split('/')[0];
@@ -34,19 +37,19 @@
                    
                    if (topic == $"{gatewayID}/Logic/GetLogicList_Respon")
                    {
                        var list = jObjectdata["Data"]["LogicList"];
                        if (list == null)
                        if_theme = true;
                        var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(jObjectdata["Data"]["LogicList"].ToString());
                        if_number = list.Count;
                        if (list.Count == 0)
                        {
                            return;
                        }
                        foreach (var listIfon in list)
                        {
                            var logicId = int.Parse(listIfon["LogicId"].ToString());
                            var logicId = int.Parse(listIfon["LogicId"]);
                            logicIdList.Add(logicId);
                           
                        }
                    }
                };
                var mainGateWay = ZbGateway.MainGateWay;
@@ -72,9 +75,13 @@
                while ((DateTime.Now - dateTime).TotalMilliseconds < 3 * 1000)
                {
                    await System.Threading.Tasks.Task.Delay(100);
                    if (logicIdList.Count != 0)
                    if (if_theme)
                    {
                        break;
                        if (if_number == 0 || if_number == logicIdList.Count)
                        {
                            break;//回复没有数据立刻返回
                        }
                    }
                }
                ZbGateway.MainGateWay.GwResDataAction -= action;
@@ -103,7 +110,6 @@
                    if (topic == $"{gatewayID}/Logic/GetLogicInfo_Respon")
                    {
                        logic = new Common.Logic();
                        var Logicifon = jObjectdata["Data"];
                        logic.LogicId = int.Parse(Logicifon["LogicId"]?.ToString());
@@ -248,7 +254,6 @@
                    {
                        try
                        {
                            Logicifon = new Common.Logic();
                            Logicifon = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Logic>(jObjectdata["Data"].ToString());
                        }
                        catch (Exception ex)
@@ -652,7 +657,6 @@
            {
                var listLogic = new List<Common.Logic>();
                // bool @bool = false;
                Action<string, string> action = (topic, data) =>
                {
                    var gatewayID = topic.Split('/')[0];
@@ -664,7 +668,6 @@
                    if (topic == $"{gatewayID}/Logic/GetAllLogicListInfo_Respon")
                    {
                        var logic = new Common.Logic();
                        var Logicifon = jObjectdata["Data"];
                        logic.LogicId = int.Parse(Logicifon["LogicId"].ToString());
@@ -723,10 +726,7 @@
                        }
                    }
                    //if (topic == $"{gatewayID}/Logic/AllLogicNum_Respon")
                    //{
                    //    @bool = true;
                    //}
                };
                var mainGateWay = ZbGateway.MainGateWay;
                if (mainGateWay == null)
@@ -751,10 +751,6 @@
                    {
                        break;
                    }
                    //if (@bool)
                    //{
                    //    break;
                    //}
                }
                ZbGateway.MainGateWay.GwResDataAction -= action;
                return listLogic;
@@ -804,7 +800,7 @@
                while ((DateTime.Now - dateTime).TotalMilliseconds < 3 * 1000)
                {
                    await System.Threading.Tasks.Task.Delay(100);
                    if (sceneui != null)
                    if (sceneui != null && sceneui.Id > 0)
                    {
                        break;
                    }
@@ -872,7 +868,7 @@
                {
                    //服务返回来没有门锁成员信息,没有必要再去请求成员列表,
                    //原因:节约时间,体验效果好;
                    result = await UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
                    result = UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
                }
                if (string.IsNullOrEmpty(result))
                {
@@ -1238,43 +1234,42 @@
        /// <returns></returns>
        public static async System.Threading.Tasks.Task<string> HttpWebRequest(string getUrl, string str, string method, int second = 3, bool _bool = false)
        {
            HttpWebRequest request = WebRequest.Create(getUrl) as HttpWebRequest; //创建请求
            request.Method = method; //请求方式为POST/GET
            request.ContentType = "application/json";
            request.Timeout = second * 1000;//超时时间
            try
            {
                if (_bool)
                {
                    //用于高胜可视对讲接口
                    request.Headers.Add("Authorization", Config.Instance.Token);
                }
                if (method == "POST")
                {
                    byte[] jsonbyte = System.Text.Encoding.UTF8.GetBytes(str);
                    request.ContentLength = jsonbyte.Length;
                    Stream postStream = request.GetRequestStream();
                    postStream.Write(jsonbyte, 0, jsonbyte.Length);
                    postStream.Close();
                }
                //发送请求并获取相应回应数据
                HttpWebResponse res;
                try
                {
                    res = (HttpWebResponse)request.GetResponse();
                }
                catch (WebException ex)
                {
                    res = (HttpWebResponse)ex.Response;
                }
                StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
                string content = sr.ReadToEnd(); //获得响应字符串
                return content;
            try
            {
                HttpWebRequest request = WebRequest.Create(getUrl) as HttpWebRequest; //创建请求
                request.Method = method; //请求方式为POST/GET
                request.ContentType = "application/json";
                request.Timeout = second * 1000;//超时时间
                if (_bool)
                {
                    //用于高胜可视对讲接口
                    request.Headers.Add("Authorization", Config.Instance.Token);
                }
                if (method == "POST")
                {
                    byte[] jsonbyte = System.Text.Encoding.UTF8.GetBytes(str);
                    request.ContentLength = jsonbyte.Length;
                    Stream postStream = request.GetRequestStream();
                    postStream.Write(jsonbyte, 0, jsonbyte.Length);
                    postStream.Close();
                }
                //发送请求并获取相应回应数据
                HttpWebResponse res;
                try
                {
                    res = (HttpWebResponse)request.GetResponse();
                }
                catch (WebException ex)
                {
                    res = (HttpWebResponse)ex.Response;
                }
                StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
                string content = sr.ReadToEnd(); //获得响应字符串
                return content;
            }
            catch
            {
                return null;
            {
                return null;
            }
        }
        /// <summary>
@@ -1325,6 +1320,23 @@
        #region  存取本地文件的方法 ---暂时不用合并该方法---
        /// <summary>
        /// 判断是否开启GPS服务
        /// </summary>
        public static string If_Exist
        {
            get
            {
                string value = ReadLocalFile(Config.Instance.HomeId+"_GPS_File");
                //读取本地GPS服务状态
                if (value == "0"||string.IsNullOrEmpty(value))
                {
                    return "0";
                }
                return "1";
            }
        }
        /// <summary>
        /// 文件保存
        /// </summary>
        /// <param name="FileName">文件路径</param>
@@ -1338,7 +1350,19 @@
            //写入数据;
            Shared.IO.FileUtils.WriteFileByBytes(FileName, byteData);
        }
        /// <summary>
        /// 文件保存
        /// </summary>
        /// <param name="FileName">文件路径</param>
        /// <param name="data">字符串</param>
        public static void SaveLocalFile(string FileName, string data)
        {
            //先序列化数据;
            //数据转换为字节流;
            var byteData = System.Text.Encoding.UTF8.GetBytes(data);
            //写入数据;
            Shared.IO.FileUtils.WriteFileByBytes(FileName, byteData);
        }
        /// <summary>
        /// 文件读取
        /// </summary>
@@ -1346,11 +1370,6 @@
        /// <returns></returns>
        public static string ReadLocalFile(string FileName)
        {
            if (System.IO.File.Exists(FileName) == false)
            {
                ///判断是否有文件;
                return null;
            }
            //读出保存该路径的文件;
            var varByte = Shared.IO.FileUtils.ReadFile(FileName);
            //字节流转换为字符串;
@@ -1373,6 +1392,6 @@
            deviceConditionsInfo.Add(Key, Value);
        }
    }
}