Ejemplo n.º 1
0
        public async Task <HttpResponseMessage> GetSpeciaList([FromUri] GetSpecialListRequest request)
        {
            GetSpecialListViewModel model = new GetSpecialListViewModel();

            if (!new int[] { 1, 2, 4, 8 }.Contains(request.Source))
            {
                model.BusinessStatus = 0;
                model.StatusMessage  = "该保险公司不支持特约";
                return(model.ResponseToJson());
            }
            logInfo.Info(string.Format("获取特约列表:{0}", Request.RequestUri));

            SpecialListResponse response = await _quoteSpecialService.GetSpeciaList(request, Request.GetQueryNameValuePairs());

            if (response.Status == HttpStatusCode.BadRequest || response.Status == HttpStatusCode.Forbidden)
            {
                model.BusinessStatus = response.BusinessStatus;
                model.StatusMessage  = response.BusinessMessage;
                model.Key            = response.Key;
                return(model.ResponseToJson());
            }
            else if (response.Status == HttpStatusCode.OK)
            {
                model.BusinessStatus = response.BusinessStatus;
                model.StatusMessage  = response.BusinessMessage;
                model.Count          = response.SpecialOptions.Count;
                model.SpecialList    = response.SpecialOptions.Skip((request.PageIndex - 1) * (request.PageSize)).Take(request.PageSize).ToList();;
                model.Key            = response.Key;
                return(model.ResponseToJson());
            }
            else
            {
                model.BusinessStatus = response.BusinessStatus;
                model.StatusMessage  = response.BusinessMessage;
                model.Key            = response.Key;
                return(model.ResponseToJson());
            }
        }
Ejemplo n.º 2
0
        public async Task <SpecialListResponse> GetSpeciaList(GetSpecialListRequest request, IEnumerable <KeyValuePair <string, string> > pairs)
        {
            SpecialListResponse response = new SpecialListResponse();
            string ukeyId;
            var    agentConfig = _agentConfig.FindBy(request.AgentId, request.CityId).FirstOrDefault(conf => conf.source == SourceGroupAlgorithm.GetOldSource(request.Source));

            if (agentConfig == null)
            {
                response.Status          = HttpStatusCode.Forbidden;
                response.BusinessStatus  = -10001;
                response.BusinessMessage = "没有找到代理人配置";
                return(response);
            }
            else
            {
                ukeyId = agentConfig.ukey_id.ToString();
            }
            bx_agent agentModel = GetAgent(request.AgentId);

            //参数校验
            if (agentModel == null)
            {
                response.Status          = HttpStatusCode.Forbidden;
                response.BusinessStatus  = -10001;
                response.BusinessMessage = "没有找到代理人";
                return(response);
            }

            if (!ValidateReqest(pairs, agentModel.SecretKey, request.SecCode))
            {
                response.Status          = HttpStatusCode.Forbidden;
                response.BusinessStatus  = -10001;
                response.BusinessMessage = "参数校验失败";
                return(response);
            }

            string SpecicalCacheKey = CommonCacheKeyFactory.CreateKeyWithLicense(request.AgentId.ToString() + request.CityId.ToString() + request.Source.ToString());
            var    key = string.Format("{0}-SpecialOptions-key", SpecicalCacheKey);

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

            if (cacheKey != null)
            {
                if (cacheKey == "1")
                {
                    string listcachekey = string.Format("{0}-SpecialOptions", SpecicalCacheKey);
                    response                 = CacheProvider.Get <SpecialListResponse>(listcachekey);
                    response.Status          = HttpStatusCode.OK;
                    response.BusinessStatus  = 1;
                    response.BusinessMessage = "获取特约成功";
                    response.Key             = listcachekey;
                    return(response);
                }
                else
                {
                    CacheProvider.Remove(key);
                }
            }
            object msgBody;

            msgBody = new
            {
                Source         = SourceGroupAlgorithm.GetOldSource(request.Source),
                CityId         = request.CityId,
                TopAgentId     = request.AgentId,
                ukeyId         = ukeyId,
                NotifyCacheKey = SpecicalCacheKey
            };
            _messageCenter.SendToMessageCenter(msgBody.ToJson(), ConfigurationManager.AppSettings["MessageCenter"], ConfigurationManager.AppSettings["SpecialOption"]);
            for (int i = 0; i < 115; i++)
            {
                cacheKey = CacheProvider.Get <string>(key);
                //step1val = xuBaoKey;
                //step1va2 = cacheKey;
                if (!string.IsNullOrWhiteSpace(cacheKey))
                {
                    if (cacheKey == "0" || cacheKey == "1")
                    {
                        break;
                    }
                }
                else
                {
                    await Task.Delay(TimeSpan.FromSeconds(1));
                }
            }
            if (cacheKey == null)
            {
                response.Status          = HttpStatusCode.Forbidden;
                response.BusinessStatus  = -10003;//缓存异常
                response.BusinessMessage = "请求超时或缓存异常,请重试";
                response.Key             = "";
                return(response);
            }
            else if (cacheKey == "0")
            {
                response.Status          = HttpStatusCode.Forbidden;
                response.BusinessStatus  = 0;
                response.BusinessMessage = "获取特约检索失败";
                response.Key             = "";
                return(response);
            }
            else
            {
                string listcachekey = string.Format("{0}-SpecialOptions", SpecicalCacheKey);
                response                 = CacheProvider.Get <SpecialListResponse>(listcachekey);
                response.Status          = HttpStatusCode.OK;
                response.BusinessStatus  = 1;
                response.BusinessMessage = "获取特约成功";
                response.Key             = listcachekey;
                return(response);
            }
        }