From 10f3bab59d8506a8a90e9b7c87d30499110d98a5 Mon Sep 17 00:00:00 2001 From: "Igor Barkov (iwork)" Date: Tue, 26 Jan 2021 17:50:57 +0200 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20=D0=B1?= =?UTF-8?q?=D0=B0=D0=BD=D0=BA=D0=BE=D0=B2=D1=81=D0=BA=D0=B8=D1=85=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=D0=B2=20=D0=B2=20sqlite.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/Battles/Bank.php | 64 ++++++++++++++++++++++++--------------- databases/logs.sqlite | Bin 0 -> 16384 bytes 2 files changed, 39 insertions(+), 25 deletions(-) create mode 100644 databases/logs.sqlite diff --git a/classes/Battles/Bank.php b/classes/Battles/Bank.php index 83f3a4b..5a5b74e 100644 --- a/classes/Battles/Bank.php +++ b/classes/Battles/Bank.php @@ -6,6 +6,13 @@ */ namespace Battles; +use Config; +use db; +use Exceptions\GameException; +use Krugozor\Database\Mysql\Exception; +use SQLite3; +use Throwable; + class Bank { public $user_id; @@ -26,8 +33,8 @@ class Bank public function __construct($row) { - $bank_row = \db::c()->query('SELECT user_id, money FROM bank WHERE user_id = ?i', $row)->fetch_assoc(); - $this->user = \db::c()->query('SELECT money FROM users WHERE id = ?i', $row)->fetch_object(); + $bank_row = db::c()->query('SELECT user_id, money FROM bank WHERE user_id = ?i', $row)->fetch_assoc(); + $this->user = db::c()->query('SELECT money FROM users WHERE id = ?i', $row)->fetch_object(); foreach ($this as $key => $value) { if (isset($bank_row[$key])) { $this->$key = $bank_row[$key]; @@ -35,7 +42,7 @@ class Bank } // Если ВДРУГ у человека нет счёта в банке - создаём. if (empty($this->user_id)) { - \db::c()->query('INSERT INTO bank (user_id) VALUES (?i)', $row); + db::c()->query('INSERT INTO bank (user_id) VALUES (?i)', $row); $this->user_id = $row; } } @@ -49,7 +56,7 @@ class Bank */ private function bankCommission(int $amount): int { - $bankCommission = round($amount * \Config::$bank_commission); + $bankCommission = round($amount * Config::$bank_commission); if ($bankCommission < 1) { return 1; } else { @@ -66,7 +73,7 @@ class Bank * @param int $senderId ID отправителя (ID игрока, если не указано иное). * * @return void - * @throws \Krugozor\Database\Mysql\Exception + * @throws Exception */ private function bankLogs(int $receiverId, int $amount, string $operationType, int $senderId = 0): void { @@ -83,8 +90,15 @@ class Bank $text .= " Комиссия: " . $this->bankCommission($amount); } - \db::c()->query('INSERT INTO `bank_logs` (sender_id, receiver_id, amount_result, type, text) - VALUES (?i, ?i, ?i, "?s", "?s")', $senderId, $receiverId, $amount, $operationType, $text); + $db = new SQLite3('databases/logs.sqlite'); + $logLine = $db->prepare("INSERT INTO bank_logs (sender_id, receiver_id, amount, type, text) VALUES (?, ?, ?, ?, ?)"); + $logLine->bindParam(1, $senderId, SQLITE3_INTEGER); + $logLine->bindParam(2, $receiverId, SQLITE3_INTEGER); + $logLine->bindParam(3, $amount, SQLITE3_INTEGER); + $logLine->bindParam(4, $operationType, SQLITE3_TEXT); + $logLine->bindParam(5, $text, SQLITE3_TEXT); + $logLine->execute(); + $logLine->close(); } /** @@ -94,20 +108,20 @@ class Bank * @param int $amount сумма. * * @return int - * @throws \Krugozor\Database\Mysql\Exception + * @throws Exception */ public function sendMoney(int $receiver, int $amount): int { - $receiverWallet = \db::c()->query('SELECT money FROM bank WHERE user_id = ?i', $receiver)->fetch_object(); + $receiverWallet = db::c()->query('SELECT money FROM bank WHERE user_id = ?i', $receiver)->fetch_object(); if ($amount <= 0) { - throw new \Exceptions\GameException(self::ERROR_WRONG_AMOUNT); + throw new GameException(self::ERROR_WRONG_AMOUNT); } if (!$receiverWallet) { - throw new \Exceptions\GameException(self::ERROR_NO_BANK_ACCOUNT); + throw new GameException(self::ERROR_NO_BANK_ACCOUNT); } $amountWithComission = $amount + $this->bankCommission($amount); if ($amountWithComission > $this->money) { - throw new \Exceptions\GameException(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT); + throw new GameException(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT); } // Снимаем сумму с комиссией у отправителя $this->money -= $amountWithComission; @@ -127,16 +141,16 @@ class Bank * @param int $amount сумма. * * @return array - * @throws \Krugozor\Database\Mysql\Exception + * @throws Exception */ public function depositMoney(int $amount): array { if ($amount <= 0) { - throw new \Exceptions\GameException(self::ERROR_WRONG_AMOUNT); + throw new GameException(self::ERROR_WRONG_AMOUNT); } - $wallet = \db::c()->query('SELECT money FROM users WHERE id = ?i', $this->user_id)->fetch_object(); + $wallet = db::c()->query('SELECT money FROM users WHERE id = ?i', $this->user_id)->fetch_object(); if ($wallet->money < $amount) { - throw new \Exceptions\GameException(self::ERROR_NO_MONEY_IN_WALLET); + throw new GameException(self::ERROR_NO_MONEY_IN_WALLET); } // Забираем деньги из кошелька получателя $this->user->money -= $amount; @@ -158,16 +172,16 @@ class Bank * @param int $amount сумма. * * @return array - * @throws \Krugozor\Database\Mysql\Exception + * @throws Exception */ public function withdrawMoney(int $amount):array { if ($amount <= 0) { - throw new \Exceptions\GameException(self::ERROR_WRONG_AMOUNT); + throw new GameException(self::ERROR_WRONG_AMOUNT); } $amountWithComission = $amount + $this->bankCommission($amount); if ($this->money < $amountWithComission) { - throw new \Exceptions\GameException(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT); + throw new GameException(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT); } // Снимаем сумму с комиссией у отправителя $this->money -= $amountWithComission; @@ -191,16 +205,16 @@ class Bank * @param string $operationType Тип операции. По умолчанию пусто. Если ввести, система запишет событие в банковский лог. * * @return void - * @throws \Krugozor\Database\Mysql\Exception + * @throws Exception */ public static function setBankMoney(int $amount, int $user_id, string $operationType = ''): void { try { - \db::c()->query('UPDATE bank SET money = ?i WHERE user_id = ?i', $amount, $user_id); + db::c()->query('UPDATE bank SET money = ?i WHERE user_id = ?i', $amount, $user_id); if ($operationType) { (new Bank($user_id))->bankLogs(0, $amount, $operationType); } - } catch (\Throwable $e) { + } catch (Throwable $e) { echo "Не отработал запрос в БД в файле {$e->getFile()}({$e->getLine()})"; } @@ -213,13 +227,13 @@ class Bank * @param int $user_id ID пользователя. * * @return void - * @throws \Krugozor\Database\Mysql\Exception + * @throws Exception */ public static function setWalletMoney(int $amount, int $user_id): void { try { - \db::c()->query('UPDATE users SET money = ?i WHERE `id` = ?i', $amount, $user_id); - } catch (\Throwable $e) { + db::c()->query('UPDATE users SET money = ?i WHERE `id` = ?i', $amount, $user_id); + } catch (Throwable $e) { echo "Не отработал запрос в БД в файле {$e->getFile()}({$e->getLine()})"; } diff --git a/databases/logs.sqlite b/databases/logs.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..536cafe43f697af4d69998fed2f5adc105f30b88 GIT binary patch literal 16384 zcmeI(&ui0A902hA=r$8=J9a69>D~&Zt=p_~gMlD8rMC@#6~t4`nzt^jdFhgu&3bDY z^CZKgUc~=E(7`}Ak6u&%1HF6j4^aFjThp}SnBZmX8_2Kkd-?X|^UdXj^ufJFgHy6% z*`~(HtS~HyqHvQCK@dh@jltSkF2F(bTf#0w{n2 zD1ZVefC4Ch0w{n2|1OXyiN#c*Aa2caZMjBWhuRRj7KGwq$SK#Xs#DghWp38}K0N{H z_Wj~QsYpr-w-$@!k7hNeDuzxB#%Yz>s?xkOFq9e}7h7hKe_3N|LHh6@){`#`_vcY6 z7IV0*L1GeiD%aOkMN#UuVQO}RtkDM1Ty7bxVpEecKBX!SWjeLX-628DrWI;z^hY(* zav}NA$e|l=)G6WgiJ!*b1;=Xst~8jMoD?4g_v5VBU^-ZK=(e8}d-9Fc=#Qo}N|#&RUmaerVt* zGzModm@WB)gGqOPEPY(ny4_AtHotSEXoOjuFt=8NQb2`Qt)51mu4rzJlj#{~)-{-( z9~F^wT5|B{tZ>7mxopPCPGy<3na$^;H4eL`orc4ynT{4c{CPDW_uYmCA^9x;#0?6d z01BW03ZMWApa2S>01BW03ZTGg6}TizvC&as`={{h@$lHw!#4uesy0`h^XLB(O#YKU z@D0FeEiaB61yBG5Pyhu`00mG01yBG5P~fZ!WE9tl%ksDweqtiUC3ym(ov&aH=l@Jd zeonHpu7&rH0w{n2D1ZVefC4Ch0w{n2D1ZY0N8q7!4*p*+Wt)m5o!{6r_^NJen@bj> z4eyP&-`;7ryghH1c<;SkZy(loq}}umVAFoqegTbduMqE*ci?^W_8``T?ap;FGdDjk h4*7{QOOW@aPV1Iq@WZsPq4y_PKLq*qgY=PfzX1@Dfd~Kq literal 0 HcmV?d00001