Exemplo n.º 1
0
        public async Task <GetRepeatSubmitResponse> GetRepeatSubmitInfo(GetRepeatSubmitRequest request,
                                                                        IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new GetRepeatSubmitResponse();

            try
            {
                var privilegeResulst = _agentPrivilege.CanUse(request.Agent);
                if (!privilegeResulst.CheckResult)
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }
                if (!_validService.ValidateReqest(pairs, privilegeResulst.Model.SecretKey, request.SecCode))
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }

                //微信端逻辑 次级代理
                if (request.ChildAgent > 0)
                {
                    request.Agent = request.ChildAgent;
                }

                var queryAgent = request.Agent.ToString();
                var userinfo   =
                    _userInfoRepository.Search(
                        x =>
                        x.Agent == queryAgent && x.OpenId == request.CustKey &&
                        x.RenewalCarType == request.RenewalCarType && x.IsTest == 0 && x.LicenseNo == request.LicenseNo).FirstOrDefault();
                if (userinfo == null)
                {
                    response.Status = HttpStatusCode.NoContent;
                    return(response);
                }
                if (userinfo.IsSingleSubmit > 0 && userinfo.QuoteStatus == -1 && userinfo.UpdateTime.GetValueOrDefault().AddMinutes(5) > DateTime.Now)
                {
                    response.Status = HttpStatusCode.Conflict;
                    return(response);
                }

                string baojiaCacheKey =
                    CommonCacheKeyFactory.CreateKeyWithLicenseAndAgentAndCustKey(request.LicenseNo, request.Agent, request.CustKey + request.RenewalCarType);
                var lastinfo = await _getExpireDate.GetDate(baojiaCacheKey);

                var formatInfo = _repeatInfoFormat.FormatRepeatInfo(userinfo.IsSingleSubmit.GetValueOrDefault(), baojiaCacheKey);

                response = RepeatSubmitResponseFactory(lastinfo, formatInfo);
            }
            catch (Exception ex)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                _logError.Info("获取重复投保请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + ",请求对象信息:" + request.ToJson() + ";返回对象信息" + response.ToJson());
            }


            return(response);
        }
Exemplo n.º 2
0
        public async Task <HttpResponseMessage> GetRepeatSubmitDetail([FromUri] GetRepeatSubmitRequest request)
        {
            _logInfo.Info(string.Format("获取重复投保请求串:{0}", Request.RequestUri));
            var viewModel = new GetRepeatSubmitViewModel();

            viewModel.RepeatInfo = new GetRepeatSubmitInfo
            {
                BusinessExpireDate  = string.Empty,
                ForceExpireDate     = string.Empty,
                RepeatSubmitResult  = -1,
                RepeatSubmitMessage = string.Empty
            };

            if (!ModelState.IsValid)
            {
                viewModel.BusinessStatus = -10000;
                var 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());
            }
            var response = await _repeatSubmitService.GetRepeatSubmitInfo(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.Status == HttpStatusCode.NoContent)
            {
                viewModel.BusinessStatus = -10004;
                viewModel.StatusMessage  = "您还未报价";
                return(viewModel.ResponseToJson());
            }
            if (response.Status == HttpStatusCode.Conflict)
            {
                viewModel.BusinessStatus = -10005;
                viewModel.StatusMessage  = "您的报价请求还在处理阶段,请结束后再调用此接口(每次报价结束后,请求一次该接口即可,不需要重复调用)";
                return(viewModel.ResponseToJson());
            }

            viewModel = response.RepeatSubmitConvertToViewModel();
            viewModel.BusinessStatus = 1;
            viewModel.StatusMessage  = "请求成功";

            return(viewModel.ResponseToJson());
        }