using System;
|
using Shared;
|
using System.Collections.Generic;
|
using HDL_ON.DAL.Server;
|
|
using HDL_ON.Entity;
|
using HDL_ON.UI.UI2.FuntionControlView.Aks.Entity;
|
using Newtonsoft.Json.Linq;
|
using RestSharp;
|
using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock;
|
|
namespace HDL_ON.UI.UI2.FuntionControlView.Aks
|
{
|
public class SendMethod
|
{
|
public SendMethod()
|
{
|
}
|
|
private static SendMethod sendMethod = null;
|
/// <summary>
|
/// 获取对象
|
/// </summary>
|
public static SendMethod Current
|
{
|
get
|
{
|
if (sendMethod == null)
|
{
|
sendMethod = new SendMethod();
|
}
|
|
return sendMethod;
|
|
}
|
|
}
|
public const int pageSize=20;
|
|
#region ------时序器-------
|
/// <summary>
|
/// 获取时序器列表
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
/// <returns>返回结果不会为null</returns>
|
public List<SequencerEntity> GetSequencerLits(string deviceId, TipType tipType = TipType.flicker)
|
{
|
Dictionary<string, object> d = new Dictionary<string, object>();
|
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<SequencerEntity>();
|
}
|
var List = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SequencerEntity>>(responsePackNew.Data.ToString());
|
if (List == null)
|
{
|
return new List<SequencerEntity>();
|
}
|
return List;
|
}
|
|
/// <summary>
|
/// 时序器执行
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="seqId">时序器id</param>
|
/// <param name="onOff">时序器开关</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
public bool SequencerExecute(string deviceId, string seqId, string onOff, TipType tipType = TipType.flicker)
|
{
|
Dictionary<string, object> d = new Dictionary<string, object>();
|
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 ------遥控器-------
|
/// <summary>
|
///获取遥控器列表
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
/// <returns>返回结果不会为null</returns>
|
public List<RemoteControlEntity> GetRemoteControlLits(string deviceId, TipType tipType = TipType.flicker)
|
{
|
Dictionary<string, object> d = new Dictionary<string, object>();
|
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<RemoteControlEntity>();
|
}
|
var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RemoteControlEntity>>(responsePackNew.Data.ToString());
|
if (list == null)
|
{
|
return new List<RemoteControlEntity>();
|
}
|
if (list.Count > 0)
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
var remoteControl = list[i];
|
remoteControl.deviceId = deviceId;
|
}
|
}
|
|
return list;
|
}
|
|
/// <summary>
|
///遥控器按键执行
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="rcId">遥控器id</param>
|
/// <param name="keypad"><按键标识/param>
|
/// <param name="keyName"><按键名称(打印用的)/param>
|
/// <param name="isSupport"><是否支持控制/param>
|
/// <param name="tipType">是否需要提示,默认提示</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<string, object> d = new Dictionary<string, object>();
|
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 ------影库-------
|
/// <summary>
|
///获取影库过滤分类
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
/// <returns>返回结果不会为null</returns>
|
public List<FilterCategoryEntity> GetFilterCategoryLits(string deviceId, string rcId, 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
|
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<FilterCategoryEntity>();
|
}
|
var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FilterCategoryEntity>>(responsePackNew.Data.ToString());
|
if (list == null)
|
{
|
return new List<FilterCategoryEntity>();
|
}
|
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;
|
}
|
|
/// <summary>
|
/// 影片分页获取
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="rcId">遥控器id</param>
|
/// <param name="filterCategorys">过滤数据</param>
|
/// <param name="pageNo">当前页</param>
|
/// <param name="pageSize">页数</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
/// <returns>返回结果不会为null</returns>
|
public List<MovieLibrary> GetMovieLibraryPage(string deviceId, string rcId, List<Filters> 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<MovieLibrary>();
|
}
|
var movieLibraryEntity = Newtonsoft.Json.JsonConvert.DeserializeObject<MovieLibraryEntity>(responsePackNew.Data.ToString());
|
if (movieLibraryEntity == null)
|
{
|
return new List<MovieLibrary>();
|
}
|
return movieLibraryEntity.list;
|
}
|
|
|
|
/// <summary>
|
/// 影片详情获取
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="rcId">遥控器id</param>
|
/// <param name="movieId">影片id</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
/// <returns>返回结果不会为null</returns>
|
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<MovieLibraryInfoEntity>(responsePackNew.Data.ToString());
|
if (movieLibraryEntity == null)
|
{
|
return new MovieLibraryInfoEntity();
|
}
|
movieLibraryEntity.rcId = rcId;
|
movieLibraryEntity.deviceId = deviceId;
|
return movieLibraryEntity;
|
}
|
|
|
|
/// <summary>
|
/// 影片收藏/取消收藏
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="rcId">遥控器id</param>
|
/// <param name="movieId">影片id</param>
|
/// <param name="collect">true = 收藏,false = 取消收藏</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
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;
|
}
|
|
|
|
/// <summary>
|
/// 收藏影片分页获取
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="rcId">遥控器id</param>
|
/// <param name="filterCategorys">过滤数据</param>
|
/// <param name="pageNo">当前页</param>
|
/// <param name="pageSize">页数</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
public List<MovieLibrary> 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<MovieLibrary>();
|
}
|
var movieLibraryEntity = Newtonsoft.Json.JsonConvert.DeserializeObject<MovieLibraryEntity>(responsePackNew.Data.ToString());
|
if (movieLibraryEntity == null)
|
{
|
return new List<MovieLibrary>();
|
}
|
return movieLibraryEntity.list;
|
}
|
|
|
/// <summary>
|
/// 影片播放
|
/// </summary>
|
/// <param name="deviceId">设备id</param>
|
/// <param name="rcId">遥控器id</param>
|
/// <param name="movieId">影片id</param>
|
/// <param name="tipType">是否需要提示,默认提示</param>
|
public bool MovieLibraryPlay(string deviceId, string rcId, string movieId, TipType tipType = TipType.flicker)
|
{
|
Dictionary<string, object> d = new Dictionary<string, object>();
|
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;
|
}
|
|
/// <summary>
|
/// 获取影片图片
|
/// </summary>
|
/// <param name="imageUrl">图片地址</param>
|
public byte[] GetImage(string imageUrl, int mTimeout = 3)
|
{
|
return RequestHttpsBase(imageUrl, mTimeout);
|
}
|
|
#endregion
|
|
|
/// <summary>
|
/// 网络请求
|
/// </summary>
|
/// <param name="mTimeout"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
|
}
|
|
/// <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
|
}
|
|
}
|
}
|