예제 #1
0
        /// <summary>
        /// 续保调用第三方接口传数据
        /// </summary>
        /// <param name="agent"></param>
        /// <param name="viewModel"></param>
        public void PostThirdPart(int agent, ViewModels.GetReInfoViewModel viewModel)
        {
            //请求第三方Url
            string strUrl = string.Empty;
            //取缓存值
            var cacheKey = string.Format("camera_url_{0}", agent);

            strUrl = CacheProvider.Get <string>(cacheKey);
            if (string.IsNullOrEmpty(strUrl))
            {
                bx_config config = _configRepository.Find(agent.ToString(), 4);
                strUrl = config != null ? config.config_value : "";
                CacheProvider.Set(cacheKey, strUrl, 10800);
            }
            //判断url是否为空
            if (string.IsNullOrEmpty(strUrl))
            {
                return;
            }
            IBxAgent agentModel = _getAgentInfoService.GetAgentModelFactory(agent);
            string   secretKey  = agentModel == null ? "" : agentModel.SecretKey;

            //执行post请求方法
            Task.Factory.StartNew(() => SendPost(agent, secretKey, strUrl, viewModel));
        }
예제 #2
0
        public DriverLicenseTypeResponse GetList(GetDriverLicenseCarTypeRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            DriverLicenseTypeResponse response = new DriverLicenseTypeResponse();

            //根据经纪人获取手机号
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            //参数校验
            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            var listskey = string.Format("gsc_driverlicense_cartype_key");
            var list     = CacheProvider.Get <List <bx_drivelicense_cartype> >(listskey);

            if (list == null)
            {
                list = _typeRepository.FindList();
                CacheProvider.Set(listskey, list, 86400);
            }
            response.List = list;

            return(response);
        }
        public GetParaBhTypeResponse GetParaBhType(GetParaBhTypeRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new GetParaBhTypeResponse();

            //参数校验
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            var list = _paraBhTypeRepository.GetListByTypeId(request.TypeId, request.IsAll);

            if (list.Count > 0)
            {
                response.Total          = list.Count;
                response.ParaBhTypeList = list;
            }
            else
            {
                response.ErrCode = -1;
            }
            return(response);
        }
        public WorkOrderDetailListResponse WorkOrderDetailList(WorkOrderDetailListRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new WorkOrderDetailListResponse();
            //bhToken校验
            //if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            //{
            //    response.ErrCode = -300;
            //    response.ErrMsg = "登录信息已过期,请重新登录";
            //    return response;
            //}
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.BadRequest;
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            try
            {
                //根据OpenId、车牌号、代理人Id找Buid
                bx_userinfo bxUserInfo = _userInfoRepository.FindByAgentLicense(request.LicenseNo, request.ChildAgent.ToString());
                if (bxUserInfo == null)
                {
                    response.ErrCode = 0;
                    response.ErrMsg  = "查不到此续保信息";
                    return(response);
                }
                var bxWorkOrder = _userinfoRenewalInfoRepository.FindByBuid(bxUserInfo.Id);
                if (bxWorkOrder != null)
                {
                    response.ErrCode             = 1;
                    response.WorkOrder           = bxWorkOrder;
                    response.WorkOrderDetailList = _consumerReviewRepository.FindDetails(bxUserInfo.Id);
                }
                else
                {
                    response.ErrCode = 0;
                    response.ErrMsg  = "查无数据";
                }
            }
            catch (Exception ex)
            {
                response.ErrCode = -1;
                logError.Info("获取受理记录异常,更新订单信息:" + request.ToJson() + "\n 异常信息:" + ex.StackTrace + " \n " + ex.Message);
            }
            return(response);
        }
        public MsgClosedOrderResponse MsgClosedOrder(MsgClosedOrderRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var      response   = new MsgClosedOrderResponse();
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            var bui = _userInfoRepository.FindByBuid(request.Buid);

            if (bui == null)
            {
                response.ErrCode = 0;
                response.ErrMsg  = "找不到该车辆信息";
                return(response);
            }
            response.LicenseNo = bui.LicenseNo;
            response.MoldName  = bui.MoldName;

            var bcr = _consumerReviewRepository.FindNewClosedOrder(request.Buid, 1);

            if (bcr == null)
            {
                response.ErrCode = -1;
                response.ErrMsg  = "该车辆未出单";
                return(response);
            }
            response.ReviewContent = bcr.content;

            var buri = _userinfoRenewalInfoRepository.FindByBuid(request.Buid);

            if (buri != null)
            {
                response.ErrCode = 1;

                response.SaAgent      = buri.sa_id.HasValue ? buri.sa_id.Value : 0;
                response.SaAgentName  = buri.sa_name;
                response.AdvAgent     = buri.xubao_id.HasValue ? buri.xubao_id.Value : 0;
                response.AdvAgentName = buri.xubao_name;
                response.SourceName   = buri.intentioncompany.HasValue ? buri.intentioncompany.Value.ToEnumDescriptionString(typeof(EnumSource)) : "";
            }
            return(response);
        }
예제 #6
0
        public BaseResponse ValidateAgent(BaseRequest request, bx_userinfo userinfo)
        {
            BaseResponse response      = new BaseResponse();
            IBxAgent     curagentModel = _getAgentInfoService.GetAgentModelFactory(int.Parse(userinfo.Agent));

            //由于前端传的是当前用户和顶级,故此处只判断顶级,否则部分数据可能显示不了
            if (curagentModel.Id == 0 || curagentModel.TopAgentId != request.Agent)
            {
                response.Status = HttpStatusCode.Forbidden;
                response.ErrMsg = "请求数据无权限";
                return(response);
            }
            return(response);
        }
예제 #7
0
        public async Task <GetCityListResponse> GetCityList(GetCityListRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new GetCityListResponse();
            //根据经纪人获取手机号
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //logInfo.Info("获取到的经纪人信息:"+agentModel.ToJson());
            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            try
            {
                var cities          = FindList();
                var configedCities  = new List <bx_city>();
                var configCities    = FindConfigCityList(int.Parse(_agentRepository.GetTopAgentId(request.Agent)));
                var configedCityIds = configCities.Select(x => x.city_id).Distinct();
                if (configedCityIds.Any())
                {
                    foreach (var i in configedCityIds)
                    {
                        var config  = (int)i;
                        var tmpcity = cities.FirstOrDefault(x => x.id == config);
                        if (tmpcity != null)
                        {
                            configedCities.Add(tmpcity);
                        }
                    }
                    response.Cities = configedCities;
                }

                response.Status = HttpStatusCode.OK;
            }
            catch (Exception ex)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("续保请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }

            return(response);
        }
        public IBxAgent GetCommonAgentModelFactory(int agentid, IAgentRepository agentRepository)
        {
            string   cacheKey   = string.Format("agent_key_cache_{0}", agentid);
            IBxAgent cacheValue = CacheProvider.Get <bx_agent>(cacheKey);

            if (cacheValue == null)
            {
                cacheValue = agentRepository.GetAgent(agentid);
                if (cacheValue == null)
                {
                    cacheValue = new NullBxAgent();
                }
                CacheProvider.Set(cacheKey, cacheValue, 120);//5分钟
            }
            return(cacheValue);
        }
예제 #9
0
        private IBxAgent GetAgentModel(int agentid)
        {
            string   cacheKey   = string.Format("agent_key_cache_{0}", agentid);
            IBxAgent cacheValue = _cacheService.Get <bx_agent>(cacheKey);

            if (cacheValue == null)
            {
                cacheValue = _agentRepository.GetAgent(agentid);
                if (cacheValue == null)
                {
                    cacheValue = new NullBxAgent();
                }
                _cacheService.Set(cacheKey, cacheValue, 120);//5分钟
            }
            return(cacheValue);
        }
예제 #10
0
        public async Task <GetContinedPeriodResponse> GetContinuedPeriod(GetCityContinuedPeriodRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            GetContinedPeriodResponse response = new GetContinedPeriodResponse();
            //根据经纪人获取手机号
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //logInfo.Info("获取到的经纪人信息:"+agentModel.ToJson());
            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            if (!agentModel.AgentCanQuote())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            try
            {
                var cacheKey = string.Format("continuedperiod_{0}", request.Agent);
                var cache    = CacheProvider.Get <List <bx_cityquoteday> >(cacheKey);
                if (cache == null)
                {
                    cache = _dayRepository.GetList(request.Agent);
                    CacheProvider.Set(cacheKey, cache, 600);
                    response.Items = cache;
                }
                else
                {
                    response.Items = cache;
                }
                response.Status = HttpStatusCode.OK;
            }
            catch (Exception ex)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("获取续保期列表请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }
            return(response);
        }
예제 #11
0
        public async Task <GetViolationInfoResponse> GetViolationList(GetViolationInfoRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            GetViolationInfoResponse response = new GetViolationInfoResponse();
            //根据经纪人获取手机号
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            //参数校验
            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            try
            {
                //微信端逻辑 次级代理
                if (request.ChildAgent > 0)
                {
                    request.Agent = request.ChildAgent;
                }
                response = await _userClaimCache.GetList(request);

                if (response == null)
                {
                    response        = new GetViolationInfoResponse();
                    response.Status = HttpStatusCode.ExpectationFailed;
                }
            }
            catch (Exception ex)
            {
                response        = new GetViolationInfoResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
            }
            return(response);
        }
        public MessageListResponse MessageListNew(MessageListRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new MessageListResponse();

            //bhToken校验
            if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            {
                response.ErrCode = -300;
                response.ErrMsg  = "登录信息已过期,请重新登录";
                return(response);
            }
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }
            var msgList = new List <BxMessage>();
            int total   = 0;//消息表的记录数

            msgList          = _messageRepository.FindNoReadAllList(request.ChildAgent, out total).ConvertToViewModel();
            response.MsgList =
                msgList.OrderByDescending(o => o.CreateTime)
                .Take(request.PageSize * request.CurPage)
                .Skip(request.PageSize * (request.CurPage - 1))
                .ToList();
            response.TotalCount = total;
            return(response);
        }
        public AddMessageResponse AddMessage(AddMessageRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new AddMessageResponse();
            //bhToken校验
            //if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            //{
            //    response.ErrCode = -300;
            //    response.ErrMsg = "登录信息已过期,请重新登录";
            //    return response;
            //}
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }

            if (AddMessage(request) > 0)
            {
                response.ErrCode = 1;
                response.ErrMsg  = "消息添加成功";
            }
            else
            {
                response.ErrCode = 0;
                response.ErrMsg  = "消息添加失败";
            }
            return(response);
        }
