Example #1
0
        /// <summary>
        /// 将IDataReader的当前记录读取到CrosscrowdMatchEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public CrosscrowdMatchEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new CrosscrowdMatchEntity();

            obj.Idx            = (System.Guid)reader["Idx"];
            obj.CrossCrowdId   = (System.Int32)reader["CrossCrowdId"];
            obj.PairIndex      = (System.Int32)reader["PairIndex"];
            obj.HomeSiteId     = (System.String)reader["HomeSiteId"];
            obj.AwaySiteId     = (System.String)reader["AwaySiteId"];
            obj.HomeId         = (System.Guid)reader["HomeId"];
            obj.AwayId         = (System.Guid)reader["AwayId"];
            obj.HomeName       = (System.String)reader["HomeName"];
            obj.AwayName       = (System.String)reader["AwayName"];
            obj.HomeScore      = (System.Int32)reader["HomeScore"];
            obj.AwayScore      = (System.Int32)reader["AwayScore"];
            obj.HomePrizeCoin  = (System.Int32)reader["HomePrizeCoin"];
            obj.HomePrizeHonor = (System.Int32)reader["HomePrizeHonor"];
            obj.HomeMorale     = (System.Int32)reader["HomeMorale"];
            obj.HomeCostMorale = (System.Int32)reader["HomeCostMorale"];
            obj.HomePrizeScore = (System.Int32)reader["HomePrizeScore"];
            obj.AwayPrizeCoin  = (System.Int32)reader["AwayPrizeCoin"];
            obj.AwayPrizeHonor = (System.Int32)reader["AwayPrizeHonor"];
            obj.AwayMorale     = (System.Int32)reader["AwayMorale"];
            obj.AwayCostMorale = (System.Int32)reader["AwayCostMorale"];
            obj.AwayPrizeScore = (System.Int32)reader["AwayPrizeScore"];
            obj.IsKill         = (System.Boolean)reader["IsKill"];
            obj.Status         = (System.Int32)reader["Status"];
            obj.RowTime        = (System.DateTime)reader["RowTime"];

            return(obj);
        }
Example #2
0
        /// <summary>
        /// 带事务Insert
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2014/11/16 17:15:56</remarks>
        public bool Save(CrosscrowdMatchEntity entity, DateTime resurrectionTime, DateTime nextMatchTime, DbTransaction trans = null)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.C_CrowdMatch_Save");


            database.AddInParameter(commandWrapper, "@CrowdId", DbType.Int32, entity.CrossCrowdId);
            database.AddInParameter(commandWrapper, "@PairIndex", DbType.Int32, entity.PairIndex);
            database.AddInParameter(commandWrapper, "@HomeId", DbType.Guid, entity.HomeId);
            database.AddInParameter(commandWrapper, "@AwayId", DbType.Guid, entity.AwayId);
            database.AddInParameter(commandWrapper, "@HomeKpi", DbType.Int32, entity.HomeKpi);
            database.AddInParameter(commandWrapper, "@AwayKpi", DbType.Int32, entity.AwayKpi);

            database.AddInParameter(commandWrapper, "@HomeName", DbType.String, entity.HomeName);
            database.AddInParameter(commandWrapper, "@AwayName", DbType.String, entity.AwayName);
            database.AddInParameter(commandWrapper, "@HomeSiteId", DbType.String, entity.HomeSiteId);
            database.AddInParameter(commandWrapper, "@AwaySiteId", DbType.String, entity.AwaySiteId);
            database.AddInParameter(commandWrapper, "@HomeScore", DbType.Int32, entity.HomeScore);
            database.AddInParameter(commandWrapper, "@AwayScore", DbType.Int32, entity.AwayScore);
            database.AddInParameter(commandWrapper, "@HomePrizeCoin", DbType.Int32, entity.HomePrizeCoin);
            database.AddInParameter(commandWrapper, "@HomePrizeHonor", DbType.Int32, entity.HomePrizeHonor);
            database.AddInParameter(commandWrapper, "@HomeCostMorale", DbType.Int32, entity.HomeCostMorale);
            database.AddInParameter(commandWrapper, "@HomePrizeScore", DbType.Int32, entity.HomePrizeScore);
            database.AddInParameter(commandWrapper, "@AwayPrizeCoin", DbType.Int32, entity.AwayPrizeCoin);
            database.AddInParameter(commandWrapper, "@AwayPrizeHonor", DbType.Int32, entity.AwayPrizeHonor);
            database.AddInParameter(commandWrapper, "@AwayCostMorale", DbType.Int32, entity.AwayCostMorale);
            database.AddInParameter(commandWrapper, "@AwayPrizeScore", DbType.Int32, entity.AwayPrizeScore);
            database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);
            database.AddInParameter(commandWrapper, "@ResurrectionTime", DbType.DateTime, resurrectionTime);
            database.AddInParameter(commandWrapper, "@NextMatchTime", DbType.DateTime, nextMatchTime);

            database.AddParameter(commandWrapper, "@HomeMorale", DbType.Int32, ParameterDirection.InputOutput, "", DataRowVersion.Current, entity.HomeMorale);
            database.AddParameter(commandWrapper, "@AwayMorale", DbType.Int32, ParameterDirection.InputOutput, "", DataRowVersion.Current, entity.AwayMorale);
            database.AddParameter(commandWrapper, "@IsKill", DbType.Boolean, ParameterDirection.InputOutput, "", DataRowVersion.Current, entity.IsKill);

            database.AddParameter(commandWrapper, "@Idx", DbType.Guid, ParameterDirection.InputOutput, "", DataRowVersion.Current, entity.Idx);

            int results = 0;

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

            entity.Idx        = (System.Guid)database.GetParameterValue(commandWrapper, "@Idx");
            entity.HomeMorale = (System.Int32)database.GetParameterValue(commandWrapper, "@HomeMorale");
            entity.AwayMorale = (System.Int32)database.GetParameterValue(commandWrapper, "@AwayMorale");
            entity.IsKill     = (System.Boolean)database.GetParameterValue(commandWrapper, "@IsKill");
            return(Convert.ToBoolean(results));
        }
Example #3
0
        void SavePrize(CrosscrowdMatchEntity crowdMatch)
        {
            try
            {
                crowdMatch.HomePrizeScore = CacheFactory.CrowdCache.GetCrowdScore(crowdMatch.HomeScore);
                var costMorale  = CacheFactory.CrowdCache.GetCostMorela(crowdMatch.AwayScore);
                var winType     = ShareUtil.CalWinType(crowdMatch.HomeScore, crowdMatch.AwayScore);
                var matchPrize  = CacheFactory.CrowdCache.GetMatchPrize(winType);
                var homeManager = _managerDic[crowdMatch.HomeId];
                homeManager.Morale -= costMorale;
                if (homeManager.Morale < 0)
                {
                    homeManager.Morale = 0;
                }

                int homecoin  = matchPrize.Coin;
                int homehonor = matchPrize.Honor;
                OnlineCore.Instance.CalIndulgePrize(crowdMatch.HomeId, ref homecoin, ref homehonor, crowdMatch.HomeSiteId);
                crowdMatch.HomeMorale     = homeManager.Morale;
                crowdMatch.HomePrizeCoin  = homecoin;
                crowdMatch.HomePrizeHonor = homehonor;
                crowdMatch.HomeCostMorale = costMorale;

                crowdMatch.AwayPrizeScore = CacheFactory.CrowdCache.GetCrowdScore(crowdMatch.AwayScore);
                costMorale = CacheFactory.CrowdCache.GetCostMorela(crowdMatch.HomeScore);
                winType    = ShareUtil.CalWinType(crowdMatch.AwayScore, crowdMatch.HomeScore);
                matchPrize = CacheFactory.CrowdCache.GetMatchPrize(winType);
                var awayManager = _managerDic[crowdMatch.AwayId];
                awayManager.Morale -= costMorale;
                if (awayManager.Morale < 0)
                {
                    awayManager.Morale = 0;
                }
                int awaycoin  = matchPrize.Coin;
                int awayhonor = matchPrize.Honor;
                OnlineCore.Instance.CalIndulgePrize(crowdMatch.AwayId, ref awaycoin, ref awayhonor, crowdMatch.AwaySiteId);
                crowdMatch.AwayMorale     = awayManager.Morale;
                crowdMatch.AwayPrizeCoin  = awaycoin;
                crowdMatch.AwayPrizeHonor = awayhonor;
                crowdMatch.AwayCostMorale = costMorale;

                DateTime resurrectionTime = DateTime.Now.AddSeconds(_crowdResurrectionCd);
                DateTime nextMatchTime    = DateTime.Now.AddSeconds(_crowdCd);
                CrosscrowdMatchMgr.Save(crowdMatch, resurrectionTime, nextMatchTime);

                SavePrizeAfter(crowdMatch, homeManager, awayManager);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowdProcess-SavePrize", ex);
            }
        }
