/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2015/10/18 17:21:42</remarks> public bool Update(NbSolutionEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_NbSolution_Update"); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId); database.AddInParameter(commandWrapper, "@FormationId", DbType.Int32, entity.FormationId); database.AddInParameter(commandWrapper, "@PlayerString", DbType.AnsiStringFixedLength, entity.PlayerString); database.AddInParameter(commandWrapper, "@SkillString", DbType.AnsiString, entity.SkillString); database.AddInParameter(commandWrapper, "@FormationData", DbType.Binary, entity.FormationData); database.AddInParameter(commandWrapper, "@VeteranCount", DbType.Int32, entity.VeteranCount); database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status); database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime); database.AddInParameter(commandWrapper, "@OrangeCount", DbType.Int32, entity.OrangeCount); database.AddInParameter(commandWrapper, "@CombCount", DbType.Int32, entity.CombCount); database.AddInParameter(commandWrapper, "@HirePlayerString", DbType.AnsiStringFixedLength, entity.HirePlayerString); 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)); }
public void SetSolution(bool homeFlag, NbSolutionEntity solutionEntity) { if (homeFlag) { _homeSolution = solutionEntity; } else { _awaySolution = solutionEntity; } }
/// <summary> /// 获取阵型,计算阵型等级,和球员位置,技能 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public static NbSolutionEntity GetSolution(Guid managerId, string siteId = "") { bool memFlag = string.IsNullOrEmpty(siteId); NbSolutionEntity entity = null; if (memFlag) { entity = MemcachedFactory.SolutionClient.Get <NbSolutionEntity>(managerId); } if (entity == null) { entity = NbSolutionMgr.GetById(managerId, siteId); if (entity == null) { return(null); } var formationData = new FormationDataListEntity(entity.FormationData); entity.FormationLevel = formationData.GetLevel(entity.FormationId); var formationDetails = CacheFactory.FormationCache.GetFormationDetail(entity.FormationId); var playerIdList = FrameUtil.CastIntList(entity.PlayerString, ','); ////获取租借球员str,如果与实际阵容的str不同,就用虚拟的替换当前的,不改变实际阵容的str //var virtualPlayerIdList = FrameUtil.CastIntList(entity.HirePlayerString, ','); //for (int i = 0; i < playerIdList.Count; i++) //{ // for (int j = 0; j < virtualPlayerIdList.Count; j++) // { // if (playerIdList[i] != virtualPlayerIdList[j] && virtualPlayerIdList[j] != 0) // { // playerIdList[i] = virtualPlayerIdList[j]; // } // } //} var skillList = new string[11]; if (!string.IsNullOrEmpty(entity.SkillString)) { skillList = entity.SkillString.Split(','); } entity.PlayerDic = new Dictionary <int, SolutionPlayerEntity>(playerIdList.Count); for (int i = 0; i < playerIdList.Count; i++) { entity.PlayerDic.Add(playerIdList[i], MatchDataUtil.BuildSolutionPlayer(playerIdList, formationDetails, playerIdList[i], skillList[i])); } if (memFlag) { MemcachedFactory.SolutionClient.Set(managerId, entity); } } return(entity); }
/// <summary> /// 将IDataReader的当前记录读取到NbSolutionEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public NbSolutionEntity LoadSingleRow(IDataReader reader) { var obj = new NbSolutionEntity(); obj.ManagerId = (System.Guid)reader["ManagerId"]; obj.FormationId = (System.Int32)reader["FormationId"]; obj.PlayerString = (System.String)reader["PlayerString"]; obj.SkillString = (System.String)reader["SkillString"]; obj.FormationData = (System.Byte[])reader["FormationData"]; obj.VeteranCount = (System.Int32)reader["VeteranCount"]; obj.Status = (System.Int32)reader["Status"]; obj.RowTime = (System.DateTime)reader["RowTime"]; obj.OrangeCount = (System.Int32)reader["OrangeCount"]; obj.CombCount = (System.Int32)reader["CombCount"]; obj.HirePlayerString = (System.String)reader["HirePlayerString"]; return(obj); }
/// <summary> /// GetById /// </summary> /// <param name="managerId">managerId</param> /// <returns>NbSolutionEntity</returns> /// <remarks>2015/10/18 17:21:42</remarks> public NbSolutionEntity GetById(System.Guid managerId) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_NbSolution_GetById"); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, managerId); NbSolutionEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
public static int[] GetFormPids(NbSolutionEntity form) { string onStr = null == form ? string.Empty : form.PlayerString; return(FrameUtil.CastIntArray(onStr, ',')); }
public static bool Update(NbSolutionEntity nbSolutionEntity, DbTransaction trans = null, string zoneId = "") { var provider = new NbSolutionProvider(zoneId); return(provider.Update(nbSolutionEntity, trans)); }
public MessageCode BackSaveSolution(Guid managerId, NbSolutionEntity solution, int[] newPids, List <TeammemberEntity> members) { if (null == solution) { return(MessageCode.Success); } if (newPids.Length != SystemConstants.TeammemberCount) { return(MessageCode.TeammemberInvalidCount); } if (null == members) { members = MatchDataHelper.GetTeammembers(managerId, null, true); } List <int> tempPids = new List <int>(newPids.Length); int veteranCount = 0; int orangeCount = 0; int combCount = 0; foreach (var pId in newPids) { int id = ConvertHelper.ConvertToInt(pId); if (!members.Exists(d => d.PlayerId == id)) { return(MessageCode.TeammemberInvalidPlayer); } if (tempPids.Contains(id)) { return(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++; } } int veteranNumber = _maxVeteranCount; var manager = NbManagerextraMgr.GetById(managerId); if (manager == null) { return(MessageCode.NbParameterError); } if (manager.VeteranNumber > _maxVeteranCount) { veteranNumber = manager.VeteranNumber; } if (veteranCount > veteranNumber) { return(MessageCode.TeammemberVeteranCountOver); } combCount = ManagerSkillCache.Instance().GetCombsNum(tempPids.ToArray()); string playerString = string.Join(",", newPids); if (!TeammemberMgr.SaveSolution(managerId, solution.FormationId, playerString, veteranCount, orangeCount, combCount)) { return(MessageCode.NbUpdateFail); } //DeleteSolutionCache(managerId, true); return(MessageCode.Success); }