private void ChangeLicense(ref List<ChannelInfo> channelInfoList, int maxChannelNum)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
List<ChannelInfo> inConfList = channelInfoList.FindAll(a => { return !string.IsNullOrEmpty(a.AccessCode); });
List<ChannelInfo> outConfList = channelInfoList.FindAll(a => { return string.IsNullOrEmpty(a.AccessCode); });
int inConfCount = inConfList.Count;
int outConfCount = outConfList.Count;
logEx.Trace("ChangeLicense licenseNum={0}, inConfCount={1}, outConfCount={2}", maxChannelNum, inConfCount, outConfCount);
// 先将所有的isValid设置为true,后面再根据maxChannelNum修改
foreach (ChannelInfo item in channelInfoList)
{
item.IsValid = true;
}
// 比较maxChannelNum跟入会会场数量
// 优先将已入会的会场保留为true
if (maxChannelNum <= inConfCount)
{
List<ChannelInfo> list = inConfList.GetRange(maxChannelNum, inConfCount - maxChannelNum);
foreach (ChannelInfo item in list)
{
item.IsValid = false;
}
foreach (ChannelInfo item in outConfList)
{
item.IsValid = false;
}
}
else if (maxChannelNum > inConfCount && maxChannelNum < inConfCount + outConfCount)
{
List<ChannelInfo> list = outConfList.GetRange(maxChannelNum - inConfCount, inConfCount + outConfCount - maxChannelNum);
foreach (ChannelInfo item in list)
{
item.IsValid = false;
}
}
else
{
return;
}
}