public void SetOrder_OrderStatusNull_CarinfoNull() { _carInfoRepository.Find(Arg.Any <string>()).Returns(x => null); _orderRepository.GetOrderStatus(Arg.Any <long>()).Returns(x => null); var result = _setOrderService.SetOrder(new MyBaoJiaViewModel(), new bx_userinfo() { Id = 1 }); Assert.AreEqual(0, result.HasOrder); Assert.AreEqual(0, result.OrderId); Assert.AreEqual(0, result.OrderStatus); Assert.AreEqual("", result.LicenseNo); Assert.AreEqual("0", result.PurchasePrice); }
public MyBaoJiaViewModel SetOrder(MyBaoJiaViewModel my, bx_userinfo userInfo) { //CarOrderStatusModel bxCarOrder = _orderRepository.GetOrderStatus(userInfo.Id); //if (bxCarOrder != null) //{ // my.HasOrder = 1; // my.OrderId = bxCarOrder.Id; // my.OrderStatus = bxCarOrder.OrderStatus.HasValue ? bxCarOrder.OrderStatus.Value : 0; //} //else //{ my.HasOrder = 0; my.OrderId = 0; my.OrderStatus = 0; //} if (!string.IsNullOrEmpty(userInfo.LicenseNo)) { my.LicenseNo = userInfo.LicenseNo; var carInfo = _carInfoRepository.Find(userInfo.LicenseNo); my.PurchasePrice = carInfo != null ? (carInfo.purchase_price.HasValue ? carInfo.purchase_price.Value.ToString() : "0") : "0"; } else { my.LicenseNo = ""; my.PurchasePrice = "0"; } return(my); }
public void SetOrder_OrderStatusNotNull_CarinfoNotNull() { ICarInfoRepository _carInfoRepository = Substitute.For <ICarInfoRepository>(); var _setOrderService = new SetOrderService(_orderRepository, _carInfoRepository); _carInfoRepository.Find(Arg.Any <string>()).Returns(x => new bx_carinfo() { purchase_price = 0.1m }); _orderRepository.GetOrderStatus(Arg.Any <long>()).Returns(x => new CarOrderStatusModel() { Id = 2, OrderStatus = 3 }); var result = _setOrderService.SetOrder(new MyBaoJiaViewModel(), new bx_userinfo() { Id = 1, LicenseNo = "京A12345" }); Assert.AreEqual(1, result.HasOrder); Assert.AreEqual(2, result.OrderId); Assert.AreEqual(3, result.OrderStatus); Assert.AreEqual("京A12345", result.LicenseNo); Assert.AreEqual("0.1", result.PurchasePrice); }
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 ReListViewModel GetReInfoList(GetReInfoListRequest request, IEnumerable <KeyValuePair <string, string> > pairs) { var model = new ReListViewModel(); var list = new List <Re>(); int totalCount = 0; IBxAgent agentModel = GetAgentModelFactory(request.Agent); //参数校验 if (!agentModel.AgentCanUse()) { model.BusinessStatus = -10001; model.StatusMessage = "参数校验错误,请检查您的校验码"; return(model); } //此处对续保消费系统不做校验 //if (!AppValidateReqest(pairs, request.SecCode)) //{ // model.BusinessStatus = -10001; // model.StatusMessage = "参数校验错误,请检查您的校验码"; // return model; //} try { //拼接where语句 var sbWhere = new StringBuilder(); sbWhere.Append(" QuoteStatus = -1 AND LENGTH(OpenId) > 9 AND IsTest=0 "); if (request.LastYearSource > -1) { sbWhere.Append(string.Format(" AND LastYearSource = {0} ", request.LastYearSource)); } if (request.RenewalStatus == 1) { //sbWhere.Append(" AND (( NeedEngineNo=0 AND RenewalStatus!=1 ) ") // .Append(" OR ( NeedEngineNo=0 AND LastYearSource>-1 ) ") //.Append(" OR ( RenewalStatus=1 )) "); sbWhere.Append(" AND (( NeedEngineNo=0 AND RenewalStatus=0 ) ") .Append(" OR ( RenewalStatus=1 )) "); } else if (request.RenewalStatus == 0) { //sbWhere.Append(" AND NeedEngineNo=1 AND RenewalStatus=0 "); //sbWhere.Append(" AND ( NeedEngineNo=1 OR RenewalStatus!=1 )"); sbWhere.Append(" AND (( NeedEngineNo=1 AND RenewalStatus=0 )") .Append(" OR ( RenewalStatus=-1 )) "); } if (request.IsOnlyMine.HasValue) { if (request.IsOnlyMine.Value == 0) { //查询当前代理人及子集的agent string agentids = _agentRepository.GetSonsIdToString(request.ChildAgent, true); if (!string.IsNullOrEmpty(agentids)) { sbWhere.Append(" AND Agent in (") .Append(agentids) .Append(") "); } } } else { sbWhere.Append(string.Format(" AND Agent ='{0}' ", request.ChildAgent)); } if (!string.IsNullOrWhiteSpace(request.LicenseNo)) { sbWhere.Append(string.Format(" AND (LicenseNo like '%{0}%' OR LicenseOwner like '%{0}%') ", request.LicenseNo.ToUpper())); } //查询列表 var userinfo = new List <bx_userinfo>(); userinfo = _userInfoRepository.FindReList(sbWhere.ToString(), request.PageSize, request.CurPage, out totalCount); //续保总数 model.TotalCount = totalCount; if (totalCount < 0) { model.BusinessStatus = 0; model.StatusMessage = "没有续保记录"; return(model); } if (userinfo.Count > 0) { Re re; foreach (var item in userinfo) { if (string.IsNullOrWhiteSpace(item.LicenseNo)) { continue; } re = new Re(); re.Buid = item.Id; //创建时间 if (item.CreateTime != null) { re.CreateTime = item.UpdateTime.HasValue ? item.UpdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : item.CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); } re.LastYearSource = item.LastYearSource; //配置基础信息 re.UserInfo = item.ConvertToViewModel(_carRenewalRepository.FindCarRenewal(item.Id), _carInfoRepository.Find(item.LicenseNo), _lastInfoRepository.GetByBuid(item.Id)); //续保状态,默认情况是0,如果是获取到车辆信息和正常续保成功,会返回1 re.RenewalStatus = 0; //续保判断返回信息 if (item.RenewalStatus == 1) { //续保成功 re.BusinessStatus = 1; re.StatusMessage = "续保成功"; re.RenewalStatus = 1; } else//0和-1 { if (item.NeedEngineNo == 1) { //需要完善行驶证信息 re.BusinessStatus = 2; re.StatusMessage = "需要完善行驶证信息(车辆信息和险种都没有获取到)"; re.UserInfo.BusinessExpireDate = ""; re.UserInfo.ForceExpireDate = ""; re.UserInfo.NextBusinessStartDate = ""; re.UserInfo.NextForceStartDate = ""; } if (item.NeedEngineNo == 0) { //获取车辆信息成功,但获取险种失败 re.BusinessStatus = 3; re.StatusMessage = "获取车辆信息成功(车架号,发动机号,品牌型号及初登日期),险种获取失败"; re.RenewalStatus = 1;//该情况属于续保成功 re.UserInfo.BusinessExpireDate = ""; re.UserInfo.ForceExpireDate = ""; re.UserInfo.NextBusinessStartDate = ""; re.UserInfo.NextForceStartDate = ""; } //if (item.NeedEngineNo == 0 && item.LastYearSource > -1) //{ // //续保成功 // re.BusinessStatus = 1; // re.StatusMessage = "续保成功"; // re.RenewalStatus = 1; //} if (item.RenewalStatus == -1) { re.BusinessStatus = 0; re.StatusMessage = "获取续保信息失败"; re.UserInfo.BusinessExpireDate = ""; re.UserInfo.ForceExpireDate = ""; re.UserInfo.NextBusinessStartDate = ""; re.UserInfo.NextForceStartDate = ""; } } #region 以前续保状态判断 注释掉 //if (item.NeedEngineNo == 1 && item.RenewalStatus == 0)//if (item.NeedEngineNo == 1) //{ // //需要完善行驶证信息 // re.BusinessStatus = 2; // re.StatusMessage = "需要完善行驶证信息(车辆信息和险种都没有获取到)"; // re.UserInfo.BusinessExpireDate = ""; // re.UserInfo.ForceExpireDate = ""; // re.UserInfo.NextBusinessStartDate = ""; // re.UserInfo.NextForceStartDate = ""; //} //if (item.RenewalStatus == -1)//if (item.LastYearSource == -1) //{ // re.BusinessStatus = 0; // re.StatusMessage = "获取续保信息失败"; // re.UserInfo.BusinessExpireDate = ""; // re.UserInfo.ForceExpireDate = ""; // re.UserInfo.NextBusinessStartDate = ""; // re.UserInfo.NextForceStartDate = ""; //} //if (item.NeedEngineNo == 0 && item.RenewalStatus == 0) //{ // //获取车辆信息成功,但获取险种失败 // re.BusinessStatus = 3; // re.StatusMessage = "获取车辆信息成功(车架号,发动机号,品牌型号及初登日期),险种获取失败"; // re.RenewalStatus = 1;//该情况属于续保成功 // re.UserInfo.BusinessExpireDate = ""; // re.UserInfo.ForceExpireDate = ""; // re.UserInfo.NextBusinessStartDate = ""; // re.UserInfo.NextForceStartDate = ""; //} //if ((item.NeedEngineNo == 0 && item.LastYearSource > -1) || item.RenewalStatus == 1)//if (item.RenewalStatus == 1)// //{ // //续保成功 // re.BusinessStatus = 1; // re.StatusMessage = "续保成功"; // re.RenewalStatus = 1; //} #endregion list.Add(re); } model.BusinessStatus = 1; model.ReList = list; } } catch (Exception ex) { model.BusinessStatus = -10003; model.StatusMessage = "服务发生异常"; logError.Info("续保列表接口请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException); } return(model); }