Your IP : 216.73.217.78


Current Path : /home/seto/888mirror.pm/admin/
Upload File :
Current File : /home/seto/888mirror.pm/admin/conversions.php

<?php
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/helpers.php';

auth_check();
if (!auth_can('conversions')) {
    http_response_code(403);
    echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"></head><body>';
    echo admin_nav();
    echo '<div class="container mt-5"><div class="alert alert-danger"><strong>Доступ запрещён.</strong> У вашего аккаунта нет доступа к разделу Конверсии.</div></div></body></html>';
    exit();
}

$db = db();

$filter_days = (int)($_GET['days'] ?? 30);
$filter_days = in_array($filter_days, [1, 7, 30, 90, 365]) ? $filter_days : 30;
$since = date('Y-m-d H:i:s', strtotime("-{$filter_days} days"));

// Сводка по брендам
$summary = $db->prepare("
    SELECT
        b.id,
        b.name,
        b.logo,
        COALESCE(cl.clicks, 0)  as clicks,
        COALESCE(cv.fd, 0)      as fd,
        COALESCE(cv.reg, 0)     as reg,
        COALESCE(cv.anydep, 0)  as anydep,
        COALESCE(cv.total, 0)   as total,
        COALESCE(cv.revenue, 0) as revenue
    FROM brands b
    LEFT JOIN (
        SELECT brand_id, COUNT(*) as clicks
        FROM stats WHERE event_type='click' AND created_at >= ?
        GROUP BY brand_id
    ) cl ON cl.brand_id = b.id
    LEFT JOIN (
        SELECT brand_id,
            SUM(CASE WHEN event_type='fd'     THEN 1 ELSE 0 END) as fd,
            SUM(CASE WHEN event_type='reg'    THEN 1 ELSE 0 END) as reg,
            SUM(CASE WHEN event_type='anydep' THEN 1 ELSE 0 END) as anydep,
            COUNT(*) as total,
            SUM(payout) as revenue
        FROM conversions WHERE created_at >= ?
        GROUP BY brand_id
    ) cv ON cv.brand_id = b.id
    WHERE b.status = 'active' AND (cl.clicks > 0 OR cv.total > 0)
    ORDER BY cv.revenue DESC, cv.total DESC, cl.clicks DESC
");
$summary->execute([$since, $since]);
$rows = $summary->fetchAll();

// Последние конверсии
$recent = $db->prepare("
    SELECT c.*, b.name as brand_name
    FROM conversions c
    LEFT JOIN brands b ON b.id = c.brand_id
    WHERE c.created_at >= ?
    ORDER BY c.created_at DESC
    LIMIT 100
");
$recent->execute([$since]);
$recent_rows = $recent->fetchAll();

// Итоги
$totals = ['clicks' => 0, 'fd' => 0, 'reg' => 0, 'anydep' => 0, 'total' => 0, 'revenue' => 0.0];
foreach ($rows as $r) {
    foreach ($totals as $k => $_) $totals[$k] += $r[$k];
}

$postback_url = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/postback.php';
?>
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Конверсии — Admin</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
</head>
<body>
<?= admin_nav('conversions') ?>
<div class="container-fluid px-4">

    <div class="d-flex align-items-center justify-content-between mb-3 flex-wrap gap-2">
        <h5 class="mb-0">Конверсии</h5>
        <div class="btn-group btn-group-sm">
            <?php foreach ([1=>'Сегодня',7=>'7д',30=>'30д',90=>'90д',365=>'Год'] as $d=>$l): ?>
                <a href="?days=<?= $d ?>" class="btn btn-outline-secondary <?= $filter_days===$d?'active':'' ?>"><?= $l ?></a>
            <?php endforeach ?>
        </div>
    </div>

    <!-- Postback URL подсказка -->
    <div class="alert alert-info py-2 small mb-3">
        <i class="bi bi-info-circle me-1"></i>
        <strong>Postback URL:</strong>
        <code><?= h($postback_url) ?>?subid={subid}&event=fd&payout={cpapayout}</code>
        &nbsp;·&nbsp; события: <code>fd</code>, <code>reg</code>, <code>anydep</code>
    </div>

    <!-- Сводка по брендам -->
    <div class="card shadow-sm mb-4">
        <div class="card-header fw-semibold">По брендам</div>
        <div class="card-body p-0">
            <div class="table-responsive">
                <table class="table table-sm table-hover mb-0 align-middle">
                    <thead class="table-light">
                        <tr>
                            <th>Бренд</th>
                            <th class="text-center">Клики</th>
                            <th class="text-center">FD</th>
                            <th class="text-center">Reg</th>
                            <th class="text-center">AnyDep</th>
                            <th class="text-center">Всего конв.</th>
                            <th class="text-center">CR%</th>
                            <th class="text-center">Revenue</th>
                        </tr>
                    </thead>
                    <tbody>
                    <?php foreach ($rows as $r): ?>
                        <tr>
                            <td>
                                <div class="d-flex align-items-center gap-2">
                                    <?php if ($r['logo']): ?>
                                        <img src="<?= h($r['logo']) ?>" style="height:22px;max-width:50px;object-fit:contain">
                                    <?php endif ?>
                                    <span><?= h($r['name']) ?></span>
                                </div>
                            </td>
                            <td class="text-center"><?= number_format($r['clicks']) ?></td>
                            <td class="text-center"><?= $r['fd'] ?: '—' ?></td>
                            <td class="text-center"><?= $r['reg'] ?: '—' ?></td>
                            <td class="text-center"><?= $r['anydep'] ?: '—' ?></td>
                            <td class="text-center fw-bold"><?= $r['total'] ?: '—' ?></td>
                            <td class="text-center">
                                <?php if ($r['clicks'] > 0 && $r['total'] > 0): ?>
                                    <?= round($r['total'] / $r['clicks'] * 100, 1) ?>%
                                <?php else: ?>—<?php endif ?>
                            </td>
                            <td class="text-center <?= $r['revenue'] > 0 ? 'text-success fw-bold' : '' ?>">
                                <?= $r['revenue'] > 0 ? '$' . number_format($r['revenue'], 2) : '—' ?>
                            </td>
                        </tr>
                    <?php endforeach ?>
                    <?php if (empty($rows)): ?>
                        <tr><td colspan="8" class="text-center text-muted py-4">Нет данных за выбранный период</td></tr>
                    <?php else: ?>
                        <tr class="table-secondary fw-bold">
                            <td>Итого</td>
                            <td class="text-center"><?= number_format($totals['clicks']) ?></td>
                            <td class="text-center"><?= $totals['fd'] ?: '—' ?></td>
                            <td class="text-center"><?= $totals['reg'] ?: '—' ?></td>
                            <td class="text-center"><?= $totals['anydep'] ?: '—' ?></td>
                            <td class="text-center"><?= $totals['total'] ?: '—' ?></td>
                            <td class="text-center">
                                <?php if ($totals['clicks'] > 0 && $totals['total'] > 0): ?>
                                    <?= round($totals['total'] / $totals['clicks'] * 100, 1) ?>%
                                <?php else: ?>—<?php endif ?>
                            </td>
                            <td class="text-center text-success">
                                <?= $totals['revenue'] > 0 ? '$' . number_format($totals['revenue'], 2) : '—' ?>
                            </td>
                        </tr>
                    <?php endif ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <!-- Лог конверсий -->
    <?php if (!empty($recent_rows)): ?>
    <div class="card shadow-sm mb-4">
        <div class="card-header fw-semibold">Лог конверсий (последние 100)</div>
        <div class="card-body p-0">
            <div class="table-responsive">
                <table class="table table-sm mb-0" style="font-size:.83rem">
                    <thead class="table-light">
                        <tr>
                            <th>Время</th>
                            <th>Бренд</th>
                            <th>Событие</th>
                            <th>Payout</th>
                            <th>Country</th>
                            <th>SubID</th>
                            <th>MS_ID</th>
                            <th>Customer_ID</th>
                            <th>Dynamic</th>
                            <th>Dynamic2</th>
                            <th>TID</th>
                            <th>Dep Sum</th>
                        </tr>
                    </thead>
                    <tbody>
                    <?php foreach ($recent_rows as $r):
                        $event_colors = ['fd'=>'success','reg'=>'primary','anydep'=>'info'];
                        $ec = $event_colors[$r['event_type']] ?? 'secondary';
                    ?>
                        <tr>
                            <td class="text-muted"><?= h(substr($r['created_at'],0,16)) ?></td>
                            <td><?= h($r['brand_name'] ?? '—') ?></td>
                            <td><span class="badge bg-<?= $ec ?>"><?= h(strtoupper($r['event_type'])) ?></span></td>
                            <td><?= $r['payout'] > 0 ? '<span class="text-success">$'.number_format($r['payout'],2).'</span>' : '—' ?></td>
                            <td><?= $r['country'] ? h(strtoupper($r['country'])) : '—' ?></td>
                            <td class="font-monospace" style="font-size:.75rem"><?= h($r['subid']) ?></td>
                            <td><?= h($r['ms_id']) ?: '—' ?></td>
                            <td><?= h($r['customer_id']) ?: '—' ?></td>
                            <td><?= h($r['dynamic']) ?: '—' ?></td>
                            <td><?= h($r['dynamic2']) ?: '—' ?></td>
                            <td><?= h($r['tid']) ?: '—' ?></td>
                            <td><?= h($r['dep_sum']) ?: '—' ?></td>
                        </tr>
                    <?php endforeach ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    <?php endif ?>

</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>