xm
2020-07-21 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d
ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
old mode 100755 new mode 100644
@@ -7,6 +7,7 @@
using System.Collections.Specialized;
using System.Net;
using System.IO;
using System.Diagnostics.CodeAnalysis;
namespace Shared.Phone.Device.Logic
{
@@ -22,6 +23,7 @@
            return await System.Threading.Tasks.Task.Run(async () =>
            {
                List<int> logicIdList = new List<int>();
                Action<string, string> action = (topic, data) =>
                {
                    var gatewayID = topic.Split('/')[0];
@@ -43,6 +45,7 @@
                        {
                            var logicId = int.Parse(listIfon["LogicId"].ToString());
                            logicIdList.Add(logicId);
                        }
                    }
@@ -54,11 +57,17 @@
                    return logicIdList;
                }
                mainGateWay.GwResDataAction += action;
                var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 2004 } };
                var jObjectdata1 = new JObject { { "LogicType", LogicType } };
                jObject.Add("Data", jObjectdata1);
                mainGateWay?.Send("Logic/GetLogicList", jObject.ToString());
                try
                {
                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 2004 } };
                    var jObjectdata1 = new JObject { { "LogicType", LogicType } };
                    jObject.Add("Data", jObjectdata1);
                    mainGateWay?.Send("Logic/GetLogicList", jObject.ToString());
                }
                catch (Exception e)
                {
                    var d = e.Message;
                }
                //await System.Threading.Tasks.Task.Run(async () =>
                //{
                var dateTime = DateTime.Now;
@@ -175,7 +184,7 @@
            });
        }
        ///<summary>
        /// 删除逻辑
        /// 删除逻辑(0成功,其它值:失败)
        /// </summary>
        public static async System.Threading.Tasks.Task<int> DelLogic(int LogicId)
        {
@@ -292,6 +301,7 @@
                                    ["RemindTime"] = int.Parse(dictionary["RemindTime"]),
                                    ["EnDelay"] = int.Parse(dictionary["EnDelay"]),
                                    ["DelayTime"] = int.Parse(dictionary["DelayTime"]),
                                    ["DoorLockOpenDelayTime"] = int.Parse(dictionary["DoorLockOpenDelayTime"]),
                                };
                                if (dictionary["DateType"].ToString() == "0")
                                {
@@ -468,7 +478,7 @@
                                    ["LinkType"] = int.Parse(dictionary["LinkType"].ToString()),
                                    ["DeviceAddr"] = dictionary["DeviceAddr"].ToString(),
                                    ["Epoint"] = int.Parse(dictionary["Epoint"].ToString()),
                                    ["PassData"] =dictionary["PassData"].ToString(),
                                    ["PassData"] = dictionary["PassData"].ToString(),
                                };
                                actions.Add(lockInfo);
                                break;
@@ -490,8 +500,18 @@
                                            ["Type"] = int.Parse(dictionary["Type"]),
                                            ["Account"] = dictionary["Account"],
                                            ["UserId"] = dictionary["UserId"],
                                            ["AccountName"] = dictionary["AccountName"],
                                        };
                                        if (dictionary.ContainsKey("Option4"))
                                        {
                                            accounts1.Add("Option4", dictionary["Option4"]);
                                        }
                                        if (dictionary.ContainsKey("Option2"))
                                        {
                                            accounts1.Add("Option2", int.Parse(dictionary["Option2"]));
                                        }
                                        accounts.Add(accounts1);
                                    }
                                }
