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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }