PenaltykickManagerEntity GetManager(Guid managerId) { var info = PenaltykickManagerMgr.GetById(managerId); DateTime date = DateTime.Now; if (info == null) { if (IsActivity) { //默认1次免费次数,每天最多产出5个 info = new PenaltykickManagerEntity(managerId, 0, 1, 0, 5, 0, 0, 0, 0, "", 0, 0, RefreshExChange(), 0, 0, false, date, date, date, date); PenaltykickManagerMgr.Insert(info); } else { info = new PenaltykickManagerEntity(managerId, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, RefreshExChange(), 0, 0, false, date, date, date, date); } } //每天补充免费次数 if (info.RefreshDate.Date != date.Date) { if (IsActivity) { info.FreeNumber = 1; info.DayProduceLuckyCoin = 5; info.RefreshDate = date; PenaltykickManagerMgr.Update(info); } } return(info); }
/// <summary> /// 刷新点球兑换 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public PenaltyKickExChangeResponse RefreshExChange(Guid managerId) { PenaltyKickExChangeResponse response = new PenaltyKickExChangeResponse(); response.Data = new PenaltyKickExChange(); try { var info = GetManager(managerId); if (info == null) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.MissManager)); } var point = PayCore.Instance.GetPoint(managerId); if (point < _refreshExChangePoint) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.NbPointShortage)); } info.ExChangeString = RefreshExChange(); var exList = GetExChangeEntity(info.ExChangeString); info.ExChangeString = SetExChangeString(exList); info.UpdateTime = DateTime.Now; using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); var messageCode = MessageCode.NbUpdateFail; do { messageCode = PayCore.Instance.GambleConsume(managerId, _refreshExChangePoint, ShareUtil.GenerateComb(), EnumConsumeSourceType.AdTopScoreResetExchange, transactionManager.TransactionObject); if (messageCode != MessageCode.Success) { break; } messageCode = MessageCode.NbUpdateFail; if (!PenaltykickManagerMgr.Update(info, transactionManager.TransactionObject)) { break; } messageCode = MessageCode.Success; } while (false); if (messageCode != MessageCode.Success) { transactionManager.Rollback(); return(ResponseHelper.Create <PenaltyKickExChangeResponse>(messageCode)); } transactionManager.Commit(); } response.Data.AvailableScore = info.AvailableScore; response.Data.ExChangeList = exList; } catch (Exception ex) { SystemlogMgr.Error("刷新点球兑换", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
/// <summary> /// 设置排名信息 /// </summary> /// <returns></returns> public MessageCode SetRank() { if (IsActivity)//有活动才更新排名 { PenaltykickManagerMgr.SetRank(); //return MessageCode.NbUpdateFail; } var rankList = PenaltykickManagerMgr.GetRank(); var dic = new ConcurrentDictionary <Guid, PenaltyKickRankEntity>(); foreach (var item in rankList) { if (!dic.ContainsKey(item.ManagerId)) { dic.TryAdd(item.ManagerId, item); } } _rankDic = dic; return(MessageCode.Success); }
MessageCode Tran_SaveAttachment(DbTransaction transaction, List <MailInfoEntity> mails, ItemPackageFrame package, NbManagerEntity manager, int coin, int sophicate, int point, int prestige, int bindPoint, int addGoldBar, Guid managerId, int addluckyCoin, int addGameCoin) { var orderId = mails[0].Idx.ToString(); foreach (var mail in mails) { if (!MailInfoMgr.Update(mail, transaction)) { return(MessageCode.NbUpdateFail); } } if (package != null) { if (!package.Save(transaction)) { return(MessageCode.NbUpdateFail); } } if (coin > 0) { var code = ManagerCore.Instance.AddCoin(manager, coin, EnumCoinChargeSourceType.MailAttachment, orderId, transaction); if (code != MessageCode.Success) { return(MessageCode.NbUpdateFail); } } if (sophicate > 0) { int resultSophisticate = manager.Sophisticate; if (!NbManagerMgr.AddSophisticate(manager.Idx, sophicate, ref resultSophisticate, transaction)) { return(MessageCode.NbUpdateFail); } } if (point > 0) { var code = PayCore.Instance.AddBonus(manager.Account, point, EnumChargeSourceType.MailAttachment, orderId, transaction); if (code != MessageCode.Success) { return(MessageCode.NbUpdateFail); } } if (bindPoint > 0) { var payUser = PayUserMgr.GetById(manager.Account); if (payUser == null) { payUser = new PayUserEntity(); payUser.Account = manager.Account; payUser.BindPoint = bindPoint; payUser.RowTime = DateTime.Now; payUser.IsNew = true; } else { payUser.BindPoint += bindPoint; } if (payUser.IsNew) { if (!PayUserMgr.Insert(payUser, transaction)) { return(MessageCode.NbUpdateFail); } } else { if (!PayUserMgr.Update(payUser, transaction)) { return(MessageCode.NbUpdateFail); } } } if (addGoldBar > 0) { var goldBarManager = ScoutingGoldbarMgr.GetById(managerId); if (goldBarManager == null) { goldBarManager = new ScoutingGoldbarEntity(managerId, addGoldBar, 0, 0, 0, DateTime.Now, DateTime.Now); if (!ScoutingGoldbarMgr.Insert(goldBarManager, transaction)) { return(MessageCode.NbUpdateFail); } } else { goldBarManager.GoldBarNumber = goldBarManager.GoldBarNumber + addGoldBar; if (!ScoutingGoldbarMgr.Update(goldBarManager, transaction)) { return(MessageCode.NbUpdateFail); } } GoldbarRecordEntity record = new GoldbarRecordEntity(0, managerId, true, addGoldBar, (int)EnumCoinChargeSourceType.MailAttachment, DateTime.Now); GoldbarRecordMgr.Insert(record); } if (addluckyCoin > 0) { if (!TurntableManagerMgr.AddLuckyCoin(managerId, addluckyCoin, transaction)) { return(MessageCode.NbUpdateFail); } } if (addGameCoin > 0) { if (!PenaltykickManagerMgr.AddGameCurrency(managerId, addGameCoin, transaction)) { return(MessageCode.NbUpdateFail); } } return(MessageCode.Success); }
/// <summary> /// 球探抽卡 /// </summary> /// <param name="managerId"></param> /// <param name="scoutingId">1金币抽卡,2点券抽卡,3友情点抽卡</param> /// <param name="hasTask"></param> /// <param name="count"></param> /// <param name="isAutoDec"></param> /// <returns></returns> public ScoutingLotteryResponse ScoutingLottery(Guid managerId, int scoutingId, bool hasTask, int count, bool isAutoDec = false) { //金条抽卡 if (scoutingId == 99) { return(ScoutingLotteryGoldBar(managerId, scoutingId, count)); } if (scoutingId > 3) { return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>()); } bool isTen = count == 10; //是否十连抽 var configScouting = CacheFactory.ScoutingCache.GetEntity(scoutingId); if (configScouting == null) { return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>()); } var scoutingType = configScouting.Type; var scoutingManager = GetById(managerId); var limitedOrangeCount = 0; ScoutingRecordfordaysMgr.GetCountByTime(managerId, DateTime.Today, DateTime.Today.AddDays(1), scoutingId, ref limitedOrangeCount); LotteryEntity lottery = null; List <int> cardList = null; List <int> limitedCardList = new List <int>(); var activityRate = _europeScoutingRate; if (isTen) { if (!configScouting.HasTen) { return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>()); } lottery = CacheFactory.LotteryCache.ScoutingTen(scoutingType, configScouting.OrangeLib, configScouting.LowLib, out cardList, limitedOrangeCount, out limitedCardList); } else { lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType); } if (lottery == null) { return(ResponseHelper.Create <ScoutingLotteryResponse>(MessageCode.ScoutingLotteryFail)); } //是否免费 bool isFree = false; DateTime curTime = DateTime.Now; ScoutingRecordEntity scoutingRecord = new ScoutingRecordEntity(); scoutingRecord.ManagerId = managerId; bool isAttendActiviyt = true; if (!isTen) //新手引导点券抽卡 { var card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode); //获取经理信息 var manager = ManagerCore.Instance.GetManagerExtra(managerId); if ((scoutingType == 1 && manager.CoinScouting > 0) || (scoutingType == 2 && manager.Scouting > 0) || (scoutingType == 3 && manager.FriendScouting > 0)) { isFree = true; //免费抽卡不能抽到87以上能力值的卡 lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 4); //免费抽卡卡库 card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode); } if (configScouting.Type == 2 && scoutingManager.PointLotteryCount == 0) { //第一次必得托雷斯 lottery.PrizeItemCode = 130153; var itemstring = lottery.ItemString.Split(','); itemstring[1] = lottery.PrizeItemCode.ToString(); lottery.ItemString = string.Join(",", itemstring); isAttendActiviyt = false; } else if (scoutingType == 3 && scoutingManager.FriendLotteryCount % 10 == 0) //友情点抽卡十次必得80-84橙卡 { lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 5); card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode); isAttendActiviyt = false; } else if (scoutingType == 1 && scoutingManager.CoinLotteryCount % 10 == 0) //金币抽卡十次必得80-84橙卡碎片 { lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 6); card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode); isAttendActiviyt = false; } else if (scoutingType == 2 && scoutingManager.PointLotteryCount % 10 == 0) //钻石抽卡十次必得85-87橙卡 { lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 7); card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode); isAttendActiviyt = false; } //C罗、梅西外每天只能出3张89以上的橙卡 if (limitedOrangeCount >= 3) { while (card.PlayerKpi >= 89 || card.LinkId == 30001 || card.LinkId == 30002) { lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType); card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode); } } else { if (card.PlayerKpi >= 89 && (card.LinkId != 30001 || card.LinkId != 30002)) { limitedCardList = new List <int>(); limitedCardList.Add(card.ItemCode); isAttendActiviyt = false; } } } if (isTen) { bool isReplace = true; switch (scoutingType) { case 1: //金币 for (int i = 0; i < cardList.Count; i++) { var itemcode = ActivityExThread.Instance.SummerGiftBag(1); if (itemcode > 0) { cardList[i] = itemcode; } else { itemcode = ActivityExThread.Instance.MidAutumnActivity(1, scoutingManager.SpecialItemCoin); if (itemcode > 0) { scoutingManager.SpecialItemCoin++; cardList[i] = itemcode; } } } var coinLottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 6); cardList[RandomHelper.GetInt32WithoutMax(0, cardList.Count)] = coinLottery.PrizeItemCode; lottery.ItemString = string.Join(",", cardList); break; case 2: //钻石 int number = 0; for (int i = 0; i < cardList.Count; i++) { if (ActivityExThread.Instance.IsActivity(EnumActivityExEffectType.EquipmentDebris, 0, 0)) { if (RandomHelper.CheckPercentage(activityRate)) { if (number < 2) { cardList[i] = ActivityExThread.Instance.GetRandomDebris(); number++; } } } var itemcode = ActivityExThread.Instance.SummerGiftBag(2); if (itemcode > 0) { cardList[i] = itemcode; } else { itemcode = ActivityExThread.Instance.MidAutumnActivity(2, scoutingManager.SpecialItemPoint); if (itemcode > 0) { scoutingManager.SpecialItemPoint++; cardList[i] = itemcode; } } var cardLotteryId = ActivityExThread.Instance.ScoutingDebris1(2); if (cardLotteryId > 0) { var code = CacheFactory.LotteryCache.LotteryByLib(cardLotteryId); if (code > 0) { cardList[i] = code; } } var card = ItemsdicCache.Instance.GetItem(cardList[i]); if (card.ItemType == (int)EnumItemType.PlayerCard && card.PlayerCardLevel == (int)EnumPlayerCardLevel.Orange && card.PlayerKpi >= 84) { isReplace = false; } } if (isReplace) { var pointlottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 7); cardList[RandomHelper.GetInt32WithoutMax(0, cardList.Count)] = pointlottery.PrizeItemCode; } lottery.ItemString = string.Join(",", cardList); break; case 3: //友情点 for (int i = 0; i < cardList.Count; i++) { var itemcode = ActivityExThread.Instance.SummerGiftBag(3); if (itemcode > 0) { cardList[i] = itemcode; } else { itemcode = ActivityExThread.Instance.MidAutumnActivity(3, scoutingManager.SpecialItemFriend); if (itemcode > 0) { scoutingManager.SpecialItemFriend++; cardList[i] = itemcode; } } var card = ItemsdicCache.Instance.GetItem(cardList[i]); if (card.ItemType == (int)EnumItemType.PlayerCard && card.PlayerCardLevel == (int)EnumPlayerCardLevel.Orange) { isReplace = false; } } if (isReplace) { var friendlottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 5); cardList[RandomHelper.GetInt32WithoutMax(0, cardList.Count)] = friendlottery.PrizeItemCode; } lottery.ItemString = string.Join(",", cardList); break; } } else { if (scoutingType == 2 && ActivityExThread.Instance.IsActivity(EnumActivityExEffectType.EquipmentDebris, 0, 0)) { if (RandomHelper.CheckPercentage(activityRate)) { if (isAttendActiviyt) { lottery.PrizeItemCode = ActivityExThread.Instance.GetRandomDebris(); var itemstring = lottery.ItemString.Split(','); itemstring[1] = lottery.PrizeItemCode.ToString(); lottery.ItemString = string.Join(",", itemstring); } } } if (isAttendActiviyt) { var itemcode = ActivityExThread.Instance.MidAutumnActivity(scoutingType, scoutingManager.SpecialItemFriend); if (itemcode > 0) { switch (scoutingType) { case 1: scoutingManager.SpecialItemCoin++; break; case 2: scoutingManager.SpecialItemPoint++; break; case 3: scoutingManager.SpecialItemFriend++; break; } lottery.PrizeItemCode = itemcode; var itemstring = lottery.ItemString.Split(','); itemstring[1] = lottery.PrizeItemCode.ToString(); lottery.ItemString = string.Join(",", itemstring); } } } scoutingRecord.ItemCode = lottery.PrizeItemCode; scoutingRecord.ItemString = lottery.ItemString; scoutingRecord.RowTime = curTime; scoutingRecord.ScoutingType = configScouting.Type; scoutingRecord.Status = 1; scoutingRecord.Strength = lottery.Strength; //球探抽卡 var response = MallCore.Instance.Scouting(managerId, configScouting.MallCode, curTime, scoutingRecord, isTen, cardList, isAutoDec, isFree); if (response.Code == (int)MessageCode.Success) { if (scoutingManager != null) //记录玩家抽卡信息 { if (!isTen) { if (scoutingType == 1) { scoutingManager.CoinLotteryCount += 1; } else if (scoutingType == 2) { scoutingManager.PointLotteryCount += 1; } else { scoutingManager.FriendLotteryCount += 1; } } else { if (scoutingType == 1) { scoutingManager.CoinTenLotteryCount += 1; } else if (scoutingType == 2) { scoutingManager.PointTenLotteryCount += 1; } else { scoutingManager.FriendTenLotteryCount += 1; } } scoutingManager.UpdateTime = DateTime.Now; ScoutingManagerMgr.Update(scoutingManager); response.Data.NextPointScouting = GetLotteryNeedCount(scoutingManager.PointLotteryCount); response.Data.NextCoinScouting = GetLotteryNeedCount(scoutingManager.CoinLotteryCount); response.Data.NextFriendScouting = GetLotteryNeedCount(scoutingManager.FriendLotteryCount); } foreach (var itemcode in limitedCardList) { var scoutingRecordDays = new ScoutingRecordfordaysEntity(); scoutingRecordDays.ManagerId = managerId; scoutingRecordDays.CardItemCodeThen89 = itemcode; scoutingRecordDays.RowTime = DateTime.Now; scoutingRecordDays.ScoutingType = scoutingType; ScoutingRecordfordaysMgr.Insert(scoutingRecordDays); } int orangeCount = 0; int purpleCount = 0; int luckyCoinNumber = 0; //点球游戏币数量 int gameCurrency = 0; MailBuilder mail = null; if (isTen) { foreach (var card in cardList) { HandleOrangeCard(managerId, card, ref orangeCount, ref purpleCount, hasTask, ref luckyCoinNumber); ActivityExThread.Instance.ScoutingDebris(managerId, card, ref mail); if (response.Data.OlympicTheGoldMedalId == 0) { //奥运金牌掉落 response.Data.OlympicTheGoldMedalId = OlympicCore.Instance.GetOlympicTheGoldMedal( managerId, (EnumOlympicGeyType)scoutingId); } //点球游戏币 20%概率 最多2个 if (RandomHelper.CheckPercentage(20) && gameCurrency < 2) { gameCurrency++; } } } else { HandleOrangeCard(managerId, response.Data.ItemCode, ref orangeCount, ref purpleCount, hasTask, ref luckyCoinNumber); ActivityExThread.Instance.ScoutingDebris(managerId, response.Data.ItemCode, ref mail); //奥运金牌掉落 response.Data.OlympicTheGoldMedalId = OlympicCore.Instance.GetOlympicTheGoldMedal( managerId, (EnumOlympicGeyType)scoutingId); //点球游戏币 20%概率 if (RandomHelper.CheckPercentage(20)) { gameCurrency++; } } if (mail != null) { mail.Save(); } //如果有点球活动 if (PenaltyKickCore.Instance.IsActivity) { //成功增加数量 int successAddNumber = 0; PenaltykickManagerMgr.AddSystemProduceGameCurrency(managerId, gameCurrency, ref successAddNumber); gameCurrency = successAddNumber; } else { gameCurrency = 0; } List <PopMessageEntity> popList = TaskHandler.Instance.ScoutingLottery(managerId, 1); response.Data.PopMsg = popList; response.Data.LuckyCoinNumber = luckyCoinNumber; response.Data.GameCurrency = gameCurrency; if (response.Data.AddReiki > 0) { ManagerCore.Instance.DeleteCache(managerId); } } return(response); }
/// <summary> /// 积分兑换 /// </summary> /// <param name="managerId"></param> /// <param name="itemCode"></param> /// <returns></returns> public PenaltyKickExChangeResponse ExChange(Guid managerId, int itemCode) { PenaltyKickExChangeResponse response = new PenaltyKickExChangeResponse(); response.Data = new PenaltyKickExChange(); try { var info = GetManager(managerId); if (info == null) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.MissManager)); } var exList = GetExChangeEntity(info.ExChangeString); if (exList == null) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.NbParameterError)); } //获取要兑换的物品 var exItem = exList.Find(r => r.ItemCode == itemCode); if (exItem == null) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.ExChangeItemNot)); } //已经兑换过 if (exItem.Status == 1) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.RepeatExChange)); } //积分不足 if (info.AvailableScore < exItem.Price) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.LadderExchangeScoreShortage)); } info.AvailableScore = info.AvailableScore - exItem.Price; exItem.Status = 1; //所有物品都兑换完了 自动刷新 if (!exList.Exists(r => r.Status == 0)) { info.ExChangeString = RefreshExChange(); exList = GetExChangeEntity(info.ExChangeString); } else { info.ExChangeString = SetExChangeString(exList); } info.UpdateTime = DateTime.Now; var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.AdTopScorerKeep); if (package == null) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(MessageCode.NbParameterError)); } var messageCode = package.AddItem(exItem.ItemCode); if (messageCode != MessageCode.Success) { return(ResponseHelper.Create <PenaltyKickExChangeResponse>(messageCode)); } using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); messageCode = MessageCode.NbUpdateFail; do { if (!package.Save(transactionManager.TransactionObject)) { break; } if (!PenaltykickManagerMgr.Update(info, transactionManager.TransactionObject)) { break; } messageCode = MessageCode.Success; } while (false); if (messageCode != MessageCode.Success) { transactionManager.Rollback(); return(ResponseHelper.Create <PenaltyKickExChangeResponse>(messageCode)); } transactionManager.Commit(); package.Shadow.Save(); } response.Data.AvailableScore = info.AvailableScore; response.Data.ExChangeList = exList; response.Data.ItemCode = exItem.ItemCode; } catch (Exception ex) { SystemlogMgr.Error("点球积分兑换", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
/// <summary> /// 开始射门 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public PenaltyKickShootResponse Shoot(Guid managerId) { var response = new PenaltyKickShootResponse(); response.Data = new PenaltyKickShoot(); try { if (!IsActivity) { return(ResponseHelper.Create <PenaltyKickShootResponse>(MessageCode.AdMissSeason)); } var info = GetManager(managerId); if (info == null) { return(ResponseHelper.Create <PenaltyKickShootResponse>(MessageCode.MissManager)); } if (info.Status != 1) { return(ResponseHelper.Create <PenaltyKickShootResponse>(MessageCode.GameEnd)); } if (info.ShootLog.Length > 0) { var shootList = info.ShootLog.Split(','); if (shootList.Length >= 5) { return(ResponseHelper.Create <PenaltyKickShootResponse>(MessageCode.GameEnd)); } } //背包满了 不让踢球 var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.AdTopScorerKeep); if (package == null) { return(ResponseHelper.Create <PenaltyKickShootResponse>(MessageCode.NbParameterError)); } if (package.IsFull) { return(ResponseHelper.Create <PenaltyKickShootResponse>(MessageCode.ItemPackageFull)); } //射门结果 var shootResult = GetShootResult(info.ShooterAttribute); //射门结果处理 Shoot(info, shootResult.IsGoals); int score = 0; //进球了才有奖励 var prizeList = new List <PrizeEntity>(); if (shootResult.IsGoals) { score++; //每进一球加一点 prizeList = GetPrize(info.ShootLog, info.MaxCombGoals); foreach (var item in prizeList) { switch (item.ItemType) { case 3: //物品 var code = package.AddItems(item.ItemCode, item.ItemCount); if (code != MessageCode.Success) { return(ResponseHelper.Create <PenaltyKickShootResponse>(code)); } break; case 5: //积分 score += item.ItemCount; break; } } info.AvailableScore += score; info.TotalScore += score; info.ScoreChangeTime = DateTime.Now; } info.UpdateTime = DateTime.Now; using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); var messageCode = MessageCode.NbUpdateFail; do { if (shootResult.IsGoals) { if (!package.Save(transactionManager.TransactionObject)) { break; } } if (!PenaltykickManagerMgr.Update(info, transactionManager.TransactionObject)) { break; } messageCode = MessageCode.Success; } while (false); if (messageCode != MessageCode.Success) { transactionManager.Rollback(); return(ResponseHelper.Create <PenaltyKickShootResponse>(messageCode)); } transactionManager.Commit(); package.Shadow.Save(); } response.Data.Info = GetManagerInfoResponse(info); response.Data.ShootResult = shootResult; response.Data.ItemList = prizeList; //更新排名信息 UpdateRank(info); } catch (Exception ex) { SystemlogMgr.Error("点球射门", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
/// <summary> /// 开始游戏 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public GetPenaltyKickInfoResponse Join(Guid managerId) { var response = new GetPenaltyKickInfoResponse(); response.Data = new GetPenaltyKickInfo(); try { //不在活动时间内 if (!IsActivity) { return(ResponseHelper.Create <GetPenaltyKickInfoResponse>(MessageCode.AdMissSeason)); } var manager = ManagerCore.Instance.GetManager(managerId); if (null == manager) { return(ResponseHelper.Create <GetPenaltyKickInfoResponse>(MessageCode.MissManager)); } var info = GetManager(managerId); if (info == null) { return(ResponseHelper.Create <GetPenaltyKickInfoResponse>(MessageCode.MissManager)); } //游戏还未结束 if (info.Status == 1) { return(ResponseHelper.Create <GetPenaltyKickInfoResponse>(MessageCode.GameNotEnd)); } bool isfree = false; if (info.FreeNumber > 0) { info.FreeNumber--; isfree = true; } else { if (info.GameCurrency <= 0) { return(ResponseHelper.Create <GetPenaltyKickInfoResponse>(MessageCode.GameCurrencyNumberNot)); } info.GameCurrency--; } info.Status = 1; //获取踢球球员属性 var shooterAttribute = GetShooterId(managerId); if (shooterAttribute == 0) { return(ResponseHelper.Create <GetPenaltyKickInfoResponse>(MessageCode.NbParameterError)); } info.ShooterAttribute = shooterAttribute; info.ShootNumber++; info.ShootLog = ""; info.CombGoals = 0; info.MaxCombGoals = 0; info.UpdateTime = DateTime.Now; if (!PenaltykickManagerMgr.Update(info)) { return(ResponseHelper.Create <GetPenaltyKickInfoResponse>(MessageCode.NbUpdateFail)); } //插入消费记录 PenaltykickManagerMgr.InsertRecord(managerId, 1, isfree); response.Data = GetManagerInfoResponse(info); } catch (Exception ex) { SystemlogMgr.Error("点球开始游戏", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
private MessageCode SendPrize(PenaltykickSeasonEntity seasonInfo) { if (seasonInfo.Idx == 0) { return(MessageCode.Success); } PenaltykickManagerMgr.SetRank(); var prizeList = PenaltykickManagerMgr.GetNotPrize(seasonInfo.Idx); seasonInfo.IsPrize = true; seasonInfo.PrizeTime = DateTime.Now; foreach (var item in prizeList) { if (item.IsPrize || item.TotalScore < 500) { continue; } item.IsPrize = true; //排名奖励 var prize = CacheFactory.AdCache.GetPrize(3, item.Rank); if (prize == null || prize.Count == 0) { continue; } //邮件 var mail = new MailBuilder(item.Rank, item.ManagerId); foreach (var p in prize) { switch (p.ItemType) { case 3: //暂时只有物品奖励 mail.AddAttachment(p.ItemCount, p.ItemCode, false, 1); break; case 10: //金条 mail.AddAttachment(EnumCurrencyType.GoldBar, p.ItemCount); break; } } using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); var messageCode = MessageCode.NbUpdateFail; do { if (!PenaltykickManagerMgr.Update(item, transactionManager.TransactionObject)) { break; } if (!mail.Save(transactionManager.TransactionObject)) { break; } messageCode = MessageCode.Success; } while (false); if (messageCode != MessageCode.Success) { transactionManager.Rollback(); } transactionManager.Commit(); } } PenaltykickSeasonMgr.Update(seasonInfo); return(MessageCode.Success); }