<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit;
if (!function_exists('Mirai_referralIsEnabled') || !Mirai_referralIsEnabled()) {
    $userBaseUrl = \Typecho\Common::url('/user', $this->options->index);
    $this->response->redirect($userBaseUrl . '/overview');
    exit;
}

$uid = (int)$this->user->uid;
$db = \Typecho\Db::get();

$inviteCode = function_exists('Mirai_referralGetCode') ? Mirai_referralGetCode($uid) : (string)$uid;
$inviteLink = function_exists('Mirai_referralGetLink') ? Mirai_referralGetLink($uid) : '';
$inviteQrCodeUrl = '';

if (!empty($inviteLink) && function_exists('Mirai_qrcodeGenerate')) {
    try { $inviteQrCodeUrl = Mirai_qrcodeGenerate($inviteLink, 180); } catch (\Exception $e) {}
}

$commissionRate = function_exists('Mirai_referralCommissionRate') ? (float)(Mirai_referralCommissionRate() * 100) : 0;

$stats = ['total' => 0, 'rebate_withdrawable' => 0, 'rebate_total' => 0];
try {
    $orderTable = Mirai_pointsTable('mirai_pay_orders');
    if (Mirai_payTableExists($orderTable)) {
        $s = $db->fetchRow($db->query("SELECT COUNT(DISTINCT uid) AS total_invites, SUM(rebate_price) AS total_rebate, SUM(CASE WHEN rebate_status = 0 THEN rebate_price ELSE 0 END) AS withdrawable_rebate FROM {$orderTable} WHERE referrer_uid = {$uid} AND status = 'paid' AND rebate_price > 0"));
        if ($s) {
            $stats['total'] = (int)($s['total_invites'] ?? 0);
            $stats['rebate_withdrawable'] = (float)($s['withdrawable_rebate'] ?? 0);
            $stats['rebate_total'] = (float)($s['total_rebate'] ?? 0);
        }
    }
} catch (\Exception $e) {}

$recordsPage = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;
$recordsPageSize = 10;

if (function_exists('Mirai_referralGetRecords')) {
    $recordsData = Mirai_referralGetRecords($uid, $recordsPage, $recordsPageSize);
    $records = $recordsData['list'];
    $recordsTotal = $recordsData['total'];
    $invitedUids = [];
    foreach ($records as $r) {
        $invitedUids[] = (int)$r['uid'];
    }
    $userMap = Mirai_payAdminGetUsersMap($invitedUids);
} else {
    $records = [];
    $recordsTotal = 0;
    $userMap = [];
}

$security = \Widget\Security::alloc();
$token = $security->getToken('api');
?>
<div class="uc-page">
    <div class="uc-page-header">
        <h2 class="uc-page-title">推广中心</h2>
    </div>

    <div class="uc-stats-grid">
        <div class="uc-stat-card">
            <div class="uc-stat-label">累计邀请</div>
            <div class="uc-stat-value"><?php echo $stats['total']; ?></div>
        </div>
        <div class="uc-stat-card">
            <div class="uc-stat-label">可提现佣金</div>
            <div class="uc-stat-value uc-stat-warning">￥<?php echo number_format($stats['rebate_withdrawable'], 2); ?></div>
        </div>
        <div class="uc-stat-card">
            <div class="uc-stat-label">累计佣金</div>
            <div class="uc-stat-value uc-stat-primary">￥<?php echo number_format($stats['rebate_total'], 2); ?></div>
        </div>
    </div>

    <?php
    $referralDesc = '';
    if (function_exists('Mirai_opt')) {
        $_opts = Mirai_opt();
        $referralDesc = isset($_opts->referralDesc) ? trim((string)$_opts->referralDesc) : '';
    }
    if (!empty($referralDesc)):
    ?>
    <div class="uc-section-block">
        <div class="uc-referral-desc"><?php echo nl2br(htmlspecialchars($referralDesc, ENT_QUOTES, 'UTF-8')); ?></div>
    </div>
    <?php endif; ?>

    <div class="uc-section-block">
        <h3 class="uc-section-title">邀请链接</h3>
        <div class="uc-invite-box">
            <div class="uc-invite-code-row">
                <label class="uc-label-sm">我的邀请码</label>
                <div class="uc-input-group">
                    <input type="text" id="invite_code_input" value="<?php echo htmlspecialchars($inviteCode, ENT_QUOTES, 'UTF-8'); ?>" readonly class="uc-input">
                    <button type="button" onclick="copyInviteField('invite_code_input')" class="uc-btn uc-btn-outline">复制</button>
                </div>
            </div>
            <div class="uc-invite-link-row">
                <label class="uc-label-sm">邀请链接（佣金比例 <?php echo $commissionRate; ?>%）</label>
                <div class="uc-input-group">
                    <input type="text" id="invite_link_input" value="<?php echo htmlspecialchars($inviteLink, ENT_QUOTES, 'UTF-8'); ?>" readonly class="uc-input">
                    <button type="button" onclick="copyInviteField('invite_link_input')" class="uc-btn uc-btn-outline">复制</button>
                </div>
            </div>
            <?php if (!empty($inviteQrCodeUrl)): ?>
            <div class="uc-qrcode-display">
                <img src="<?php echo htmlspecialchars($inviteQrCodeUrl, ENT_QUOTES, 'UTF-8'); ?>" alt="邀请二维码" width="150" height="150">
                <p>扫码即可通过您的专属链接访问网站并注册</p>
            </div>
            <?php endif; ?>
        </div>
    </div>

    <div class="uc-section-block">
        <h3 class="uc-section-title">邀请记录</h3>
        <div class="uc-list">
            <?php if (empty($records)): ?>
                <div class="uc-empty"><img src="<?php $this->options->themeUrl('assets/images/no.svg'); ?>" alt="暂无邀请记录">暂无邀请记录</div>
            <?php else: ?>
                <?php foreach ($records as $record): ?>
                    <?php
                    $bindType = isset($record['bind_type']) ? $record['bind_type'] : 'register';
                    $bindLabel = $bindType === 'register' ? '注册绑定' : '会话绑定';
                    $invitedUser = isset($userMap[(int)$record['uid']]) ? $userMap[(int)$record['uid']] : null;
                    $invitedName = $invitedUser ? ($invitedUser['screenName'] ?: $invitedUser['name']) : '用户' . (int)$record['uid'];
                    ?>
                    <div class="uc-list-item">
                        <div class="uc-item-body">
                            <div class="uc-item-title">
                                <?php echo htmlspecialchars($invitedName); ?>
                                <span class="uc-tag uc-tag-success"><?php echo $bindLabel; ?></span>
                            </div>
                            <div class="uc-item-meta">
                                <span><i class="ri-time-line"></i> <?php echo !empty($record['created']) ? (new \Typecho\Date((int)$record['created']))->format('Y-m-d H:i') : '-'; ?></span>
                            </div>
                        </div>
                    </div>
                <?php endforeach; ?>
                <?php if ($recordsTotal > $recordsPageSize): ?>
                    <?php
                    $rTotalPages = ceil($recordsTotal / $recordsPageSize);
                    echo Mirai_customPagination($recordsPage, $rTotalPages, function($p) {
                        return \Typecho\Common::url('/user/referral?page=' . $p, \Widget::widget('Widget_Options')->index);
                    });
                    ?>
                <?php endif; ?>
            <?php endif; ?>
        </div>
    </div>
</div>
