private CarInfoDto Api1(CardInfosInput input)
        {
            var cardInfo = IDCardHelper.GetCardInfo(input.IdCard, input.Name);

            if (string.IsNullOrEmpty(cardInfo))
            {
                return(null);
            }
            var cards = JsonConvert.DeserializeObject <CarInfoDto>(cardInfo);

            Logger.Info("在接口1中查询到数据" + cardInfo);
            if (cards.status != "202" && cards.status != "203")
            {
                return(cards);
            }
            return(null);
        }
        private CardInfo3Dto Api2(CardInfosInput input)
        {
            var temp = IDCard2Helper.GetCardInfo(input.IdCard, input.Name);

            Logger.Info("在接口1中查询到数据" + temp);
            if (string.IsNullOrEmpty(temp))
            {
                return(null);
            }
            var cards2 = JsonConvert.DeserializeObject <CardInfo3Dto>(temp);

            if (cards2.result != null && cards2.result.res == "1")
            {
                return(cards2);
            }
            else
            {
                return(null);
            }
        }
        private CarInfoDto Api3(CardInfosInput input)
        {
            var cardStr    = input.IdCard.Substring(0, 6);
            var cardIdCode = _cardIdCodesRepository.GetAll().FirstOrDefault(m => m.Code == cardStr);

            if (cardIdCode != null)
            {
                Logger.Info("在cardIdCodes表中查询到数据" + input.IdCard + "姓名:" + input.Name);
                return(new CarInfoDto
                {
                    province = cardIdCode.Province,
                    city = cardIdCode.City,
                    area = cardIdCode.Area,
                    prefecture = cardIdCode.Town
                });
            }
            else
            {
                Logger.Info("在cardIdCodes表中未查询到数据" + input.IdCard + "姓名:" + input.Name);
                return(null);
            }
        }
        private CardInfosOutput PushData(CardInfosInput input, User user)
        {
            var result1 = Api1(input);

            if (result1 != null)
            {
                var data = new Biz_CardInfo
                {
                    IdCard     = result1.idCard,
                    RealName   = result1.name,
                    Province   = result1.province,
                    City       = result1.city,
                    Prefecture = result1.prefecture,
                    Address    = result1.area,
                    AddrCode   = result1.addrCode,
                    Sex        = result1.sex,
                    Status     = result1.status,
                    StatusMsg  = result1.msg,
                    LastCode   = result1.lastCode,
                    CheckTime  = DateTime.Now
                };
                user.NowMoney = user.NowMoney - user.SinglePrice;
                _userRepository.Update(user);
                var orderDetail = new OrderDetail
                {
                    OrderNum   = OrderHelper.GenerateId(),
                    IdCard     = result1.idCard,
                    RealName   = result1.name,
                    Status     = result1.status,
                    StatusMsg  = result1.msg,
                    CheckTime  = DateTime.Now,
                    CurrMoney  = user.NowMoney,
                    Money      = user.SinglePrice,
                    RequestUrl = _clientInfoProvider.ClientIpAddress,
                    UserId     = user.Id,
                    IsApiData  = true
                };
                _orderDetailRepository.Insert(orderDetail);
                _biz_CardInfoRepository.Insert(data);
                return(new CardInfosOutput
                {
                    IsSuccess = true,
                    CardInfos = new CardInfos
                    {
                        IdCard = result1.idCard,
                        Name = result1.name,
                        Province = result1.province,
                        City = result1.city,
                        Prefecture = result1.prefecture,
                        Address = result1.area,
                        AddrCode = result1.addrCode,
                        Sex = result1.sex,
                        Status = result1.status,
                        StatusMsg = result1.msg,
                        Birthday = result1.birthday,
                        LastCode = result1.lastCode
                    }
                });
            }
            var result2 = Api2(input);

            if (result2 != null)
            {
                var result = Api3(input);
                if (result == null)
                {
                    var data = new Biz_CardInfo
                    {
                        IdCard    = input.IdCard,
                        RealName  = input.Name,
                        Status    = "01",
                        StatusMsg = "验证通过",
                        CheckTime = DateTime.Now
                    };
                    user.NowMoney = user.NowMoney - user.SinglePrice;
                    _userRepository.Update(user);
                    var orderDetail = new OrderDetail
                    {
                        OrderNum   = OrderHelper.GenerateId(),
                        IdCard     = input.IdCard,
                        RealName   = input.Name,
                        Status     = "01",
                        StatusMsg  = "验证通过",
                        CheckTime  = DateTime.Now,
                        CurrMoney  = user.NowMoney,
                        Money      = user.SinglePrice,
                        RequestUrl = _clientInfoProvider.ClientIpAddress,
                        UserId     = user.Id,
                        IsApiData  = true
                    };
                    _orderDetailRepository.Insert(orderDetail);
                    _biz_CardInfoRepository.Insert(data);
                    return(new CardInfosOutput
                    {
                        IsSuccess = true,
                        CardInfos = new CardInfos
                        {
                            IdCard = input.IdCard,
                            Name = input.Name,
                            Status = "01",
                            StatusMsg = "验证通过"
                        }
                    });
                }
                else
                {
                    var data = new Biz_CardInfo
                    {
                        Province   = result.province,
                        City       = result.city,
                        Prefecture = result.prefecture,
                        Address    = result.area,
                        IdCard     = input.IdCard,
                        RealName   = input.Name,
                        Status     = "01",
                        StatusMsg  = "验证通过",
                        CheckTime  = DateTime.Now
                    };
                    user.NowMoney = user.NowMoney - user.SinglePrice;
                    _userRepository.Update(user);
                    var orderDetail = new OrderDetail
                    {
                        OrderNum   = OrderHelper.GenerateId(),
                        IdCard     = input.IdCard,
                        RealName   = input.Name,
                        Status     = "01",
                        StatusMsg  = "验证通过",
                        CheckTime  = DateTime.Now,
                        CurrMoney  = user.NowMoney,
                        Money      = user.SinglePrice,
                        RequestUrl = _clientInfoProvider.ClientIpAddress,
                        UserId     = user.Id,
                        IsApiData  = true
                    };
                    _orderDetailRepository.Insert(orderDetail);
                    _biz_CardInfoRepository.Insert(data);
                    return(new CardInfosOutput
                    {
                        IsSuccess = true,
                        CardInfos = new CardInfos
                        {
                            IdCard = input.IdCard,
                            Name = input.Name,
                            Province = result.province,
                            City = result.city,
                            Prefecture = result.prefecture,
                            Address = result.area,
                            Status = "01",
                            StatusMsg = "验证通过"
                        }
                    });
                }
            }
            var data1 = new Biz_CardInfo
            {
                IdCard    = input.IdCard,
                RealName  = input.Name,
                Status    = "02",
                StatusMsg = "实名认证不通过",
                CheckTime = DateTime.Now
            };

            user.NowMoney = user.NowMoney - user.SinglePrice;
            _userRepository.Update(user);
            var orderDetail1 = new OrderDetail
            {
                OrderNum   = OrderHelper.GenerateId(),
                IdCard     = input.IdCard,
                RealName   = input.Name,
                Status     = "02",
                StatusMsg  = "实名认证不通过",
                CheckTime  = DateTime.Now,
                CurrMoney  = user.NowMoney,
                Money      = user.SinglePrice,
                RequestUrl = _clientInfoProvider.ClientIpAddress,
                UserId     = user.Id,
                IsApiData  = true
            };

            _orderDetailRepository.Insert(orderDetail1);
            _biz_CardInfoRepository.Insert(data1);
            return(new CardInfosOutput
            {
                IsSuccess = true,
                CardInfos = new CardInfos
                {
                    IdCard = input.IdCard,
                    Name = input.Name,
                    Status = "02",
                    StatusMsg = "实名认证不通过",
                }
            });
        }
        public async Task <CardInfosOutput> GetCardInfoAsync(CardInfosInput input)
        {
            if (string.IsNullOrEmpty(input.Name) || string.IsNullOrEmpty(input.IdCard))
            {
                throw new UserFriendlyException("请求参数不完整");
            }
            long userid = 0;

            userid = AbpSession.UserId.Value;
            var user = _userRepository.Get(userid);

            if (user.NowMoney <= 0)
            {
                throw new UserFriendlyException("余额不足,请充值");
            }
            try
            {
                var detail = await _orderDetailRepository.GetAll().Where(m => m.IdCard == input.IdCard && m.RealName == input.Name && m.UserId == userid).FirstOrDefaultAsync();

                if (detail != null)
                {
                    var result = await _biz_CardInfoRepository.GetAll().Where(m => m.IdCard == input.IdCard && m.RealName == input.Name).FirstOrDefaultAsync();

                    var orderDetail = new OrderDetail
                    {
                        OrderNum   = OrderHelper.GenerateId(),
                        IdCard     = result.IdCard,
                        RealName   = result.RealName,
                        Status     = result.Status,
                        StatusMsg  = result.StatusMsg,
                        CheckTime  = DateTime.Now,
                        CurrMoney  = user.NowMoney,
                        Money      = 0,
                        RequestUrl = _clientInfoProvider.ClientIpAddress,
                        UserId     = userid
                    };
                    _orderDetailRepository.Insert(orderDetail);
                    return(new CardInfosOutput
                    {
                        IsSuccess = true,
                        CardInfos = new CardInfos
                        {
                            IdCard = result.IdCard,
                            Name = result.RealName,
                            Province = result.Province,
                            City = result.City,
                            Prefecture = result.Prefecture,
                            Address = result.Address,
                            AddrCode = result.AddrCode,
                            Sex = result.Sex,
                            Status = result.Status,
                            StatusMsg = result.StatusMsg,
                            Birthday = result.Birthday.HasValue ? result.Birthday.Value.ToString("yyyy-MM-dd") : "",
                            LastCode = result.LastCode
                        }
                    });
                }
                else
                {
                    lock (Locker)
                    {
                        var result = _biz_CardInfoRepository.GetAll().Where(m => m.IdCard == input.IdCard).ToList();
                        if (result.Any())
                        {
                            var card = result.Where(m => m.RealName == input.Name).FirstOrDefault();
                            if (card != null)
                            {
                                user.NowMoney = user.NowMoney - user.SinglePrice;
                                _userRepository.Update(user);
                                var odetail = new OrderDetail
                                {
                                    OrderNum   = OrderHelper.GenerateId(),
                                    IdCard     = card.IdCard,
                                    RealName   = card.RealName,
                                    Status     = card.Status,
                                    StatusMsg  = card.StatusMsg,
                                    CheckTime  = DateTime.Now,
                                    CurrMoney  = user.NowMoney,
                                    Money      = user.SinglePrice,
                                    RequestUrl = _clientInfoProvider.ClientIpAddress,
                                    UserId     = userid
                                };
                                _orderDetailRepository.Insert(odetail);
                                return(new CardInfosOutput
                                {
                                    IsSuccess = true,
                                    CardInfos = new CardInfos
                                    {
                                        IdCard = card.IdCard,
                                        Name = card.RealName,
                                        Province = card.Province,
                                        City = card.City,
                                        Prefecture = card.Prefecture,
                                        Address = card.Address,
                                        AddrCode = card.AddrCode,
                                        Sex = card.Sex,
                                        Status = card.Status,
                                        StatusMsg = card.StatusMsg,
                                        Birthday = card.Birthday.HasValue ? card.Birthday.Value.ToString("yyyy-MM-dd") : "",
                                        LastCode = card.LastCode
                                    }
                                });
                            }
                            else
                            {
                                return(PushData(input, user));
                            }
                        }
                        else
                        {
                            return(PushData(input, user));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.ToString());
                throw new UserFriendlyException("请求失败请重试");
            }
        }