Файл: upload/pages/admin/profit/project-profit.php
Строк: 133
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');
if ($users_perms['manage_payment'] != 1) {
RedirectToPage('/');
exit();
}
$profit = FetchAssoc(dbquery("SELECT * FROM `project_profit` WHERE `id` = '1'"));
$transaction = dbquery("SELECT * FROM `transactions` WHERE `us` = '0' ORDER BY `id` DESC");
if (isset($_POST['payout_profit'])) {
check_csrf();
if ($users_perms['manage_payment'] != 1) {
RedirectToPage('/');
exit();
}
$amount = intval($_POST['amount']);
// --- ЗАЩИТА ОТ ПОВТОРНЫХ ДЕЙСТВИЙ ---
dbquery("START TRANSACTION");
// Блокируем строку дохода
$profit = FetchAssoc(dbquery("
SELECT fullprofit
FROM project_profit
WHERE id = '1'
FOR UPDATE
"));
// Если нет строки или денег не хватает — откат
if (!$profit || getAvailableAdminBalance(0, $profit['fullprofit']) < $amount || $amount <= 0) {
dbquery("ROLLBACK");
showAlert('Ошибка', 'fail', 'Недостаточно средств или неверная сумма!');
ReloadPage();
exit();
}
// ------------------------------------
// Генерируем уникальный ID транзакции
$orderDigits = OrderGenKey();
// Создаем транзакцию
insertTransaction($amount, 0, 1, 0, 2, $orderDigits);
// Списываем доход
$upd = dbquery("
UPDATE project_profit
SET fullprofit = fullprofit - ?
WHERE id = '1'
", [$amount]);
if (!$upd) {
dbquery("ROLLBACK");
showAlert('Ошибка', 'fail', 'При списании средств произошла ошибка!');
ReloadPage();
exit();
}
// --- ФИКСИРУЕМ ВСЁ ---
dbquery("COMMIT");
// --- ВНЕ ТРАНЗАКЦИИ ---
showAlert('Успешно', 'success', 'Выплата успешно создана!');
ReloadPage();
exit('ok');
}
echo '<div class="modal fade" id="payout-project" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Выплата дохода</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"><i class = "fas fa-xmark"></i></button>
</div>
<div class="modal-body">
<span>Введите сумму выплаты:</span><br>
</div>
<div class="modal-footer">
<form method="post">
<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">
<input type="number" name="amount" min="1" id="modal-number-input">
<input class="button" type="submit" name="payout_profit" style="float: right; margin-left: 5px;" value="Выплатить">
</form>
</div>
</div>
</div>
</div>';
echo '<div class="home_us tematic">';
$breadcrumbs = generateBreadcrumbs([
['/', 'Главная'],
['/admin', 'Админ панель'],
['#', 'Доход проекта']
]);
$html = $breadcrumbs['html'];
$json_ld = $breadcrumbs['json_ld'];
echo $html;
echo '<script type="application/ld+json">' . $json_ld . '</script>';
echo '<div class="head_box section-header">
<div class="box_title">Доход проекта</div>
</div>';
echo '<div class="side_in_count">';
include ($_SERVER['DOCUMENT_ROOT'] . '/core/elements/sidebars/panel.php');
echo '<div class="box-back-pan nonback">
<div class="balance_head-block adm">
<div class="balance_summ number">' . $profit['fullprofit'] . '₽</div>
<div class="succ_money-info">
<div class="balance_summ_succ">На удержании: <span class="number">' . getFrozenBalance(0) . '₽</span></div>
<div class="balance_summ_succ">Доступно к снятию: <span class="number">' . getAvailableAdminBalance(0, $profit['fullprofit']) . '₽</span></div>
</div>
<a class="btn button" data-bs-toggle="modal" data-bs-target="#payout-project">Создать выплату</a>
</div>';
while ($transact = FetchAssoc($transaction)) {
echo '<div class="transaction_box">
<div class="transaction_flex">
<div class="transaction_info">
<div class="transaction_title-info name">' . TransactionType($transact['k_type'] ?? '-') . '</div>
<div class="transaction_title-info">' . vremja($transact['k_time'] ?? time()) . '</div>
<div class="transaction_order-info">id-' . ($transact['k_order'] ?? '?') . '</div>
<div class="transaction_title-info prefix';
if ($transact['status'] == 0) {
echo ' err';
}
if ($transact['status'] == 1) {
echo ' ok';
}
if ($transact['status'] == 2) {
echo ' load';
}
if ($transact['status'] == 3) {
echo ' udr';
}
if ($transact['status'] == 4) {
echo ' err';
}
echo '">' . TransactionStatus($transact['status'] ?? '-') . '</div>
</div>
<div class="transaction_summ';
if ($transact['k_ord'] == 0) {
echo ' mns';
}
echo '">' . TransactionORD($transact['k_ord'] ?? '-') . ' <span class="number">' . ($transact['summ'] ?? '') . '</span> ₽</div>
</div>
</div>';
}
echo '</div>';
echo '</div>';
echo '</div>';
$page_html = ob_get_clean();
require_once ($_SERVER['DOCUMENT_ROOT'] . '/layout.php');
?>