Example #1
0
        MessageCode SaveMatch(NbManagerEntity manager, NbManagerextraEntity managerex, BaseMatchData pkmatchData,
                              Guid lotteryMatchId, int win, int lose, int draw, int prizeExp, int prizeCoin, int prizeItemCode, string prizeItemString
                              , bool isrevenge, long revengeRecordId, ref long outRevengeRecordId, PlayerkillInfoEntity info, int pointCount)
        {
            if (manager == null)
            {
                return(MessageCode.NbUpdateFail);
            }
            try
            {
                using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
                {
                    transactionManager.BeginTransaction();
                    var messageCode = Tran_SaveMatch(transactionManager.TransactionObject, manager, managerex, pkmatchData,
                                                     lotteryMatchId, win, lose, draw, prizeExp, prizeCoin, prizeItemCode, prizeItemString
                                                     , isrevenge, revengeRecordId, ref outRevengeRecordId, info, pointCount);

                    if (messageCode == ShareUtil.SuccessCode)
                    {
                        transactionManager.Commit();
                    }
                    else
                    {
                        transactionManager.Rollback();
                    }
                    return(messageCode);
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("SavePlayerKillMatch", ex);
                return(MessageCode.Exception);
            }
        }
        /// <summary>
        /// 将IDataReader的当前记录读取到NbManagerextraEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public NbManagerextraEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new NbManagerextraEntity();

            obj.ManagerId         = (System.Guid)reader["ManagerId"];
            obj.Stamina           = (System.Int32)reader["Stamina"];
            obj.StaminaMax        = (System.Int32)reader["StaminaMax"];
            obj.ResumeStaminaTime = (System.DateTime)reader["ResumeStaminaTime"];
            obj.HelpTrainCount    = (System.Int32)reader["HelpTrainCount"];
            obj.ByHelpTrainCount  = (System.Int32)reader["ByHelpTrainCount"];
            obj.RecordDate        = (System.DateTime)reader["RecordDate"];
            obj.Kpi                  = (System.Int32)reader["Kpi"];
            obj.FunctionList         = (System.String)reader["FunctionList"];
            obj.GuideBuffRecord      = (System.String)reader["GuideBuffRecord"];
            obj.HasGuidePrize        = (System.Boolean)reader["HasGuidePrize"];
            obj.GuidePrizeExpired    = (System.DateTime)reader["GuidePrizeExpired"];
            obj.PayFirstFlag         = (System.Boolean)reader["PayFirstFlag"];
            obj.PayContinuDate       = (System.DateTime)reader["PayContinuDate"];
            obj.Status               = (System.Int32)reader["Status"];
            obj.RowTime              = (System.DateTime)reader["RowTime"];
            obj.UpdateTime           = (System.DateTime)reader["UpdateTime"];
            obj.Vigor                = (System.Int32)reader["Vigor"];
            obj.LevelGiftExpired     = (System.DateTime)reader["LevelGiftExpired"];
            obj.GuidePrizeCount      = (System.Int32)reader["GuidePrizeCount"];
            obj.GuidePrizeLastDate   = (System.DateTime)reader["GuidePrizeLastDate"];
            obj.Scouting             = (System.Int32)reader["Scouting"];
            obj.ScoutingUpdate       = (System.DateTime)reader["ScoutingUpdate"];
            obj.LevelGiftStep        = (System.Int32)reader["LevelGiftStep"];
            obj.LevelGiftExpired2    = (System.DateTime)reader["LevelGiftExpired2"];
            obj.LevelGiftExpired3    = (System.DateTime)reader["LevelGiftExpired3"];
            obj.Active               = (System.Int32)reader["Active"];
            obj.ScoutingPointFirst   = (System.Boolean)reader["ScoutingPointFirst"];
            obj.FriendInviteCount    = (System.Int32)reader["FriendInviteCount"];
            obj.VeteranNumber        = (System.Int32)reader["VeteranNumber"];
            obj.StaminaGiftStatus    = (System.Int32)reader["StaminaGiftStatus"];
            obj.GuideItemCode        = (System.Int32)reader["GuideItemCode"];
            obj.IsGuideLottery       = (System.Boolean)reader["IsGuideLottery"];
            obj.LeagueScore          = (System.Int32)reader["LeagueScore"];
            obj.CoinScouting         = (System.Int32)reader["CoinScouting"];
            obj.CoinScoutingUpdate   = (System.DateTime)reader["CoinScoutingUpdate"];
            obj.FriendScouting       = (System.Int32)reader["FriendScouting"];
            obj.FriendScoutingUpdate = (System.DateTime)reader["FriendScoutingUpdate"];
            obj.OpenBoxCount         = (System.Int32)reader["OpenBoxCount"];
            obj.SkillPoint           = (System.Int32)reader["SkillPoint"];
            obj.SkillType            = (System.Int32)reader["SkillType"];
            obj.ResetPotentialNumber = (System.Int32)reader["ResetPotentialNumber"];

            return(obj);
        }
Example #3
0
        /// <summary>
        /// Cals the current stamina.
        /// </summary>
        /// <param name="managerExtra">The managerExtra.</param>
        public static void CalCurrentStamina(NbManagerextraEntity managerExtra, int level, int vipLevel)
        {
            if (managerExtra == null)
            {
                return;
            }
            DateTime newResumeTime = DateTime.Now;

            managerExtra.StaminaMax = CacheFactory.ManagerDataCache.GetMaxStamina(level);
            int newStamina = CalCurrentStamina(managerExtra.ResumeStaminaTime, out newResumeTime, managerExtra.Stamina,
                                               managerExtra.StaminaMax, vipLevel);

            managerExtra.Stamina           = newStamina;
            managerExtra.ResumeStaminaTime = newResumeTime;
        }
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="managerId">managerId</param>
        /// <returns>NbManagerextraEntity</returns>
        /// <remarks>2016/5/26 20:52:55</remarks>
        public NbManagerextraEntity GetById(System.Guid managerId)
        {
            var database = new SqlDatabase(this.ConnectionString);

            DbCommand commandWrapper = database.GetStoredProcCommand("P_NbManagerextra_GetById");

            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, managerId);


            NbManagerextraEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
        /// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016/5/26 20:52:55</remarks>
        public bool Update(NbManagerextraEntity entity, DbTransaction trans = null)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_NbManagerextra_Update");

            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId);
            database.AddInParameter(commandWrapper, "@Stamina", DbType.Int32, entity.Stamina);
            database.AddInParameter(commandWrapper, "@StaminaMax", DbType.Int32, entity.StaminaMax);
            database.AddInParameter(commandWrapper, "@ResumeStaminaTime", DbType.DateTime, entity.ResumeStaminaTime);
            database.AddInParameter(commandWrapper, "@HelpTrainCount", DbType.Int32, entity.HelpTrainCount);
            database.AddInParameter(commandWrapper, "@ByHelpTrainCount", DbType.Int32, entity.ByHelpTrainCount);
            database.AddInParameter(commandWrapper, "@RecordDate", DbType.DateTime, entity.RecordDate);
            database.AddInParameter(commandWrapper, "@Kpi", DbType.Int32, entity.Kpi);
            database.AddInParameter(commandWrapper, "@FunctionList", DbType.AnsiString, entity.FunctionList);
            database.AddInParameter(commandWrapper, "@GuideBuffRecord", DbType.AnsiString, entity.GuideBuffRecord);
            database.AddInParameter(commandWrapper, "@HasGuidePrize", DbType.Boolean, entity.HasGuidePrize);
            database.AddInParameter(commandWrapper, "@GuidePrizeExpired", DbType.DateTime, entity.GuidePrizeExpired);
            database.AddInParameter(commandWrapper, "@PayFirstFlag", DbType.Boolean, entity.PayFirstFlag);
            database.AddInParameter(commandWrapper, "@PayContinuDate", DbType.DateTime, entity.PayContinuDate);
            database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);
            database.AddInParameter(commandWrapper, "@UpdateTime", DbType.DateTime, entity.UpdateTime);
            database.AddInParameter(commandWrapper, "@Vigor", DbType.Int32, entity.Vigor);
            database.AddInParameter(commandWrapper, "@LevelGiftExpired", DbType.DateTime, entity.LevelGiftExpired);
            database.AddInParameter(commandWrapper, "@GuidePrizeCount", DbType.Int32, entity.GuidePrizeCount);
            database.AddInParameter(commandWrapper, "@GuidePrizeLastDate", DbType.DateTime, entity.GuidePrizeLastDate);
            database.AddInParameter(commandWrapper, "@Scouting", DbType.Int32, entity.Scouting);
            database.AddInParameter(commandWrapper, "@ScoutingUpdate", DbType.DateTime, entity.ScoutingUpdate);
            database.AddInParameter(commandWrapper, "@LevelGiftStep", DbType.Int32, entity.LevelGiftStep);
            database.AddInParameter(commandWrapper, "@LevelGiftExpired2", DbType.DateTime, entity.LevelGiftExpired2);
            database.AddInParameter(commandWrapper, "@LevelGiftExpired3", DbType.DateTime, entity.LevelGiftExpired3);
            database.AddInParameter(commandWrapper, "@Active", DbType.Int32, entity.Active);
            database.AddInParameter(commandWrapper, "@ScoutingPointFirst", DbType.Boolean, entity.ScoutingPointFirst);
            database.AddInParameter(commandWrapper, "@FriendInviteCount", DbType.Int32, entity.FriendInviteCount);
            database.AddInParameter(commandWrapper, "@VeteranNumber", DbType.Int32, entity.VeteranNumber);
            database.AddInParameter(commandWrapper, "@StaminaGiftStatus", DbType.Int32, entity.StaminaGiftStatus);
            database.AddInParameter(commandWrapper, "@GuideItemCode", DbType.Int32, entity.GuideItemCode);
            database.AddInParameter(commandWrapper, "@IsGuideLottery", DbType.Boolean, entity.IsGuideLottery);
            database.AddInParameter(commandWrapper, "@LeagueScore", DbType.Int32, entity.LeagueScore);
            database.AddInParameter(commandWrapper, "@CoinScouting", DbType.Int32, entity.CoinScouting);
            database.AddInParameter(commandWrapper, "@CoinScoutingUpdate", DbType.DateTime, entity.CoinScoutingUpdate);
            database.AddInParameter(commandWrapper, "@FriendScouting", DbType.Int32, entity.FriendScouting);
            database.AddInParameter(commandWrapper, "@FriendScoutingUpdate", DbType.DateTime, entity.FriendScoutingUpdate);
            database.AddInParameter(commandWrapper, "@OpenBoxCount", DbType.Int32, entity.OpenBoxCount);
            database.AddInParameter(commandWrapper, "@SkillPoint", DbType.Int32, entity.SkillPoint);
            database.AddInParameter(commandWrapper, "@SkillType", DbType.Int32, entity.SkillType);
            database.AddInParameter(commandWrapper, "@ResetPotentialNumber", DbType.Int32, entity.ResetPotentialNumber);


            int results = 0;

            if (trans != null)
            {
                results = database.ExecuteNonQuery(commandWrapper, trans);
            }
            else
            {
                results = database.ExecuteNonQuery(commandWrapper);
            }

            entity.ManagerId = (System.Guid)database.GetParameterValue(commandWrapper, "@ManagerId");

            return(Convert.ToBoolean(results));
        }
