Exemplo n.º 1
0
        public async Task <WaBxSysJyxResponse> GetAccidentList(GetAccidentListRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            WaBxSysJyxResponse response = new WaBxSysJyxResponse();

            //参数校验
            BaseResponse baseResponse = _validateService.Validate(request, pairs);

            if (baseResponse.Status == HttpStatusCode.Forbidden)
            {
                //response.Status = HttpStatusCode.Forbidden;
                response.ErrCode = -1;
                return(response);
            }

            string SpecicalCacheKey = CommonCacheKeyFactory.CreateKeyWithLicense(request.Agent.ToString() + request.CityCode.ToString() + request.Source.ToString());
            var    key = string.Format("{0}-RiskOfdrive-key", SpecicalCacheKey);

            string cacheKey = CacheProvider.Get <string>(key);

            if (cacheKey != null)
            {
                if (cacheKey == "1")
                {
                    string listcachekey = string.Format("{0}-RiskOfdrive", SpecicalCacheKey);
                    response = CacheProvider.Get <WaBxSysJyxResponse>(listcachekey);
                    //response.Status = HttpStatusCode.OK;
                    response.ErrCode = 1;
                    response.ErrMsg  = "获取成功";
                    //response.Key = listcachekey;
                    return(response);
                }
                else
                {
                    CacheProvider.Remove(key);
                }
            }
            object msgBody;

            msgBody = new
            {
                Source         = SourceGroupAlgorithm.GetOldSource(request.Source),
                CityId         = request.CityCode,
                TopAgentId     = request.Agent,
                NotifyCacheKey = SpecicalCacheKey
            };
            _messageCenter.SendToMessageCenter(msgBody.ToJson(), ConfigurationManager.AppSettings["MessageCenter"], ConfigurationManager.AppSettings["JYOption"]);
            for (int i = 0; i < 115; i++)
            {
                cacheKey = CacheProvider.Get <string>(key);
                //step1val = xuBaoKey;
                //step1va2 = cacheKey;
                if (!string.IsNullOrWhiteSpace(cacheKey))
                {
                    if (cacheKey == "0" || cacheKey == "1")
                    {
                        break;
                    }
                }
                else
                {
                    await Task.Delay(TimeSpan.FromSeconds(1));
                }
            }
            if (cacheKey == null)
            {
                //response.Status = HttpStatusCode.Forbidden;
                response.ErrCode = -10003;//缓存异常
                response.ErrMsg  = "请求超时或缓存异常,请重试";
                //response.Key = "";
                return(response);
            }
            else if (cacheKey == "0")
            {
                //response.Status = HttpStatusCode.Forbidden;
                response.ErrCode = 0;
                response.ErrMsg  = "获取特约检索失败";
                //response.Key = "";
                return(response);
            }
            else
            {
                string listcachekey = string.Format("{0}-RiskOfdrive", SpecicalCacheKey);
                response = CacheProvider.Get <WaBxSysJyxResponse>(listcachekey);
                //response.Status = HttpStatusCode.OK;
                response.ErrCode = 1;
                response.ErrMsg  = "获取特约成功";
                //response.Key = listcachekey;
                return(response);
            }
        }
Exemplo n.º 2
0
        public async Task <BaseResponse> PostIndependentSubmit(PostIndependentSubmitRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            GetFloatingInfoResponse response = new GetFloatingInfoResponse();
            //校验:1基础校验
            BaseResponse baseResponse = _validateService.Validate(request, pairs);

            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);
            }
            //插库操作
            try
            {
                bx_userinfo userinfo = validateResult.Item2;
                userinfo.Source = (userinfo.Source.Value | request.Source);

                #region 车主信息
                if (!string.IsNullOrWhiteSpace(request.Mobile))
                {
                    userinfo.Mobile = request.Mobile;
                }

                if (!string.IsNullOrWhiteSpace(request.CarOwnersName))
                {
                    userinfo.LicenseOwner = request.CarOwnersName;
                }
                if (!string.IsNullOrWhiteSpace(request.IdCard))
                {
                    userinfo.IdCard = request.IdCard;
                }

                if (request.OwnerIdCardType >= 0)
                {
                    userinfo.OwnerIdCardType = request.OwnerIdCardType;
                }
                #endregion

                #region 被保险人信息
                if (!string.IsNullOrWhiteSpace(request.InsuredName))
                {
                    userinfo.InsuredName = request.InsuredName.Trim();
                }
                if (!string.IsNullOrWhiteSpace(request.InsuredIdCard))
                {
                    userinfo.InsuredIdCard = request.InsuredIdCard.ToUpper();
                    //if (request.InsuredIdCard.IsValidIdCard())
                    //{
                    //    request.InsuredIdType = 1;
                    //}
                }
                if (!string.IsNullOrWhiteSpace(request.InsuredEmail))
                {
                    userinfo.InsuredEmail = request.InsuredEmail;
                }
                if (!string.IsNullOrWhiteSpace(request.InsuredMobile))
                {
                    userinfo.InsuredMobile = request.InsuredMobile.Trim();
                }
                if (request.InsuredIdType >= 0)
                {
                    userinfo.InsuredIdType = request.InsuredIdType;
                }
                userinfo.InsuredAddress = request.InsuredAddress;
                //userinfo.InsuredCertiStartdate = request.InsuredCertiStartdate;
                //userinfo.InsuredCertiEnddate = request.InsuredCertiEnddate;
                //userinfo.InsuredSex = request.InsuredSex;
                //userinfo.InsuredBirthday = request.InsuredBirthday;
                //userinfo.InsuredIssuer = request.InsuredAuthority;
                //userinfo.InsuredNation = request.InsuredNation;

                #endregion
                #region 投保人信息
                if (!string.IsNullOrWhiteSpace(request.HolderEmail))
                {
                    userinfo.HolderEmail = request.HolderEmail;
                }
                if (!string.IsNullOrWhiteSpace(request.HolderName))
                {
                    userinfo.HolderName = request.HolderName.Trim();
                }
                if (!string.IsNullOrWhiteSpace(request.HolderIdCard))
                {
                    userinfo.HolderIdCard = request.HolderIdCard.ToUpper();
                    //if (request.HolderIdCard.IsValidIdCard())
                    //{
                    //    request.HolderIdType = 1;
                    //}
                }
                if (!string.IsNullOrWhiteSpace(request.HolderMobile))
                {
                    userinfo.HolderMobile = request.HolderMobile.Trim();
                }
                if (request.HolderIdType >= 0)
                {
                    userinfo.HolderIdType = request.HolderIdType;
                }
                userinfo.HolderAddress = request.HolderAddress;
                //userinfo.HolderCertiStartdate = request.HolderCertiStartdate;
                //userinfo.HolderCertiEnddate = request.HolderCertiEnddate;
                //userinfo.HolderSex = request.HolderSex;
                //userinfo.HolderBirthday = request.HolderBirthday;
                //userinfo.HolderIssuer = request.HolderAuthority;
                //userinfo.HolderNation = request.HolderNation;

                #endregion

                _userInfoRepository.Update(userinfo);
                bx_submit_info    submitinfo = _submitInfoRepository.GetSubmitInfo(validateResult.Item2.Id, SourceGroupAlgorithm.GetOldSource(request.Source));
                bx_anxin_delivery oldData    = _anxindeliveryRepository.Search(l => l.b_uid == validateResult.Item2.Id && l.status == 1).FirstOrDefault();
                if (oldData != null && oldData.id != 0)
                {
                    oldData.status     = 0;
                    oldData.updatetime = DateTime.Now;
                    _anxindeliveryRepository.Update(oldData);
                }
                //先删除,再插入
                bx_anxin_delivery model = new bx_anxin_delivery()
                {
                    b_uid         = validateResult.Item2.Id,
                    signincnm     = request.SignerName,                             //签收人姓名
                    signintel     = request.SignerTel,                              //签收人手机号
                    sendorderaddr = request.SingerAddress,                          //签收人地址
                    zipcde        = request.ZipCode,                                //邮政编码
                    sy_plytyp     = request.BizPolicyType,                          //商业保单形式
                    sy_invtype    = request.BizElcInvoice,                          //商业电子发票形式
                    sy_appno      = submitinfo != null ? submitinfo.biz_tno : "",   //request.BizNo,//商业投保单号
                    jq_invtype    = request.ForceElcInvoice,                        //交强电子发票类型
                    jq_plytyp     = request.ForcePolicyType,                        //交强投保单形式
                    jq_appno      = submitinfo != null ? submitinfo.force_tno : "", //request.ForceNO,//交强投保单号
                    appvalidateno = request.ProductNo,                              //产品代码
                    status        = 1,                                              //删除状态标示 0标识删除
                    createtime    = DateTime.Now,
                    updatetime    = DateTime.Now
                };
                _anxindeliveryRepository.Insert(model);
            }
            catch (Exception ex)
            { }
            //实现
            //清理缓存
            string baojiaCacheKey = string.Empty;
            try
            {
                PostSubmitInfoRequest newrequest = new PostSubmitInfoRequest()
                {
                    LicenseNo      = request.LicenseNo,
                    ChildAgent     = request.ChildAgent == 0 ? request.Agent : request.ChildAgent,
                    Agent          = request.Agent,
                    RenewalCarType = request.RenewalCarType,
                    CustKey        = request.CustKey,
                    Source         = request.Source
                };
                baojiaCacheKey = _removeHeBaoKey.RemoveHeBao(newrequest);
            }
            catch (RedisOperateException exception)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                response.ErrMsg = exception.Message;
                return(response);
            }
            //通知中心
            var msgBody = new
            {
                BUid     = validateResult.Item2.Id,
                Source   = SourceGroupAlgorithm.GetOldSource(request.Source),
                RedisKey = baojiaCacheKey,
                //20180509新增
                PayFinishUrl = request.PayFinishUrl,
                PayCancelUrl = request.PayCancelUrl,
                BgRetUrl     = string.IsNullOrWhiteSpace(request.BgRetUrl) ? "http://buc.91bihu.com/api/PayOut/GetAXPayBack" : request.BgRetUrl,
                PayErrorUrl  = request.PayErrorUrl,
                Attach       = request.Attach
            };
            //发送安心核保消息
            try
            {
                var msgbody = _messageCenter.SendToMessageCenter(msgBody.ToJson(),
                                                                 ConfigurationManager.AppSettings["MessageCenter"],
                                                                 ConfigurationManager.AppSettings["BxAnXinHeBao"]);
            }
            catch (MessageException exception)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                response.ErrMsg = exception.Message;
                return(response);
            }

            return(response);
        }
        public BaseViewModel Validate(UploadMultipleImgRequest request)
        {
            BaseViewModel viewModel = new BaseViewModel();

            #region 参数验证
            bx_userinfo userinfo = new bx_userinfo();
            if (request.BuId > 0)
            {
                //userinfo是否有值,buid是否正确
                userinfo = _userInfoRepository.FindByBuid(request.BuId);
            }
            //modifybygpj20181205修改,不开放前端传buid了
            else
            {
                //如果前端传子集代理Id,则用子集代理Id来查数据
                request.Agent = request.ChildAgent > 0 ? request.ChildAgent : request.Agent;
                //参数有效性校验
                if (string.IsNullOrWhiteSpace(request.LicenseNo) || string.IsNullOrWhiteSpace(request.CustKey) || request.Agent < 1)
                {
                    return(BaseViewModel.GetBaseViewModel(-10000, "车牌号、CustKey、Agent不允许为空"));
                }
                //根据车牌、代理、custkey来取数据库userinfo
                userinfo = _userInfoRepository.FindByOpenIdAndLicense(request.CustKey, request.LicenseNo, request.Agent.ToString(), request.RenewalCarType);
            }
            //如果userinfo没记录,直接提示错误参数
            if (userinfo == null || userinfo.Id == 0)
            {
                return(BaseViewModel.GetBaseViewModel(-10000, "参数错误,无法拿到请求的车辆信息"));
            }
            //给buid赋值
            if (request.BuId == 0)
            {
                request.BuId = userinfo.Id;
            }
            int source = SourceGroupAlgorithm.GetOldSource(request.Source);
            //submitinfo是否有值
            bx_submit_info submitInfo = _submitInfoRepository.GetSubmitInfo(request.BuId, source);
            if (submitInfo == null)
            {
                return(BaseViewModel.GetBaseViewModel(-10000, "未取到核保信息,请稍后再试"));
            }
            //是否需要上传图片
            if (request.Source == 2)
            {
                if (string.IsNullOrEmpty(submitInfo.documentGroupId))
                {
                    return(BaseViewModel.GetBaseViewModel(-10000, "请确认是否需要上传类型范围内的证件资料"));
                }
            }
            else
            {
                if (string.IsNullOrEmpty(submitInfo.biz_tno) && string.IsNullOrEmpty(submitInfo.force_tno))
                {
                    return(BaseViewModel.GetBaseViewModel(-10000, "请确认是否需要上传类型范围内的证件资料"));
                }
            }
            //上传的图片最少1张
            var dic = request.ListBaseContect;//JsonConvert.DeserializeObject<Dictionary<int, string>>(request.ListBaseContect);
            if (dic.Count == 0)
            {
                viewModel.BusinessStatus = -10000;
                viewModel.StatusMessage  = "输入参数错误,ListBaseContect为空";
                return(viewModel);
            }
            //不能超过11张上传图片//以前是8张的限制
            else if (dic.Count > 11)
            {
                viewModel.BusinessStatus = -10000;
                viewModel.StatusMessage  = "最多11张图片";
                return(viewModel);
            }
            #endregion
            //校验上传次数
            var timesValidate = _checkUploadImgTimes.ValidateTimes(request);
            if (timesValidate.BusinessStatus == -10013)
            {
                viewModel.BusinessStatus = -10013;
                viewModel.StatusMessage  = timesValidate.StatusMessage;
                return(viewModel);
            }
            return(BaseViewModel.GetBaseViewModel(1, "校验成功"));
        }
        public HttpResponseMessage GetReInfoDetail([FromUri] GetReInfoDetailRequest request)
        {
            _logAppInfo.Info(string.Format("获取续保详情接口请求串:{0}", Request.RequestUri));
            var model = new AppReInfoViewModel();

            if (!ModelState.IsValid)
            {
                model.BusinessStatus = -10000;
                string msg = ModelState.Values.Where(a => a.Errors.Count == 1).Aggregate(string.Empty, (current, a) => current + (a.Errors[0].ErrorMessage + ";   "));
                model.StatusMessage = "输入参数错误," + msg;
                return(model.ResponseToJson());
            }
            if (!request.LicenseNo.IsValidLicenseno())
            {
                model.BusinessStatus = -10000;
                model.StatusMessage  = "参数校验错误,请检查车牌号";
                return(model.ResponseToJson());
            }
            var response = _bjdService.GetReInfoDetail(request, Request.GetQueryNameValuePairs());

            //_logAppInfo.Info(string.Format("获取续保详情接口返回结果:{0}", response.ToJson()));
            if (response.Status == HttpStatusCode.BadRequest || response.Status == HttpStatusCode.Forbidden)
            {
                model.BusinessStatus = -10001;
                model.StatusMessage  = "参数校验错误,请检查您的校验码";
                return(model.ResponseToJson());
            }
            if (response.Status == HttpStatusCode.ExpectationFailed)
            {
                model.BusinessStatus = -10003;
                model.StatusMessage  = "服务发生异常";
                return(model.ResponseToJson());
            }

            if (response.Status == HttpStatusCode.OK)
            {
                model.BusinessStatus = response.BusinessStatus == 8 ? 1 : response.BusinessStatus;
                model.StatusMessage  = response.BusinessMessage;
                model.UserInfo       = response.UserInfo.ConvertToViewModel(response.SaveQuote, response.CarInfo,
                                                                            response.LastInfo);
                model.SaveQuote = response.SaveQuote.ConvetToViewModel();
                if (model.SaveQuote != null)
                {
                    model.SaveQuote.Source = SourceGroupAlgorithm.GetNewSource((int)model.SaveQuote.Source);
                }
                model.WorkOrder = response.WorkOrder.ConverToViewModel();
                if (model.WorkOrder != null)
                {
                    if (model.WorkOrder.IntentionCompany.HasValue)
                    {
                        model.WorkOrder.IntentionCompany = SourceGroupAlgorithm.GetNewSource((int)model.WorkOrder.IntentionCompany.Value);
                    }
                }
                model.DetailList = response.DetailList.ConverToViewModel();
                //model.DetailList里的意向公司有问题
                model.IsDistrib   = response.IsDistrib;
                model.Buid        = response.Buid;
                model.Agent       = response.Agent;
                model.AgentName   = response.AgentName;
                model.SaAgent     = response.SaAgent;
                model.SaAgentName = response.SaAgentName;

                //当获取续保信息失败(包括状态是3),将去年source制为-1,以免与 平安的0值混淆
                if (response.BusinessStatus == 1)
                {
                    return(model.ResponseToJson());
                }
                if (model.SaveQuote != null)
                {
                    model.SaveQuote.Source = -1;
                }
            }
            else
            {
                model.BusinessStatus = -10002;
                model.StatusMessage  = "没有续保信息";
            }
            return(model.ResponseToJson());
        }
