| | |
| | | |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | | public class Send |
| | | public class Send |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 调用获取住宅子账号列表 |
| | | /// </summary> |
| | | public static List<ResidenceMemberInfo> GetResidenceMemberAccount() |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 调用获取住宅子账号列表 |
| | | /// </summary> |
| | | public static List<ResidenceMemberInfo> GetResidenceMemberAccount() |
| | | var responePack = new HttpServerRequest().GetResidenceMemberAccount(); |
| | | if (responePack.Code == StateCode.SUCCESS) |
| | | { |
| | | return Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString()); |
| | | } |
| | | //失败 |
| | | else |
| | | { |
| | | //提示 |
| | | IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code); |
| | | } |
| | | return new List<ResidenceMemberInfo>(); |
| | | } |
| | | /// <summary> |
| | | /// 获取逻辑ID列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static ResponsePackNew GetLogicIdList() |
| | | { |
| | | var jObject = new JObject { { "homeId", LogicMethod.CurrLogicMethod.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 responePack = new HttpServerRequest().GetResidenceMemberAccount(); |
| | | if (responePack.Code == StateCode.SUCCESS) |
| | | { |
| | | return Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString()); |
| | | } |
| | | //失败 |
| | | else |
| | | { |
| | | //提示 |
| | | IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code); |
| | | } |
| | | return new List<ResidenceMemberInfo>(); |
| | | 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); |
| | | if (dictionary.condition_type == "8") |
| | | { |
| | | ///地理围栏 |
| | | var geo_fencejob = new JObject(); |
| | | geo_fencejob.Add("longitude", dictionary.geo_fence.longitude); |
| | | geo_fencejob.Add("latitude", dictionary.geo_fence.latitude); |
| | | geo_fencejob.Add("radius", dictionary.geo_fence.radius); |
| | | inputTypeJOb.Add("geo_fence", geo_fencejob); |
| | | } |
| | | inputArray.Add(inputTypeJOb); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取逻辑ID列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static ResponsePackNew GetLogicIdList() |
| | | var outputArray = new JArray { }; |
| | | foreach (var dictionary in logic.output) |
| | | { |
| | | var jObject = new JObject { { "homeId", LogicMethod.CurrLogicMethod.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); |
| | | if (dictionary.condition_type=="8") { |
| | | ///地理围栏 |
| | | var geo_fencejob = new JObject(); |
| | | geo_fencejob.Add("longitude", dictionary.geo_fence.longitude); |
| | | geo_fencejob.Add("latitude", dictionary.geo_fence.latitude); |
| | | geo_fencejob.Add("radius", dictionary.geo_fence.radius); |
| | | inputTypeJOb.Add("geo_fence", geo_fencejob); |
| | | } |
| | | 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.CurrLogicMethod.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.CurrLogicMethod.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); |
| | | if (dictionary.condition_type == "8") |
| | | { |
| | | ///地理围栏 |
| | | var geo_fencejob = new JObject(); |
| | | geo_fencejob.Add("longitude", dictionary.geo_fence.longitude); |
| | | geo_fencejob.Add("latitude", dictionary.geo_fence.latitude); |
| | | geo_fencejob.Add("radius", dictionary.geo_fence.radius); |
| | | inputTypeJOb.Add("geo_fence", geo_fencejob); |
| | | } |
| | | } |
| | | 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.CurrLogicMethod.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.CurrLogicMethod.HomeId }, { "logics", logicjArray } }; |
| | | |
| | | string str = jObject.ToString(); |
| | | 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; |
| | | 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); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 自动化地理围栏状态上报 |
| | | /// </summary> |
| | | /// <param name="userLogicId">自动化云端id<备注:logicSid与userLogicId 不能同时为空></param> |
| | | /// <param name="logicSid">自动化sid<备注:logicSid与userLogicId 不能同时为空></param> |
| | | /// <param name="direction">arrive:到达(进入) leave:离开</param> |
| | | /// <returns></returns> |
| | | public static bool GeoFenceStateReport(string userLogicId, string logicSid, string direction) |
| | | { |
| | | var jObject = new JObject(); |
| | | jObject.Add("homeId", LogicMethod.CurrLogicMethod.HomeId); |
| | | jObject.Add("userLogicId", userLogicId); |
| | | jObject.Add("sid", logicSid); |
| | | jObject.Add("direction", direction); |
| | | var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_GeoFenceStateReport); |
| | | //如果是token过期则刷新token |
| | | if (responsePackNew.Code == StateCode.TOKEN_EXPIRED) |
| | | 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) |
| | | { |
| | | RefreshToken(); |
| | | GeoFenceStateReport(userLogicId, logicSid, direction); |
| | | accountArray.Add(account); |
| | | } |
| | | if (responsePackNew.Code == "0") |
| | | pushConfigJob.Add("pushTarget", accountArray); |
| | | pushConfigsArray.Add(pushConfigJob); |
| | | } |
| | | } |
| | | |
| | | var logicjArray = new JArray { }; |
| | | var logicIfon = new JObject { }; |
| | | logicIfon.Add("sid", logic.sid); |
| | | logicIfon.Add("gatewayId", LogicMethod.CurrLogicMethod.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.CurrLogicMethod.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); |
| | | if (dictionary.condition_type == "8") |
| | | { |
| | | //成功 |
| | | return true; |
| | | ///地理围栏 |
| | | var geo_fencejob = new JObject(); |
| | | geo_fencejob.Add("longitude", dictionary.geo_fence.longitude); |
| | | geo_fencejob.Add("latitude", dictionary.geo_fence.latitude); |
| | | geo_fencejob.Add("radius", dictionary.geo_fence.radius); |
| | | inputTypeJOb.Add("geo_fence", geo_fencejob); |
| | | } |
| | | //失败 |
| | | return false; |
| | | } |
| | | inputTypeJOb.Add("condition", conditionArray); |
| | | inputArray.Add(inputTypeJOb); |
| | | } |
| | | |
| | | /// <summary> |
| | | ///请求服务器(与住宅有关:例如;homeId) |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 3) |
| | | var outputArray = new JArray { }; |
| | | foreach (var dictionary in logic.output) |
| | | { |
| | | var requestJson = HttpUtil.GetSignRequestJson(o); |
| | | return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout); |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 请求服务器 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static ResponsePackNew RequestServer(object o, string api_Url) |
| | | { |
| | | var requestJson = HttpUtil.GetSignRequestJson(o); |
| | | return HttpUtil.RequestHttpsPost(api_Url, requestJson); |
| | | var noticeConfigJObject = new JObject(); |
| | | noticeConfigJObject.Add("enable", logic.noticeConfig.enable); |
| | | noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 刷新Token |
| | | /// </summary> |
| | | public static void RefreshToken() |
| | | var pushConfigsArray = new JArray { }; |
| | | if (logic.pushConfigs.Count > 0) |
| | | { |
| | | IMessageCommon.Current.StartRefreshToken(); |
| | | // 推送文本 |
| | | 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.CurrLogicMethod.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.CurrLogicMethod.HomeId }, { "logics", logicjArray } }; |
| | | |
| | | string str = jObject.ToString(); |
| | | 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> |
| | | /// 自动化地理围栏状态上报 |
| | | /// </summary> |
| | | /// <param name="userLogicId">自动化云端id<备注:logicSid与userLogicId 不能同时为空></param> |
| | | /// <param name="logicSid">自动化sid<备注:logicSid与userLogicId 不能同时为空></param> |
| | | /// <param name="direction">arrive:到达(进入) leave:离开</param> |
| | | /// <returns></returns> |
| | | public static bool GeoFenceStateReport(string userLogicId, string logicSid, string direction) |
| | | { |
| | | var jObject = new JObject(); |
| | | jObject.Add("homeId", LogicMethod.CurrLogicMethod.HomeId); |
| | | jObject.Add("userLogicId", userLogicId); |
| | | jObject.Add("sid", logicSid); |
| | | jObject.Add("direction", direction); |
| | | var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_GeoFenceStateReport); |
| | | //如果是token过期则刷新token |
| | | if (responsePackNew.Code == StateCode.TOKEN_EXPIRED) |
| | | { |
| | | RefreshToken(); |
| | | GeoFenceStateReport(userLogicId, logicSid, direction); |
| | | } |
| | | if (responsePackNew.Code == "0") |
| | | { |
| | | //成功 |
| | | return true; |
| | | } |
| | | //失败 |
| | | return false; |
| | | } |
| | | |
| | | /// <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(); |
| | | } |
| | | |
| | | } |
| | | } |