Example #6
0
        public static List <PopMessageEntity> SaveManagerAfter(NbManagerEntity manager, bool sendByChat, NbManagerextraEntity extra = null, int currentPoint = -1, int tourLeagueId = -1)
        {
            if (manager == null)
            {
                return(null);
            }
            List <PopMessageEntity> popList = new List <PopMessageEntity>();

            if (manager.AddCoin > 0 || manager.AddExp > 0)
            {
                //ShadowMgr.SaveCoinCharge(manager.Idx, manager.AddCoin, manager.AddExp, manager.IsLevelup, manager.Level, manager.CoinSourceType, manager.CoinOrderId);
            }
            if (manager.IsLevelup)
            {
                // ChatHelper.SendOpenLevelGiftPop(manager);
                if (extra == null)
                {
                    extra = ManagerCore.Instance.GetManagerExtra(manager.Idx);
                }
                CalCurrentStamina(extra, manager.Level, manager.VipLevel);
                if (extra.Stamina < extra.StaminaMax)
                {
                    extra.Stamina = extra.StaminaMax;
                    //extra.Stamina += ManagerLevelupAddStamina;
                    //if (extra.Stamina > extra.StaminaMax)
                    //    extra.Stamina = extra.StaminaMax;
                    NbManagerextraMgr.Update(extra);
                }
            }

            //var pop1 = ChatHelper.SendUpdateManagerInfoPop(manager, extra, sendByChat, currentPoint, tourLeagueId);
            //if (pop1 != null)
            //    popList.Add(pop1);
            //var pop2 = ChatHelper.SendOpenFuncPop(manager, sendByChat);
            //if (pop2 != null)
            //    popList.Add(pop2);
            //var pop3 = ChatHelper.SendOpenTaskPop(manager, sendByChat);
            //if (pop3 != null)
            //    popList.Add(pop3);

            DeleteOpenFunctionCache(manager.Idx);
            manager.IsLevelup = false;
            return(popList);
        }
