public List <ConfigCrowdrankprizeEntity> GetRankPrizes(EnumCrowdPrizeCategory category, int categorySub) { var key = BuildRankPrizeKey((int)category, categorySub); if (_rankPrizeDic.ContainsKey(key)) { return(_rankPrizeDic[key]); } return(null); }
static bool SavePrizeRecord(Guid managerId, EnumCrowdPrizeCategory category, string source, string prizeItemString, string siteId) { CrosscrowdPrizerecordEntity record = new CrosscrowdPrizerecordEntity(); record.Category = (int)category; record.ManagerId = managerId; record.PrizeItems = prizeItemString; record.RowTime = DateTime.Now; record.Source = source; record.SiteId = siteId; return(CrosscrowdPrizerecordMgr.Insert(record)); }
static MessageCode BuildPrizeMail(CrosscrowdInfoEntity crowd, MailBuilder mail, EnumCrowdPrizeCategory category, int categorySub, int maxPoint, int maxLegendCount, ref string prizeItemString) { try {//11 天梯奖励 12击杀奖励 var prizes = CacheFactory.CrowdCache.GetRankPrizes(category, categorySub); if (prizes != null) { //1 金币 //2 卡库 卡库id //3 物品 物品code //4 非彩色球魂 //5 点券 //7 绑定点卷 var itemCode = 0; foreach (var entity in prizes) { if (!RandomHelper.CheckPercentage(entity.Rate)) { continue; } switch (entity.Type) { case 1: mail.AddAttachment(EnumCurrencyType.Coin, entity.Count); prizeItemString += string.Format("1Coin:{0}|", entity.Count); break; case 2: itemCode = CacheFactory.LotteryCache.LotteryByLib(entity.SubType); if (itemCode > 0) { mail.AddAttachment(entity.Count, itemCode, entity.IsBinding, entity.Strength); prizeItemString += string.Format("2Item-C:{0},I:{1},B:{2},S:{3}|", entity.Count, itemCode, entity.IsBinding, entity.Strength); } break; case 3: if (maxLegendCount != -1 && entity.SubType == 310165) { if (crowd.PrizeLegendCount < maxLegendCount) { BuildPrizeMailItem(mail, entity, "3Item", ref prizeItemString); crowd.PrizeLegendCount++; } } else { BuildPrizeMailItem(mail, entity, "3Item", ref prizeItemString); } break; case 4: itemCode = CacheFactory.ItemsdicCache.RandomBallsoulOthercolorForWCH(); if (itemCode > 0) { mail.AddAttachment(entity.Count, itemCode, entity.IsBinding, entity.Strength); prizeItemString += string.Format("4Item-C:{0},I:{1},B:{2},S:{3}|", entity.Count, itemCode, entity.IsBinding, entity.Strength); } break; case 5: var totalPrizePoint = crowd.PrizePoint; if (category == EnumCrowdPrizeCategory.CrossRank) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); if (point > 0) { mail.AddAttachment(EnumCurrencyType.Point, point); prizeItemString += string.Format("5Point:{0}|", point); } } else if (maxPoint == -1 || totalPrizePoint < maxPoint) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); totalPrizePoint += point; if (totalPrizePoint > maxPoint) { point = maxPoint - crowd.PrizePoint; totalPrizePoint = maxPoint; } if (maxPoint != -1) { crowd.PrizePoint = totalPrizePoint; } if (point > 0) { mail.AddAttachment(EnumCurrencyType.Point, point); prizeItemString += string.Format("5Point:{0}|", point); } } break; case 6: int prizeCount = 0; if (RandomHelper.CheckPercentage(entity.Min)) { prizeCount = RandomHelper.GetInt32(21, 30); } else if (RandomHelper.CheckPercentage(entity.Max)) { prizeCount = RandomHelper.GetInt32(16, 20); } else { prizeCount = RandomHelper.GetInt32(6, 15); } //var prizeCount = RandomHelper.GetInt32(entity.Min, entity.Max); mail.AddAttachment(prizeCount, entity.SubType, entity.IsBinding, entity.Strength); prizeItemString += string.Format("3Item-C:{0},I:{1},B:{2},S:{3}|", prizeCount, entity.SubType, entity.IsBinding, entity.Strength); break; case 7: var totalBindPoint = crowd.PrizePoint; if (category == EnumCrowdPrizeCategory.CrossRank) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); if (point > 0) { mail.AddAttachment(EnumCurrencyType.BindPoint, point); prizeItemString += string.Format("8Point:{0}|", point); } } else if (maxPoint == -1 || totalBindPoint < maxPoint) { int point = RandomHelper.GetInt32(entity.Min, entity.Max); totalBindPoint += point; if (totalBindPoint > maxPoint) { point = maxPoint - crowd.PrizePoint; totalBindPoint = maxPoint; } if (maxPoint != -1) { crowd.PrizePoint = totalBindPoint; } if (point > 0) { mail.AddAttachment(EnumCurrencyType.BindPoint, point); prizeItemString += string.Format("8Point:{0}|", point); } } break; } } if (category == EnumCrowdPrizeCategory.CrossKill) { if (isKillDouble) { mail.AddAttachment(1, 310154, false, 1); prizeItemString += string.Format("3Item-C:{0},I:{1},B:{2},S:{3}|", 1, 310154, false, 1); } } prizeItemString = prizeItemString.TrimEnd('|'); } } catch (Exception ex) { return(MessageCode.NbParameterError); } return(MessageCode.Success); }