Пример #1
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("投放成功");
                }
            }
        }
Пример #2
0
        public string Get1(string DeviceID, string Strcontent)
        {
            DeviceID = DeviceID.ToLower();

            if (string.IsNullOrEmpty(DeviceID) || string.IsNullOrEmpty(Strcontent))
            {
                return("请求参数存在空值" + "deviceid" + DeviceID + "strcontent" + Strcontent);
            }
            else
            {
                if (Strcontent.Split('_')[0] == "d")
                {
                    string ddyuuid = Strcontent.Split('_')[1];
                    //根据设备获取厢房
                    var room = dBtlljfl.GrabageRoom.FirstOrDefault(x => x.Facilityuuid == DeviceID);
                    if (room == null)
                    {
                        return("请先将设备绑定厢房");
                    }
                    var ddyentity = dBtlljfl.GrabageRoom.FirstOrDefault(x => x.GarbageRoomUUID == room.GarbageRoomUUID && x.IsDelete != "1");
                    if (ddyentity == null)
                    {
                        return("暂无该厢房信息");
                    }
                    if (Guid.Parse(ddyuuid) != room.GarbageRoomUUID)
                    {
                        return("您暂未拥有该厢房的赋分权限");
                    }

                    var query = dBtlljfl.GrabageDisposal.Where(x => x.IsDelete != "1").OrderByDescending(x => x.ID).First();
                    if (query.IsScore != "0")
                    {
                        return("暂无赋分对象");
                    }
                    //赋分前分数
                    var hd           = dBtlljfl.HomeAddress.FirstOrDefault(x => x.HomeAddressUUID == query.HomeAddressUUID);
                    var scoreSetting = dBtlljfl.ScoreSetting.First();
                    //加分
                    hd.Score = hd.Score + scoreSetting.Integral;
                    query.ScoreSettingUUid = scoreSetting.ScoreUUID;
                    query.ScoreAddtime     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    query.IsScore          = "1";
                    dBtlljfl.SaveChanges();

                    return("赋分成功");
                }
                else
                {
                    //二维码内容校验
                    var arr = Strcontent.Split('_');
                    if (arr == null || arr.Length < 2 || arr[0].Length != 1)
                    {
                        return("此二维码内容有误");
                    }
                    if (arr[0] == "b")
                    {
                        var result = arr[1];
                        var idcard = Common(result);
                        var entity = dBtlljfl.SystemUser.FirstOrDefault(x => x.UserIdCard == idcard);
                        if (entity == null)
                        {
                            return(idcard);
                        }

                        //根据设备获取厢房
                        var room = dBtlljfl.GrabageRoom.FirstOrDefault(x => x.Facilityuuid == DeviceID);
                        if (room == null)
                        {
                            return("请先将设备绑定厢房");
                        }
                        Guid puuid = entity.SystemUserUUID;
                        Guid huuid = entity.HomeAddressUUID.Value;
                        if (huuid == null || huuid == Guid.Empty)
                        {
                            return("此用户未绑定家庭码或家庭码不存在");
                        }
                        var time = DateTime.Now.ToString("yyyy-MM-dd");
                        //当天赋分次数
                        var disposal = dBtlljfl.GrabageDisposal.Count(x => x.HomeAddressUUID == huuid && 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 == huuid && 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 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.HomeAddressUUID     = huuid;
                            gd.MarkType            = "百姓码";
                            gd.IsScore             = "0";
                            if (puuid != Guid.Empty)
                            {
                                gd.SystemUserUUID = puuid;
                            }
                            dBtlljfl.GrabageDisposal.Add(gd);
                            dBtlljfl.SaveChanges();
                        }
                        else
                        {
                            return("未在投放时间投放");
                        }

                        return("投放成功");
                    }
                    else
                    {
                        //string md5 = YunSendMsg.GenerateMD5(DeviceID+Strcontent);
                        //string md5 = YunSendMsg.GenerateMD5("deviceid" + DeviceID + "strcontent" + Strcontent + "8a261bcf2070c42865ec7619");
                        //md5 = YunSendMsg.GenerateMD5("deviceid" + DeviceID + "strcontent" + Strcontent+md5);
                        //if (md5 != Sign)
                        //{
                        //    return ("校验失败" + md5 + ":" + Sign + "(" + "deviceid" + DeviceID + "strcontent" + Strcontent + "8a261bcf2070c42865ec7619");
                        //
                        //}

                        //根据设备获取厢房
                        var room = dBtlljfl.GrabageRoom.FirstOrDefault(x => x.Facilityuuid == DeviceID);
                        if (room == null)
                        {
                            return("请先将设备绑定厢房");
                        }
                        Guid huuid = Guid.Empty;
                        Guid puuid = Guid.Empty;
                        //家庭码
                        if (arr[0] == "h")
                        {
                            huuid = Guid.Parse(arr[1]);
                        }
                        if (arr[0] == "u")
                        {
                            puuid = Guid.Parse(arr[1]);
                            huuid = dBtlljfl.SystemUser.FirstOrDefault(x => x.SystemUserUUID == Guid.Parse(arr[1])).HomeAddressUUID.Value;
                        }
                        var ent = dBtlljfl.HomeAddress.FirstOrDefault(x => x.HomeAddressUUID == huuid);
                        if (huuid == null || huuid == Guid.Empty || ent == null)
                        {
                            return("此用户未绑定家庭码或家庭码不存在");
                        }
                        var time = DateTime.Now.ToString("yyyy-MM-dd");
                        //当天赋分次数
                        var disposal = dBtlljfl.GrabageDisposal.Count(x => x.HomeAddressUUID == huuid && 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 == huuid && 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 dBtlljfl.GrabageDisposal
                            //          join sc in dBtlljfl.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 = dBtlljfl.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     = huuid;
                            gd.IsScore             = "0";
                            if (puuid != Guid.Empty)
                            {
                                gd.SystemUserUUID = puuid;
                            }
                            if (arr[0] == "h")
                            {
                                gd.MarkType = "家庭码";
                            }
                            dBtlljfl.GrabageDisposal.Add(gd);
                            dBtlljfl.SaveChanges();
                        }
                        else
                        {
                            return("未在投放时间投放");
                        }

                        return("投放成功");
                    }
                }

                return("");
            }
        }