Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="isJoinIn">true表示投入;false表示提取</param>
        /// <param name="stoneStackCount"></param>
        /// <param name="myTrans"></param>
        /// <returns></returns>
        public bool AddNewStackChangeRecord(StoneFactoryStackChangeRecord record, CustomerMySqlTransaction myTrans)
        {
            MySqlCommand mycmd = null;

            try
            {
                mycmd = myTrans.CreateCommand();
                string sqlText = "insert into stonefactorystackchangerecord " +
                                 "(`UserID`,`JoinStoneStackCount`,`Time`) " +
                                 " values (@UserID,@JoinStoneStackCount,@Time) ";
                mycmd.CommandText = sqlText;
                mycmd.Parameters.AddWithValue("@UserID", record.UserID);
                mycmd.Parameters.AddWithValue("@JoinStoneStackCount", record.JoinStoneStackCount);
                mycmd.Parameters.AddWithValue("@Time", record.Time.ToDateTime());
                mycmd.ExecuteNonQuery();
            }
            finally
            {
                if (mycmd != null)
                {
                    mycmd.Dispose();
                }
            }

            return(true);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="stoneStackCount">矿石股数(一万矿石为一股)</param>
        /// <returns></returns>
        public int WithdrawStone(int userID, string userName, int stoneStackCount)
        {
            PlayerRunnable playerrunner = PlayerController.Instance.GetRunnable(userName);

            if (playerrunner == null)
            {
                return(OperResult.RESULTCODE_USER_NOT_EXIST);
            }
            var playerFactoryAccountInfo = this.GetPlayerStoneFactoryAccountInfo(userID);

            if (playerFactoryAccountInfo == null)
            {
                return(OperResult.RESULTCODE_STONEFACTORYISCLOSED);
            }

            if (playerFactoryAccountInfo.WithdrawableStackCount < stoneStackCount)
            {
                return(OperResult.RESULTCODE_LACK_OF_BALANCE);
            }

            int result = MyDBHelper.Instance.TransactionDataBaseOper(myTrans =>
            {
                playerFactoryAccountInfo.WithdrawableStackCount -= stoneStackCount;
                playerFactoryAccountInfo.TotalStackCount        -= stoneStackCount;

                result = playerrunner.WithdrawStoneFromFactory(stoneStackCount, myTrans);
                if (result == OperResult.RESULTCODE_TRUE)
                {
                    //添加矿石取出记录
                    StoneFactoryStackChangeRecord record = new StoneFactoryStackChangeRecord()
                    {
                        UserID = userID,
                        JoinStoneStackCount = -stoneStackCount,
                        Time = new MyDateTime(DateTime.Now)
                    };
                    bool isOK = DBProvider.PlayerStoneFactoryDBProvider.AddNewStackChangeRecord(record, myTrans);
                    if (isOK)
                    {
                        return(OperResult.RESULTCODE_TRUE);
                    }
                    return(OperResult.RESULTCODE_FALSE);
                }
                return(result);
            },
                                                                     exc =>
            {
                PlayerController.Instance.RollbackUserFromDB(userName);
            });

            if (result == OperResult.RESULTCODE_TRUE)
            {
                LogHelper.Instance.AddInfoLog("矿石工厂,玩家ID[" + userID + "] 取出" + stoneStackCount + "矿石");
            }
            return(OperResult.RESULTCODE_FALSE);
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="userName"></param>
        /// <param name="stoneStackCount">矿石股数(一万矿石为一股)</param>
        /// <returns></returns>
        public int AddStoneToFactory(int userID, string userName, int stoneStackCount)
        {
            int result = CheckTime();

            if (result != OperResult.RESULTCODE_TRUE)
            {
                return(result);
            }

            //1万矿石可以投入一股,30天后,可撤回到玩家矿石账户
            PlayerRunnable playerrunner = PlayerController.Instance.GetRunnable(userName);

            if (playerrunner == null)
            {
                return(OperResult.RESULTCODE_USER_NOT_EXIST);
            }
            if (playerrunner.BasePlayer.FortuneInfo.StockOfStones - playerrunner.BasePlayer.FortuneInfo.FreezingStones < (stoneStackCount * StoneFactoryConfig.StoneFactoryStone_Stack))
            {
                return(OperResult.RESULTCODE_LACK_OF_BALANCE);
            }

            result = MyDBHelper.Instance.TransactionDataBaseOper(myTrans =>
            {
                result = playerrunner.JoinStoneToFactory(stoneStackCount, myTrans);
                if (result == OperResult.RESULTCODE_TRUE)
                {
                    //只需要添加矿石存入记录。
                    StoneFactoryStackChangeRecord record = new StoneFactoryStackChangeRecord()
                    {
                        UserID = userID,
                        JoinStoneStackCount = stoneStackCount,
                        Time = new MyDateTime(DateTime.Now)
                    };
                    bool isOK = DBProvider.PlayerStoneFactoryDBProvider.AddNewStackChangeRecord(record, myTrans);
                    if (isOK)
                    {
                        return(OperResult.RESULTCODE_TRUE);
                    }
                    return(OperResult.RESULTCODE_FALSE);
                }
                return(result);
            },
                                                                 exc =>
            {
                PlayerController.Instance.RollbackUserFromDB(userName);
            });

            if (result == OperResult.RESULTCODE_TRUE)
            {
                LogHelper.Instance.AddInfoLog("矿石工厂,玩家[" + userName + "] 添加" + stoneStackCount + "0000矿石");
            }
            return(result);
        }