Example #4
0
        /// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016-08-15 16:49:36</remarks>
        public bool Update(CrosscrowdMatchEntity entity, DbTransaction trans)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_CrosscrowdMatch_Update");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Guid, entity.Idx);
            database.AddInParameter(commandWrapper, "@CrossCrowdId", DbType.Int32, entity.CrossCrowdId);
            database.AddInParameter(commandWrapper, "@PairIndex", DbType.Int32, entity.PairIndex);
            database.AddInParameter(commandWrapper, "@HomeSiteId", DbType.AnsiString, entity.HomeSiteId);
            database.AddInParameter(commandWrapper, "@AwaySiteId", DbType.AnsiString, entity.AwaySiteId);
            database.AddInParameter(commandWrapper, "@HomeId", DbType.Guid, entity.HomeId);
            database.AddInParameter(commandWrapper, "@AwayId", DbType.Guid, entity.AwayId);
            database.AddInParameter(commandWrapper, "@HomeName", DbType.String, entity.HomeName);
            database.AddInParameter(commandWrapper, "@AwayName", DbType.String, entity.AwayName);
            database.AddInParameter(commandWrapper, "@HomeScore", DbType.Int32, entity.HomeScore);
            database.AddInParameter(commandWrapper, "@AwayScore", DbType.Int32, entity.AwayScore);
            database.AddInParameter(commandWrapper, "@HomePrizeCoin", DbType.Int32, entity.HomePrizeCoin);
            database.AddInParameter(commandWrapper, "@HomePrizeHonor", DbType.Int32, entity.HomePrizeHonor);
            database.AddInParameter(commandWrapper, "@HomeMorale", DbType.Int32, entity.HomeMorale);
            database.AddInParameter(commandWrapper, "@HomeCostMorale", DbType.Int32, entity.HomeCostMorale);
            database.AddInParameter(commandWrapper, "@HomePrizeScore", DbType.Int32, entity.HomePrizeScore);
            database.AddInParameter(commandWrapper, "@AwayPrizeCoin", DbType.Int32, entity.AwayPrizeCoin);
            database.AddInParameter(commandWrapper, "@AwayPrizeHonor", DbType.Int32, entity.AwayPrizeHonor);
            database.AddInParameter(commandWrapper, "@AwayMorale", DbType.Int32, entity.AwayMorale);
            database.AddInParameter(commandWrapper, "@AwayCostMorale", DbType.Int32, entity.AwayCostMorale);
            database.AddInParameter(commandWrapper, "@AwayPrizeScore", DbType.Int32, entity.AwayPrizeScore);
            database.AddInParameter(commandWrapper, "@IsKill", DbType.Boolean, entity.IsKill);
            database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);


            int results = 0;

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

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

            return(Convert.ToBoolean(results));
        }
