using System; using Shared; using System.Collections.Generic; using static HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod; using HDL_ON.DAL.Server; using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock; using HDL_ON.Entity; using HDL_ON.UI.UI2.FuntionControlView.Aks.Entity; using Newtonsoft.Json.Linq; using RestSharp; namespace HDL_ON.UI.UI2.FuntionControlView.Aks { public class SendMethod { public SendMethod() { } private static SendMethod sendMethod = null; /// /// 获取对象 /// public static SendMethod Current { get { if (sendMethod == null) { sendMethod = new SendMethod(); } return sendMethod; } } public const int pageSize=20; #region ------时序器------- /// /// 获取时序器列表 /// /// 设备id /// 是否需要提示,默认提示 /// 返回结果不会为null public List GetSequencerLits(string deviceId, TipType tipType = TipType.flicker) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); d.Add("deviceId", deviceId); var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Aks_XsqList, "获取时序器列表"); if (!this.DataChecking(responsePackNew, tipType)) { return new List(); } var List = Newtonsoft.Json.JsonConvert.DeserializeObject>(responsePackNew.Data.ToString()); if (List == null) { return new List(); } return List; } /// /// 时序器执行 /// /// 设备id /// 时序器id /// 时序器开关 /// 是否需要提示,默认提示 public bool SequencerExecute(string deviceId, string seqId, string onOff, TipType tipType = TipType.flicker) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); d.Add("deviceId", deviceId); d.Add("seqId", seqId);//时序器id d.Add("onOff", onOff);//时序器开关 //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Aks_XsqExecute, "时序器执行"); if (!this.DataChecking(responsePackNew, tipType)) { return false; } return true; } #endregion #region ------遥控器------- /// ///获取遥控器列表 /// /// 设备id /// 是否需要提示,默认提示 /// 返回结果不会为null public List GetRemoteControlLits(string deviceId, TipType tipType = TipType.flicker) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); d.Add("deviceId", deviceId); var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Aks_Controlist, "获取遥控器列表"); if (!this.DataChecking(responsePackNew, tipType)) { return new List(); } var list = Newtonsoft.Json.JsonConvert.DeserializeObject>(responsePackNew.Data.ToString()); if (list == null) { return new List(); } if (list.Count > 0) { for (int i = 0; i < list.Count; i++) { var remoteControl = list[i]; remoteControl.deviceId = deviceId; } } return list; } /// ///遥控器按键执行 /// /// 设备id /// 遥控器id /// <按键标识/param> /// <按键名称(打印用的)/param> /// <是否支持控制/param> /// 是否需要提示,默认提示 public bool KeypadExecute(string deviceId, string rcId, string keypad, string keyName, bool isSupport, TipType tipType = TipType.flicker) { //if (!isSupport) { // CommonMethod.Current.ShowTip("按键不支持.", 3); // return false; //} Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); d.Add("deviceId", deviceId);//设备id d.Add("rcId", rcId);//遥控器id d.Add("keypad", keypad);//按键标识 //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d,NewAPI.Api_Post_Aks_KeypadExecute, $"遥控器【{keyName}】按键执行"); if (!this.DataChecking(responsePackNew, tipType)) { return false; } return true; } #endregion #region ------影库------- /// ///获取影库过滤分类 /// /// 设备id /// 是否需要提示,默认提示 /// 返回结果不会为null public List GetFilterCategoryLits(string deviceId, string rcId, TipType tipType = TipType.flicker) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); d.Add("deviceId", deviceId);//设备id d.Add("rcId", rcId);//遥控器id //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Aks_FilterCategory, "获取影库过滤分类"); if (!this.DataChecking(responsePackNew, tipType)) { return new List(); } var list = Newtonsoft.Json.JsonConvert.DeserializeObject>(responsePackNew.Data.ToString()); if (list == null) { return new List(); } if (list.Count > 0) { for (int i = 0; i < list.Count; i++) { var filterCategory = list[i]; foreach (var o in filterCategory.filters) { o.category = filterCategory.category; } } } return list; } /// /// 影片分页获取 /// /// 设备id /// 遥控器id /// 过滤数据 /// 当前页 /// 页数 /// 是否需要提示,默认提示 /// 返回结果不会为null public List GetMovieLibraryPage(string deviceId, string rcId, List filterCategorys, int pageNo, int pageSize, TipType tipType = TipType.flicker) { JObject jObject = new JObject(); jObject.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); jObject.Add("deviceId", deviceId);//设备id jObject.Add("rcId", rcId);//遥控器id if (filterCategorys != null && filterCategorys.Count != 0) { //过滤分类数据 JArray jArray = new JArray(); foreach (var filter in filterCategorys) { JObject obj = new JObject(); obj.Add("category", filter.category); obj.Add("filterValue", filter.filterValue); jArray.Add(obj); } jObject.Add("filterCategorys", jArray);//按键标识 } jObject.Add("pageNo", pageNo);//当前页 jObject.Add("pageSize", pageSize);//页数 //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(jObject, NewAPI.Api_Post_Aks_MovieLibraryPage, "影片分页获取"); if (!this.DataChecking(responsePackNew, tipType)) { return new List(); } var movieLibraryEntity = Newtonsoft.Json.JsonConvert.DeserializeObject(responsePackNew.Data.ToString()); if (movieLibraryEntity == null) { return new List(); } return movieLibraryEntity.list; } /// /// 影片详情获取 /// /// 设备id /// 遥控器id /// 影片id /// 是否需要提示,默认提示 /// 返回结果不会为null public MovieLibraryInfoEntity GetMovieLibraryInfo(string deviceId, string rcId, string movieId, TipType tipType = TipType.flicker) { JObject jObject = new JObject(); jObject.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); jObject.Add("deviceId", deviceId);//设备id jObject.Add("rcId", rcId);//遥控器id jObject.Add("movieId", movieId);//影片id //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(jObject, NewAPI.Api_Post_Aks_MovieLibraryInfo, "影片详情获取"); if (!this.DataChecking(responsePackNew, tipType)) { return new MovieLibraryInfoEntity(); } var movieLibraryEntity = Newtonsoft.Json.JsonConvert.DeserializeObject(responsePackNew.Data.ToString()); if (movieLibraryEntity == null) { return new MovieLibraryInfoEntity(); } movieLibraryEntity.rcId = rcId; movieLibraryEntity.deviceId = deviceId; return movieLibraryEntity; } /// /// 影片收藏/取消收藏 /// /// 设备id /// 遥控器id /// 影片id /// true = 收藏,false = 取消收藏 /// 是否需要提示,默认提示 public bool IsCollect(string deviceId, string rcId, string movieId, bool collect, TipType tipType = TipType.flicker) { JObject jObject = new JObject(); jObject.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); jObject.Add("deviceId", deviceId);//设备id jObject.Add("rcId", rcId);//遥控器id jObject.Add("movieId", movieId);//影片id jObject.Add("collect", collect);//影片id //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(jObject, NewAPI.Api_Post_Aks_MovieLibraryCollect, "影片收藏"); if (!this.DataChecking(responsePackNew, tipType)) { return false; } return true; } /// /// 收藏影片分页获取 /// /// 设备id /// 遥控器id /// 过滤数据 /// 当前页 /// 页数 /// 是否需要提示,默认提示 public List GetcollectPage(string deviceId, string rcId, int pageNo, int pageSize, TipType tipType = TipType.flicker) { JObject jObject = new JObject(); jObject.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); jObject.Add("deviceId", deviceId);//设备id jObject.Add("rcId", rcId);//遥控器id jObject.Add("pageNo", pageNo);//当前页 jObject.Add("pageSize", pageSize);//页数 //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(jObject, NewAPI.Api_Post_Aks_MovieLibraryCollectPage, "收藏影片分页获取"); if (!this.DataChecking(responsePackNew, tipType)) { return new List(); } var movieLibraryEntity = Newtonsoft.Json.JsonConvert.DeserializeObject(responsePackNew.Data.ToString()); if (movieLibraryEntity == null) { return new List(); } return movieLibraryEntity.list; } /// /// 影片播放 /// /// 设备id /// 遥控器id /// 影片id /// 是否需要提示,默认提示 public bool MovieLibraryPlay(string deviceId, string rcId, string movieId, TipType tipType = TipType.flicker) { Dictionary d = new Dictionary(); d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); d.Add("deviceId", deviceId); d.Add("rcId", rcId);//遥控器id d.Add("movieId", movieId);//影片id //d.Add("zoneType", deviceId);//区域 var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Aks_MovieLibraryPlay, "影片播放"); if (!this.DataChecking(responsePackNew, tipType)) { return false; } return true; } /// /// 获取影片图片 /// /// 图片地址 public byte[] GetImage(string imageUrl, int mTimeout = 3) { return RequestHttpsBase(imageUrl, mTimeout); } #endregion /// /// 网络请求 /// /// /// private byte[] RequestHttpsBase(string imageUrl, int mTimeout = 3) { try { Log($"{DateTime.Now}->发送->获取影片资源", imageUrl, ""); RestClient client = new RestClient(imageUrl); RestRequest request = new RestRequest(Method.GET); request.Timeout = mTimeout * 1000; //request.AddHeader("content-type", "application/json"); IRestResponse response = client.Execute(request); return response.RawBytes; } catch (Exception ex) { return null; } } /// ///请求服务器(与住宅有关:例如;homeId) /// /// 发送数据 /// 请求地址(不是绝对地址) /// 标记->描述接口(自定义) /// 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; } /// /// /// 检验数据回复成功或者失败 /// /// 回复数据对象 /// 是否需要提示 /// 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; } /// /// 打印日志 /// /// 打印标记 /// 打印内容 public void Log(string tag, string url, string content) { #if DEBUG Console.WriteLine(tag + $"\r\n{url}\r\n{content}"); #endif } } }