Exemplo n.º 5
0
        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);
        }
        public MyBaoJiaViewModel SetPrecisePriceItem(MyBaoJiaViewModel my, bx_userinfo userinfo, GetMyBjdDetailRequest request, List <bx_quoteresult_carinfo> quoteresultCarinfo, int reqseatcount)
        {
            var sourceList = _setPrecisePriceItem.FindSource(userinfo, request);
            //获取图片bx_picture
            List <bx_picture> picList = _pictureRepository.GetAllList(o => o.b_uid == userinfo.Id);
            //报价单资源对象
            bx_savequote          sq      = _saveQuoteRepository.GetSavequoteByBuid(userinfo.Id);
            List <bx_quoteresult> qrList  = _quoteResultRepository.GetQuoteResultList(userinfo.Id);
            List <bx_submit_info> siList  = _submitInfoRepository.GetSubmitInfoList(userinfo.Id);
            List <bx_ywxdetail>   ywxList = _ywxdetailRepository.GetList(userinfo.Id);
            //渠道列表
            List <AgentConfigNameModel> agentChannelList = new List <AgentConfigNameModel>();

            if (siList.Any())
            {
                agentChannelList = _agentConfigRepository.FindListById(siList.Select(l => l.channel_id).Join(","));
            }
            //图片url
            List <IsUploadImg> isUploadImg = new List <IsUploadImg>();
            //报价信息模型,包括险种和报价
            List <MyPrecisePriceItemViewModel> listquoteTotal = new List <MyPrecisePriceItemViewModel>();

            var hebaodianweis = _hebaoDianweiRepository.FindList(userinfo.Id, SourceGroupAlgorithm.GetOldSources(sourceList.ToArray()));

            if (sourceList.Any() && userinfo.QuoteStatus > -1)
            {
                foreach (int itk in sourceList)
                {
                    //20160905修改source1248=>0123,传入的新数据转换
                    var oit    = SourceGroupAlgorithm.GetOldSource(itk);//获取到旧的source值
                    var submit = siList.FirstOrDefault(i => i.source == oit);
                    var qr     = qrList.FirstOrDefault(i => i.Source == oit);
                    var jy     = ywxList.Where(i => i.source == oit).ToList();
                    if (oit == 3)
                    {
                        if (!string.IsNullOrEmpty(request.NewRate) && qr != null)
                        {
                            qr.NewRate = decimal.Parse(request.NewRate);
                            _quoteResultRepository.Update(qr);
                        }
                        else if (string.IsNullOrEmpty(request.NewRate) && qr != null && qr.NewRate != 0 && qr.NewRate != null)
                        {
                            request.NewRate = qr.NewRate.ToString();
                        }
                        if (!string.IsNullOrEmpty(request.NewRate))
                        {
                            my.NewRate = double.Parse(request.NewRate).ToString("#0.00000");
                        }
                    }
                    var model = ConvertToViewModelNew(oit, sq,
                                                      qr, submit, userinfo.QuoteStatus.Value, agentChannelList, userinfo.CarVIN, jy, request.NewRate);

                    var hebaodianwei = hebaodianweis.FirstOrDefault(heb => heb.source == oit);
                    if (hebaodianwei != null && my.IsShowCalc == 0)
                    {
                        model.BizSysRate = hebaodianwei.system_biz_rate.HasValue
                            ? Convert.ToDecimal(hebaodianwei.system_biz_rate.Value)
                            : 0;
                        model.ForceSysRate = hebaodianwei.system_force_rate.HasValue
                            ? Convert.ToDecimal(hebaodianwei.system_force_rate.Value)
                            : 0;
                        //优惠费率
                        model.BenefitRate = hebaodianwei.agent_id == hebaodianwei.parent_agent_id
                            ? Convert.ToDecimal(hebaodianwei.zhike_biz_rate.Value)
                            : Convert.ToDecimal(hebaodianwei.agent_biz_rate.Value);
                    }
                    var qcinfo = quoteresultCarinfo.FirstOrDefault(l => l.source == oit);
                    if (qcinfo != null)
                    {
                        model.CarUsedType = qcinfo.car_used_type ?? 0;
                        model.SeatCount   = qcinfo.seat_count ?? 0;//座位数赋值
                    }
                    if (model.SeatCount == 0)
                    {
                        //如果报价结果没拿到座位数,将请求的赋值进去
                        model.SeatCount = reqseatcount;
                    }
                    model.JingSuanKouJing = submit != null ? (submit.RbJSKJ ?? "") : "";
                    listquoteTotal.Add(model);

                    //拼装上传的图片模型
                    if (picList.Any())
                    {
                        bx_picture picture = picList.FirstOrDefault(l => l.source == oit);
                        if (picture != null && picture.id != 0)
                        {
                            IsUploadImg newmodel = new IsUploadImg()
                            {
                                IsUpload = 1,
                                Source   = itk
                            };
                            isUploadImg.Add(newmodel);
                        }
                    }
                }
                my.PrecisePriceItem = listquoteTotal;
                my.IsUploadImg      = isUploadImg;
            }
            else
            {
                my.PrecisePriceItem = new List <MyPrecisePriceItemViewModel>();
            }
            return(my);
        }
Exemplo n.º 7
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);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public bool BackTempDemoShow(PostPrecisePriceRequest request, out string tempshowKey)
        {
            tempshowKey = string.Empty;
            //1是否吉利代理
            if (!_proxyAgent.Equals(request.Agent.ToString()))
            {
                return(false);
            }
            if (!_proxyLicense.Contains(request.LicenseNo))
            {
                return(false);
            }
            //2是否开启配置;1开启0关闭,控制权限请联系中心
            string isOpen = _getCenterValueService.GetValue("独立KV", "", "TempDemoShow");

            if (isOpen.Equals("0"))
            {
                logError.Info(string.Format("请求{0},{1},{2},中心开关开启", request.CustKey, request.LicenseNo, request.CarVin));
                return(false);
            }
            //3是否存在历史报价
            PostPrecisePriceRequest req = new PostPrecisePriceRequest();

            req = request;
            //...
            req.SecCode = null;
            //...
            req.InsuredMobile         = null;
            req.InsuredAddress        = null;
            req.InsuredEmail          = null;
            req.InsuredCertiStartdate = null;
            req.InsuredCertiEnddate   = null;
            //...
            req.HolderMobile         = null;
            req.HolderAddress        = null;
            req.HolderEmail          = null;
            req.HolderCertiStartdate = null;
            req.HolderCertiEnddate   = null;
            //...
            req.InsuredSex       = 0;
            req.HolderSex        = 0;
            req.OwnerSex         = 0;
            req.InsuredAuthority = null;
            req.HolderAuthority  = null;
            req.OwnerAuthority   = null;
            req.InsuredNation    = null;
            req.HolderNation     = null;
            req.OwnerNation      = null;
            req.InsuredBirthday  = null;
            req.HolderBirthday   = null;
            req.OwnerBirthday    = null;
            //...
            req.BhToken = null;
            //...
            req.Mobile                = null;
            req.Email                 = null;
            req.MultiChannels         = null;
            req.IsOrderChangeRelation = 0;

            tempshowKey = string.Format("{0}_{1}_{2}", request.Agent, request.CustKey.ToUpper(), req.ToJson().GetMd5());//顶级+custkey+seccode
            logError.Info(string.Format("缓存md5前的串:{0}", req.ToJson()));
            string cacheValue = CacheProvider.Get <string>(tempshowKey);

            if (string.IsNullOrWhiteSpace(cacheValue))
            {
                logError.Info(string.Format("请求{0},{1},{2},不存在历史报价", request.CustKey, request.LicenseNo, request.CarVin));
                //如果中间缓存报过价,继续往下走;如果没报过价,直接返回false
                return(false);
            }
            #region 4历史报价是否报价成功&&核保成功
            //4历史报价是否报价成功&&核保成功
            if (req.ChildAgent > 0)
            {
                req.Agent = req.ChildAgent;
            }
            //报价key
            string baojiaCacheKey =
                CommonCacheKeyFactory.CreateKeyWithLicenseAndAgentAndCustKey(request.LicenseNo, req.Agent, request.CustKey + request.RenewalCarType);
            List <int> oldquote = SourceGroupAlgorithm.ParseOldSource(request.QuoteGroup);
            if (!oldquote.Any())
            {
                //如果报价没值,直接返回false。<不过该情况不存在,quotegroup需要大于0>
                return(false);
            }
            foreach (var item in oldquote)
            {
                //取不同的保司,看缓存key是否都存在
                var baojiaKey        = string.Format("{0}-{1}-bj-{2}", baojiaCacheKey, item, "key");
                var cachebaojiavalue = CacheProvider.Get <string>(baojiaKey);
                if (string.IsNullOrWhiteSpace(cachebaojiavalue))
                {
                    cachebaojiavalue = "0";
                }
                if (!cachebaojiavalue.Equals("1"))
                {
                    logError.Info(string.Format("请求{0},{1},{2},报价{3},历史报价{4}失败", request.CustKey, request.LicenseNo, request.CarVin, request.QuoteGroup, item));
                    return(false);
                }
            }
            List <int> oldsubmit = SourceGroupAlgorithm.ParseOldSource(request.SubmitGroup);
            if (!oldsubmit.Any())
            {
                //如果核保没值,直接返回false
                return(false);
            }
            foreach (var item in oldquote)
            {
                //取不同的保司,看缓存key是否都存在
                var baojiaKey       = string.Format("{0}-{1}-hb-{2}", baojiaCacheKey, item, "key");
                var cachehebaovalue = CacheProvider.Get <string>(baojiaKey);
                if (string.IsNullOrWhiteSpace(cachehebaovalue))
                {
                    cachehebaovalue = "0";
                }
                if (!cachehebaovalue.Equals("1"))
                {
                    logError.Info(string.Format("请求{0},{1},{2},核保{3},历史核保{4}失败", request.CustKey, request.LicenseNo, request.CarVin, request.SubmitGroup, item));
                    return(false);
                }
            }
            #endregion
            //5如果成功,则保存seccode
            //6以上均成立返回true
            return(true);
        }
        public BaseViewModel CheckInsurance(PostPrecisePriceRequest request)
        {
            BaseViewModel viewModel = new BaseViewModel();

            #region 短时起保业务
            if (!string.IsNullOrWhiteSpace(request.BizShortEndDate))
            {
                DateTime bizenddate = request.BizShortEndDate.UnixTimeToDateTime();
                if (bizenddate > DateTime.Now.AddYears(1) || bizenddate < DateTime.Now.AddDays(1))
                {
                    viewModel.StatusMessage = "输入参数错误,如果有商业险短时起保业务,请确保商业险截止日期在明天到一年后的今天范围之内";
                    return(FailedViewModel(viewModel, -10000));
                }
            }
            #endregion
            #region 实时起保的时间需要大于当前时间1小时,
            if (!string.IsNullOrWhiteSpace(request.BizTimeStamp) && request.ForceTax != 2)
            {//!=2是单交强
                if (DateTime.Parse(request.BizTimeStamp.UnixTimeToDateTime().ToString("yyyy-MM-dd HH") + ":00:00") < DateTime.Now.AddMinutes(60))
                {
                    viewModel.StatusMessage = "输入参数错误,如果选择实时起保,商业起保时间需晚于系统时间60分钟";
                    return(FailedViewModel(viewModel, -10000));
                }
            }

            if (!string.IsNullOrWhiteSpace(request.ForceTimeStamp) && request.ForceTax != 0)
            {//!=0是单商业
                if (DateTime.Parse(request.ForceTimeStamp.UnixTimeToDateTime().ToString("yyyy-MM-dd HH") + ":00:00") < DateTime.Now.AddMinutes(60))
                {
                    viewModel.StatusMessage = "输入参数错误,如果选择实时起保,交强起保时间需晚于系统时间60分钟";
                    return(FailedViewModel(viewModel, -10000));
                }
            }
            #endregion

            #region 折扣价格
            if (request.NegotiatePrice > 0)
            {
                if (string.IsNullOrWhiteSpace(request.BizStartDate) && string.IsNullOrWhiteSpace(request.BizTimeStamp))
                {
                    viewModel.StatusMessage = "输入参数错误,如果有浮动价格,请完善商业险起保日期、初登日期和购置价格(接口6获得的价格)";
                    return(FailedViewModel(viewModel, -10000));
                }
                if (string.IsNullOrWhiteSpace(request.RegisterDate))
                {
                    viewModel.StatusMessage = "输入参数错误,如果有浮动价格,请完善商业险起保日期、初登日期和购置价格(接口6获得的价格)";
                    return(FailedViewModel(viewModel, -10000));
                }
                if (request.PurchasePrice <= 0 && request.PurchasePrice > 7000000)
                {
                    viewModel.StatusMessage = "输入参数错误,如果有浮动价格,请完善商业险起保日期、初登日期和购置价格(接口6获得的价格)";
                    return(FailedViewModel(viewModel, -10000));
                }
                string bizdate = string.Empty;
                //时间戳支持
                if (!string.IsNullOrWhiteSpace(request.BizTimeStamp))
                {
                    bizdate = request.BizTimeStamp.UnixTimeToDateTime().ToString("yyyy-MM-dd");
                }
                else if (!string.IsNullOrWhiteSpace(request.BizStartDate))
                {
                    bizdate = request.BizStartDate;
                }
                var ticks = DateTime.Parse(bizdate).Ticks - DateTime.Parse(request.RegisterDate).Ticks;
                if (ticks < 0)
                {
                    viewModel.StatusMessage = "输入参数错误,请确定您的商业险起保日期和初等日期的先后关系";
                    return(FailedViewModel(viewModel, -10000));
                }
                //DepreciationPriceViewModel model = await GetPrice(request.BizTimeStamp, request.RegisterDate, request.PurchasePrice,request.CarType);
                //if (model.BusinessStatus == 1)
                //{
                //    if (request.NegotiatePrice < model.Item.DownPrice || request.NegotiatePrice > model.Item.UpPrice)
                //    {
                //        viewModel.StatusMessage = "请检查您的协商价格,该值应该在"+model.Item.DownPrice+"~"+model.Item.UpPrice+"范围内";
                //        return viewModel;
                //    }
                //}
                //else
                //{
                //    viewModel.StatusMessage = "调用保险中心折扣价格出现异常";
                //    return viewModel;
                //}
            }
            #endregion
            #region //单商业或者 双险的时候 ,商业险必须上
            if (request.ForceTax == 0 || request.ForceTax == 1)
            {
                if (request.CheSun == 0 && request.SanZhe == 0 && request.DaoQiang == 0 && request.SiJi == 0 && request.ChengKe == 0)
                {
                    var s = string.Empty;
                    if (request.ForceTax == 0)
                    {
                        s = "您选择的是单商业,请选择相关的商业险险种组合去报价";
                    }
                    if (request.ForceTax == 1)
                    {
                        s = "您选择的是交强+商业险,请选择相关的商业险险种组合去报价";
                    }
                    viewModel.StatusMessage = "输入参数错误," + s;
                    return(FailedViewModel(viewModel, -10000));
                }
            }
            #endregion
            //三责节假日险特殊判断,只有私家车和上三者的才能报
            //if (!(request.SanZhe > 0 && request.CarUsedType == 1))
            //{
            //    if (request.SanZheJieJiaRi > 0)
            //    {
            //        viewModel.StatusMessage = "输入参数错误,只有家庭自用车选择了第三者责任险,才可以选择三责险附加法定节假日限额翻倍险";
            //        return FailedViewModel(viewModel, -10000);
            //    }
            //}
            #region 修理期间费用补偿险
            if ((request.FybcDays < 0 || request.FybcDays > 90) || (request.Fybc < 0 || request.Fybc > 300))
            {
                viewModel.StatusMessage = "输入参数错误," + "修理期间费用补偿险,费用只能是 100,200,300,天数必须在(1-90)范围内";
                return(FailedViewModel(viewModel, -10000));
            }

            if ((request.Fybc > 0 && request.FybcDays <= 0) || (request.Fybc <= 0 && request.FybcDays > 0))
            {
                viewModel.StatusMessage = "输入参数错误," + "修理期间费用补偿险,费用和金额都必须大于0";
                return(FailedViewModel(viewModel, -10000));
            }
            if (request.Fybc > 0)
            {
                List <double> rge = new List <double>()
                {
                    100, 200, 300
                };
                if (!rge.Contains(request.Fybc))
                {
                    viewModel.StatusMessage = "输入参数错误," + "修理期间费用补偿险,费用只能是 100,200,300";
                    return(FailedViewModel(viewModel, -10000));
                }
            }
            #endregion
            #region 新增设备校验
            if (request.SheBeiSunshi == 1)
            {
                var shebeimsg = _checkShebei.CheckRequestShebei(request);
                if (!string.IsNullOrWhiteSpace(shebeimsg))
                {
                    viewModel.StatusMessage = shebeimsg;
                    return(FailedViewModel(viewModel, -10000));
                }
            }
            #endregion
            #region 其他一般险种校验
            var checkMsg = _checkXianZhong.CheckRequestXianZhong(request);
            if (!string.IsNullOrWhiteSpace(checkMsg))
            {
                string msg = checkMsg;
                viewModel.StatusMessage = "输入参数错误," + msg;
                //靠,不知道这里谁改成-10001的,导致校验直接跳过去报价了。
                return(FailedViewModel(viewModel, -10000));
            }
            #endregion

            //特约险判断
            if (!string.IsNullOrWhiteSpace(request.SpecialOption))
            {
                List <long>             sources           = SourceGroupAlgorithm.ParseSource(request.QuoteGroup);
                List <bx_specialoption> specialOptionList = new List <bx_specialoption>();
                List <SpecialOption>    requestList       = request.SpecialOption.FromJson <List <SpecialOption> >();
                foreach (var item in requestList)
                {
                    if (!sources.Contains(item.Source))
                    {
                        viewModel.StatusMessage = "输入参数错误,有部分特约不属于所指定的报价公司";
                        return(FailedViewModel(viewModel, -10000));
                    }
                }
            }
            return(new BaseViewModel());
        }
