public BaseViewModel CheckMultiChannelsUsed(string multiChannels, int agent, int citycode, long quotegroup, out string newMultiChannels)
        {
            newMultiChannels = string.Empty;
            BaseViewModel viewModel = new BaseViewModel();
            //用户未指定渠道,系统默认选择创建时间最老的渠道拼串请求
            //渠道请求模型转换
            List <MultiChannels> models    = multiChannels.FromJson <List <MultiChannels> >(); //请求模型转换为渠道
            List <MultiChannels> newModels = new List <MultiChannels>();                       //转换成需要保存到库里的集合

            //取值判断在bx_agent_config是否有值
            if (models.Any())
            {
                #region 判断前端传的渠道是否在该顶级下可用
                List <long> listChannels = models.Select(o => o.ChannelId).ToList();
                var         agentconfig  = _agentConfigByCityService.GetAgentConfigByCity(agent, citycode);
                List <long> listconfig   = agentconfig.Select(o => o.id).ToList();
                List <long> diff         = GetDiffrent(listChannels, listconfig);
                if (diff.Any())
                {//如果不同的list集合里有值,说明有数据不一样,则返回错误
                    viewModel.BusinessStatus = -10000;
                    viewModel.StatusMessage  = "输入参数错误,报价渠道不可用";
                    return(viewModel);
                }
                #endregion
                #region 判断前端传的请求报价渠道是否与多渠道报价的数量匹配
                List <long> listSource       = models.Select(o => o.Source).ToList();
                List <long> quoteSourceGroup = SourceGroupAlgorithm.ParseNewSource(quotegroup);
                diff = new List <long>();
                diff = GetDiffrent(quoteSourceGroup, listSource);
                if (diff.Any())
                {//如果不同的list集合里有值,说明有数据不一样,则返回错误
                    viewModel.BusinessStatus = -10000;
                    viewModel.StatusMessage  = "输入参数错误,请求报价渠道的QuoteGroup值与多渠道报价的MultiChannels值不匹配";
                    return(viewModel);
                }
                #endregion
                foreach (var item in models)
                {
                    MultiChannels newItem = new MultiChannels();
                    newItem        = item;
                    newItem.Source = SourceGroupAlgorithm.GetOldSource(item.Source);
                    newModels.Add(newItem);
                }
                newMultiChannels = newModels.ToJson();
            }
            return(viewModel);
        }
        public List <MultiChannels> GetAgentConfigGroupBySource(int agentId, int cityCode, List <int> quoteSourceGroup)
        {
            List <MultiChannels> configModel = new List <MultiChannels>();
            //取缓存
            var key      = string.Format("multiChannels_{0}_{1}_list", agentId, cityCode);
            var cachelst = CacheProvider.Get <List <MultiChannels> >(key);

            if (cachelst == null)
            {
                //取库
                var lst = _agentConfigRepository.FindConfigSourceList(agentId, cityCode);
                if (lst.Any())
                {
                    foreach (var l in lst)
                    {
                        if (l.Source.HasValue && l.ChannelId != 0)
                        {
                            MultiChannels a = new MultiChannels();
                            a.ChannelId = l.ChannelId;
                            a.Source    = l.Source.Value;
                            configModel.Add(a);
                        }
                    }
                    CacheProvider.Set(key, configModel, 3600);
                }
            }
            else
            {
                configModel = cachelst;
            }
            //从缓存里的值取报了哪些保司
            if (configModel.Any())
            {
                configModel = configModel.Where(l => quoteSourceGroup.Contains((Int32)l.Source)).ToList();
            }
            return(configModel);
        }