public List <bx_agent_config> GetAgentConfigByCity(int agentId, int cityCode)
        {
            List <bx_agent_config> configModel = new List <bx_agent_config>();
            var key      = string.Format("agent_config_{0}_{1}_list", agentId, cityCode);
            var cachelst = CacheProvider.Get <List <bx_agent_config> >(key);

            if (cachelst == null)
            {
                var lst = _agentConfigRepository.FindBy(agentId, cityCode);
                if (lst.Any())
                {
                    CacheProvider.Set(key, lst, 10800);
                    configModel = lst;
                }
            }
            else
            {
                configModel = cachelst;
            }
            return(configModel);
        }
Exemple #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);
            }
        }