Example #7
0
 public static List <PopMessageEntity> SaveManagerAfter(NbManagerEntity manager, NbManagerextraEntity extra = null,
                                                        bool sendByChat = false)
 {
     return(SaveManagerAfter(manager, sendByChat, extra));
 }
Example #8
0
        public static List <PopMessageEntity> SaveManagerAfter(NbManagerEntity manager, NbManagerextraEntity extra, DbTransaction transaction)
        {
            if (manager == null)
            {
                return(null);
            }
            List <PopMessageEntity> popList = new List <PopMessageEntity>();

            if (manager.AddCoin > 0 || manager.AddExp > 0)
            {
                //ShadowMgr.SaveCoinCharge(manager.Idx, manager.AddCoin, manager.AddExp, manager.IsLevelup, manager.Level, manager.CoinSourceType, manager.CoinOrderId);
            }
            if (manager.IsLevelup)
            {
                // ChatHelper.SendOpenLevelGiftPop(manager);
                if (extra == null)
                {
                    extra = ManagerCore.Instance.GetManagerExtra(manager.Idx);
                }
                CalCurrentStamina(extra, manager.Level, manager.VipLevel);
                if (extra.Stamina < extra.StaminaMax)
                {
                    extra.Stamina = extra.StaminaMax;
                    // extra.Stamina += ManagerLevelupAddStamina;
                    //if (extra.Stamina > extra.StaminaMax)
                    //    extra.Stamina = extra.StaminaMax;
                    extra.ResumeStaminaTime = DateTime.Now;
                    NbManagerextraMgr.Update(extra, transaction);
                }
            }
            DeleteOpenFunctionCache(manager.Idx);
            manager.IsLevelup = false;
            return(popList);
        }
