/// <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); }
/// <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); }
/// <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); }