Exemplo n.º 10
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 static void QuoteAdd(PostPrecisePriceRequest request, long buid, int publictype, IQuoteReqCarinfoRepository repository)
        {
            bx_quotereq_carinfo newquotereq = new bx_quotereq_carinfo
            {
                is_loans      = request.IsLoans,
                b_uid         = buid,
                car_type      = request.CarType,
                car_used_type = request.CarUsedType,
                seat_count    = request.SeatCount,
                is_newcar     = request.IsNewCar,
                car_ton_count = request.TonCount,
                create_time   = DateTime.Now,
                update_time   = DateTime.Now
            };

            //经办人、送修码、归属人等设置,重写source值
            //if (!string.IsNullOrWhiteSpace(request.ConfigCode))
            //{
            //    //将用户传的configcode的source改为旧值。
            //    var configcodemodel = request.ConfigCode.FromJson<Dictionary<string, Dictionary<string, string>>>();
            //    var newconfigcodemodel = new Dictionary<string, Dictionary<string, string>>();
            //    foreach (var item in configcodemodel)
            //    {
            //        newconfigcodemodel.Add(SourceGroupAlgorithm.GetOldSource(long.Parse(item.Key)).ToString(), item.Value);
            //    }
            //    request.ConfigCode = newconfigcodemodel.ToJson();
            //}
            newquotereq.account_relation = request.ConfigCode;

            //浮动价格
            if (request.NegotiatePrice >= 0)
            {
                newquotereq.co_real_value = request.NegotiatePrice;
            }
            else
            {
                newquotereq.co_real_value = 0;
            }
            //车型选择source
            if (request.VehicleSource > 0)
            {
                newquotereq.moldcode_company = request.VehicleSource;
            }
            //过户车日期逻辑
            if (!string.IsNullOrWhiteSpace(request.TransferDate))
            {
                newquotereq.transfer_date = DateTime.Parse(request.TransferDate);
            }
            else
            {
                newquotereq.transfer_date = null;
            }
            if (!string.IsNullOrWhiteSpace(request.BizStartDate))
            {
                newquotereq.biz_start_date = DateTime.Parse(request.BizStartDate);
            }
            else
            {
                newquotereq.biz_start_date = null;
            }
            if (!string.IsNullOrWhiteSpace(request.ForceStartDate))
            {
                newquotereq.force_start_date = DateTime.Parse(request.ForceStartDate);
            }
            else
            {
                newquotereq.force_start_date = null;
            }
            //精友编码
            if (!string.IsNullOrWhiteSpace(request.AutoMoldCode))
            {
                newquotereq.auto_model_code        = request.AutoMoldCode.Trim();
                newquotereq.auto_model_code_source = 2;
            }
            else
            {
                //20181119,解决续保车补充到其他保司的精友码,中心查到carmold的车型信息跟平安保司不匹配
                //如果是平安,则把数据库的精友码删掉
                if (request.QuoteGroup == 2)
                {
                    newquotereq.auto_model_code        = null;
                    newquotereq.auto_model_code_source = null;
                }
            }
            if (request.AutoMoldCodeSource > 0)
            {
                newquotereq.auto_model_code_source = request.AutoMoldCodeSource;
            }
            //平安备注
            if (!string.IsNullOrWhiteSpace(request.Remark))
            {
                newquotereq.pa_remark = request.Remark;
            }
            else
            {
                newquotereq.pa_remark = string.Empty;
            }
            //时间戳支持
            if (!string.IsNullOrWhiteSpace(request.BizTimeStamp))
            {
                newquotereq.biz_start_date =
                    DateTime.Parse(request.BizTimeStamp.UnixTimeToDateTime().ToString("yyyy-MM-dd HH") +
                                   ":00:00");
            }
            //else
            //{
            //    newquotereq.biz_start_date = null;
            //}
            if (!string.IsNullOrWhiteSpace(request.ForceTimeStamp))
            {
                newquotereq.force_start_date =
                    DateTime.Parse(request.ForceTimeStamp.UnixTimeToDateTime().ToString("yyyy-MM-dd HH") +
                                   ":00:00");
            }
            //else
            //{
            //    newquotereq.force_start_date = null;
            //}
            //商业险短时起保
            if (!string.IsNullOrWhiteSpace(request.BizShortEndDate))
            {
                newquotereq.biz_end_date =
                    DateTime.Parse(request.BizShortEndDate.UnixTimeToDateTime().ToString("yyyy-MM-dd HH") +
                                   ":00:00");
                newquotereq.IsShortQuote = 1;
            }
            else
            {
                newquotereq.biz_end_date = null;
                newquotereq.IsShortQuote = 0;
            }
            //if (request.IsPublic > 0)
            //{
            //    newquotereq.is_public = request.IsPublic;
            //}
            if (request.CarUsedType == 6 || request.CarUsedType == 7 || request.CarUsedType == 20)
            {
            }
            else
            {
                if (publictype > 0)
                {
                    newquotereq.is_public = publictype;
                }
            }
            if (request.ClauseType > 0)
            {
                newquotereq.clause_type = request.ClauseType;
            }
            if (request.FuelType > 0)
            {
                newquotereq.fuel_type = request.FuelType;
            }
            if (request.ProofType > 0)
            {
                newquotereq.proof_type = request.ProofType;
            }
            if (request.RunMiles > 0)
            {
                newquotereq.run_miles = request.RunMiles;
            }
            if (request.RateFactor4 > 0)
            {
                newquotereq.special_rate = request.RateFactor4;
            }
            if (request.LicenseColor > 0)
            {
                newquotereq.license_color = request.LicenseColor;
            }
            if (request.SeatCount > 0)
            {
                newquotereq.seat_count = request.SeatCount;
            }
            if (request.ExhaustScale > 0)
            {
                newquotereq.exhaust_scale = request.ExhaustScale;
            }
            if (request.PurchasePrice > 0)
            {
                newquotereq.PriceT = request.PurchasePrice;
            }
            newquotereq.drivlicense_cartype_name  = request.DriveLicenseTypeName;
            newquotereq.drivlicense_cartype_value = request.DriveLicenseTypeValue;
            if (!string.IsNullOrWhiteSpace(request.OwnerOrg))
            {
                newquotereq.ownerOrg = request.OwnerOrg;
            }
            if (!string.IsNullOrWhiteSpace(request.PolicyOrg))
            {
                newquotereq.policyOrg = request.PolicyOrg;
            }
            if (!string.IsNullOrWhiteSpace(request.RenBaoRateSplit))
            {
                newquotereq.renBaoRateSplit = request.RenBaoRateSplit; //.ToJson();
            }
            //特殊折扣申请
            if (request.SpecialDiscount > 0)
            {
                newquotereq.special_discount_application = request.SpecialDiscount;
            }
            //是否修改座位数
            if (request.SeatUpdated != -1)
            {
                newquotereq.seatflag = request.SeatUpdated;
            }
            //太平洋实际折扣系数 20180725by gpj
            newquotereq.ActualDiscounts = request.ActualDiscounts;
            newquotereq.VehicleAlias    = request.VehicleAlias;
            newquotereq.VehicleYear     = request.VehicleYear;

            if (string.IsNullOrWhiteSpace(request.DiscountJson))
            {
                newquotereq.TrCausesWhy           = "";
                newquotereq.SubmitRate            = 0;
                newquotereq.ChannelRate           = 0;
                newquotereq.actualdiscounts_ratio = "";
            }
            else
            {
                //前端传折扣json进来
                List <DiscountViewModel> dclist = new List <DiscountViewModel>();
                try
                {
                    //将折扣json转成对象
                    dclist = request.DiscountJson.FromJson <List <DiscountViewModel> >();
                }
                catch (Exception ex)
                {
                }
                if (dclist.Any())
                {
                    //拼接actualdiscounts_ratio的数组
                    Dictionary <int, decimal> dictionary = new Dictionary <int, decimal>();
                    foreach (var dc in dclist)
                    {
                        if (dc.Source == 1)
                        {//兼容之前逻辑,把太平洋单独字段存ActualDiscounts中
                            newquotereq.ActualDiscounts = dc.AD;
                        }
                        if (dc.Source == 2)
                        {//平安单独保存3个字段
                            newquotereq.TrCausesWhy = dc.TRCR;
                            newquotereq.SubmitRate  = dc.SR;
                            newquotereq.ChannelRate = dc.CR;
                        }
                        //其他折扣率直接存json
                        dictionary.Add(SourceGroupAlgorithm.GetOldSource(dc.Source), dc.AD);
                    }
                    //只有当折扣率有值的时候才保存进来//不过此处肯定有值,除非参数有问题
                    if (dictionary.Any())
                    {
                        newquotereq.actualdiscounts_ratio = dictionary.ToJson();
                    }
                }
            }


            newquotereq.ActualSalesForceRatio = request.ActualSalesForceRatio;
            newquotereq.ActualSalesBizRatio   = request.ActualSalesBizRatio;
            newquotereq.ActualDtaryForceRatio = request.ActualDtaryForceRatio;
            newquotereq.ActualDtaryBizRatio   = request.ActualDtaryBizRatio;
            //是否暂存
            newquotereq.IsTempStorage = request.IsTempStorage;

            //平安底价报价
            newquotereq.IsPaFloorPrice = request.IsPaFloorPrice;
            newquotereq.DriverCard     = request.DriverCard;
            newquotereq.DriverCardType = request.DriverCardType;
            repository.Add(newquotereq);
        }
Exemplo n.º 12
0
        /// <summary>
        /// 获取渠道的source集合
        /// </summary>
        /// <param name="url"></param>
        /// <param name="agentId">顶级代理Id</param>
        /// <returns></returns>
        public List <AgentCity> GetSourceList(string url, int agentId)
        {
            var viewModel = new AppAgentSourceViewModel();
            //获取城市列表
            var agentCityKey = string.Format("ExternalApi_{0}_ConfigCity_Find", agentId);
            var listTempCity = CacheProvider.Get <List <bx_agent_config> >(agentCityKey);
            var listCity     = new List <int>();

            if (listTempCity == null)
            {
                listTempCity = _agentConfig.FindNewCity(agentId);
                CacheProvider.Set(agentCityKey, listTempCity, 10800);
            }
            if (listTempCity != null)
            {
                listCity = listTempCity.Select(i => i.city_id.Value).Distinct().ToList();
            }

            //获取所有source列表
            var agentSourceKey = string.Format("agent_source_key_{0}", agentId);
            var listSource     = CacheProvider.Get <List <bx_agent_config> >(agentSourceKey);

            if (listSource == null)
            {
                listSource = _agentConfig.Find(agentId).ToList();
                CacheProvider.Set(agentSourceKey, listSource, 10800);
            }
            var citylist       = new List <AgentCity>();
            var agentCity      = new AgentCity();
            var sourcelist     = new List <Source>();
            var agentSource    = new Source();
            var tempSourceList = new List <bx_agent_config>();

            //根据城市获取source列表
            if (!listCity.Any())
            {
                return(citylist);
            }
            foreach (var c in listCity)
            {
                tempSourceList = new List <bx_agent_config>();
                tempSourceList = listSource.Where(i => i.city_id == c && i.source.HasValue).OrderBy(o => o.source.Value).Distinct().ToList();
                sourcelist     = new List <Source>();
                if (tempSourceList.Any())
                {
                    foreach (var s in tempSourceList)
                    {
                        agentSource          = new Source();
                        agentSource.Id       = s.source.Value;
                        agentSource.Name     = s.source.Value.ToEnumDescriptionString(typeof(EnumSource));
                        agentSource.NewId    = SourceGroupAlgorithm.GetNewSource(s.source.Value);
                        agentSource.ImageUrl = string.Format("{0}/Images/company/{1}.png", url, s.source.Value);
                        sourcelist.Add(agentSource);
                    }
                }
                agentCity             = new AgentCity();
                agentCity.AgentSource = sourcelist;
                agentCity.CityId      = c;
                agentCity.CityName    = _iCityRepository.FindCity(c).city_name;
                citylist.Add(agentCity);
            }
            return(citylist);
        }
