private async Task <GetReInfoResponse> GetReInfo_UserInfo_NOFound() { GetReInfoResponse response = new GetReInfoResponse() { }; return(response); }
private async Task <GetReInfoResponse> GetReInfo_SaveQuote_NOFound() { GetReInfoResponse response = new GetReInfoResponse() { LastInfo = new bx_lastinfo(), Status = HttpStatusCode.OK, UserInfo = new bx_userinfo() }; return(response); }
private async Task <GetReInfoResponse> GetReInfo_InValid_SecCode() { GetReInfoResponse response = new GetReInfoResponse() { LastInfo = new bx_lastinfo(), SaveQuote = new bx_savequote(), Status = HttpStatusCode.BadRequest, UserInfo = new bx_userinfo() }; return(response); }
public async Task <GetReInfoResponse> GetReInfo(GetReInfoRequest request) { var response = new GetReInfoResponse(); var isReadCache = true; var topAgent = request.Agent;//顶级代理人 //获取当前数据的角色addbygpj20180829 int roleType = _managerRoleRepository.GetRoleTypeByAgentId(request.ChildAgent > 0 ? request.ChildAgent : request.Agent); try { IBxAgent agentModel = _getAgentInfoService.GetAgentModelFactory(request.Agent); if (!agentModel.AgentCanUse()) { response.Status = HttpStatusCode.Forbidden; if (agentModel.endDate.HasValue && agentModel.endDate.Value < DateTime.Now) { response.BusinessMessage = string.Format("参数校验错误,账号已过期。过期时间为:{0}", agentModel.endDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); return(response); } response.BusinessMessage = "参数校验错误,账号已禁用。"; return(response); } //获取[顶级]代理人是否重复数据的标记addbygpj20180829 int repeateQuote = agentModel.repeat_quote; #region userinfo逻辑 //微信端逻辑 次级代理 if (request.ChildAgent > 0) { agentModel = _getAgentInfoService.GetAgentModelFactory(request.ChildAgent); if (agentModel.AgentCanUse()) { request.Agent = request.ChildAgent; } else { return(new GetReInfoResponse { BusinessMessage = "您的账号已被禁用,如有疑问请联系管理员。", Status = HttpStatusCode.Forbidden }); } } #region 摄像头的黑名单、查重过滤 bool isAdd = true; if (request.RenewalType == 3) { //黑名单 //查重 CameraBackDataViewModel backData = _fiterAndRepeatDataService.GetFiterData(request.LicenseNo, topAgent, request.ChildAgent, request.CustKey, request.CityCode, request.RenewalCarType, repeateQuote, roleType); if (backData != null) { if (backData.IsBlack) { //在黑名单列表中,无需继续往下,执行直接return return(new GetReInfoResponse { BusinessMessage = "车辆已进入黑名单,未执行续保操作", Status = HttpStatusCode.Forbidden }); } else { //不在黑名单列表中 if (!string.IsNullOrEmpty(backData.Buid) && !string.IsNullOrEmpty(backData.Agent) && !string.IsNullOrEmpty(backData.OpenId)) { isAdd = false; request.Agent = int.Parse(backData.Agent); request.CustKey = backData.OpenId; } } } } #endregion #region 操作bx_userinfo对象 bx_userinfo userinfo = UserinfoSearchFactory.Find(request, _userInfoRepository); if (userinfo == null) { if (!string.IsNullOrEmpty(_isAddIdCardBack6) && _isAddIdCardBack6.Equals("1") && string.IsNullOrEmpty(request.SixDigitsAfterIdCard)) { //如果身份证后6位字段为空,则取数据库中该车牌其他的记录的值 Stopwatch ssw = new Stopwatch(); ssw.Start(); //查重复数据 RepeatUserInfoModel model = new RepeatUserInfoModel(); List <RepeatUserInfoModel> listRepeat = _userInfoRepository.GetLicenseRepeat(topAgent, request.LicenseNo); if (listRepeat.Any()) { model = listRepeat.Where(l => l.SixDigitsAfterIdCard != null && l.SixDigitsAfterIdCard.Trim() != "").OrderByDescending(o => o.UpdateTime).FirstOrDefault(); } //取一条赋值后六位 if (model != null && model.Buid > 0) { request.SixDigitsAfterIdCard = model.SixDigitsAfterIdCard; } logError.Info(string.Format("buid为{0},后6位插入时间{1}", 0, ssw.ElapsedMilliseconds)); ssw.Stop(); } userinfo = UserinfoMakeFactory.Save(request, roleType, _userInfoRepository, agentModel.TopAgentId); if (request.IsLastYearNewCar == 1) { isReadCache = await _checkCarNeedDrivingInfoService.GetInfo(userinfo); } } else { if (!string.IsNullOrEmpty(_isAddIdCardBack6) && _isAddIdCardBack6.Equals("1") && string.IsNullOrEmpty(request.SixDigitsAfterIdCard) && string.IsNullOrEmpty(userinfo.SixDigitsAfterIdCard)) { //如果身份证后6位字段为空,则取数据库中该车牌其他的记录的值 Stopwatch ssw = new Stopwatch(); ssw.Start(); //查重复数据 RepeatUserInfoModel model = new RepeatUserInfoModel(); List <RepeatUserInfoModel> listRepeat = _userInfoRepository.GetLicenseRepeat(topAgent, request.LicenseNo); if (listRepeat.Any()) { model = listRepeat.Where(l => l.SixDigitsAfterIdCard != null && l.SixDigitsAfterIdCard.Trim() != "").OrderByDescending(o => o.UpdateTime).FirstOrDefault(); } //取一条赋值后六位 if (model != null && model.Buid > 0) { request.SixDigitsAfterIdCard = model.SixDigitsAfterIdCard; } logError.Info(string.Format("buid为{0},后6位插入时间{1}", userinfo.Id, ssw.ElapsedMilliseconds)); ssw.Stop(); } userinfo = UserinfoMakeFactory.Update(request, userinfo, _userInfoRepository, agentModel.TopAgentId); bool isNeedCheckNeed = !(request.IsLastYearNewCar == 1 & (!string.IsNullOrWhiteSpace(request.CarVin) && !string.IsNullOrWhiteSpace(request.EngineNo))); if (request.IsLastYearNewCar == 1) { //超过半年的数据要重新调用车型信息 if (userinfo.UpdateTime.HasValue && userinfo.UpdateTime.Value.AddMonths(6) <= DateTime.Now) { isReadCache = await _checkCarNeedDrivingInfoService.GetInfo(userinfo); } else { if (userinfo.NeedEngineNo == 1) //以前没有拿到行驶证信息 { if (isNeedCheckNeed) //没有拿到车架号及发动机号 { isReadCache = await _checkCarNeedDrivingInfoService.GetInfo(userinfo); } } } } } #endregion long buid = userinfo.Id; #endregion #region bx_quotereq_carinfo 逻辑 var reqCacheKey = string.Format("{0}-{1}", buid, "reqcarinfo"); var quotereq = _quoteReqCarinfoRepository.Find(buid); if (quotereq == null) { QuoteReqCarInfoMakeFactory.Save(buid, request.IsLastYearNewCar, _quoteReqCarinfoRepository); } else { QuoteReqCarInfoMakeFactory.Update(quotereq, request.IsLastYearNewCar, _quoteReqCarinfoRepository); } #endregion if (request.RenewalSource != -1) { #region 调用中心返回response信息 response = await _toCenterFromReInfoService.PushCenterService(request, buid, reqCacheKey); #endregion } if (response.BusinessStatus == 4 || request.RenewalSource == -1) { bool isOver = false; #region 读库数据 isOver = _getReInfoState.GetState(buid); response = new GetReInfoResponse(); response.UserInfo = _userInfoRepository.FindByBuid(buid); if (!isOver) { if (response.UserInfo.NeedEngineNo == 1) { //需要完善行驶证信息 response.BusinessStatus = 2; response.BusinessMessage = "需要完善行驶证信息(车辆信息和险种都没有获取到)"; } if (response.UserInfo.NeedEngineNo == 0 && response.UserInfo.RenewalStatus != 1) { //获取车辆信息成功,但获取险种失败 response.BusinessStatus = 3; response.BusinessMessage = "获取车辆信息成功(车架号,发动机号,品牌型号及初登日期),险种获取失败"; } if ((response.UserInfo.NeedEngineNo == 0 && response.UserInfo.LastYearSource > -1) || response.UserInfo.RenewalStatus == 1) { //续保成功 response.BusinessStatus = 1; response.BusinessMessage = "续保成功"; response.SaveQuote = _carRenewalRepository.FindByLicenseno(request.LicenseNo); response.CarInfo = _carInfoRepository.Find(response.UserInfo.LicenseNo); } } else { if (response.UserInfo.LastYearSource == -1) { response.BusinessStatus = -10002; response.BusinessMessage = "获取续保信息失败"; } } response.Status = HttpStatusCode.OK; #endregion } response.UserInfo.Id = buid; #region 发送分配请求 string moldName = response.UserInfo != null ? response.UserInfo.MoldName : string.Empty; //车型 string businessExpireDate = string.Empty; //商业险到期 string forceExpireDate = string.Empty; //交强险到期 if (response.SaveQuote != null) { businessExpireDate = response.SaveQuote.LastBizEndDate.HasValue ? response.SaveQuote.LastBizEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty; forceExpireDate = response.SaveQuote.LastForceEndDate.HasValue ? response.SaveQuote.LastForceEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : string.Empty; } //调用重新分配的接口 if (request.RenewalType == 3) { /* * 调用院院的分配方法,将数据推过去即可,无需返回值 * 20180820修改,1,去掉是否调用摄像头进店(api.config的IsUrlDistributed标识)判断;2,修改分配方法,调用刘松年的新版接口 */ #pragma warning disable CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法 Task.Factory.StartNew(() => { _sentDistributedService.SentDistributed(response.BusinessStatus, moldName, buid, topAgent, request.ChildAgent, userinfo.Agent, request.CityCode, request.LicenseNo, request.RenewalType, userinfo.RenewalType.Value, businessExpireDate, forceExpireDate, false, request.ChildAgent, request.CameraId, isAdd, repeateQuote, roleType, request.CustKey, request.CityCode); }); #pragma warning restore CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法 } #endregion #region 修改批续进来的状态 if (response.BusinessStatus == 1) { UpdateBatchRenewalStatus(buid, 1); } else if (response.BusinessStatus == 2) { UpdateBatchRenewalStatus(buid, 2); } else if (response.BusinessStatus == 3) { UpdateBatchRenewalStatus(buid, 4); } else { UpdateBatchRenewalStatus(buid, 2); } #endregion } catch (Exception ex) { MetricUtil.UnitReports("renewal_service"); response.Status = HttpStatusCode.ExpectationFailed; logError.Info("续保请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + ",请求对象信息:" + request.ToJson() + ";返回对象信息" + response.ToJson()); } return(response); }
public GetReInfoResponse GetReInfo(GetReInfoRequest request) { var xubaokey = new { LicenseNo = request.LicenseNo, Agent = request.Agent }; var xuBaoCacheKey = CommonCacheKeyFactory.MakeCacheKey(xubaokey); var xuBaoKey = string.Format("{0}-{1}", xuBaoCacheKey, "key"); var cacheKey = CacheProvider.Get <string>(xuBaoKey); if (cacheKey == null) { for (int i = 0; i < 30; i++) { cacheKey = CacheProvider.Get <string>(xuBaoKey); if (!string.IsNullOrWhiteSpace(cacheKey)) { break; } else { Task.Delay(TimeSpan.FromSeconds(1)); } } } if (!string.IsNullOrWhiteSpace(cacheKey)) { GetReInfoResponse response = new GetReInfoResponse(); //续保 需要的表 //bx_userinfo //bx_renewalquote //bx_carinfo //步骤1 续保的时候 会发送消息队列 ,这个时候 会把 key传过去eg:aaaa。 //步骤2 中心在续保的时候 ,需要根据这个key 设置一个开关 eg:aaaa-key:1,放在缓存中,成功的时候要置1,刚开始是空值 //等续保结束后,先将上面列出的表写入缓存 //其中: 键值分别是: //bx_userinfo :aaaa-userinfo //bx_renewalquote :aaaa-renewal //bx_carinfo :aaaa-carinfo //步骤3: 讲开关缓存设置续保完成标识:aaaa-key:1 //续保缓存标示(是否成功) if (cacheKey == "1") { response.UserInfo = CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo")); response.SaveQuote = CacheProvider.Get <bx_renewalquote>(string.Format("{0}-{1}", xuBaoCacheKey, "renewal")); response.CarInfo = CacheProvider.Get <bx_carinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "carinfo")); response.BusinessStatus = 1; } else { response = null; } return(response); } else { return(null); } }
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); }
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 async Task <GetReInfoResponse> GetReInfo(GetReInfoRequest request, long?buid = null) { ILog logInfo = LogManager.GetLogger("ERROR"); //logInfo.Info("读取缓存数据开始" + request.ToJson()); string xuBaoCacheKey = CommonCacheKeyFactory.CreateKeyWithLicense(request.LicenseNo + request.RenewalCarType); var xuBaoKey = string.Format("{0}-xb-{1}", xuBaoCacheKey, "key"); var cacheKey = CacheProvider.Get <string>(xuBaoKey); #region //var step1val = string.Empty; //var step1va2 = string.Empty; //var step1va3 = string.Empty; //var step1va4 = string.Empty; StringBuilder sb = new StringBuilder(); #endregion if (cacheKey == null) { for (int i = 0; i < 115; i++) { cacheKey = CacheProvider.Get <string>(xuBaoKey); //step1val = xuBaoKey; //step1va2 = cacheKey; if (!string.IsNullOrWhiteSpace(cacheKey)) { if (cacheKey == "0" || cacheKey == "1" || cacheKey == "2") { break; } } else { //ExecutionContext.SuppressFlow(); await Task.Delay(TimeSpan.FromSeconds(1)); //ExecutionContext.RestoreFlow(); } //logInfo.Info("读取缓存数据循环"+i+" "+ request.ToJson() + "; 缓存key是step1va2:" + step1va2 + " -- key:step1va1" + step1val); //sb.AppendLine("读取缓存数据循环" + i + " " + request.ToJson() + "; 缓存key是step1va2:" + step1va2 + // " -- key:step1va1" + step1val); } } GetReInfoResponse response = new GetReInfoResponse(); try { if (!string.IsNullOrWhiteSpace(cacheKey)) { //续保 需要的表 //bx_userinfo //bx_renewalquote //bx_carinfo //步骤1 续保的时候 会发送消息队列 ,这个时候 会把 key传过去eg:aaaa。 //步骤2 中心在续保的时候 ,需要根据这个key 设置一个开关 eg:aaaa-key:1,放在缓存中,成功的时候要置1,刚开始是空值 //等续保结束后,先将上面列出的表写入缓存 //其中: 键值分别是: //bx_userinfo :aaaa-userinfo //bx_car_renewal :aaaa-renewal //bx_carinfo :aaaa-carinfo //步骤3: 讲开关缓存设置续保完成标识:aaaa-key:1 //续保缓存标示(是否成功) var renwal = CommonCacheKeyFactory.CreateKeyWithLicense(request.LicenseNo + request.RenewalCarType); if (cacheKey == "1") { response.UserInfo = CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo")); response.SaveQuote = CacheProvider.Get <bx_car_renewal>(string.Format("{0}-{1}", renwal, "renewal")); response.CarInfo = CacheProvider.Get <bx_carinfo>(string.Format("{0}-{1}", renwal, "carinfo")); response.LastInfo = CacheProvider.Get <bx_lastinfo>(string.Format("{0}-{1}", renwal, "lastinfo")); //续保返回保费addbygpj20180926 response.RenewalPremium = CacheProvider.Get <bx_car_renewal_premium>(string.Format("{0}-{1}", renwal, "premium")); response.BusinessStatus = 1; } else if (cacheKey == "0") { #region 先获取平安验证码 if (buid != null) { if (request.ShowPACheckCode == 1 && string.IsNullOrWhiteSpace(request.RequestKey) && request.PAUKey == 0 && request.YZMArea == null) { /* * 如果平安续保返回需要验证码,缓存平安验证码信息 */ string payzmkey = string.Format("{0}-PAYZM", buid); CenterPicCodeCacheModel payzmvalue = CacheProvider.Get <CenterPicCodeCacheModel>(payzmkey); if (payzmvalue != null) { response = new GetReInfoResponse(); response.UserInfo = new bx_userinfo(); response.CenterPicCodeCacheModel = payzmvalue; if (response.CenterPicCodeCacheModel.ErrCode == -210002) { response.BusinessStatus = -10009; response.BusinessMessage = "获取续保信息失败,请输入验证码坐标"; } else if (response.CenterPicCodeCacheModel.ErrCode == -210003) { response.BusinessStatus = 0; response.BusinessMessage = "输入验证码错误"; } else if (response.CenterPicCodeCacheModel.ErrCode == -210004) { response.BusinessStatus = 0; response.BusinessMessage = "输入超时"; } response.Status = HttpStatusCode.OK; response.UserInfo.Id = (long)buid; return(response); } } } #endregion response.UserInfo = CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo")); response.CarInfo = CacheProvider.Get <bx_carinfo>(string.Format("{0}-{1}", renwal, "carinfo")); if (response.UserInfo.NeedEngineNo == 1) { response.BusinessStatus = 2; } else if (response.UserInfo.NeedEngineNo == 0) //去掉 && response.UserInfo.QuoteStatus == 0 { response.BusinessStatus = 3; } else { response.BusinessStatus = 4; } } else if (cacheKey == "2") { response.UserInfo = CacheProvider.Get <bx_userinfo>(string.Format("{0}-{1}", xuBaoCacheKey, "userinfo")); //var renwal = CommonCacheKeyFactory.CreateKeyWithLicense(request.LicenseNo); response.SaveQuote = new bx_car_renewal(); response.RenewalPremium = new bx_car_renewal_premium(); //CacheProvider.Get<bx_car_renewal>(string.Format("{0}-{1}", renwal, "renewal")); response.BusinessStatus = 8; response.LastInfo = CacheProvider.Get <bx_lastinfo>(string.Format("{0}-{1}", renwal, "lastinfo")); response.BusinessMessage = CacheProvider.Get <string>(string.Format("{0}-xb-company", xuBaoCacheKey)); } //过户车的模型 response.TransferModelList = CacheProvider.Get <List <TransferModel> >(string.Format("{0}-xb-key-newcarinfo", xuBaoCacheKey)); return(response); } else { response.UserInfo = new bx_userinfo(); //如果没拿到值,初始化以下基础信息字段 response.UserInfo.LicenseNo = request.LicenseNo; response.UserInfo.CarVIN = request.CarVin; response.UserInfo.EngineNo = request.EngineNo; response.BusinessStatus = 0;//缓存异常 response.BusinessMessage = "请求超时或缓存异常,请重试"; return(response); } } catch (Exception ex) { logInfo.Info("读取缓存发生异常" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException); } return(response); }