Более явное документирование функций банка, логгирование получения средств.
This commit is contained in:
parent
4251027063
commit
8a9bb64b53
2
bank.php
2
bank.php
@ -87,6 +87,6 @@ Template::header('Банк');
|
||||
<input type="hidden" name="action" value="sendMoney">
|
||||
<input type="submit" value="Перевести кредиты">
|
||||
</form>
|
||||
<span class="wrap">Комиссия: <?= Config::$bank_comission * 100 ?>% от переводимой суммы, но не менее 1 кр.</span>
|
||||
<span class="wrap">Комиссия: <?= Config::$bank_commission * 100 ?>% от переводимой суммы, но не менее 1 кр.</span>
|
||||
</div>
|
||||
<?php endif; ?>
|
@ -37,58 +37,60 @@ class Bank
|
||||
}
|
||||
|
||||
/**
|
||||
* Комиссия: self::BANK_COMISSION от переводимой суммы, но не менее 1 кр.
|
||||
* Комиссия: процент от переводимой суммы, но не менее 1 кр. Задаётся в config.php.
|
||||
*
|
||||
* @param $amount
|
||||
* @param int $amount сумма.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
private function bankComission($amount)
|
||||
private function bankCommission(int $amount):int
|
||||
{
|
||||
$bankComission = round($amount * Config::$bank_comission);
|
||||
if ($bankComission < 1) {
|
||||
$bankCommission = round($amount * Config::$bank_commission);
|
||||
if ($bankCommission < 1) {
|
||||
return 1;
|
||||
} else {
|
||||
return (int)$bankComission;
|
||||
return (int)$bankCommission;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Пишем банковское событие в лог в БД
|
||||
*
|
||||
* @param int $receiverId - user_id получателя
|
||||
* @param int $amount
|
||||
* @param string $operationType
|
||||
* @param int $senderId
|
||||
* @param int $receiverId ID получателя.
|
||||
* @param int $amount сумма.
|
||||
* @param string $operationType тип банковской операции.
|
||||
* @param int $senderId ID отправителя (ID игрока, если не указано иное).
|
||||
*
|
||||
* @return void
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
private function bankLogs(int $receiverId, int $amount, string $operationType, int $senderId = 0)
|
||||
private function bankLogs(int $receiverId, int $amount, string $operationType, int $senderId = 0):void
|
||||
{
|
||||
if (!$senderId) {
|
||||
$senderId = $this->user_id;
|
||||
}
|
||||
$text = '';
|
||||
if ($operationType === "sendMoney") {
|
||||
$text = self::LOG_SEND . " Комиссия: " . $this->bankComission($amount);
|
||||
} elseif ($operationType === "depositMoney") {
|
||||
if ($operationType == "sendMoney") {
|
||||
$text = self::LOG_SEND . " Комиссия: " . $this->bankCommission($amount);
|
||||
} elseif ($operationType == "depositMoney") {
|
||||
$receiverId = $this->user_id;
|
||||
$text = self::LOG_DEPOSIT;
|
||||
} elseif ($operationType === "withdrawMoney") {
|
||||
} elseif ($operationType == "withdrawMoney") {
|
||||
$receiverId = $this->user_id;
|
||||
$text = self::LOG_WITHDRAW . " Комиссия: " . $this->bankComission($amount);
|
||||
$text = self::LOG_WITHDRAW . " Комиссия: " . $this->bankCommission($amount);
|
||||
} elseif ($operationType == "receiveMoney") {
|
||||
$text = self::LOG_RECEIVE;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Перевод денег между бансковскими счетами игроков с банковской комиссией.
|
||||
* Перевод денег между банковскими счетами игроков с банковской комиссией.
|
||||
*
|
||||
* @param int $receiver
|
||||
* @param int $amount
|
||||
* @param int $receiver ID получателя.
|
||||
* @param int $amount сумма.
|
||||
*
|
||||
* @return void
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
@ -102,7 +104,7 @@ class Bank
|
||||
if (!$receiverWallet) {
|
||||
throw new Exception(self::ERROR_NO_BANK_ACCOUNT);
|
||||
}
|
||||
$amountWithComission = $amount + $this->bankComission($amount);
|
||||
$amountWithComission = $amount + $this->bankCommission($amount);
|
||||
if ($amountWithComission > $this->money) {
|
||||
throw new Exception(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT);
|
||||
}
|
||||
@ -119,7 +121,7 @@ class Bank
|
||||
/**
|
||||
* Пополнение банковского счёта игрока
|
||||
*
|
||||
* @param int $amount - сумма
|
||||
* @param int $amount сумма.
|
||||
*
|
||||
* @return void
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
@ -146,7 +148,7 @@ class Bank
|
||||
/**
|
||||
* Снятие денег с банковского счёта игрока с банковской комиссией.
|
||||
*
|
||||
* @param int $amount - сумма
|
||||
* @param int $amount сумма.
|
||||
*
|
||||
* @return void
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
@ -156,7 +158,7 @@ class Bank
|
||||
if ($amount <= 0) {
|
||||
throw new Exception(self::ERROR_WRONG_AMOUNT);
|
||||
}
|
||||
$amountWithComission = $amount + $this->bankComission($amount);
|
||||
$amountWithComission = $amount + $this->bankCommission($amount);
|
||||
if ($this->money < $amountWithComission) {
|
||||
throw new Exception(self::ERROR_NO_MONEY_IN_BANK_ACCOUNT);
|
||||
}
|
||||
@ -177,6 +179,7 @@ class Bank
|
||||
* @param int $user_id ID пользователя.
|
||||
* @param string $operationType Тип операции. По умолчанию пусто. Если ввести, система запишет событие в банковский лог.
|
||||
*
|
||||
* @return void
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
public static function setBankMoney(int $amount, int $user_id, string $operationType = ''): void
|
||||
@ -190,9 +193,10 @@ class Bank
|
||||
/**
|
||||
* Установить количество денег на руках.
|
||||
*
|
||||
* @param int $amount - сумма.
|
||||
* @param int $user_id - ID пользователя.
|
||||
* @param int $amount сумма.
|
||||
* @param int $user_id ID пользователя.
|
||||
*
|
||||
* @return void
|
||||
* @throws \Krugozor\Database\Mysql\Exception
|
||||
*/
|
||||
public static function setWalletMoney(int $amount, int $user_id): void
|
||||
|
@ -66,7 +66,7 @@ trait Config
|
||||
public static $clan_register_cost = 10000; //стоимость
|
||||
public static $clan_register_lock = 1; //запрет на регистрацию
|
||||
//Банк
|
||||
public static $bank_comission = 0.05; //5%
|
||||
public static $bank_commission = 0.05; //5%
|
||||
// Старая таблица опыта
|
||||
public static $exptable = [
|
||||
0 => [0, 0, 0, 0, 0, 20],
|
||||
|
Loading…
Reference in New Issue
Block a user