using System;
|
using System.IO;
|
using System.Net;
|
using HDL_ON.DAL.Server;
|
using Newtonsoft.Json.Linq;
|
using System.Collections.Generic;
|
|
namespace HDL_ON.UI.UI2.Intelligence.Automation
|
{
|
public class Send
|
{
|
/// <summary>
|
/// 获取逻辑ID列表
|
/// </summary>
|
/// <returns></returns>
|
public static ResponsePackNew GetLogicIdList()
|
{
|
var jObject = new JObject { { "homeId", LogicMethod.HomeId } };
|
var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_List);
|
//如果是token过期则刷新token
|
if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
|
{
|
RefreshToken();
|
GetLogicIdList();
|
}
|
return responsePackNew;
|
}
|
/// <summary>
|
/// 获取逻辑
|
/// </summary>
|
/// <param name="listIdList">逻辑ID列表</param>
|
/// <returns></returns>
|
public static ResponsePackNew GetLogic(List<string> listIdList)
|
{
|
var jArray = new JArray { };
|
for (int i = 0; i < listIdList.Count; i++)
|
{
|
jArray.Add(listIdList[i]);
|
}
|
var jObject = new JObject { { "userLogicIds", jArray } };
|
var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Info);
|
//如果是token过期则刷新token
|
if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
|
{
|
RefreshToken();
|
GetLogic(listIdList);
|
}
|
return responsePackNew;
|
}
|
/// <summary>
|
/// 添加自动化命令
|
/// </summary>
|
/// <param name="logic"></param>
|
/// <returns></returns>
|
public static ResponsePackNew AddLogic(Logic logic)
|
{
|
ResponsePackNew responsePackNew = null;
|
try
|
{
|
var cycleJObject = new JObject { };
|
var cyclevaluejArray = new JArray { };
|
cycleJObject.Add("type", logic.cycle.type);
|
foreach (var dictionary in logic.cycle.value)
|
{
|
cyclevaluejArray.Add(dictionary);
|
}
|
cycleJObject.Add("value", cyclevaluejArray);
|
|
var inputArray = new JArray { };
|
foreach (var dictionary in logic.input)
|
{
|
var inputTypeJOb = new JObject { };
|
inputTypeJOb.Add("sid", dictionary.sid);
|
inputTypeJOb.Add("condition_type", dictionary.condition_type);
|
|
var conditionArray = new JArray { };
|
foreach (var dic in dictionary.condition)
|
{
|
var conditionJOb = new JObject { };
|
conditionJOb.Add("key", dic["key"]);
|
conditionJOb.Add("comparator", dic["comparator"]);
|
conditionJOb.Add("data_type", dic["data_type"]);
|
conditionJOb.Add("value", dic["value"]);
|
conditionArray.Add(conditionJOb);
|
}
|
inputTypeJOb.Add("condition",conditionArray);
|
inputArray.Add(inputTypeJOb);
|
}
|
|
var outputArray = new JArray { };
|
foreach (var dictionary in logic.output)
|
{
|
var outputTypeJOb = new JObject { };
|
outputTypeJOb.Add("sid", dictionary.sid);
|
outputTypeJOb.Add("delay", dictionary.delay);
|
outputTypeJOb.Add("target_type", dictionary.target_type);
|
var statusArray = new JArray { };
|
foreach (var dic in dictionary.status)
|
{
|
var statusJOb = new JObject { };
|
statusJOb.Add("key", dic["key"]);
|
statusJOb.Add("value", dic["value"]);
|
statusArray.Add(statusJOb);
|
}
|
outputTypeJOb.Add("status", statusArray);
|
outputArray.Add(outputTypeJOb);
|
}
|
|
|
var noticeConfigJObject = new JObject();
|
noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
|
noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
|
|
var pushConfigsArray = new JArray { };
|
if (logic.pushConfigs.Count > 0)
|
{ // 推送文本
|
foreach (var pushConfig in logic.pushConfigs)
|
{
|
|
var pushConfigJob = new JObject { };
|
pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
|
var accountArray = new JArray { };
|
foreach (var account in pushConfig.pushTarget)
|
{
|
accountArray.Add(account);
|
}
|
pushConfigJob.Add("pushTarget", accountArray);
|
pushConfigsArray.Add(pushConfigJob);
|
}
|
}
|
|
var logicjArray = new JArray { };
|
var logicIfon = new JObject { };
|
logicIfon.Add("sid", logic.sid);
|
logicIfon.Add("gatewayId", LogicMethod.GatewayId);
|
logicIfon.Add("name", logic.name);
|
logicIfon.Add("relation", logic.relation);
|
logicIfon.Add("enable", logic.enable);
|
logicIfon.Add("cycle", cycleJObject);
|
logicIfon.Add("input", inputArray);
|
logicIfon.Add("output", outputArray);
|
logicIfon.Add("noticeConfig", noticeConfigJObject);
|
logicIfon.Add("pushConfigs", pushConfigsArray);
|
logicjArray.Add(logicIfon);
|
var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
|
responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add,5);
|
//如果是token过期则刷新token
|
if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
|
{
|
RefreshToken();
|
AddLogic(logic);
|
}
|
}
|
catch (Exception e)
|
{
|
var dd = e.Message;
|
}
|
return responsePackNew;
|
}
|
/// <summary>
|
/// 编辑更新逻辑
|
/// </summary>
|
/// <param name="logic"></param>
|
/// <returns></returns>
|
public static ResponsePackNew UpdateLogic(Logic logic)
|
{
|
ResponsePackNew responsePackNew = null;
|
try
|
{
|
var cycleJObject = new JObject { };
|
var cyclevaluejArray = new JArray { };
|
cycleJObject.Add("type", logic.cycle.type);
|
foreach (var dictionary in logic.cycle.value)
|
{
|
cyclevaluejArray.Add(dictionary);
|
}
|
cycleJObject.Add("value", cyclevaluejArray);
|
|
var inputArray = new JArray { };
|
foreach (var dictionary in logic.input)
|
{
|
var inputTypeJOb = new JObject { };
|
inputTypeJOb.Add("sid", dictionary.sid);
|
inputTypeJOb.Add("condition_type", dictionary.condition_type);
|
|
var conditionArray = new JArray { };
|
foreach (var dic in dictionary.condition)
|
{
|
var conditionJOb = new JObject { };
|
conditionJOb.Add("key", dic["key"]);
|
var c1 = "";
|
dic.TryGetValue("comparator", out c1);
|
c1 = string.IsNullOrEmpty(c1) ? "" : c1;
|
conditionJOb.TryAdd("comparator", c1);
|
conditionJOb.Add("data_type", dic["data_type"]);
|
conditionJOb.Add("value", dic["value"]);
|
conditionArray.Add(conditionJOb);
|
}
|
inputTypeJOb.Add("condition", conditionArray);
|
inputArray.Add(inputTypeJOb);
|
}
|
|
var outputArray = new JArray { };
|
foreach (var dictionary in logic.output)
|
{
|
var outputTypeJOb = new JObject { };
|
outputTypeJOb.Add("sid", dictionary.sid);
|
outputTypeJOb.Add("delay", dictionary.delay);
|
outputTypeJOb.Add("target_type", dictionary.target_type);
|
var statusArray = new JArray { };
|
foreach (var dic in dictionary.status)
|
{
|
var statusJOb = new JObject { };
|
statusJOb.Add("key", dic["key"]);
|
statusJOb.Add("value", dic["value"]);
|
statusArray.Add(statusJOb);
|
}
|
outputTypeJOb.Add("status", statusArray);
|
outputArray.Add(outputTypeJOb);
|
}
|
|
var noticeConfigJObject = new JObject();
|
noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
|
noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
|
|
var pushConfigsArray = new JArray { };
|
if (logic.pushConfigs.Count > 0)
|
{
|
// 推送文本
|
foreach (var pushConfig in logic.pushConfigs)
|
{
|
|
var pushConfigJob = new JObject { };
|
pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
|
var accountArray = new JArray { };
|
foreach (var account in pushConfig.pushTarget)
|
{
|
accountArray.Add(account);
|
}
|
pushConfigJob.Add("pushTarget", accountArray);
|
pushConfigsArray.Add(pushConfigJob);
|
}
|
}
|
|
var logicjArray = new JArray { };
|
var logicIfon = new JObject { };
|
logicIfon.Add("userLogicId", logic.userLogicId);
|
logicIfon.Add("sid", logic.sid);
|
logicIfon.Add("gatewayId", LogicMethod.GatewayId);
|
logicIfon.Add("name", logic.name);
|
logicIfon.Add("relation", logic.relation);
|
logicIfon.Add("enable", logic.enable);
|
logicIfon.Add("cycle", cycleJObject);
|
logicIfon.Add("input", inputArray);
|
logicIfon.Add("output", outputArray);
|
logicIfon.Add("noticeConfig", noticeConfigJObject);
|
logicIfon.Add("pushConfigs", pushConfigsArray);
|
|
logicjArray.Add(logicIfon);
|
var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
|
responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update,5);
|
//如果是token过期则刷新token
|
if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
|
{
|
RefreshToken();
|
UpdateLogic(logic);
|
}
|
}
|
catch (Exception e)
|
{
|
var dd = e.Message;
|
}
|
return responsePackNew;
|
}
|
/// <summary>
|
/// 删除逻辑
|
/// </summary>
|
/// <returns></returns>
|
public static ResponsePackNew DelLogic(Logic logic)
|
{
|
var jArray = new JArray { };
|
jArray.Add(logic.userLogicId);
|
var jObject = new JObject { { "userLogicIds", jArray } };
|
var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Delete);
|
//如果是token过期则刷新token
|
if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
|
{
|
RefreshToken();
|
DelLogic(logic);
|
}
|
return responsePackNew;
|
}
|
/// <summary>
|
/// 逻辑开关
|
/// </summary>
|
/// <returns></returns>
|
public static ResponsePackNew SwitchLogic(Logic logic)
|
{
|
var jArray = new JArray { };
|
var job = new JObject { { "userLogicId", logic.userLogicId } , { "enable", logic.enable } };
|
jArray.Add(job);
|
var jObject = new JObject { { "logics", jArray } };
|
var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Enable);
|
//如果是token过期则刷新token
|
if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
|
{
|
RefreshToken();
|
SwitchLogic(logic);
|
}
|
return responsePackNew;
|
}
|
/// <summary>
|
///请求服务器(与住宅有关:例如;homeId)
|
/// </summary>
|
/// <returns></returns>
|
public static ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 3)
|
{
|
var requestJson = HttpUtil.GetSignRequestJson(o);
|
return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
|
|
}
|
/// <summary>
|
/// 请求服务器
|
/// </summary>
|
/// <returns></returns>
|
public static ResponsePackNew RequestServer(object o, string api_Url)
|
{
|
var requestJson = HttpUtil.GetSignRequestJson(o);
|
return HttpUtil.RequestHttpsPost(api_Url, requestJson);
|
|
}
|
/// <summary>
|
/// 刷新Token
|
/// </summary>
|
public static void RefreshToken()
|
{
|
IMessageCommon.Current.StartRefreshToken();
|
}
|
|
}
|
}
|