public async Task <HttpResponseMessage> GetSpecialAssumpsit([FromUri] GetSpecialAssumpsitRequest request) { _logInfo.Info(string.Format("获取特约检索请求串:{0}", Request.RequestUri)); var viewModel = new GetSpecialAssumpsitViewModel(); viewModel.SpecialContents = new List <SpecialVO>(); try { 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()); } if (!request.LicenseNo.IsValidLicenseno()) { viewModel.BusinessStatus = -10000; viewModel.StatusMessage = "参数校验错误,请检查车牌号"; return(viewModel.ResponseToJson()); } GetSpecialAssumpsitResponse response = await _getSpecialAssumpsitService.GetSpecialAssumpsit(request, Request.GetQueryNameValuePairs()); if (response.Status == HttpStatusCode.BadRequest || response.Status == HttpStatusCode.Forbidden) { viewModel.BusinessStatus = -10001; viewModel.StatusMessage = "参数校验错误,请检查您的校验码"; return(viewModel.ResponseToJson()); } if (response.Status == HttpStatusCode.ExpectationFailed) { viewModel.BusinessStatus = -10003; viewModel.StatusMessage = "服务器发生异常"; return(viewModel.ResponseToJson()); } if (response.SpecialContents == null) { viewModel.BusinessStatus = 0; viewModel.StatusMessage = "无数据"; } else { viewModel.BusinessStatus = 1; viewModel.StatusMessage = "获取成功"; viewModel.SpecialContents = response.SpecialContents; } } catch (Exception ex) { viewModel.BusinessStatus = -100003; viewModel.StatusMessage = "服务发生异常"; _logError.Info("发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + " 请求对象:" + Request.RequestUri); } return(viewModel.ResponseToJson()); }
public async Task <GetSpecialAssumpsitResponse> GetSpecialAssumpsit(GetSpecialAssumpsitRequest request, IEnumerable <KeyValuePair <string, string> > pair) { GetSpecialAssumpsitResponse response = new GetSpecialAssumpsitResponse(); //校验:1基础校验 BaseResponse baseResponse = _validateService.Validate(request, pair); if (baseResponse.Status == HttpStatusCode.Forbidden) { response.Status = HttpStatusCode.Forbidden; return(response); } //校验:2报价基础信息 UserInfoValidateRequest validateRequest = new UserInfoValidateRequest() { LicenseNo = request.LicenseNo, CustKey = request.CustKey, ChildAgent = request.ChildAgent == 0 ? request.Agent : request.ChildAgent, RenewalCarType = request.RenewalCarType }; //校验2 var validateResult = _userInfoValidateService.UserInfoValidate(validateRequest); if (validateResult.Item1.Status == HttpStatusCode.NotAcceptable) { response.Status = HttpStatusCode.NotAcceptable; return(response); } //正式逻辑============= string baojiaCacheKey = CommonCacheKeyFactory.CreateKeyWithLicenseAndAgentAndCustKey(request.LicenseNo, request.Agent, request.CustKey + request.RenewalCarType); //通知中心 var msgBody = new { B_Uid = validateResult.Item2.Id, Source = SourceGroupAlgorithm.GetOldSource(request.Source), NotifyCacheKey = baojiaCacheKey, }; //发送安心核保消息 try { var baojiaKey = string.Format("{0}-GenerateSpecial-key", baojiaCacheKey); CacheProvider.Remove(baojiaKey); var msgbody = _messageCenter.SendToMessageCenter(msgBody.ToJson(), ConfigurationManager.AppSettings["MessageCenter"], ConfigurationManager.AppSettings["bxAnXinTeYue"]); var cacheKey = CacheProvider.Get <string>(baojiaKey); if (cacheKey == null) { for (int i = 0; i < 180; i++) { cacheKey = CacheProvider.Get <string>(baojiaKey); if (!string.IsNullOrWhiteSpace(cacheKey)) { break; } else { await Task.Delay(TimeSpan.FromSeconds(1)); } } } if (cacheKey == "1") { var msgModel = CacheProvider.Get <AXGainFixSpecInfoResponse>(string.Format("{0}-GenerateSpecial", baojiaCacheKey)); List <SpecialVO> SpecialContents = new List <SpecialVO>(); if (msgModel != null) { //取交强模型 if (msgModel.PackageJQVO != null) { if (msgModel.PackageJQVO.FixSpecList != null) { foreach (var item in msgModel.PackageJQVO.FixSpecList) { SpecialContents.Add(new SpecialVO() { CSpecNo = item.cSpecNo, CSysSpecContent = item.cSysSpecContent, Type = 1 }); } } } //取商业模型 if (msgModel.PackageSYVO != null) { if (msgModel.PackageSYVO.FixSpecList != null) { foreach (var item in msgModel.PackageSYVO.FixSpecList) { SpecialContents.Add(new SpecialVO() { CSpecNo = item.cSpecNo, CSysSpecContent = item.cSysSpecContent, Type = 2 }); } } } } response.SpecialContents = SpecialContents; } } catch (MessageException exception) { response.Status = HttpStatusCode.ExpectationFailed; response.ErrMsg = exception.Message; return(response); } return(response); }