示例#1
0
        /// <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);
        }
示例#5
0
        /// <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);
            }
        }
示例#7
0
        /// <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);
            }
        }
示例#8
0
        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("投放成功");
                }
            }
        }