Example #5
0
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="idx">idx</param>
        /// <returns>CrosscrowdMatchEntity</returns>
        /// <remarks>2016-08-15 16:49:36</remarks>
        public CrosscrowdMatchEntity GetById(System.Guid idx)
        {
            var database = new SqlDatabase(this.ConnectionString);

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

            database.AddInParameter(commandWrapper, "@Idx", DbType.Guid, idx);


            CrosscrowdMatchEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
Example #6
0
        private void BuildMatchInfo(int crowdId, int pairIndex, CrosscrowdManagerEntity home, CrosscrowdManagerEntity away, Dictionary <Guid, CrosscrowdMatchEntity> matchDic)
        {
            try
            {
                var matchId = ShareUtil.GenerateComb();
                var match   = new CrosscrowdMatchEntity(home, away, matchId, crowdId, pairIndex);
                matchDic.Add(match.Idx, match);

                MemcachedFactory.CrowdMatchClient.Set(match.Idx, match);
                //更新经理-比赛关联字典
                var homeHeart = new CrowdHeartEntity(matchId, away.ShowName, away.Logo, away.Morale, away.ManagerId, away.SiteId);
                var awayHeart = new CrowdHeartEntity(matchId, home.ShowName, home.Logo, home.Morale, home.ManagerId, home.SiteId);
                ManagerFightDic[home.ManagerId] = homeHeart;
                ManagerFightDic[away.ManagerId] = awayHeart;
                //try
                //{
                //    CrossChatHelper.SendCrowdPairPop(home.ManagerId, homeHeart, home.SiteId);
                //    CrossChatHelper.SendCrowdPairPop(away.ManagerId, awayHeart, away.SiteId);
                //}
                //catch (Exception ex)
                //{
                //    SystemlogMgr.Error("CrossCrowdThread-SendCrowdPairPop", ex);
                //}
                MatchCdHandler.SetCd(home.ManagerId, EnumMatchType.CrossCrowd, _crowdCd);
                MatchCdHandler.SetCd(away.ManagerId, EnumMatchType.CrossCrowd, _crowdCd);
                try
                {
                    MemcachedFactory.CrowdHeartClient.Set(home.ManagerId, homeHeart);
                    MemcachedFactory.CrowdHeartClient.Set(away.ManagerId, awayHeart);
                }
                catch (Exception ex)
                {
                    SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo-Send", ex);
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo", ex);
            }
        }
Example #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="matchData"></param>
        /// <param name="crowdMatch"></param>
        void Fight(BaseMatchData matchData, CrosscrowdMatchEntity crowdMatch)
        {
            try
            {
                MatchCore.CreateMatch(matchData);
                if (matchData.ErrorCode == (int)MessageCode.Success)
                {
                    crowdMatch.HomeScore = matchData.Home.Score;
                    crowdMatch.AwayScore = matchData.Away.Score;
                    crowdMatch.HomeName  = matchData.Home.Name;
                    crowdMatch.AwayName  = matchData.Away.Name;
                    crowdMatch.Status    = 0;
                    SavePrize(crowdMatch);
                }
                MemcachedFactory.CrowdMatchClient.Set(crowdMatch.Idx, crowdMatch);

                matchData  = null;
                crowdMatch = null;
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowdProcess-Fight", ex);
            }
        }
Example #8
0
        public static bool Update(CrosscrowdMatchEntity crosscrowdMatchEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new CrosscrowdMatchProvider(zoneId);

            return(provider.Update(crosscrowdMatchEntity, trans));
        }
Example #9
0
 /// <summary>
 /// Update
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 /// <remarks>2016-08-15 16:49:36</remarks>
 public bool Update(CrosscrowdMatchEntity entity)
 {
     return(Update(entity, null));
 }
Example #10
0
 /// <summary>
 /// Insert
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="trans">The trans.</param>
 /// <returns></returns>
 /// <remarks>2016-08-15 16:49:36</remarks>
 public bool Insert(CrosscrowdMatchEntity entity)
 {
     return(Insert(entity, null));
 }
Example #11
0
        void SavePrizeAfter(CrosscrowdMatchEntity crowdMatch, CrosscrowdManagerEntity homeManager, CrosscrowdManagerEntity awayManager)
        {
            try
            {
                WebServerHandler.AddCoin2(crowdMatch.HomeSiteId, crowdMatch.HomeId, crowdMatch.HomePrizeCoin,
                                          _coinChargeSourceType);
                WebServerHandler.AddCoin2(crowdMatch.AwaySiteId, crowdMatch.AwayId, crowdMatch.AwayPrizeCoin,
                                          _coinChargeSourceType);

                string banner  = "";
                string homePop = "";
                string awayPop = "";

                if (crowdMatch.HomeScore > crowdMatch.AwayScore)
                {
                    homePop += "&" + CrossCrowdMessage.BuildCrowdMatch(EnumWinType.Win, crowdMatch.AwayName, crowdMatch.HomeScore, crowdMatch.AwayScore);
                    awayPop += "&" + CrossCrowdMessage.BuildCrowdMatch(EnumWinType.Lose, crowdMatch.HomeName, crowdMatch.AwayScore, crowdMatch.HomeScore);
                    if (homeManager.WinningCount == 2)
                    {
                        banner += "&" + CrossCrowdMessage.BuildBannerCrowd3Win(crowdMatch.HomeName);
                    }
                    else if (homeManager.WinningCount == 4)
                    {
                        banner += "&" + CrossCrowdMessage.BuildBannerCrowd5Win(crowdMatch.HomeName);
                    }
                }
                else if (crowdMatch.AwayScore > crowdMatch.HomeScore)
                {
                    homePop += "&" + CrossCrowdMessage.BuildCrowdMatch(EnumWinType.Lose, crowdMatch.AwayName, crowdMatch.HomeScore, crowdMatch.AwayScore);
                    awayPop += "&" + CrossCrowdMessage.BuildCrowdMatch(EnumWinType.Win, crowdMatch.HomeName, crowdMatch.AwayScore, crowdMatch.HomeScore);
                    if (awayManager.WinningCount == 2)
                    {
                        banner += "&" + CrossCrowdMessage.BuildBannerCrowd3Win(crowdMatch.AwayName);
                    }
                    else if (awayManager.WinningCount == 4)
                    {
                        banner += "&" + CrossCrowdMessage.BuildBannerCrowd5Win(crowdMatch.AwayName);
                    }
                }
                else
                {
                    homePop += "&" + CrossCrowdMessage.BuildCrowdMatch(EnumWinType.Draw, crowdMatch.AwayName, crowdMatch.HomeScore, crowdMatch.AwayScore);
                    awayPop += "&" + CrossCrowdMessage.BuildCrowdMatch(EnumWinType.Draw, crowdMatch.HomeName, crowdMatch.AwayScore, crowdMatch.HomeScore);
                }
                homePop += "&" + CrossCrowdMessage.BuildCrowdMatchPrize(crowdMatch.HomePrizeScore, crowdMatch.HomePrizeCoin, crowdMatch.HomePrizeHonor);
                awayPop += "&" + CrossCrowdMessage.BuildCrowdMatchPrize(crowdMatch.AwayPrizeScore, crowdMatch.AwayPrizeCoin, crowdMatch.AwayPrizeHonor);

                var scoreDiv = crowdMatch.HomeScore - crowdMatch.AwayScore;
                if (scoreDiv >= 3)
                {
                    banner += "&" + CrossCrowdMessage.BuildBannerCrowdWinOver(crowdMatch.HomeName, crowdMatch.HomeScore, crowdMatch.AwayScore, crowdMatch.AwayName);
                }
                else if (scoreDiv < -2)
                {
                    banner += "&" + CrossCrowdMessage.BuildBannerCrowdWinOver(crowdMatch.AwayName, crowdMatch.AwayScore, crowdMatch.HomeScore, crowdMatch.HomeName);
                }

                if (crowdMatch.HomeMorale <= 0 && crowdMatch.AwayMorale <= 0)
                {
                    homePop          += "&" + CrossCrowdMessage.BuildCrowdKillTogether(crowdMatch.AwayName);
                    awayPop          += "&" + CrossCrowdMessage.BuildCrowdKillTogether(crowdMatch.HomeName);
                    banner           += "&" + CrossCrowdMessage.BuildBannerCrowdKill(crowdMatch.HomeName, crowdMatch.AwayName);
                    banner           += "&" + CrossCrowdMessage.BuildBannerCrowdKill(crowdMatch.AwayName, crowdMatch.HomeName);
                    crowdMatch.IsKill = true;
                }
                else if (crowdMatch.HomeMorale <= 0)
                {
                    awayPop          += "&" + CrossCrowdMessage.BuildCrowdKill(crowdMatch.HomeName);
                    homePop          += "&" + CrossCrowdMessage.BuildCrowdByKill(crowdMatch.AwayName);
                    banner           += "&" + CrossCrowdMessage.BuildBannerCrowdKill(crowdMatch.AwayName, crowdMatch.HomeName);
                    crowdMatch.IsKill = true;
                }
                else if (crowdMatch.AwayMorale <= 0)
                {
                    awayPop          += "&" + CrossCrowdMessage.BuildCrowdByKill(crowdMatch.HomeName);
                    homePop          += "&" + CrossCrowdMessage.BuildCrowdKill(crowdMatch.AwayName);
                    banner           += "&" + CrossCrowdMessage.BuildBannerCrowdKill(crowdMatch.HomeName, crowdMatch.AwayName);
                    crowdMatch.IsKill = true;
                }
                //LogHelper.Insert(string.Format("HomePop:{0},AwayPop:{1}",homePop,awayPop),LogType.Info);
                if (!string.IsNullOrEmpty(homePop))
                {
                    CrossCrowdMessage.SendCrowdPop(crowdMatch.HomeId, homePop.TrimStart('&'));
                }
                if (!string.IsNullOrEmpty(awayPop))
                {
                    CrossCrowdMessage.SendCrowdPop(crowdMatch.AwayId, awayPop.TrimStart('&'));
                }
                if (!string.IsNullOrEmpty(banner))
                {
                    CrossCrowdMessage.SendCrowdBanner(_domainId, banner.TrimStart('&'));
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowdProcess-SavePrizeAfter", ex);
            }
        }
Example #12
0
        public static bool Save(CrosscrowdMatchEntity crowdMatchEntity, DateTime resurrectionTime, DateTime nextMatchTime, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new CrosscrowdMatchProvider(zoneId);

            return(provider.Save(crowdMatchEntity, resurrectionTime, nextMatchTime, trans));
        }