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); }