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