/// <summary> /// 100个矿工为一组奴隶 /// </summary> /// <param name="userID"></param> /// <param name="userName"></param> /// <param name="minersGroupCount">100个矿工为一组奴隶</param> /// <returns></returns> public int AddMinersToFactory(int userID, string userName, int minersGroupCount) { int result = CheckTime(); if (result != OperResult.RESULTCODE_TRUE) { return(result); } if (minersGroupCount < 1) { return(OperResult.RESULTCODE_PARAM_INVALID); } PlayerRunnable playerrunner = PlayerController.Instance.GetRunnable(userName); if (playerrunner == null) { return(OperResult.RESULTCODE_USER_NOT_EXIST); } if (playerrunner.BasePlayer.FortuneInfo.MinersCount < minersGroupCount * StoneFactoryConfig.OneGroupSlaveHasMiners) { return(OperResult.RESULTCODE_MINERS_LACK_OF_BALANCE); } PlayerStoneFactoryAccountInfo factoryAccount = DBProvider.PlayerStoneFactoryDBProvider.GetPlayerStoneFactoryAccountInfo(userID); if (factoryAccount == null || !factoryAccount.FactoryIsOpening || factoryAccount.FactoryLiveDays <= 0) { return(OperResult.RESULTCODE_STONEFACTORYISCLOSED); } result = MyDBHelper.Instance.TransactionDataBaseOper(myTrans => { result = playerrunner.TransferMinersToFactory(minersGroupCount * StoneFactoryConfig.OneGroupSlaveHasMiners, myTrans); if (result == OperResult.RESULTCODE_TRUE) { factoryAccount.FreezingSlaveGroupCount += minersGroupCount; //factoryAccount.LastFeedSlaveTime = new MyDateTime(DateTime.Now); bool isOK = DBProvider.PlayerStoneFactoryDBProvider.SavePlayerStoneFactoryAccountInfo(factoryAccount, myTrans); return(isOK ? OperResult.RESULTCODE_TRUE : OperResult.RESULTCODE_FALSE); } return(result); }, exc => { PlayerController.Instance.RollbackUserFromDB(userName); }); if (result == OperResult.RESULTCODE_TRUE) { LogHelper.Instance.AddInfoLog("矿石工厂,玩家ID[" + userName + "] 增加" + minersGroupCount + "00苦力"); } return(result); }
/// <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); }
public int WithdrawOutputRMB(int userID, string userName, decimal withdrawRMBCount) { 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.WithdrawableProfitRMB < withdrawRMBCount) { return(OperResult.RESULTCODE_LACK_OF_BALANCE); } int result = MyDBHelper.Instance.TransactionDataBaseOper(myTrans => { //添加提现记录 StoneFactoryProfitRMBChangedRecord record = new StoneFactoryProfitRMBChangedRecord() { UserID = userID, OperRMB = -withdrawRMBCount, OperTime = new MyDateTime(DateTime.Now), ProfitType = FactoryProfitOperType.WithdrawRMB }; bool isOK = DBProvider.PlayerStoneFactoryDBProvider.AddProfitRMBChangedRecord(record, myTrans); if (isOK) { return(playerrunner.WithdrawRMBFromFactory(withdrawRMBCount, myTrans)); } return(OperResult.RESULTCODE_FALSE); }, exc => { PlayerController.Instance.RollbackUserFromDB(userName); }); if (result == OperResult.RESULTCODE_TRUE) { LogHelper.Instance.AddInfoLog("矿石工厂,玩家ID[" + userID + "] 提取" + withdrawRMBCount + "灵币"); } return(result); }
public int BuyVirtualShoppingItem(string token, VirtualShoppingItem shoppingItem) { if (RSAProvider.LoadRSA(token)) { PlayerRunnable playerrunner = null; string userName = ""; try { userName = ClientManager.GetClientUserName(token); playerrunner = PlayerController.Instance.GetRunnable(userName); if (playerrunner == null) { return(OperResult.RESULTCODE_USER_NOT_EXIST); } if (!VirtualShoppingController.Instance.CheckVirtualShoppingItemBuyable(playerrunner.BasePlayer.SimpleInfo.UserID, shoppingItem)) { return(OperResult.RESULTCODE_VIRTUALSHOPPING_PLAYERCANOTBUY_THISITEM); } int result = MyDBHelper.Instance.TransactionDataBaseOper(myTrans => { int innerResult = playerrunner.BuyVirtualShoppingItem(shoppingItem, myTrans); if (innerResult != OperResult.RESULTCODE_TRUE) { return(innerResult); } return(VirtualShoppingController.Instance.BuyVirtualShoppingItem(playerrunner.BasePlayer.SimpleInfo.UserID, userName, shoppingItem, myTrans)); }, exc => { if (playerrunner != null) { playerrunner.RefreshFortune(); } if (exc != null) { LogHelper.Instance.AddErrorLog("玩家[" + userName + "]购买虚拟商品[" + shoppingItem.Name + "]异常", exc); } }); if (result == OperResult.RESULTCODE_TRUE) { LogHelper.Instance.AddInfoLog("玩家[" + userName + "]成功购买了虚拟商品[" + shoppingItem.Name + "]"); } return(result); } catch (Exception exc) { LogHelper.Instance.AddErrorLog("玩家[" + userName + "]购买虚拟商品[" + shoppingItem.Name + "]异常. ClientIP=" + ClientManager.GetClientIP(token), exc); return(OperResult.RESULTCODE_EXCEPTION); } } else { throw new Exception(); } }
public int BuyDiamondShoppingItem(string token, DiamondShoppingItem shoppingItem, PostAddress address) { if (RSAProvider.LoadRSA(token)) { PlayerRunnable playerrunner = null; string userName = ""; try { if (address == null) { return(OperResult.RESULTCODE_NEEDPOSTADDRESS); } userName = ClientManager.GetClientUserName(token); playerrunner = PlayerController.Instance.GetRunnable(userName); if (playerrunner == null) { return(OperResult.RESULTCODE_USER_NOT_EXIST); } int result = MyDBHelper.Instance.TransactionDataBaseOper(myTrans => { int innerResult = playerrunner.BuyDiamondShoppingItem(shoppingItem, myTrans); if (innerResult != OperResult.RESULTCODE_TRUE) { return(innerResult); } return(DiamondShoppingController.Instance.BuyDiamondShoppingItem(playerrunner.BasePlayer.SimpleInfo.UserID, userName, shoppingItem, address, myTrans)); }, exc => { if (playerrunner != null) { playerrunner.RefreshFortune(); } if (exc != null) { LogHelper.Instance.AddErrorLog("玩家[" + userName + "]购买钻石商品[" + shoppingItem.Name + "]异常", exc); } }); if (result == OperResult.RESULTCODE_TRUE) { LogHelper.Instance.AddInfoLog("玩家[" + userName + "]成功购买了钻石商品[" + shoppingItem.Name + "]"); } return(result); } catch (Exception exc) { LogHelper.Instance.AddErrorLog("玩家[" + userName + "]购买钻石商品[" + shoppingItem.Name + "]异常. ClientIP=" + ClientManager.GetClientIP(token), exc); return(OperResult.RESULTCODE_EXCEPTION); } } else { throw new Exception(); } }