Esempio n. 1
0
        /// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016/1/26 13:35:38</remarks>
        public bool Update(FriendMatchEntity entity, DbTransaction trans = null)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_FriendMatch_Update");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Guid, entity.Idx);
            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, "@Intimacy", DbType.Int32, entity.Intimacy);
            database.AddInParameter(commandWrapper, "@IsFriend", DbType.Boolean, entity.IsFriend);
            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));
        }
Esempio n. 2
0
        /// <summary>
        /// 将IDataReader的当前记录读取到FriendMatchEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public FriendMatchEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new FriendMatchEntity();

            obj.Idx       = (System.Guid)reader["Idx"];
            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.Intimacy  = (System.Int32)reader["Intimacy"];
            obj.IsFriend  = (System.Boolean)reader["IsFriend"];
            obj.Status    = (System.Int32)reader["Status"];
            obj.RowTime   = (System.DateTime)reader["RowTime"];

            return(obj);
        }
Esempio n. 3
0
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="idx">idx</param>
        /// <returns>FriendMatchEntity</returns>
        /// <remarks>2016/1/26 13:35:38</remarks>
        public FriendMatchEntity GetById(System.Guid idx)
        {
            var database = new SqlDatabase(this.ConnectionString);

            DbCommand commandWrapper = database.GetStoredProcCommand("P_FriendMatch_GetById");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Guid, idx);


            FriendMatchEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
Esempio n. 4
0
        public MessageCode MatchCallback(BaseMatchData matchData)
        {
            var fmatchData = (FriendMatchData)matchData;

            if (fmatchData == null || fmatchData.ErrorCode != (int)MessageCode.Success)
            {
                return(MessageCode.MatchCreateFail);
            }
            var  friendRecord = fmatchData.FriendRecord;
            bool isFriend     = friendRecord != null;
            var  coin         = 0;
            int  intimacy     = 0;

            if (isFriend)
            {
                var oldIntimacy = friendRecord.Intimacy;
                AddFriendMatchIntimacy(friendRecord);
                intimacy = friendRecord.Intimacy - oldIntimacy;
                if (friendRecord.DayMatchCount == 1)
                {
                    //第一次比赛有奖励
                    if (fmatchData.Home.Score > fmatchData.Away.Score)
                    {
                        coin = 30;
                    }
                    else if (fmatchData.Home.Score == fmatchData.Away.Score)
                    {
                        coin = 20;
                    }
                    else
                    {
                        coin = 10;
                    }
                }
            }
            var match = new FriendMatchEntity();

            match.Idx       = fmatchData.MatchId;
            match.HomeId    = fmatchData.Home.ManagerId;
            match.HomeName  = fmatchData.Home.Name;
            match.HomeScore = fmatchData.Home.Score;
            match.AwayId    = fmatchData.Away.ManagerId;
            match.AwayName  = fmatchData.Away.Name;
            match.AwayScore = fmatchData.Away.Score;
            match.Intimacy  = intimacy;
            match.IsFriend  = isFriend;
            match.RowTime   = DateTime.Now;
            match.Status    = 0;

            MatchCore.SaveMatchStat(match.HomeId, EnumMatchType.Friend, match.HomeScore, match.AwayScore, match.HomeScore);
            var winType = EnumWinType.Win;

            if (match.HomeScore == match.AwayScore)
            {
                winType = EnumWinType.Draw;
            }
            else if (match.HomeScore < match.AwayScore)
            {
                winType = EnumWinType.Lose;
            }

            using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                transactionManager.BeginTransaction();
                var trans       = transactionManager.TransactionObject;
                var messageCode = MessageCode.NbUpdateFail;
                do
                {
                    if (isFriend)
                    {
                        if (!FriendManagerMgr.Update(friendRecord, trans))
                        {
                            break;
                        }
                    }
                    if (!FriendMatchMgr.Insert(match, trans))
                    {
                        break;
                    }
                    //记录成就相关数据
                    var mess = AchievementTaskCore.Instance.UpdateFriendMatchComb(match.HomeId, winType, trans);
                    if (mess != MessageCode.Success)
                    {
                        break;
                    }

                    if (coin > 0)
                    {
                        //友谊赛金币奖励
                        var manager = ManagerCore.Instance.GetManager(fmatchData.Home.ManagerId);
                        if (manager != null)
                        {
                            mess = ManagerCore.Instance.AddCoin(manager, coin, EnumCoinChargeSourceType.FriendMatch,
                                                                ShareUtil.GenerateComb().ToString(), trans);
                            if (mess != MessageCode.Success)
                            {
                                break;
                            }
                        }
                    }
                    messageCode = MessageCode.Success;
                } while (false);
                if (messageCode == ShareUtil.SuccessCode)
                {
                    transactionManager.Commit();
                }
                else
                {
                    transactionManager.Rollback();
                }
            }
            return(MessageCode.Success);
        }
Esempio n. 5
0
        public static bool Update(FriendMatchEntity friendMatchEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new FriendMatchProvider(zoneId);

            return(provider.Update(friendMatchEntity, trans));
        }