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
}
}
}