wjc
2023-08-22 8cefc1f93fc2db49465a5dd11ce94ed11267ea53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock;
using Shared;
using static HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod;
 
namespace HDL_ON.UI.UI2.FuntionControlView.HisenseTV
{
    public class Send
    {
        private static Send sendMethod = null;
        /// <summary>
        /// 获取对象
        /// </summary>
        public static Send Current
        {
            get
            {
                if (sendMethod == null)
                {
                    sendMethod = new Send();
                }
 
                return sendMethod;
 
            }
 
        }
 
        /// <summary>
        ///删除设备
        /// </summary>
        /// <param name="deviceId">设备id</param>
        /// <param name="action">成功返回true</param>
        /// <param name="tipType">是否需要提示,默认提示</param>
        public bool DelDevice(string deviceId,Action<bool>action, TipType tipType = TipType.flicker)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", deviceId);//设备id
            var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Aks_KeypadExecute, "删除海信电视");
            if (!this.DataChecking(responsePackNew, tipType))
            {
                return false;
            }
            return true;
        }
 
        /// <summary>
        /// 发送控制命令
        /// </summary>
        /// <param name="function">当前设备</param>
        /// <param name="dic">发送控制数据</param>
        public void SendControlCommand(Function function, Dictionary<string, string> dic,Action<bool> action)
        {
            new System.Threading.Thread(() =>
            {
                var result = DriverLayer.Control.Ins.SendWriteCommand(function, dic, false, 0);
                action?.Invoke(result);
 
            })
            { IsBackground = true }.Start();
        }
 
 
        /// <summary>
        ///请求服务器(与住宅有关:例如;homeId) 
        /// </summary>
        /// <param name="o">发送数据</param>
        /// <param name="api_Url">请求地址(不是绝对地址)</param>
        /// <param name="tag">标记->描述接口(自定义)</param>
        /// <returns></returns>
        public ResponsePackNew RequestServerhomeId(object o, string api_Url, string tag, int mTimeout = 3)
        {
            Log($"{DateTime.Now}->发送->{tag}", api_Url, o.ToString());
            var requestJson = HttpUtil.GetSignRequestJson(o);
            var r = HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
            Log($"{DateTime.Now}->回复->{tag}", "", Newtonsoft.Json.JsonConvert.SerializeObject(r));
            return r;
 
        }
 
 
        /// <summary>
        /// <summary>
        /// 检验数据回复成功或者失败
        /// </summary>
        /// <param name="responsePackNew">回复数据对象</param>
        /// <param name="tipType">是否需要提示</param>
        /// <returns></returns>
        private bool DataChecking(ResponsePackNew responsePackNew, TipType tipType)
        {
            if (responsePackNew.Data == null || responsePackNew.Code != "0" || responsePackNew.Data.ToString() == "")
            {
                if (TipType.flicker == tipType)
                {
                    if (responsePackNew == null)
                    {
                        responsePackNew = new ResponsePackNew { message = "没回复,请确认网络是否正常.", Code = "-1", };
                    }
                    Application.RunOnMainThread(() =>
                    {
                        //new Tip()
                        //{
                        //    CloseTime = 1,
                        //    Text = responsePackNew.message + "(" + responsePackNew.Code + ")",
                        //    Direction = AMPopTipDirection.None,
                        //}.Show(MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1));
                        CommonMethod.Current.ShowTip(responsePackNew.message + "(" + responsePackNew.Code + ")", 3);
                    });
                }
                return false;
            }
            return true;
        }
        /// <summary>
        /// 打印日志
        /// </summary>
        /// <param name="tag">打印标记</param>
        /// <param name="content">打印内容</param>
        public void Log(string tag, string url, string content)
        {
#if DEBUG
            Console.WriteLine(tag + $"\r\n{url}\r\n{content}");
#endif
        }
    }
}