Exemplo n.º 13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="pairs"></param>
        /// <returns></returns>
        public GetAgentIdentityAndRateResponse GetAgent(GetAgentIdentityAndRateRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new GetAgentIdentityAndRateResponse();

            try
            {
                //根据经纪人获取手机号
                bx_agent agentModel = GetAgent(request.Agent);
                //logInfo.Info("获取到的经纪人信息:"+agentModel.ToJson());
                //参数校验
                if (agentModel == null)
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }

                if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }
                //当前经济人
                //var curAgent = _agentRepository.GetAgent(request.OpenId);
                var curAgent = request.ChildAgent;
                //_agentRepository.GetAgentByTopParentAgent(request.OpenId, request.ParentAgent);

                #region
                //直客身份
                if (curAgent == 0)
                {
                    response.IsAgent = 0;
                }
                else
                {
                    response.IsAgent = 1;


                    //var allids = _agentRepository.GetSonId(request.ParentAgent);
                    //var allsons = allids.Split(',');
                    var allsons = _agentRepository.GetSonsList(request.ParentAgent, true);

                    //modify.by.gpj.0419.判断操作重复
                    //当前试算人即是经纪人自己
                    //if (curAgent.Id == request.Agent)
                    //{
                    //看看是否是在这个顶级经纪人的归属下,才能按照经纪人身份展示,否则就按照直客处理

                    var isExist = allsons.Count(x => x == curAgent.ToString()) > 0;
                    if (isExist)
                    {
                        response.IsAgent = 1;
                    }
                    else
                    {
                        response.IsAgent = 0;
                    }

                    //}
                    //else
                    //{
                    //    //Request.Agent有可能是试算人的上级代理,是就按照经纪人身份处理,否则 按照直客处理
                    //    var isExist = allsons.Count(x => x == curAgent.Id.ToString()) > 0;
                    //    if (isExist)
                    //    {
                    //        response.IsAgent = 1;
                    //    }
                    //    else
                    //    {
                    //        response.IsAgent = 0;
                    //    }
                    //}
                }

                //后加逻辑
                //if (request.ParentAgent == request.Agent)
                //{
                //    response.IsAgent = 0;
                //}

                if (response.IsAgent == 0)
                {
                    using (var client = new HttpClient())
                    {
                        try
                        {
                            string method = string.Format("{0}/api/EnterpriseAgent/WechatZhiKeRate?agentid={1}&buid={2}", _rateCenter, request.Agent, request.Buid);
                            //string method = string.Format("{0}/api/EnterpriseAgent/WechatZhiKeRate?agentid={1}&buid={2}",_rateCenter, 102, 109154);
                            // logError.Info("获取费率请求串:" + method);
                            HttpResponseMessage responserate = client.GetAsync(method).Result;
                            var rrrate = responserate.Content.ReadAsStringAsync().Result;
                            //var resultrate = JsonConvert.DeserializeObject<ReturnRate>(rrrate);
                            var resultrate = rrrate.FromJson <List <ReturnRate> >();
                            if (resultrate != null)
                            {
                                response.ZhiKeRate = new List <Rate>();
                                for (var i = 0; i < resultrate.Count; i++)
                                {
                                    Rate rate = new Rate
                                    {
                                        //20160908兼容新旧source将0123->1248
                                        //Source = resultrate[i].Source,
                                        Source  = SourceGroupAlgorithm.GetNewSource((int)resultrate[i].Source),
                                        BizRate = resultrate[i].zhike_biz_rate
                                    };
                                    response.ZhiKeRate.Add(rate);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            logError.Info("获取费率发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
                        }
                    }
                }
                else
                {
                    //20160908兼容新旧source将1248->0123
                    var hebaoitem = _hebaoDianwei.Find(request.Buid, SourceGroupAlgorithm.GetOldSource(request.Source));
                    if (hebaoitem != null)
                    {
                        Rate rate = new Rate
                        {
                            BizRate   = hebaoitem.agent_biz_rate.HasValue ? hebaoitem.agent_biz_rate.Value : 0,
                            ForceRate = hebaoitem.agent_force_rate.HasValue ? hebaoitem.agent_force_rate.Value : 0,
                            TaxRate   = 0
                        };
                        response.AgentRate = rate;
                    }
                }

                #endregion
            }
            catch (Exception ex)
            {
                logError.Info("发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }
            return(response);
        }
        public async Task <BaseViewModel> RecordNewCar(RecordNewCarRequest request)
        {
            int           source = SourceGroupAlgorithm.GetOldSource(request.Source);
            bx_car_record model  = _carRecordRepository.GetModel(request.CarVin, request.EngineNo);

            if (model != null && model.Id > 0)
            {
                if (model.RecordStatus > 0)
                {
                    //如果1分钟之内提交过,则不允许再请求
                    return(new BaseViewModel()
                    {
                        BusinessStatus = -10001, StatusMessage = "该车已提交过备案,请勿重复提交!"
                    });
                }
                if (model.UpdateTime.Value.AddSeconds(30) > DateTime.Now)
                {
                    //如果30s之内提交过,则不允许再请求
                    return(new BaseViewModel()
                    {
                        BusinessStatus = -10001, StatusMessage = "刚提交过新车备案,请稍后再试!"
                    });
                }
                //此处else省略是因为下面可以通用,只修改updatetime
            }
            #region 初始化字段,存数据库值
            else
            {
                model            = new bx_car_record();
                model.CreateTime = DateTime.Now;
            }
            model.CarVin   = request.CarVin;
            model.EngineNo = request.EngineNo;
            model.DriveLicenseCarTypeName  = request.DriveLicenseCarTypeName;
            model.DriveLicenseCarTypeValue = request.DriveLicenseCarTypeValue;
            model.LicenseOwner             = request.LicenseOwner;
            model.LicenseOwnerIdType       = request.LicenseOwnerIdType;
            model.LicenseOwnerIdTypeValue  = request.LicenseOwnerIdTypeValue;
            model.LicenseOwnerIdNo         = request.LicenseOwnerIdNo;
            model.TonCountflag             = request.TonCountflag;
            model.CarTonCount      = request.CarTonCount;
            model.CarLotEquQuality = request.CarLotEquQuality;
            model.VehicleExhaust   = request.VehicleExhaust;
            model.FuelType         = request.FuelType;
            model.FuelTypeValue    = request.FuelTypeValue;
            model.ProofType        = request.ProofType;
            model.ProofTypeValue   = request.ProofTypeValue;
            model.ProofNo          = request.ProofNo;
            model.ProofTime        = !string.IsNullOrWhiteSpace(request.ProofTime) ? DateTime.Parse(request.ProofTime) : DateTime.MinValue;
            model.CarPrice         = request.CarPrice;
            model.VehicleYear      = request.VehicleYear;
            model.VehicleName      = request.VehicleName;
            model.ModelCode        = request.ModelCode;
            model.RecordStatus     = 0;//初始化时是0
            model.UpdateTime       = DateTime.Now;
            model.Source           = source;
            int record = _carRecordRepository.AddUpdateCarRecord(model);
            #endregion
            if (record == 0)
            {
                return(new BaseViewModel()
                {
                    BusinessStatus = 0, StatusMessage = "请求失败,数据未保存成功"
                });
            }
            #region 给中心发消息
            string xuBaoCacheKey = CommonCacheKeyFactory.CreateKeyWithLicense(request.CarVin);
            var    xuBaoKey      = string.Format("{0}-CarRecord", xuBaoCacheKey);
            CacheProvider.Remove(xuBaoKey);
            var msgBody = new
            {
                Source         = source,           //哪家渠道
                ChannelId      = request.ChannelId,
                CarVin         = request.CarVin,   //车架号
                EngineNo       = request.EngineNo, //发动机号
                NotifyCacheKey = xuBaoCacheKey,
                RequestTime    = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
            };
            //发送续保信息
            var msgbody = _messageCenter.SendToMessageCenter(msgBody.ToJson(), ConfigurationManager.AppSettings["MessageCenter"], ConfigurationManager.AppSettings["BxCarRecord"]);
            try
            {
                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(1));
                        }
                    }
                }
                if (cacheKey == null)
                {
                    return(new BaseViewModel()
                    {
                        BusinessStatus = -1, StatusMessage = "请求失败,数据与保司交互超时。"
                    });
                }
                else
                {
                    WaBaseResponse response = new WaBaseResponse();
                    response = cacheKey.FromJson <WaBaseResponse>();
                    if (response.ErrCode == 1)
                    {
                        return(new BaseViewModel()
                        {
                            BusinessStatus = 1, StatusMessage = "请求成功"
                        });
                    }
                    else
                    {
                        logError.Info(string.Format("新车备案请求调用中心失败:请求参数为:{0},返回值:{1}", request.ToJson(), cacheKey));
                        return(new BaseViewModel()
                        {
                            BusinessStatus = 0, StatusMessage = response.ErrMsg
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                logError.Info("新车备案请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
                return(new BaseViewModel()
                {
                    BusinessStatus = -10003, StatusMessage = "请求发生异常!"
                });
            }
            #endregion
        }
        public static BaojiaItemViewModel ConvertToViewModel(this bj_baodanxinxi xinxi, bj_baodanxianzhong xianzhong, List <bx_claim_detail> claimDetail, bx_savequote savequote, AgentViewModelByBJ AgentDetail, List <bx_preferential_activity> Activitys)
        {
            var item = new BaojiaItemViewModel();

            #region BaoJiaInfo
            item.BaoJiaInfo = new BaojiaInfoViewModel
            {
                CarOwner       = xinxi.CarOwner,
                BizStartDate   = xinxi.BizStartDate.HasValue ? xinxi.BizStartDate.Value.Date == DateTime.MinValue.Date ? "" : xinxi.BizStartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                ForceStartDate = xinxi.ForceStartDate.HasValue ? xinxi.ForceStartDate.Value.Date == DateTime.MinValue.Date ? "" : xinxi.ForceStartDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                CarBrandModel  = xinxi.CarBrandModel,
                CarLicense     = xinxi.CarLicense,
                CompanyId      = xinxi.CompanyId.HasValue ? SourceGroupAlgorithm.GetNewSource(xinxi.CompanyId.Value) : 0,
                ChannelId      = xinxi.ChannelId.HasValue ? xinxi.ChannelId.Value : 0,
                InsureIdType   = xinxi.InsureIdType,
                InsureIdNum    = xinxi.InsureIdNum,
                //新增的4个费率
                NonClaimRate      = xinxi.NonClaimRate.HasValue ? xinxi.NonClaimRate.Value : 0,
                MultiDiscountRate = xinxi.MultiDiscountRate.HasValue ? xinxi.MultiDiscountRate.Value : 0,
                AvgMileRate       = xinxi.AvgMileRate.HasValue ? xinxi.AvgMileRate.Value : 0,
                RiskRate          = xinxi.RiskRate.HasValue ? xinxi.RiskRate.Value : 0,
                BizNum            = xinxi.BizNum,
                ForceNum          = xinxi.ForceNum,
                //座位数
                CarSeat            = xinxi.CarSeated,
                JiaoQiang          = xianzhong.JiaoQiang.HasValue ? xianzhong.JiaoQiang.Value : 1,
                VehicleInfo        = xinxi.VehicleInfo,
                JqVehicleClaimType = xinxi.JqVehicleClaimType,
                SyVehicleClaimType = xinxi.SyVehicleClaimType,

                LastBizEndDate   = xinxi.BizEndDate.HasValue ? xinxi.BizEndDate.Value.Date == DateTime.MinValue.Date ? "" : xinxi.BizEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                LastForceEndDate = xinxi.ForceEndDate.HasValue ? xinxi.ForceEndDate.Value.Date == DateTime.MinValue.Date ? "" : xinxi.ForceEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                ActivityContent  = string.IsNullOrEmpty(xinxi.activity_content) ? "" : xinxi.activity_content
            };
            if (!string.IsNullOrEmpty(xinxi.TotalRate))
            {
                item.BaoJiaInfo.TotalRate = xinxi.TotalRate;
            }
            else
            {
                item.BaoJiaInfo.TotalRate = (item.BaoJiaInfo.NonClaimRate * item.BaoJiaInfo.MultiDiscountRate *
                                             item.BaoJiaInfo.AvgMileRate * item.BaoJiaInfo.RiskRate).ToString("f4");
            }
            #endregion

            #region XianZhongInfo
            item.XianZhongInfo = new BaoxianXianZhongViewModel
            {
                BizRate   = xinxi.ManualBizRate.HasValue ? xinxi.ManualBizRate.Value : 0,
                ForceRate = xinxi.ManualForceRate.HasValue ? xinxi.ManualForceRate.Value : 0,
                //20170221新增增值税
                AddValueTaxRate = xinxi.AddValueTaxRate.HasValue ? xinxi.AddValueTaxRate.Value : 0,
                BizTotal        = xianzhong.BizTotal.HasValue ? xianzhong.BizTotal.Value : 0,

                BoLi = new XianZhongUnit
                {
                    BaoE   = xianzhong.BoLiBaoE.HasValue ? xianzhong.BoLiBaoE.Value : 0,
                    BaoFei = xianzhong.BoLiBaoFei.HasValue ? xianzhong.BoLiBaoFei.Value : 0
                },
                BuJiMianCheSun = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianCheSun.HasValue ? xianzhong.BuJiMianCheSun.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianCheSun.HasValue ? xianzhong.BuJiMianCheSun.Value : 0
                },
                BuJiMianDaoQiang = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianDaoQiang.HasValue ? xianzhong.BuJiMianDaoQiang.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianDaoQiang.HasValue ? xianzhong.BuJiMianDaoQiang.Value : 0
                },
                BuJiMianFuJia = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianFuJian.HasValue ? xianzhong.BuJiMianFuJian.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianFuJian.HasValue ? xianzhong.BuJiMianFuJian.Value : 0
                },
                BuJiMianRenYuan = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianRenYuan.HasValue ? xianzhong.BuJiMianRenYuan.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianRenYuan.HasValue ? xianzhong.BuJiMianRenYuan.Value : 0
                },
                BuJiMianSanZhe = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianSanZhe.HasValue ? xianzhong.BuJiMianSanZhe.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianSanZhe.HasValue ? xianzhong.BuJiMianSanZhe.Value : 0
                },
                CheDeng = new XianZhongUnit
                {
                    BaoE   = xianzhong.CheDengBaoE.HasValue ? xianzhong.CheDengBaoE.Value : 0,
                    BaoFei = xianzhong.CheDengBaoFei.HasValue ? xianzhong.CheDengBaoFei.Value : 0
                },
                ChengKe = new XianZhongUnit
                {
                    BaoE   = xianzhong.ChengKeBaoE.HasValue ? xianzhong.ChengKeBaoE.Value : 0,
                    BaoFei = xianzhong.ChengKeBaoFei.HasValue ? xianzhong.ChengKeBaoFei.Value : 0
                },
                ChengKeBaoENum = xianzhong.ChengKeBaoENum.HasValue ? xianzhong.ChengKeBaoENum.Value : 0,
                CheSun         = new XianZhongUnit
                {
                    BaoE   = xianzhong.CheSunBaoE.HasValue ? xianzhong.CheSunBaoE.Value : 0,
                    BaoFei = xianzhong.CheSunBaoFei.HasValue ? xianzhong.CheSunBaoFei.Value : 0
                },

                DaoQiang = new XianZhongUnit
                {
                    BaoE   = xianzhong.DaoQiangBaoE.HasValue ? xianzhong.DaoQiangBaoE.Value : 0,
                    BaoFei = xianzhong.DaoQiangBaoFei.HasValue ? xianzhong.DaoQiangBaoFei.Value : 0
                },
                ForceTotal = xianzhong.ForceTotal.HasValue ? xianzhong.ForceTotal.Value : 0,
                HuaHen     = new XianZhongUnit
                {
                    BaoE   = xianzhong.HuaHenBaoE.HasValue ? xianzhong.HuaHenBaoE.Value : 0,
                    BaoFei = xianzhong.HuaHenBaoFei.HasValue ? xianzhong.HuaHenBaoFei.Value : 0
                },
                SanZhe = new XianZhongUnit
                {
                    BaoE   = xianzhong.SanZheBaoE.HasValue ? xianzhong.SanZheBaoE.Value : 0,
                    BaoFei = xianzhong.SanZheBaoFei.HasValue ? xianzhong.SanZheBaoFei.Value : 0
                },
                SheShui = new XianZhongUnit
                {
                    BaoE   = xianzhong.SheShuiBaoE.HasValue ? xianzhong.SheShuiBaoE.Value : 0,
                    BaoFei = xianzhong.SheShuiBaoFei.HasValue ? xianzhong.SheShuiBaoFei.Value : 0
                },
                SiJi = new XianZhongUnit
                {
                    BaoE   = xianzhong.SiJiBaoE.HasValue ? xianzhong.SiJiBaoE.Value : 0,
                    BaoFei = xianzhong.SiJiBaoFei.HasValue ? xianzhong.SiJiBaoFei.Value : 0,
                },
                TaxTotal = xianzhong.TaxTotal.HasValue ? xianzhong.TaxTotal.Value : 0,
                TeYue    = new XianZhongUnit
                {
                    BaoE   = xianzhong.TeYueBaoE.HasValue ? xianzhong.TeYueBaoE.Value : 0,
                    BaoFei = xianzhong.TeYueBaoFei.HasValue ? xianzhong.TeYueBaoFei.Value : 0
                },
                ZiRan = new XianZhongUnit
                {
                    BaoE   = xianzhong.ZiRanBaoE.HasValue ? xianzhong.ZiRanBaoE.Value : 0,
                    BaoFei = xianzhong.ZiRanBaoFei.HasValue ? xianzhong.ZiRanBaoFei.Value : 0
                },

                //2.1.5版本修改 新增6个字段
                BuJiMianChengKe = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianChengKe.HasValue ? xianzhong.BuJiMianChengKe.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianChengKe.HasValue ? xianzhong.BuJiMianChengKe.Value : 0
                },
                BuJiMianSiJi = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianSiJi.HasValue ? xianzhong.BuJiMianSiJi.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianSiJi.HasValue ? xianzhong.BuJiMianSiJi.Value : 0
                },
                BuJiMianHuaHen = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianHuaHen.HasValue ? xianzhong.BuJiMianHuaHen.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianHuaHen.HasValue ? xianzhong.BuJiMianHuaHen.Value : 0
                },
                BuJiMianSheShui = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianSheShui.HasValue ? xianzhong.BuJiMianSheShui.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianSheShui.HasValue ? xianzhong.BuJiMianSheShui.Value : 0
                },
                BuJiMianZiRan = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianZiRan.HasValue ? xianzhong.BuJiMianZiRan.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianZiRan.HasValue ? xianzhong.BuJiMianZiRan.Value : 0
                },
                BuJiMianJingShenSunShi = new XianZhongUnit
                {
                    BaoE   = (xianzhong.BuJiMianJingShenSunShi.HasValue ? xianzhong.BuJiMianJingShenSunShi.Value : 0) > 0 ? 1 : 0,
                    BaoFei = xianzhong.BuJiMianJingShenSunShi.HasValue ? xianzhong.BuJiMianJingShenSunShi.Value : 0
                },

                SanFangTeYue = new XianZhongUnit
                {
                    BaoE   = xianzhong.SanFangTeYueBaoE.HasValue ? xianzhong.SanFangTeYueBaoE.Value : 0,
                    BaoFei = xianzhong.SanFangTeYueBaoFei.HasValue ? xianzhong.SanFangTeYueBaoFei.Value : 0
                },
                JingShenSunShi = new XianZhongUnit
                {
                    BaoE   = xianzhong.JingShenSunShiBaoE.HasValue ? xianzhong.JingShenSunShiBaoE.Value : 0,
                    BaoFei = xianzhong.JingShenSunShiBaoFei.HasValue ? xianzhong.JingShenSunShiBaoFei.Value : 0
                },
                HuoWuZeRen = new XianZhongUnit
                {
                    BaoE   = xianzhong.HuoWuZeRenBaoE.HasValue ? xianzhong.HuoWuZeRenBaoE.Value : 0,
                    BaoFei = xianzhong.HuoWuZeRenBaoFei.HasValue ? xianzhong.HuoWuZeRenBaoFei.Value : 0
                },
                SheBeiSunShi = new XianZhongUnit
                {
                    BaoE   = xianzhong.SheBeiSunShiBaoE.HasValue ? xianzhong.SheBeiSunShiBaoE.Value : 0,
                    BaoFei = xianzhong.SheBeiSunShiBaoFei.HasValue ? xianzhong.SheBeiSunShiBaoFei.Value : 0
                },
                BuJiMianSheBeiSunShi = new XianZhongUnit
                {
                    BaoE   = xianzhong.BuJiMianSheBeiSunShiBaoE.HasValue ? xianzhong.BuJiMianSheBeiSunShiBaoE.Value : 0,
                    BaoFei = xianzhong.BuJiMianSheBeiSunShiBaoFei.HasValue ? xianzhong.BuJiMianSheBeiSunShiBaoFei.Value : 0
                },
                XiuLiChang = new XianZhongUnit
                {
                    BaoE   = xianzhong.XiuLiChangBaoE.HasValue ? xianzhong.XiuLiChangBaoE.Value : 0,
                    BaoFei = xianzhong.XiuLiChangBaoFei.HasValue ? xianzhong.XiuLiChangBaoFei.Value : 0
                },
                FeiYongBuChang = new XianZhongUnit
                {
                    BaoE   = xianzhong.FeiYongBuChangBaoE.HasValue ? xianzhong.FeiYongBuChangBaoE.Value : 0,
                    BaoFei = xianzhong.FeiYongBuChangBaoFei.HasValue ? xianzhong.FeiYongBuChangBaoFei.Value : 0
                },
                SanZheJieJiaRi = new XianZhongUnit
                {
                    BaoE   = xianzhong.SanZheJieJiaRiBaoE.HasValue ? xianzhong.SanZheJieJiaRiBaoE.Value : 0,
                    BaoFei = xianzhong.SanZheJieJiaRiBaoFei.HasValue ? xianzhong.SanZheJieJiaRiBaoFei.Value : 0
                },

                FybcDays = xianzhong.FybcDays.HasValue ? xianzhong.FybcDays.Value : 0,
                //2.1.5修改 结束
                JiaYiTotal = xianzhong.JiaYiTotal ?? 0
            };
            #region  计免重新赋值,针对人保3.5代系统不计免赔合并展示的问题
            if (xianzhong.Source == 2 && xianzhong.BuJiMianFuJian > 0)
            {
                //车损
                if (xianzhong.BuJiMianCheSun == -1)
                {
                    item.XianZhongInfo.BuJiMianCheSun.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianCheSun.BaoFei = 0;
                }
                //盗抢
                if (xianzhong.BuJiMianDaoQiang == -1)
                {
                    item.XianZhongInfo.BuJiMianDaoQiang.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianDaoQiang.BaoFei = 0;
                }
                //人员
                if (xianzhong.BuJiMianRenYuan == -1)
                {
                    item.XianZhongInfo.BuJiMianRenYuan.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianRenYuan.BaoFei = 0;
                }
                //三者
                if (xianzhong.BuJiMianSanZhe == -1)
                {
                    item.XianZhongInfo.BuJiMianSanZhe.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianSanZhe.BaoFei = 0;
                }
                //乘客
                if (xianzhong.BuJiMianChengKe == -1)
                {
                    item.XianZhongInfo.BuJiMianChengKe.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianChengKe.BaoFei = 0;
                }
                //司机
                if (xianzhong.BuJiMianSiJi == -1)
                {
                    item.XianZhongInfo.BuJiMianSiJi.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianSiJi.BaoFei = 0;
                }
                //划痕
                if (xianzhong.BuJiMianHuaHen == -1)
                {
                    item.XianZhongInfo.BuJiMianHuaHen.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianHuaHen.BaoFei = 0;
                }
                //涉水
                if (xianzhong.BuJiMianSheShui == -1)
                {
                    item.XianZhongInfo.BuJiMianSheShui.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianSheShui.BaoFei = 0;
                }
                //自燃
                if (xianzhong.BuJiMianZiRan == -1)
                {
                    item.XianZhongInfo.BuJiMianZiRan.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianZiRan.BaoFei = 0;
                }
                //精神损失
                if (xianzhong.BuJiMianJingShenSunShi == -1)
                {
                    item.XianZhongInfo.BuJiMianJingShenSunShi.BaoE   = 1;
                    item.XianZhongInfo.BuJiMianJingShenSunShi.BaoFei = 0;
                }
            }
            #endregion
            #endregion

            #region 业务员信息 2017-09-06
            item.AgentDetail = new AgentViewModelByBJ
            {
                AgentId = xinxi.AgentId ?? 0
            };
            #endregion

            #region 优惠活动信息 2017-09-06
            if (Activitys != null)
            {
                item.ActivityCount = Activitys.Count;

                #region ActivityDetail
                List <PreActivity> list = new List <PreActivity>();
                PreActivity        Activitydetail;
                foreach (var i in Activitys)
                {
                    Activitydetail = new PreActivity();
                    Activitydetail.ActivityName    = i.activity_name;
                    Activitydetail.ActivityContent = i.activity_content;
                    list.Add(Activitydetail);
                }
                item.Activitys = list;
                #endregion
            }
            #endregion

            #region 出险信息

            item.ClaimInfo = new ClaimInfo
            {
                LossBizCount    = xinxi.loss_biz_count,
                LossBizAmount   = String.Format("{0:F}", xinxi.loss_biz_amount),
                LossForceCount  = xinxi.loss_force_count,
                LossForceAmount = String.Format("{0:F}", xinxi.loss_force_amount)
            };
            #endregion


            if (savequote != null)
            {
                item.XianZhongInfo.XiuLiChangType = savequote.HcXiuLiChangType.HasValue ? savequote.HcXiuLiChangType.Value : -1;
            }

            if (claimDetail != null)
            {
                item.ClaimCount = claimDetail.Count;

                #region ClaimDetail
                List <ClaimDetailViewModel> list = new List <ClaimDetailViewModel>();
                ClaimDetailViewModel        detail;
                foreach (var i in claimDetail)
                {
                    detail                = new ClaimDetailViewModel();
                    detail.Buid           = i.b_uid;
                    detail.CreateTime     = i.create_time;
                    detail.StrCreateTime  = i.create_time.HasValue ? i.create_time.Value.ToString("yyyy-MM-dd") : "";
                    detail.EndCaseTime    = i.endcase_time;
                    detail.StrEndCaseTime = i.endcase_time.HasValue ? i.endcase_time.Value.ToString("yyyy-MM-dd") : "";
                    detail.Id             = i.id;
                    detail.Liid           = i.li_id;
                    detail.LossTime       = i.loss_time;
                    detail.StrLossTime    = i.loss_time.HasValue ? i.loss_time.Value.ToString("yyyy-MM-dd") : "";
                    detail.PayAmount      = i.pay_amount;
                    detail.PayCompanyName = i.pay_company_name;
                    detail.PayCompanyNo   = i.pay_company_no;
                    list.Add(detail);
                }
                item.ClaimDetail = list;
                #endregion
            }

            return(item);
        }