예제 #14
0
        public BaseResponse Validate(BaseRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            BaseResponse response   = new BaseResponse();
            IBxAgent     agentModel = _getAgentInfoService.GetAgentModelFactory(request.Agent);

            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                if (agentModel.endDate.HasValue && agentModel.endDate.Value < DateTime.Now)
                {
                    response.ErrMsg = string.Format("参数校验错误,账号已过期。过期时间为:{0}", agentModel.endDate.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                    return(response);
                }
                response.ErrMsg = "参数校验错误,账号已禁用。";
                return(response);
            }
            if (!_checkGetSecCode.ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                response.ErrMsg = "参数校验错误,SecCode校验出错。";
                return(response);
            }
            return(response);
        }
        public ReadMessageResponse ReadMessage(ReadMessageRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var      response   = new ReadMessageResponse();
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }

            int result = 0;

            switch (request.MsgType)
            {
            case 1:
            {        //修改bx_notice_xb表
                bx_notice_xb bxNoticeXb = _noticexbRepository.Find(request.MsgId);
                if (bxNoticeXb != null)
                {
                    bxNoticeXb.stauts = 1;
                    result            = _noticexbRepository.Update(bxNoticeXb);
                }
            }
            break;

            case 2:
            {        //修改bx_consumer_review表
                bx_consumer_review bxConsumerReview = _consumerReviewRepository.Find(request.MsgId);
                if (bxConsumerReview != null)
                {
                    bxConsumerReview.read_status = 1;
                    result = _consumerReviewRepository.UpdateDetail(bxConsumerReview);
                }
            }
            break;

            default:
            {        //修改bx_message表
                bx_message bxMessage = _messageRepository.Find(request.MsgId);
                if (bxMessage != null)
                {
                    bxMessage.Msg_Status  = 1;
                    bxMessage.Update_Time = DateTime.Now;
                    result = _messageRepository.Update(bxMessage);
                }
            }
            break;
            }
            if (result > 0)
            {
                response.Status = HttpStatusCode.OK;
            }
            return(response);
        }
        public async Task<GetIntelligentReInfoResponse> GetIntelligentReInfo(GetIntelligentReInfoRequest request, IEnumerable<KeyValuePair<string, string>> pairs)
        {
            var response = new GetIntelligentReInfoResponse();
            var isReadCache = true;
            try
            {
                //代理人校验
                IBxAgent agentModel = _getAgentInfoService.GetAgentModelFactory(request.Agent);
                if (!agentModel.AgentCanUse())
                {
                    response.Status = HttpStatusCode.Forbidden;
                    if (agentModel.endDate.HasValue && agentModel.endDate.Value < DateTime.Now)
                    {
                        response.ErrMsg = string.Format("参数校验错误,账号已过期。过期时间为:{0}", agentModel.endDate.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                        return response;
                    }
                    response.ErrMsg = "参数校验错误,账号已禁用。";
                    return response;
                }
                if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return response;
                }
                //微信端逻辑 次级代理
                if (request.ChildAgent > 0)
                {
                    var item = _agentRepository.GetAgent(request.ChildAgent);
                    if (item != null && item.IsUsed == 1)
                    {
                        request.Agent = request.ChildAgent;
                    }
                    else
                    {
                        return new GetIntelligentReInfoResponse
                        {
                            ErrMsg = "您的账号已被禁用,如有疑问请联系管理员。",
                            Status = HttpStatusCode.Forbidden
                        };
                    }
                }
                ///先从库里读取,没有在走后续流程
                if (request.IsCarVin == 1)
                {
                    //根据车架号查询
                    response.CarInfo = _carInfoRepository.FindVinCarInfo(request.CarVin, request.RenewalCarType);

                }
                else
                {
                    //车牌号查询
                    response.CarInfo = _carInfoRepository.FindOrderDate(request.LicenseNo, request.RenewalCarType);
                }

                response.Status = HttpStatusCode.OK;
                if (response.CarInfo != null)
                {
                    response.ErrCode = 1;
                    response.ErrMsg = "成功获取信息";
                    //然后调用中心取险种推荐的逻辑
                    response.SaveQuote = new SaveQuoteViewModel();
                    bx_car_renewal car_Renewal = _carRenewalRepository.FindByLicenseno(response.CarInfo.license_no);
                    if (car_Renewal != null)
                    {
                        response.SaveQuote = car_Renewal.ConvetToViewModel();
                    }
                    else
                    {
                        request.MoldName = response.CarInfo.mold_name;
                        request.RegisterDate = response.CarInfo.register_date.HasValue ? response.CarInfo.register_date.Value.ToString("yyyy-MM-dd") : string.Empty;
                        response.IsIntelligent = 1;
                        //获取推荐信息失败,也返回1
                        var tuple = await _getIntelligentInsurance.GetCenterInsurance(request);
                        response.SaveQuote = tuple.Item1;
                        if (!tuple.Item2) {
                            response.ErrCode = 2;
                            response.ErrMsg = "成功获取车辆信息,未获取到险种信息";
                        }
                    }
                }
                else
                {
                    response.ErrCode = 0;
                    response.ErrMsg = "未获取到车辆信息";
                }
#pragma warning disable CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法
                Task.Factory.StartNew(() =>
                {
                    GetReInfoRequest requestNew = new GetReInfoRequest()
                    {
                        LicenseNo = request.LicenseNo,
                        Agent = request.Agent
                    };
                    int datastatus = int.Parse(response.ErrCode.ToString() + response.IsIntelligent.ToString());
                    _renewalStatusService.AddRenewalStatus(response.ErrCode, requestNew);
                });
#pragma warning restore CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法
                return response;
            }
            catch (Exception ex)
            {
                response = new GetIntelligentReInfoResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("获取简易续保信息发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }
            return response;
        }
        public MessageListResponse MessageList(MessageListRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new MessageListResponse();

            //bhToken校验
            if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            {
                response.ErrCode = -300;
                response.ErrMsg  = "登录信息已过期,请重新登录";
                return(response);
            }
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.ErrCode = -10001;
                response.ErrMsg  = "参数校验错误,请检查您的校验码";
                return(response);
            }

            var         msgList = new List <BxMessage>();
            BxMessage   bmsg;
            bx_agent    bxAgent;
            bx_userinfo bxUserinfo;
            int         totalmsg = 0; //消息表的记录数
            int         totalxb  = 0; //续保表的记录数
            int         totalrw  = 0; //回访通知表的记录数

            //从bx_message里取数据
            List <bx_message> listMsg = _messageRepository.FindNoReadList(request.ChildAgent, out totalmsg);
            //从bx_noticexb里取数据
            List <bx_notice_xb> listXb = _noticexbRepository.FindNoReadList(request.ChildAgent, out totalxb);
            //从bx_consumer_review里取数据
            List <bx_consumer_review> listRw = _consumerReviewRepository.FindNoReadList(request.ChildAgent, out totalrw);

            #region bx_message表数据
            if (listMsg.Any())
            {
                foreach (var itemMsg in listMsg)
                {
                    bmsg = new BxMessage
                    {
                        StrId     = "Msg_" + itemMsg.Id,
                        Id        = itemMsg.Id,
                        MsgLevel  = itemMsg.Msg_Level.HasValue ? itemMsg.Msg_Level.Value : 0,
                        MsgStatus = itemMsg.Msg_Status.HasValue ? itemMsg.Msg_Status.Value : 0,
                        MsgType   = itemMsg.Msg_Type,
                        SendTime  =
                            itemMsg.Send_Time.HasValue ? itemMsg.Send_Time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                        Title      = itemMsg.Title,
                        Body       = itemMsg.Body,
                        UpdateTime =
                            itemMsg.Update_Time.HasValue
                                ? itemMsg.Update_Time.Value.ToString("yyyy-MM-dd HH:mm:ss")
                                : "",
                        Url     = itemMsg.Url,
                        AgentId = itemMsg.Agent_Id.HasValue ? itemMsg.Agent_Id.Value : 0
                    };
                    //Agent
                    bxAgent        = _agentRepository.GetAgent(bmsg.AgentId);
                    bmsg.AgentName = bxAgent != null ? bxAgent.AgentName : "";
                    //CreateAgent
                    bmsg.CreateAgentId   = itemMsg.Create_Agent_Id;
                    bxAgent              = _agentRepository.GetAgent(bmsg.CreateAgentId);
                    bmsg.CreateAgentName = bxAgent != null ? bxAgent.AgentName : "";

                    bmsg.CreateTime = itemMsg.Create_Time.HasValue ? itemMsg.Create_Time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";

                    if (itemMsg.Buid.HasValue)
                    {
                        bmsg.Buid       = itemMsg.Buid.Value;
                        bmsg.LicenseNo  = itemMsg.License_No;
                        bxUserinfo      = new bx_userinfo();
                        bxUserinfo      = _userInfoRepository.FindByBuid(itemMsg.Buid.Value);
                        bmsg.OwnerAgent = bxUserinfo != null?int.Parse(bxUserinfo.Agent) : 0;
                    }
                    msgList.Add(bmsg);
                }
            }
            #endregion
            #region bx_noticexb表数据
            if (listXb.Any())
            {
                foreach (var itemXb in listXb)
                {
                    bmsg = new BxMessage
                    {
                        StrId      = "Xb_" + itemXb.id,
                        Id         = itemXb.id,
                        MsgLevel   = 1,
                        MsgStatus  = itemXb.stauts,
                        MsgType    = 1,
                        SendTime   = itemXb.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
                        Title      = "到期通知",
                        Body       = string.Format("{0},车险{1}天后到期", itemXb.license_no, itemXb.day_num.Value.ToString()),
                        UpdateTime = "",
                        Url        = "",
                        AgentId    = itemXb.agent_id
                    };
                    //Agent
                    bxAgent        = _agentRepository.GetAgent(bmsg.AgentId);
                    bmsg.AgentName = bxAgent != null ? bxAgent.AgentName : "";
                    //CreateAgent
                    bmsg.CreateAgentId   = itemXb.agent_id;
                    bmsg.CreateAgentName = bxAgent != null ? bxAgent.AgentName : "";
                    bmsg.CreateTime      = itemXb.create_time.ToString("yyyy-MM-dd HH:mm:ss");

                    bmsg.LicenseNo          = itemXb.license_no;
                    bmsg.LastForceEndDate   = itemXb.last_force_end_date.HasValue ? itemXb.last_force_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
                    bmsg.LastBizEndDate     = itemXb.Last_biz_end_date.HasValue ? itemXb.Last_biz_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
                    bmsg.NextForceStartDate = itemXb.next_force_start_date.HasValue ? itemXb.next_force_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
                    bmsg.NextBizStartDate   = itemXb.next_biz_start_date.HasValue ? itemXb.next_biz_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
                    bmsg.Source             = itemXb.source;
                    bmsg.Days = itemXb.days.HasValue ? itemXb.days.Value : 0;
                    bmsg.Buid = itemXb.b_uid;

                    //根据buid获取当前的userinfo的agent,方便查看详情
                    bxUserinfo      = new bx_userinfo();
                    bxUserinfo      = _userInfoRepository.FindByBuid(itemXb.b_uid);
                    bmsg.OwnerAgent = bxUserinfo != null?int.Parse(bxUserinfo.Agent) : 0;

                    msgList.Add(bmsg);
                }
            }
            #endregion
            #region bx_consumer_review表数据
            if (listRw.Any())
            {
                foreach (var itemRw in listRw)
                {
                    bmsg = new BxMessage
                    {
                        StrId     = "Rw_" + itemRw.id,
                        Id        = itemRw.id,
                        MsgLevel  = 1,
                        MsgStatus = itemRw.read_status.Value,
                        MsgType   = 2,
                        SendTime  = itemRw.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                        Title     = "回访通知"
                    };
                    if (itemRw.b_uid.HasValue)
                    {
                        bmsg.Buid       = itemRw.b_uid.Value;
                        bxUserinfo      = new bx_userinfo();
                        bxUserinfo      = _userInfoRepository.FindByBuid(itemRw.b_uid.Value);
                        bmsg.LicenseNo  = bxUserinfo != null ? bxUserinfo.LicenseNo : "";
                        bmsg.OwnerAgent = bxUserinfo != null?int.Parse(bxUserinfo.Agent) : 0;
                    }
                    DateTime dt = itemRw.next_review_date.Value;
                    bmsg.Body       = string.Format("{0}月{1}日{2} 需回访{3}", dt.Month, dt.Day, dt.ToString("hh:mm"), bmsg.LicenseNo);
                    bmsg.UpdateTime = "";
                    bmsg.Url        = "";
                    //Agent
                    bmsg.AgentId   = itemRw.operatorId.Value;
                    bmsg.AgentName = itemRw.operatorName;
                    //CreateAgent
                    bmsg.CreateAgentId   = itemRw.operatorId.Value;
                    bmsg.CreateAgentName = itemRw.operatorName;
                    bmsg.CreateTime      = itemRw.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss");

                    bmsg.Buid = itemRw.b_uid.Value;

                    msgList.Add(bmsg);
                }
            }
            #endregion
            response.MsgList =
                msgList.OrderByDescending(o => o.CreateTime)
                .Take(request.PageSize * request.CurPage)
                .Skip(request.PageSize * (request.CurPage - 1))
                .ToList();
            response.TotalCount = totalmsg + totalxb + totalrw;
            return(response);
        }
        public async Task <GetReportClaimResponse> GetReportClaim(GetReportClaimRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new GetReportClaimResponse();

            //根据经纪人获取手机号
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //logInfo.Info("获取到的经纪人信息:"+agentModel.ToJson());
            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            if (agentModel.IsUsed != 1)
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            bool      isSucceed = false;
            bx_charge charge    = _chargeRepository.Find(request.Agent, request.BusyKey); //2 :报备类型

            if (charge == null)
            {
                response.Status = HttpStatusCode.BadRequest;
                return(response);
            }

            try
            {
                string reportClaimFlagKey      = string.Format("{0}_claim_key", request.LicenseNo);
                string reportClaimCacheKey     = string.Format("{0}_{1}", request.LicenseNo, "reportClaim");
                string historyContractCacheKey = string.Format("{0}_{1}", request.LicenseNo, "historyContract");
                //CacheProvider.Remove(reportClaimCacheKey);
                //CacheProvider.Remove(historyContractCacheKey);
                //CacheProvider.Remove(reportClaimFlagKey);
                var reportClaimFlagCache = CacheProvider.Get <string>(reportClaimFlagKey);
                if (reportClaimFlagCache != null)
                {
                    isSucceed = true;
                    var reportClaimCache     = CacheProvider.Get <List <bx_report_claim> >(reportClaimCacheKey);
                    var historyContractCache = CacheProvider.Get <List <bx_history_contract> >(historyContractCacheKey);
                    response.ClaimList    = reportClaimCache;
                    response.ContractList = historyContractCache;
                }
                else
                {
                    //发送请求 checkneed
                    using (var client = new HttpClient())
                    {
                        client.Timeout = TimeSpan.FromMinutes(1);
                        string _choosebaobei = System.Configuration.ConfigurationManager.AppSettings["ChooseBaoBei"];
                        var    choseVal      = string.IsNullOrWhiteSpace(_choosebaobei) ? 0 : int.Parse(_choosebaobei);
                        var    baobeiUrl     = string.Empty;
                        string getUrl        = string.Empty;
                        if (choseVal == 0)
                        {
                            baobeiUrl = _baobeizhlhurl;
                            getUrl    =
                                string.Format(
                                    "/api/ZhongHua/GetUnderwriteClaimsInfo?licenceCode={0}&engineNo={1}&carVin={2}&type={3}",
                                    request.LicenseNo, request.EngineNo, request.CarVin, request.Type);
                        }
                        else
                        {
                            baobeiUrl = _baobeigscurl;
                            getUrl    =
                                string.Format(
                                    "/api/GuoShouCai/GetUnderwriteClaimsInfo?licenceCode={0}&engineNo={1}&carVin={2}&type={3}",
                                    request.LicenseNo, request.EngineNo, request.CarVin, request.Type);
                        }
                        client.BaseAddress = new Uri(baobeiUrl);
                        //getUrl =
                        //   string.Format(
                        //       "/api/GuoShouCai/GetUnderwriteClaimsInfo?licenceCode={0}&engineNo={1}&carVin={2}&type={3}",
                        //       request.LicenseNo, request.EngineNo, request.CarVin, request.Type);
                        HttpResponseMessage res = await client.GetAsync(getUrl);

                        if (res.IsSuccessStatusCode)
                        {
                            WaGuoShouCaiQuoteResponse result =
                                await res.Content.ReadAsAsync <WaGuoShouCaiQuoteResponse>();

                            if (result.ErrCode == 0)
                            {
                                var reportClaimList           = result.GuoShouCaiQuoteResult.ClaimsLinsInfo;
                                var existList                 = _reportClaimRepository.FindList(request.LicenseNo);
                                List <bx_report_claim> claims = new List <bx_report_claim>();
                                if (reportClaimList.Count != existList.Count)
                                {
                                    if (reportClaimList.Count > 0)
                                    {
                                        _reportClaimRepository.Remove(request.LicenseNo);
                                        claims =
                                            reportClaimList.Select(claimsListInfo => new bx_report_claim
                                        {
                                            AccidentPlace = claimsListInfo.AccidentPlace,
                                            AccidentPsss  = claimsListInfo.AccidentPsss,
                                            DriverName    = claimsListInfo.DriverName,
                                            IsCommerce    = claimsListInfo.IsCommerce,
                                            IsOwners      = claimsListInfo.IsOwners,
                                            IsThreecCar   = claimsListInfo.IsThreecCar,
                                            LicenseNo     = request.LicenseNo,
                                            ReportDate    =
                                                string.IsNullOrWhiteSpace(claimsListInfo.ReportDate)
                                                        ? DateTime.MinValue
                                                        : DateTime.Parse(claimsListInfo.ReportDate),
                                        }).ToList();
                                        _reportClaimRepository.Add(claims);
                                    }
                                }
                                else
                                {
                                    claims = existList;
                                }
                                //放入缓存
                                CacheProvider.Set(reportClaimCacheKey, claims, 86400);
                                response.ClaimList = claims;

                                var historyList      = result.GuoShouCaiQuoteResult.HistoryContractInfo;
                                var existHistoryList = _historyClaimRepository.FindList(request.LicenseNo);
                                List <bx_history_contract> historyContracts = new List <bx_history_contract>();
                                if (historyList != null && existHistoryList.Count != historyList.Count)
                                {
                                    if (historyList.Count > 0)
                                    {
                                        _historyClaimRepository.Remove(request.LicenseNo);
                                        historyContracts = historyList.Select(info => new bx_history_contract
                                        {
                                            Enddate           = DateTime.Parse(info.Enddate),
                                            InsureCompanyName = info.InsureCompanyName,
                                            IsCommerce        = info.IsCommerce,
                                            LicenseNo         = request.LicenseNo,
                                            PolicyNo          = info.PolicyNo,
                                            Strdate           = DateTime.Parse(info.Strdate),
                                        }).ToList();
                                        _historyClaimRepository.Add(historyContracts);
                                    }
                                }
                                else
                                {
                                    historyContracts = existHistoryList;
                                }
                                //放入缓存
                                CacheProvider.Set(historyContractCacheKey, historyContracts, 86400);
                                response.ContractList = historyContracts;


                                CacheProvider.Set(reportClaimFlagKey, 1, 86000);
                                isSucceed = true;
                                //#region

                                //////更新bx_charge
                                //if (charge.total_count == charge.used_count)
                                //{
                                //    //余额不足
                                //    response.Status = HttpStatusCode.OK;
                                //    response.ErrCode = -2;
                                //    response.ClaimList = new List<bx_report_claim>();
                                //    response.ContractList = new List<bx_history_contract>();
                                //    return response;
                                //}

                                //charge.used_count += 1;
                                //charge.update_time = DateTime.Now;
                                //var chargeCount = _chargeRepository.Update(charge);
                                //if (chargeCount == 1)
                                //{
                                //    //插入bx_charge_history
                                //    var history = new bx_charge_history
                                //    {
                                //        charge_id = charge.id,
                                //        license_no = request.LicenseNo,
                                //        result_status = 1 //成功

                                //    };
                                //    _chargeHistoryRepository.Add(history);
                                //}
                                //response.TotalCount = charge.total_count.HasValue ? charge.total_count.Value : 0;
                                //response.UsedCount = charge.used_count.HasValue ? charge.used_count.Value : 0;
                                ////response.List = result.ClaimList;
                                //response.Status = HttpStatusCode.OK;
                                //response.ErrCode = 0;
                                //return response;

                                //#endregion
                            }
                            else
                            {
                                CacheProvider.Remove(reportClaimFlagKey);
                                //插入bx_charge_history
                                var history = new bx_charge_history
                                {
                                    charge_id     = charge.id,
                                    license_no    = request.LicenseNo,
                                    result_status = 0 //失败
                                };
                                _chargeHistoryRepository.Add(history);
                                response.Status  = HttpStatusCode.OK;
                                response.ErrCode = result.ErrCode; //-2:查询车辆信息失败    -1202:请提供正确的车架号和发动机号 -3:获取历史承保信息信息失败  -4:获取理赔信息失败
                                return(response);
                            }
                        }
                        else
                        {
                            logError.Info("收费服务-获取车辆出险信息发生异常:调用接口getclaimhistory失败");
                        }
                    }
                }
                if (isSucceed)
                {
                    //更新bx_charge
                    if (charge.total_count <= charge.used_count)
                    {
                        //余额不足
                        response.Status       = HttpStatusCode.OK;
                        response.ClaimList    = new List <bx_report_claim>();
                        response.ContractList = new List <bx_history_contract>();
                        response.TotalCount   = charge.total_count.HasValue ? charge.total_count.Value : 0;
                        response.UsedCount    = charge.used_count.HasValue ? charge.used_count.Value : 0;
                        response.ErrCode      = -5;
                        return(response);
                    }

                    charge.used_count += 1;
                    charge.update_time = DateTime.Now;
                    var chargeCount = _chargeRepository.Update(charge);
                    if (chargeCount == 1)
                    {
                        //插入bx_charge_history
                        var history = new bx_charge_history
                        {
                            charge_id     = charge.id,
                            license_no    = request.LicenseNo,
                            result_status = 1 //成功
                        };
                        _chargeHistoryRepository.Add(history);
                    }
                    response.TotalCount = charge.total_count.HasValue ? charge.total_count.Value : 0;
                    response.UsedCount  = charge.used_count.HasValue ? charge.used_count.Value : 0;
                    //response.List = result.ClaimList;
                    response.Status  = HttpStatusCode.OK;
                    response.ErrCode = 0;
                }
                else
                {
                    CacheProvider.Remove(reportClaimFlagKey);
                }
                return(response);
            }
            catch (TaskCanceledException ex)
            {
                response.Status = HttpStatusCode.RequestTimeout;
            }
            catch (Exception ex)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("收费服务-获取车辆出险信息发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }

            return(response);
        }
        public async Task <UpdateChargeResponse> Update(UpdateChargeRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new UpdateChargeResponse();

            //根据经纪人获取手机号
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //logInfo.Info("获取到的经纪人信息:"+agentModel.ToJson());
            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            bx_charge charge = _chargeRepository.Find(request.Agent, request.BusyKey);

            if (charge == null)
            {
                response.Status = HttpStatusCode.BadRequest;
                return(response);
            }
            try
            {
                //发送请求 checkneed
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(_url);
                    var requestmodel = new
                    {
                        LicenseNo = request.LicenseNo,
                        Agent     = request.Agent
                    };

                    HttpResponseMessage res = await client.PostAsJsonAsync("api/userinfo/FindCarInfoBy", requestmodel);

                    if (res.IsSuccessStatusCode)
                    {
                        WaFindCarInfoResponse result = await res.Content.ReadAsAsync <WaFindCarInfoResponse>();

                        if (result.ErrCode == 0)
                        {
                            //更新bx_charge

                            if (charge.total_count == charge.used_count)
                            {
                                //余额不足
                                response.Status  = HttpStatusCode.OK;
                                response.ErrCode = -2;
                                return(response);
                            }

                            charge.used_count += 1;
                            charge.update_time = DateTime.Now;
                            var chargeCount = _chargeRepository.Update(charge);
                            if (chargeCount == 1)
                            {
                                //插入bx_charge_history
                                var history = new bx_charge_history
                                {
                                    charge_id     = charge.id,
                                    license_no    = request.LicenseNo,
                                    result_status = 1 //成功
                                };
                                _chargeHistoryRepository.Add(history);
                            }

                            response.TotalCount   = charge.total_count.HasValue ? charge.total_count.Value : 0;
                            response.UsedCount    = charge.used_count.HasValue ? charge.used_count.Value : 0;
                            response.MoldName     = result.CarInfo.MoldName;
                            response.CarVin       = result.CarInfo.CarVin;
                            response.RegisterDate = result.CarInfo.RegisteDate;
                            response.LicenseNo    = result.CarInfo.PlateNo;
                            response.EngineNo     = result.CarInfo.EngineNo;
                            response.LicenseOwner = result.CarInfo.LicenseOwner;
                            response.OwnerIdNo    = result.CarInfo.OwnerIdNo;
                            response.Status       = HttpStatusCode.OK;
                            response.ErrCode      = 0;
                            return(response);
                        }
                        else
                        {
                            //插入bx_charge_history
                            var history = new bx_charge_history
                            {
                                charge_id     = charge.id,
                                license_no    = request.LicenseNo,
                                result_status = 0 //失败
                            };
                            _chargeHistoryRepository.Add(history);
                            response.Status  = HttpStatusCode.OK;
                            response.ErrCode = -1;
                            return(response);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("收费服务-获取车辆信息发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }

            return(response);
        }
예제 #20
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);
        }
예제 #21
0
        public AppGetReInfoResponse GetReInfoDetail(GetReInfoDetailRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new AppGetReInfoResponse();
            //bhToken校验
            //if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            //{
            //    response.BusinessStatus = -300;
            //    response.BusinessMessage = "登录信息已过期,请重新登录";
            //    return response;
            //}
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            //if (!AppValidateReqest(pairs, request.SecCode))
            //{
            //    response.Status = HttpStatusCode.Forbidden;
            //    return response;
            //}

            try
            {
                //取bx_userinfo对象
                var userinfo = new bx_userinfo();
                if (request.Buid.HasValue && request.Buid.Value != 0)
                {
                    //如果传buid过来,重新赋值request
                    userinfo = _userInfoRepository.FindByBuid(request.Buid.Value);
                    if (userinfo != null)
                    {
                        request.LicenseNo  = userinfo.LicenseNo;
                        request.ChildAgent = int.Parse(userinfo.Agent);
                    }
                }
                //else
                //{
                //    if (request.ChildAgent.HasValue)
                //    {
                //        //根据OpenId、车牌号、代理人Id找userinfo对象
                //        userinfo = _userInfoRepository.FindByAgentLicense(request.LicenseNo, request.ChildAgent.Value.ToString());
                //    }
                //}

                if (userinfo == null)
                {
                    response.Status = HttpStatusCode.NoContent;
                    return(response);
                }
                else
                {
                    response.Buid = userinfo.Id;
                    //UserInfo
                    response.UserInfo = userinfo;
                    //增加当前userinfo的代理人返回
                    response.Agent = int.Parse(userinfo.Agent);

                    response.Status = HttpStatusCode.OK;
                    if (!string.IsNullOrEmpty(userinfo.LicenseNo))
                    {
                        response.SaveQuote = _carRenewalRepository.FindByLicenseno(userinfo.LicenseNo);
                        response.CarInfo   = _carInfoRepository.Find(userinfo.LicenseNo);
                    }

                    if (userinfo.NeedEngineNo == 1)
                    {
                        //需要完善行驶证信息
                        response.BusinessStatus  = 2;
                        response.BusinessMessage = "需要完善行驶证信息(车辆信息和险种都没有获取到)";
                    }
                    if (userinfo.NeedEngineNo == 0 && userinfo.RenewalStatus != 1)
                    {
                        //获取车辆信息成功,但获取险种失败
                        response.BusinessStatus  = 3;
                        response.BusinessMessage = "获取车辆信息成功(车架号,发动机号,品牌型号及初登日期),险种获取失败";
                    }
                    if ((userinfo.NeedEngineNo == 0 && userinfo.LastYearSource > -1) || userinfo.RenewalStatus == 1)
                    {
                        //续保成功
                        response.BusinessStatus  = 1;
                        response.BusinessMessage = "续保成功";
                    }
                    if (userinfo.LastYearSource == -1)
                    {
                        response.BusinessStatus  = 0;
                        response.BusinessMessage = "获取续保信息失败";
                    }
                    return(response);
                }
            }
            catch (Exception ex)
            {
                response        = new AppGetReInfoResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("APP续保详情接口请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException);
            }
            return(response);
        }
        /// <summary>
        /// 业务:续保顾问用。创建WorkOrderDetail对象和更新WorkOrder对象
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public AddOrUpdateWorkOrderDetailResponse AddOrUpdateWorkOrderDetail(AddOrUpdateWorkOrderDetailRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new AddOrUpdateWorkOrderDetailResponse();

            //bhToken校验
            if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            {
                response.ErrCode = -300;
                response.ErrMsg  = "登录信息已过期,请重新登录";
                return(response);
            }
            //传参校验
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.BadRequest;
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            if (request.Status == 0)
            {
                response.ErrCode = -1;
                response.ErrMsg  = "受理状态不能为空";
                return(response);
            }
            try
            {
                DateTime dateTime = DateTime.Now;
                bx_userinfo_renewal_info workOrder;

                bx_userinfo bxUserInfo;
                if (request.Buid.HasValue && request.Buid.Value != 0)
                {
                    //如果传buid过来,重新赋值request
                    bxUserInfo = _userInfoRepository.FindByBuid(request.Buid.Value);
                    if (bxUserInfo != null)
                    {
                        request.LicenseNo  = bxUserInfo.LicenseNo;
                        request.OwnerAgent = int.Parse(bxUserInfo.Agent);
                    }
                }
                else
                {
                    //根据OpenId、车牌号、代理人Id找userinfo对象
                    bxUserInfo = _userInfoRepository.FindByAgentLicense(request.LicenseNo, request.OwnerAgent.ToString());
                }

                if (bxUserInfo == null)
                {
                    response.ErrCode = 0;
                    response.ErrMsg  = "查不到此续保信息";
                    return(response);
                }
                int workOrderId = request.WorkOrderId;
                if (workOrderId == 0)
                {
                    workOrder                  = new bx_userinfo_renewal_info();
                    workOrder.sa_id            = request.SaAgent;
                    workOrder.sa_name          = request.SaAgentName;
                    workOrder.client_name      = request.CustomerName;
                    workOrder.client_mobile    = request.Phone;
                    workOrder.b_uid            = (int)bxUserInfo.Id;
                    workOrder.client_intention = 3;//默认添加,其他情况
                    //workOrder.remark = request.Remark;
                    workOrder.create_time = dateTime;
                    workOrder.xubao_id    = request.ChildAgent;
                    workOrder.xubao_name  = request.ChildName;
                    workOrderId           = _userinfoRenewalInfoRepository.Add(workOrder);
                }
                if (workOrderId > 0)
                {
                    var workOrderDetail = new bx_consumer_review
                    {
                        b_uid        = (int)bxUserInfo.Id,
                        content      = request.Remark,
                        operatorId   = request.ChildAgent,
                        operatorName = request.ChildName
                    };
                    if (!string.IsNullOrWhiteSpace(request.NextReviewDate))
                    {
                        workOrderDetail.next_review_date = DateTime.Parse(request.NextReviewDate);
                    }
                    workOrderDetail.read_status      = 0;
                    workOrderDetail.status           = 0;//跟进类型,0回访,1投诉,2跟进..
                    workOrderDetail.result_status    = request.Status;
                    workOrderDetail.intentioncompany = request.IntentionCompany;
                    workOrderDetail.create_time      = dateTime;
                    int workOrderDetailId = _consumerReviewRepository.AddDetail(workOrderDetail);
                    if (workOrderDetailId > 0)
                    {
                        if (workOrderId != 0)
                        {
                            if (request.Status == 1)
                            {
                                //5,添加出单通知
                                var msgRequest = new AddMessageRequest
                                {
                                    Body       = request.LicenseNo,
                                    MsgType    = 7,
                                    ToAgentId  = request.Agent,
                                    MsgLevel   = 1,
                                    SendTime   = DateTime.Now.ToString(),
                                    ChildAgent = request.ChildAgent,
                                    LicenseNo  = request.LicenseNo,
                                    Buid       = bxUserInfo.Id,
                                    Source     = request.IntentionCompany
                                };
                                _messageService.AddMessage(msgRequest);
                            }
                            //修改意向里的主记录
                            workOrder = new bx_userinfo_renewal_info();
                            workOrder = _userinfoRenewalInfoRepository.FindById(workOrderId);
                            if (workOrder != null)
                            {
                                workOrder.intentioncompany = request.IntentionCompany;
                                workOrder.result_status    = request.Status;
                                workOrder.xubao_id         = request.ChildAgent;
                                workOrder.xubao_name       = request.ChildName;
                                _userinfoRenewalInfoRepository.Update(workOrder);
                                //if (_userinfoRenewalInfoRepository.Update(workOrder) > 0)
                                //{
                                response.ErrCode           = 1;
                                response.WorkOrderDetailId = workOrderDetailId;
                                //}
                                //else
                                //{
                                //    response.ErrCode = 0;
                                //}
                            }
                        }
                        else
                        {
                            response.ErrCode = 0;
                            //response.ErrCode = 1;
                            //response.WorkOrderDetailId = workOrderDetailId;
                        }
                    }
                    else
                    {
                        response.ErrCode = 0;
                    }
                }
            }
            catch (Exception ex)
            {
                response.ErrCode = 0;
                logError.Info("添加受理记录异常,受理记录信息:" + request.ToJson() + "\n 异常信息:" + ex.StackTrace + " \n " + ex.Message);
            }
            return(response);
        }
        public UKeyListResponse GetUKeyList(GetUKeyListRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            UKeyListResponse response = new UKeyListResponse();

            try
            {
                IBxAgent agentModel = GetAgentModelFactory(request.Agent);
                if (!agentModel.AgentCanUse())
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }
                if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }
                var list = _iagentAgentUKeyRepository.GetList(request.Agent);
                if (list.Any())
                {
                    //如果source传值的话,只取一条记录
                    if (request.Source > 0)
                    {
                        request.Source = SourceGroupAlgorithm.GetOldSource(request.Source);
                        list           = list.Where(i => i.Source == request.Source).ToList();
                        if (list.Count > 0)
                        {
                            list = list.GetRange(0, 1);
                        }
                        else
                        {
                            response.ErrCode = -1;
                            response.ErrMsg  = "无记录";
                            return(response);
                        }
                    }
                    //else
                    //{
                    //此处省略了list=list;
                    //}
                    //转换source值
                    var newList = new List <CityUKeyModel>();
                    var model   = new CityUKeyModel();
                    foreach (var item in list)
                    {
                        model        = new CityUKeyModel();
                        model        = item;
                        model.Source = SourceGroupAlgorithm.GetNewSource((int)item.Source);
                        newList.Add(model);
                    }
                    //获取信息成功
                    response.Status       = HttpStatusCode.OK;
                    response.CityUKeyList = newList;
                }
                else
                {
                    response.ErrCode = -1;
                    response.ErrMsg  = "无记录";
                    return(response);
                }
            }
            catch (Exception ex)
            {
                response        = new UKeyListResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("获取代理人ukey请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + ",返回对象信息:" + request.ToJson());
            }
            return(response);
        }
        public BaseResponse EditAgentUKey(EditAgentUKeyRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            BaseResponse response = new BaseResponse();

            try
            {
                IBxAgent agentModel = GetAgentModelFactory(request.Agent);

                if (!agentModel.AgentCanUse())
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }
                if (request.ReqSource == 1)
                {//对外的接口才做这一层校验
                    var validateUrl = string.Format("UserCode={0}&UkeyId={1}&OldPassWord={2}&NewPassWord={3}&Agent={4}", request.UserCode, request.UkeyId, request.OldPassWord, request.NewPassWord, request.Agent);
                    if (!ValidatePostReqest(validateUrl, agentModel.SecretKey, request.SecCode))
                    {
                        response.Status = HttpStatusCode.Forbidden;
                        return(response);
                    }
                }
                //查询ukey信息
                var ukeyModel = _iagentAgentUKeyRepository.GetModel(request.UkeyId);
                if (ukeyModel == null)
                {
                    response.ErrCode = -1;
                    response.ErrMsg  = "未查到Ukey信息";
                    return(response);
                }
                //请求中心修改密码接口
                string strUrl  = string.Format("{0}/api/ChangePassWord/ChangePwd", _baoxianCenter);
                string oldPwd  = request.ReqSource == 1 ? request.OldPassWord : string.Empty;
                var    objPost = new
                {
                    UserCode    = request.UserCode,
                    UkeyId      = request.UkeyId,
                    OldPassWord = oldPwd,
                    NewPassWord = request.NewPassWord
                };
                StringBuilder postData = new StringBuilder();
                postData.Append("UserCode=").Append(request.UserCode)
                .Append("&UkeyId=").Append(request.UkeyId)
                .Append("&OldPassWord="******"&NewPassWord="******"&ReqSource=").Append(request.ReqSource);
                string result = string.Empty;
                int    i      = HttpWebAsk.Post(strUrl, postData.ToString(), out result);
                logInfo.Info("调用中心修改密码接口Url:" + strUrl + ";请求参数为:" + objPost.ToJson() + ";返回结果为:" + result);
                if (!string.IsNullOrWhiteSpace(result))
                {
                    var ret = result.FromJson <UKeyEdit>();
                    if (ret.ErrCode == 0)
                    {//修改成功
                        response.Status = HttpStatusCode.OK;
                        //如果修改成功,则保存用户名
                        if (string.IsNullOrEmpty(ukeyModel.InsuranceUserName))
                        {
                            ukeyModel.InsuranceUserName = request.UserCode;
                            int u = _iagentAgentUKeyRepository.UpdateModel(ukeyModel);
                            logInfo.Info(string.Format("修改保司密码成功,数据库修改{0}条记录。", u));
                        }
                    }
                    else
                    {
                        //修改失败
                        response.ErrCode = -1;
                        response.ErrMsg  = ret.ErrMsg;
                    }
                }
            }
            catch (Exception ex)
            {
                response        = new BaseResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("修改保司密码请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + ",返回对象信息:" + request.ToJson());
            }
            return(response);
        }
        /// <summary>
        /// 业务:sa用。第一次创建WorkOrder
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public AddOrUpdateWorkOrderResponse AddOrUpdateWorkOrder(AddOrUpdateWorkOrderRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new AddOrUpdateWorkOrderResponse();

            //bhToken校验
            if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            {
                response.ErrCode = -300;
                response.ErrMsg  = "登录信息已过期,请重新登录";
                return(response);
            }
            //传参校验
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            //参数校验
            if (agentModel == null)// || childAgent == null)
            {
                response.Status = HttpStatusCode.BadRequest;
                return(response);
            }
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            if (request.IntentionView == 0)
            {
                response.ErrCode = -1;
                response.ErrMsg  = "意向不能为空";
                return(response);
            }
            if (request.OwnerAgent == 0)
            {
                response.ErrCode = -2;
                response.ErrMsg  = "车辆当前受理人Id不能为空";
                return(response);
            }
            try
            {
                bx_userinfo bxUserInfo;
                if (request.Buid.HasValue && request.Buid.Value != 0)
                {
                    //如果传buid过来,重新赋值request
                    bxUserInfo = _userInfoRepository.FindByBuid(request.Buid.Value);
                    if (bxUserInfo != null)
                    {
                        request.LicenseNo  = bxUserInfo.LicenseNo;
                        request.OwnerAgent = int.Parse(bxUserInfo.Agent);
                    }
                }
                else
                {
                    //根据OpenId、车牌号、代理人Id找userinfo对象
                    bxUserInfo = _userInfoRepository.FindByAgentLicense(request.LicenseNo, request.OwnerAgent.ToString());
                }

                if (bxUserInfo == null)
                {
                    response.ErrCode = 0;
                    response.ErrMsg  = "查不到此续保信息";
                    return(response);
                }
                int      workOrderId = 0;//标记添加修改意向成功与否
                DateTime dateTime    = DateTime.Now;
                bx_userinfo_renewal_info workOrder = _userinfoRenewalInfoRepository.FindByBuid(bxUserInfo.Id);
                if (workOrder != null)
                {//如果库里有记录,执行更新
                    workOrder.sa_id            = request.ChildAgent;
                    workOrder.sa_name          = request.ChildName;
                    workOrder.client_name      = request.CustomerName;
                    workOrder.client_mobile    = request.Phone;
                    workOrder.client_intention = request.IntentionView;
                    workOrder.remark           = request.Remark;
                    workOrderId = _userinfoRenewalInfoRepository.Update(workOrder);
                }
                else
                {//如果库里无记录,执行插入
                    workOrder                  = new bx_userinfo_renewal_info();
                    workOrder.sa_id            = request.ChildAgent;
                    workOrder.sa_name          = request.ChildName;
                    workOrder.client_name      = request.CustomerName;
                    workOrder.client_mobile    = request.Phone;
                    workOrder.b_uid            = bxUserInfo.Id;
                    workOrder.client_intention = request.IntentionView;
                    workOrder.remark           = request.Remark;
                    workOrder.create_time      = dateTime;
                    workOrderId                = _userinfoRenewalInfoRepository.Add(workOrder);
                }
                if (workOrderId > 0)
                {
                    response.ErrCode     = 1;
                    response.WorkOrderId = workOrderId;
                }
                else
                {
                    response.ErrCode = -10002;
                    response.ErrMsg  = "添加意向失败,未存在可更新的内容";
                }
            }
            catch (Exception ex)
            {
                response.ErrCode = -10003;
                logError.Info("意向接口异常,添加意向信息:" + request.ToJson() + "\n 异常信息:" + ex.StackTrace + " \n " + ex.Message);
            }
            return(response);
        }
        public async Task <GetReInfoNewViewModel> GetReInfo(GetReInfoRequest request, IEnumerable <KeyValuePair <string, string> > pairs, Uri uri)
        {
            //返回对象
            var viewModel = new GetReInfoNewViewModel();

            #region 校验
            //bhToken校验
            if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
            {
                viewModel.BusinessStatus = -300;
                viewModel.StatusMessage  = "登录信息已过期,请重新登录";
                return(viewModel);
            }
            //传参校验
            if (!AppValidateReqest(pairs, request.SecCode))
            {
                viewModel.BusinessStatus = -301;
                viewModel.StatusMessage  = "参数校验失败";
                return(viewModel);
            }
            //代理人信息校验
            if (request.Agent == request.ChildAgent)
            {
                IBxAgent childagentModel = GetAgentModelFactory(request.ChildAgent);
                //1,当前代理人是否可用;
                if (!childagentModel.AgentCanUse())
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                //2,顶级代理人是否可用;
                if (!_agentService.IsTopAgentId(request.Agent))
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
            }
            else
            {
                var childagentModel = GetAgentModelFactory(request.ChildAgent);
                if (!childagentModel.AgentCanUse())
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                var agentModel = GetAgentModelFactory(request.Agent);
                if (!agentModel.AgentCanUse())
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                if (!_agentService.IsTopAgentId(request.Agent))
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
                //3,当前代理人是否在顶级代理人下
                if (!_agentRepository.GetTopAgentId(request.ChildAgent).Contains(request.Agent.ToString()))
                {
                    viewModel.BusinessStatus = -302;
                    viewModel.StatusMessage  = "代理人参数错误";
                    return(viewModel);
                }
            }
            #endregion

            //是否在未分配的池子里
            //bool isInAssign = false;

            //1,校验重复数据
            //userinfo 顶级代理下的所有代理,出过的车,存在就提示
            //原来userinfo里的记录
            //var bxUserinfo = IsExistLicense(request, out isInAssign);

            //拼接请求串
            var sb = new StringBuilder();
            sb.Append("?");
            bool isAndroid = true;
            foreach (KeyValuePair <string, string> pair in pairs)
            {
                if (pair.Key.ToLower() == "renewaltype")
                {
                    isAndroid = false;
                    sb.Append(string.Format("{0}={1}&", pair.Key, pair.Value));
                }
                //else if (pair.Key.ToLower() == "childagent")
                //{
                //    //********************
                //    //判断是否是新入店车辆
                //    sb.Append(bxUserinfo != null
                //        ? string.Format("{0}={1}&", pair.Key, bxUserinfo.Agent)
                //        : string.Format("{0}={1}&", pair.Key, pair.Value));
                //}
                //else if (pair.Key.ToLower() == "custkey")
                //{
                //    //********************
                //    //判断是否是新入店车辆
                //    sb.Append(bxUserinfo != null
                //        ? string.Format("{0}={1}&", pair.Key, bxUserinfo.OpenId)
                //        : string.Format("{0}={1}&", pair.Key, pair.Value));
                //}
                else
                {
                    sb.Append(string.Format("{0}={1}&", pair.Key, pair.Value));
                }
            }
            if (isAndroid)
            {
                sb.Append(string.Format("RenewalType={0}&", 7));
            }
            sb.Remove(sb.Length - 1, 1);
            string geturl = string.Format("http://{0}/api/CarInsurance/GetReInfo{1}", uri.Host + ":" + uri.Port, sb.ToString());

            //2,分配
            //给续保车分配续保顾问
            //********************
            //判断是否是新入店车辆
            //var advAgent = bxUserinfo != null ? GetAgentModelFactory(int.Parse(bxUserinfo.Agent)) : GetAgentModelFactory(request.ChildAgent);
            var advAgent      = GetAgentModelFactory(request.ChildAgent);
            int userinfoAgent = 0;//查询原来的userinfo用
            //********************
            //判断是否是新入店车辆
            //if (bxUserinfo != null)
            //{
            //    userinfoAgent = int.Parse(bxUserinfo.Agent);
            //}
            //else
            //{
            userinfoAgent = request.ChildAgent > 0 ? request.ChildAgent : request.Agent;
            //}

            //3,续保
            string strGetMsg = string.Empty;
            using (var client = new HttpClient())
            {
                var clientResult = client.GetAsync(geturl).Result;

                if (clientResult.StatusCode.ToString().Equals("429"))
                {
                    viewModel.BusinessStatus = -429;
                    viewModel.StatusMessage  = "请求客户端过多,请稍候再试";
                    return(viewModel);
                }
                if (clientResult.IsSuccessStatusCode)
                {
                    strGetMsg = await clientResult.Content.ReadAsStringAsync();
                }
                if (string.IsNullOrWhiteSpace(strGetMsg))
                {
                    viewModel.BusinessStatus = -10002;
                    viewModel.StatusMessage  = "获取到续保信息失败";
                    return(viewModel);
                }
                viewModel       = strGetMsg.FromJson <GetReInfoNewViewModel>();
                viewModel.Agent = advAgent.Id;
                //********************
                //判断是否是新入店车辆
                //if (bxUserinfo != null)
                //{
                //    viewModel.AgentName = !isInAssign ? advAgent.AgentName : "未分配";
                //}
                //else
                //{
                //    viewModel.AgentName = "未分配";
                //}
                viewModel.AgentName = advAgent.AgentName;
            }

            //插入意向

            //4,插入续保修改人日志
            //
            var newBxUserinfo = new bx_userinfo();

            //********************
            //判断是否是新入店车辆
            //if (bxUserinfo == null)
            //{
            newBxUserinfo = GetUserInfo(request.LicenseNo, userinfoAgent.ToString());
            //if (newBxUserinfo == null)
            //{
            //    viewModel.BusinessStatus = -10002;
            //    viewModel.StatusMessage = "获取到续保信息失败";
            //    return viewModel;
            //}
            //修改userinfo
            //newBxUserinfo.OpenId = advAgent.OpenId;
            //newBxUserinfo.Agent = advAgent.Id.ToString();
            //if (_userInfoRepository.Update(newBxUserinfo) > 0)
            //{
            //    viewModel.CustKey = advAgent.OpenId;
            //}

            //}

            //if (bxUserinfo != null)
            //{
            //    //返回当前记录的buid
            //    viewModel.Buid = bxUserinfo.Id;
            //    //插入续保修改记录
            //    AddChangeLog(bxUserinfo.Id, userinfoAgent, request.ChildAgent, 1);//第一步
            //    if (!isInAssign)
            //    {//如果不在未分配的池子里
            //        AddChangeLog(bxUserinfo.Id, request.ChildAgent, advAgent.Id, 2); //第二步
            //    }
            //    else
            //    {
            //        AddChangeLog(bxUserinfo.Id, request.ChildAgent, advAgent.Id, 6); //第二步
            //    }
            //}
            //else
            //{
            //返回当前记录的buid
            viewModel.Buid = newBxUserinfo.Id;
            //插入续保修改记录
            AddChangeLog(newBxUserinfo.Id, userinfoAgent, 0, 1);    //第一步
            //AddChangeLog(newBxUserinfo.Id, userinfoAgent, advAgent.Id, 6); //第二步
            //}

            //********************
            //判断是否是新入店车辆
            //if (bxUserinfo == null)
            //{
            //5,添加分配通知
            //20170405修改,不发分配通知
            //var msgRequest = new AddMessageRequest
            //{
            //    Body = request.LicenseNo,
            //    MsgType = 6,
            //    ToAgentId = advAgent.Id,
            //    MsgLevel = 1,
            //    SendTime = DateTime.Now.ToString(),
            //    ChildAgent = request.ChildAgent,
            //    LicenseNo = request.LicenseNo,
            //    Buid = newBxUserinfo.Id
            //};
            //_messageService.AddMessage(msgRequest);
            //}
            //6,添加续保通知,向bx_notice_xb插记录,商业险或交强险在90天范围之内
            //long noticeBuid = bxUserinfo != null ? bxUserinfo.Id : newBxUserinfo.Id;
            //if (viewModel.UserInfo != null)
            //{
            //    _noticexbService.AddNoticexb(viewModel.UserInfo.LicenseNo, viewModel.UserInfo.BusinessExpireDate,
            //        viewModel.UserInfo.ForceExpireDate, viewModel.UserInfo.NextBusinessStartDate,
            //        viewModel.UserInfo.NextForceStartDate, viewModel.SaveQuote.Source, advAgent.Id, noticeBuid, 1);
            //}
            return(viewModel);
        }
        /// <summary>
        /// 修改代理人备份密码 2017-10-20 zky/运营后台
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public BaseResponse EditBackupPwd(EditBackupPwdRequest request)
        {
            BaseResponse response = new BaseResponse();

            try
            {
                IBxAgent agentModel = GetAgentModelFactory(request.Agent);
                if (!agentModel.AgentCanUse())
                {
                    response.Status = HttpStatusCode.Forbidden;
                    return(response);
                }
                if (request.ReqSource == 1)
                {//对外的接口才做这一层校验
                    var validateUrl = string.Format("Agent={0}&UkeyId={1}&PassWord1={2}&PassWord2={3}&PassWord3={4}", request.Agent, request.UkeyId, request.PwdOne, request.PwdTwo, request.PwdThree);
                    if (!ValidatePostReqest(validateUrl, agentModel.SecretKey, request.SecCode))
                    {
                        response.Status = HttpStatusCode.Forbidden;
                        return(response);
                    }
                }

                //查询ukey信息
                var ukeyModel = _iagentAgentUKeyRepository.GetModel(request.UkeyId);
                if (ukeyModel == null)
                {
                    response.ErrCode = -1;
                    response.ErrMsg  = "未查到Ukey信息";
                    return(response);
                }

                #region 20170927  L: 密码复杂度正则表达式   校验时候用  暂时做个储备
                Regex Num     = new Regex("(?=.*[0-9])");                                                       //数字
                Regex Cn      = new Regex("[\u4e00-\u9fa5]+");                                                  //中文
                Regex Up      = new Regex("(?=.*[A-Z])");                                                       //大写字母
                Regex Low     = new Regex("(?=.*[a-z])");                                                       //小写字母
                Regex Len     = new Regex(".{8,20}");                                                           //8到20字符
                Regex Special = new Regex("[`~!@#$%^&*()+=|{}':;',\\[\\].<>?/~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"); //特殊字符
                #endregion

                #region 20170928  L: 密码难度规则校验
                var bl = false;
                //判断密码的复杂度
                string[] lstStrs = new[] { request.PwdOne, request.PwdTwo, request.PwdThree };

                foreach (var item in lstStrs)
                {
                    //判断长度和密码难度  是否符合两种
                    int checkItem = (Num.IsMatch(item) ? 1 : 0) + (Up.IsMatch(item) ? 1 : 0) +
                                    (Low.IsMatch(item) ? 1 : 0) + (Special.IsMatch(item) ? 1 : 0);
                    if (checkItem < 2)
                    {
                        bl = true;
                        break;
                    }

                    //判断是否含有picc  和  长度校验  和  中文字符校验
                    if (item.ToLower().Contains("picc") || !Len.IsMatch(item) || Cn.IsMatch(item))
                    {
                        bl = true;
                        break;
                    }
                }

                //判断密码难度  或者  四个密码是否有相同
                if (bl || lstStrs.Distinct().Count() < lstStrs.Length)
                {
                    response.ErrCode = -1;
                    response.ErrMsg  = "密码格式信息不对,请参照密码格式提示输入!";
                    return(response);
                }

                #endregion

                //调用中心修改备用密码接口
                string url     = string.Format("{0}/api/ChangePassWord/ChangeHistoryPwd", _baoxianCenter);
                var    content = new FormUrlEncodedContent(new Dictionary <string, string>()
                {
                    { "UkeyId", request.UkeyId.ToString() },
                    { "PassWord1", request.PwdOne },
                    { "PassWord2", request.PwdTwo },
                    { "PassWord3", request.PwdThree }
                });
                var handler = new HttpClientHandler {
                    AutomaticDecompression = DecompressionMethods.GZip
                };
                using (var http = new HttpClient(handler))
                {
                    var ResultReturn = http.PostAsync(url, content).Result.Content.ReadAsStringAsync().Result;
                    var result       = ResultReturn.FromJson <BaseViewModel>();
                    if (result.BusinessStatus == 200)
                    {
                        response.Status = HttpStatusCode.OK;
                        //保存备用密码
                        ukeyModel.backup_pwd_one   = request.PwdOne;
                        ukeyModel.backup_pwd_two   = request.PwdTwo;
                        ukeyModel.backup_pwd_three = request.PwdThree;
                        _iagentAgentUKeyRepository.UpdateModel(ukeyModel);
                    }
                    else
                    {
                        //修改失败
                        response.ErrCode = -1;
                        response.ErrMsg  = result.StatusMessage;
                    }
                }
            }
            catch (Exception ex)
            {
                response        = new BaseResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
                logError.Info("修改保司备份密码请求发生异常:" + ex.Source + "\n" + ex.StackTrace + "\n" + ex.Message + "\n" + ex.InnerException + ",返回对象信息:" + request.ToJson());
            }
            return(response);
        }
예제 #28
0
        public async Task <GetEscapedInfoResponse> GetList(GetEscapedInfoRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            GetEscapedInfoResponse response = new GetEscapedInfoResponse();
            //根据经纪人获取手机号
            IBxAgent agentModel = GetAgentModelFactory(request.Agent);

            if (!agentModel.AgentCanUse())
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }

            //参数校验
            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status = HttpStatusCode.Forbidden;
                return(response);
            }
            try
            {
                //微信端逻辑 次级代理
                if (request.ChildAgent > 0)
                {
                    request.Agent = request.ChildAgent;
                }
                response = await _userClaimCache.GetList(request);

                if (response == null)
                {
                    response        = new GetEscapedInfoResponse();
                    response.Status = HttpStatusCode.ExpectationFailed;
                    //response.List = new List<bx_claim_detail>();
                }

                ////if (response == null)中心没写缓存
                ////{
                //    response = new GetEscapedInfoResponse();
                //    bx_userinfo userinfo  = _userInfoRepository.FindByOpenIdAndLicense(request.CustKey, request.LicenseNo,request.Agent.ToString());

                //    if (userinfo == null)
                //    {
                //        response.Status = HttpStatusCode.BadRequest;
                //        return response;
                //    }

                //    var userclaims = _userClaimRepository.FindList(userinfo.Id);
                //    //if (userclaims != null && userclaims.Count>0)
                //    //{
                //    //    var chuxianCacheKey = CommonCacheKeyFactory.CreateKeyWithLicenseAndAgent(request.LicenseNo,request.Agent);
                //    //    var chuxianKey = string.Format("{0}-cx", chuxianCacheKey);
                //    //    CacheProvider.Set(chuxianKey, userclaims.ToJson());
                //    //}
                //    response.List = userclaims;
                //    response.Status = HttpStatusCode.OK;
                ////}
            }
            catch (Exception ex)
            {
                response        = new GetEscapedInfoResponse();
                response.Status = HttpStatusCode.ExpectationFailed;
            }
            return(response);
        }
예제 #29
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);
        }
