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()); } }
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); } }