static string GetFormPidStr(Guid managerId) { var form = MatchDataHelper.GetSolution(managerId); if (null == form) { return(string.Empty); } return(form.PlayerString); }
/// <summary> /// 解雇球员 /// </summary> /// <param name="managerId"></param> /// <param name="teammemberId"></param> /// <returns></returns> public MessageCodeResponse FireTeamMember(Guid managerId, Guid teammemberId) { try { var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.TeammemberTrans); if (package == null) { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbNoPackage)); } var player = package.GetPlayer(teammemberId); if (player.ItemType != (int)EnumItemType.PlayerCard) { return(ResponseHelper.Exception <MessageCodeResponse>()); } int pid = player.ItemCode % 100000; //检查球员是否已在场上 var solution = MatchDataHelper.GetSolution(managerId); if (solution.PlayerDic.ContainsKey(pid)) { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.TeammemberIsMain)); } var property = player.ItemProperty as PlayerCardProperty; if (property != null && property.Equipment != null) { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.TeammemberHasEquip)); } var messcode = package.Delete(player.ItemId); if (messcode != MessageCode.Success) { return(ResponseHelper.Create <MessageCodeResponse>(messcode)); } using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); if (!package.Save(transactionManager.TransactionObject)) { transactionManager.Rollback(); return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbUpdateFail)); } transactionManager.Commit(); MemcachedFactory.TeammembersClient.Delete(managerId); package.Shadow.Save(); } return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.Success)); } catch (Exception ex) { SystemlogMgr.Error("TeamMember-Fire", ex); return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.Exception)); } }
public static RootResponse <DTOSkillSetView> GetSkillSetInfo(Guid mid) { var bag = SkillCardConvert.GetSkillBagWrap(mid); int managerLevel = (int)FrameConvert.GetWorthValue(mid, EnumWorthType.ManagerLevel); var data = new DTOSkillSetView(); data.MaxSetCells = GetMaxSkillCells(managerLevel); var form = MatchDataHelper.GetSolution(mid); if (null != form) { data.FormId = form.FormationId; data.PidStr = form.PlayerString.TrimEnd(); } data.SetList = bag.GetShowSet(); data.CntSetCells = bag.CntSetNum; return(ResponseHelper.CreateRoot <DTOSkillSetView>(data)); }
public static NbSolutionEntity GetSolution(Guid managerId, string siteId = "") { return(MatchDataHelper.GetSolution(managerId, siteId)); }
public NbSolutionEntity GetSolution(Guid managerId) { return(MatchDataHelper.GetSolution(managerId)); }
public NBSolutionInfoResponse SaveSolution(Guid managerId, int formationId, string playerString, bool hasTask) { var solution = MatchDataHelper.GetSolution(managerId); if (solution == null) { return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>()); } bool isChangePlayer = solution.PlayerString != playerString; string[] pIds = playerString.Split(','); if (pIds.Length != SystemConstants.TeammemberCount) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberInvalidCount)); } var formation = CacheFactory.FormationCache.GetFormation(formationId); if (formation == null) { return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>()); } var teammembers = MatchDataHelper.GetTeammembers(managerId, null, true); List <int> tempPids = new List <int>(pIds.Length); int veteranCount = 0; int orangeCount = 0; int combCount = 0; foreach (var pId in pIds) { int id = ConvertHelper.ConvertToInt(pId); if (!teammembers.Exists(d => d.PlayerId == id)) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberInvalidPlayer)); } if (tempPids.Contains(id)) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberSolutionPlayerRepeat)); } tempPids.Add(id); var player = CacheFactory.PlayersdicCache.GetPlayer(id); if (player.CardLevel == (int)EnumPlayerCardLevel.Gold || player.CardLevel == (int)EnumPlayerCardLevel.Silver) { veteranCount++; } else if (player.CardLevel == (int)EnumPlayerCardLevel.Orange || player.CardLevel == (int)EnumPlayerCardLevel.BlackGold) { orangeCount++; } } foreach (var tempPid in tempPids) { var linkList = CacheFactory.PlayersdicCache.GetLinkPlayerList(tempPid); if (linkList != null) { foreach (var link in linkList) { if (tempPids.Exists(d => d == link)) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberSolutionPlayerRepeat)); } } } } int veteranNumber = _maxVeteranCount; var manager = NbManagerextraMgr.GetById(managerId); if (manager == null) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.NbParameterError)); } if (manager.VeteranNumber > _maxVeteranCount) { veteranNumber = manager.VeteranNumber; } if (veteranCount > veteranNumber) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberVeteranCountOver)); } combCount = ManagerSkillCache.Instance().GetCombsNum(tempPids.ToArray()); if (TeammemberMgr.SaveSolution(managerId, formationId, playerString, veteranCount, orangeCount, combCount)) { DeleteSolutionCache(managerId, true); ActivityExThread.Instance.TememberColect(managerId, 3, orangeCount); var response = SolutionAndTeammemberResponse(managerId); if (hasTask && isChangePlayer) { var pop = TaskHandler.Instance.SolutionChangePlayer(managerId); if (response.Data != null) { response.Data.PopMsg = pop; } } return(response); } else { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.NbUpdateFail)); } }
/// <summary> /// 替换上场 /// </summary> /// <param name="managerId"></param> /// <param name="teammemberId"></param> /// <param name="byTeammemberId"></param> /// <returns></returns> public NBSolutionInfoResponse ReplacePlayer(Guid managerId, Guid teammemberId, Guid byTeammemberId) { bool isChanagePlayer = false; try { ItemPackageFrame package = null; MessageCode messCode = MessageCode.Success; var soluti = MatchDataHelper.GetSolution(managerId); if (soluti == null) { return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>()); } var byteammember = GetTeammember(managerId, byTeammemberId); if (byteammember == null || !soluti.PlayerDic.ContainsKey(byteammember.PlayerId)) { return(ResponseHelper.Create <NBSolutionInfoResponse>((int)MessageCode.TeammemberNotMain)); } var teammember = GetTeammember(managerId, teammemberId); var playerString = ""; var playerIdList = FrameUtil.CastIntList(soluti.PlayerString, ','); if (teammember != null) { ExchangePlayer(playerIdList, teammember.PlayerId, byteammember.PlayerId, false, ref playerString); soluti.PlayerString = playerString; if (!NbSolutionMgr.Update(soluti)) { return(ResponseHelper.Create <NBSolutionInfoResponse>((int)MessageCode.NbUpdateFail)); } MemcachedFactory.SolutionClient.Delete(managerId); KpiHandler.Instance.RebuildKpi(managerId, true); var manager = MatchDataHelper.GetManager(managerId, true, true); if (manager == null) { return(ResponseHelper.Create <NBSolutionInfoResponse>((int)MessageCode.NbParameterError)); } var response1 = SolutionAndTeammemberResponse(managerId); return(response1); //换位置 } else //换替补 { isChanagePlayer = true; package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.TeammemberTrans); if (package == null) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.NbNoPackage)); } var player = package.GetPlayer(teammemberId); if (player.ItemType != (int)EnumItemType.PlayerCard) { return(ResponseHelper.Exception <NBSolutionInfoResponse>()); } player.IsDeal = false; var itemInfo = CacheFactory.ItemsdicCache.GetItem(player.ItemCode); //限制金卡 if (itemInfo != null && itemInfo.ItemType == (int)EnumItemType.PlayerCard && itemInfo.PlayerCardLevel == (int)EnumPlayerCardLevel.Gold) { var solution = MatchDataHelper.GetSolutionInfo(managerId); if (solution == null) { return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>()); } if (solution.MaxVeteranCount <= solution.VeteranCount) { return (ResponseHelper.Create <NBSolutionInfoResponse>( (int)MessageCode.TeammemberVeteranCountOver)); } } var pid = player.ItemCode % 100000; //检查是否已有相同pid的球员 var linkList = CacheFactory.PlayersdicCache.GetLinkPlayerList(pid); if (linkList != null) { foreach (var link in linkList) { if (playerIdList.Exists(d => d == link)) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberSolutionPlayerRepeat)); } } } int teammemberCount = 0; int returnCode = 0; TeammemberMgr.GetForTransCheck(managerId, pid, ShareUtil.GetTableMod(managerId), (int)MessageCode.TeammemberRepeat, ref teammemberCount, ref returnCode); if (returnCode != (int)MessageCode.Success) { return(ResponseHelper.Create <NBSolutionInfoResponse>(returnCode)); } messCode = package.ReplacePlayerCard(100000 + byteammember.PlayerId, false, byteammember.Strength, byteammember.Idx, byteammember.Equipment, player.ItemId, byteammember.Level); ExchangePlayer(playerIdList, pid, byteammember.PlayerId, true, ref playerString); soluti.PlayerString = playerString; if (messCode != MessageCode.Success) { return(ResponseHelper.Create <NBSolutionInfoResponse>(messCode)); } } using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); messCode = MessageCode.NbUpdateFail; do { if (package != null) { if (!package.SavePlayer(transactionManager.TransactionObject)) { break; } } if (!NbSolutionMgr.Update(soluti, transactionManager.TransactionObject)) { break; } messCode = MessageCode.Success; } while (false); if (messCode == MessageCode.Success) { transactionManager.Commit(); MemcachedFactory.TeammembersClient.Delete(managerId); MemcachedFactory.SolutionClient.Delete(managerId); package.Shadow.Save(); int orangeCount = 0; string[] pIds = playerString.Split(','); foreach (var pId in pIds) { int id = ConvertHelper.ConvertToInt(pId); var player = CacheFactory.PlayersdicCache.GetPlayer(id); if (player.CardLevel == (int)EnumPlayerCardLevel.Orange) { orangeCount++; } } ActivityExThread.Instance.TememberColect(managerId, 3, orangeCount); } else { transactionManager.Rollback(); return(ResponseHelper.Create <NBSolutionInfoResponse>(messCode)); } } } catch (Exception ex) { SystemlogMgr.Error("替换球员上场", ex); } KpiHandler.Instance.RebuildKpi(managerId, true); var response = SolutionAndTeammemberResponse(managerId); if (isChanagePlayer) { var pop = TaskHandler.Instance.SolutionChangePlayer(managerId); if (response.Data != null) { response.Data.PopMsg = pop; } } return(response); }