示例#1
0
        /// <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));
        }
示例#2
0
 public void SetSolution(bool homeFlag, NbSolutionEntity solutionEntity)
 {
     if (homeFlag)
     {
         _homeSolution = solutionEntity;
     }
     else
     {
         _awaySolution = solutionEntity;
     }
 }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
        public static int[] GetFormPids(NbSolutionEntity form)
        {
            string onStr = null == form ? string.Empty : form.PlayerString;

            return(FrameUtil.CastIntArray(onStr, ','));
        }
示例#7
0
        public static bool Update(NbSolutionEntity nbSolutionEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new NbSolutionProvider(zoneId);

            return(provider.Update(nbSolutionEntity, trans));
        }
示例#8
0
        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);
        }