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 { /// /// 获取逻辑ID列表 /// /// 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; } /// /// 获取逻辑 /// /// 逻辑ID列表 /// public static ResponsePackNew GetLogic(List 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; } /// /// 添加自动化命令 /// /// /// 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; } /// /// 编辑更新逻辑 /// /// /// 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; } /// /// 删除逻辑 /// /// 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; } /// /// 逻辑开关 /// /// 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; } /// ///请求服务器(与住宅有关:例如;homeId) /// /// public static ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 3) { var requestJson = HttpUtil.GetSignRequestJson(o); return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout); } /// /// 请求服务器 /// /// public static ResponsePackNew RequestServer(object o, string api_Url) { var requestJson = HttpUtil.GetSignRequestJson(o); return HttpUtil.RequestHttpsPost(api_Url, requestJson); } /// /// 刷新Token /// public static void RefreshToken() { IMessageCommon.Current.StartRefreshToken(); } } }