//public bool IsLicenseExist(GetReInfoRequest request)
        //{
        //    var buids = _userInfoRepository.FindBuidListByLicenseno(request.LicenseNo);
        //    var fromAgentList = _transferRecordRepository.FindListByBuidList(buids);
        //    var agents = _agentRepository.GetSonId(request.ChildAgent);
        //    var agentsList = agents.Split(',').ToList();
        //    var isexist = fromAgentList.Any(x => agentsList.Contains(x.FromAgentId.ToString()));
        //    return isexist;
        //}

        /// 判断是否有重复车辆
        /// 一个顶级代理下只能续保一辆车
        /// <param name="request"></param>
        /// <param name="isInAssign"></param>
        /// <returns></returns>
        public bx_userinfo IsExistLicense(GetReInfoRequest request, out bool isInAssign)
        {
            //是否在未分配的池子里
            isInAssign = false;
            string topAgents  = string.Empty;
            var    listRecord = new List <bx_transferrecord>();
            //根据车牌取出所有的当前agent
            var userinfos = _userInfoRepository.FindAgentListByLicenseNo(request.LicenseNo);

            //取出所有的agent的顶级代理
            foreach (var item in userinfos)
            {
                if (!string.IsNullOrWhiteSpace(item.Agent))
                {
                    topAgents = _agentRepository.GetTopAgentId(int.Parse(item.Agent));
                    if (topAgents.Equals(request.Agent.ToString()))
                    {
                        listRecord = new List <bx_transferrecord>();
                        listRecord = _transferRecordRepository.FindByBuid(item.Id);
                        if (listRecord.Any())
                        {
                            if (listRecord[0].StepType == 6)
                            {
                                isInAssign = true;
                            }
                        }
                        return(item);
                    }
                }
            }
            return(null);
        }
        public async void GetReInfo_WithNewLicense_ExpectCorrectResult(int agent, string licenseno, int citycode, string seccode)
        {
            GetReInfoRequest reInfoRequest = new GetReInfoRequest
            {
                AgentId   = agent,
                LicenseNo = licenseno,
                CityCode  = citycode,
                SecCode   = seccode
            };

            var pars = CommonHelper.EachProperties(reInfoRequest);

            _sutbAgentRepository.Setup(x => x.GetAgent(It.IsAny <int>())).Returns(new bx_agent {
                Id = 103, SecretKey = "1233", Mobile = "18310825788"
            });
            _stubUserInfoRepository.Setup(x => x.FindByOpenIdAndLicense(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(default(bx_userinfo));

            _logService.Setup(x => x.LoginAccount(It.IsAny <string>())).Returns(GetAccount);

            _stubUserInfoRepository.Setup(x => x.Add(It.IsAny <bx_userinfo>())).Returns(1);
            ICarInsuranceService carInsuranceService = new CarInsuranceService(_stubSaveQuoteRepository.Object, _stubUserInfoRepository.Object,
                                                                               _logService.Object, _stubSubmitInfoRepository.Object, _stubQuoteResultRepository.Object, _stubLastInfoRepository.Object, _sutbAgentRepository.Object, _messageCenter.Object);
            var response = await carInsuranceService.GetReInfo(reInfoRequest, pars);

            Assert.AreEqual(HttpStatusCode.OK, response.Status);
        }
Exemplo n.º 3
0
        private async Task MoreCameraBindings(GetReInfoRequest request, string absolutori)
        {
            var apiConfig = ConfigurationManager.AppSettings["moreBindings"];

            if (!string.IsNullOrWhiteSpace(apiConfig))
            {
                var arr = apiConfig.Split(';');
                foreach (string group in arr)
                {
                    var agentlist = group.Split(',');
                    for (int i = 0; i < agentlist.Length; i++)
                    {
                        if (i == 0 && request.Agent.ToString() == agentlist[0])
                        {
                            for (int j = 1; j < agentlist.Length; j++)
                            {
                                await Task.Factory.StartNew(() =>
                                {
                                    GetRenewalRequest(int.Parse(agentlist[j]), (agentlist[j]).GetMd5().ToUpper(),
                                                      request.LicenseNo, request.CityCode.ToString(),
                                                      request.RenewalCarType.ToString(), absolutori, int.Parse(agentlist[j]), request.CameraId);
                                });
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }
        }
        public async Task <GetReInfoNewViewModel> GetReInfo(GetReInfoRequest request, IEnumerable <KeyValuePair <string, string> > pairs, Uri uri)
        {
            var viewModel = new GetReInfoNewViewModel();

            #region 参数校验
            //校验请求串
            var baseRequest = new AppBaseRequest()
            {
                Agent      = request.Agent,
                SecCode    = request.SecCode,
                CustKey    = request.CustKey,
                BhToken    = request.BhToken,
                ChildAgent = request.ChildAgent
            };
            //校验返回值
            var baseResponse = _appVerifyService.Verify(baseRequest, pairs);
            if (baseResponse.ErrCode != 1)
            {
                viewModel.BusinessStatus = baseResponse.ErrCode;
                viewModel.StatusMessage  = baseResponse.ErrMsg;
                return(viewModel);
            }
            #endregion
            #region 业务逻辑
            //拼接请求串
            string strUrl = string.Format("http://{0}:{1}/api/CarInsurance/GetReInfo", uri.Host, uri.Port);
            //3,续保请求
            BaseResponse rep = await SimulateGet(strUrl, pairs);

            if (rep.ErrCode == 1)
            {
                viewModel = rep.ErrMsg.FromJson <GetReInfoNewViewModel>();
            }
            else
            {
                viewModel.BusinessStatus = rep.ErrCode;
                viewModel.StatusMessage  = rep.ErrMsg;
            }
            bx_userinfo userinfo = _userInfoRepository.FindByOpenIdAndLicense(request.CustKey, request.LicenseNo, request.ChildAgent.ToString(), request.RenewalCarType);
            viewModel.Buid       = userinfo != null ? userinfo.Id : 0;
            viewModel.Agent      = baseResponse.Agent;
            viewModel.AgentName  = baseResponse.AgentName;
            viewModel.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            viewModel.IsDistrib  = userinfo != null ? userinfo.IsDistributed : 0;
            //添加续保通知,向bx_notice_xb插记录,商业险或交强险在90天范围之内
            //20170111产品说再改吧,又不需要app的通知了
            //if (userinfo != null)
            //{
            //    long noticeBuid = userinfo.Id;
            //    _noticexbService.AddNoticexb(viewModel.UserInfo.LicenseNo, viewModel.UserInfo.BusinessExpireDate,
            //        viewModel.UserInfo.ForceExpireDate, viewModel.UserInfo.NextBusinessStartDate,
            //        viewModel.UserInfo.NextForceStartDate, viewModel.SaveQuote.Source, int.Parse(userinfo.Agent), noticeBuid, 1);
            //}
            #endregion
            return(viewModel);
        }
        public long AddRenewalStatus(int status, GetReInfoRequest request)
        {
            bx_renewalstatus renewalStatus = new bx_renewalstatus
            {
                RenewalStatus = status,
                LicenseNo     = request.LicenseNo,
                Agent         = request.Agent.ToString(),
                CreateTime    = DateTime.Now
            };

            return(_renewalStatusrepository.Add(renewalStatus));
        }
        public GetReInfoNewViewModel GetReInfoDetail(GetReInfoRequest request, IEnumerable <KeyValuePair <string, string> > pairs, Uri uri)
        {
            var viewModel = new GetReInfoNewViewModel();

            #region 参数校验
            //校验请求串
            var baseRequest = new AppBaseRequest()
            {
                Agent      = request.Agent,
                SecCode    = request.SecCode,
                CustKey    = request.CustKey,
                BhToken    = request.BhToken,
                ChildAgent = request.ChildAgent
            };
            //校验返回值
            var baseResponse = _appVerifyService.Verify(baseRequest, pairs);
            if (baseResponse.ErrCode != 1)
            {
                viewModel.BusinessStatus = baseResponse.ErrCode;
                viewModel.StatusMessage  = baseResponse.ErrMsg;
                return(viewModel);
            }
            #endregion
            #region 业务逻辑
            //拼接请求串
            string strUrl = string.Format("http://{0}:{1}/api/Bjd/GetReInfoDetail", uri.Host, uri.Port);
            //3,续保请求
            BaseResponse rep   = SimulateSyncGet(strUrl, pairs);
            var          model = new AppReInfoViewModel();
            if (rep.ErrCode == 1)
            {
                model = rep.ErrMsg.FromJson <AppReInfoViewModel>();
                viewModel.BusinessStatus = model.BusinessStatus;
                viewModel.StatusMessage  = model.StatusMessage;
                viewModel.UserInfo       = model.UserInfo;
                viewModel.SaveQuote      = model.SaveQuote;
                viewModel.Buid           = model.Buid;
                viewModel.Agent          = baseResponse.Agent;
                viewModel.AgentName      = baseResponse.AgentName;
            }
            else
            {
                viewModel.BusinessStatus = rep.ErrCode;
                viewModel.StatusMessage  = rep.ErrMsg;
                bx_userinfo userinfo = _userInfoRepository.FindByOpenIdAndLicense(request.CustKey, request.LicenseNo, request.ChildAgent.ToString(), request.RenewalCarType);
                viewModel.Buid      = userinfo != null ? userinfo.Id : 0;
                viewModel.Agent     = baseResponse.Agent;
                viewModel.AgentName = baseResponse.AgentName;
            }
            #endregion
            return(viewModel);
        }
Exemplo n.º 7
0
        public HttpResponseMessage GetReInfoDetail([FromUri] GetReInfoRequest request)
        {
            _logAppInfo.Info(string.Format("获取续保详情接口请求串:{0}", Request.RequestUri));
            var viewModel = new GetReInfoNewViewModel();

            if (!ModelState.IsValid)
            {
                viewModel.BusinessStatus = -10000;
                string msg = ModelState.Values.Where(a => a.Errors.Count == 1).Aggregate(string.Empty, (current, a) => current + (a.Errors[0].ErrorMessage + ";   "));
                viewModel.StatusMessage = "输入参数错误," + msg;
                return(viewModel.ResponseToJson());
            }
            viewModel = _appAchieveService.GetReInfoDetail(request, Request.GetQueryNameValuePairs(), Request.RequestUri);
            //_logAppInfo.Info(string.Format("获取续保详情接口返回值:{0}", viewModel.ToJson()));
            return(viewModel.ResponseToJson());
        }
        public static bx_userinfo Find(GetReInfoRequest request, IUserInfoRepository infoRepository)
        {
            bx_userinfo userinfo = null;

            switch (request.IsLastYearNewCar)
            {
            case 1:
                userinfo = infoRepository.FindByOpenIdAndLicense(request.CustKey, request.LicenseNo, request.Agent.ToString(), request.RenewalCarType);
                break;

            case 2:
                userinfo = infoRepository.FindByCarvin(request.CarVin, request.CustKey, request.Agent.ToString(), request.RenewalCarType);
                break;
            }
            return(userinfo);
        }
        public async void GetReInfo_WithNotExistMobile_ExpectHttpStatusCode_Forbidden(int agent, string licenseno, int citycode, string seccode)
        {
            GetReInfoRequest reInfoRequest = new GetReInfoRequest
            {
                AgentId   = agent,
                LicenseNo = licenseno,
                CityCode  = citycode,
                SecCode   = seccode
            };

            var pars = CommonHelper.EachProperties(reInfoRequest);


            _sutbAgentRepository.Setup(x => x.GetAgent(It.IsAny <int>())).Returns <bx_agent>(null);
            ICarInsuranceService carInsuranceService = new CarInsuranceService(_stubSaveQuoteRepository.Object, _stubUserInfoRepository.Object,
                                                                               _logService.Object, _stubSubmitInfoRepository.Object, _stubQuoteResultRepository.Object, _stubLastInfoRepository.Object, _sutbAgentRepository.Object, _messageCenter.Object);
            var response = await carInsuranceService.GetReInfo(reInfoRequest, pars);

            Assert.AreEqual(HttpStatusCode.Forbidden, response.Status);
        }
        public async void FetchReInsuranceInfo_Get_NoSaveQuote_Returns_10002()
        {
            GetReInfoRequest request = new GetReInfoRequest
            {
                AgentId  = 103,
                CityCode = 1,
                SecCode  = "XSFSDSFD"
            };
            CarInsuranceController controller = new CarInsuranceController(_carInsuranceService.Object)
            {
                Request = new HttpRequestMessage
                {
                    Properties = { { HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration() } }
                }
            };

            _carInsuranceService.Setup(x => x.GetReInfo(request, controller.Request.GetQueryNameValuePairs())).Returns(GetReInfo_SaveQuote_NOFound);
            HttpResponseMessage message = await controller.FetchReInsuranceInfo(request);

            NUnit.Framework.Assert.AreEqual(-10002, message.Content.ReadAsAsync <GetReInfoViewModel>().Result.BusinessStatus);
        }
Exemplo n.º 11
0
        // [EnableThrottling()]
        public async Task <HttpResponseMessage> FetchReInsuranceInfo([FromUri] GetReInfoRequest request)
        {
            _logAppInfo.Info(string.Format("App请求续保接口请求串:{0}", Request.RequestUri));
            var viewModel = new GetReInfoNewViewModel();

            if (!ModelState.IsValid)
            {
                viewModel.BusinessStatus = -10000;
                string msg = ModelState.Values.Where(a => a.Errors.Count == 1).Aggregate(string.Empty, (current, a) => current + (a.Errors[0].ErrorMessage + ";   "));
                viewModel.StatusMessage = "输入参数错误," + msg;
                return(viewModel.ResponseToJson());
            }
            //if (request.RenewalType == 6 || request.RenewalType == 7)
            //{
            //    viewModel.BusinessStatus = 0;
            //    return viewModel.ResponseToJson();
            //}
            viewModel = await _workOrderService.GetReInfo(request, Request.GetQueryNameValuePairs(), Request.RequestUri);

            _logAppInfo.Info(string.Format("App请求续保接口返回值:{0}", viewModel.ToJson()));
            return(viewModel.ResponseToJson());
        }
Exemplo n.º 12
0
        public static GetReInfoViewModel GetReInfo(GetReInfoRequest request)
        {
            var viewModel = new GetReInfoViewModel();

            UserInfoViewModel UserInfo = new UserInfoViewModel();

            UserInfo.CarUsedType           = 1;
            UserInfo.LicenseNo             = "京FF1234";
            UserInfo.LicenseOwner          = "姚毅";
            UserInfo.InsuredName           = "姚毅";
            UserInfo.PostedName            = "姚毅";
            UserInfo.IdType                = 1;
            UserInfo.CredentislasNum       = "110108196905241319";
            UserInfo.CityCode              = 1;
            UserInfo.EngineNo              = "266832";
            UserInfo.ModleName             = "奥迪FV6461HBQWG多用途乘用车";
            UserInfo.CarVin                = "LFV3B28R4D3065341";
            UserInfo.RegisterDate          = "2014-01-26";
            UserInfo.ForceExpireDate       = "2017-01-19";
            UserInfo.BusinessExpireDate    = "2017-01-19";
            UserInfo.NextForceStartDate    = "2017-01-20";
            UserInfo.NextBusinessStartDate = "2017-01-20";
            UserInfo.PurchasePrice         = 433710;
            UserInfo.SeatCount             = 5;
            UserInfo.FuelType              = 1;
            UserInfo.ProofType             = 0;
            UserInfo.LicenseColor          = 0;
            UserInfo.ClauseType            = 0;
            UserInfo.RunRegion             = 1;
            UserInfo.InsuredIdCard         = "110108196905241319";
            UserInfo.InsuredIdType         = 1;
            UserInfo.InsuredMobile         = "";
            UserInfo.HolderIdCard          = "110108196905241319";
            UserInfo.HolderIdType          = 1;
            UserInfo.HolderMobile          = "";
            UserInfo.RateFactor1           = 0;
            UserInfo.RateFactor2           = 0;
            UserInfo.RateFactor3           = 0;
            UserInfo.RateFactor4           = 0;
            viewModel.UserInfo             = UserInfo;

            SaveQuoteViewModel SaveQuote = new SaveQuoteViewModel();

            SaveQuote.Source   = 0;
            SaveQuote.CheSun   = 433710;
            SaveQuote.SanZhe   = 500000;
            SaveQuote.DaoQiang = 342630.9;
            SaveQuote.SiJi     = 0;
            SaveQuote.ChengKe  = 0;
            SaveQuote.BoLi     = 1;
            SaveQuote.HuaHen   = 0;
            //SaveQuote.CheDeng = 0;
            SaveQuote.SheShui                = 0;
            SaveQuote.ZiRan                  = 0;
            SaveQuote.BuJiMianChengKe        = 0;
            SaveQuote.BuJiMianSiJi           = 0;
            SaveQuote.BuJiMianHuaHen         = 0;
            SaveQuote.BuJiMianSheShui        = 0;
            SaveQuote.BuJiMianZiRan          = 0;
            SaveQuote.BuJiMianJingShenSunShi = 0;

            SaveQuote.BuJiMianCheSun   = 1;
            SaveQuote.BuJiMianSanZhe   = 1;
            SaveQuote.BuJiMianDaoQiang = 1;
            // SaveQuote.BuJiMianRenYuan = 0;
            //SaveQuote.BuJiMianFuJia = 0;

            SaveQuote.HcSanFangTeYue   = 0;
            SaveQuote.HcJingShenSunShi = 0;

            viewModel.SaveQuote = SaveQuote;

            viewModel.CustKey        = request.CustKey;
            viewModel.BusinessStatus = 1;
            viewModel.StatusMessage  = "续保成功";

            return(viewModel);
        }
Exemplo n.º 13
0
 public async Task <HttpResponseMessage> FetchCarInfo([FromUri] GetReInfoRequest request)
 {
     return(null);
 }
        public async Task <GetReInfoNewViewModel> GetReInfo(GetReInfoRequest request, IEnumerable <KeyValuePair <string, string> > pairs, Uri uri)
        {
            //返回对象
            var viewModel = new GetReInfoNewViewModel();

            #region 校验
            //bhToken校验
            if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            {
                viewModel.BusinessStatus = -300;
                viewModel.StatusMessage  = "登录信息已过期,请重新登录";
                return(viewModel);
            }
            //传参校验
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                viewModel.BusinessStatus = -301;
                viewModel.StatusMessage  = "参数校验失败";
                return(viewModel);
            }
            //代理人信息校验
            if (request.Agent == request.ChildAgent)
            {
                IBxAgent childagentModel = GetAgentModelFactory(request.ChildAgent);
                //1,当前代理人是否可用;
                if (!childagentModel.AgentCanUse())
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                //2,顶级代理人是否可用;
                if (!_agentService.IsTopAgentId(request.Agent))
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
            }
            else
            {
                var childagentModel = GetAgentModelFactory(request.ChildAgent);
                if (!childagentModel.AgentCanUse())
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                var agentModel = GetAgentModelFactory(request.Agent);
                if (!agentModel.AgentCanUse())
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                if (!_agentService.IsTopAgentId(request.Agent))
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                //3,当前代理人是否在顶级代理人下
                if (!_agentRepository.GetTopAgentId(request.ChildAgent).Contains(request.Agent.ToString()))
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
            }
            #endregion

            //是否在未分配的池子里
            //bool isInAssign = false;

            //1,校验重复数据
            //userinfo 顶级代理下的所有代理,出过的车,存在就提示
            //原来userinfo里的记录
            //var bxUserinfo = IsExistLicense(request, out isInAssign);

            //拼接请求串
            var sb = new StringBuilder();
            sb.Append("?");
            bool isAndroid = true;
            foreach (KeyValuePair <string, string> pair in pairs)
            {
                if (pair.Key.ToLower() == "renewaltype")
                {
                    isAndroid = false;
                    sb.Append(string.Format("{0}={1}&", pair.Key, pair.Value));
                }
                //else if (pair.Key.ToLower() == "childagent")
                //{
                //    //********************
                //    //判断是否是新入店车辆
                //    sb.Append(bxUserinfo != null
                //        ? string.Format("{0}={1}&", pair.Key, bxUserinfo.Agent)
                //        : string.Format("{0}={1}&", pair.Key, pair.Value));
                //}
                //else if (pair.Key.ToLower() == "custkey")
                //{
                //    //********************
                //    //判断是否是新入店车辆
                //    sb.Append(bxUserinfo != null
                //        ? string.Format("{0}={1}&", pair.Key, bxUserinfo.OpenId)
                //        : string.Format("{0}={1}&", pair.Key, pair.Value));
                //}
                else
                {
                    sb.Append(string.Format("{0}={1}&", pair.Key, pair.Value));
                }
            }
            if (isAndroid)
            {
                sb.Append(string.Format("RenewalType={0}&", 7));
            }
            sb.Remove(sb.Length - 1, 1);
            string geturl = string.Format("http://{0}/api/CarInsurance/GetReInfo{1}", uri.Host + ":" + uri.Port, sb.ToString());

            //2,分配
            //给续保车分配续保顾问
            //********************
            //判断是否是新入店车辆
            //var advAgent = bxUserinfo != null ? GetAgentModelFactory(int.Parse(bxUserinfo.Agent)) : GetAgentModelFactory(request.ChildAgent);
            var advAgent      = GetAgentModelFactory(request.ChildAgent);
            int userinfoAgent = 0;//查询原来的userinfo用
            //********************
            //判断是否是新入店车辆
            //if (bxUserinfo != null)
            //{
            //    userinfoAgent = int.Parse(bxUserinfo.Agent);
            //}
            //else
            //{
            userinfoAgent = request.ChildAgent > 0 ? request.ChildAgent : request.Agent;
            //}

            //3,续保
            string strGetMsg = string.Empty;
            using (var client = new HttpClient())
            {
                var clientResult = client.GetAsync(geturl).Result;

                if (clientResult.StatusCode.ToString().Equals("429"))
                {
                    viewModel.BusinessStatus = -429;
                    viewModel.StatusMessage  = "请求客户端过多,请稍候再试";
                    return(viewModel);
                }
                if (clientResult.IsSuccessStatusCode)
                {
                    strGetMsg = await clientResult.Content.ReadAsStringAsync();
                }
                if (string.IsNullOrWhiteSpace(strGetMsg))
                {
                    viewModel.BusinessStatus = -10002;
                    viewModel.StatusMessage  = "获取到续保信息失败";
                    return(viewModel);
                }
                viewModel       = strGetMsg.FromJson <GetReInfoNewViewModel>();
                viewModel.Agent = advAgent.Id;
                //********************
                //判断是否是新入店车辆
                //if (bxUserinfo != null)
                //{
                //    viewModel.AgentName = !isInAssign ? advAgent.AgentName : "未分配";
                //}
                //else
                //{
                //    viewModel.AgentName = "未分配";
                //}
                viewModel.AgentName = advAgent.AgentName;
            }

            //插入意向

            //4,插入续保修改人日志
            //
            var newBxUserinfo = new bx_userinfo();

            //********************
            //判断是否是新入店车辆
            //if (bxUserinfo == null)
            //{
            newBxUserinfo = GetUserInfo(request.LicenseNo, userinfoAgent.ToString());
            //if (newBxUserinfo == null)
            //{
            //    viewModel.BusinessStatus = -10002;
            //    viewModel.StatusMessage = "获取到续保信息失败";
            //    return viewModel;
            //}
            //修改userinfo
            //newBxUserinfo.OpenId = advAgent.OpenId;
            //newBxUserinfo.Agent = advAgent.Id.ToString();
            //if (_userInfoRepository.Update(newBxUserinfo) > 0)
            //{
            //    viewModel.CustKey = advAgent.OpenId;
            //}

            //}

            //if (bxUserinfo != null)
            //{
            //    //返回当前记录的buid
            //    viewModel.Buid = bxUserinfo.Id;
            //    //插入续保修改记录
            //    AddChangeLog(bxUserinfo.Id, userinfoAgent, request.ChildAgent, 1);//第一步
            //    if (!isInAssign)
            //    {//如果不在未分配的池子里
            //        AddChangeLog(bxUserinfo.Id, request.ChildAgent, advAgent.Id, 2); //第二步
            //    }
            //    else
            //    {
            //        AddChangeLog(bxUserinfo.Id, request.ChildAgent, advAgent.Id, 6); //第二步
            //    }
            //}
            //else
            //{
            //返回当前记录的buid
            viewModel.Buid = newBxUserinfo.Id;
            //插入续保修改记录
            AddChangeLog(newBxUserinfo.Id, userinfoAgent, 0, 1);    //第一步
            //AddChangeLog(newBxUserinfo.Id, userinfoAgent, advAgent.Id, 6); //第二步
            //}

            //********************
            //判断是否是新入店车辆
            //if (bxUserinfo == null)
            //{
            //5,添加分配通知
            //20170405修改,不发分配通知
            //var msgRequest = new AddMessageRequest
            //{
            //    Body = request.LicenseNo,
            //    MsgType = 6,
            //    ToAgentId = advAgent.Id,
            //    MsgLevel = 1,
            //    SendTime = DateTime.Now.ToString(),
            //    ChildAgent = request.ChildAgent,
            //    LicenseNo = request.LicenseNo,
            //    Buid = newBxUserinfo.Id
            //};
            //_messageService.AddMessage(msgRequest);
            //}
            //6,添加续保通知,向bx_notice_xb插记录,商业险或交强险在90天范围之内
            //long noticeBuid = bxUserinfo != null ? bxUserinfo.Id : newBxUserinfo.Id;
            //if (viewModel.UserInfo != null)
            //{
            //    _noticexbService.AddNoticexb(viewModel.UserInfo.LicenseNo, viewModel.UserInfo.BusinessExpireDate,
            //        viewModel.UserInfo.ForceExpireDate, viewModel.UserInfo.NextBusinessStartDate,
            //        viewModel.UserInfo.NextForceStartDate, viewModel.SaveQuote.Source, advAgent.Id, noticeBuid, 1);
            //}
            return(viewModel);
        }
        public string CheckXuBao(GetReInfoRequest request)
        {
            string msg = string.Empty;

            if (string.IsNullOrWhiteSpace(request.LicenseNo) && string.IsNullOrWhiteSpace(request.CarVin))
            {
                msg = "请检查您的输入参数。1,如果按照车牌号续保,请填写 Licenseno参数;2,如果按照车架号和发动机号续保,请完善CarVin和Engineno参数(太平洋、平安只需要CarVin参数)";
            }
            //校验车牌号
            if (!string.IsNullOrWhiteSpace(request.LicenseNo) && string.IsNullOrWhiteSpace(request.CarVin))
            {
                if (!request.LicenseNo.IsValidLicenseno())
                {
                    msg = "请输入正确的车牌号";
                }
            }
            if (request.IsLastYearNewCar == 2 && string.IsNullOrWhiteSpace(request.CarVin))
            {
                msg = "请检查您的输入参数,如果按照车架号和发动机号续保,请完善CarVin和Engineno参数(太平洋、平安只需要CarVin参数)";
            }

            //续保特殊代理人只允许续保自己开通城市
            try
            {
                #region 临时
                if (request.Agent == 68612)
                {
                    if (request.CityCode != 13 && request.CityCode != 14)
                    {
                        return("代理人还未开通该城市");
                    }
                }
                #endregion
                else
                {
                    string strConfig = _getConfigValueService.GetConfigValue("ReInfoOnlyQuoteConfig", 1, "ReInfoOnlyQuoteConfig");
                    if (string.IsNullOrEmpty(strConfig))
                    {
                        //如果配置没有信息,直接返回结果
                        return(msg);
                    }
                    #region 如果取到配置信息
                    //根据","拆分不同的代理人
                    string[] reAgent = strConfig.Split(',');
                    //reAgent没配置直接返回msg
                    if (reAgent.Length < 1)
                    {
                        return(msg);
                    }
                    //如果代理人不在配置内,直接返回之前的msg
                    if (Array.IndexOf(reAgent, request.Agent.ToString()) == -1)
                    {
                        return(msg);
                    }

                    List <int> listAgent = _agentConfigByCityService.GetConfigCityList(request.Agent);
                    //如果没拿到配置城市,直接返回msg
                    if (listAgent == null || !listAgent.Any())
                    {
                        return(msg);
                    }
                    if (!listAgent.Contains(request.CityCode))
                    {
                        return("代理人还未开通该城市");
                    }
                }
            }
            catch (Exception ex)
            {
                logError.Info("续保特殊代理人只允许开通城市发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + " 请求对象:" + request.ToJson());
            }
            #endregion
            return(msg);
        }
Exemplo n.º 16
0
        public async Task <GetReInfoViewModel> GetViewModel(GetReInfoRequest request, GetReInfoResponse response, int viewCityCode, string viewCustkey, int topAgent, string absolutori, BHFunctionLog fucnLog, string traceId)
        {
            GetReInfoViewModel viewModel = new GetReInfoViewModel();

            if (response.Status == HttpStatusCode.BadRequest || response.Status == HttpStatusCode.Forbidden)
            {
                viewModel.BusinessStatus = -10001;
                if (!string.IsNullOrWhiteSpace(response.BusinessMessage))
                {
                    viewModel.StatusMessage = response.BusinessMessage;
                }
                else
                {
                    viewModel.StatusMessage = "参数校验错误,请检查您的校验码";
                }

                return(viewModel);
            }
            if (response.Status == HttpStatusCode.ExpectationFailed)
            {
                viewModel.BusinessStatus = -10003;
                viewModel.StatusMessage  = "服务发生异常";
                return(viewModel);
            }
            else
            {
                viewModel.BusinessStatus = response.BusinessStatus;
                viewModel.StatusMessage  = response.BusinessMessage;
                fucnLog = LogAssistant.GenerateBHFuncLog(traceId, "续保信息的userinfo部分", "ConvertToViewModel", 1);
                AspectF.Define.InfoFunctionLog(fucnLog).Do(() => { viewModel.UserInfo = response.UserInfo.ConvertToViewModel(response.SaveQuote, response.CarInfo, response.LastInfo, request.TimeFormat); });
                //显示商业险交强险投保单号
                if (request.CanShowNo == 0)
                {
                    viewModel.UserInfo.BizNo   = null;
                    viewModel.UserInfo.ForceNo = null;
                }
                if (request.CanShowExhaustScale == 0)
                {
                    viewModel.UserInfo.ExhaustScale = null;
                }
                viewModel.UserInfo.IsPublic = response.ReqCarinfo == null ? 0 : (response.ReqCarinfo.is_public.HasValue ? response.ReqCarinfo.is_public.Value : 0);
                if (request.ShowAutoMoldCode == 1)
                {
                    viewModel.UserInfo.AutoMoldCode = response.ReqCarinfo == null ? string.Empty : (string.IsNullOrWhiteSpace(response.ReqCarinfo.auto_model_code) ? string.Empty : response.ReqCarinfo.auto_model_code);
                }
                #region 关系人星号判断
                if (request.RenewalType == 2)
                {
                    viewModel.UserInfo = _reWriteUserInfo.ReWriteUserInfoService(viewModel.UserInfo, topAgent);
                }
                #endregion
                viewModel.UserInfo.CityCode = viewCityCode;
                viewModel.CustKey           = viewCustkey;
                if (response.BusinessStatus == 1)
                {
                    viewModel.SaveQuote = response.SaveQuote.ConvetToViewModel();
                    //addbygupj 20180926 续保返回保费
                    if (request.ShowBaoFei == 1)
                    {
                        viewModel.XianZhong = response.RenewalPremium.ConvetToViewModel(response.SaveQuote);
                    }
                    if (request.Group > 0)
                    {
                        //此处原先if判断,改为调用转换方法 by.20180904.gpj
                        viewModel.SaveQuote.Source = SourceGroupAlgorithm.GetNewSource(Convert.ToInt32(viewModel.SaveQuote.Source));
                    }
                }
                else
                {
                    viewModel.SaveQuote = new SaveQuoteViewModel();
                    viewModel.SaveQuote.HcXiuLiChang     = "0";
                    viewModel.SaveQuote.HcXiuLiChangType = "-1";
                    viewModel.SaveQuote.Fybc             = "0";
                    viewModel.SaveQuote.FybcDays         = "0";
                    viewModel.SaveQuote.SheBeis          = new List <SheBei>();
                    viewModel.SaveQuote.SheBeiSunShi     = "0";
                    viewModel.SaveQuote.BjmSheBeiSunShi  = "0";
                    viewModel.SaveQuote.SanZheJieJiaRi   = "0";
                    //addbygupj 20180926 续保返回保费
                    if (request.ShowBaoFei == 1)
                    {
                        viewModel.XianZhong = new XianZhong()
                        {
                            CheSun                 = new XianZhongUnit(),
                            SanZhe                 = new XianZhongUnit(),
                            DaoQiang               = new XianZhongUnit(),
                            SiJi                   = new XianZhongUnit(),
                            ChengKe                = new XianZhongUnit(),
                            BoLi                   = new XianZhongUnit(),
                            HuaHen                 = new XianZhongUnit(),
                            BuJiMianCheSun         = new XianZhongUnit(),
                            BuJiMianSanZhe         = new XianZhongUnit(),
                            BuJiMianDaoQiang       = new XianZhongUnit(),
                            BuJiMianFuJia          = new XianZhongUnit(),
                            BuJiMianChengKe        = new XianZhongUnit(),
                            BuJiMianSiJi           = new XianZhongUnit(),
                            BuJiMianHuaHen         = new XianZhongUnit(),
                            BuJiMianSheShui        = new XianZhongUnit(),
                            BuJiMianZiRan          = new XianZhongUnit(),
                            BuJiMianJingShenSunShi = new XianZhongUnit(),
                            SheShui                = new XianZhongUnit(),
                            ZiRan                  = new XianZhongUnit(),
                            HcSheBeiSunshi         = new XianZhongUnit(),
                            HcHuoWuZeRen           = new XianZhongUnit(),
                            HcJingShenSunShi       = new XianZhongUnit(),
                            HcSanFangTeYue         = new XianZhongUnit(),
                            HcXiuLiChang           = new XianZhongUnit(),
                            Fybc                   = new XianZhongUnit(),
                            FybcDays               = new XianZhongUnit(),
                            SheBeiSunShi           = new XianZhongUnit(),
                            BjmSheBeiSunShi        = new XianZhongUnit()
                        };
                    }
                }
                if (response.CenterPicCodeCacheModel != null)
                {
                    if (viewModel.PACheckCode == null)
                    {
                        viewModel.PACheckCode = new PACheckCode();
                    }
                    viewModel.PACheckCode.VerificationCode = response.CenterPicCodeCacheModel.VerificationCode;
                    viewModel.PACheckCode.RequestKey       = response.CenterPicCodeCacheModel.RequestKey;
                    viewModel.PACheckCode.PAUKey           = int.Parse(response.CenterPicCodeCacheModel.UKey);
                }
                if (response.BusinessStatus == 1)
                {
                    viewModel.StatusMessage = "续保成功";
                }
                else if (response.BusinessStatus == 2)
                {
                    viewModel.StatusMessage = "需要完善行驶证信息(车辆信息和险种都没有获取到)";
                }
                else if (response.BusinessStatus == 3)
                {
                    viewModel.StatusMessage = "获取车辆信息成功(车架号,发动机号,品牌型号及初登日期),险种获取失败";
                }
                else if (response.BusinessStatus == -10002)
                {
                    viewModel.StatusMessage = "获取续保信息失败";
                }
                else if (response.BusinessStatus == 8)
                {
                    viewModel.UserInfo.ForceExpireDate    = response.LastInfo.last_end_date;
                    viewModel.UserInfo.BusinessExpireDate = response.LastInfo.last_business_end_date;
                    if (!string.IsNullOrWhiteSpace(viewModel.UserInfo.ForceExpireDate))
                    {
                        var nb = DateTime.Parse(viewModel.UserInfo.ForceExpireDate);
                        if (nb.Date == DateTime.MinValue.Date)
                        {
                            viewModel.UserInfo.ForceExpireDate = "";
                        }
                    }
                    if (!string.IsNullOrWhiteSpace(viewModel.UserInfo.BusinessExpireDate))
                    {
                        var nb = DateTime.Parse(viewModel.UserInfo.BusinessExpireDate);
                        if (nb.Date == DateTime.MinValue.Date)
                        {
                            viewModel.UserInfo.BusinessExpireDate = "";
                        }
                    }
                    viewModel.StatusMessage  = "投保公司:" + response.BusinessMessage + ";该车是续保期外的车或者是投保我司对接外的其他保险公司的车辆,这种情况,只能返回该车的投保日期(ForceExpireDate,BusinessExpireDate),险种取不到,不再返回";
                    viewModel.BusinessStatus = 1;
                }
                #region 广州人财保 特殊判断,屏蔽平安关系人,按一定比例不返回保司
                if (_gzcbAgentId.Equals(request.Agent.ToString()))
                {
                    #region 屏蔽关系人
                    if (_reInfoNoRelationSource.Split(new Char[] { ',' }).Contains(viewModel.SaveQuote.Source.ToString()))
                    {
                        viewModel.UserInfo.LicenseOwner    = "";
                        viewModel.UserInfo.InsuredName     = "";
                        viewModel.UserInfo.PostedName      = "";
                        viewModel.UserInfo.IdType          = 0;
                        viewModel.UserInfo.CredentislasNum = "";
                        viewModel.UserInfo.InsuredIdCard   = "";
                        viewModel.UserInfo.InsuredIdType   = 0;
                        viewModel.UserInfo.InsuredMobile   = "";
                        viewModel.UserInfo.HolderName      = "";
                        viewModel.UserInfo.HolderIdCard    = "";
                        viewModel.UserInfo.HolderIdType    = 0;
                        viewModel.UserInfo.HolderMobile    = "";
                        viewModel.UserInfo.OwnerSex        = "";
                        viewModel.UserInfo.OwnerBirthday   = "";
                        viewModel.UserInfo.InsuredSex      = "";
                        viewModel.UserInfo.InsuredBirthday = "";
                        viewModel.UserInfo.HolderSex       = "";
                        viewModel.UserInfo.HolderBirthday  = "";
                    }
                    #endregion
                    #region 重置source为-1 未取到保司
                    if (_isFalseReInfoService.IsFalseReInfo(request.Agent) &&
                        _reInfoFailedSource.Split(new Char[] { ',' }).Contains(viewModel.SaveQuote.Source.ToString()))
                    {
                        viewModel.SaveQuote.Source = -1;
                    }
                    #endregion
                }
                #endregion
                #region 爱保的只返回上年投保是人保的关系人信息
                //根据","拆分不同的代理人
                if (!string.IsNullOrEmpty(_reInfoClearRelation))
                {
                    string[] reAgent = _reInfoClearRelation.Split(';');
                    foreach (var itAgent in reAgent)
                    {
                        //获取代理人配置
                        string[] itemConfig = itAgent.Split(',');
                        //代理人配置读取,跟当前代理人比较
                        if (itemConfig[0].Equals(request.Agent.ToString()))
                        {
                            //根据.来拆分有哪些保司,不是授权的保司就置空关系人
                            if (!itemConfig[1].Split(new Char[] { '.' }).Contains(viewModel.SaveQuote.Source.ToString()))
                            {
                                viewModel.UserInfo.LicenseOwner    = "";
                                viewModel.UserInfo.InsuredName     = "";
                                viewModel.UserInfo.PostedName      = "";
                                viewModel.UserInfo.IdType          = 0;
                                viewModel.UserInfo.CredentislasNum = "";
                                viewModel.UserInfo.InsuredIdCard   = "";
                                viewModel.UserInfo.InsuredIdType   = 0;
                                viewModel.UserInfo.InsuredMobile   = "";
                                viewModel.UserInfo.HolderName      = "";
                                viewModel.UserInfo.HolderIdCard    = "";
                                viewModel.UserInfo.HolderIdType    = 0;
                                viewModel.UserInfo.HolderMobile    = "";
                                viewModel.UserInfo.OwnerSex        = "";
                                viewModel.UserInfo.OwnerBirthday   = "";
                                viewModel.UserInfo.InsuredSex      = "";
                                viewModel.UserInfo.InsuredBirthday = "";
                                viewModel.UserInfo.HolderSex       = "";
                                viewModel.UserInfo.HolderBirthday  = "";
                            }
                            break;
                        }
                    }
                }
                #endregion
                if (response.BusinessStatus != 1)
                {
                    viewModel.SaveQuote.Source = -1;
                }
                if (request.ShowXiuLiChangType == 0)
                {
                    viewModel.SaveQuote.HcXiuLiChang     = null;
                    viewModel.SaveQuote.HcXiuLiChangType = null;
                }
                if (request.ShowFybc == 0)
                {
                    viewModel.SaveQuote.Fybc     = null;
                    viewModel.SaveQuote.FybcDays = null;
                }
                if (request.ShowSheBei == 0)
                {
                    viewModel.SaveQuote.SheBeis         = null;
                    viewModel.SaveQuote.SheBeiSunShi    = null;
                    viewModel.SaveQuote.BjmSheBeiSunShi = null;
                }
                if (request.ShowSanZheJieJiaRi == 0)
                {
                    viewModel.SaveQuote.SanZheJieJiaRi = null;
                }
            }
            if (request.ShowInnerInfo == 0)
            {
                viewModel.UserInfo.Buid = null;
            }
            if (request.ShowRenewalCarType == 0)
            {
                viewModel.UserInfo.RenewalCarType = null;
            }
            if (request.ShowCarType == 0)
            {
                viewModel.UserInfo.CarType = null;
            }
            if (request.ShowOrg == 0)
            {
                viewModel.UserInfo.Organization = null;
            }
            if (request.ShowRelation == 0)
            {
                viewModel.UserInfo.OwnerBirthday   = null;
                viewModel.UserInfo.OwnerSex        = null;
                viewModel.UserInfo.HolderBirthday  = null;
                viewModel.UserInfo.HolderSex       = null;
                viewModel.UserInfo.InsuredBirthday = null;
                viewModel.UserInfo.InsuredSex      = null;
            }
            if (request.ShowExpireDateNum == 1)
            {
                //计算还剩多少天
                if (viewModel.UserInfo != null)
                {
                    int dayminus = 0;
                    if (!string.IsNullOrEmpty(viewModel.UserInfo.ForceExpireDate))
                    {
                        dayminus = TimeHelper.GetDayMinus(DateTime.Parse(viewModel.UserInfo.ForceExpireDate), DateTime.Now);
                    }
                    else if (!string.IsNullOrEmpty(viewModel.UserInfo.BusinessExpireDate))
                    {
                        dayminus = TimeHelper.GetDayMinus(DateTime.Parse(viewModel.UserInfo.BusinessExpireDate), DateTime.Now);
                    }
                    viewModel.UserInfo.ExpireDateNum = dayminus.ToString();
                }
            }
            else
            {
                viewModel.UserInfo.ExpireDateNum = null;
            }
            if (request.ShowPACheckCode == 0)
            {
                viewModel.PACheckCode = null;
            }
            if (request.ShowTransferModel == 0)
            {
                viewModel.TransferModelList = null;
            }
            else
            {
                if (response.TransferModelList != null && response.TransferModelList.Any())
                {
                    viewModel.TransferModelList = response.TransferModelList.ConvertToViewModel();
                }
                else
                {
                    viewModel.TransferModelList = new List <Models.ReportModel.TransferModelNew>();
                }
            }
            //addbygupj 20180926 续保返回保费
            if (request.ShowBaoFei == 0)
            {
                viewModel.XianZhong = null;
            }
            //if (request.ShowRenewalCarModel == 1)
            //{
            //    if (response.CarModel != null)
            //    {
            //        string yearday = string.Empty;
            //        if (string.IsNullOrWhiteSpace(response.CarModel.VehicleYear))
            //        {
            //            yearday = string.Empty;
            //        }
            //        else if (response.CarModel.VehicleYear.Length == 4)
            //        {
            //            yearday = response.CarModel.VehicleYear;
            //        }
            //        else if (response.CarModel.VehicleYear.Length >= 6)
            //        {
            //            yearday = response.CarModel.VehicleYear.Substring(0, 6);
            //        }
            //        viewModel.UserInfo.RenewalCarModel = string.Format("{0}/{1}/{2}/{3}/{4}/{5}",
            //            response.CarModel.VehicleName, response.CarModel.VehicleAlias,
            //            response.CarModel.VehicleExhaust.HasValue
            //                ? response.CarModel.VehicleExhaust.Value.ToString("f3")
            //                : "0", response.CarModel.VehicleSeat,
            //            response.CarModel.PriceT.HasValue ? response.CarModel.PriceT.Value.ToString("f1") : "0"
            //            , yearday);
            //    }
            //    else
            //    {
            //        viewModel.UserInfo.RenewalCarModel = string.Empty;
            //    }
            //}


            #region 摄像头用户向第三方推送续保消息
            if (request.RenewalType == 3)
            {
                fucnLog = LogAssistant.GenerateBHFuncLog(traceId, "续保调用第三方接口传数据", "PostThirdPart", 1);
                AspectF.Define.InfoFunctionLog(fucnLog).Do(() => { _postThirdPartService.PostThirdPart(topAgent, viewModel); });
            }
            #endregion
            #region 多家绑定摄像头

            if (request.RenewalType == 3)
            {
                if (request.Agent == 88794)
                {
                    fucnLog = LogAssistant.GenerateBHFuncLog(traceId, "绑定摄像头,获取续保信息", "GetRenewalRequest", 1);
                    AspectF.Define.InfoFunctionLog(fucnLog).Do(() =>
                    {
                        Task.Factory.StartNew(() =>
                        {
                            GetRenewalRequest(88798, ("88798").GetMd5().ToUpper(), request.LicenseNo, request.CityCode.ToString(), request.RenewalCarType.ToString(), absolutori, 88798, request.CameraId);
                        });
                    });
                    fucnLog = LogAssistant.GenerateBHFuncLog(traceId, "绑定摄像头,获取续保信息", "GetRenewalRequest", 1);
                    AspectF.Define.InfoFunctionLog(fucnLog).Do(() =>
                    {
                        Task.Factory.StartNew(() =>
                        {
                            GetRenewalRequest(88797, ("88797").GetMd5().ToUpper(), request.LicenseNo, request.CityCode.ToString(), request.RenewalCarType.ToString(), absolutori, 88797, request.CameraId);
                        });
                    });
                }
            }
            //改成配置
            fucnLog = LogAssistant.GenerateBHFuncLog(traceId, "更多摄像头绑定", "MoreCameraBindings", 1);
            await AspectF.Define.InfoFunctionLog(fucnLog).Return(() => { return(MoreCameraBindings(request, absolutori)); });

            #endregion

            return(viewModel);
        }
        public async Task<GetIntelligentReInfoResponse> GetIntelligentReInfo(GetIntelligentReInfoRequest request, IEnumerable<KeyValuePair<string, string>> pairs)
        {
            var response = new GetIntelligentReInfoResponse();
            var isReadCache = true;
            try
            {
                //代理人校验
                IBxAgent agentModel = _getAgentInfoService.GetAgentModelFactory(request.Agent);
                if (!agentModel.AgentCanUse())
                {
                    response.Status = HttpStatusCode.Forbidden;
                    if (agentModel.endDate.HasValue && agentModel.endDate.Value < DateTime.Now)
                    {
                        response.ErrMsg = string.Format("参数校验错误,账号已过期。过期时间为:{0}", agentModel.endDate.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                        return response;
                    }
                    response.ErrMsg = "参数校验错误,账号已禁用。";
                    return response;
                }
                if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return response;
                }
                //微信端逻辑 次级代理
                if (request.ChildAgent > 0)
                {
                    var item = _agentRepository.GetAgent(request.ChildAgent);
                    if (item != null && item.IsUsed == 1)
                    {
                        request.Agent = request.ChildAgent;
                    }
                    else
                    {
                        return new GetIntelligentReInfoResponse
                        {
                            ErrMsg = "您的账号已被禁用,如有疑问请联系管理员。",
                            Status = HttpStatusCode.Forbidden
                        };
                    }
                }
                ///先从库里读取,没有在走后续流程
                if (request.IsCarVin == 1)
                {
                    //根据车架号查询
                    response.CarInfo = _carInfoRepository.FindVinCarInfo(request.CarVin, request.RenewalCarType);

                }
                else
                {
                    //车牌号查询
                    response.CarInfo = _carInfoRepository.FindOrderDate(request.LicenseNo, request.RenewalCarType);
                }

                response.Status = HttpStatusCode.OK;
                if (response.CarInfo != null)
                {
                    response.ErrCode = 1;
                    response.ErrMsg = "成功获取信息";
                    //然后调用中心取险种推荐的逻辑
                    response.SaveQuote = new SaveQuoteViewModel();
                    bx_car_renewal car_Renewal = _carRenewalRepository.FindByLicenseno(response.CarInfo.license_no);
                    if (car_Renewal != null)
                    {
                        response.SaveQuote = car_Renewal.ConvetToViewModel();
                    }
                    else
                    {
                        request.MoldName = response.CarInfo.mold_name;
                        request.RegisterDate = response.CarInfo.register_date.HasValue ? response.CarInfo.register_date.Value.ToString("yyyy-MM-dd") : string.Empty;
                        response.IsIntelligent = 1;
                        //获取推荐信息失败,也返回1
                        var tuple = await _getIntelligentInsurance.GetCenterInsurance(request);
                        response.SaveQuote = tuple.Item1;
                        if (!tuple.Item2) {
                            response.ErrCode = 2;
                            response.ErrMsg = "成功获取车辆信息,未获取到险种信息";
                        }
                    }
                }
                else
                {
                    response.ErrCode = 0;
                    response.ErrMsg = "未获取到车辆信息";
                }
#pragma warning disable CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法
                Task.Factory.StartNew(() =>
                {
                    GetReInfoRequest requestNew = new GetReInfoRequest()
                    {
                        LicenseNo = request.LicenseNo,
                        Agent = request.Agent
                    };
                    int datastatus = int.Parse(response.ErrCode.ToString() + response.IsIntelligent.ToString());
                    _renewalStatusService.AddRenewalStatus(response.ErrCode, requestNew);
                });
#pragma warning restore CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法
                return response;
            }
            catch (Exception ex)
            {
                response = new GetIntelligentReInfoResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("获取简易续保信息发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }
            return response;
        }
Exemplo n.º 18
0
        public GetReInfoResponse GetReInfo(GetReInfoRequest request)
        {
            var xubaokey = new
            {
                LicenseNo = request.LicenseNo,
                Agent     = request.Agent
            };

            var xuBaoCacheKey = CommonCacheKeyFactory.MakeCacheKey(xubaokey);

            var xuBaoKey = string.Format("{0}-{1}", xuBaoCacheKey, "key");
            var cacheKey = CacheProvider.Get <string>(xuBaoKey);

            if (cacheKey == null)
            {
                for (int i = 0; i < 30; i++)
                {
                    cacheKey = CacheProvider.Get <string>(xuBaoKey);
                    if (!string.IsNullOrWhiteSpace(cacheKey))
                    {
                        break;
                    }
                    else
                    {
                        Task.Delay(TimeSpan.FromSeconds(1));
                    }
                }
            }

            if (!string.IsNullOrWhiteSpace(cacheKey))
            {
                GetReInfoResponse response = new GetReInfoResponse();

                //续保 需要的表
                //bx_userinfo
                //bx_renewalquote
                //bx_carinfo

                //步骤1  续保的时候 会发送消息队列 ,这个时候 会把 key传过去eg:aaaa。

                //步骤2   中心在续保的时候 ,需要根据这个key 设置一个开关 eg:aaaa-key:1,放在缓存中,成功的时候要置1,刚开始是空值
                //等续保结束后,先将上面列出的表写入缓存
                //其中: 键值分别是:
                //bx_userinfo        :aaaa-userinfo
                //bx_renewalquote    :aaaa-renewal
                //bx_carinfo         :aaaa-carinfo
                //步骤3: 讲开关缓存设置续保完成标识:aaaa-key:1


                //续保缓存标示(是否成功)


                if (cacheKey == "1")
                {
                    response.UserInfo =
                        CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo"));
                    response.SaveQuote =
                        CacheProvider.Get <bx_renewalquote>(string.Format("{0}-{1}", xuBaoCacheKey, "renewal"));
                    response.CarInfo        = CacheProvider.Get <bx_carinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "carinfo"));
                    response.BusinessStatus = 1;
                }
                else
                {
                    response = null;
                }

                return(response);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 19
0
        public static bx_userinfo Save(GetReInfoRequest request, int roleType, IUserInfoRepository infoRepository, int topAgentId = 0)
        {
            var insertUserinfo = new bx_userinfo
            {
                top_agent_id   = topAgentId,
                agent_id       = request.Agent,
                IsLastYear     = 0,
                LastYearSource = -1,
                //Source = -1,
                //Mobile = agentModel.Mobile,
                LicenseNo = request.LicenseNo,
                Agent     = request.Agent.ToString(),
                //UserId = account.UserId,//此字段废弃
                OpenId   = request.CustKey,
                CityCode = request.CityCode.ToString(),
                //IsPublic = request.IsPublic,
                QuoteStatus   = -1,
                RenewalStatus = -1,
                CreateTime    = DateTime.Now,
                RenewalType   = request.RenewalType,
                //IsLastNewCar = request.IsLastYearNewCar,
                //EngineNo = request.EngineNo,
                //CarVIN = request.CarVin,
                NeedEngineNo    = 1,
                IsDistributed   = 0,
                UpdateTime      = DateTime.Now,
                IsSingleSubmit  = 0,
                Source          = 0,
                OwnerIdCardType = -1,
                IsReView        = 0,
                IsTest          = 0
            };

            insertUserinfo.RenewalCarType = request.RenewalCarType;
            if (!string.IsNullOrWhiteSpace(request.SixDigitsAfterIdCard))
            {
                insertUserinfo.SixDigitsAfterIdCard = request.SixDigitsAfterIdCard;
            }
            if (request.IsLastYearNewCar == 2)
            {
                insertUserinfo.NeedEngineNo = 1;
                if (!string.IsNullOrWhiteSpace(request.EngineNo))
                {
                    insertUserinfo.EngineNo = request.EngineNo.ToUpper();
                }
                if (!string.IsNullOrWhiteSpace(request.CarVin))
                {
                    insertUserinfo.CarVIN = request.CarVin.ToUpper();
                }
            }
            //车架号及发动机号全部都有的情况 ,没有测试 ,先注释
            //if (request.IsLastYearNewCar == 1 &
            //   (!string.IsNullOrWhiteSpace(request.CarVin) && !string.IsNullOrWhiteSpace(request.EngineNo)))
            //{
            //    insertUserinfo.LicenseNo = request.LicenseNo;
            //    insertUserinfo.MoldName = string.Empty;
            //    insertUserinfo.RegisterDate = string.Empty;
            //    if (!string.IsNullOrWhiteSpace(request.EngineNo))
            //    {
            //        insertUserinfo.EngineNo = request.EngineNo.ToUpper();
            //    }

            //    if (!string.IsNullOrWhiteSpace(request.CarVin))
            //    {
            //        insertUserinfo.CarVIN = request.CarVin.ToUpper();
            //    }
            //    insertUserinfo.NeedEngineNo = 1;
            //}
            if (!string.IsNullOrWhiteSpace(request.CarOwnersName))
            {
                insertUserinfo.UserName     = request.CarOwnersName;
                insertUserinfo.LicenseOwner = request.CarOwnersName;
                insertUserinfo.InsuredName  = request.CarOwnersName;
            }
            if (!string.IsNullOrWhiteSpace(request.IdCard))
            {
                insertUserinfo.IdCard        = request.IdCard.ToUpper();
                insertUserinfo.InsuredIdCard = request.IdCard.ToUpper();
            }

            /* 摄像头进店修改进店参数
             * addbygpj20180828
             * 20180918删除该逻辑,刘松年在下文会改
             */
            //if (request.RenewalType == 3)
            //{
            //    insertUserinfo.IsCamera = true;
            //    insertUserinfo.CameraTime = DateTime.Now;
            //}

            /*
             * 如果老数据,分配状态都按以前的走。
             * 如果摄像头进店,顶级和管理员是未分配,其他为自己试算
             * 非摄像头进店,顶级是未分配,其他为已分配
             * 此处老数据不用考虑,不执行下文的update方法即可
             * addbygpj20180828
             */
            bool distributedRoleType = false;

            if (request.RenewalType == 3)
            {
                distributedRoleType          = (roleType == 3 || roleType == 4);//管理员或顶级
                insertUserinfo.IsDistributed = distributedRoleType ? 0 : 2;
            }
            else
            {
                distributedRoleType          = roleType == 3;//顶级
                insertUserinfo.IsDistributed = distributedRoleType ? 0 : 2;
            }
            insertUserinfo.IsSingleLicenseno = 0;
            //20181009中心要求修改是否单车牌标识
            if (string.IsNullOrEmpty(insertUserinfo.CarVIN) || string.IsNullOrEmpty(insertUserinfo.EngineNo))
            {
                insertUserinfo.IsSingleLicenseno = 1;
            }

            #region 车店连呼新增userinfo时权限相关特殊操作,bygpj
            //业务call liuzhenlong,qixinbo,lvshaobo
            if (request.ZuoXiId > 0)
            {
                //新增续保报价选择数据来源时用 20181218
                insertUserinfo.zs_zuoxi_id = request.ZuoXiId;
            }
            else
            {
                //20181126去掉配置//20181127新增的需要加上
                //车店连呼特殊配置CLHZuoXiAgentId
                var strzuoxiagent = ConfigurationManager.AppSettings["CLHZuoXiAgentId"];
                if (!string.IsNullOrEmpty(strzuoxiagent))
                {
                    string[] reAgent = strzuoxiagent.Split(',');
                    //取配置里的数组,如果匹配上,则将子集代理id赋值给zuoxiid
                    if (Array.IndexOf(reAgent, topAgentId.ToString()) != -1)
                    {
                        insertUserinfo.zs_zuoxi_id = request.Agent;
                    }
                }
            }
            #endregion

            var buid = infoRepository.Add(insertUserinfo);

            insertUserinfo.Id = buid;
            return(insertUserinfo);
        }
Exemplo n.º 20
0
        public static bx_userinfo Update(GetReInfoRequest request, bx_userinfo userinfo, IUserInfoRepository infoRepository, int topAgentId = 0)
        {
            userinfo.IsLastYear     = 0;
            userinfo.LastYearSource = -1;
            //userinfo.Source = 0;
            //userinfo.IsSingleSubmit = 0;
            //userinfo.IsPublic = request.IsPublic;
            userinfo.RenewalStatus = -1;
            //userinfo.QuoteStatus = -1;
            userinfo.UpdateTime = DateTime.Now;
            userinfo.Agent      = request.Agent.ToString();
            userinfo.CityCode   = request.CityCode.ToString();
            //userinfo.IsLastNewCar = request.IsLastYearNewCar;
            userinfo.IsTest         = 0;
            userinfo.RenewalCarType = request.RenewalCarType;
            if (!string.IsNullOrWhiteSpace(request.SixDigitsAfterIdCard))
            {
                userinfo.SixDigitsAfterIdCard = request.SixDigitsAfterIdCard;
            }
            if (request.IsLastYearNewCar == 2)
            {
                userinfo.LicenseNo    = request.LicenseNo;
                userinfo.MoldName     = string.Empty;
                userinfo.RegisterDate = string.Empty;
                userinfo.EngineNo     = !string.IsNullOrWhiteSpace(request.EngineNo) ? request.EngineNo.ToUpper() : "";
                if (!string.IsNullOrWhiteSpace(request.CarVin))
                {
                    userinfo.CarVIN = request.CarVin.ToUpper();
                }
                userinfo.NeedEngineNo = 1;
            }

            if (request.IsLastYearNewCar == 1 &
                (!string.IsNullOrWhiteSpace(request.CarVin) && !string.IsNullOrWhiteSpace(request.EngineNo)))
            {
                userinfo.LicenseNo    = request.LicenseNo;
                userinfo.MoldName     = string.Empty;
                userinfo.RegisterDate = string.Empty;
                if (!string.IsNullOrWhiteSpace(request.EngineNo))
                {
                    userinfo.EngineNo = request.EngineNo.ToUpper();
                }
                if (!string.IsNullOrWhiteSpace(request.CarVin))
                {
                    userinfo.CarVIN = request.CarVin.ToUpper();
                }
                userinfo.NeedEngineNo = 1;
            }
            if (request.IsLastYearNewCar == 1 &&
                (!string.IsNullOrWhiteSpace(request.CarVin) && string.IsNullOrWhiteSpace(request.EngineNo)))
            {
                userinfo.LicenseNo    = request.LicenseNo;
                userinfo.MoldName     = string.Empty;
                userinfo.RegisterDate = string.Empty;
                userinfo.EngineNo     = !string.IsNullOrWhiteSpace(request.EngineNo) ? request.EngineNo.ToUpper() : "";
                if (!string.IsNullOrWhiteSpace(request.CarVin))
                {
                    userinfo.CarVIN = request.CarVin.ToUpper();
                }
                userinfo.NeedEngineNo = 1;
            }

            /*摄像头进店修改进店参数
             * addbygpj20180828
             * 20180918删除该逻辑,刘松年在下文会改
             */
            //if (request.RenewalType == 3)
            //{
            //    userinfo.IsCamera = true;
            //    userinfo.CameraTime = DateTime.Now;
            //}
            ////元数据是摄像头的,改为新的录入方式
            //if (userinfo.RenewalType == 3)
            //{
            //    userinfo.RenewalType = request.RenewalType;
            //}
            ////录入方式为摄像头的,将元数据改为摄像头
            //if (request.RenewalType == 3)
            //{
            //    userinfo.RenewalType = 3;
            //}
            userinfo.IsSingleLicenseno = 0;
            //20181009中心要求修改是否单车牌标识
            if (string.IsNullOrEmpty(userinfo.CarVIN) || string.IsNullOrEmpty(userinfo.EngineNo))
            {
                userinfo.IsSingleLicenseno = 1;
            }
            //20181126去掉配置
            //if (userinfo.zs_zuoxi_id == 0)
            //{
            //    //车店连呼特殊配置CLHZuoXiAgentId
            //    var strzuoxiagent = ConfigurationManager.AppSettings["CLHZuoXiAgentId"];
            //    if (!string.IsNullOrEmpty(strzuoxiagent))
            //    {
            //        string[] reAgent = strzuoxiagent.Split(',');
            //        //取配置里的数组,如果匹配上,则将子集代理id赋值给zuoxiid
            //        if (Array.IndexOf(reAgent, topAgentId.ToString()) != -1)
            //            userinfo.zs_zuoxi_id = request.Agent;
            //    }
            //}
            infoRepository.Update(userinfo);
            return(userinfo);
        }
Exemplo n.º 21
0
        public async Task <GetReInfoResponse> PushCenterService(GetReInfoRequest request, long buid, string reqCacheKey)
        {
            var response = new GetReInfoResponse();

            //续保选择其他保司续保时,只取行驶本信息,不发续保请求
            #region 发送续保消息
            string xuBaoCacheKey = CommonCacheKeyFactory.CreateKeyWithLicense(request.LicenseNo + request.RenewalCarType);
            var    xuBaoKey      = string.Format("{0}-xb-{1}", xuBaoCacheKey, "key");
            CacheProvider.Remove(xuBaoKey);
            object msgBody;
            if (request.RenewalSource <= 0)
            {
                msgBody = new
                {
                    B_Uid          = buid,
                    IsCloseSms     = 0,
                    NotifyCacheKey = xuBaoCacheKey,
                    IsForceRenewal = request.IsForceRenewal == 1//是否强制刷新续保
                };
            }
            else
            {
                msgBody = new
                {
                    B_Uid      = buid,
                    IsCloseSms = 0,
                    //改为help类里面通用方法 by.20180904.gpj
                    RenewalSource  = SourceGroupAlgorithm.ParseOldSource(request.RenewalSource).ToHashSet(),
                    NotifyCacheKey = xuBaoCacheKey,
                    IsForceRenewal = request.IsForceRenewal == 1//是否强制刷新续保
                };
                ///如果传进来的三个值都不为空  ShowPACheckCode=1
                if (!string.IsNullOrWhiteSpace(request.RequestKey) && request.PAUKey != 0 && request.YZMArea != null)
                {
                    msgBody = new
                    {
                        B_Uid      = buid,
                        IsCloseSms = 0,
                        //改为help类里面通用方法 by.20180904.gpj
                        RenewalSource  = SourceGroupAlgorithm.ParseOldSource(request.RenewalSource).ToHashSet(),
                        NotifyCacheKey = xuBaoCacheKey,
                        RequestKey     = request.RequestKey,
                        PAUKey         = request.PAUKey,
                        YZMArea        = request.YZMArea,
                        IsForceRenewal = request.IsForceRenewal == 1//是否强制刷新续保
                    };
                }
            }
            //发送续保信息
            //var msgbody = _messageCenter.SendToMessageCenter(msgBody.ToJson(), ConfigurationManager.AppSettings["MessageCenter"], ConfigurationManager.AppSettings["BxXuBaoName"]);
            string strurl             = string.Format("{0}/service/getrenewal", ConfigurationManager.AppSettings["CenterNewUrl"]);
            string returnServerIpPort = string.Empty;
            string result             = ProxyCenterHttpClient.Post(strurl, msgBody.ToJson(), 60, ref returnServerIpPort);

            #endregion
            #region 缓存读取
            ExecutionContext.SuppressFlow();
            response = await _carInsuranceCache.GetReInfo(request, buid);

            #region 改由中心 写 缓存
            response.ReqCarinfo = CacheProvider.Get <bx_quotereq_carinfo>(reqCacheKey);
            #endregion
            #endregion

            return(response);
        }
Exemplo n.º 22
0
        public async Task <GetReInfoResponse> GetReInfo(GetReInfoRequest request)
        {
            var response    = new GetReInfoResponse();
            var isReadCache = true;
            var topAgent    = request.Agent;//顶级代理人

            //获取当前数据的角色addbygpj20180829
            int roleType = _managerRoleRepository.GetRoleTypeByAgentId(request.ChildAgent > 0 ? request.ChildAgent : request.Agent);

            try
            {
                IBxAgent agentModel = _getAgentInfoService.GetAgentModelFactory(request.Agent);
                if (!agentModel.AgentCanUse())
                {
                    response.Status = HttpStatusCode.Forbidden;
                    if (agentModel.endDate.HasValue && agentModel.endDate.Value < DateTime.Now)
                    {
                        response.BusinessMessage = string.Format("参数校验错误,账号已过期。过期时间为:{0}", agentModel.endDate.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                        return(response);
                    }
                    response.BusinessMessage = "参数校验错误,账号已禁用。";
                    return(response);
                }
                //获取[顶级]代理人是否重复数据的标记addbygpj20180829
                int repeateQuote = agentModel.repeat_quote;
                #region userinfo逻辑
                //微信端逻辑 次级代理
                if (request.ChildAgent > 0)
                {
                    agentModel = _getAgentInfoService.GetAgentModelFactory(request.ChildAgent);
                    if (agentModel.AgentCanUse())
                    {
                        request.Agent = request.ChildAgent;
                    }
                    else
                    {
                        return(new GetReInfoResponse
                        {
                            BusinessMessage = "您的账号已被禁用,如有疑问请联系管理员。",
                            Status = HttpStatusCode.Forbidden
                        });
                    }
                }
                #region 摄像头的黑名单、查重过滤
                bool isAdd = true;
                if (request.RenewalType == 3)
                {
                    //黑名单 //查重
                    CameraBackDataViewModel backData = _fiterAndRepeatDataService.GetFiterData(request.LicenseNo, topAgent, request.ChildAgent, request.CustKey, request.CityCode, request.RenewalCarType, repeateQuote, roleType);
                    if (backData != null)
                    {
                        if (backData.IsBlack)
                        {
                            //在黑名单列表中,无需继续往下,执行直接return
                            return(new GetReInfoResponse
                            {
                                BusinessMessage = "车辆已进入黑名单,未执行续保操作",
                                Status = HttpStatusCode.Forbidden
                            });
                        }
                        else
                        {
                            //不在黑名单列表中
                            if (!string.IsNullOrEmpty(backData.Buid) && !string.IsNullOrEmpty(backData.Agent) && !string.IsNullOrEmpty(backData.OpenId))
                            {
                                isAdd           = false;
                                request.Agent   = int.Parse(backData.Agent);
                                request.CustKey = backData.OpenId;
                            }
                        }
                    }
                }
                #endregion
                #region 操作bx_userinfo对象
                bx_userinfo userinfo = UserinfoSearchFactory.Find(request, _userInfoRepository);
                if (userinfo == null)
                {
                    if (!string.IsNullOrEmpty(_isAddIdCardBack6) && _isAddIdCardBack6.Equals("1") && string.IsNullOrEmpty(request.SixDigitsAfterIdCard))
                    {
                        //如果身份证后6位字段为空,则取数据库中该车牌其他的记录的值
                        Stopwatch ssw = new Stopwatch();
                        ssw.Start();
                        //查重复数据
                        RepeatUserInfoModel        model      = new RepeatUserInfoModel();
                        List <RepeatUserInfoModel> listRepeat = _userInfoRepository.GetLicenseRepeat(topAgent, request.LicenseNo);
                        if (listRepeat.Any())
                        {
                            model = listRepeat.Where(l => l.SixDigitsAfterIdCard != null && l.SixDigitsAfterIdCard.Trim() != "").OrderByDescending(o => o.UpdateTime).FirstOrDefault();
                        }
                        //取一条赋值后六位
                        if (model != null && model.Buid > 0)
                        {
                            request.SixDigitsAfterIdCard = model.SixDigitsAfterIdCard;
                        }
                        logError.Info(string.Format("buid为{0},后6位插入时间{1}", 0, ssw.ElapsedMilliseconds));
                        ssw.Stop();
                    }
                    userinfo = UserinfoMakeFactory.Save(request, roleType, _userInfoRepository, agentModel.TopAgentId);
                    if (request.IsLastYearNewCar == 1)
                    {
                        isReadCache = await _checkCarNeedDrivingInfoService.GetInfo(userinfo);
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(_isAddIdCardBack6) && _isAddIdCardBack6.Equals("1") && string.IsNullOrEmpty(request.SixDigitsAfterIdCard) && string.IsNullOrEmpty(userinfo.SixDigitsAfterIdCard))
                    {
                        //如果身份证后6位字段为空,则取数据库中该车牌其他的记录的值
                        Stopwatch ssw = new Stopwatch();
                        ssw.Start();
                        //查重复数据
                        RepeatUserInfoModel        model      = new RepeatUserInfoModel();
                        List <RepeatUserInfoModel> listRepeat = _userInfoRepository.GetLicenseRepeat(topAgent, request.LicenseNo);
                        if (listRepeat.Any())
                        {
                            model = listRepeat.Where(l => l.SixDigitsAfterIdCard != null && l.SixDigitsAfterIdCard.Trim() != "").OrderByDescending(o => o.UpdateTime).FirstOrDefault();
                        }
                        //取一条赋值后六位
                        if (model != null && model.Buid > 0)
                        {
                            request.SixDigitsAfterIdCard = model.SixDigitsAfterIdCard;
                        }
                        logError.Info(string.Format("buid为{0},后6位插入时间{1}", userinfo.Id, ssw.ElapsedMilliseconds));
                        ssw.Stop();
                    }
                    userinfo = UserinfoMakeFactory.Update(request, userinfo, _userInfoRepository, agentModel.TopAgentId);
                    bool isNeedCheckNeed = !(request.IsLastYearNewCar == 1 & (!string.IsNullOrWhiteSpace(request.CarVin) && !string.IsNullOrWhiteSpace(request.EngineNo)));
                    if (request.IsLastYearNewCar == 1)
                    {
                        //超过半年的数据要重新调用车型信息
                        if (userinfo.UpdateTime.HasValue && userinfo.UpdateTime.Value.AddMonths(6) <= DateTime.Now)
                        {
                            isReadCache = await _checkCarNeedDrivingInfoService.GetInfo(userinfo);
                        }
                        else
                        {
                            if (userinfo.NeedEngineNo == 1) //以前没有拿到行驶证信息
                            {
                                if (isNeedCheckNeed)        //没有拿到车架号及发动机号
                                {
                                    isReadCache = await _checkCarNeedDrivingInfoService.GetInfo(userinfo);
                                }
                            }
                        }
                    }
                }
                #endregion
                long buid = userinfo.Id;
                #endregion
                #region bx_quotereq_carinfo 逻辑
                var reqCacheKey = string.Format("{0}-{1}", buid, "reqcarinfo");
                var quotereq    = _quoteReqCarinfoRepository.Find(buid);
                if (quotereq == null)
                {
                    QuoteReqCarInfoMakeFactory.Save(buid, request.IsLastYearNewCar, _quoteReqCarinfoRepository);
                }
                else
                {
                    QuoteReqCarInfoMakeFactory.Update(quotereq, request.IsLastYearNewCar, _quoteReqCarinfoRepository);
                }
                #endregion
                if (request.RenewalSource != -1)
                {
                    #region 调用中心返回response信息
                    response = await _toCenterFromReInfoService.PushCenterService(request, buid, reqCacheKey);

                    #endregion
                }
                if (response.BusinessStatus == 4 || request.RenewalSource == -1)
                {
                    bool isOver = false;
                    #region  读库数据
                    isOver            = _getReInfoState.GetState(buid);
                    response          = new GetReInfoResponse();
                    response.UserInfo = _userInfoRepository.FindByBuid(buid);
                    if (!isOver)
                    {
                        if (response.UserInfo.NeedEngineNo == 1)
                        {
                            //需要完善行驶证信息
                            response.BusinessStatus  = 2;
                            response.BusinessMessage = "需要完善行驶证信息(车辆信息和险种都没有获取到)";
                        }
                        if (response.UserInfo.NeedEngineNo == 0 && response.UserInfo.RenewalStatus != 1)
                        {
                            //获取车辆信息成功,但获取险种失败
                            response.BusinessStatus  = 3;
                            response.BusinessMessage = "获取车辆信息成功(车架号,发动机号,品牌型号及初登日期),险种获取失败";
                        }
                        if ((response.UserInfo.NeedEngineNo == 0 && response.UserInfo.LastYearSource > -1) || response.UserInfo.RenewalStatus == 1)
                        {
                            //续保成功
                            response.BusinessStatus  = 1;
                            response.BusinessMessage = "续保成功";
                            response.SaveQuote       = _carRenewalRepository.FindByLicenseno(request.LicenseNo);
                            response.CarInfo         = _carInfoRepository.Find(response.UserInfo.LicenseNo);
                        }
                    }
                    else
                    {
                        if (response.UserInfo.LastYearSource == -1)
                        {
                            response.BusinessStatus  = -10002;
                            response.BusinessMessage = "获取续保信息失败";
                        }
                    }
                    response.Status = HttpStatusCode.OK;
                    #endregion
                }
                response.UserInfo.Id = buid;
                #region 发送分配请求
                string moldName           = response.UserInfo != null ? response.UserInfo.MoldName : string.Empty; //车型
                string businessExpireDate = string.Empty;                                                          //商业险到期
                string forceExpireDate    = string.Empty;                                                          //交强险到期
                if (response.SaveQuote != null)
                {
                    businessExpireDate = response.SaveQuote.LastBizEndDate.HasValue
                        ? response.SaveQuote.LastBizEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss")
                        : string.Empty;
                    forceExpireDate = response.SaveQuote.LastForceEndDate.HasValue
                        ? response.SaveQuote.LastForceEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss")
                        : string.Empty;
                }
                //调用重新分配的接口
                if (request.RenewalType == 3)
                {
                    /*
                     * 调用院院的分配方法,将数据推过去即可,无需返回值
                     * 20180820修改,1,去掉是否调用摄像头进店(api.config的IsUrlDistributed标识)判断;2,修改分配方法,调用刘松年的新版接口
                     */
#pragma warning disable CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法
                    Task.Factory.StartNew(() =>
                    {
                        _sentDistributedService.SentDistributed(response.BusinessStatus, moldName, buid, topAgent, request.ChildAgent, userinfo.Agent, request.CityCode, request.LicenseNo, request.RenewalType, userinfo.RenewalType.Value, businessExpireDate, forceExpireDate, false, request.ChildAgent, request.CameraId, isAdd, repeateQuote, roleType, request.CustKey, request.CityCode);
                    });
#pragma warning restore CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法
                }
                #endregion
                #region 修改批续进来的状态
                if (response.BusinessStatus == 1)
                {
                    UpdateBatchRenewalStatus(buid, 1);
                }
                else if (response.BusinessStatus == 2)
                {
                    UpdateBatchRenewalStatus(buid, 2);
                }
                else if (response.BusinessStatus == 3)
                {
                    UpdateBatchRenewalStatus(buid, 4);
                }
                else
                {
                    UpdateBatchRenewalStatus(buid, 2);
                }
                #endregion
            }
            catch (Exception ex)
            {
                MetricUtil.UnitReports("renewal_service");
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("续保请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + ",请求对象信息:" + request.ToJson() + ";返回对象信息" + response.ToJson());
            }
            return(response);
        }
        public async Task <GetReInfoResponse> GetReInfo(GetReInfoRequest request, long?buid = null)
        {
            ILog logInfo = LogManager.GetLogger("ERROR");
            //logInfo.Info("读取缓存数据开始" + request.ToJson());
            string xuBaoCacheKey = CommonCacheKeyFactory.CreateKeyWithLicense(request.LicenseNo + request.RenewalCarType);

            var xuBaoKey = string.Format("{0}-xb-{1}", xuBaoCacheKey, "key");
            var cacheKey = CacheProvider.Get <string>(xuBaoKey);

            #region

            //var step1val = string.Empty;
            //var step1va2 = string.Empty;
            //var step1va3 = string.Empty;
            //var step1va4 = string.Empty;
            StringBuilder sb = new StringBuilder();
            #endregion

            if (cacheKey == null)
            {
                for (int i = 0; i < 115; i++)
                {
                    cacheKey = CacheProvider.Get <string>(xuBaoKey);
                    //step1val = xuBaoKey;
                    //step1va2 = cacheKey;
                    if (!string.IsNullOrWhiteSpace(cacheKey))
                    {
                        if (cacheKey == "0" || cacheKey == "1" || cacheKey == "2")
                        {
                            break;
                        }
                    }
                    else
                    {
                        //ExecutionContext.SuppressFlow();
                        await Task.Delay(TimeSpan.FromSeconds(1));

                        //ExecutionContext.RestoreFlow();
                    }
                    //logInfo.Info("读取缓存数据循环"+i+"     "+ request.ToJson() + ";  缓存key是step1va2:" + step1va2 + " --  key:step1va1" + step1val);
                    //sb.AppendLine("读取缓存数据循环" + i + "     " + request.ToJson() + ";  缓存key是step1va2:" + step1va2 +
                    //              " --  key:step1va1" + step1val);
                }
            }

            GetReInfoResponse response = new GetReInfoResponse();
            try
            {
                if (!string.IsNullOrWhiteSpace(cacheKey))
                {
                    //续保 需要的表
                    //bx_userinfo
                    //bx_renewalquote
                    //bx_carinfo

                    //步骤1  续保的时候 会发送消息队列 ,这个时候 会把 key传过去eg:aaaa。

                    //步骤2   中心在续保的时候 ,需要根据这个key 设置一个开关 eg:aaaa-key:1,放在缓存中,成功的时候要置1,刚开始是空值
                    //等续保结束后,先将上面列出的表写入缓存
                    //其中: 键值分别是:
                    //bx_userinfo        :aaaa-userinfo
                    //bx_car_renewal    :aaaa-renewal
                    //bx_carinfo         :aaaa-carinfo
                    //步骤3: 讲开关缓存设置续保完成标识:aaaa-key:1


                    //续保缓存标示(是否成功)
                    var renwal = CommonCacheKeyFactory.CreateKeyWithLicense(request.LicenseNo + request.RenewalCarType);

                    if (cacheKey == "1")
                    {
                        response.UserInfo =
                            CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo"));

                        response.SaveQuote =
                            CacheProvider.Get <bx_car_renewal>(string.Format("{0}-{1}", renwal, "renewal"));
                        response.CarInfo  = CacheProvider.Get <bx_carinfo>(string.Format("{0}-{1}", renwal, "carinfo"));
                        response.LastInfo = CacheProvider.Get <bx_lastinfo>(string.Format("{0}-{1}", renwal, "lastinfo"));
                        //续保返回保费addbygpj20180926
                        response.RenewalPremium = CacheProvider.Get <bx_car_renewal_premium>(string.Format("{0}-{1}", renwal, "premium"));
                        response.BusinessStatus = 1;
                    }
                    else if (cacheKey == "0")
                    {
                        #region 先获取平安验证码
                        if (buid != null)
                        {
                            if (request.ShowPACheckCode == 1 && string.IsNullOrWhiteSpace(request.RequestKey) && request.PAUKey == 0 && request.YZMArea == null)
                            {
                                /*
                                 * 如果平安续保返回需要验证码,缓存平安验证码信息
                                 */
                                string payzmkey = string.Format("{0}-PAYZM", buid);
                                CenterPicCodeCacheModel payzmvalue = CacheProvider.Get <CenterPicCodeCacheModel>(payzmkey);
                                if (payzmvalue != null)
                                {
                                    response          = new GetReInfoResponse();
                                    response.UserInfo = new bx_userinfo();
                                    response.CenterPicCodeCacheModel = payzmvalue;
                                    if (response.CenterPicCodeCacheModel.ErrCode == -210002)
                                    {
                                        response.BusinessStatus  = -10009;
                                        response.BusinessMessage = "获取续保信息失败,请输入验证码坐标";
                                    }
                                    else if (response.CenterPicCodeCacheModel.ErrCode == -210003)
                                    {
                                        response.BusinessStatus  = 0;
                                        response.BusinessMessage = "输入验证码错误";
                                    }
                                    else if (response.CenterPicCodeCacheModel.ErrCode == -210004)
                                    {
                                        response.BusinessStatus  = 0;
                                        response.BusinessMessage = "输入超时";
                                    }
                                    response.Status      = HttpStatusCode.OK;
                                    response.UserInfo.Id = (long)buid;
                                    return(response);
                                }
                            }
                        }
                        #endregion
                        response.UserInfo =
                            CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo"));
                        response.CarInfo = CacheProvider.Get <bx_carinfo>(string.Format("{0}-{1}", renwal, "carinfo"));

                        if (response.UserInfo.NeedEngineNo == 1)
                        {
                            response.BusinessStatus = 2;
                        }
                        else if (response.UserInfo.NeedEngineNo == 0) //去掉 && response.UserInfo.QuoteStatus == 0
                        {
                            response.BusinessStatus = 3;
                        }
                        else
                        {
                            response.BusinessStatus = 4;
                        }
                    }
                    else if (cacheKey == "2")
                    {
                        response.UserInfo =
                            CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo"));
                        //var renwal = CommonCacheKeyFactory.CreateKeyWithLicense(request.LicenseNo);
                        response.SaveQuote      = new bx_car_renewal();
                        response.RenewalPremium = new bx_car_renewal_premium();
                        //CacheProvider.Get<bx_car_renewal>(string.Format("{0}-{1}", renwal, "renewal"));
                        response.BusinessStatus  = 8;
                        response.LastInfo        = CacheProvider.Get <bx_lastinfo>(string.Format("{0}-{1}", renwal, "lastinfo"));
                        response.BusinessMessage = CacheProvider.Get <string>(string.Format("{0}-xb-company", xuBaoCacheKey));
                    }
                    //过户车的模型
                    response.TransferModelList = CacheProvider.Get <List <TransferModel> >(string.Format("{0}-xb-key-newcarinfo", xuBaoCacheKey));
                    return(response);
                }
                else
                {
                    response.UserInfo = new bx_userinfo();
                    //如果没拿到值,初始化以下基础信息字段
                    response.UserInfo.LicenseNo = request.LicenseNo;
                    response.UserInfo.CarVIN    = request.CarVin;
                    response.UserInfo.EngineNo  = request.EngineNo;
                    response.BusinessStatus     = 0;//缓存异常
                    response.BusinessMessage    = "请求超时或缓存异常,请重试";
                    return(response);
                }
            }
            catch (Exception ex)
            {
                logInfo.Info("读取缓存发生异常" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }
            return(response);
        }