/// <summary> /// 将IDataReader的当前记录读取到LeagueManagerrecordEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public LeagueManagerrecordEntity LoadSingleRow(IDataReader reader) { var obj = new LeagueManagerrecordEntity(); obj.Idx = (System.Int32)reader["Idx"]; obj.ManagerId = (System.Guid)reader["ManagerId"]; obj.LaegueId = (System.Int32)reader["LaegueId"]; obj.LeagueRecordId = (System.Guid)reader["LeagueRecordId"]; obj.LastPrizeLeagueRecordId = (System.Guid)reader["LastPrizeLeagueRecordId"]; obj.SendFirstPassPrize = (System.Boolean)reader["SendFirstPassPrize"]; obj.MatchId = (System.Guid)reader["MatchId"]; obj.MaxWheelNumber = (System.Int32)reader["MaxWheelNumber"]; obj.Score = (System.Int32)reader["Score"]; obj.IsLock = (System.Boolean)reader["IsLock"]; obj.IsStart = (System.Boolean)reader["IsStart"]; obj.IsPass = (System.Boolean)reader["IsPass"]; obj.PassNumber = (System.Int32)reader["PassNumber"]; obj.MatchNumber = (System.Int32)reader["MatchNumber"]; obj.WinNumber = (System.Int32)reader["WinNumber"]; obj.FlatNumber = (System.Int32)reader["FlatNumber"]; obj.LoseNumber = (System.Int32)reader["LoseNumber"]; obj.GoalsNumber = (System.Int32)reader["GoalsNumber"]; obj.FumbleNumber = (System.Int32)reader["FumbleNumber"]; obj.UpdateTime = (System.DateTime)reader["UpdateTime"]; obj.RowTime = (System.DateTime)reader["RowTime"]; obj.FightDicId = (System.Int32)reader["FightDicId"]; return(obj); }
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); }
/// <summary> /// 获取联赛情况 /// </summary> /// <param name="managerId"></param> /// <param name="leagueId"></param> /// <param name="currectLeague"></param> /// <returns></returns> public GetLeagueInfoResponse GetLeagueInfo(Guid managerId, int leagueId, LeagueManagerrecordEntity currectLeague) { try { if (currectLeague == null) { currectLeague = LeagueManagerrecordMgr.GetManagerMarkInfo(managerId, leagueId); } if (currectLeague == null) { SystemlogMgr.Error("获取联赛信息", "经理联赛记录未找到ManagerId:" + managerId); return(ResponseHelper.InvalidParameter <GetLeagueInfoResponse>()); } var leagueRecord = LeagueRecordMgr.GetById(currectLeague.LeagueRecordId); //获取胜场 var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, currectLeague.LaegueId); var winConfig = CacheFactory.LeagueCache.GetLeagueStar(leagueId); var winList = new List <LeagueWinCountInfo>(); var prizeStatus = leagueWincountRecord.PrizeStep.Split(','); foreach (var item in winConfig) { LeagueWinCountInfo entity = new LeagueWinCountInfo(); entity.PrizeLevel = item.PrizeLevel; if (prizeStatus.Length >= item.PrizeLevel) { entity.PrizeStatus = ConvertHelper.ConvertToInt(prizeStatus[item.PrizeLevel - 1]); } winList.Add(entity); } //获取排名 var leagueFightMap = new LeagueFightMapFrame(managerId); int myRank = 0; int myScore = 0; var rankList = leagueFightMap.GetRank(ref myRank, ref myScore); var response = ResponseHelper.CreateSuccess <GetLeagueInfoResponse>(); response.Data = new LeagueInfoEntity(); if (leagueRecord.Schedule > currectLeague.MaxWheelNumber) { response.Data.IsHaveReturnMain = true; leagueRecord.Schedule = currectLeague.MaxWheelNumber; } response.Data.LeagueInfo = currectLeague; response.Data.MyWinCount = leagueWincountRecord.MaxWinCount; response.Data.LeagueRecord = leagueRecord; response.Data.LeagueWincountRecord = winList; response.Data.MyRank = myRank; response.Data.RankList = rankList; response.Data.IsHaveStartLeague = true; return(response); } catch (Exception ex) { SystemlogMgr.Error("联赛-获取联赛信息", ex); return(ResponseHelper.InvalidParameter <GetLeagueInfoResponse>()); } }
/// <summary> /// 开启一个联赛 /// </summary> /// <param name="managerId"></param> /// <param name="leagueId"></param> /// <returns></returns> public GetLeagueInfoResponse StarLeague(Guid managerId, int leagueId) { LeagueManagerrecordEntity leagueManagerRecord = null; var code = LeagueProcess.Instance.StartLeague(managerId, leagueId, ref leagueManagerRecord); if (code != MessageCode.Success) { return(ResponseHelper.Create <GetLeagueInfoResponse>(code)); } return(GetLeagueInfo(managerId, leagueId, leagueManagerRecord)); }
/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2016/6/16 12:22:59</remarks> public bool Update(LeagueManagerrecordEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_LeagueManagerrecord_Update"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId); database.AddInParameter(commandWrapper, "@LaegueId", DbType.Int32, entity.LaegueId); database.AddInParameter(commandWrapper, "@LeagueRecordId", DbType.Guid, entity.LeagueRecordId); database.AddInParameter(commandWrapper, "@LastPrizeLeagueRecordId", DbType.Guid, entity.LastPrizeLeagueRecordId); database.AddInParameter(commandWrapper, "@SendFirstPassPrize", DbType.Boolean, entity.SendFirstPassPrize); database.AddInParameter(commandWrapper, "@MatchId", DbType.Guid, entity.MatchId); database.AddInParameter(commandWrapper, "@MaxWheelNumber", DbType.Int32, entity.MaxWheelNumber); database.AddInParameter(commandWrapper, "@Score", DbType.Int32, entity.Score); database.AddInParameter(commandWrapper, "@IsLock", DbType.Boolean, entity.IsLock); database.AddInParameter(commandWrapper, "@IsStart", DbType.Boolean, entity.IsStart); database.AddInParameter(commandWrapper, "@IsPass", DbType.Boolean, entity.IsPass); database.AddInParameter(commandWrapper, "@PassNumber", DbType.Int32, entity.PassNumber); database.AddInParameter(commandWrapper, "@MatchNumber", DbType.Int32, entity.MatchNumber); database.AddInParameter(commandWrapper, "@WinNumber", DbType.Int32, entity.WinNumber); database.AddInParameter(commandWrapper, "@FlatNumber", DbType.Int32, entity.FlatNumber); database.AddInParameter(commandWrapper, "@LoseNumber", DbType.Int32, entity.LoseNumber); database.AddInParameter(commandWrapper, "@GoalsNumber", DbType.Int32, entity.GoalsNumber); database.AddInParameter(commandWrapper, "@FumbleNumber", DbType.Int32, entity.FumbleNumber); database.AddInParameter(commandWrapper, "@UpdateTime", DbType.DateTime, entity.UpdateTime); database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime); database.AddInParameter(commandWrapper, "@FightDicId", DbType.Int32, entity.FightDicId); int results = 0; if (trans != null) { results = database.ExecuteNonQuery(commandWrapper, trans); } else { results = database.ExecuteNonQuery(commandWrapper); } entity.Idx = (System.Int32)database.GetParameterValue(commandWrapper, "@Idx"); return(Convert.ToBoolean(results)); }
/// <summary> /// GetById /// </summary> /// <param name="idx">idx</param> /// <returns>LeagueManagerrecordEntity</returns> /// <remarks>2016/6/16 12:22:59</remarks> public LeagueManagerrecordEntity GetById(System.Int32 idx) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_LeagueManagerrecord_GetById"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, idx); LeagueManagerrecordEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
/// <summary> /// GetManagerMarkInfo /// </summary> /// <param name="managerId">managerId</param> /// <param name="leagueId">leagueId</param> /// <returns>LeagueManagerrecordEntity</returns> /// <remarks>2016/6/16 12:22:59</remarks> public LeagueManagerrecordEntity GetManagerMarkInfo(System.Guid managerId, System.Int32 leagueId) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("C_League_GetManagerMarkInfo"); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, managerId); database.AddInParameter(commandWrapper, "@LeagueId", DbType.Int32, leagueId); LeagueManagerrecordEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
public static bool Update(LeagueManagerrecordEntity leagueManagerrecordEntity, DbTransaction trans = null, string zoneId = "") { var provider = new LeagueManagerrecordProvider(zoneId); return(provider.Update(leagueManagerrecordEntity, trans)); }
private MessageCode SaveRankPrize(NbManagerEntity manager, LeagueRecordEntity leagueRecord, LeagueManagerrecordEntity mLeagueRecord, LaegueManagerinfoEntity leagueManagerinfo, ItemPackageFrame package, int point, DbTransaction trans) { if (!ManagerUtil.SaveManagerData(manager, null, trans)) { return(MessageCode.NbUpdateFail); } if (!LeagueRecordMgr.Update(leagueRecord, trans)) { return(MessageCode.NbUpdateFail); } if (!LeagueManagerrecordMgr.Update(mLeagueRecord, trans)) { return(MessageCode.NbUpdateFail); } if (!LaegueManagerinfoMgr.Update(leagueManagerinfo, trans)) { return(MessageCode.NbUpdateFail); } if (package != null) { if (!package.Save(trans)) { return(MessageCode.NbUpdateFail); } package.Shadow.Save(); } if (point > 0) { var code = PayCore.Instance.AddBonus(manager.Idx, point, EnumChargeSourceType.LeaguePrize, ShareUtil.GenerateComb().ToString(), trans); return(code); } return(MessageCode.Success); }
/// <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); }
/// <summary> /// 开启一个新的联赛 /// </summary> /// <param name="managerId"></param> /// <param name="leagueId"></param> /// <param name="leagueManagerRecord"></param> /// <returns></returns> public MessageCode StartLeague(Guid managerId, int leagueId, ref LeagueManagerrecordEntity leagueManagerRecord) { var recordList = LeagueManagerrecordMgr.GetManagerAllMark(managerId); foreach (var record in recordList) { if (record.LaegueId == leagueId) { leagueManagerRecord = record; } if (record.IsStart) { return(MessageCode.LeagueHasStart); } } if (leagueManagerRecord == null) { return(MessageCode.NbParameterError); } if (leagueManagerRecord.IsLock) { return(MessageCode.LeagueIdMarkNotLock); } #region 去掉等级限制 //var openLevel= LeagueCache.Instance.GetLeagueOpenLevel(leagueId); //if (openLevel == -1) // return MessageCode.NbParameterError; //var manager = ManagerCore.Instance.GetManager(managerId); //if(manager==null) // return MessageCode.NbParameterError; //if(manager.Level<openLevel) // return MessageCode.LeagueIdMarkNotLock; #endregion DateTime date = DateTime.Now; var leagueRecordId = ShareUtil.GenerateComb(); leagueManagerRecord.LeagueRecordId = leagueRecordId; //info.LastPrizeLeagueRecordId = new Guid(); leagueManagerRecord.IsPass = false; leagueManagerRecord.IsStart = true; leagueManagerRecord.MatchNumber = 0; leagueManagerRecord.Score = 0; leagueManagerRecord.WinNumber = 0; leagueManagerRecord.FlatNumber = 0; leagueManagerRecord.LoseNumber = 0; leagueManagerRecord.GoalsNumber = 0; leagueManagerRecord.FumbleNumber = 0; leagueManagerRecord.UpdateTime = date; var npcCount = CacheFactory.LeagueCache.GetTeamCount(leagueId); var templateId = CacheFactory.LeagueCache.GetTemplateId(npcCount + 1); leagueManagerRecord.MaxWheelNumber = npcCount * 2;//总轮数 leagueManagerRecord.FightDicId = templateId; LeagueRecordEntity entity = new LeagueRecordEntity(leagueRecordId, managerId, leagueId, 1, 0, 0, false, date, date, ShareUtil.BaseTime); entity.Idx = leagueRecordId; entity.ManagerId = managerId; entity.LaegueId = leagueId; entity.IsSend = false; entity.Rank = -1; entity.RowTime = date; entity.Schedule = 1; entity.UpdateTime = date; entity.Score = 0; var leagueWinCount = LeagueWincountrecordMgr.GetRecord(managerId, leagueId); if (leagueWinCount != null) { if (leagueWinCount.PrizeDate.Date != DateTime.Now.Date) { leagueWinCount.WinCount1Status = 0; leagueWinCount.WinCount2Status = 0; leagueWinCount.WinCount3Status = 0; leagueWinCount.UpdateTime = DateTime.Now; leagueWinCount.PrizeDate = DateTime.Now; leagueWinCount.PrizeStep = "0,0,0,0,0"; } leagueWinCount.MaxWinCount = 0; } //更新当前联赛记录 if (!LeagueManagerrecordMgr.Update(leagueManagerRecord)) { return(MessageCode.FailUpdate); } if (!LeagueRecordMgr.Insert(entity)) { return(MessageCode.FailUpdate); } var figMap = new LeagueFightMapFrame(managerId); figMap.ClearFightMapStartLeague(npcCount + 1); if (leagueWinCount != null) { if (!LeagueWincountrecordMgr.Update(leagueWinCount)) { return(MessageCode.FailUpdate); } } return(MessageCode.Success); }