예제 #30
0
        /// <summary>
        /// 参数校验方法
        /// </summary>
        /// <param name="request"></param>
        /// <param name="pairs"></param>
        /// <returns></returns>
        public AppBaseResponse Verify(AppBaseRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            var response = new AppBaseResponse();
            //读取api.config里的CheckApp节点,如果是0,则无需验证,如果是1,必须验证
            string checkApp = System.Configuration.ConfigurationManager.AppSettings["CheckApp"];

            if (!string.IsNullOrWhiteSpace(checkApp) && int.Parse(checkApp.Trim()) != 0)
            {
                //bhToken校验
                //if (!AppTokenValidateReqest(Encoding.ASCII.GetString(Convert.FromBase64String(request.BhToken)), request.ChildAgent))
                if (!AppTokenValidateReqest(request.BhToken, request.ChildAgent))
                {
                    response.ErrCode = -13000;
                    response.ErrMsg  = "登录信息已过期,请重新登录";
                    return(response);
                }
                //传参校验
                if (!AppValidateReqest(pairs, request.SecCode))
                {
                    response.ErrCode = -10001;
                    response.ErrMsg  = "参数校验失败";
                    return(response);
                }
            }
            //代理人信息校验
            IBxAgent childagentModel = GetAgentModelFactory(request.ChildAgent);

            //1,当前代理人是否可用;
            if (!childagentModel.AgentCanUse())
            {
                response.ErrCode = -13020;
                response.ErrMsg  = "代理人参数错误";
                return(response);
            }
            //如果当前代理和顶级一样
            if (request.Agent == request.ChildAgent)
            {
                //2,顶级代理人是否可用;
                if (childagentModel.ParentAgent != 0)//if (!_agentService.IsTopAgentId(request.Agent))
                {
                    response.ErrCode = -13020;
                    response.ErrMsg  = "代理人参数错误";
                    return(response);
                }
            }
            else
            {//如果不一样,则获取顶级代理信息
                IBxAgent agentModel = GetAgentModelFactory(request.Agent);
                if (!childagentModel.AgentCanUse())
                {
                    response.ErrCode = -13020;
                    response.ErrMsg  = "代理人参数错误";
                    return(response);
                }
                if (agentModel.ParentAgent != 0) //if (!_agentService.IsTopAgentId(request.Agent))
                {
                    response.ErrCode = -13020;
                    response.ErrMsg  = "代理人参数错误";
                    return(response);
                }
                //3,当前代理人是否在顶级代理人下
                if (!_agentRepository.GetTopAgentId(request.ChildAgent).Contains(request.Agent.ToString()))
                {
                    response.ErrCode = -13020;
                    response.ErrMsg  = "代理人参数错误";
                    return(response);
                }
            }
            //参数校验成功,返回errcode为1
            response.ErrCode   = 1;
            response.CustKey   = request.CustKey;
            response.Agent     = childagentModel.Id;
            response.AgentName = childagentModel.AgentName;
            return(response);
        }