Exemplo n.º 1
0
        public async Task <HttpResponseMessage> CheckVehicle([FromUri] GetNewCarSecondVehicleRequest request)
        {
            _logAppInfo.Info(string.Format("车型报价校验接口请求串:{0}", Request.RequestUri));
            var viewModel = new CheckCarVehicleInfoViewModel();

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

            //_logAppInfo.Info(string.Format("获取车辆出险信息接口返回值:{0}", viewModel.ToJson()));
            return(viewModel.ResponseToJson());
        }
        public async Task <CheckCarVehicleInfoViewModel> CheckVehicle(GetNewCarSecondVehicleRequest request, IEnumerable <KeyValuePair <string, string> > pairs, Uri uri)
        {
            var viewModel = new CheckCarVehicleInfoViewModel();

            #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/CheckVehicle", uri.Host, uri.Port);
            //3,续保请求
            BaseResponse rep = await SimulateGet(strUrl, pairs);

            if (rep.ErrCode == 1)
            {
                viewModel = rep.ErrMsg.FromJson <CheckCarVehicleInfoViewModel>();
            }
            else
            {
                viewModel.BusinessStatus = rep.ErrCode;
                viewModel.StatusMessage  = rep.ErrMsg;
            }
            #endregion
            return(viewModel);
        }
        /// <summary>
        /// 新车查询车型接口第2步
        /// </summary>
        /// <param name="request"></param>
        /// <param name="pairs"></param>
        /// <returns></returns>
        public async Task <GetCarVehicleInfoResponse> GetSecondCarVehicle(GetNewCarSecondVehicleRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            GetCarVehicleInfoResponse response = new GetCarVehicleInfoResponse();
            //校验:1基础校验
            BaseResponse baseResponse = _validateService.Validate(request, pairs);

            if (baseResponse.Status == HttpStatusCode.Forbidden)
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            //微信端逻辑 次级代理
            if (request.ChildAgent > 0)
            {
                request.Agent = request.ChildAgent;
            }
            string xuBaoCacheKey = CommonCacheKeyFactory.CreateKeyWithLicense(request.VehicleNo);
            var    xuBaoKey      = string.Format("{0}-carmodel2-key", xuBaoCacheKey);

            CacheProvider.Remove(xuBaoKey);

            var msgBody = new
            {
                Agent              = request.Agent,
                RegisterDate       = string.IsNullOrWhiteSpace(request.RegisterDate) ? DateTime.Now.Date.ToString("yyyy-MM-dd") : request.RegisterDate,
                VehicleNo          = request.VehicleNo,
                CarVin             = request.CarVin,
                EngineNo           = request.EngineNo,
                VehicleName        = request.VehicleName,
                cityId             = request.CityCode,
                NotifyCacheKey     = xuBaoCacheKey,
                RequestTime        = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                IsCheckVehicleNo   = 0,
                CarType            = request.CarType,
                MotorUsageTypeCode = request.CarUsedType,
                MotorTypeCode      = string.Empty
            };

            //发送续保信息
            //var msgbody = _messageCenter.SendToMessageCenter(msgBody.ToJson(),
            //    ConfigurationManager.AppSettings["MessageCenter"],
            //    ConfigurationManager.AppSettings["BxVechileQueueNewCar"]);
            try
            {
                string strurl             = string.Format("{0}/service/carmodelsstep2record", ConfigurationManager.AppSettings["CenterNewUrl"]);
                string returnServerIpPort = string.Empty;
                string result             = ProxyCenterHttpClient.Post(strurl, msgBody.ToJson(), 60, ref returnServerIpPort);

                var cacheKey = CacheProvider.Get <string>(xuBaoKey);
                if (cacheKey == null)
                {
                    for (int i = 0; i < 60; i++)
                    {
                        cacheKey = CacheProvider.Get <string>(xuBaoKey);
                        if (!string.IsNullOrWhiteSpace(cacheKey))
                        {
                            break;
                        }
                        else
                        {
                            await Task.Delay(TimeSpan.FromSeconds(0.5));
                        }
                    }
                }
                response.Vehicles = new List <BxCarVehicleInfo>();
                if (cacheKey == null)
                {
                    response.BusinessStatus  = -1;//超时
                    response.BusinessMessage = "请求超时";
                }
                else
                {
                    string itemsCache = string.Format("{0}-carmodel2", xuBaoCacheKey);
                    response.BusinessStatus = 1;
                    if (cacheKey == "1")
                    {
                        var temp = CacheProvider.Get <string>(itemsCache);
                        response.Vehicles = temp.FromJson <List <BxCarVehicleInfo> >();
                    }
                    else if (cacheKey == "-10002")
                    {
                        response.BusinessStatus = -10002;
                    }
                    else if (cacheKey == "-10003")
                    {
                        response.BusinessStatus = -10003;
                    }
                    else if (cacheKey == "-10004")
                    {
                        response.BusinessStatus = -10004;
                    }
                }
            }
            catch (Exception ex)
            {
                response        = new GetCarVehicleInfoResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("获取车型请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }
            return(response);
        }