/// <summary> /// 获取单个设备信息 /// </summary> /// <param name="deviceSerial"></param> public void GetEzvizDevice(string deviceSerial) { var postData = "accessToken=" + _ezvizAccessToken + "&deviceSerial=" + deviceSerial; var device = ToHttp.ToPost <Device>("https://open.ys7.com/api/lapp/device/info", postData); LogHelper.WriteLog(typeof(string), JsonConvert.SerializeObject(device)); if (device.code == "200") { string status; if (device.data.status == 0) { status = "离线"; } else if (device.data.status == 1) { status = "在线"; } else { status = "未知"; } if (!_dbContext2.XlProject.Any(x => x.XlShebeiId == device.data.deviceSerial && x.IsDeleted == 0)) { XlProject xlProject = new XlProject(); xlProject.AddPeople = "狗"; xlProject.AddTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); xlProject.XlProjectUuid = Guid.NewGuid(); xlProject.XlShebeiId = device.data.deviceSerial; xlProject.XlShebeiType = "五水共治污水监控"; xlProject.IsDeleted = 0; xlProject.ShebeiAddress = device.data.deviceName; xlProject.ShebeiType = status; xlProject.UrlType = 3; _dbContext2.XlProject.Add(xlProject); LogHelper.WriteLog(typeof(string), "添加" + device.data.deviceName); } else { var xlp = _dbContext2.XlProject.FirstOrDefault(x => x.XlShebeiId == device.data.deviceSerial && x.IsDeleted == 0); xlp.ShebeiAddress = device.data.deviceName; xlp.ShebeiType = status; xlp.UrlType = 3; LogHelper.WriteLog(typeof(string), "修改" + device.data.deviceName); } _dbContext2.SaveChanges(); } else if (device.code == "10002") { LogHelper.WriteLog(typeof(string), "token失效"); GetEzvizAccessToken(); GetEzvizDevice(deviceSerial); } else { LogHelper.WriteLog(typeof(string), device.code + "|" + device.msg); } }
/// <summary> /// 停止控制 /// </summary> /// <param name="deviceSerial"></param> /// <param name="channelNo"></param> /// <returns></returns> private object StopEzvizPTZ(string deviceSerial, int channelNo) { var postData = "accessToken=" + _ezvizAccessToken + "&deviceSerial=" + deviceSerial + "&channelNo=" + channelNo; var ptzResult = ToHttp.ToPost <PTZResult>("https://open.ys7.com/api/lapp/device/ptz/stop", postData); if (ptzResult.code == "10002") { GetEzvizAccessToken(); StopEzvizPTZ(deviceSerial, channelNo); } return(ptzResult); }
/// <summary> /// ezviz平台获取token /// </summary> private void GetEzvizAccessToken() { var postData = "appKey=" + _ezvizAppKey + "&appSecret=" + _ezvizSecret; var token = ToHttp.ToPost <AccessToken>("https://open.ys7.com/api/lapp/token/get", postData); if (token.code == "200") { _ezvizAccessToken = token.data.accessToken; WebConfigurationManager.AppSettings.Set("token", token.data.accessToken); } else { throw new Exception("获取token错误:" + token.code + "|" + token.msg); } }
/// <summary> /// 云台控制 /// </summary> /// <param name="deviceSerial"></param> /// <param name="channelNo"></param> /// <param name="direction"></param> /// <returns></returns> private object ToEzvizPTZ(string deviceSerial, int channelNo, int direction) { var postData = "accessToken=" + _ezvizAccessToken + "&deviceSerial=" + deviceSerial + "&channelNo=" + channelNo + "&direction=" + direction + "&speed=1"; var ptzResult = ToHttp.ToPost <PTZResult>("https://open.ys7.com/api/lapp/device/ptz/start", postData); if (ptzResult.code == "10002") { GetEzvizAccessToken(); ToEzvizPTZ(deviceSerial, channelNo, direction); } return(ptzResult); }
/// <summary> /// ezviz平台获取token /// </summary> public void GetEzvizAccessToken() { var postData = "appKey=" + _ezvizAppKey + "&appSecret=" + _ezvizSecret; var token = ToHttp.ToPost <AccessToken>("https://open.ys7.com/api/lapp/token/get", postData); if (token.code == "200") { _ezvizAccessToken = token.data.accessToken; ConfigurationManager.AppSettings.Set("token", token.data.accessToken); } else { LogHelper.WriteLog(typeof(string), token.code + "|" + token.msg); throw new Exception(token.code + " | " + token.msg); } }
/// <summary> /// ezviz 获取监控直播列表 /// </summary> /// <param name="pageIndex">页数</param> private object GetEzvizLiveList(int pageIndex) { //var hls = ""; var postData = "accessToken=" + _ezvizAccessToken + "&pageStart=" + pageIndex + "&pageSize=50"; var liveVideo = ToHttp.ToPost <LiveVideo>("https://open.ys7.com/api/lapp/live/video/list", postData); if (liveVideo.code == "200") { var index = liveVideo.data.FindIndex(x => x.deviceSerial == _deviceSerial); if (index != -1) { return(liveVideo.data[index]); } else { if ((liveVideo.page.total - (pageIndex + 1) * 50) % 50 > 0) { pageIndex++; return(GetEzvizLiveList(pageIndex)); } else { return(null); } } //_liveList.AddRange(liveVideo.data); } else if (liveVideo.code == "10002") { GetEzvizAccessToken(); return(GetEzvizLiveList(0)); } else { return(null); } }
/// <summary> /// 获取设备列表 /// </summary> /// <param name="pageIndex">页数</param> public void GetEzvizDevices(int pageIndex) { var postData = "accessToken=" + _ezvizAccessToken + "&pageStart=" + pageIndex + "&pageSize=50"; var devices = ToHttp.ToPost <Devices>("https://open.ys7.com/api/lapp/device/list", postData); if (devices.code == "200") { _sewage.AddRange(devices.data); if ((devices.page.total - (pageIndex + 1) * 50) % 50 > 0) { pageIndex++; GetEzvizDevices(pageIndex); } } else if (devices.code == "10002") { GetEzvizAccessToken(); GetEzvizDevices(0); } else { LogHelper.WriteLog(typeof(string), devices.code + "|" + devices.msg); } }
public string Get2(string DeviceID, string card) { DeviceID = DeviceID.ToLower(); card = card.ToLower(); if (string.IsNullOrEmpty(card) || string.IsNullOrEmpty(DeviceID)) { return("请求参数存在空值" + "card" + card + "deviceid" + DeviceID); } else { var reqSeq = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds); //参数信息 Dictionary <string, string> messageDic = new Dictionary <string, string>(); messageDic.Add("reqSeq", reqSeq.ToString()); messageDic.Add("reqTime", DateTime.Now.ToString("yyyymmddhhmmss")); messageDic.Add("fjcsn", card.ToUpper()); messageDic.Add("cardNo", ""); string messageDataJson = JsonConvert.SerializeObject(messageDic); //公共请求体参数 Dictionary <string, string> openDic = new Dictionary <string, string>(); openDic.Add("appId", "PRECARD_807850581711240"); openDic.Add("method", "getIDCardTerminal"); openDic.Add("reqSeq", reqSeq.ToString()); openDic.Add("bizContent", messageDataJson); openDic.Add("sign_param", "appId,method,bizContent"); //排序 var content = SHA256WithRSA.getSignContent(openDic); //加签 openDic.Add("sign", SHA256WithRSA.Signature(content, this.private_key)); string messageJson = JsonConvert.SerializeObject(openDic); //请求响应 var data = ToHttp <IDCardTerminal> .ToPost2("https://ypay.96225.com/openapi", messageJson); if (!data.success) { return(data.respCode + ":" + data.respDesc); } var idcard = JsonConvert.DeserializeObject <IDCardValue>(data.value); //返回参数体 Dictionary <string, string> check = new Dictionary <string, string>(); check.Add("reqSeq", reqSeq.ToString()); check.Add("sign_param", "success,value"); //bool类型转为小写 check.Add("success", data.success.ToString().ToLower()); check.Add("value", data.value); check.Add("sign", data.sign); //加签字符串 var content2 = SHA256WithRSA.getSignContent(check); //var sign = SHA256WithRSA.Signature(content2, this.public_key); //验签 var result = SHA256WithRSA.rsaCheck(content2, public_key, data.sign); if (!result) { return("验签失败"); } else { //根据设备获取厢房 var room = dBtlljfl.GrabageRoom.FirstOrDefault(x => x.Facilityuuid == DeviceID); if (room == null) { return("请先将设备绑定厢房"); } var user = dBtlljfl.SystemUser.FirstOrDefault(x => x.IDCardMD5 == idcard.idcard); if (user == null) { return("此用户未绑定市民卡号"); } if (user.HomeAddressUUID == null) { return("此用户未绑定家庭码"); } var time = DateTime.Now.ToString("yyyy-MM-dd"); //当天赋分次数 var disposal = dBtlljfl.GrabageDisposal.Count(x => x.HomeAddressUUID == user.HomeAddressUUID && x.ScoreAddtime.Substring(0, 10) == time && x.IsScore == "1"); //获取设置的评分次数 var num = dBtlljfl.Overallsituation.First(); TimeSpan nowDt = DateTime.Now.TimeOfDay; TimeSpan AmstartDt = DateTime.Parse("7:00").TimeOfDay; TimeSpan AmendDt = DateTime.Parse("9:00").TimeOfDay; TimeSpan PmstartDt = DateTime.Parse("18:00").TimeOfDay; TimeSpan PmendDt = DateTime.Parse("20:00").TimeOfDay; int datediff = 10; var disposals = dBtlljfl.GrabageDisposal.Where(x => x.HomeAddressUUID == user.HomeAddressUUID && x.IsScore == "0"); if (disposals.Count() > 0) { var disposalss = disposals.OrderByDescending(x => x.ID).First(); TimeSpan a = (DateTime.Now - DateTime.Parse(disposalss.AddTime)); datediff = a.Seconds; } if (disposal >= num.SetNumber) { return("今日该家庭赋分超过" + num.SetNumber + "次"); } else if (datediff < 10) { return("间隔10秒后再赋分"); } else if ((nowDt > AmstartDt && nowDt < AmendDt) || (nowDt > PmstartDt && nowDt < PmendDt)) { //之前赋分记录 //var all = from g in _dbContext.GrabageDisposal // join sc in _dbContext.ScoreSetting // on g.ScoreSettingUuid equals sc.ScoreUuid // where g.HomeAddressUuid == huuid // select new // { // sc.Integral // }; //之前赋分分数之和 //var sum = all.Sum(x => x.Integral.Value); //获取设置的评分分数 //var scoreSetting = _dbContext.ScoreSetting.First(x => x.ScoreName == "好"); var scoreSetting = dBtlljfl.ScoreSetting.First(); //添加赋分记录 GrabageDisposal gd = new GrabageDisposal(); gd.AddTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); gd.IsDelete = "0"; gd.GarbageDisposalUUID = Guid.NewGuid(); gd.GrabageRoomID = room.GarbageRoomUUID; gd.ScoreSettingUUid = scoreSetting.ScoreUUID; gd.HomeAddressUUID = user.HomeAddressUUID; gd.SystemUserUUID = user.SystemUserUUID; gd.IsScore = "0"; gd.MarkType = "市民卡"; dBtlljfl.GrabageDisposal.Add(gd); dBtlljfl.SaveChanges(); } else { return("未在投放时间投放"); } return("投放成功"); } } }