40069-vm/wallet.php
2026-05-25 13:11:32 +00:00

170 lines
7.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
require_once __DIR__ . '/app.php';
$user = current_user();
$previewMode = !$user;
$wallet = $user
? wallet_snapshot((int) $user['id'])
: ['available_balance' => 5560.25, 'frozen_balance' => 120.00];
$stats = $user
? get_dashboard_stats((int) $user['id'])
: [
'available_balance' => 5560.25,
'frozen_balance' => 120.00,
'total_balance' => 5680.25,
'today_earnings' => 1000.00,
'month_earnings' => 18560.20,
'today_tasks' => 30,
'active_orders' => 3,
'completed_orders' => 12,
];
$logs = $user ? get_wallet_logs((int) $user['id'], 8) : [
['entry_type' => 'task_credit', 'amount' => 1000.00, 'frozen_amount' => 0.00, 'note' => '任务佣金到账', 'created_at' => gmdate('Y-m-d H:i:s')],
['entry_type' => 'task_reject', 'amount' => 0.00, 'frozen_amount' => -50.00, 'note' => '未通过审核,释放冻结金额', 'created_at' => gmdate('Y-m-d H:i:s', time() - 3600)],
['entry_type' => 'task_freeze', 'amount' => 0.00, 'frozen_amount' => 100.00, 'note' => '任务提交后冻结佣金', 'created_at' => gmdate('Y-m-d H:i:s', time() - 7200)],
];
$available = (float) $wallet['available_balance'];
$fee = $available > 0 ? min(1.00, $available) : 1.00;
$estimated = max(0, $available - $fee);
$quickActions = [
['label' => '充值', 'icon' => 'deposit', 'href' => '#deposit-panel'],
['label' => '提现', 'icon' => 'withdraw', 'href' => '#withdraw-panel'],
['label' => '转账', 'icon' => 'swap', 'href' => '#transfer-panel'],
['label' => '记录', 'icon' => 'history', 'href' => '#history-panel'],
];
render_layout_start('钱包', '钱包页,展示可用余额、冻结余额、提现卡片与资金流水记录。', 'wallet');
?>
<section class="app-page-section">
<article class="app-card gradient-card hero-card">
<div class="tiny-eyebrow">我的钱包</div>
<h1 class="app-hero-title compact-title">资金总览</h1>
<div class="balance-card mt-3">
<div class="mini-label">可用余额USDT</div>
<div class="balance-value"><?= h(number_format((float) $wallet['available_balance'], 2)) ?></div>
<div class="balance-sub">总余额 <?= h(number_format((float) $stats['total_balance'], 2)) ?> · 冻结 <?= h(number_format((float) $wallet['frozen_balance'], 2)) ?></div>
<div class="quick-action-grid mt-3">
<?php foreach ($quickActions as $action): ?>
<a class="quick-action" href="<?= h($action['href']) ?>">
<span class="quick-action-icon"><?= app_icon_svg((string) $action['icon']) ?></span>
<span class="quick-action-label"><?= h((string) $action['label']) ?></span>
</a>
<?php endforeach; ?>
</div>
</div>
<?php if ($previewMode): ?>
<div class="app-inline-note mt-3">当前是参考图风格预览,登录后这里会显示你的真实资金流水。</div>
<?php endif; ?>
</article>
</section>
<section class="app-page-section">
<div class="mini-stat-grid three-cols">
<article class="app-card stat-card">
<div class="mini-label">可用余额</div>
<div class="stat-value"><?= h(number_format((float) $wallet['available_balance'], 2)) ?></div>
<div class="stat-meta">USDT</div>
</article>
<article class="app-card stat-card">
<div class="mini-label">冻结余额</div>
<div class="stat-value"><?= h(number_format((float) $wallet['frozen_balance'], 2)) ?></div>
<div class="stat-meta">等待审核</div>
</article>
<article class="app-card stat-card">
<div class="mini-label">累计入账</div>
<div class="stat-value"><?= h(number_format((float) $stats['month_earnings'], 2)) ?></div>
<div class="stat-meta">本月收益</div>
</article>
</div>
</section>
<section class="app-page-section" id="deposit-panel">
<article class="app-card">
<div class="section-heading-app mb-3">
<div class="tiny-eyebrow">充值</div>
<h2 class="app-section-title">USDT 充值说明</h2>
</div>
<div class="detail-meta-grid">
<div>
<div class="mini-label">网络</div>
<div class="detail-mini-value">TRC20</div>
</div>
<div>
<div class="mini-label">到账方式</div>
<div class="detail-mini-value">人工审核</div>
</div>
<div>
<div class="mini-label">处理时间</div>
<div class="detail-mini-value">5 - 15 分钟</div>
</div>
</div>
<div class="app-inline-note mt-3">第一版先保留参考图中的充值入口样式,下一步我可以继续帮你接“充值 / 提现 → 客服工单 / 内置 IM”。</div>
</article>
</section>
<section class="app-page-section" id="withdraw-panel">
<article class="app-card">
<div class="section-heading-app mb-3">
<div class="tiny-eyebrow">提现</div>
<h2 class="app-section-title">提现预览</h2>
</div>
<div class="withdraw-card-shell">
<div class="wallet-field-row">
<span>提现地址</span>
<span>USDT-TRC20</span>
</div>
<div class="wallet-field-input">请输入 USDT 钱包地址</div>
<div class="wallet-field-row mt-3">
<span>提现金额</span>
<span>全部</span>
</div>
<div class="wallet-field-input"><?= h(number_format($available > 0 ? $available : 1000, 2)) ?> USDT</div>
<div class="wallet-summary-list mt-3">
<div><span>手续费</span><strong><?= h(number_format($fee, 2)) ?> USDT</strong></div>
<div><span>实际到账</span><strong><?= h(number_format($estimated, 2)) ?> USDT</strong></div>
</div>
<a class="btn btn-gradient w-100 mt-3" href="profile.php#support-panel">联系客服提现</a>
</div>
</article>
</section>
<section class="app-page-section" id="transfer-panel">
<article class="app-card">
<div class="section-heading-app mb-3">
<div class="tiny-eyebrow">转账</div>
<h2 class="app-section-title">账户间转账</h2>
</div>
<div class="app-inline-note">这一块我先按照你发的设计图放了入口和卡片结构。下一步可以继续接“转账表单 + 审核记录 + 钱包扣减逻辑”。</div>
</article>
</section>
<section class="app-page-section" id="history-panel">
<article class="app-card">
<div class="section-heading-app mb-3">
<div class="tiny-eyebrow">资金流水</div>
<h2 class="app-section-title">最近记录</h2>
</div>
<?php if ($logs): ?>
<div class="app-list-stack">
<?php foreach ($logs as $log): ?>
<?php
$delta = (float) $log['amount'] + (float) $log['frozen_amount'];
$deltaClass = $delta > 0 ? 'is-positive' : ($delta < 0 ? 'is-negative' : '');
?>
<div class="app-list-item static-row">
<span>
<span class="list-title-strong"><?= h(wallet_entry_label((string) $log['entry_type'])) ?></span>
<span class="list-meta-line"><?= h((string) $log['note']) ?> · <?= h(format_datetime((string) $log['created_at'])) ?></span>
</span>
<span class="ledger-value-inline <?= h($deltaClass) ?>"><?= h(format_delta($delta)) ?> USDT</span>
</div>
<?php endforeach; ?>
</div>
<?php else: ?>
<div class="empty-tip">目前还没有资金流水。先完成一次任务提交与审核,就会在这里看到变化。</div>
<?php endif; ?>
</article>
</section>
<?php render_layout_end(); ?>