@@ -510,9 +530,28 @@
                                    accounts.Add(location);
                                }
                                break;
                            case 8:
                                {
                                    var accounts1 = new JObject();
                                    if (dictionary.ContainsKey("Type"))
                                    {
                                        accounts1.Add("Type", int.Parse(dictionary["Type"]));
                                    }
                                    if (dictionary.ContainsKey("Option4"))
                                    {
                                        accounts1.Add("Option4", dictionary["Option4"]);
                                    }
                                    if (dictionary.ContainsKey("Option2"))
                                    {
                                        accounts1.Add("Option2", int.Parse(dictionary["Option2"]));
                                    }
                                    accounts.Add(accounts1);
                                }
                                break;
                        }
                    }
                    var data = new JObject{
                        { "LogicId",logic.LogicId},
                        { "IsEnable", logic.IsEnable} ,
@@ -707,7 +746,7 @@
                }
                catch { }
                var dateTime = DateTime.Now;
                while ((DateTime.Now - dateTime).TotalMilliseconds < 8 * 1000)
                while ((DateTime.Now - dateTime).TotalMilliseconds < 5 * 1000)
                {
                    await System.Threading.Tasks.Task.Delay(100);
                    if (sum == listLogic.Count)
@@ -835,9 +874,19 @@
                {
                    //服务返回来没有门锁成员信息,没有必要再去请求成员列表,
                    //原因:节约时间,体验效果好;
                    result = await UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
                    result = UserCenter.UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
                }
                if (string.IsNullOrEmpty(result))
                {
                    //防止为空抛异常;
                    return userlist;
                }
                var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserCenter.MemberInfoRes>>(result);
                var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserCenter.MemberInfoRes>>(result);
                if (listInfo == null)
                {
                    //防止为空抛异常;
                    return userlist;
                }
                for (int i = 0; i < listInfo.Count; i++)
                {
@@ -927,7 +976,7 @@
        {
            string s = null;
            var str = await WebClientAsync(0, CommonPage.RequestHttpsHost + "/App/GetHomePager");//不同区域域名前缀不一样
                                                                                                 // var str = await WebClientAsync(0, "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager");
            var jObject = JObject.Parse(str);
            if (jObject == null || jObject["StateCode"].ToString() != "Success")
            {
@@ -952,13 +1001,11 @@
                        residential.IsOtherAccountCtrl = true;
                        residential.doorlockmac = doorlockMac;
                        residential.Url = CommonPage.RequestHttpsHost + "/App/GetSharedHomeApiControl";
                        //residential.Url = "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetSharedHomeApiControl";
                        s = await ReadUserDoorLock(residential);
                    }
                    else
                    {
                        residential.Url = CommonPage.RequestHttpsHost + "/DoorLock/GetDoorLockPager";
                        //residential.Url = "https://global.hdlcontrol.com/HangZhouHdlCloudApi/DoorLock/GetDoorLockPager";
                        residential.Token = Config.Instance.Token;
                        residential.Id = Config.Instance.HomeId;
                        residential.IsOtherAccountCtrl = false;
@@ -991,7 +1038,7 @@
            lockifon.doorlockmac = residential.doorlockmac;
            return await WebClientAsync(2, lockifon.Url, lockifon);
        }
        public class Residential
        {
            /// <summary>
@@ -1107,6 +1154,14 @@
        /// <param name="logic">逻辑对象</param>
        public static void Zj(bool tag, Common.Logic logic)
        {
            if (string.IsNullOrEmpty(logic.LogicCustomPushText))
            {
                ///默认推送自定义内容
                string str = logic.LogicName + Language.StringByID(R.MyInternationalizationString.defaulttext);
                logic.LogicCustomPushText = str;
            }
            new System.Threading.Thread(() =>
            {
                if (logic.LogicId != 0)
@@ -1183,33 +1238,46 @@
        /// <param name="method">请求方式为POST/GET</param>
        /// <param name="second">超时时间</param>
        /// <returns></returns>
        public static async System.Threading.Tasks.Task<string> HttpWebRequest(string getUrl, string str, string method, int second = 3)
        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;//超时时间
            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();
                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 (WebException ex)
            catch
            {
                res = (HttpWebResponse)ex.Response;
                return null;
            }
            StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
            string content = sr.ReadToEnd(); //获得响应字符串
            return content;
        }
        /// <summary>
        /// 请求服务器的方法