Example #9
0
        public static bool SaveManagerData(NbManagerEntity manager, NbManagerextraEntity extra, bool openTask = true,
                                           DbTransaction transaction = null, string zoneId = "")
        {
            try
            {
                var functionList = manager.FunctionList;
                if (manager.IsLevelup)
                {
                    var function = CacheFactory.ManagerDataCache.GetFunctionList(manager.Level);
                    if (function != null)
                    {
                        if (function.FunctionId > 0)
                        {
                            manager.AddOpenFunc(function.FunctionId);
                        }
                        functionList = function.FunctionList;
                        if (extra != null)
                        {
                            extra.FunctionList = functionList;
                        }
                    }
                }
                int returnCode        = -2;
                var levelGiftExpired  = ShareUtil.BaseTime;
                var levelGiftExpired2 = ShareUtil.BaseTime;
                var levelGiftExpired3 = ShareUtil.BaseTime;
                int step = 0;
                if (manager.IsLevelup)
                {
                    step = CacheFactory.ManagerDataCache.GetLevelgiftStep(manager.Level);
                    if (step > 0)
                    {
                        manager.OpenLevelGift = true;
                        switch (step)
                        {
                        case 1:
                            levelGiftExpired = DateTime.Now.AddHours(72);
                            break;

                        case 2:
                            levelGiftExpired2 = DateTime.Now.AddHours(72);
                            break;

                        case 3:
                            levelGiftExpired3 = DateTime.Now.AddHours(72);
                            break;
                        }
                        if (extra != null)
                        {
                            extra.LevelGiftExpired  = levelGiftExpired;
                            extra.LevelGiftExpired2 = levelGiftExpired2;
                            extra.LevelGiftExpired3 = levelGiftExpired3;
                            extra.LevelGiftStep     = step;
                        }
                    }
                }
                NbManagerMgr.Save(manager.Idx, manager.Level, manager.EXP, manager.Sophisticate, manager.Score, manager.Coin,
                                  manager.Reiki, manager.TeammemberMax, manager.TrainSeatMax, manager.VipLevel,
                                  functionList, levelGiftExpired, levelGiftExpired2, levelGiftExpired3, step, manager.RowVersion, ref returnCode, transaction, zoneId);
                if (returnCode != 0)
                {
                    return(false);
                }
                manager.FunctionList = functionList;

                try
                {
                    if (manager.IsLevelup)
                    {
                        var code = SkillCardRules.SetSkillMapByManagerLevel(manager, transaction);
                        if (code != MessageCode.Success)
                        {
                            return(false);
                        }

                        var addSkillPoint = CacheFactory.ManagerDataCache.GetAddSkillPointByLevel(manager.Level);
                        if (extra != null)
                        {
                            extra.SkillPoint += addSkillPoint;
                        }
                        else
                        {
                            if (!NbManagerextraMgr.AddSkillPoint(manager.Idx, addSkillPoint, transaction))
                            {
                                return(false);
                            }
                        }

                        CalCurrentStamina(extra, manager.Level, manager.VipLevel);
                        if (extra == null)
                        {
                            extra = ManagerCore.Instance.GetManagerExtra(manager.Idx);
                            if (extra.Stamina < extra.StaminaMax)
                            {
                                extra.Stamina = extra.StaminaMax;
                                // extra.Stamina += ManagerLevelupAddStamina;
                                //if (extra.Stamina > extra.StaminaMax)
                                //    extra.Stamina = extra.StaminaMax;
                                extra.ResumeStaminaTime = DateTime.Now;
                                NbManagerextraMgr.Update(extra, transaction);
                            }
                        }
                        else
                        {
                            if (extra.Stamina < extra.StaminaMax)
                            {
                                extra.Stamina           = extra.StaminaMax;
                                extra.ResumeStaminaTime = DateTime.Now;
                            }
                        }

                        //if (TaskCore.Instance.CheckOpenDailyTask(manager.Level))
                        //{
                        //    var daily = TaskDailyrecordMgr.GetById(manager.Idx, zoneId);
                        //    if (daily == null)
                        //    {
                        //        var entity = TaskCore.Instance.CreateDailyTask(manager.Idx);
                        //        if (!TaskDailyrecordMgr.Insert(entity, transaction, zoneId))
                        //            return false;
                        //    }
                        //}
                        if (openTask)
                        {
                            List <TaskRecordEntity> newTasks = new List <TaskRecordEntity>();
                            TaskCore.Instance.GetLevelOpenTasks(manager.Idx, manager.Level, ref newTasks, zoneId);
                            if (newTasks.Count > 0)
                            {
                                foreach (var entity in newTasks)
                                {
                                    TaskCore.Instance.HandleOpenTaskStatus(entity, zoneId);
                                    if (!TaskRecordMgr.Add(entity, transaction, zoneId))
                                    {
                                        return(false);
                                    }
                                }
                                manager.HasOpenTask = true;
                            }
                        }
                        //如果等级为15级 向竞技场注册用户
                        //获取竞技场等级限制
                        //if (manager.Level == level.Values)
                        //{

                        //}
                    }
                }
                catch (Exception ex)
                {
                    SystemlogMgr.ErrorByZone("SaveManagerData Task pending", ex, zoneId);
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                SystemlogMgr.ErrorByZone("SaveManagerData", ex, zoneId);
                return(false);
            }
            finally
            {
                ManagerCore.Instance.DeleteCache(manager.Idx);
            }
        }
Example #10
0
 public static bool SaveManagerData(NbManagerEntity manager, NbManagerextraEntity extra, DbTransaction transaction, string zoneId = "")
 {
     return(SaveManagerData(manager, extra, true, transaction, zoneId));
 }
Example #11
0
        public static bool Update(NbManagerextraEntity nbManagerextraEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new NbManagerextraProvider(zoneId);

            return(provider.Update(nbManagerextraEntity, trans));
        }
Example #12
0
        MessageCode Tran_SaveMatch(DbTransaction transaction, NbManagerEntity manager, NbManagerextraEntity managerex, BaseMatchData pkmatchData,
                                   Guid lotteryMatchId, int win, int lose, int draw, int prizeExp, int prizeCoin, int prizeItemCode, string prizeItemString
                                   , bool isrevenge, long revengeRecordId, ref long outRevengeRecordId, PlayerkillInfoEntity info, int prizeItemCount)
        {
            if (prizeCoin > 0 || prizeExp > 0)
            {
                if (!ManagerUtil.SaveManagerData(manager, managerex, transaction))
                {
                    return(MessageCode.NbUpdateFail);
                }
                else
                {
                    ManagerUtil.SaveManagerAfter(manager, managerex, transaction);
                }
                if (!NbManagerextraMgr.Update(managerex, transaction))
                {
                    return(MessageCode.NbUpdateFail);
                }
            }
            PlayerkillInfoMgr.Update(info);
            PlayerkillInfoMgr.SaveFightResult(pkmatchData.Home.ManagerId, manager.Logo, pkmatchData.Away.ManagerId, lotteryMatchId,
                                              win, lose, draw, DateTime.Now,
                                              pkmatchData.MatchId, pkmatchData.Home.Name, pkmatchData.Away.Name,
                                              pkmatchData.Home.Score, pkmatchData.Away.Score, prizeExp, prizeCoin,
                                              prizeItemCode
                                              , prizeItemString, isrevenge, revengeRecordId, prizeItemCount, ref outRevengeRecordId, transaction);

            return(MessageCode.Success);
        }
Example #13
0
 private MessageCode SaveMatchConfirm(NbManagerEntity manager, ItemPackageFrame package, LeagueRecordEntity leagueRecordInfo,
                                      LeagueManagerrecordEntity nextManagerRecord, LeagueManagerrecordEntity leagueManagerRecord, int point,
                                      bool isUpdatenextManagerRecord, LaegueManagerinfoEntity leagueManagerInfo, LeagueFightMapFrame fightMap, NbManagerextraEntity managerExtra, LeagueWincountrecordEntity leagueWinCount, DbTransaction trans)
 {
     if (!ManagerUtil.SaveManagerData(manager, managerExtra, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!NbManagerextraMgr.Update(managerExtra, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (package != null)
     {
         if (!package.Save(trans))
         {
             return(MessageCode.NbUpdateFail);
         }
         package.Shadow.Save();
     }
     if (!LeagueRecordMgr.Update(leagueRecordInfo, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (isUpdatenextManagerRecord)
     {
         if (nextManagerRecord != null)
         {
             if (!LeagueManagerrecordMgr.Update(nextManagerRecord, trans))
             {
                 return(MessageCode.NbUpdateFail);
             }
         }
     }
     if (!LaegueManagerinfoMgr.Update(leagueManagerInfo, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueManagerrecordMgr.Update(leagueManagerRecord, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (point > 0)
     {
         var code = PayCore.Instance.AddBonus(manager.Idx, point, EnumChargeSourceType.LeaguePrize,
                                              ShareUtil.GenerateComb().ToString(), trans);
         return(code);
     }
     if (!fightMap.SaveFIghtMap(trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueWincountrecordMgr.Update(leagueWinCount, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     return(MessageCode.Success);
 }
Example #14
0
        /// <summary>
        /// 确认比赛结果
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="leagueRecordInfo"></param>
        /// <returns></returns>
        public LeaguePrizeResponse MatchConfirm(NbManagerEntity manager, LeagueRecordEntity leagueRecordInfo, LeagueManagerrecordEntity leagueManagerRecord, LaegueManagerinfoEntity lagueManagerInfo, BaseMatchData matchData, LeagueFightMapFrame fightMap, NbManagerextraEntity managerExtra, LeagueWincountrecordEntity leagueWinCount)
        {
            //发放玩家单场比赛奖励---------------------------------------------------
            int winType = 0;

            if (matchData.Home.ManagerId == manager.Idx)         //玩家为主队
            {
                if (matchData.Home.Score > matchData.Away.Score) //主队胜
                {
                    winType = 1;
                }
                else if (matchData.Home.Score == matchData.Away.Score) //平
                {
                    winType = 2;
                }
                else //负
                {
                    winType = 3;
                }
            }
            else //玩家为客队
            {
                if (matchData.Home.Score < matchData.Away.Score)//客队胜
                {
                    winType = 1;
                }
                else if (matchData.Home.Score == matchData.Away.Score) //平
                {
                    winType = 2;
                }
                else//负
                {
                    winType = 3;
                }
            }
            var managerPrizes = LeagueCache.Instance.GetLeaguePrize(leagueRecordInfo.LaegueId, winType);

            int exp   = 0;
            int coin  = 0;
            int score = 0;
            ItemPackageFrame package = null;
            int point  = 0;
            int vipExp = 0;

            SendPrize(managerPrizes, manager, leagueRecordInfo.LaegueId, ref exp, ref coin, ref score, ref package,
                      ref point, ref vipExp);
            ManagerUtil.AddManagerData(manager, exp, coin, 0, EnumCoinChargeSourceType.LeaguePrize, ShareUtil.CreateSequential().ToString());

            if (lagueManagerInfo == null)
            {
                lagueManagerInfo = LaegueManagerinfoMgr.GetById(manager.Idx);
            }
            lagueManagerInfo.SumScore += score;

            leagueManagerRecord.MatchId    = new Guid();
            leagueManagerRecord.UpdateTime = DateTime.Now;
            bool isLastWheel = false;

            leagueManagerRecord.Score += score;
            //本联赛最后一轮
            if (leagueRecordInfo.Schedule >= leagueManagerRecord.MaxWheelNumber)
            {
                isLastWheel = true;
                leagueManagerRecord.IsPass      = true;
                leagueManagerRecord.PassNumber += 1;
            }
            int myRank  = 0;
            int myScore = 0;

            //更新排名
            fightMap.UpdateRankList();
            fightMap.GetRank(ref myRank, ref myScore);

            leagueRecordInfo.Score += score;
            leagueRecordInfo.Rank   = myRank;
            //----------------------------
            leagueRecordInfo.Schedule++;
            leagueRecordInfo.IsSend     = true;
            leagueRecordInfo.UpdateTime = DateTime.Now;
            //本联赛最后一轮,如果是冠军解锁下一轮
            bool isUpdatenextManagerRecord = false;
            LeagueManagerrecordEntity nextManagerRecord = null;

            if (isLastWheel)
            {
                if (leagueRecordInfo.Rank == 1)
                {
                    leagueManagerRecord.LastPrizeLeagueRecordId = leagueManagerRecord.LeagueRecordId;
                    if (leagueRecordInfo.LaegueId != 8)
                    {
                        nextManagerRecord = LeagueManagerrecordMgr.GetManagerMarkInfo(manager.Idx,
                                                                                      leagueRecordInfo.LaegueId + 1);
                        nextManagerRecord.IsLock  = false;
                        isUpdatenextManagerRecord = true;
                    }
                    //记录成就相关数据
                    AchievementTaskCore.Instance.UpdateLeagueScore(manager.Idx, leagueRecordInfo.LaegueId,
                                                                   myScore);
                    TaskHandler.Instance.LeagueChampionScore(manager.Idx);
                }
            }

            using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetConnectionString(EnumDbType.Main)))
            {
                transactionManager.BeginTransaction();
                var messageCode = SaveMatchConfirm(manager, package, leagueRecordInfo,
                                                   nextManagerRecord, leagueManagerRecord, point, isUpdatenextManagerRecord, lagueManagerInfo, fightMap, managerExtra, leagueWinCount, transactionManager.TransactionObject);
                if (messageCode == MessageCode.Success)
                {
                    transactionManager.Commit();
                }
                else
                {
                    transactionManager.Rollback();
                    return(ResponseHelper.Create <LeaguePrizeResponse>(messageCode));
                }
            }
            //奖励结果
            var response = ResponseHelper.CreateSuccess <LeaguePrizeResponse>();

            response.Data = new LeaguePrizes
            {
                PrizeList = new List <LeaguePrizeEntity>()
            };
            foreach (var prize in managerPrizes)
            {
                var entity = new LeaguePrizeEntity();
                entity.PrizeType = prize.PrizeType;
                entity.ItemCode  = prize.ItemCode;
                entity.Count     = prize.Count;
                response.Data.PrizeList.Add(entity);
            }
            response.Data.VipExp = vipExp;
            return(response);
        }