/// <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); }
/// <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)); }
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); } }
/// <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)); }
/// <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); }
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); } }
/// <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); } }
public static bool Update(CrosscrowdMatchEntity crosscrowdMatchEntity, DbTransaction trans = null, string zoneId = "") { var provider = new CrosscrowdMatchProvider(zoneId); return(provider.Update(crosscrowdMatchEntity, trans)); }
/// <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)); }
/// <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)); }
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); } }
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)); }