Exemplo n.º 16
0
        public MyBaoJiaViewModel SetQuoteReq(MyBaoJiaViewModel my, bx_userinfo userinfo, ref string postBizStartDate, ref string postForceStartDate)
        {
            var quotereqCarInfo = _quoteReqCarinfoRepository.Find(userinfo.Id);

            my.IsNewCar = 2;//默认赋值旧车2
            //公车私车
            if (quotereqCarInfo != null)
            {
                //报价失败,取req表起保时间
                if (userinfo.QuoteStatus < 1)
                {
                    postForceStartDate = quotereqCarInfo.force_start_date.HasValue
                        ? quotereqCarInfo.force_start_date.Value.ToString("yyyy-MM-dd HH:mm") : "";
                    postBizStartDate = quotereqCarInfo.biz_start_date.HasValue
                        ? quotereqCarInfo.biz_start_date.Value.ToString("yyyy-MM-dd HH:mm") : "";
                }
                my.IsPublic = quotereqCarInfo.is_public.HasValue ? quotereqCarInfo.is_public.Value : 0;
                if (quotereqCarInfo.is_newcar.HasValue)
                {
                    if (quotereqCarInfo.is_newcar.Value != 0)
                    {
                        my.IsNewCar = quotereqCarInfo.is_newcar.Value;
                    }
                }
                my.AutoMoldCode = quotereqCarInfo.auto_model_code;
                my.CoRealValue  = quotereqCarInfo.co_real_value.HasValue ? quotereqCarInfo.co_real_value.Value : 0;
                my.CarUsedType  = quotereqCarInfo.car_used_type;
                my.SeatCount    = quotereqCarInfo.seat_count;
                my.IsLoans      = quotereqCarInfo.is_loans.HasValue ? quotereqCarInfo.is_loans.Value : -1;
                my.TransferDate = quotereqCarInfo.transfer_date.HasValue ? quotereqCarInfo.transfer_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
                //报价返回请求值
                my.ReqInfo = new QuoteReqCarInfoViewModel()
                {
                    AutoMoldCode           = quotereqCarInfo.auto_model_code ?? "",
                    IsNewCar               = quotereqCarInfo.is_newcar ?? 2,
                    NegotiatePrice         = quotereqCarInfo.co_real_value ?? 0,
                    IsPublic               = quotereqCarInfo.is_public ?? 0,
                    CarUsedType            = quotereqCarInfo.car_used_type ?? 0,
                    AutoMoldCodeSource     = quotereqCarInfo.auto_model_code_source ?? -1,
                    DriveLicenseTypeName   = quotereqCarInfo.drivlicense_cartype_name ?? "",
                    DriveLicenseTypeValue  = quotereqCarInfo.drivlicense_cartype_value ?? "",
                    SeatUpdated            = (quotereqCarInfo.seatflag ?? -1).ToString(),
                    RequestActualDiscounts = (quotereqCarInfo.ActualDiscounts ?? 0).ToString(),
                    RequestIsPaFloorPrice  = (quotereqCarInfo.IsPaFloorPrice ?? 0).ToString(),
                    DriverCard             = quotereqCarInfo.DriverCard ?? "",
                    DriverCardType         = quotereqCarInfo.DriverCardType ?? "",
                };
                //addby20180915继续拼装viewModel.ReqInfo对象,这是新增的折扣率的对象
                if (quotereqCarInfo != null)
                {
                    List <DiscountViewModel>  dclist = new List <DiscountViewModel>();
                    DiscountViewModel         dc;
                    Dictionary <int, decimal> dictionary = new Dictionary <int, decimal>();
                    dictionary = quotereqCarInfo.actualdiscounts_ratio.FromJson <Dictionary <int, decimal> >();
                    if (dictionary != null)
                    {
                        foreach (var item in dictionary)
                        {
                            dc = new DiscountViewModel()
                            {
                                Source = SourceGroupAlgorithm.GetNewSource(item.Key),
                                AD     = item.Value,
                                CR     = 0,
                                SR     = 0,
                                TRCR   = ""
                            };
                            //平安的特殊处理,取单独的字段
                            if (item.Key == 0)
                            {
                                dc.CR   = quotereqCarInfo.ChannelRate ?? 0;
                                dc.SR   = quotereqCarInfo.SubmitRate ?? 0;
                                dc.TRCR = quotereqCarInfo.TrCausesWhy ?? "";
                            }
                            dclist.Add(dc);
                        }
                    }
                    my.ReqInfo.RequestDiscount = dclist;
                }
            }
            else
            {
                my.IsPublic     = 0;
                my.CoRealValue  = 0;
                my.IsLoans      = -1;
                my.TransferDate = "-1";
                my.ReqInfo      = new QuoteReqCarInfoViewModel()
                {
                    AutoMoldCode           = "",
                    IsNewCar               = 2,
                    NegotiatePrice         = 0,
                    IsPublic               = 0,
                    CarUsedType            = 0,
                    AutoMoldCodeSource     = -1,
                    DriveLicenseTypeName   = "",
                    DriveLicenseTypeValue  = "",
                    SeatUpdated            = "-1",
                    RequestActualDiscounts = "0",
                    RequestIsPaFloorPrice  = "0",
                    DriverCard             = "",
                    DriverCardType         = "",
                    RequestDiscount        = new List <DiscountViewModel>()
                };
            }
            return(my);
        }
        public MyPrecisePriceItemViewModel ConvertToViewModelNew(int source, bx_savequote savequote, bx_quoteresult quoteresult, bx_submit_info submitInfo, int quoteStatus, List <AgentConfigNameModel> agentChannelList, string carVin, List <bx_ywxdetail> jiayi, string strRate = null)
        {
            double?newRate = null;

            if (!string.IsNullOrEmpty(strRate) && source == 3)
            {
                newRate = double.Parse(strRate);
            }

            if (savequote == null)
            {
                savequote = new bx_savequote();
            }
            if (submitInfo == null)
            {
                submitInfo = new bx_submit_info();
            }
            var isquoteresult = true;

            if (quoteresult == null)
            {
                isquoteresult = false;
                quoteresult   = new bx_quoteresult();
            }

            var model = new MyPrecisePriceItemViewModel()
            {
                BizRate      = (double)(submitInfo.biz_rate.HasValue ? submitInfo.biz_rate.Value : 0),
                ForceRate    = (double)(submitInfo.force_rate.HasValue ? submitInfo.force_rate.Value : 0),
                BizTotal     = quoteresult.BizTotal.HasValue ? (newRate == null ? quoteresult.BizTotal.Value : System.Math.Round((double)quoteresult.BizTotal.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0,
                ForceTotal   = quoteresult.ForceTotal ?? 0,
                TaxTotal     = quoteresult.TaxTotal ?? 0,
                Source       = SourceGroupAlgorithm.GetNewSource(source),
                QuoteStatus  = submitInfo.quote_status.HasValue ? submitInfo.quote_status.Value : 0,
                QuoteResult  = !string.IsNullOrEmpty(submitInfo.quote_result) ? submitInfo.quote_result : "",
                SubmitStatus = submitInfo.submit_status.HasValue ? submitInfo.submit_status.Value : 0,
                SubmitResult = !string.IsNullOrEmpty(submitInfo.submit_result) ? submitInfo.submit_result : "",
                JiaoQiang    = savequote.JiaoQiang.HasValue ? savequote.JiaoQiang.Value : 1,
                CheSun       = new XianZhongUnit
                {
                    //BaoE = savequote.CheSun.HasValue ? savequote.CheSun.Value : 0,
                    BaoE =
                        isquoteresult
                            ? (quoteresult.CheSunBE.HasValue ? quoteresult.CheSunBE.Value : 0)
                            : (savequote.CheSun.HasValue ? savequote.CheSun.Value : 0),
                    BaoFei = quoteresult.CheSun.HasValue ? (newRate == null ? quoteresult.CheSun.Value : System.Math.Round((double)quoteresult.CheSun.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                SanZhe = new XianZhongUnit
                {
                    BaoE   = savequote.SanZhe.HasValue ? savequote.SanZhe.Value : 0,
                    BaoFei = quoteresult.SanZhe.HasValue ? (newRate == null ? quoteresult.SanZhe.Value : System.Math.Round((double)quoteresult.SanZhe.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                DaoQiang = new XianZhongUnit
                {
                    BaoE =
                        isquoteresult
                            ? (quoteresult.DaoQiangBE.HasValue ? quoteresult.DaoQiangBE.Value : 0)
                            : (savequote.DaoQiang.HasValue ? savequote.DaoQiang.Value : 0),
                    BaoFei = quoteresult.DaoQiang.HasValue ? (newRate == null ? quoteresult.DaoQiang.Value : System.Math.Round((double)quoteresult.DaoQiang.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                SanZheJieJiaRi = new XianZhongUnit
                {
                    BaoE   = (savequote.SanZheJieJiaRi.HasValue ? savequote.SanZheJieJiaRi.Value : 0) > 0 ? 1 : 0,
                    BaoFei = quoteresult.SanZheJieJiaRi.HasValue ? (newRate == null ? quoteresult.SanZheJieJiaRi.Value : System.Math.Round((double)quoteresult.SanZheJieJiaRi.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                SiJi = new XianZhongUnit
                {
                    BaoE   = savequote.SiJi.HasValue ? savequote.SiJi.Value : 0,
                    BaoFei = quoteresult.SiJi.HasValue ? (newRate == null ? quoteresult.SiJi.Value : System.Math.Round((double)quoteresult.SiJi.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                ChengKe = new XianZhongUnit
                {
                    BaoE   = savequote.ChengKe.HasValue ? savequote.ChengKe.Value : 0,
                    BaoFei = quoteresult.ChengKe.HasValue ? (newRate == null ? quoteresult.ChengKe.Value : System.Math.Round((double)quoteresult.ChengKe.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BoLi = new XianZhongUnit
                {
                    BaoE   = savequote.BoLi.HasValue ? savequote.BoLi.Value : 0,
                    BaoFei = quoteresult.BoLi.HasValue ? (newRate == null ? quoteresult.BoLi.Value : System.Math.Round((double)quoteresult.BoLi.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                HuaHen = new XianZhongUnit
                {
                    BaoE   = savequote.HuaHen.HasValue ? savequote.HuaHen.Value : 0,
                    BaoFei = quoteresult.HuaHen.HasValue ? (newRate == null ? quoteresult.HuaHen.Value : System.Math.Round((double)quoteresult.HuaHen.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },

                BuJiMianCheSun = new XianZhongUnit
                {
                    BaoE   = savequote.BuJiMianCheSun.HasValue ? savequote.BuJiMianCheSun.Value : 0,
                    BaoFei = quoteresult.BuJiMianCheSun.HasValue ? (newRate == null ? quoteresult.BuJiMianCheSun.Value : System.Math.Round((double)quoteresult.BuJiMianCheSun.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianSanZhe = new XianZhongUnit
                {
                    BaoE   = savequote.BuJiMianSanZhe.HasValue ? savequote.BuJiMianSanZhe.Value : 0,
                    BaoFei = quoteresult.BuJiMianSanZhe.HasValue ? (newRate == null ? quoteresult.BuJiMianSanZhe.Value : System.Math.Round((double)quoteresult.BuJiMianSanZhe.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianDaoQiang = new XianZhongUnit
                {
                    BaoE   = savequote.BuJiMianDaoQiang.HasValue ? savequote.BuJiMianDaoQiang.Value : 0,
                    BaoFei = quoteresult.BuJiMianDaoQiang.HasValue ? (newRate == null ? quoteresult.BuJiMianDaoQiang.Value : System.Math.Round((double)quoteresult.BuJiMianDaoQiang.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianRenYuan = new XianZhongUnit
                {
                    BaoE   = savequote.BuJiMianRenYuan.HasValue ? savequote.BuJiMianRenYuan.Value : 0,
                    BaoFei = quoteresult.BuJiMianRenYuan.HasValue ? (newRate == null ? quoteresult.BuJiMianRenYuan.Value : System.Math.Round((double)quoteresult.BuJiMianRenYuan.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },

                BuJiMianFuJia = new XianZhongUnit
                {
                    BaoE   = savequote.BuJiMianFuJian.HasValue ? savequote.BuJiMianFuJian.Value : 0,
                    BaoFei = quoteresult.BuJiMianFuJian.HasValue ? (newRate == null ? quoteresult.BuJiMianFuJian.Value : System.Math.Round((double)quoteresult.BuJiMianFuJian.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },

                //2.1.5版本 修改 增加6个字段
                BuJiMianChengKe = new XianZhongUnit()
                {
                    BaoE   = savequote.BuJiMianChengKe.HasValue ? savequote.BuJiMianChengKe.Value : 0,
                    BaoFei = quoteresult.BuJiMianChengKe.HasValue ? (newRate == null ? quoteresult.BuJiMianChengKe.Value : System.Math.Round((double)quoteresult.BuJiMianChengKe.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianSiJi = new XianZhongUnit()
                {
                    BaoE   = savequote.BuJiMianSiJi.HasValue ? savequote.BuJiMianSiJi.Value : 0,
                    BaoFei = quoteresult.BuJiMianSiJi.HasValue ? (newRate == null ? quoteresult.BuJiMianSiJi.Value : System.Math.Round((double)quoteresult.BuJiMianSiJi.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianHuaHen = new XianZhongUnit()
                {
                    BaoE   = savequote.BuJiMianHuaHen.HasValue ? savequote.BuJiMianHuaHen.Value : 0,
                    BaoFei = quoteresult.BuJiMianHuaHen.HasValue ? (newRate == null ? quoteresult.BuJiMianHuaHen.Value : System.Math.Round((double)quoteresult.BuJiMianHuaHen.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianSheShui = new XianZhongUnit()
                {
                    BaoE   = savequote.BuJiMianSheShui.HasValue ? savequote.BuJiMianSheShui.Value : 0,
                    BaoFei = quoteresult.BuJiMianSheShui.HasValue ? (newRate == null ? quoteresult.BuJiMianSheShui.Value : System.Math.Round((double)quoteresult.BuJiMianSheShui.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianZiRan = new XianZhongUnit()
                {
                    BaoE   = savequote.BuJiMianZiRan.HasValue ? savequote.BuJiMianZiRan.Value : 0,
                    BaoFei = quoteresult.BuJiMianZiRan.HasValue ? (newRate == null ? quoteresult.BuJiMianZiRan.Value : System.Math.Round((double)quoteresult.BuJiMianZiRan.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                BuJiMianJingShenSunShi = new XianZhongUnit()
                {
                    BaoE   = savequote.BuJiMianJingShenSunShi.HasValue ? savequote.BuJiMianJingShenSunShi.Value : 0,
                    BaoFei = quoteresult.BuJiMianJingShenSunShi.HasValue ? (newRate == null ? quoteresult.BuJiMianJingShenSunShi.Value : System.Math.Round((double)quoteresult.BuJiMianJingShenSunShi.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                //2.1.5修改结束

                //2.1.5修改补充
                HcSheBeiSunshi = new XianZhongUnit
                {
                    BaoE   = savequote.HcSheBeiSunshi.HasValue ? savequote.HcSheBeiSunshi.Value : 0,
                    BaoFei = quoteresult.HcSheBeiSunshi.HasValue ? (newRate == null ? quoteresult.HcSheBeiSunshi.Value : System.Math.Round((double)quoteresult.HcSheBeiSunshi.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                HcHuoWuZeRen = new XianZhongUnit
                {
                    BaoE   = savequote.HcHuoWuZeRen.HasValue ? savequote.HcHuoWuZeRen.Value : 0,
                    BaoFei = quoteresult.HcHuoWuZeRen.HasValue ? (newRate == null ? quoteresult.HcHuoWuZeRen.Value : System.Math.Round((double)quoteresult.HcHuoWuZeRen.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                //HcFeiYongBuChang = new XianZhongUnit
                //{
                //    BaoE = savequote.HcFeiYongBuChang.HasValue ? savequote.HcFeiYongBuChang.Value : 0,
                //    BaoFei = quoteresult.HcFeiYongBuChang.HasValue ? quoteresult.HcFeiYongBuChang.Value : 0
                //},
                HcJingShenSunShi = new XianZhongUnit
                {
                    BaoE   = savequote.HcJingShenSunShi.HasValue ? savequote.HcJingShenSunShi.Value : 0,
                    BaoFei = quoteresult.HcJingShenSunShi.HasValue ? (newRate == null ? quoteresult.HcJingShenSunShi.Value : System.Math.Round((double)quoteresult.HcJingShenSunShi.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                HcSanFangTeYue = new XianZhongUnit
                {
                    BaoE   = savequote.HcSanFangTeYue.HasValue ? savequote.HcSanFangTeYue.Value : 0,
                    BaoFei = quoteresult.HcSanFangTeYue.HasValue ? (newRate == null ? quoteresult.HcSanFangTeYue.Value : System.Math.Round((double)quoteresult.HcSanFangTeYue.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                HcXiuLiChang = new XianZhongUnit
                {
                    BaoE   = savequote.HcXiuLiChang.HasValue ? savequote.HcXiuLiChang.Value : 0,
                    BaoFei = quoteresult.HcXiuLiChang.HasValue ? (newRate == null ? quoteresult.HcXiuLiChang.Value : System.Math.Round((double)quoteresult.HcXiuLiChang.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                HcXiuLiChangType =
                    savequote.HcXiuLiChangType.HasValue ? savequote.HcXiuLiChangType.Value.ToString() : string.Empty,
                //2.1.5修改补充结束

                SheShui = new XianZhongUnit
                {
                    BaoE   = savequote.SheShui.HasValue ? savequote.SheShui.Value : 0,
                    BaoFei = quoteresult.SheShui.HasValue ? (newRate == null ? quoteresult.SheShui.Value : System.Math.Round((double)quoteresult.SheShui.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                CheDeng = new XianZhongUnit
                {
                    BaoE   = savequote.CheDeng.HasValue ? savequote.CheDeng.Value : 0,
                    BaoFei = quoteresult.CheDeng.HasValue ? (newRate == null ? quoteresult.CheDeng.Value : System.Math.Round((double)quoteresult.CheDeng.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                ZiRan = new XianZhongUnit
                {
                    BaoE =
                        isquoteresult
                            ? (quoteresult.ZiRanBE.HasValue ? quoteresult.ZiRanBE.Value : 0)
                            : (savequote.ZiRan.HasValue ? savequote.ZiRan.Value : 0),
                    BaoFei = quoteresult.ZiRan.HasValue ? (newRate == null ? quoteresult.ZiRan.Value : System.Math.Round((double)quoteresult.ZiRan.Value / (double)quoteresult.TotalRate * (double)newRate, 2)) : 0
                },
                RateFactor1 = quoteresult.RateFactor1.HasValue ? quoteresult.RateFactor1.Value : 0,
                RateFactor2 = quoteresult.RateFactor2.HasValue ? quoteresult.RateFactor2.Value : 0,
                RateFactor3 = quoteresult.RateFactor3.HasValue ? quoteresult.RateFactor3.Value : 0,
                RateFactor4 = quoteresult.RateFactor4.HasValue ? quoteresult.RateFactor4.Value : 0,

                TotalRate = (quoteresult.TotalRate ?? 0).ToString(CultureInfo.InvariantCulture),

                BizTno   = string.IsNullOrEmpty(submitInfo.biz_tno) ? string.Empty : submitInfo.biz_tno,
                ForceTno = string.IsNullOrEmpty(submitInfo.force_tno) ? string.Empty : submitInfo.force_tno,
                Fybc     = new XianZhongUnit
                {
                    BaoE   = savequote.HcFeiYongBuChang.HasValue ? savequote.HcFeiYongBuChang.Value : 0,
                    BaoFei = quoteresult.HcFeiYongBuChang.HasValue ? quoteresult.HcFeiYongBuChang.Value : 0
                },
                FybcDays = new XianZhongUnit()
                {
                    BaoE   = savequote.FeiYongBuChangDays.HasValue ? savequote.FeiYongBuChangDays.Value : 0,
                    BaoFei = savequote.FeiYongBuChangDays.HasValue ? savequote.FeiYongBuChangDays.Value : 0
                },
                SheBeiSunShi = new XianZhongUnit
                {
                    BaoE   = savequote.HcSheBeiSunshi ?? 0,
                    BaoFei = quoteresult.HcSheBeiSunshi ?? 0
                },
                BjmSheBeiSunShi = new XianZhongUnit
                {
                    BaoE   = savequote.BuJiMianSheBeiSunshi ?? 0,
                    BaoFei = quoteresult.BuJiMianSheBeiSunshi ?? 0
                },
                OrderNo = string.IsNullOrEmpty(submitInfo.orderNo) ? "" : submitInfo.orderNo
            };

            //安心三者,划痕特殊处理
            if (quoteresult.Source == 12)
            {
                if (model.SanZhe.BaoE > 3000000)
                {
                    model.SanZhe.BaoE = 3000000;
                }
                if (model.HuaHen.BaoE > 0)
                {
                    model.HuaHen.BaoE = 10000;
                }
                //安心的国产车如果上了进口,则改为国产玻璃
                if (model.BoLi.BaoE == 2)
                {
                    if (!string.IsNullOrEmpty(carVin))
                    {
                        if (carVin.StartsWith("L"))
                        {
                            model.BoLi.BaoE = 1;
                        }
                    }
                    else
                    {
                        model.BoLi.BaoE = 1;
                    }
                }
            }
            if (!quoteresult.TotalRate.HasValue)
            {
                model.TotalRate =
                    (model.RateFactor1 * model.RateFactor2 * model.RateFactor3 * model.RateFactor4).ToString("f4");
            }
            List <SheBei> sheBeis = new List <SheBei>();

            if (!string.IsNullOrWhiteSpace(savequote.SheBeiSunShiConfig))
            {
                var items = savequote.SheBeiSunShiConfig.FromJson <List <bx_devicedetail> >();

                foreach (bx_devicedetail devicedetail in items)
                {
                    var sb = new SheBei()
                    {
                        DN = string.IsNullOrWhiteSpace(devicedetail.device_name) ? string.Empty : devicedetail.device_name,
                        DA = devicedetail.device_amount ?? 0,
                        DD = devicedetail.device_depreciationamount ?? devicedetail.device_depreciationamount.Value,
                        DQ = devicedetail.device_quantity ?? devicedetail.device_quantity.Value,
                        DT = devicedetail.device_type ?? devicedetail.device_type.Value,
                        PD = devicedetail.purchase_date.HasValue ? devicedetail.purchase_date.Value.ToString("yyyy-MM-dd") : string.Empty
                    };
                    sheBeis.Add(sb);
                }
            }
            model.SheBeis = sheBeis;
            if (submitInfo.source == 0 || submitInfo.source == 3)
            {
                if (savequote.HcXiuLiChangType == 1)
                {
                    if (savequote.HcXiuLiChang < 0.15)
                    {
                        model.HcXiuLiChang.BaoE = 0.15;
                    }
                }
            }
            //取核保渠道
            if (submitInfo.channel_id.HasValue && agentChannelList.Any())
            {
                var channelmodel = agentChannelList.FirstOrDefault(s => s.Id == submitInfo.channel_id.Value);
                if (channelmodel != null)
                {
                    var channel = new ChannelInfo
                    {
                        ChannelId   = submitInfo.channel_id.Value,
                        ChannelName = channelmodel.ConfigUkeyName ?? "",
                        IsPaicApi   = channelmodel.IsPaicApi.ToString()
                    };
                    model.Channel = channel;
                }
            }
            if (model.Channel == null)
            {//如果没给model.Channel赋值,默认实例化
                model.Channel = new ChannelInfo()
                {
                    ChannelId = 0, ChannelName = "", IsPaicApi = "0"
                };
            }

            //20181123add驾意险
            double jiayitotal = 0;

            model.JiaYi      = jiayi.ConvertViewModel(model.QuoteStatus, out jiayitotal);
            model.JiaYiTotal = jiayitotal.ToString();

            if (quoteStatus == 0)
            {
                model.QuoteResult  = model.QuoteStatus == 1 ? "报价失败" : (model.QuoteResult ?? "");
                model.SubmitResult = model.QuoteStatus == 1 ? "报价失败未核保" : (model.SubmitResult ?? "");
                model.QuoteStatus  = 0;
                model.SubmitStatus = 5;//报价失败未核保
                //险种
                //model.BizRate  = 0;
                //model.ForceRate = 0;
                model.BizTotal                      = 0;
                model.ForceTotal                    = 0;
                model.TaxTotal                      = 0;
                model.CheSun.BaoFei                 = 0;
                model.SanZhe.BaoFei                 = 0;
                model.DaoQiang.BaoFei               = 0;
                model.SiJi.BaoFei                   = 0;
                model.ChengKe.BaoFei                = 0;
                model.BoLi.BaoFei                   = 0;
                model.HuaHen.BaoFei                 = 0;
                model.BuJiMianCheSun.BaoFei         = 0;
                model.BuJiMianSanZhe.BaoFei         = 0;
                model.BuJiMianDaoQiang.BaoFei       = 0;
                model.BuJiMianRenYuan.BaoFei        = 0;
                model.BuJiMianFuJia.BaoFei          = 0;
                model.BuJiMianChengKe.BaoFei        = 0;
                model.BuJiMianSiJi.BaoFei           = 0;
                model.BuJiMianHuaHen.BaoFei         = 0;
                model.BuJiMianSheShui.BaoFei        = 0;
                model.BuJiMianZiRan.BaoFei          = 0;
                model.BuJiMianJingShenSunShi.BaoFei = 0;
                model.HcSheBeiSunshi.BaoFei         = 0;
                model.HcHuoWuZeRen.BaoFei           = 0;
                //model.HcFeiYongBuChang.BaoFei = 0;
                model.HcJingShenSunShi.BaoFei = 0;
                model.HcSanFangTeYue.BaoFei   = 0;
                model.HcXiuLiChang.BaoFei     = 0;
                model.SheShui.BaoFei          = 0;
                model.CheDeng.BaoFei          = 0;
                model.ZiRan.BaoFei            = 0;
                //model.RateFactor1 = 0;
                //model.RateFactor2 = 0;
                //model.RateFactor3  = 0;
                //model.RateFactor4  = 0;
                //model.BizTno = "",
                //model.ForceTno = "",
                model.Fybc.BaoFei            = 0;
                model.FybcDays.BaoFei        = 0;
                model.SheBeiSunShi.BaoFei    = 0;
                model.BjmSheBeiSunShi.BaoFei = 0;
            }
            model.PingAnScore        = (quoteresult.PingAnScore ?? 0).ToString(CultureInfo.InvariantCulture);
            model.RepeatSubmitResult = (submitInfo.is_repeat_submit ?? 0).ToString();
            model.ExpectedLossRate   = (quoteresult.biz_expected_loss_rate ?? 0).ToString();
            if (submitInfo.source == 2)
            {
                model.VersionType = submitInfo.VersionType == "Rb_Marketing_version" ? "1" : "0";
            }
            else
            {
                model.VersionType = "0";
            }
            #region 是否为人保版本第三代
            model.IsRB3Version = "0";
            if (!string.IsNullOrWhiteSpace(submitInfo.VersionType))
            {
                switch (submitInfo.VersionType)
                {
                case "Rb_Marketing_version":
                    model.IsRB3Version = "0";
                    break;

                case "Rb_VFour_JL_Artificial_version":
                    model.IsRB3Version = "0";
                    break;

                case "Rb_VFour_LN_Artificial_version":
                    model.IsRB3Version = "0";
                    break;

                case "Rb_VFour_HuBei_Artificial_version":
                    model.IsRB3Version = "0";
                    break;

                case "Rb_VFour_HB_Artificial_version":
                    model.IsRB3Version = "0";
                    break;

                case "Rb_VFour_CQ_Artificial_version":
                    model.IsRB3Version = "0";
                    break;

                default:
                    model.IsRB3Version = "1";
                    break;
                }
            }
            #endregion
            model.ValidateCar = new ValidateCar()
            {
                BizValidateCar   = (submitInfo.BizcInspectorNme ?? 0).ToString(),
                ForceValidateCar = (submitInfo.ForcecInspectorNme ?? 0).ToString(),
                IsValidateCar    = ((submitInfo.ForcecInspectorNme ?? 0) | (submitInfo.BizcInspectorNme ?? 0)).ToString()
            };
            //新增错误编码和结果
            model.QuoteErrorCode   = submitInfo.ErrorCodeToC.HasValue ? submitInfo.ErrorCodeToC.Value.ToString() : "";
            model.QuoteErrorResult = submitInfo.quote_result_toc ?? "";
            model.ActualDiscounts  = (quoteresult.ActualDiscounts ?? 0).ToString();

            return(model);
        }
Exemplo n.º 18
0
        public static OrderDetailResponse ConverToViewModel(this OrderCacheResponse orderModel)
        {
            OrderDetailResponse orderDetail = new OrderDetailResponse();

            #region 实例化

            //新实例start
            var carOrder     = new CarOrder();
            var userInfo     = new UserInfo();
            var claimDetails = new List <ClaimDetail>();
            var precisePrice = new PrecisePrice();
            //新实例end
            //原有实例start
            bx_car_order           bxCarOrder     = orderModel.BxCarOrder;
            bx_userinfo            bxUserInfo     = orderModel.BxUserInfo;
            bx_quoteresult         bxQuoteResult  = orderModel.BxQuoteResult;
            bx_savequote           bxSaveQuote    = orderModel.BxSaveQuote;
            bx_submit_info         bxSubmitInfo   = orderModel.BxSubmitInfo;
            bx_lastinfo            bxLastInfo     = orderModel.BxLastInfo;
            bx_quoteresult_carinfo bxCarInfo      = orderModel.BxCarInfo;
            List <bx_claim_detail> bxClaimDetails = orderModel.BxClaimDetails;
            InsuranceStartDate     qrStartDate    = orderModel.QrStartDate;
            //原有实例end

            #endregion

            #region CarOrder转换

            if (bxCarOrder != null)
            {
                carOrder.AgentName   = string.Empty;
                carOrder.AgentMobile = string.Empty;
                if (bxCarOrder.cur_agent.HasValue)
                {
                    carOrder.Agent = bxCarOrder.cur_agent.Value;
                    //调用代理人列表
                    IAgentRepository agentRepository = new AgentRepository();
                    var curAgent = agentRepository.GetAgent(bxCarOrder.cur_agent.Value);
                    if (curAgent != null)
                    {
                        carOrder.AgentName   = curAgent.AgentName;
                        carOrder.AgentMobile = curAgent.Mobile;
                    }
                }
                carOrder.OpenId              = bxCarOrder.openid;
                carOrder.Mobile              = bxCarOrder.mobile;
                carOrder.ContactsName        = bxCarOrder.contacts_name;
                carOrder.OrderStatus         = bxCarOrder.order_status.HasValue ? bxCarOrder.order_status.Value : 0;
                carOrder.GetOrderTime        = bxCarOrder.GetOrderTime.ToString();
                carOrder.CreateTime          = bxCarOrder.create_time.ToString();
                carOrder.OrderId             = bxCarOrder.id;
                carOrder.Buid                = bxCarOrder.buid.HasValue ? bxCarOrder.buid.Value : 0;
                carOrder.Source              = bxCarOrder.source.HasValue ? bxCarOrder.source.Value : 0;
                carOrder.Source              = SourceGroupAlgorithm.GetNewSource((int)carOrder.Source);
                carOrder.InsuredName         = bxCarOrder.insured_name;
                carOrder.IdType              = bxCarOrder.id_type.HasValue ? bxCarOrder.id_type.Value : 2; //默认空时,赋值个“其他”
                carOrder.IdNum               = bxCarOrder.id_num;
                carOrder.IdImgFirst          = bxCarOrder.id_img_firs;
                carOrder.IdImgSecond         = bxCarOrder.id_img_secd;
                carOrder.ImageUrls           = bxCarOrder.imageUrls;
                carOrder.ProvinceName        = string.Empty;
                carOrder.CityName            = string.Empty;
                carOrder.AreaName            = string.Empty;
                carOrder.DistributionAddress = bxCarOrder.distribution_address;
                carOrder.DistributionName    = bxCarOrder.distribution_name;
                carOrder.DistributionPhone   = bxCarOrder.distribution_phone;
                carOrder.DistributionTime    = bxCarOrder.distribution_time.HasValue
                    ? bxCarOrder.distribution_time.Value.ToString("yyyy-MM-dd HH:mm:ss")
                    : string.Empty;
                carOrder.InsurancePrice = bxCarOrder.insurance_price.HasValue
                    ? (double)bxCarOrder.insurance_price.Value
                    : 0;
                carOrder.CarriagePrice = bxCarOrder.carriage_price.HasValue
                    ? (double)bxCarOrder.carriage_price.Value
                    : 0;
                carOrder.TotalPrice = bxCarOrder.total_price.HasValue
                    ? (double)bxCarOrder.total_price.Value
                    : 0;
                carOrder.Receipt          = bxCarOrder.receipt_title;
                carOrder.ReceiptHead      = bxCarOrder.receipt_head.HasValue ? bxCarOrder.receipt_head.Value : 0;
                carOrder.PayType          = bxCarOrder.pay_type.HasValue ? bxCarOrder.pay_type.Value : 0;
                carOrder.DistributionType = bxCarOrder.distribution_type.HasValue
                    ? bxCarOrder.distribution_type.Value
                    : 0;
            }

            #endregion

            #region UserInfo转换

            if (bxUserInfo != null)
            {
                userInfo.LicenseNo      = bxUserInfo.LicenseNo;
                userInfo.LicenseOwner   = bxUserInfo.LicenseOwner;
                userInfo.IdType         = bxUserInfo.OwnerIdCardType; //默认空时,赋值个“其他”
                userInfo.InsuredName    = bxUserInfo.InsuredName;
                userInfo.InsuredMobile  = bxUserInfo.InsuredMobile;
                userInfo.InsuredAddress = bxUserInfo.InsuredAddress;
                userInfo.InsuredIdType  = bxUserInfo.InsuredIdType.HasValue ? bxUserInfo.InsuredIdType.Value : 6;
                //默认空时,赋值个“其他”
                userInfo.CredentislasNum = bxUserInfo.InsuredIdCard;
                userInfo.Email           = bxUserInfo.Email;
                userInfo.CityCode        = !string.IsNullOrEmpty(bxUserInfo.CityCode)
                    ? int.Parse(bxUserInfo.CityCode)
                    : 0;
                //CarUsedType如下
                userInfo.EngineNo = bxUserInfo.EngineNo;
                userInfo.CarVin   = bxUserInfo.CarVIN;
                //PurchasePrice如下
                //SeatCount如下
                userInfo.ModleName    = bxUserInfo.MoldName;
                userInfo.RegisterDate = bxUserInfo.RegisterDate;
                //LastEndDate如下
                //LastBusinessEndDdate如下
                //ForceStartDate如下
                //BizStartDate如下
                //ClaimCount如下
            }

            #endregion

            #region QuoteResultCarInfo转换

            if (bxCarInfo != null)
            {
                userInfo.CarUsedType   = bxCarInfo.car_used_type.HasValue ? bxCarInfo.car_used_type.Value : 0;
                userInfo.PurchasePrice = bxCarInfo.purchase_price.HasValue ? (double)bxCarInfo.purchase_price.Value : 0;
                userInfo.SeatCount     = bxCarInfo.seat_count.HasValue ? bxCarInfo.seat_count.Value : 0;
            }

            #endregion

            #region ClaimDetails转换

            if (bxClaimDetails != null)
            {
                userInfo.ClaimCount = bxClaimDetails.Count;
                var claim       = new ClaimDetail();
                var claimDetail = new bx_claim_detail();
                for (int i = 0; i < userInfo.ClaimCount; i++)
                {
                    claim             = new ClaimDetail();
                    claimDetail       = new bx_claim_detail();
                    claimDetail       = bxClaimDetails[i];
                    claim.EndcaseTime = claimDetail.endcase_time.HasValue
                        ? claimDetail.endcase_time.Value.ToString()
                        : string.Empty;
                    claim.LossTime = claimDetail.loss_time.HasValue
                        ? claimDetail.loss_time.Value.ToString()
                        : string.Empty;
                    claim.PayAmount      = claimDetail.pay_amount.HasValue ? claimDetail.pay_amount.Value : 0;
                    claim.PayCompanyName = claimDetail.pay_company_name;
                    claimDetails.Add(claim);
                }
            }

            #endregion

            #region SaveQuote、QuoteResult、SubmitInfo转换

            if (bxSaveQuote != null)
            {
                bool isquoteresult = true;
                if (bxQuoteResult == null)
                {
                    isquoteresult = false;
                    bxQuoteResult = new bx_quoteresult();
                }
                precisePrice.BizTotal   = bxQuoteResult.BizTotal.HasValue ? bxQuoteResult.BizTotal.Value : 0;
                precisePrice.ForceTotal = bxQuoteResult.ForceTotal ?? 0;
                precisePrice.TaxTotal   = bxQuoteResult.TaxTotal ?? 0;
                precisePrice.Source     = bxQuoteResult.Source ?? 0;
                precisePrice.Source     = SourceGroupAlgorithm.GetNewSource((int)precisePrice.Source);
                precisePrice.JiaoQiang  = bxSaveQuote.JiaoQiang.HasValue ? bxSaveQuote.JiaoQiang.Value : 1;
                if (bxSubmitInfo != null)
                {
                    precisePrice.QuoteStatus = bxSubmitInfo.quote_status.HasValue
                        ? bxSubmitInfo.quote_status.Value
                        : 0;
                    precisePrice.QuoteResult  = bxSubmitInfo.quote_result;
                    precisePrice.SubmitStatus = bxSubmitInfo.submit_status.HasValue
                        ? bxSubmitInfo.submit_status.Value
                        : 0;
                    precisePrice.SubmitResult = bxSubmitInfo.submit_result;
                    precisePrice.BizTno       = bxSubmitInfo.biz_tno;
                    precisePrice.ForceTno     = bxSubmitInfo.force_pno;
                    precisePrice.BizSysRate   = bxSubmitInfo.biz_rate.HasValue ? (double)bxSubmitInfo.biz_rate.Value : 0;
                    precisePrice.ForceSysRate = bxSubmitInfo.force_rate.HasValue ? (double)bxSubmitInfo.force_rate.Value : 0;
                    //BenefitRate
                }
                precisePrice.CheSun = new XianZhongUnit
                {
                    BaoE =
                        isquoteresult
                            ? (bxQuoteResult.CheSunBE.HasValue ? bxQuoteResult.CheSunBE.Value : 0)
                            : (bxSaveQuote.CheSun.HasValue ? bxSaveQuote.CheSun.Value : 0),
                    BaoFei = bxQuoteResult.CheSun.HasValue ? bxQuoteResult.CheSun.Value : 0
                };
                precisePrice.SanZhe = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.SanZhe.HasValue ? bxSaveQuote.SanZhe.Value : 0,
                    BaoFei = bxQuoteResult.SanZhe.HasValue ? bxQuoteResult.SanZhe.Value : 0
                };
                precisePrice.DaoQiang = new XianZhongUnit
                {
                    BaoE =
                        isquoteresult
                            ? (bxQuoteResult.DaoQiangBE.HasValue ? bxQuoteResult.DaoQiangBE.Value : 0)
                            : (bxSaveQuote.DaoQiang.HasValue ? bxSaveQuote.DaoQiang.Value : 0),
                    BaoFei = bxQuoteResult.DaoQiang.HasValue ? bxQuoteResult.DaoQiang.Value : 0
                };
                precisePrice.SiJi = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.SiJi.HasValue ? bxSaveQuote.SiJi.Value : 0,
                    BaoFei = bxQuoteResult.SiJi.HasValue ? bxQuoteResult.SiJi.Value : 0
                };
                precisePrice.ChengKe = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.ChengKe.HasValue ? bxSaveQuote.ChengKe.Value : 0,
                    BaoFei = bxQuoteResult.ChengKe.HasValue ? bxQuoteResult.ChengKe.Value : 0
                };
                precisePrice.BoLi = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.BoLi.HasValue ? bxSaveQuote.BoLi.Value : 0,
                    BaoFei = bxQuoteResult.BoLi.HasValue ? bxQuoteResult.BoLi.Value : 0
                };
                precisePrice.HuaHen = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.HuaHen.HasValue ? bxSaveQuote.HuaHen.Value : 0,
                    BaoFei = bxQuoteResult.HuaHen.HasValue ? bxQuoteResult.HuaHen.Value : 0
                };
                precisePrice.BuJiMianCheSun = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.BuJiMianCheSun.HasValue ? bxSaveQuote.BuJiMianCheSun.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianCheSun.HasValue ? bxQuoteResult.BuJiMianCheSun.Value : 0
                };
                precisePrice.BuJiMianSanZhe = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.BuJiMianSanZhe.HasValue ? bxSaveQuote.BuJiMianSanZhe.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianSanZhe.HasValue ? bxQuoteResult.BuJiMianSanZhe.Value : 0
                };
                precisePrice.BuJiMianDaoQiang = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.BuJiMianDaoQiang.HasValue ? bxSaveQuote.BuJiMianDaoQiang.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianDaoQiang.HasValue ? bxQuoteResult.BuJiMianDaoQiang.Value : 0
                };
                precisePrice.BuJiMianChengKe = new XianZhongUnit()
                {
                    BaoE   = bxSaveQuote.BuJiMianChengKe.HasValue ? bxSaveQuote.BuJiMianChengKe.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianChengKe.HasValue ? bxQuoteResult.BuJiMianChengKe.Value : 0
                };
                precisePrice.BuJiMianSiJi = new XianZhongUnit()
                {
                    BaoE   = bxSaveQuote.BuJiMianSiJi.HasValue ? bxSaveQuote.BuJiMianSiJi.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianSiJi.HasValue ? bxQuoteResult.BuJiMianSiJi.Value : 0
                };
                precisePrice.BuJiMianHuaHen = new XianZhongUnit()
                {
                    BaoE   = bxSaveQuote.BuJiMianHuaHen.HasValue ? bxSaveQuote.BuJiMianHuaHen.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianHuaHen.HasValue ? bxQuoteResult.BuJiMianHuaHen.Value : 0
                };
                precisePrice.BuJiMianSheShui = new XianZhongUnit()
                {
                    BaoE   = bxSaveQuote.BuJiMianSheShui.HasValue ? bxSaveQuote.BuJiMianSheShui.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianSheShui.HasValue ? bxQuoteResult.BuJiMianSheShui.Value : 0
                };
                precisePrice.BuJiMianZiRan = new XianZhongUnit()
                {
                    BaoE   = bxSaveQuote.BuJiMianZiRan.HasValue ? bxSaveQuote.BuJiMianZiRan.Value : 0,
                    BaoFei = bxQuoteResult.BuJiMianZiRan.HasValue ? bxQuoteResult.BuJiMianZiRan.Value : 0
                };
                precisePrice.BuJiMianJingShenSunShi = new XianZhongUnit()
                {
                    BaoE =
                        bxSaveQuote.BuJiMianJingShenSunShi.HasValue
                            ? bxSaveQuote.BuJiMianJingShenSunShi.Value
                            : 0,
                    BaoFei =
                        bxQuoteResult.BuJiMianJingShenSunShi.HasValue
                            ? bxQuoteResult.BuJiMianJingShenSunShi.Value
                            : 0
                };
                precisePrice.SheShui = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.SheShui.HasValue ? bxSaveQuote.SheShui.Value : 0,
                    BaoFei = bxQuoteResult.SheShui.HasValue ? bxQuoteResult.SheShui.Value : 0
                };
                precisePrice.ZiRan = new XianZhongUnit
                {
                    BaoE =
                        isquoteresult
                            ? (bxQuoteResult.ZiRanBE.HasValue ? bxQuoteResult.ZiRanBE.Value : 0)
                            : (bxSaveQuote.ZiRan.HasValue ? bxSaveQuote.ZiRan.Value : 0),
                    BaoFei = bxQuoteResult.ZiRan.HasValue ? bxQuoteResult.ZiRan.Value : 0
                };
                precisePrice.HcSheBeiSunshi = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.HcSheBeiSunshi.HasValue ? bxSaveQuote.HcSheBeiSunshi.Value : 0,
                    BaoFei = bxQuoteResult.HcSheBeiSunshi.HasValue ? bxQuoteResult.HcSheBeiSunshi.Value : 0
                };
                precisePrice.HcHuoWuZeRen = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.HcHuoWuZeRen.HasValue ? bxSaveQuote.HcHuoWuZeRen.Value : 0,
                    BaoFei = bxQuoteResult.HcHuoWuZeRen.HasValue ? bxQuoteResult.HcHuoWuZeRen.Value : 0
                };
                precisePrice.HcFeiYongBuChang = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.HcFeiYongBuChang.HasValue ? bxSaveQuote.HcFeiYongBuChang.Value : 0,
                    BaoFei = bxQuoteResult.HcFeiYongBuChang.HasValue ? bxQuoteResult.HcFeiYongBuChang.Value : 0
                };
                precisePrice.HcJingShenSunShi = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.HcJingShenSunShi.HasValue ? bxSaveQuote.HcJingShenSunShi.Value : 0,
                    BaoFei = bxQuoteResult.HcJingShenSunShi.HasValue ? bxQuoteResult.HcJingShenSunShi.Value : 0
                };
                precisePrice.HcSanFangTeYue = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.HcSanFangTeYue.HasValue ? bxSaveQuote.HcSanFangTeYue.Value : 0,
                    BaoFei = bxQuoteResult.HcSanFangTeYue.HasValue ? bxQuoteResult.HcSanFangTeYue.Value : 0
                };
                precisePrice.HcXiuLiChang = new XianZhongUnit
                {
                    BaoE   = bxSaveQuote.HcXiuLiChang.HasValue ? bxSaveQuote.HcXiuLiChang.Value : 0,
                    BaoFei = bxQuoteResult.HcXiuLiChang.HasValue ? bxQuoteResult.HcXiuLiChang.Value : 0
                };
                precisePrice.HcXiuLiChangType = bxSaveQuote.HcXiuLiChangType.HasValue
                    ? bxSaveQuote.HcXiuLiChangType.Value.ToString()
                    : "-1";
                precisePrice.RateFactor1 = bxQuoteResult.RateFactor1.HasValue
                    ? (double)bxQuoteResult.RateFactor1.Value
                    : 0;
                precisePrice.RateFactor2 = bxQuoteResult.RateFactor2.HasValue
                    ? (double)bxQuoteResult.RateFactor2.Value
                    : 0;
                precisePrice.RateFactor3 = bxQuoteResult.RateFactor3.HasValue
                    ? (double)bxQuoteResult.RateFactor3.Value
                    : 0;
                precisePrice.RateFactor4 = bxQuoteResult.RateFactor4.HasValue
                    ? (double)bxQuoteResult.RateFactor4.Value
                    : 0;
            }

            #endregion

            #region LastInfo转换

            if (bxLastInfo != null)
            {
                userInfo.LastEndDate          = bxLastInfo.last_end_date;
                userInfo.LastBusinessEndDdate = bxLastInfo.last_business_end_date;
            }

            #endregion

            #region 保险起始时间

            if (qrStartDate != null)
            {
                userInfo.ForceStartDate = qrStartDate.ForceStartDate.HasValue
                    ? qrStartDate.ForceStartDate.Value.ToString()
                    : string.Empty;
                userInfo.BizStartDate = qrStartDate.BizStartDate.HasValue
                    ? qrStartDate.BizStartDate.Value.ToString()
                    : string.Empty;
            }

            #endregion

            orderDetail.CarOrder     = carOrder;
            orderDetail.ClaimDetail  = claimDetails;
            orderDetail.PrecisePrice = precisePrice;
            orderDetail.UserInfo     = userInfo;

            return(orderDetail);
        }
Exemplo n.º 19
0
        public PostSubmitInfoResponse PostSubmitInfo(PostSubmitInfoRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            PostSubmitInfoResponse response = new PostSubmitInfoResponse();
            //校验:1基础校验
            BaseResponse baseResponse = _validateService.Validate(request, pairs);

            if (baseResponse.Status == HttpStatusCode.Forbidden)
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            //校验2
            var validateResult = _postValidate.SubmitInfoValidate(request);

            if (validateResult.Item1.Status == HttpStatusCode.NotAcceptable)
            {
                response.Status = HttpStatusCode.NotAcceptable;
                return(response);
            }
            //实现
            //清理缓存
            string baojiaCacheKey = string.Empty;

            try
            {
                baojiaCacheKey = _removeHeBaoKey.RemoveHeBao(request);
            }
            catch (RedisOperateException exception)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                response.ErrMsg = exception.Message;
                return(response);
            }
            //中心传的商业险投保单号赋值
            string strBizNo = string.Empty;
            //中心传的商业险投保单号赋值
            string strForceNo = string.Empty;

            if (request.Source == 4 || request.Source == 1)
            {
                //人保、太保用tno
                strBizNo   = validateResult.Item3.biz_tno ?? "";
                strForceNo = validateResult.Item3.force_tno ?? "";
            }
            else
            {
                //非人保、非太保的用pno
                strBizNo   = validateResult.Item3.biz_pno ?? "";
                strForceNo = validateResult.Item3.force_pno ?? "";
            }
            //通知中心
            var msgBody = new
            {
                B_Uid          = validateResult.Item2.Id,
                Source         = SourceGroupAlgorithm.GetOldSource(request.Source),
                BiztNo         = strBizNo,
                ForcetNo       = strForceNo,
                LicenseNo      = validateResult.Item2.LicenseNo,
                NotifyCacheKey = baojiaCacheKey
            };

            //发送重新核保消息
            try
            {
                var msgbody = _messageCenter.SendToMessageCenter(msgBody.ToJson(),
                                                                 ConfigurationManager.AppSettings["MessageCenter"],
                                                                 ConfigurationManager.AppSettings["BxHeBaoAgainName"]);
            }
            catch (MessageException exception)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                response.ErrMsg = exception.Message;
                return(response);
            }
            response.Status = HttpStatusCode.OK;
            return(response);
        }