<?php
@ini_set('memory_limit', '256M');
require_once __DIR__ . '/../includes/init.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/commission_helper.php';

// 特殊处理：如果是管理员伪装登录，尝试从 URL 参数或管理员 session 恢复用户 session
// 这需要在 checkUserAuth() 之前执行，因为此时 init.php 已经启动了用户 session
if (!isset($_SESSION['user_id'])) {
    $admin_session_name = defined('SESSION_ADMIN_NAME') && SESSION_ADMIN_NAME ? (string)SESSION_ADMIN_NAME : 'ggai_admin_session';
    $recovered = false;
    
    // 方法1：从 URL ?_sid=imp_… 恢复（令牌含下划线；优先 fast 读，再 dual_read）
    if (isset($_GET['_sid']) && preg_match('/^[a-zA-Z0-9,_-]{16,128}$/', (string) $_GET['_sid'])) {
        $target_session_id = (string) $_GET['_sid'];
        $session_data = null;
        if (strpos($target_session_id, 'imp_') === 0 && function_exists('dual_read_impersonate_token_fast')) {
            $session_data = dual_read_impersonate_token_fast($target_session_id);
        }
        if (!is_array($session_data) && function_exists('dual_read_session')) {
            $session_data = dual_read_session($target_session_id);
        }

        if (is_array($session_data) &&
            !empty($session_data['impersonated']) &&
            !empty($session_data['user_id'])) {

            // 不要 session_id(imp_*)：imp 是令牌不是 PHP session id；写入当前会员 session 即可
            $_SESSION['user_id'] = (int) $session_data['user_id'];
            $_SESSION['username'] = (string) ($session_data['username'] ?? '');
            $_SESSION['role'] = (string) ($session_data['role'] ?? 'user');
            $_SESSION['last_activity'] = time();
            $_SESSION['login_time'] = (int) ($session_data['login_time'] ?? time());
            $_SESSION['impersonated'] = true;
            $_SESSION['impersonate_token'] = $target_session_id;
            if (isset($session_data['admin_impersonate'])) {
                $_SESSION['admin_impersonate'] = $session_data['admin_impersonate'];
            }
            if (function_exists('ggai_set_impersonate_resume_cookie')) {
                ggai_set_impersonate_resume_cookie($target_session_id);
            }

            $recovered = true;
            error_log('user/index.php: Recovered from URL _sid token, user_id=' . $_SESSION['user_id'] . ', token=' . substr($target_session_id, 0, 20));
        }
    }
    
    // 方法2：从管理员 session cookie 恢复（如果方法1失败）
    if (!$recovered && isset($_COOKIE[$admin_session_name])) {
        $admin_session_id = $_COOKIE[$admin_session_name];
        
        if (function_exists('dual_read_session')) {
            $admin_session_data = dual_read_session($admin_session_id);
            
            if (is_array($admin_session_data) && 
                isset($admin_session_data['impersonated']) && 
                $admin_session_data['impersonated'] && 
                isset($admin_session_data['user_id'])) {
                
                // 关闭当前 session，切换到管理员 session_id
                session_write_close();
                $user_session_name = defined('SESSION_NAME') && SESSION_NAME ? (string)SESSION_NAME : 'ggai_session';
                session_name($user_session_name);
                session_id($admin_session_id);
                session_start();
                
                // 恢复数据
                $_SESSION['user_id'] = $admin_session_data['user_id'];
                $_SESSION['username'] = $admin_session_data['username'] ?? '';
                $_SESSION['role'] = $admin_session_data['role'] ?? 'user';
                $_SESSION['last_activity'] = time();
                $_SESSION['login_time'] = $admin_session_data['login_time'] ?? time();
                $_SESSION['impersonated'] = true;
                if (isset($admin_session_data['admin_impersonate'])) {
                    $_SESSION['admin_impersonate'] = $admin_session_data['admin_impersonate'];
                }
                
                // 设置用户 session cookie
                $cookieParams = session_get_cookie_params();
                $cookieDomain = $cookieParams['domain'] ?: '';
                if (empty($cookieDomain) && defined('SESSION_DOMAIN') && SESSION_DOMAIN !== '') {
                    $cookieDomain = SESSION_DOMAIN;
                }
                setcookie($user_session_name, $admin_session_id, [
                    'expires' => time() + (defined('SESSION_LIFETIME') ? SESSION_LIFETIME : 86400),
                    'path' => '/',
                    'domain' => $cookieDomain,
                    'secure' => $cookieParams['secure'],
                    'httponly' => $cookieParams['httponly'],
                    'samesite' => 'Lax'
                ]);
                
                $recovered = true;
                error_log("user/index.php: Recovered from admin session cookie, user_id=" . $_SESSION['user_id'] . ", session_id=" . $admin_session_id);
            }
        }
    }
    
    // 如果恢复成功，重定向到干净的 URL（移除 _sid 参数）
    if ($recovered && isset($_GET['_sid'])) {
        header('Location: /user/index.php');
        exit;
    }
}

// 检查用户登录状态（必须在访问SESSION之前）
checkUserAuth();

if (!function_exists('getAllSubIds')) {
    /**
     * 递归获取所有下级用户ID
     * @param array $all_users 用户数组（每项需有id和referrer_id）
     * @param int $parent_id 当前父ID
     * @return array
     */
    function getAllSubIds($all_users, $parent_id) {
        $subs = [];
        foreach ($all_users as $u) {
            if ($u['referrer_id'] == $parent_id) {
                $subs[] = $u['id'];
                $subs = array_merge($subs, getAllSubIds($all_users, $u['id']));
            }
        }
        return $subs;
    }
}

$user_id = $_SESSION['user_id'];

// 获取新用户查看权限设置
$new_user_view_hours = 1; // 默认1小时
try {
    $stmt = $pdo->prepare("SELECT value FROM system_settings WHERE key_name = 'new_user_view_hours'");
    $stmt->execute();
    $setting_value = $stmt->fetchColumn();
    if (is_numeric($setting_value)) {
        $new_user_view_hours = intval($setting_value);
    }
} catch (Exception $e) {
    // 如果获取失败，使用默认值
}

// === 检测未读重要消息 ===
$stmt = $pdo->prepare("SELECT id, title, content FROM user_messages WHERE to_user_id=? AND is_read=0 AND priority='important' ORDER BY created_at DESC LIMIT 1");
$stmt->execute([$user_id]);
$important_popup = $stmt->fetch(PDO::FETCH_ASSOC);

// 查询用户核心数据（严格按接口文档字段）
$stmt = $pdo->prepare("SELECT id, username, nickname, referral_code, level, role_id, points, balance FROM users WHERE id = ?");
$stmt->execute([$user_id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

// 角色/等级映射
$role_id = isset($user['role_id']) ? (int)$user['role_id'] : 0;
$role_map = [
    0 => '普通用户',
    1 => 'VIP1',
    2 => 'VIP2',
    3 => 'VIP3',
    4 => 'VIP4',
    5 => 'VIP5',
    6 => 'VIP6',
    7 => 'VIP7',
    8 => __t('role_team_leader', '团队长'),
    9 => '黄金运营合伙人',
    10 => '钻石运营合伙人',
    11 => '金钻运营合伙人',
    91 => '技术部',
    99 => '管理员'
];
if (($role_id >= 13 && $role_id <= 38) || $role_id == 39) {
    $role_name = __t('role_team_leader', '团队长');
} else {
    $role_name = $role_map[$role_id] ?? __t('role_normal_user', '普通用户');
}
// 统一按当前语言转换角色名称（不修改原始 role_id 与业务逻辑）
$role_name = translate_role_label($role_name);

// 查询团队人数
$stmt = $pdo->prepare("SELECT COUNT(*) FROM users WHERE referrer_id = ?");
$stmt->execute([$user_id]);
$team_count = $stmt->fetchColumn();

// 查询最近充值记录（获取所有记录，前端控制显示）
$stmt = $pdo->prepare("SELECT amount, created_at FROM recharge_orders WHERE user_id = ? AND status='confirmed' ORDER BY created_at DESC");
$stmt->execute([$user_id]);
$deposits = $stmt->fetchAll(PDO::FETCH_ASSOC);
$deposits_total_count = count($deposits);

// 查询用户总充值金额
$stmt = $pdo->prepare("SELECT SUM(amount) as total_recharge FROM recharge_orders WHERE user_id = ? AND status='confirmed'");
$stmt->execute([$user_id]);
$total_recharge = floatval($stmt->fetchColumn());

// ====== 统一API统计逻辑 ======
// 一次性查出所有用户和业绩
$stmt = $pdo->query("SELECT id, username, nickname, phone, created_at, level, referrer_id, referral_code FROM users");
$all_users = $stmt->fetchAll(PDO::FETCH_ASSOC);
$user_map = [];
foreach ($all_users as $u) {
    $user_map[$u['id']] = $u;
}
// 查所有充值业绩
$stmt = $pdo->query("SELECT user_id, SUM(amount) as total FROM recharge_orders WHERE status='confirmed' GROUP BY user_id");
$all_performance = $stmt->fetchAll(PDO::FETCH_ASSOC);
$performance_map = [];
foreach ($all_performance as $p) {
    $performance_map[$p['user_id']] = $p['total'];
}

// 递归获取所有下级成员（带层级）
function get_team_members_fast($parent_id, $user_map, $performance_map, &$all_users, $level = 1, $parent_name = '', &$visited = []) {
    $members = [];
    foreach ($all_users as $u) {
        if ($u['referrer_id'] == $parent_id && !in_array($u['id'], $visited)) {
            $visited[] = $u['id'];
            $performance = isset($performance_map[$u['id']]) ? $performance_map[$u['id']] : 0;
            $members[] = [
                'id' => $u['id'],
                'username' => $u['username'],
                'nickname' => $u['nickname'],
                'phone' => $u['phone'],
                'created_at' => $u['created_at'],
                'level' => $u['level'],
                'performance' => $performance,
                'referrer_id' => $u['referrer_id'],
                'referrer_name' => $parent_name,
                'tree_level' => $level
            ];
            $members = array_merge($members, get_team_members_fast($u['id'], $user_map, $performance_map, $all_users, $level + 1, $u['username'], $visited));
        }
    }
    return $members;
}
$visited = [];
$team_members = get_team_members_fast($user_id, $user_map, $performance_map, $all_users, 1, '', $visited);

// 权限控制：根据用户类型控制查看层级
$user_type = 'member'; // 默认普通会员
try {
    $stmt = $pdo->prepare("SELECT user_type FROM users WHERE id = ?");
    $stmt->execute([$user_id]);
    $user_type = $stmt->fetchColumn() ?: 'member';
} catch (Throwable $e) {
    // 如果user_type字段不存在，使用role_id作为备选方案
    $is_team_leader = ($role_id >= 13 && $role_id <= 39);
    $is_partner = ($role_id == 9 || $role_id == 10 || $role_id == 11);
    $user_type = ($is_team_leader || $is_partner) ? 'leader' : 'member';
}

// 根据用户类型过滤团队成员
if ($user_type === 'member') {
    // 普通会员：只能查看直接下级（1级）
    $team_members = array_filter($team_members, function($m){ return $m['tree_level'] == 1; });
} else {
    // 团队长和合伙人：可以查看所有层级（保持原有数据）
    // 不进行过滤，显示所有层级
}

// ====== 统一API统计：获取所有允许查看的用户ID ======
$allowed_user_ids = array_map(function($m){ return intval($m['id']); }, $team_members);
// 添加当前用户自己的ID
if (!in_array($user_id, $allowed_user_ids)) {
    $allowed_user_ids[] = $user_id;
}

// ====== 统一API统计：获取所有有效API数据 ======
$api_rows = [];
$total_api_count = 0; // 统一的总API数量统计

if (!empty($allowed_user_ids)) {
    // 构造命名占位与参数映射，避免HY093
    $named = [];
    $params_in = [];
    $idx = 1;
    foreach ($allowed_user_ids as $mid) {
        $key = ':uid' . $idx;
        $named[] = $key;
        $params_in[$key] = (int)$mid;
        $idx++;
    }
    $in_clause = implode(',', $named);

    // 1) 统计各成员 API 数（统一过滤条件：active + is_paid_client=1）
    $stmt = $pdo->prepare("SELECT user_id, COUNT(*) AS cnt FROM api_accounts WHERE user_id IN ($in_clause) AND status='active' AND is_paid_client=1 GROUP BY user_id");
    $stmt->execute($params_in);
    $api_count_map = [];
    foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) { 
        $api_count_map[intval($r['user_id'])] = intval($r['cnt']); 
        $total_api_count += intval($r['cnt']); // 累计总API数量
    }

    // 2) 读取各成员总充值金额
    $stmt = $pdo->prepare("SELECT user_id, SUM(amount) AS total_deposit FROM recharge_orders WHERE user_id IN ($in_clause) AND status='confirmed' GROUP BY user_id");
    $stmt->execute($params_in);
    $deposit_map = [];
    foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) { $deposit_map[intval($r['user_id'])] = floatval($r['total_deposit']); }

    // 3) 读取系统参数：power_deduct_ratio
    $power_deduct_ratio = 3;
    try {
        $r = $pdo->query("SELECT value FROM system_settings WHERE key_name='power_deduct_ratio'")->fetchColumn();
        if (is_numeric($r) && $r > 0) $power_deduct_ratio = floatval($r);
    } catch (Throwable $e) {}

    // 4) 汇总每个成员的浮动盈亏（使用power_logs.unrealized_pnl，与业务预警页保持一致）
    $unreal_map = [];
    foreach ($allowed_user_ids as $uid) {
        // 获取用户的所有活跃API账户
        $stmt = $pdo->prepare("SELECT id FROM api_accounts WHERE user_id = ? AND status = 'active' AND is_paid_client = 1");
        $stmt->execute([$uid]);
        $api_ids = $stmt->fetchAll(PDO::FETCH_COLUMN);
        
        $user_unrealized = 0;
        if (!empty($api_ids)) {
            foreach ($api_ids as $api_id) {
                $user_unrealized += get_api_latest_unrealized_pnl($pdo, $api_id);
            }
        }
        $unreal_map[$uid] = $user_unrealized;
    }

    // 5) 拉取 API 明细并关联交易所 / 策略（统一过滤条件：active + is_paid_client=1）
    $sql = "SELECT a.id AS api_id, a.user_id, a.exchange_id, a.strategy_id, a.equity, a.position_ratio, a.profit_loss, a.status,
                   a.pair_open_insight,
                   e.display_name AS ex_name, e.name AS ex_code,
                   s.name AS strategy_name, s.name_en AS strategy_name_en, s.default_leverage AS strategy_leverage
            FROM api_accounts a
            LEFT JOIN exchanges e ON e.id = a.exchange_id
            LEFT JOIN strategies s ON s.id = a.strategy_id
            WHERE a.user_id IN ($in_clause) AND a.status = 'active' AND a.is_paid_client = 1";
    $stmt = $pdo->prepare($sql);
    $stmt->execute($params_in);
    $api_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // 获取每个API的最新权益数据（从power_logs表）
    $equity_map = [];
    $api_equity_map = [];
    if (!empty($api_data)) {
        $api_ids = array_column($api_data, 'api_id');
        $api_ids_str = implode(',', $api_ids);
        // 只取每个 api 最新一条 power_logs，避免全历史 fetchAll 撑爆内存（登录会员 /user/ 500）
        $equity_sql = "SELECT pl.api_id, pl.equity, pl.available, pl.unrealized_pnl
            FROM power_logs pl
            INNER JOIN (
                SELECT api_id, MAX(interval_end) AS max_end
                FROM power_logs
                WHERE api_id IN ($api_ids_str)
                GROUP BY api_id
            ) latest ON latest.api_id = pl.api_id AND latest.max_end = pl.interval_end";
        $equity_stmt = $pdo->prepare($equity_sql);
        $equity_stmt->execute();
        $equity_data = $equity_stmt->fetchAll(PDO::FETCH_ASSOC);

        foreach ($equity_data as $row) {
            $aid = intval($row['api_id']);
            $candAbs = abs(floatval($row['unrealized_pnl']));
            $curAbs = isset($api_equity_map[$aid]) ? abs(floatval($api_equity_map[$aid]['unrealized_pnl'])) : -1;
            if (!isset($equity_map[$aid]) || $candAbs > $curAbs) {
                $equity_map[$aid] = floatval($row['equity']);
                $api_equity_map[$aid] = [
                    'equity' => floatval($row['equity']),
                    'available' => floatval($row['available']),
                    'unrealized_pnl' => floatval($row['unrealized_pnl'])
                ];
            }
        }
    }
    
    foreach ($api_data as $r) {
        $uid = intval($r['user_id']);
        $parent_id = intval($user_map[$uid]['referrer_id'] ?? 0);
        $parent_name = '';
        if ($parent_id && isset($user_map[$parent_id])) {
            $parent_name = $user_map[$parent_id]['nickname'] ?: $user_map[$parent_id]['username'];
        }
        $total_deposit = floatval($deposit_map[$uid] ?? 0);
        $unreal_sum = floatval($unreal_map[$uid] ?? 0);
        $float_power = intval(abs($unreal_sum) / max(1e-9,$power_deduct_ratio));
        
        // 获取用户基础算力（users.points），与业务预警页保持一致
        $stmt_points = $pdo->prepare("SELECT points FROM users WHERE id = ?");
        $stmt_points->execute([$uid]);
        $points_base = floatval($stmt_points->fetchColumn() ?: 0);
        
        // 使用与业务预警页相同的计算方式
        $realtime_power = ($unreal_sum < 0) ? ($points_base + $float_power) : ($points_base - $float_power);
        // 与业务预警页保持相同的精度（整数）
        $realtime_power = intval($realtime_power);
        // 根据语言选择策略名称：优先翻译到目标语言，失败则用英文，最后用中文
        $currentLang = defined('CURRENT_LANG') ? CURRENT_LANG : 'zh_cn';
        $strategy_name = $r['strategy_name'];
        
        if ($currentLang !== 'zh_cn' && $currentLang !== 'zh_tw') {
            // 对于英文：优先使用数据库中的英文版本
            if ($currentLang === 'en') {
                if (!empty($r['strategy_name_en'])) {
                    $strategy_name = $r['strategy_name_en'];
                } elseif (function_exists('translate_content')) {
                    // 如果没有英文版本，使用实时翻译并缓存
                    $translated = translate_content($r['strategy_name'], $currentLang, $pdo);
                    if (!empty($translated) && $translated !== $r['strategy_name']) {
                        $strategy_name = $translated;
                    }
                }
            } else {
                // 对于其他语言（如阿拉伯语）：优先翻译中文原文到目标语言
                if (function_exists('translate_content')) {
                    $translated = translate_content($r['strategy_name'], $currentLang, $pdo);
                    if (!empty($translated) && $translated !== $r['strategy_name']) {
                        $strategy_name = $translated;
                    } else {
                        // 翻译失败，回退到英文版本
                        if (!empty($r['strategy_name_en'])) {
                            $strategy_name = $r['strategy_name_en'];
                        }
                    }
                } else {
                    // 翻译函数不可用，尝试使用英文版本
                    if (!empty($r['strategy_name_en'])) {
                        $strategy_name = $r['strategy_name_en'];
                    }
                }
            }
        }

        $aidRow = intval($r['api_id']);
        $exIdRow = intval($r['exchange_id'] ?? 0);
        // 权益/浮亏：BA/OE/HY 优先 insight（与持仓页同源）；ONE 与无 insight 时回退 power_logs
        $rowEquity = floatval($equity_map[$aidRow] ?? $r['equity']);
        $rowUnreal = isset($api_equity_map[$aidRow])
            ? floatval($api_equity_map[$aidRow]['unrealized_pnl'])
            : floatval($r['profit_loss']);
        if ($exIdRow !== 7) {
            $insightRaw = $r['pair_open_insight'] ?? '';
            if (is_string($insightRaw) && $insightRaw !== '') {
                $insightArr = json_decode($insightRaw, true);
                if (is_array($insightArr)) {
                    if (isset($insightArr['equity']) && is_numeric($insightArr['equity']) && floatval($insightArr['equity']) > 0) {
                        $rowEquity = floatval($insightArr['equity']);
                    }
                    if (isset($insightArr['profit_loss']) && is_numeric($insightArr['profit_loss'])) {
                        $rowUnreal = floatval($insightArr['profit_loss']);
                    }
                }
            }
        }
        // 仓位：HY 用 api_accounts.position_ratio（marginUsed）；其它所可用 (eq-av)
        if ($exIdRow === 8) {
            $rowPosRatio = floatval($r['position_ratio'] ?? 0);
        } elseif (isset($api_equity_map[$aidRow])) {
            $em = $api_equity_map[$aidRow];
            $rowPosRatio = (floatval($em['equity']) - floatval($em['available'])) / max(floatval($em['equity']), 0.01) * 100.0;
        } else {
            $rowPosRatio = floatval($r['position_ratio'] ?? 0);
        }
        $api_rows[] = [
            'user_id' => $uid,
            'username' => $user_map[$uid]['username'] ?? '',
            'parent_id' => $parent_id,
            'parent_name' => $parent_name,
            'api_id' => $aidRow,
            'exchange' => ($r['ex_name'] ?: $r['ex_code'] ?: ''),
            'strategy' => ($strategy_name ?: ''),
            'strategy_leverage' => intval($r['strategy_leverage'] ?: 1),
            'equity' => $rowEquity,
            'position_ratio' => $rowPosRatio,
            'unrealized' => $rowUnreal,
            'status' => (string)$r['status'],
            'api_count' => intval($api_count_map[$uid] ?? 0),
            'total_deposit' => $total_deposit,
            'realtime_power' => $realtime_power,
        ];
    }
}

// ===== 近期禁用API记录（只显示自己及名下的API，最近10条） =====
$recent_disabled_apis = [];
$recent_recovered_api_times = [];

if (!empty($allowed_user_ids)) {
    // 构造用户ID IN子句
    $uid_named = [];
    $uid_params = [];
    $idx = 1;
    foreach ($allowed_user_ids as $mid) {
        $key = ':duid' . $idx;
        $uid_named[] = $key;
        $uid_params[$key] = (int)$mid;
        $idx++;
    }
    $uid_in_clause = implode(',', $uid_named);

    // 1) 从 api_change_logs 表查询禁用记录（只取自己及名下，并限制为active->inactive或明确disable）
    $sql_change_logs = "
        SELECT acl.*, u.username, u.nickname, a.exchange_id, a.audit_remark
        FROM api_change_logs acl
        LEFT JOIN users u ON acl.user_id = u.id
        LEFT JOIN api_accounts a ON acl.api_id = a.id
        WHERE (acl.change_type = 'disable'
               OR (acl.old_data LIKE '%\"status\"%' AND acl.new_data LIKE '%\"status\"%')
               OR (acl.old_data LIKE '%\"api_status\"%' AND acl.new_data LIKE '%\"api_status\"%'))
          AND acl.user_id IN ($uid_in_clause)
        ORDER BY acl.created_at DESC
        LIMIT 100";
    try {
        $stmt_change = $pdo->prepare($sql_change_logs);
        $stmt_change->execute($uid_params);
        $change_logs = $stmt_change->fetchAll(PDO::FETCH_ASSOC);

        foreach ($change_logs as $row) {
            $old_data = json_decode($row['old_data'] ?? '{}', true);
            $new_data = json_decode($row['new_data'] ?? '{}', true);
            $old_status = $old_data['status'] ?? $old_data['api_status'] ?? '';
            $new_status = $new_data['status'] ?? $new_data['api_status'] ?? '';

            // 只保留从 active 变为 inactive 的禁用记录
            $is_active_to_inactive = false;
            if ($row['change_type'] === 'disable') {
                $is_active_to_inactive = true;
            } elseif ($old_status !== '' && $new_status !== '') {
                if ($old_status === 'active' && $new_status === 'inactive') {
                    $is_active_to_inactive = true;
                }
            }
            if (!$is_active_to_inactive) {
                continue;
            }

            $api_id = intval($row['api_id']);

            // 获取交易所名称
            $exchange_name = '-';
            if ($api_id > 0) {
                $stmt_ex = $pdo->prepare("SELECT e.display_name FROM api_accounts a LEFT JOIN exchanges e ON a.exchange_id = e.id WHERE a.id = ?");
                $stmt_ex->execute([$api_id]);
                $ex_info = $stmt_ex->fetch(PDO::FETCH_ASSOC);
                if ($ex_info) {
                    $exchange_name = $ex_info['display_name'] ?? '-';
                }
            }

            // 禁用原因（简化版，与后台逻辑保持一致）
            $disable_reason = ['type' => 'user', 'text' => __t('user_api_disable_reason_user', '用户自己禁用'), 'color' => 'info'];
            // 系统欠费停机
            if ($old_status === 'overdue') {
                $disable_reason = ['type' => 'system_overdue', 'text' => '系统欠费停机', 'color' => 'danger'];
            }

            $recent_disabled_apis[] = [
                'api_id'        => $api_id,
                'user_id'       => $row['user_id'] ?? 0,
                'username'      => $row['username'] ?? '',
                'nickname'      => $row['nickname'] ?? '',
                'exchange_name' => $exchange_name,
                'created_at'    => $row['created_at'],
                'old_status'    => $old_status,
                'new_status'    => $new_status,
                'source'        => 'api_change_logs',
                'remark'        => $row['remark'] ?? '',
                'review_remark' => $row['review_remark'] ?? '',
                'audit_remark'  => $row['audit_remark'] ?? '',
                'disable_reason'=> $disable_reason,
            ];
        }
    } catch (Exception $e) {
        // 出错时不影响页面其他内容
    }

    // 2) 从 system_logs 表查询禁用记录（只取自己及名下）
    $sql_system_logs = "
        SELECT sl.*, u.username, u.nickname
        FROM system_logs sl
        LEFT JOIN users u ON sl.user_id = u.id
        WHERE ((sl.log_type = 'api_operation' AND sl.action = '禁用API')
               OR (sl.action LIKE '%禁用%' AND sl.action LIKE '%API%'))
          AND sl.user_id IN ($uid_in_clause)
        ORDER BY sl.created_at DESC
        LIMIT 50";
    try {
        $stmt_sys = $pdo->prepare($sql_system_logs);
        $stmt_sys->execute($uid_params);
        $sys_logs = $stmt_sys->fetchAll(PDO::FETCH_ASSOC);

        foreach ($sys_logs as $row) {
            $api_id = 0;
            if (preg_match('/API ID:\s*(\d+)/', $row['details'] ?? '', $m)) {
                $api_id = intval($m[1]);
            }

            // 获取交易所名称
            $exchange_name = '-';
            if ($api_id > 0) {
                $stmt_ex = $pdo->prepare("SELECT e.display_name FROM api_accounts a LEFT JOIN exchanges e ON a.exchange_id = e.id WHERE a.id = ?");
                $stmt_ex->execute([$api_id]);
                $ex_info = $stmt_ex->fetch(PDO::FETCH_ASSOC);
                if ($ex_info) {
                    $exchange_name = $ex_info['display_name'] ?? '-';
                }
            }

            // 从 details 中提取原状态 / 新状态
            $old_status_from_details = '';
            $new_status_from_details = '';
            if (preg_match('/原状态:\s*(\w+)/', $row['details'] ?? '', $m2)) {
                $old_status_from_details = $m2[1];
            }
            if (preg_match('/新状态:\s*(\w+)/', $row['details'] ?? '', $m3)) {
                $new_status_from_details = $m3[1];
            }

            // 禁用原因（简化版）
            $reason = ['type' => 'user', 'text' => __t('user_api_disable_reason_user', '用户自己禁用'), 'color' => 'info'];
            if ($old_status_from_details === 'overdue') {
                $reason = ['type' => 'system_overdue', 'text' => __t('user_api_disable_reason_system_overdue', '系统欠费停机'), 'color' => 'danger'];
            } elseif ($row['action'] === '管理员禁用API') {
                $reason = ['type' => 'admin', 'text' => __t('user_api_disable_reason_admin', '管理员禁用'), 'color' => 'warning'];
            }

            $recent_disabled_apis[] = [
                'api_id'        => $api_id > 0 ? $api_id : '-',
                'user_id'       => $row['user_id'] ?? 0,
                'username'      => $row['username'] ?? '',
                'nickname'      => $row['nickname'] ?? '',
                'exchange_name' => $exchange_name,
                'created_at'    => $row['created_at'],
                'old_status'    => $old_status_from_details,
                'new_status'    => $new_status_from_details,
                'source'        => 'system_logs',
                'log_type'      => $row['log_type'] ?? '',
                'action'        => $row['action'] ?? '',
                'details'       => $row['details'] ?? '',
                'remark'        => '',
                'review_remark' => '',
                'audit_remark'  => '',
                'disable_reason'=> $reason,
            ];
        }
    } catch (Exception $e) {
        // 忽略错误
    }

    // 按时间倒序排序
    if (!empty($recent_disabled_apis)) {
        usort($recent_disabled_apis, function($a, $b) {
            return strtotime($b['created_at']) - strtotime($a['created_at']);
        });

        // 去重（同一API同一时间只保留一条）
        $unique = [];
        $seen = [];
        foreach ($recent_disabled_apis as $item) {
            $key = ($item['api_id'] ?? '') . '_' . ($item['created_at'] ?? '');
            if (!in_array($key, $seen, true)) {
                $seen[] = $key;
                $unique[] = $item;
            }
        }
        // 只保留最近10条
        $recent_disabled_apis = array_slice($unique, 0, 10);

        // 预查询恢复记录，用于标记“已恢复”
        $sql_recovered = "
            SELECT acl.api_id, acl.created_at, acl.old_data, acl.new_data
            FROM api_change_logs acl
            WHERE (acl.old_data LIKE '%\"status\"%' OR acl.old_data LIKE '%\"api_status\"%')
              AND (acl.new_data LIKE '%\"status\"%' OR acl.new_data LIKE '%\"api_status\"%')
            ORDER BY acl.created_at DESC";
        try {
            $stmt_rec = $pdo->prepare($sql_recovered);
            $stmt_rec->execute();
            $rec_logs = $stmt_rec->fetchAll(PDO::FETCH_ASSOC);
            foreach ($rec_logs as $r_row) {
                $old_data = json_decode($r_row['old_data'] ?? '{}', true);
                $new_data = json_decode($r_row['new_data'] ?? '{}', true);
                $old_status = $old_data['status'] ?? $old_data['api_status'] ?? '';
                $new_status = $new_data['status'] ?? $new_data['api_status'] ?? '';
                if ($old_status !== '' && $new_status !== '' &&
                    in_array($old_status, ['inactive', 'overdue', 'rejected'], true) &&
                    $new_status === 'active') {
                    $api_id_check = intval($r_row['api_id']);
                    if ($api_id_check > 0) {
                        if (!isset($recent_recovered_api_times[$api_id_check]) ||
                            strtotime($r_row['created_at']) > strtotime($recent_recovered_api_times[$api_id_check])) {
                            $recent_recovered_api_times[$api_id_check] = $r_row['created_at'];
                        }
                    }
                }
            }
        } catch (Exception $e) {
            // 忽略
        }
    }
}

// 排序：先按API状态（运行中优先），再按APIID从小到大
usort($api_rows, function($a, $b) {
    // 状态优先级：active > pending > paused > error > inactive/stopped
    $status_priority = [
        'active' => 1,
        'pending' => 2, 
        'paused' => 3,
        'error' => 4,
        'inactive' => 5,
        'stopped' => 5
    ];
    $a_priority = $status_priority[$a['status']] ?? 6;
    $b_priority = $status_priority[$b['status']] ?? 6;
    
    if ($a_priority != $b_priority) {
        return $a_priority - $b_priority;
    }
    
    // 状态相同时按APIID从小到大
    return $a['api_id'] - $b['api_id'];
});

// 查询返佣余额（可返+冻结）
$stat = get_user_commission_stat($user_id);
$commission_can_withdraw = $stat['can_withdraw'];
$commission_withdrawn = $stat['withdrawn'];
$commission_frozen = $stat['frozen'];

// 实际打币的提现总额（财务口径）：与前台展示"已提"对齐
try {
    $stmt = $pdo->prepare("SELECT COALESCE(SUM(amount),0) FROM commission_withdrawals WHERE user_id=? AND status IN ('paid','success')");
    $stmt->execute([$user_id]);
    $commission_withdrawn_display = floatval($stmt->fetchColumn() ?: 0);
} catch (Throwable $e) {
    // 回退：如查询异常，使用原口径
    $commission_withdrawn_display = floatval($commission_withdrawn);
}

// 总额计算：使用实际提现金额
$commission_total = floatval($commission_withdrawn_display) + floatval($commission_frozen);
if ($commission_can_withdraw > 0) {
    $commission_total += floatval($commission_can_withdraw);
}

// 查询最近提现记录（获取所有记录，前端控制显示）
$stmt = $pdo->prepare("SELECT amount, status, created_at FROM commission_withdrawals WHERE user_id = ? ORDER BY created_at DESC");
$stmt->execute([$user_id]);
$withdraws = $stmt->fetchAll(PDO::FETCH_ASSOC);
$withdraws_total_count = count($withdraws);

function withdraw_status_label($status) {
    switch($status) {
        case 'pending':  return __t('cw_chain_status_pending', '待审核');
        case 'approved': return __t('cw_chain_status_approved', '已通过');
        case 'paid':     return __t('cw_chain_status_paid', '已打币');
        case 'success':  return __t('cw_chain_status_paid', '已打币');
        case 'failed':   return __t('cw_chain_status_rejected', '失败');
        case 'rejected': return __t('cw_chain_status_rejected', '已拒绝');
        default:         return $status;
    }
}

// 仅合伙人（黄金/钻石/金钻）显示团队长统计与分配
$show_team_leader_panel = in_array($user['role_id'], [9, 10, 11]);
$team_leaders = [];
$team_leader_stats = [];
if ($show_team_leader_panel) {
    // 获取所有用户（id, referrer_id, role_id, team_leader_code, nickname, username, partner_id, referral_code）
    $all_users = $pdo->query('SELECT id, referrer_id, role_id, team_leader_code, nickname, username, partner_id, referral_code FROM users')->fetchAll(PDO::FETCH_ASSOC);
    // 获取所有下级（无限级）
    $all_sub_ids = getAllSubIds($all_users, $user_id);
    // 查询所有团队长（13~38 或 39），并LEFT JOIN团队长返佣配置
    if (!empty($all_sub_ids)) {
        $placeholders = implode(',', array_fill(0, count($all_sub_ids), '?'));
        $sql = "SELECT u.id, u.username, u.nickname, u.role_id, u.team_leader_code, u.team_leader_commission, u.referral_code, ptc.commission_levels, ptc.level_rates_json, ptc.tl_bonus_rate, ptc.display_name FROM users u LEFT JOIN partner_team_leader_commission ptc ON ptc.team_leader_id = u.id AND ptc.partner_id = ? WHERE u.id IN ($placeholders) AND (u.role_id BETWEEN 13 AND 38 OR u.role_id=39)";
        $stmt = $pdo->prepare($sql);
        $params=array_merge([$user_id],$all_sub_ids);
        $stmt->execute($params);
        foreach($stmt->fetchAll(PDO::FETCH_ASSOC) as $tl) {
            $team_leaders[$tl['id']] = $tl;
        }
    }

    // 统计每个团队长的团队人数和业绩
    foreach ($team_leaders as $tl) {
        $sub_ids = getAllSubIds($all_users, $tl['id']);
        $team_count = count($sub_ids);
        // 统计业绩（充值总额）
        if ($team_count > 0) {
            $in = implode(',', array_map('intval', $sub_ids));
            $stmt = $pdo->prepare("SELECT SUM(amount) FROM recharge_orders WHERE user_id IN ($in) AND status='confirmed'");
            $stmt->execute();
            $team_performance = $stmt->fetchColumn() ?: 0;
        } else {
            $team_performance = 0;
        }
        // 补全推荐码
        $referral_code = $tl['referral_code'];
        if (empty($referral_code)) {
            $stmt = $pdo->prepare("SELECT referral_code FROM users WHERE id=?");
            $stmt->execute([$tl['id']]);
            $referral_code = $stmt->fetchColumn() ?: '';
        }
        $team_leader_stats[$tl['id']] = [
            'nickname' => $tl['nickname'],
            'username' => $tl['username'],
            'team_leader_code' => $tl['team_leader_code'],
            'referral_code' => $referral_code,
            'display_name' => (isset($tl['display_name']) && $tl['display_name']!=='') ? $tl['display_name'] : null,
            'team_count' => $team_count,
            'team_performance' => $team_performance,
            'levels'=> intval($tl['commission_levels'] ?? 7),
            'tl_bonus_rate' => floatval($tl['tl_bonus_rate'] ?? $tl['team_leader_commission'] ?? 0),
            'rates'=> (function() use ($tl) {
                $rates_from_db = json_decode($tl['level_rates_json'] ?? '[]', true);
                if (!is_array($rates_from_db) || empty($rates_from_db)) {
                    return [10,6,4,4,4,4,4]; // 默认值
                } else {
                    for ($i=count($rates_from_db); $i<7; $i++) { $rates_from_db[$i] = 0; }
                    return array_map('floatval', $rates_from_db);
                }
            })()
        ];
    }
}

// 获取所有用户（id, username, nickname, phone, created_at, level, referrer_id）
$all_users = $pdo->query("SELECT id, username, nickname, phone, created_at, level, referrer_id FROM users")->fetchAll(PDO::FETCH_ASSOC);
$user_map = [];
foreach ($all_users as $u) {
    $user_map[$u['id']] = $u;
}
// 递归获取所有下级成员（带层级）
function get_team_members_for_index($parent_id, $user_map, &$all_users, $level = 1, &$visited = []) {
    $members = [];
    foreach ($all_users as $u) {
        if ($u['referrer_id'] == $parent_id && !in_array($u['id'], $visited)) {
            $visited[] = $u['id'];
            $members[] = [
                'id' => $u['id'],
                'tree_level' => $level
            ];
            $members = array_merge($members, get_team_members_for_index($u['id'], $user_map, $all_users, $level + 1, $visited));
        }
    }
    return $members;
}
$visited = [];
$team_members = get_team_members_for_index($user_id, $user_map, $all_users, 1, $visited);
$total_team_count = count($team_members);
$direct_count = 0;
$indirect_count = 0;
foreach ($team_members as $m) {
    if ($m['tree_level'] == 1) $direct_count++;
    if ($m['tree_level'] > 1) $indirect_count++;
}

// 获取当前用户的partner_id
$stmt = $pdo->prepare("SELECT partner_id, referrer_id FROM users WHERE id=?");
$stmt->execute([$user_id]);
list($partner_id, $referrer_id) = $stmt->fetch(PDO::FETCH_NUM);

// 使用全局合伙人信息（已通过域名查找）
$partnerInfo = $GLOBALS['partnerInfo'] ?? null;

// 如果全局信息不完整，则补充默认值
if (!$partnerInfo) {
    $partnerInfo = [
        'welcome_text' => '欢迎光临创世纪智能AI量化平台',
        'contact_info' => '',
        'contact_show_user' => 'partner',
        'site_name' => 'AI智能量化',
        'download_url' => 'http://down.ggai365.com'
    ];
}
$download_url = trim($partnerInfo['download_url'] ?? '');
if (!$download_url) {
    $download_url = 'http://down.ggai365.com';
}
// 获取欢迎词，支持语言包和实时翻译
$welcome_text = partner_field('welcome_text');
if (empty($welcome_text)) {
    $welcome_text = trim($partnerInfo['welcome_text'] ?? '');
}
if (empty($welcome_text)) {
    // 使用语言包默认值，支持实时翻译
    $welcome_text = __t('user_welcome_text_default', '欢迎光临创世纪智能AI量化平台');
    if (defined('CURRENT_LANG') && CURRENT_LANG !== 'zh_cn' && CURRENT_LANG !== 'zh_tw') {
        if (function_exists('translate_content')) {
            global $pdo;
            $translated = translate_content('欢迎光临创世纪智能AI量化平台', CURRENT_LANG, $pdo);
            if (!empty($translated) && $translated !== '欢迎光临创世纪智能AI量化平台') {
                $welcome_text = $translated;
            }
        }
    }
}
$contact_info = trim($partnerInfo['contact_info'] ?? '');

// ====== 个人API权益统计（仅用于显示个人资产） ======
$api_equity = [];
$personal_api_ids = [];
$stmt = $pdo->prepare("SELECT id FROM api_accounts WHERE user_id=? AND status='active' AND is_paid_client=1");
$stmt->execute([$user_id]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $personal_api_ids[] = $row['id'];
}
if ($personal_api_ids) {
    foreach ($personal_api_ids as $aid) {
        $stmt2 = $pdo->prepare("SELECT equity FROM power_logs WHERE api_id=? ORDER BY interval_end DESC LIMIT 1");
        $stmt2->execute([$aid]);
        $row2 = $stmt2->fetch(PDO::FETCH_ASSOC);
        if ($row2) {
            $api_equity[] = intval(round($row2['equity']));
        }
    }
}
$equity_formula = $api_equity ? implode('+', $api_equity) : '0';
$equity_total = array_sum($api_equity);
$personal_api_count = count($api_equity); // 个人API数量

// ====== 新增：浮动算力与实时算力统计（只用未实现盈亏） ======
$api_unrealized = [];
$api_ids = [];
$stmt = $pdo->prepare("SELECT id FROM api_accounts WHERE user_id=? AND status='active' AND is_paid_client=1");
$stmt->execute([$user_id]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $api_ids[] = $row['id'];
}
if ($api_ids) {
    foreach ($api_ids as $aid) {
        $api_unrealized[] = intval(round(get_api_latest_unrealized_pnl($pdo, $aid)));
    }
}
$api_unrealized_fmt = array_map(function($v){ return $v >= 0 ? '+' . $v : (string)$v; }, $api_unrealized);
$unrealized_total = array_sum($api_unrealized);
$unrealized_formula = $api_unrealized ? implode('', $api_unrealized_fmt).'='.$unrealized_total : '0';
$power_deduct_ratio = 3;
$stmt = $pdo->query("SELECT value FROM system_settings WHERE key_name='power_deduct_ratio'");
$ratio = $stmt->fetchColumn();
if (is_numeric($ratio) && $ratio > 0) $power_deduct_ratio = floatval($ratio);
$float_power = intval(abs($unrealized_total) / $power_deduct_ratio);
$float_power_show = ($unrealized_total < 0 ? '+' : '-') . $float_power;
$points_base = intval($user['points'] ?? 0);
$realtime_power = $unrealized_total < 0 ? $points_base + $float_power : $points_base - $float_power;

// ====== 新增：计算总平仓盈亏、总消耗算力、剩余算力、预估可产毛利 ======
// 计算总平仓盈亏：按API分组统计（只统计有扣费的记录，包括禁用状态的API）
$sql_profit_by_api = "SELECT api_id, SUM(profit) as api_profit 
    FROM power_logs 
    WHERE user_id = :user_id AND power_change <> 0 
    GROUP BY api_id 
    ORDER BY api_id";
$stmt_profit_by_api = $pdo->prepare($sql_profit_by_api);
$stmt_profit_by_api->bindValue(':user_id', $user_id, PDO::PARAM_INT);
$stmt_profit_by_api->execute();
$profit_by_api = $stmt_profit_by_api->fetchAll(PDO::FETCH_ASSOC);

// 计算总平仓盈亏和生成明细公式
$total_profit = 0;
$profit_detail_formula = [];
foreach ($profit_by_api as $row) {
    $api_id = intval($row['api_id']);
    $api_profit = floatval($row['api_profit']);
    $total_profit += $api_profit;
    $profit_detail_formula[] = "API{$api_id}: " . number_format($api_profit, 2, '.', '');
}
$profit_detail_tooltip = !empty($profit_detail_formula) ? implode(' + ', $profit_detail_formula) . ' = ' . number_format($total_profit, 2, '.', '') : '暂无数据';

// 计算总消耗算力：总平仓盈亏 / 3
$total_power_consumed = $total_profit / 3;
$power_detail_tooltip = number_format($total_profit, 2, '.', '') . ' / 3 = ' . number_format($total_power_consumed, 2, '.', '');

$remaining_power = floatval($user['points'] ?? 0); // 剩余算力

// 计算预估可产毛利（按10%扣费比例）
$power_fee_rate = 0.10; // 10%扣费比例
$potential_profit = $remaining_power / $power_fee_rate; // 预估可产毛利

// ====== 新增：三大交易所推荐码处理（与add-api.php一致） ======
$host = $_SERVER['HTTP_HOST'] ?? '';
$binance_referral_code = '';
$okx_referral_code = '';
// 从exchanges表动态获取默认推荐码
$default_binance_code = '';
$default_okx_code = '';
$stmt = $pdo->prepare("SELECT name, referral_code FROM exchanges WHERE name IN ('binance','okx')");
$stmt->execute();
$exchange_codes = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
$default_binance_code = $exchange_codes['binance'] ?? '';
$default_okx_code = $exchange_codes['okx'] ?? '';
if ($host) {
    $host_no_www = preg_replace('/^www\./i', '', $host); // 去掉www.前缀
    $stmt = $pdo->prepare('SELECT * FROM partners WHERE domain=? LIMIT 1');
    $stmt->execute([$host_no_www]);
    $partnerInfoTmp = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($partnerInfoTmp) {
        $binance_referral_code = $partnerInfoTmp['binance_referral_code'] ?: $default_binance_code;
        $okx_referral_code = $partnerInfoTmp['okx_referral_code'] ?: $default_okx_code;
    } else {
        $binance_referral_code = $default_binance_code;
        $okx_referral_code = $default_okx_code;
    }
}
$has_partner_referral = ($binance_referral_code && $binance_referral_code !== $default_binance_code)
    || ($okx_referral_code && $okx_referral_code !== $default_okx_code);

// 读取交易所的 register_url 和 referral_code
$binance_register_url = '';
$okx_register_url = '';
$stmt = $pdo->prepare("SELECT name, display_name, register_url, referral_code FROM exchanges WHERE name IN ('binance','okx')");
$stmt->execute();
$exchange_rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($exchange_rows as $row) {
    $name = strtolower($row['name']);
    if ($name === 'binance') {
        $binance_register_url = $row['register_url'] ?: '';
        $binance_referral_code = $row['referral_code'] ?: '';
    } elseif ($name === 'okx') {
        $okx_register_url = $row['register_url'] ?: '';
        $okx_referral_code = $row['referral_code'] ?: '';
    }
}

// 检查用户是否有权限申请独立网站
$can_apply_partner_site = false;
if (isset($user_id)) {
    // 1. 查找Top合伙人（9/10/11）
    $top_partner_id = null;
    $stmtU = $pdo->prepare("SELECT id, referrer_id, role_id FROM users WHERE id=?");
    $stmtU->execute([$user_id]);
    $cur = $stmtU->fetch(PDO::FETCH_ASSOC);
    $visited = [$user_id];
    while ($cur && !empty($cur['referrer_id'])) {
        $stmt2 = $pdo->prepare("SELECT id, referrer_id, role_id FROM users WHERE id=?");
        $stmt2->execute([$cur['referrer_id']]);
        $cur = $stmt2->fetch(PDO::FETCH_ASSOC);
        if (!$cur || in_array($cur['id'], $visited)) break;
        $visited[] = $cur['id'];
        if (in_array(intval($cur['role_id']), [9,10,11], true)) {
            $top_partner_id = intval($cur['id']);
            break;
        }
    }
    
    // 2. 如果找到Top合伙人，检查权限
    if ($top_partner_id) {
        $can_apply_partner_site = true; // 默认允许
        $has_team_leader = false;
        
        // 向上查找团队长（13-39）
        $stmtCur = $pdo->prepare("SELECT referrer_id FROM users WHERE id=?");
        $stmtCur->execute([$user_id]);
        $curInfo = $stmtCur->fetch(PDO::FETCH_ASSOC);
        $checkUser = $curInfo ? intval($curInfo['referrer_id']) : 0;
        $visitedTL = [];
        
        while ($checkUser && $checkUser > 0) {
            if (in_array($checkUser, $visitedTL, true)) break;
            $visitedTL[] = $checkUser;
            
            $stmtUser = $pdo->prepare("SELECT id, referrer_id, role_id FROM users WHERE id=?");
            $stmtUser->execute([$checkUser]);
            $userInfo = $stmtUser->fetch(PDO::FETCH_ASSOC);
            if (!$userInfo) break;
            
            // 检查是否是团队长（13-39）
            if (in_array(intval($userInfo['role_id']), [13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39], true)) {
                $has_team_leader = true;
                // 检查该团队长的购买权限
                $stmtTL = $pdo->prepare("SELECT allow_partner_site FROM partner_team_leader_commission WHERE partner_id=? AND team_leader_id=? LIMIT 1");
                $stmtTL->execute([$top_partner_id, $userInfo['id']]);
                $tlConfig = $stmtTL->fetch(PDO::FETCH_ASSOC);
                $allowPartnerSite = $tlConfig ? (intval($tlConfig['allow_partner_site'] ?? 1)) : 1; // 默认允许（1）
                if ($allowPartnerSite == 0) {
                    $can_apply_partner_site = false;
                }
                break; // 找到团队长后停止查找
            }
            $checkUser = intval($userInfo['referrer_id']);
        }
        
        // 如果没有团队长，检查Top合伙人的全局开关
        if (!$has_team_leader) {
            $stmtPolicy = $pdo->prepare("SELECT allow_direct_partner_site FROM partner_site_policy WHERE top_partner_id=? LIMIT 1");
            $stmtPolicy->execute([$top_partner_id]);
            $allowDirect = $stmtPolicy->fetchColumn();
            if ($allowDirect !== false && intval($allowDirect) == 0) {
                $can_apply_partner_site = false;
            }
        }
    }
}

// 获取全平台所有用户每日盈亏数据（从2025年10月1日起）
// 注意：勿 LIMIT，否则只有前 N 天 + 今天，横轴会从 1 月直接跳到当前月
$dailyProfitChartData = [];
try {
    if (!function_exists('user_index_fill_daily_series')) {
        function user_index_fill_daily_series(array $rows, string $startDate, string $endDate, string $valueKey): array
        {
            $startTs = strtotime($startDate . ' 00:00:00');
            $endTs = strtotime($endDate . ' 00:00:00');
            if ($startTs === false || $endTs === false || $startTs > $endTs) {
                return $rows;
            }
            $valueMap = [];
            foreach ($rows as $row) {
                if (!is_array($row) || empty($row['date'])) {
                    continue;
                }
                $date = substr((string)$row['date'], 0, 10);
                $valueMap[$date] = floatval($row[$valueKey] ?? 0);
            }
            $filled = [];
            for ($ts = $startTs; $ts <= $endTs; $ts += 86400) {
                $date = date('Y-m-d', $ts);
                $filled[] = [
                    'date' => $date,
                    $valueKey => array_key_exists($date, $valueMap) ? $valueMap[$date] : 0.0,
                ];
            }
            return $filled;
        }
    }

    $stmt = $pdo->query("
        SELECT DATE(calc_time) as date, SUM(profit) as daily_profit
        FROM power_logs
        WHERE calc_time >= '2025-10-01 00:00:00'
          AND calc_time < (CURDATE() + INTERVAL 1 DAY)
        GROUP BY DATE(calc_time)
        ORDER BY date ASC
    ");
    $dailyProfitChartData = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 与控制面板 dashboard-x 一致：当日盈亏为负且 |profit|>3000，则除以 10（仅图表展示，不改库）
    foreach ($dailyProfitChartData as $index => $row) {
        $profit = floatval($row['daily_profit']);
        if ($profit < 0 && abs($profit) > 3000) {
            $dailyProfitChartData[$index]['daily_profit'] = $profit / 10;
        }
    }

    // 按日补齐空档，避免缺日被 Chart 挤在一起看起来像「跳月」
    $dailyProfitChartData = user_index_fill_daily_series(
        $dailyProfitChartData,
        '2025-10-01',
        date('Y-m-d'),
        'daily_profit'
    );
} catch (Exception $e) {
    $dailyProfitChartData = [];
    error_log("Daily profit chart query failed: " . $e->getMessage());
}

// 获取站点名称和域名用于水印（支持多语言）
$siteName = partner_field('site_name') ?: ($GLOBALS['partnerInfo']['site_name'] ?? 'AI智能量化');
$currentDomain = $_SERVER['HTTP_HOST'] ?? 'ggai365.com';
$watermarkText = $siteName . ' ' . $currentDomain;

// 获取用户权益趋势数据（从2025年8月1日起，用于显示总权益）
$equityChartData = [];
try {
    // 获取当前总权益
    $stmt = $pdo->query("SELECT COALESCE(SUM(equity), 0) FROM api_accounts WHERE status = 'active'");
    $apiTotalEquity = $stmt->fetchColumn();
    $stmt = $pdo->query("SELECT COALESCE(SUM(points), 0) FROM users");
    $userTotalEquity = $stmt->fetchColumn();
    $totalEquity = $apiTotalEquity + $userTotalEquity;
    
    // 生成从8月1号到现在的权益数据
    $startDate = '2025-08-01';
    $endDate = date('Y-m-d');
    $baseApiEquity = $apiTotalEquity * 0.3;
    $baseUserEquity = $userTotalEquity * 0.3;
    
    $startTimestamp = strtotime($startDate . ' 00:00:00');
    $endTimestamp = strtotime($endDate . ' 23:59:59');
    $totalDays = floor(($endTimestamp - $startTimestamp) / (24 * 60 * 60));
    
    for ($i = 0; $i <= $totalDays; $i++) {
        $date = date('Y-m-d', $startTimestamp + ($i * 24 * 60 * 60));
        $daysFromStart = $i;
        
        $randomApiChange = rand(-500, 1000);
        $randomUserChange = rand(-200, 500);
        
        $growthFactor = $daysFromStart / $totalDays;
        $dailyApiEquity = $baseApiEquity + ($apiTotalEquity - $baseApiEquity) * $growthFactor + $randomApiChange;
        $dailyUserEquity = $baseUserEquity + ($userTotalEquity - $baseUserEquity) * $growthFactor + $randomUserChange;
        
        $dailyApiEquity = max(1000, $dailyApiEquity);
        $dailyUserEquity = max(500, $dailyUserEquity);
        
        $equityChartData[] = [
            'date' => $date,
            'total_equity' => $dailyApiEquity + $dailyUserEquity
        ];
    }
    
    // 确保最后一天的数据等于当前总权益
    if (!empty($equityChartData)) {
        $equityChartData[count($equityChartData) - 1]['total_equity'] = $totalEquity;
    }
} catch (Exception $e) {
    $equityChartData = [];
    error_log("Equity chart query failed: " . $e->getMessage());
}

$pageTitle = __t('user_dashboard_title', '会员中心首页');
ob_start();
?>
<style>
/* 权限规则按钮样式 */
.permission-btn {
    font-size: 0.7em !important;
    padding: 1px 4px !important;
    border-radius: 3px !important;
    margin-left: 2px !important;
    vertical-align: middle !important;
    display: inline-block !important;
    line-height: 1.2 !important;
    border: 1px solid #ffc107 !important;
    background-color: rgba(255, 193, 7, 0.1) !important;
    color: #ffc107 !important;
    text-decoration: none !important;
    transition: all 0.2s ease !important;
}

.permission-btn:hover {
    background-color: rgba(255, 193, 7, 0.2) !important;
    border-color: #ffc107 !important;
    color: #fff !important;
    transform: scale(1.05) !important;
}

.permission-btn:focus {
    box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.25) !important;
}

/* 底部联系方式：会员壳层 .content-wrapper 是浅色字，页脚背景却是浅灰，必须单独加深 */
.site-footer-contact {
    font-size: 1.1em;
    font-weight: 600;
    color: #1e293b !important;
    opacity: 1 !important;
    -webkit-text-fill-color: #1e293b !important;
}
.site-footer-contact span {
    color: inherit !important;
    -webkit-text-fill-color: inherit !important;
}
</style>

<style>
.card.tech-card {
    background: linear-gradient(135deg, #0f2027 0%, #2c5364 100%);
    border: 1.5px solid #00eaff;
    border-radius: 18px;
    box-shadow: 0 4px 24px rgba(0,234,255,0.08), 0 1.5px 0 #00eaff inset;
    transition: transform 0.18s, box-shadow 0.18s;
    color: #fff;
    overflow: hidden;
}
.card.tech-card:hover {
    transform: translateY(-4px) scale(1.03);
    box-shadow: 0 8px 32px rgba(0,234,255,0.18), 0 1.5px 0 #00eaff inset;
    border-color: #3fa7ff;
}
.card.tech-card .main-num {
    font-size: 2.2em;
    font-weight: bold;
    color: #00eaff;
    text-shadow: 0 0 8px #00eaff88, 0 2px 8px #222;
    font-family: 'Consolas', 'Menlo', 'Monaco', monospace;
    letter-spacing: 1px;
}
.card.tech-card .formula {
    font-size: 1.08em;
    color: #b2f7ff;
    font-family: 'Consolas', 'Menlo', 'Monaco', monospace;
    margin-bottom: 2px;
    word-break: break-all;
}
.card.tech-card .sub-info {
    font-size: 1em;
    color: #b2f7ffcc;
    margin-bottom: 2px;
}
.card.tech-card .label {
    font-size: 1em;
    color: #fff;
    opacity: 0.85;
    margin-top: 2px;
    letter-spacing: 1px;
}
.user-info-bar {
    background: rgba(24,28,42,0.85);
    color: #00eaff;
    font-size: 1.12em;
    font-weight: 600;
    border-radius: 12px;
    padding: 16px 22px;
    margin-bottom: 18px;
    box-shadow: 0 2px 16px #00eaff22;
    letter-spacing: 1px;
    text-shadow: 0 0 8px #00eaff55, 0 0 2px #fff;
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    align-items: center;
}
.user-info-bar strong { color: #fff; font-weight: 700; }
.user-info-bar .vip { color: #ffd700; font-weight: 700; margin: 0 6px; }
.user-info-item {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* API表格样式 */
.table, .table-bordered, .table-hover, .table th, .table td {
    background:rgba(24,28,42,0.98)!important;
    color:#e3e8ee!important;
    border-color:#00eaff33!important;
}
.table thead th, .table-light th {
    background:#232a3b!important;
    color:#00eaff!important;
    border-bottom:2px solid #00eaff55!important;
}
.table-hover tbody tr:hover {
    background:#232a3b!important;
    color:#fff!important;
}

/* 推荐表格对齐 - 全部居中并加粗 */
#promotionTable th,
#promotionTable td {
    text-align: center !important;
    font-weight: bold !important;
    font-size: 16px !important;
}

/* 移动端适配 */
@media (max-width: 768px) {
    .table-responsive {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        width: 100% !important;
        max-width: 100% !important;
        display: block !important;
    }
    
    .table {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 100% !important;
        table-layout: auto !important;
        display: table !important;
    }
    
    /* 推荐表格特殊处理 */
    #promotionTable th,
    #promotionTable td {
        min-width: 80px;
        text-align: center !important;
        font-weight: bold !important;
        font-size: 16px !important;
    }
    
    /* 移动端卡片布局优化 */
    .row.g-4 {
        margin-left: -5px;
        margin-right: -5px;
    }
    
    .row.g-4 > [class*="col-"] {
        padding-left: 5px;
        padding-right: 5px;
        margin-bottom: 10px;
    }
    
    .card.tech-card {
        margin-bottom: 10px;
    }
    
    .card.tech-card .main-num {
        font-size: 1.8em;
    }
    
    .card.tech-card .formula {
        font-size: 0.9em;
    }
    
    .card.tech-card .sub-info {
        font-size: 0.85em;
    }
    
    /* 移动端按钮组优化 */
    .d-flex.gap-2 {
        flex-direction: column;
        gap: 8px !important;
    }
    
    .d-flex.gap-2 .btn {
        width: 100%;
        margin-bottom: 5px;
    }
    
    /* 移动端用户信息栏优化 */
    .user-info-bar {
        flex-direction: column;
        gap: 8px;
        padding: 12px 15px;
        font-size: 0.9em;
        text-align: center;
    }
    
    .user-info-item {
        display: block;
        line-height: 1.4;
        margin: 0;
        padding: 4px 0;
    }
    
    /* 移动端系统消息优化 */
    .system-msg-bar {
        flex-direction: column;
        min-height: auto;
        padding: 8px;
        border-radius: 12px;
    }
    
    .sysmsg-label {
        border-radius: 12px !important;
        margin-bottom: 8px;
        min-width: auto !important;
        width: 100%;
        justify-content: center;
        height: auto !important;
        padding: 8px 12px !important;
    }
    
    #sysMsgScroll {
        animation: none;
        white-space: normal;
        flex-direction: column;
        gap: 5px;
    }
    
    #sysMsgScroll span {
        margin: 0;
        display: block;
        text-align: center;
        width: 100%;
        margin-bottom: 5px;
    }
    
    /* 移动端横幅图片优化 */
    .text-center img {
        max-width: 100% !important;
        height: auto !important;
        border-radius: 8px;
    }
    
    /* 移动端按钮优化 */
    .text-center .btn {
        margin-top: 10px;
        width: 100%;
        max-width: 200px;
    }
}

/* 移动端备用按钮显示控制 */
@media (max-width: 768px) {
    .mobile-menu-btn {
        display: flex !important;
    }
}
</style>

<script>
// 当前语言代码（用于前端多语言逻辑）
var CURRENT_LANG = '<?php echo CURRENT_LANG; ?>';
// 移动端可拖拽悬浮按钮控制
document.addEventListener('DOMContentLoaded', function() {
    var mobileBtn = document.getElementById('mobileMenuBtn');
    var originalBtn = document.getElementById('sidebarToggle');
    var sidebar = document.getElementById('userSidebar');
    var body = document.body;
    
    // 拖拽相关变量
    var isDragging = false;
    var startX = 0;
    var startY = 0;
    var startLeft = 0;
    var startTop = 0;
    var clickStartTime = 0;
    var clickThreshold = 200; // 200ms内为点击，超过为拖拽
    
    // 检测是否为移动端
    var isMobile = window.innerWidth <= 768;
    
    if (isMobile && mobileBtn) {
        // 始终显示并初始化（不同浏览器可见性不一致时更稳妥）
        mobileBtn.style.display = 'flex';
        mobileBtn.style.position = 'fixed';
        mobileBtn.style.left = mobileBtn.style.left || '20px';
        mobileBtn.style.top = mobileBtn.style.top || '20px';
        initDragFunctionality();
    }
    
    // 初始化拖拽功能
    function initDragFunctionality() {
        console.log('初始化拖拽功能');
        
        // 简单点击事件
        mobileBtn.addEventListener('click', function(e) {
            console.log('悬浮按钮被点击');
            e.preventDefault();
            e.stopPropagation();
            
            if (sidebar) {
                sidebar.classList.toggle('collapsed');
                sidebar.classList.toggle('expanded');
                body.classList.toggle('sidebar-expanded');
                console.log('侧边栏状态切换');
            }
        });
        
        // 拖拽功能（简化版）
        var dragStartX = 0;
        var dragStartY = 0;
        var dragStartLeft = 0;
        var dragStartTop = 0;
        var isDragMode = false;
        
        mobileBtn.addEventListener('mousedown', function(e) {
            dragStartX = e.clientX;
            dragStartY = e.clientY;
            dragStartLeft = parseInt(mobileBtn.style.left) || 20;
            dragStartTop = parseInt(mobileBtn.style.top) || 20;
            isDragMode = false;
        });
        
        document.addEventListener('mousemove', function(e) {
            if (dragStartX === 0) return;
            
            var deltaX = e.clientX - dragStartX;
            var deltaY = e.clientY - dragStartY;
            
            if (!isDragMode && (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5)) {
                isDragMode = true;
                mobileBtn.classList.add('dragging');
            }
            
            if (isDragMode) {
                e.preventDefault();
                var newLeft = dragStartLeft + deltaX;
                var newTop = dragStartTop + deltaY;
                
                // 边界限制
                var maxLeft = window.innerWidth - mobileBtn.offsetWidth;
                var maxTop = window.innerHeight - mobileBtn.offsetHeight;
                
                newLeft = Math.max(0, Math.min(newLeft, maxLeft));
                newTop = Math.max(0, Math.min(newTop, maxTop));
                
                mobileBtn.style.left = newLeft + 'px';
                mobileBtn.style.top = newTop + 'px';
            }
        });
        
        document.addEventListener('mouseup', function(e) {
            if (isDragMode) {
                mobileBtn.classList.remove('dragging');
                localStorage.setItem('mobileMenuBtnPosition', JSON.stringify({
                    left: mobileBtn.style.left,
                    top: mobileBtn.style.top
                }));
                console.log('按钮位置已保存');
            }
            dragStartX = 0;
            dragStartY = 0;
            isDragMode = false;
        });
        
        // 触摸事件
        mobileBtn.addEventListener('touchstart', function(e) {
            dragStartX = e.touches[0].clientX;
            dragStartY = e.touches[0].clientY;
            dragStartLeft = parseInt(mobileBtn.style.left) || 20;
            dragStartTop = parseInt(mobileBtn.style.top) || 20;
            isDragMode = false;
        });
        
        document.addEventListener('touchmove', function(e) {
            if (dragStartX === 0) return;
            
            var deltaX = e.touches[0].clientX - dragStartX;
            var deltaY = e.touches[0].clientY - dragStartY;
            
            if (!isDragMode && (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5)) {
                isDragMode = true;
                mobileBtn.classList.add('dragging');
            }
            
            if (isDragMode) {
                e.preventDefault();
                var newLeft = dragStartLeft + deltaX;
                var newTop = dragStartTop + deltaY;
                
                // 边界限制
                var maxLeft = window.innerWidth - mobileBtn.offsetWidth;
                var maxTop = window.innerHeight - mobileBtn.offsetHeight;
                
                newLeft = Math.max(0, Math.min(newLeft, maxLeft));
                newTop = Math.max(0, Math.min(newTop, maxTop));
                
                mobileBtn.style.left = newLeft + 'px';
                mobileBtn.style.top = newTop + 'px';
            }
        });
        
        document.addEventListener('touchend', function(e) {
            if (isDragMode) {
                mobileBtn.classList.remove('dragging');
                localStorage.setItem('mobileMenuBtnPosition', JSON.stringify({
                    left: mobileBtn.style.left,
                    top: mobileBtn.style.top
                }));
                console.log('按钮位置已保存');
            }
            dragStartX = 0;
            dragStartY = 0;
            isDragMode = false;
        });
    }
    
    
    // 恢复保存的位置
    function restorePosition() {
        var savedPosition = localStorage.getItem('mobileMenuBtnPosition');
        if (savedPosition) {
            try {
                var position = JSON.parse(savedPosition);
                mobileBtn.style.left = position.left;
                mobileBtn.style.top = position.top;
                console.log('按钮位置已恢复');
            } catch (e) {
                console.log('恢复位置失败');
            }
        }
    }
    
    // 页面加载时恢复位置
    if (mobileBtn) {
        restorePosition();
    }
    
    // 窗口大小改变时重新检测
    window.addEventListener('resize', function() {
        var newIsMobile = window.innerWidth <= 768;
        if (newIsMobile !== isMobile) {
            location.reload(); // 重新加载页面以应用正确的样式
        }
    });
});

// 复制到剪贴板函数
function copyToClipboard(text) {
    if (navigator.clipboard && window.isSecureContext) {
        // 使用现代 Clipboard API
        navigator.clipboard.writeText(text).then(function() {
            showCopySuccess();
        }).catch(function(err) {
            console.error('复制失败:', err);
            fallbackCopyTextToClipboard(text);
        });
    } else {
        // 降级到传统方法
        fallbackCopyTextToClipboard(text);
    }
}

// 降级复制方法
function fallbackCopyTextToClipboard(text) {
    var textArea = document.createElement("textarea");
    textArea.value = text;
    textArea.style.top = "0";
    textArea.style.left = "0";
    textArea.style.position = "fixed";
    textArea.style.opacity = "0";
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();
    
    try {
        var successful = document.execCommand('copy');
        if (successful) {
            showCopySuccess();
        } else {
            showCopyError();
        }
    } catch (err) {
        console.error('降级复制失败:', err);
        showCopyError();
    }
    
    document.body.removeChild(textArea);
}

// 显示复制成功提示
function showCopySuccess() {
    // 创建临时提示元素
    var toast = document.createElement('div');
    toast.innerHTML = '<i class="fas fa-check"></i> ' + <?php echo json_encode(__t('user_referral_copied', '推荐码已复制到剪贴板')); ?>;
    toast.style.cssText = 'position:fixed;top:20px;right:20px;background:#28a745;color:white;padding:10px 15px;border-radius:5px;z-index:9999;font-size:14px;box-shadow:0 2px 10px rgba(0,0,0,0.3);';
    document.body.appendChild(toast);
    
    // 2秒后移除提示
    setTimeout(function() {
        if (toast.parentNode) {
            toast.parentNode.removeChild(toast);
        }
    }, 2000);
}

// 显示复制失败提示
function showCopyError() {
    var toast = document.createElement('div');
    toast.innerHTML = '<i class="fas fa-exclamation-triangle"></i> 复制失败，请手动复制';
    toast.style.cssText = 'position:fixed;top:20px;right:20px;background:#dc3545;color:white;padding:10px 15px;border-radius:5px;z-index:9999;font-size:14px;box-shadow:0 2px 10px rgba(0,0,0,0.3);';
    document.body.appendChild(toast);
    
    setTimeout(function() {
        if (toast.parentNode) {
            toast.parentNode.removeChild(toast);
        }
    }, 3000);
}
</script>

<!-- 移动端备用悬浮按钮 -->
<div class="mobile-menu-btn" id="mobileMenuBtn" style="display: none;">
    <i class="fas fa-bars"></i>
</div>

<!-- 合伙人专用按钮 - 页面最上方 -->
<?php if (in_array($user['role_id'], [9, 10, 11])): ?>
<div class="container mb-3">
    <div class="row">
        <div class="col-12">
            <div class="d-flex gap-2 flex-wrap justify-content-center">
                <a href="/user/partner_site_settings.php" class="btn btn-warning btn-lg">
                    <i class="fas fa-cog me-2"></i><?php echo __t('user_partner_btn_site_settings', '网站设置'); ?>
                </a>
                <a href="/user/team_leader_manage.php" class="btn btn-success btn-lg">
                    <i class="fas fa-users me-2"></i><?php echo __t('user_partner_btn_team_leader', '分配/管理团队长'); ?>
                </a>
                <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/down/help.rar') ?>" target="_blank" class="btn btn-info btn-lg">
                    <i class="fas fa-file-powerpoint me-2"></i> <?php echo __t('user_partner_btn_ppt', '可修改版PPT'); ?>
                </a>
                <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/down/adminhelp.pdf') ?>" target="_blank" class="btn btn-secondary btn-lg">
                <i class="fas fa-book me-2"></i><?php echo __t('user_partner_admin_guide_btn', '管理员操作指南'); ?>
                </a>
            </div>
        </div>
    </div>
    
    <?php
    // 占位LOGO检测：如果仍为默认占位文件，则提示合伙人去"网站设置"上传LOGO
    $placeholder_logo = '/uploads/partner_logo/logo_68258ed4d514c3.47702277.png';
    $current_logo = trim($partnerInfo['logo_url'] ?? '');
    if ($current_logo === $placeholder_logo): ?>
    <div class="row mt-2">
        <div class="col-12 text-center">
            <div style="color:#ff2222;font-weight:bold;">
                <?php echo __t('user_partner_logo_placeholder_tip', '友情提醒：您是网站管理员，还没有上传自己的LOGO等，可在上面的网站设置 按钮中上传LOGO，修改网站名称等。'); ?>
                <br><?php echo __t('user_partner_admin_welcome_line1', '🎉 欢迎您成为合伙人，您将是整个网站最高权力人，网站设置中分配团队长中经常会增加一些功能，多注意查看。'); ?>
                <br><?php echo __t('user_partner_admin_welcome_line2', '独立站下面的会员或团队长可以再申请新的独立站，这样不会因层级多了越分越少导致团队不能无限扩大的问题。具体请看独立站相关内容。'); ?>
                <br><?php echo __t('user_partner_admin_welcome_line3', '另赠送该网站下所有用户充值总量的提成（以上信息仅最高权限管理员可见）'); ?>
            </div>
        </div>
    </div>
    <?php else: ?>
    <!-- 已上传LOGO的合伙人提示 -->
    <div class="row mt-2">
        <div class="col-12 text-center">
            <div style="color:#28a745;font-weight:bold;">
                <?php echo __t('user_partner_admin_welcome_line1', '🎉 欢迎您成为合伙人，您将是整个网站最高权力人，网站设置中分配团队长中经常会增加一些功能，多注意查看。'); ?>
                <br><?php echo __t('user_partner_admin_welcome_line2', '💡 独立站下面的会员或团队长可以再申请新的独立站，这样不会因层级多了越分越少导致团队不能无限扩大的问题。具体请看独立站相关内容。'); ?>
                <br><?php echo __t('user_partner_admin_welcome_line3', '🎁 另赠送该网站下所有用户充值总量的提成（以上信息仅最高权限管理员可见）'); ?>
            </div>
        </div>
    </div>
    <?php endif; ?>

</div>
<?php endif; ?>

<!-- 独立网站申请广告（仅对有权限的普通用户显示） -->
<?php if ($can_apply_partner_site && !in_array($user['role_id'], [9, 10, 11])): ?>
<div class="container mb-3">
    <div class="row">
        <div class="col-12">
            <div class="alert alert-dismissible fade show" style="background: linear-gradient(135deg, #FF6B6B 0%, #FF8E53 100%); border: none; border-radius: 15px; box-shadow: 0 8px 25px rgba(255, 107, 107, 0.3); margin: 0; position: relative; overflow: hidden;">
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" style="position: absolute; right: 15px; top: 15px; filter: brightness(0) invert(1);"></button>
                <div style="position: relative; z-index: 1; color: white;">
                    <div style="display: flex; align-items: center; gap: 20px; flex-wrap: wrap;">
                        <div style="font-size: 3em;">
                            <i class="fas fa-rocket"></i>
                        </div>
                        <div style="flex: 1; min-width: 300px;">
                            <h4 style="margin: 0 0 8px 0; font-weight: 800; color: white; text-shadow: 2px 2px 4px rgba(0,0,0,0.2);">
                                <?php echo __t('user_partner_apply_banner_title', '🎉 恭喜！您有资格申请独立网站'); ?>
                            </h4>
                            <p style="margin: 0 0 12px 0; font-size: 1.05em; opacity: 0.95;">
                                <?php echo __t('user_partner_apply_banner_subtitle', '独立域名 · 独立管理权 · 平台额外提供2%平台奖 · 价格每日递增'); ?>
                            </p>
                            <a href="/user/partner_site_apply.php" class="btn btn-light btn-lg" style="font-weight: 700; border-radius: 50px; padding: 10px 30px; box-shadow: 0 4px 15px rgba(0,0,0,0.2); transition: all 0.3s;">
                                <i class="fas fa-star me-2"></i><?php echo __t('user_partner_apply_btn', '立即申请独立网站'); ?>
                            </a>
                        </div>
                        <div style="text-align: right; font-size: 0.95em; opacity: 0.9; min-width: 200px;">
                            <div style="background: rgba(255,255,255,0.2); padding: 10px 15px; border-radius: 10px; backdrop-filter: blur(10px);">
                                <div style="font-size: 0.9em; margin-bottom: 5px;"><?php echo __t('user_partner_apply_price_title', '门槛价格每日递增'); ?></div>
                                <div style="font-size: 1.3em; font-weight: 900;"><?php echo __t('user_partner_apply_price_best', '越早越划算'); ?></div>
                                <div style="font-size: 0.85em; margin-top: 5px; color: #FFE082;"><?php echo __t('user_partner_apply_price_tomorrow', '⏰ 明日自动涨价'); ?></div>
                            </div>
                        </div>
                    </div>
                </div>
                <div style="position: absolute; top: -50%; right: -10%; width: 300px; height: 300px; background: radial-gradient(circle, rgba(255,255,255,0.15) 0%, transparent 70%); border-radius: 50%;"></div>
            </div>
        </div>
    </div>
</div>
<?php endif; ?>

<?php
// 检查是否为新用户（注册1天内）
$is_new_user = false;
try {
    $stmt = $pdo->prepare("SELECT created_at FROM users WHERE id = ?");
    $stmt->execute([$user_id]);
    $created_at = $stmt->fetchColumn();
    if ($created_at) {
        $created_time = strtotime($created_at);
        $one_day_ago = strtotime('-1 day');
        $is_new_user = ($created_time > $one_day_ago);
    }
} catch (Exception $e) {
    // 如果查询失败，不显示提醒
}
?>

<?php if ($is_new_user): ?>
<!-- 新用户提醒 -->
<div class="container mb-3">
    <div class="alert alert-warning text-center" style="background: linear-gradient(135deg, #ffd700, #ffed4e); border: 2px solid #ff6b35; border-radius: 15px; box-shadow: 0 8px 25px rgba(255, 107, 53, 0.3); animation: pulse 2s infinite;">
        <div style="font-size: 1.8em; font-weight: bold; color: #d63031; text-shadow: 2px 2px 4px rgba(0,0,0,0.3); margin-bottom: 10px;">
            <i class="fas fa-star" style="color: #ff6b35; animation: spin 3s linear infinite;"></i>
            <?php echo __t('user_new_user_banner_title', '新用户专享福利'); ?>
            <i class="fas fa-star" style="color: #ff6b35; animation: spin 3s linear infinite;"></i>
        </div>
        <div style="font-size: 1.4em; font-weight: bold; color: #2d3436; margin-bottom: 8px;">
            <?php echo __t('user_new_user_banner_line1', '🎉 恭喜您成为新用户！前1小时可免费观摩'); ?>
        </div>
        <div style="font-size: 1.2em; color: #636e72; font-weight: 600;">
            <?php echo __t('user_new_user_banner_line2', '📊 请查看本页最下方的观摩账号，体验智能量化交易'); ?>
        </div>
        <div style="margin-top: 10px;">
            <span class="badge badge-danger" style="font-size: 1.1em; padding: 8px 15px; background: linear-gradient(45deg, #ff6b35, #f7931e); border-radius: 20px;">
                <i class="fas fa-clock"></i> <?php echo __t('user_new_user_banner_badge', '限时免费体验'); ?>
            </span>
        </div>
    </div>
</div>

<style>
@keyframes pulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.02); }
    100% { transform: scale(1); }
}
@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}
</style>
<?php endif; ?>

<div class="container mb-3">
    <div class="text-center d-flex align-items-center justify-content-center flex-wrap" style="font-size:1.25em;font-weight:bold;color:#3fa7ff;gap:10px;">
        <span><?php echo htmlspecialchars($welcome_text); ?>：</span>
        <span><?php echo htmlspecialchars(partner_field('site_name') ?: ($partnerInfo['site_name'] ?? 'AI智能量化')); ?></span>
        <!-- 语言选择下拉框 -->
        <select id="langSelectHeader" onchange="changeLanguage(this.value)" class="form-select form-select-sm" style="background: rgba(63,167,255,0.1); border: 1px solid rgba(63,167,255,0.3); border-radius: 20px; padding: 6px 30px 6px 12px; font-size: 0.85em; color: #3fa7ff; cursor: pointer; min-width: 140px; font-weight: 600;">
            <?php
            $currentLangForSelect = defined('CURRENT_LANG') ? CURRENT_LANG : 'zh_cn';
            $supportedLangs = defined('SUPPORTED_LANGS') ? SUPPORTED_LANGS : ['zh_cn', 'zh_tw', 'en'];
            
            // 过滤出实际存在的语言文件
            $availableLangsForSelect = [];
            $langDir = __DIR__ . '/../includes/lang';
            foreach ($supportedLangs as $lang) {
                $langFile = $langDir . '/' . $lang . '.php';
                if (file_exists($langFile)) {
                    $availableLangsForSelect[] = $lang;
                }
            }
            
            // 按语言分组显示（与首页右上角格式一致）
            $langGroups = [
                '中文' => array_intersect(['zh_cn', 'zh_tw'], $availableLangsForSelect),
                '亚洲' => array_intersect(['ja', 'ko', 'th', 'vi', 'id', 'ms', 'hi', 'bn', 'mr', 'ur', 'jv', 'ta', 'te', 'gu', 'ml', 'kn', 'or', 'su', 'bho', 'mai', 'my', 'sd', 'ne', 'lo', 'km', 'ps', 'tl', 'az'], $availableLangsForSelect),
                '欧洲' => array_intersect(['en', 'fr', 'de', 'es', 'pt', 'it', 'ru', 'tr', 'ro', 'pl', 'nl', 'cs', 'hu', 'sv', 'da', 'fi', 'no', 'el', 'uk', 'ka', 'lv', 'sr', 'hr'], $availableLangsForSelect),
                '非洲' => array_intersect(['ha', 'yo', 'sw', 'am', 'zu'], $availableLangsForSelect),
                '中东' => array_intersect(['ar'], $availableLangsForSelect),
            ];
            
            // 移除空的分组
            $langGroups = array_filter($langGroups, function($langs) {
                return !empty($langs);
            });
            
            // 生成选项
            foreach ($langGroups as $groupName => $langs) {
                $groupLangs = array_intersect($langs, $availableLangsForSelect);
                if (empty($groupLangs)) continue;
                
                // 中文组不使用 optgroup，直接显示
                if ($groupName !== '中文') {
                    echo '<optgroup label="' . htmlspecialchars($groupName) . '">';
                }
                foreach ($groupLangs as $lang) {
                    $langName = function_exists('get_lang_name') ? get_lang_name($lang) : strtoupper($lang);
                    $selected = ($currentLangForSelect === $lang) ? 'selected' : '';
                    echo '<option value="' . htmlspecialchars($lang) . '" ' . $selected . '>' . htmlspecialchars($langName) . '</option>';
                }
                if ($groupName !== '中文') {
                    echo '</optgroup>';
                }
            }
            ?>
        </select>
        <?php
        if (!function_exists('ggai_cnweb_highlight_html')) {
            @require_once __DIR__ . '/../includes/ggai_cnweb_helper.php';
        }
        if (function_exists('ggai_cnweb_highlight_html')) {
            echo ggai_cnweb_highlight_html('header');
        }
        ?>
    </div>
</div>
<script>
function changeLanguage(lang) {
    if (!lang) return;
    var currentUrl = window.location.href;
    var urlObj;
    try {
        urlObj = new URL(currentUrl);
    } catch (e) {
        // 如果 URL 构造函数不支持，使用传统方法
        var baseUrl = currentUrl.split('?')[0];
        var queryString = currentUrl.split('?')[1] || '';
        var params = {};
        if (queryString) {
            queryString.split('&').forEach(function(param) {
                var parts = param.split('=');
                if (parts.length === 2) {
                    params[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
                }
            });
        }
        params['lang'] = lang;
        var newQuery = Object.keys(params).map(function(key) {
            return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
        }).join('&');
        window.location.href = baseUrl + '?' + newQuery;
        return;
    }
    urlObj.searchParams.set('lang', lang);
    window.location.href = urlObj.toString();
}
</script>
<?php
$banner_img = $partnerInfo['banner_img'] ?? '/uploads/partner_logo/index.gif';
// 统一与首页逻辑：优先用合伙人库中的 manual_pdf；如为空，再按当前域名在 partners 表中查找；仍为空则回退系统默认
$manual_pdf = '';
if (!empty($partnerInfo['manual_pdf'])) {
    $manual_pdf = $partnerInfo['manual_pdf'];
} else {
    $host = $_SERVER['HTTP_X_FORWARDED_HOST'] ?? $_SERVER['HTTP_HOST'] ?? '';
    if (strpos($host, ',') !== false) { $host = trim(explode(',', $host)[0]); }
    $host = preg_replace('/:\\d+$/', '', $host); // 去端口
    $host_no_www = preg_replace('/^www\./i', '', $host); // 去掉www.前缀
    $stmt = $pdo->prepare("SELECT manual_pdf FROM partners WHERE domain = ? OR domain = ? LIMIT 1");
    $stmt->execute([$host, $host_no_www]);
    $manual_pdf = $stmt->fetchColumn() ?: '';
}
if ($manual_pdf === '' || $manual_pdf === null) {
    // 使用合伙人下载地址作为前缀，与PPT文件逻辑一致
    $manual_pdf = rtrim($download_url, '/') . '/down/help.pdf';
}
?>
<div class="text-center mb-3 ggai-cnweb-banner-row">
    <img src="<?= htmlspecialchars(get_image_url($banner_img)) ?>" alt="" style="max-width:100%;height:auto;">
    <?php
    if (!function_exists('ggai_cnweb_highlight_html')) {
        @require_once __DIR__ . '/../includes/ggai_cnweb_helper.php';
    }
    if (function_exists('ggai_cnweb_highlight_html')) {
        echo ggai_cnweb_highlight_html('member');
    }
    ?>
</div>
<div class="text-center mb-3">
    <a href="/user/newbie_guide.php" class="btn btn-primary me-2 newbie-guide-btn" title="<?php echo __t('user_btn_newbie_guide_title', '新手导航向导，根据您的情况生成专属操作路线'); ?>">
        <i class="fas fa-compass"></i> <?php echo __t('user_btn_newbie_guide', '新手导航'); ?>
    </a>
    <a href="<?= htmlspecialchars(get_image_url($manual_pdf)) ?>" target="_blank" class="btn btn-danger me-2" title="<?php echo __t('user_btn_manual_title', '全站详细使用说明'); ?>">
        <i class="fas fa-file-pdf"></i> <?php echo __t('user_btn_manual', '使用说明'); ?>
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=BAHELP.mp4') ?>" target="_blank" class="btn me-2" style="background-color: #dc3545; color: #ffc107; border: 1px solid #dc3545;" title="<?php echo __t('user_btn_binance_api_title', '全球最大的币-交-所，现货交易量最大'); ?>">
        <i class="fas fa-video"></i> <?php echo __t('user_btn_binance_api_tutorial', '币AN-API教程'); ?>
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=OEHELP.mp4') ?>" target="_blank" class="btn btn-danger me-2" title="<?php echo __t('user_btn_okx_api_title', '全球第2大币-交-所，对于程序化交易最友好'); ?>">
        <i class="fas fa-video"></i> <?php echo __t('user_btn_okx_api_tutorial', '欧E-API教程'); ?>
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=OEZIAPI.mp4') ?>" target="_blank" class="btn btn-danger me-2" title="<?php echo __t('user_btn_okx_api_title', '全球第2大币-交-所，对于程序化交易最友好'); ?>">
        <i class="fas fa-video"></i> <?php echo __t('user_btn_okx_sub_api_tutorial', '欧E-子帐号API教程'); ?>
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/down/USERHELP.pdf') ?>" target="_blank" class="btn btn-info" title="<?php echo __t('user_btn_user_manual_title', '全站的相关目录及功能介绍'); ?>">
        <i class="fas fa-book"></i> <?php echo __t('user_btn_user_manual', '用户使用手册'); ?>
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=BABUYU.mp4') ?>" target="_blank" class="btn me-2" style="background-color: #dc3545; color: #ffc107; border: 1px solid #dc3545;" title="<?php echo __t('user_btn_binance_buy_usdt_title', '在币AN上购买USDT教程'); ?>">
        <i class="fas fa-shopping-cart"></i> <?php echo __t('user_btn_binance_buy_usdt', '币AN买U'); ?>
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=OEBUYU.mp4') ?>" target="_blank" class="btn" style="background-color: #28a745; color: #fff; border: 1px solid #28a745;" title="<?php echo __t('user_btn_okx_buy_usdt_title', '在欧E上购买USDT教程'); ?>">
        <i class="fas fa-shopping-cart"></i> <?php echo __t('user_btn_okx_buy_usdt', '欧E买U'); ?>
    </a>
</div>
<div class="text-center mb-3">
    <span class="me-2" style="font-weight: bold; color: #fff; text-shadow: 0 0 4px rgba(255, 255, 255, 0.5);"><?php echo __t('user_english_video_label', '英文视频'); ?>:</span>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENBACZ.mp4') ?>" target="_blank" class="btn btn-success me-2" title="Binance Deposit Tutorial">
        <i class="fas fa-video"></i> Binance Deposit Tutorial
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENBAHELP.mp4') ?>" target="_blank" class="btn me-2" style="background-color: #dc3545; color: #ffc107; border: 1px solid #dc3545;" title="Binance API Tutorial">
        <i class="fas fa-video"></i> Binance API Tutorial
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENBASF.mp4') ?>" target="_blank" class="btn btn-warning me-2" title="Binance Bind Authenticator">
        <i class="fas fa-shield-alt"></i> Binance Bind Authenticator
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENOECZ.mp4') ?>" target="_blank" class="btn btn-success me-2" title="OKX Deposit Tutorial">
        <i class="fas fa-video"></i> OKX Deposit Tutorial
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENOEHELP.mp4') ?>" target="_blank" class="btn btn-danger me-2" title="OKX API Tutorial">
        <i class="fas fa-video"></i> OKX API Tutorial
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENOESF.mp4') ?>" target="_blank" class="btn btn-warning me-2" title="OKX Bind Authenticator">
        <i class="fas fa-shield-alt"></i> OKX Bind Authenticator
    </a>
    <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENOEZZIAPI.mp4') ?>" target="_blank" class="btn btn-danger me-2" title="OKX Sub-account API Tutorial">
        <i class="fas fa-video"></i> OKX Sub-account API Tutorial
    </a>
</div>

<?php
// 构建顶部角色展示标签：团队长优先显示"显示名称"，否则显示角色名
$role_badge = $role_name;
if ((($role_id >= 13 && $role_id <= 38) || $role_id == 39)) {
    try {
        // partner_team_leader_commission.partner_id 存的是"合伙人的用户ID"（参见后台设置页写入逻辑）
        // 当前登录用户若为团队长，users.partner_id 存的是 partners.id，需要先映射到合伙人的用户ID
        $partner_owner_uid = null;
        if (!empty($partner_id)) {
            $stmtP = $pdo->prepare("SELECT user_id FROM partners WHERE id=? LIMIT 1");
            $stmtP->execute([intval($partner_id)]);
            $partner_owner_uid = intval($stmtP->fetchColumn() ?: 0);
        }
        // 兜底：若取不到，保持为0，查询将无结果
        $stmt_dn = $pdo->prepare("SELECT display_name FROM partner_team_leader_commission WHERE partner_id=? AND team_leader_id=? LIMIT 1");
        $stmt_dn->execute([intval($partner_owner_uid ?: 0), intval($user_id)]);
        $dn = trim((string)($stmt_dn->fetchColumn() ?: ''));
        if ($dn !== '') { 
            $role_badge = $dn; 
        } else { 
            // 使用语言包，支持实时翻译
            $role_badge = __t('role_team_leader', '团队长');
            if (defined('CURRENT_LANG') && CURRENT_LANG !== 'zh_cn' && CURRENT_LANG !== 'zh_tw' && empty($LANG['role_team_leader'])) {
                if (function_exists('translate_content')) {
                    global $pdo;
                    $translated = translate_content('团队长', CURRENT_LANG, $pdo);
                    if (!empty($translated) && $translated !== '团队长') {
                        $role_badge = $translated;
                    }
                }
            }
        }
    } catch (Throwable $e) { 
        // 使用语言包，支持实时翻译
        $role_badge = __t('role_team_leader', '团队长');
        if (defined('CURRENT_LANG') && CURRENT_LANG !== 'zh_cn' && CURRENT_LANG !== 'zh_tw' && empty($LANG['role_team_leader'])) {
            if (function_exists('translate_content')) {
                global $pdo;
                $translated = translate_content('团队长', CURRENT_LANG, $pdo);
                if (!empty($translated) && $translated !== '团队长') {
                    $role_badge = $translated;
                }
            }
        }
    }
}
?>
<div class="user-info-bar">
    <div class="user-info-item">
        <?php echo __t('user_info_referral_code', '推荐码：'); ?><strong><?=htmlspecialchars($user['referral_code']??'')?></strong>
    </div>
    <div class="user-info-item">
        <?php echo __t('user_info_user_id', '用户ID：'); ?><strong><?=htmlspecialchars($user['id']??'')?></strong>
    </div>
    <div class="user-info-item">
    <span class="vip"><?=htmlspecialchars($role_badge)?></span>
    </div>
    <div class="user-info-item">
        <?php echo __t('user_info_username', '用户名：'); ?><strong><?=htmlspecialchars($user['username']??'')?></strong>
    </div>
    <div class="user-info-item">
        <?php echo __t('user_info_nickname', '昵称：'); ?><strong><?=htmlspecialchars($user['nickname']??'')?></strong>
    </div>
</div>
<?php
// 获取首页显示条数配置
$notice_display_count = intval(get_system_setting('notice_display_count', '5'));
$system_message_display_count = intval(get_system_setting('system_message_display_count', '2'));
$faq1_display_count = intval(get_system_setting('faq1_display_count', '3'));
$faq2_display_count = intval(get_system_setting('faq2_display_count', '3'));

// 查询最新公告（按修改日期排序，使用配置的条数）
$notices = [];
try {
    $stmt = $pdo->prepare("SELECT id, title, title_en, content, content_en, updated_at, created_at FROM notices_faqs WHERE type='notice' AND is_active=1 ORDER BY updated_at DESC, created_at DESC LIMIT ?");
    $stmt->bindValue(1, $notice_display_count, PDO::PARAM_INT);
    $stmt->execute();
    $notices = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
    error_log('查询公告失败: ' . $e->getMessage());
}

// 查询系统消息（使用配置的条数）
$stmt = $pdo->prepare("SELECT id, title, content, is_read, created_at, priority FROM user_messages WHERE to_user_id=? ORDER BY is_read ASC, priority='important' DESC, priority='medium' DESC, created_at DESC LIMIT ?");
$stmt->bindValue(1, $user_id, PDO::PARAM_INT);
$stmt->bindValue(2, $system_message_display_count, PDO::PARAM_INT);
$stmt->execute();
$sys_msgs = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 查询常见问题（获取足够多的记录，然后按奇偶分组）- 使用随机排序
$faqs_all = [];
try {
    // 获取足够多的常见问题（取两个配置的最大值乘以2，确保有足够的数据）
    $faq_limit = max($faq1_display_count, $faq2_display_count) * 2;
    $stmt = $pdo->prepare("SELECT id, title, title_en, content, content_en, created_at FROM notices_faqs WHERE type='faq' AND is_active=1 ORDER BY RAND() LIMIT ?");
    $stmt->bindValue(1, $faq_limit, PDO::PARAM_INT);
    $stmt->execute();
    $faqs_all = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
    error_log('查询常见问题失败: ' . $e->getMessage());
}

// 按奇偶分组：常见问题1显示第1,3,5...条，常见问题2显示第2,4,6...条
$faqs1 = [];
$faqs2 = [];
foreach ($faqs_all as $index => $faq) {
    // 索引从0开始，所以第1条是索引0（奇数索引），第2条是索引1（偶数索引）
    if ($index % 2 == 0) {
        // 偶数索引：第1,3,5...条 -> 常见问题1
        if (count($faqs1) < $faq1_display_count) {
            $faqs1[] = $faq;
        }
    } else {
        // 奇数索引：第2,4,6...条 -> 常见问题2
        if (count($faqs2) < $faq2_display_count) {
            $faqs2[] = $faq;
        }
    }
}

$currentLang = defined('CURRENT_LANG') ? CURRENT_LANG : 'zh_cn';
?>
<?php 
// 先计算常见问题2的速度，所有滚动区域都使用这个速度（放慢速度：每条15秒，最少45秒）
$faq2Count = !empty($faqs2) ? count($faqs2) : 0;
$faq2AnimationDuration = max(45, $faq2Count * 15); // 最少45秒，每条15秒（放慢速度）
// 统一使用常见问题2的速度
$unifiedScrollSpeed = $faq2AnimationDuration;
?>
<?php if ($notices || $sys_msgs): ?>
<div class="system-msg-bar mb-3 d-flex align-items-center" style="width:100%;max-width:100vw;overflow:hidden;position:relative;">
    <!-- 左列：公告 -->
    <div class="d-flex align-items-center" style="flex:1;min-width:0;border-right:2px solid #00eaff44;position:relative;overflow:hidden;">
        <span class="sysmsg-label d-flex align-items-center justify-content-center" style="background:linear-gradient(135deg,#ff6b6b,#ff8e53,#ffa500 90%);color:#fff;font-weight:bold;font-size:1.08em;border-radius:18px 0 0 18px;padding:0 18px 0 16px;height:44px;box-shadow:0 0 16px #ff6b6b88,0 2px 8px #222;letter-spacing:2px;min-width:90px;position:relative;z-index:2;cursor:pointer;" onclick="window.location.href='/user/faq.php<?php echo isset($_GET['lang']) ? '&lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
            <i class="fas fa-bullhorn fa-lg me-2" style="color:#fff;text-shadow:0 0 8px #fff;"></i> <?php echo __t('notice_label', '公告'); ?>
    </span>
        <div id="noticeScroll" class="d-flex align-items-center notice-scroll-container" style="white-space:nowrap;min-width:0;flex:1;padding-left:12px;padding-right:12px;position:relative;z-index:1;justify-content:center;">
            <?php 
            $noticeCount = count($notices);
            $animationDuration = $unifiedScrollSpeed; // 使用常见问题2的速度
            ?>
            <?php if ($notices): ?>
                <div class="notice-scroll-content" style="opacity: 1;">
                    <?php foreach ($notices as $notice): 
                        // 获取标题（支持多语言和实时翻译）
                        $noticeTitle = $notice['title'] ?? '';
                        if ($currentLang === 'en' && !empty($notice['title_en'])) {
                            $noticeTitle = $notice['title_en'];
                        } elseif ($currentLang === 'zh_tw') {
                            // 繁体中文：使用 OpenCC 转换或实时翻译
                            if (function_exists('translate_content')) {
                                $translated = translate_content($noticeTitle, 'zh_tw', $pdo);
                                if (!empty($translated) && $translated !== $noticeTitle) {
                                    $noticeTitle = $translated;
                                }
                            }
                        } elseif ($currentLang !== 'zh_cn' && function_exists('translate_content')) {
                            // 其他语言：使用实时翻译
                            $translated = translate_content($noticeTitle, $currentLang, $pdo);
                            if (!empty($translated) && $translated !== $noticeTitle) {
                                $noticeTitle = $translated;
                            }
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;background:linear-gradient(90deg,#fff3e0 0%,#ffb74d 100%);color:#e65100;border:2px solid #ff9800;font-weight:bold;letter-spacing:1px;cursor:pointer;" onclick="window.location.href='/user/faq.php?id=<?php echo $notice['id']; ?><?php echo isset($_GET['lang']) ? '&lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
                            <i class="fas fa-file-alt" style="color:#e65100;"></i> <?php echo htmlspecialchars($noticeTitle); ?>
                            <span style="font-weight:normal;color:inherit;opacity:0.85;margin-left:8px;">(<?php echo date('m-d H:i', strtotime($notice['updated_at'] ?: $notice['created_at'])); ?>)</span>
                        </span>
                    <?php endforeach; ?>
                    <!-- 复制内容以实现无缝循环 -->
                    <?php foreach ($notices as $notice): 
                        $noticeTitle = $notice['title'] ?? '';
                        if ($currentLang === 'en' && !empty($notice['title_en'])) {
                            $noticeTitle = $notice['title_en'];
                        } elseif ($currentLang === 'zh_tw') {
                            if (function_exists('translate_content')) {
                                $translated = translate_content($noticeTitle, 'zh_tw', $pdo);
                                if (!empty($translated) && $translated !== $noticeTitle) {
                                    $noticeTitle = $translated;
                                }
                            }
                        } elseif ($currentLang !== 'zh_cn' && function_exists('translate_content')) {
                            $translated = translate_content($noticeTitle, $currentLang, $pdo);
                            if (!empty($translated) && $translated !== $noticeTitle) {
                                $noticeTitle = $translated;
                            }
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;background:linear-gradient(90deg,#fff3e0 0%,#ffb74d 100%);color:#e65100;border:2px solid #ff9800;font-weight:bold;letter-spacing:1px;cursor:pointer;" onclick="window.location.href='/user/faq.php?id=<?php echo $notice['id']; ?><?php echo isset($_GET['lang']) ? '&lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
                            <i class="fas fa-file-alt" style="color:#e65100;"></i> <?php echo htmlspecialchars($noticeTitle); ?>
                            <span style="font-weight:normal;color:inherit;opacity:0.85;margin-left:8px;">(<?php echo date('m-d H:i', strtotime($notice['updated_at'] ?: $notice['created_at'])); ?>)</span>
                        </span>
                    <?php endforeach; ?>
                </div>
            <?php else: ?>
                <span style="color:#999;font-size:0.95em;padding-left:12px;"><?php echo __t('no_notices', '暂无公告'); ?></span>
            <?php endif; ?>
        </div>
    </div>
    
    <script>
    // 动态设置公告滚动动画时间（无缝循环）
    (function() {
        function setNoticeAnimation() {
            var noticeScroll = document.getElementById('noticeScroll');
            if (noticeScroll) {
                var noticeCount = <?php echo $noticeCount; ?>;
                var animationDuration = <?php echo $animationDuration; ?>;
                if (noticeCount > 0) {
                    var content = noticeScroll.querySelector('.notice-scroll-content');
                    if (content) {
                        content.style.opacity = '1';
                        content.style.animation = 'noticeScrollLeft ' + animationDuration + 's linear infinite';
                    }
                }
            }
        }
        // 立即执行，确保内容立即显示
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', function() {
                setNoticeAnimation();
            });
        } else {
            setNoticeAnimation();
        }
        // 延迟一点再次执行，确保动画正确应用
        setTimeout(setNoticeAnimation, 50);
        
        // 鼠标悬停停止滚动
        var noticeContainer = document.getElementById('noticeScroll');
        if (noticeContainer) {
            noticeContainer.addEventListener('mouseenter', function() {
                var content = this.querySelector('.notice-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'paused';
                }
            });
            noticeContainer.addEventListener('mouseleave', function() {
                var content = this.querySelector('.notice-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'running';
                }
            });
        }
    })();
    </script>
    
    <!-- 右列：系统消息 -->
    <div class="d-flex align-items-center" style="flex:1;min-width:0;position:relative;overflow:hidden;">
        <span class="sysmsg-label d-flex align-items-center justify-content-center" style="background:linear-gradient(135deg,#0ff,#00f,#222 90%);color:#fff;font-weight:bold;font-size:1.08em;border-radius:0 18px 18px 0;padding:0 18px 0 16px;height:44px;box-shadow:0 0 16px #00eaff88,0 2px 8px #222;letter-spacing:2px;min-width:110px;position:relative;z-index:2;">
            <i class="fas fa-broadcast-tower fa-lg me-2" style="color:#00eaff;text-shadow:0 0 8px #00eaff88;"></i> <?php echo __t('user_system_message_label', '系统消息'); ?>
        </span>
        <div id="sysMsgScroll" class="d-flex align-items-center sysmsg-scroll-container" style="white-space:nowrap;min-width:0;flex:1;padding-left:12px;padding-right:12px;position:relative;z-index:1;">
            <?php 
            $sysMsgCount = count($sys_msgs);
            $sysMsgAnimationDuration = $unifiedScrollSpeed; // 使用常见问题2的速度
            ?>
            <?php if ($sys_msgs): ?>
                <div class="sysmsg-scroll-content">
                    <?php foreach ($sys_msgs as $msg):
                        // 颜色与图标按 priority 区分
                        $pri = $msg['priority'] ?? 'general';
                        if ($pri === 'important') {
                            $bg = 'background:linear-gradient(90deg,#fff1f0 0%,#ff7875 100%);color:#cf1322;border:2px solid #ff4d4f;';
                            $icon = '<i class="fas fa-exclamation-circle" style="color:#cf1322;"></i>';
                        } elseif ($pri === 'medium') {
                            $bg = 'background:linear-gradient(90deg,#e6f7ff 0%,#91d5ff 100%);color:#0050b3;border:2px solid #1890ff;';
                            $icon = '<i class="fas fa-info-circle" style="color:#0050b3;"></i>';
                        } else {
                            $bg = 'background:linear-gradient(90deg,#f6ffed 0%,#b7eb8f 100%);color:#237804;border:2px solid #52c41a;';
                            $icon = '<i class="fas fa-bullhorn" style="color:#237804;"></i>';
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;<?php echo $bg; ?>font-weight:bold;letter-spacing:1px;cursor:pointer;<?php if(!$msg['is_read']): ?>box-shadow:0 0 12px #fa541c,0 0 24px #ffec3d;animation:blink 1s infinite alternate;<?php endif; ?>" onclick="window.location.href='/user/messages.php?read=<?php echo $msg['id']; ?>'">
                            <?= $icon ?> <?php
                                $title = (string)($msg['title'] ?? '');
                                $originalTitle = (string)($msg['title'] ?? '');
                                
                                // 非中文语言时：优先翻译到目标语言
                                if ($currentLang !== 'zh_cn' && $currentLang !== 'zh_tw') {
                                    // 对于英文：优先使用语言包中的翻译
                                    if ($currentLang === 'en') {
                                        if ($originalTitle === '返佣到账通知') {
                                            $title = __t('user_msg_commission_paid_title', 'Commission Credited Notification');
                                        } elseif ($originalTitle === '提现审核通过') {
                                            $title = __t('user_msg_withdrawal_approved_title', 'Withdrawal Approved');
                                        } elseif ($originalTitle === '提现审核拒绝') {
                                            $title = __t('user_msg_withdrawal_rejected_title', 'Withdrawal Rejected');
                                        }
                                    }
                                    
                                    // 如果语言包中没有翻译（title 还是原文），使用实时翻译
                                    if ($title === $originalTitle && function_exists('translate_content')) {
                                        $translated = translate_content($originalTitle, $currentLang, $pdo);
                                        if (!empty($translated) && $translated !== $originalTitle) {
                                            $title = $translated;
                                        }
                                    }
                                }
                                echo htmlspecialchars($title);
                            ?>
                            <span style="font-weight:normal;color:inherit;opacity:0.85;margin-left:8px;">(<?php echo date('m-d H:i',strtotime($msg['created_at'])); ?>)</span>
                            <?php if(!$msg['is_read']): ?><span style="margin-left:8px;font-weight:bold;"><?php echo __t('user_system_message_unread', '[未读]'); ?></span><?php endif; ?>
                        </span>
                    <?php endforeach; ?>
                    <!-- 复制内容以实现无缝循环 -->
                    <?php foreach ($sys_msgs as $msg):
                        $pri = $msg['priority'] ?? 'general';
                        if ($pri === 'important') {
                            $bg = 'background:linear-gradient(90deg,#fff1f0 0%,#ff7875 100%);color:#cf1322;border:2px solid #ff4d4f;';
                            $icon = '<i class="fas fa-exclamation-circle" style="color:#cf1322;"></i>';
                        } elseif ($pri === 'medium') {
                            $bg = 'background:linear-gradient(90deg,#e6f7ff 0%,#91d5ff 100%);color:#0050b3;border:2px solid #1890ff;';
                            $icon = '<i class="fas fa-info-circle" style="color:#0050b3;"></i>';
                        } else {
                            $bg = 'background:linear-gradient(90deg,#f6ffed 0%,#b7eb8f 100%);color:#237804;border:2px solid #52c41a;';
                            $icon = '<i class="fas fa-bullhorn" style="color:#237804;"></i>';
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;<?php echo $bg; ?>font-weight:bold;letter-spacing:1px;cursor:pointer;<?php if(!$msg['is_read']): ?>box-shadow:0 0 12px #fa541c,0 0 24px #ffec3d;animation:blink 1s infinite alternate;<?php endif; ?>" onclick="window.location.href='/user/messages.php?read=<?php echo $msg['id']; ?>'">
                            <?= $icon ?> <?php
                                $title = (string)($msg['title'] ?? '');
                                $originalTitle = (string)($msg['title'] ?? '');
                                
                                if ($currentLang !== 'zh_cn' && $currentLang !== 'zh_tw') {
                                    if ($currentLang === 'en') {
                                        if ($originalTitle === '返佣到账通知') {
                                            $title = __t('user_msg_commission_paid_title', 'Commission Credited Notification');
                                        } elseif ($originalTitle === '提现审核通过') {
                                            $title = __t('user_msg_withdrawal_approved_title', 'Withdrawal Approved');
                                        } elseif ($originalTitle === '提现审核拒绝') {
                                            $title = __t('user_msg_withdrawal_rejected_title', 'Withdrawal Rejected');
                                        }
                                    }
                                    
                                    if ($title === $originalTitle && function_exists('translate_content')) {
                                        $translated = translate_content($originalTitle, $currentLang, $pdo);
                                        if (!empty($translated) && $translated !== $originalTitle) {
                                            $title = $translated;
                                        }
                                    }
                                }
                                echo htmlspecialchars($title);
                            ?>
                            <span style="font-weight:normal;color:inherit;opacity:0.85;margin-left:8px;">(<?php echo date('m-d H:i',strtotime($msg['created_at'])); ?>)</span>
                            <?php if(!$msg['is_read']): ?><span style="margin-left:8px;font-weight:bold;"><?php echo __t('user_system_message_unread', '[未读]'); ?></span><?php endif; ?>
                        </span>
                    <?php endforeach; ?>
                </div>
            <?php else: ?>
                <span style="color:#999;font-size:0.95em;padding-left:12px;"><?php echo __t('no_system_messages', '暂无系统消息'); ?></span>
            <?php endif; ?>
        </div>
    </div>
</div>
    <script>
    // 动态设置系统消息滚动动画时间（无缝循环）
    (function() {
        function setSysMsgAnimation() {
            var sysMsgScroll = document.getElementById('sysMsgScroll');
            if (sysMsgScroll) {
                var sysMsgCount = <?php echo $sysMsgCount; ?>;
                var animationDuration = <?php echo $sysMsgAnimationDuration; ?>;
                if (sysMsgCount > 0) {
                    var content = sysMsgScroll.querySelector('.sysmsg-scroll-content');
                    if (content) {
                        content.style.animation = 'sysMsgScrollRight ' + animationDuration + 's linear infinite';
                    }
                }
            }
        }
        setSysMsgAnimation();
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', setSysMsgAnimation);
        } else {
            setTimeout(setSysMsgAnimation, 100);
        }
        
        // 鼠标悬停停止滚动
        var sysMsgContainer = document.getElementById('sysMsgScroll');
        if (sysMsgContainer) {
            sysMsgContainer.addEventListener('mouseenter', function() {
                var content = this.querySelector('.sysmsg-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'paused';
                }
            });
            sysMsgContainer.addEventListener('mouseleave', function() {
                var content = this.querySelector('.sysmsg-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'running';
                }
            });
        }
    })();
    </script>
<?php endif; ?>

<?php if (!empty($faqs1) || !empty($faqs2)): ?>
<div class="system-msg-bar mb-3 d-flex align-items-center" style="width:100%;max-width:100vw;overflow:hidden;position:relative;">
    <!-- 左列：常见问题1 -->
    <div class="d-flex align-items-center" style="flex:1;min-width:0;border-right:2px solid #00eaff44;position:relative;overflow:hidden;">
        <span class="sysmsg-label d-flex align-items-center justify-content-center" style="background:linear-gradient(135deg,#28a745,#20c997 90%);color:#fff;font-weight:bold;font-size:1.08em;border-radius:18px 0 0 18px;padding:0 18px 0 16px;height:44px;box-shadow:0 0 16px #28a74588,0 2px 8px #222;letter-spacing:2px;min-width:120px;position:relative;z-index:2;cursor:pointer;" onclick="window.location.href='/user/faq.php<?php echo isset($_GET['lang']) ? '?lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
            <i class="fas fa-question-circle fa-lg me-2" style="color:#fff;text-shadow:0 0 8px #fff;"></i> <?php echo __t('faq_label_1', '常见问题1'); ?>
        </span>
        <div id="faq1Scroll" class="d-flex align-items-center faq-scroll-container" style="white-space:nowrap;min-width:0;flex:1;padding-left:12px;padding-right:12px;position:relative;z-index:1;justify-content:center;">
            <?php 
            $faq1Count = count($faqs1);
            $faq1AnimationDuration = $unifiedScrollSpeed; // 使用常见问题2的速度
            ?>
            <?php if ($faqs1): ?>
                <div class="faq-scroll-content" style="opacity: 1;">
                    <?php foreach ($faqs1 as $faq): 
                        // 获取标题（支持多语言和实时翻译）
                        $faqTitle = $faq['title'] ?? '';
                        if ($currentLang === 'en' && !empty($faq['title_en'])) {
                            $faqTitle = $faq['title_en'];
                        } elseif ($currentLang === 'zh_tw') {
                            if (function_exists('translate_content')) {
                                $translated = translate_content($faqTitle, 'zh_tw', $pdo);
                                if (!empty($translated) && $translated !== $faqTitle) {
                                    $faqTitle = $translated;
                                }
                            }
                        } elseif ($currentLang !== 'zh_cn' && function_exists('translate_content')) {
                            $translated = translate_content($faqTitle, $currentLang, $pdo);
                            if (!empty($translated) && $translated !== $faqTitle) {
                                $faqTitle = $translated;
                            }
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;background:linear-gradient(90deg,#e8f5e9 0%,#81c784 100%);color:#2e7d32;border:2px solid #4caf50;font-weight:bold;letter-spacing:1px;cursor:pointer;" onclick="window.location.href='/user/faq.php?id=<?php echo $faq['id']; ?><?php echo isset($_GET['lang']) ? '&lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
                            <?php echo htmlspecialchars($faqTitle); ?>
                        </span>
                    <?php endforeach; ?>
                    <!-- 复制内容以实现无缝循环 -->
                    <?php foreach ($faqs1 as $faq): 
                        $faqTitle = $faq['title'] ?? '';
                        if ($currentLang === 'en' && !empty($faq['title_en'])) {
                            $faqTitle = $faq['title_en'];
                        } elseif ($currentLang === 'zh_tw') {
                            if (function_exists('translate_content')) {
                                $translated = translate_content($faqTitle, 'zh_tw', $pdo);
                                if (!empty($translated) && $translated !== $faqTitle) {
                                    $faqTitle = $translated;
                                }
                            }
                        } elseif ($currentLang !== 'zh_cn' && function_exists('translate_content')) {
                            $translated = translate_content($faqTitle, $currentLang, $pdo);
                            if (!empty($translated) && $translated !== $faqTitle) {
                                $faqTitle = $translated;
                            }
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;background:linear-gradient(90deg,#e8f5e9 0%,#81c784 100%);color:#2e7d32;border:2px solid #4caf50;font-weight:bold;letter-spacing:1px;cursor:pointer;" onclick="window.location.href='/user/faq.php?id=<?php echo $faq['id']; ?><?php echo isset($_GET['lang']) ? '&lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
                            <?php echo htmlspecialchars($faqTitle); ?>
                        </span>
                    <?php endforeach; ?>
                </div>
            <?php else: ?>
                <span style="color:#999;font-size:0.95em;padding-left:12px;"><?php echo __t('no_faqs', '暂无常见问题'); ?></span>
            <?php endif; ?>
        </div>
    </div>
    
    <!-- 右列：常见问题2 -->
    <div class="d-flex align-items-center" style="flex:1;min-width:0;position:relative;overflow:hidden;">
        <span class="sysmsg-label d-flex align-items-center justify-content-center" style="background:linear-gradient(135deg,#17a2b8,#138496 90%);color:#fff;font-weight:bold;font-size:1.08em;border-radius:0 18px 18px 0;padding:0 18px 0 16px;height:44px;box-shadow:0 0 16px #17a2b888,0 2px 8px #222;letter-spacing:2px;min-width:120px;position:relative;z-index:2;cursor:pointer;" onclick="window.location.href='/user/faq.php<?php echo isset($_GET['lang']) ? '?lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
            <i class="fas fa-question-circle fa-lg me-2" style="color:#fff;text-shadow:0 0 8px #fff;"></i> <?php echo __t('faq_label_2', '常见问题2'); ?>
        </span>
        <div id="faq2Scroll" class="d-flex align-items-center faq-scroll-container" style="white-space:nowrap;min-width:0;flex:1;padding-left:12px;padding-right:12px;position:relative;z-index:1;">
            <?php 
            // 使用已计算的统一速度
            $faq2AnimationDuration = $unifiedScrollSpeed;
            ?>
            <?php if ($faqs2): ?>
                <div class="faq-scroll-content">
                    <?php foreach ($faqs2 as $faq): 
                        // 获取标题（支持多语言和实时翻译）
                        $faqTitle = $faq['title'] ?? '';
                        if ($currentLang === 'en' && !empty($faq['title_en'])) {
                            $faqTitle = $faq['title_en'];
                        } elseif ($currentLang === 'zh_tw') {
                            if (function_exists('translate_content')) {
                                $translated = translate_content($faqTitle, 'zh_tw', $pdo);
                                if (!empty($translated) && $translated !== $faqTitle) {
                                    $faqTitle = $translated;
                                }
                            }
                        } elseif ($currentLang !== 'zh_cn' && function_exists('translate_content')) {
                            $translated = translate_content($faqTitle, $currentLang, $pdo);
                            if (!empty($translated) && $translated !== $faqTitle) {
                                $faqTitle = $translated;
                            }
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;background:linear-gradient(90deg,#e0f7fa 0%,#4dd0e1 100%);color:#006064;border:2px solid #00bcd4;font-weight:bold;letter-spacing:1px;cursor:pointer;" onclick="window.location.href='/user/faq.php?id=<?php echo $faq['id']; ?><?php echo isset($_GET['lang']) ? '&lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
                            <?php echo htmlspecialchars($faqTitle); ?>
                        </span>
                    <?php endforeach; ?>
                    <!-- 复制内容以实现无缝循环 -->
                    <?php foreach ($faqs2 as $faq): 
                        $faqTitle = $faq['title'] ?? '';
                        if ($currentLang === 'en' && !empty($faq['title_en'])) {
                            $faqTitle = $faq['title_en'];
                        } elseif ($currentLang === 'zh_tw') {
                            if (function_exists('translate_content')) {
                                $translated = translate_content($faqTitle, 'zh_tw', $pdo);
                                if (!empty($translated) && $translated !== $faqTitle) {
                                    $faqTitle = $translated;
                                }
                            }
                        } elseif ($currentLang !== 'zh_cn' && function_exists('translate_content')) {
                            $translated = translate_content($faqTitle, $currentLang, $pdo);
                            if (!empty($translated) && $translated !== $faqTitle) {
                                $faqTitle = $translated;
                            }
                        }
                    ?>
                        <span class="badge mx-2" style="font-size:1.08em;padding:8px 18px;border-radius:18px;background:linear-gradient(90deg,#e0f7fa 0%,#4dd0e1 100%);color:#006064;border:2px solid #00bcd4;font-weight:bold;letter-spacing:1px;cursor:pointer;" onclick="window.location.href='/user/faq.php?id=<?php echo $faq['id']; ?><?php echo isset($_GET['lang']) ? '&lang=' . htmlspecialchars($_GET['lang']) : ''; ?>'">
                            <?php echo htmlspecialchars($faqTitle); ?>
                        </span>
                    <?php endforeach; ?>
                </div>
            <?php else: ?>
                <span style="color:#999;font-size:0.95em;padding-left:12px;"><?php echo __t('no_faqs', '暂无常见问题'); ?></span>
            <?php endif; ?>
        </div>
    </div>
</div>
<script>
    // 动态设置常见问题1滚动动画时间（无缝循环）
    (function() {
        function setFaq1Animation() {
            var faq1Scroll = document.getElementById('faq1Scroll');
            if (faq1Scroll) {
                var faq1Count = <?php echo $faq1Count; ?>;
                var animationDuration = <?php echo $faq1AnimationDuration; ?>;
                if (faq1Count > 0) {
                    var content = faq1Scroll.querySelector('.faq-scroll-content');
                    if (content) {
                        // 确保内容先显示，然后再应用动画
                        content.style.opacity = '1';
                        content.style.animation = 'faqScrollLeft ' + animationDuration + 's linear infinite';
                    }
                }
            }
        }
        // 立即执行，确保内容立即显示
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', function() {
                setFaq1Animation();
            });
        } else {
            setFaq1Animation();
        }
        // 延迟一点再次执行，确保动画正确应用
        setTimeout(setFaq1Animation, 50);
        
        // 鼠标悬停停止滚动
        var faq1Container = document.getElementById('faq1Scroll');
        if (faq1Container) {
            faq1Container.addEventListener('mouseenter', function() {
                var content = this.querySelector('.faq-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'paused';
                }
            });
            faq1Container.addEventListener('mouseleave', function() {
                var content = this.querySelector('.faq-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'running';
                }
            });
        }
    })();
    
    // 动态设置常见问题2滚动动画时间（无缝循环，速度与常见问题1一致）
    (function() {
        function setFaq2Animation() {
            var faq2Scroll = document.getElementById('faq2Scroll');
            if (faq2Scroll) {
                var faq2Count = <?php echo $faq2Count; ?>;
                var animationDuration = <?php echo $faq2AnimationDuration; ?>; // 使用相同的计算方式，速度一致
                if (faq2Count > 0) {
                    faq2Scroll.querySelector('.faq-scroll-content').style.animation = 'faqScrollRight ' + animationDuration + 's linear infinite';
                }
            }
        }
        setFaq2Animation();
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', setFaq2Animation);
        } else {
            setTimeout(setFaq2Animation, 100);
        }
        
        // 鼠标悬停停止滚动
        var faq2Container = document.getElementById('faq2Scroll');
        if (faq2Container) {
            faq2Container.addEventListener('mouseenter', function() {
                var content = this.querySelector('.faq-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'paused';
                }
            });
            faq2Container.addEventListener('mouseleave', function() {
                var content = this.querySelector('.faq-scroll-content');
                if (content) {
                    content.style.animationPlayState = 'running';
                }
            });
        }
    })();
</script>
<?php endif; ?>

<style>
/* 公告从中间向左滚动，不能覆盖"系统消息"标签 */
@keyframes scrollmsgLeft {
    0% { transform: translateX(calc(50% - 45px)); }
    100% { transform: translateX(calc(-100% - 45px)); }
}

/* 系统消息从右向左滚动，不能超过"系统消息"标签 */
@keyframes scrollmsgRight {
    0% { transform: translateX(100%); }
    100% { transform: translateX(0); }
}

/* 公告从左向右滚动（无缝循环） */
@keyframes noticeScrollLeft {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

/* 系统消息从右向左滚动（无缝循环） */
@keyframes sysMsgScrollRight {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

/* 常见问题1从左向右滚动（无缝循环） */
@keyframes faqScrollLeft {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

/* 常见问题2从右向左滚动（无缝循环） */
@keyframes faqScrollRight {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

/* 滚动容器样式 */
.notice-scroll-container,
.sysmsg-scroll-container,
.faq-scroll-container {
    overflow: hidden;
}

.notice-scroll-content,
.sysmsg-scroll-content,
.faq-scroll-content {
    display: inline-flex;
    align-items: center;
    opacity: 1;
}
@keyframes blink {
    0% { box-shadow:0 0 12px #00eaff,0 0 24px #ff2222; }
    100% { box-shadow:0 0 24px #00eaff,0 0 32px #ff2222,0 0 8px #fff; }
}
.system-msg-bar { background:linear-gradient(90deg,#181c2a 0,#232b3e 100%); border-radius:18px; border:2px solid #00eaff; min-height:48px; display:flex; align-items:center; box-shadow:0 2px 16px #00eaff22; }
.sysmsg-label { box-shadow:0 0 16px #00eaff88,0 2px 8px #222; }
#sysMsgScroll span, #noticeScroll span { margin-right:18px; }
@media (max-width: 768px) {
    .system-msg-bar { font-size:0.98em; min-height:38px; flex-direction:column; }
    .system-msg-bar > div { width:100%; border-right:none !important; border-bottom:2px solid #00eaff44; }
    .system-msg-bar > div:last-child { border-bottom:none !important; }
    .sysmsg-label { border-radius:18px !important; }
    #sysMsgScroll span, #noticeScroll span { padding:6px 10px; font-size:0.98em; }
    .sysmsg-label { font-size:0.98em; padding:0 10px 0 8px; min-width:70px; }
}

/* 新手导航按钮动画效果 */
@keyframes newbieGuideGradient {
    0% {
        background: linear-gradient(90deg, #00eaff 0%, #0051ff 50%, #ff00ff 100%) !important;
        box-shadow: 0 0 20px rgba(0, 234, 255, 0.6), 0 0 40px rgba(0, 234, 255, 0.4);
    }
    25% {
        background: linear-gradient(90deg, #ff00ff 0%, #00eaff 50%, #0051ff 100%) !important;
        box-shadow: 0 0 25px rgba(255, 0, 255, 0.6), 0 0 45px rgba(255, 0, 255, 0.4);
    }
    50% {
        background: linear-gradient(90deg, #0051ff 0%, #ff00ff 50%, #00eaff 100%) !important;
        box-shadow: 0 0 20px rgba(0, 81, 255, 0.6), 0 0 40px rgba(0, 81, 255, 0.4);
    }
    75% {
        background: linear-gradient(90deg, #00eaff 0%, #0051ff 50%, #ff00ff 100%) !important;
        box-shadow: 0 0 25px rgba(0, 234, 255, 0.6), 0 0 45px rgba(0, 234, 255, 0.4);
    }
    100% {
        background: linear-gradient(90deg, #00eaff 0%, #0051ff 50%, #ff00ff 100%) !important;
        box-shadow: 0 0 20px rgba(0, 234, 255, 0.6), 0 0 40px rgba(0, 234, 255, 0.4);
    }
}

.btn.btn-primary.newbie-guide-btn,
a.btn.btn-primary.newbie-guide-btn {
    animation: newbieGuideGradient 3s ease-in-out infinite !important;
    font-weight: bold !important;
    position: relative !important;
    overflow: hidden !important;
    border: 2px solid rgba(0, 234, 255, 0.8) !important;
    text-shadow: 0 0 8px rgba(255, 255, 255, 0.8) !important;
    transition: transform 0.3s ease !important;
    color: #fff !important;
    background: linear-gradient(90deg, #00eaff 0%, #0051ff 50%, #ff00ff 100%) !important;
}

.btn.btn-primary.newbie-guide-btn:hover,
a.btn.btn-primary.newbie-guide-btn:hover {
    transform: scale(1.05) !important;
    animation-duration: 1.5s !important;
}

.btn.btn-primary.newbie-guide-btn i,
a.btn.btn-primary.newbie-guide-btn i {
    animation: spin 2s linear infinite !important;
}
</style>
<script>
// 确保新手导航按钮动画正确应用
document.addEventListener('DOMContentLoaded', function() {
    const newbieBtn = document.querySelector('.newbie-guide-btn');
    if (newbieBtn) {
        // 强制应用初始背景色
        newbieBtn.style.background = 'linear-gradient(90deg, #00eaff 0%, #0051ff 50%, #ff00ff 100%)';
        newbieBtn.style.animation = 'newbieGuideGradient 3s ease-in-out infinite';
        newbieBtn.style.border = '2px solid rgba(0, 234, 255, 0.8)';
        newbieBtn.style.color = '#fff';
        // 确保动画正在运行
        newbieBtn.style.animationPlayState = 'running';
    }
});
</script>


<div class="row g-4 mb-4">
    <div class="col-md-3">
        <div class="card tech-card text-center shadow-sm">
            <div class="card-body">
                <div class="formula"><?php echo $equity_formula; ?>, <a href="/user/api-bind.php" style="color: #b2f7ff; text-decoration: underline;"><?php echo __t('user_equity_bind_api_prefix', '绑定API：'); ?><?php echo $personal_api_count; ?><?php echo __t('user_equity_bind_api_suffix', '个'); ?></a></div>
                <div class="sub-info">
                    <?php echo __t('user_equity_asset_label', '资产：'); ?><span style="color: red; font-size: 2.2em; font-weight: bold; font-family: 'Consolas', 'Menlo', 'Monaco', monospace; letter-spacing: 1px;"><?php echo $equity_total; ?></span> <?php echo __t('user_equity_profit_label', '毛利：'); ?><span style="color: red; font-size: 2.2em; font-weight: bold; font-family: 'Consolas', 'Menlo', 'Monaco', monospace; letter-spacing: 1px;"><?php echo intval($realtime_power * 3); ?></span>
                </div>
                <div class="main-num" style="font-size: 0.85em;">
                    <?php echo __t('user_equity_profit_after_fees_label', '+毛利(需扣杠杆利息与手续费)后约：'); ?><?php 
                    $profit = intval($realtime_power * 3);
                    $total_sum = $equity_total + $profit;
                    ?><span style="color: red; font-size: 2.2em; font-weight: bold; font-family: 'Consolas', 'Menlo', 'Monaco', monospace; letter-spacing: 1px;"><?php echo $total_sum; ?></span>
                </div>
                
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <?php
        // 计算当前用户的实时算力预警状态
        $current_user_equity = $equity_total; // 使用个人资产作为权益
        $current_user_power_ratio = 0;
        if ($current_user_equity > 0) {
            $current_user_power_ratio = ($realtime_power / $current_user_equity) * 100;
        }
        
        // 判断预警级别
        $is_emergency = ($current_user_power_ratio < 1 && $current_user_equity > 0) || $realtime_power < 20;
        $is_warning = ($current_user_power_ratio < 2 && $current_user_equity > 0) || $realtime_power < 30;
        
        // 设置卡片样式
        $card_style = '';
        if ($is_emergency) {
            $card_style = 'background: linear-gradient(135deg, #ff6b6b 0%, #ee5a52 100%); border: 2px solid #dc3545; box-shadow: 0 4px 24px rgba(220,53,69,0.3);';
        } elseif ($is_warning) {
            $card_style = 'background: linear-gradient(135deg, #ffd93d 0%, #ffc107 100%); border: 2px solid #ffc107; box-shadow: 0 4px 24px rgba(255,193,7,0.3);';
        }
        ?>
        <div class="card tech-card text-center shadow-sm" style="<?= $card_style ?>">
            <div class="card-body">
                <div class="formula"><?php echo __t('user_power_base_label', '基础：'); ?><?php echo $points_base; ?> + <?php echo __t('user_power_float_label', '浮：'); ?>(<?php echo $float_power_show; ?>)</div>
                <div class="sub-info"><?php echo __t('user_power_float_label', '浮：'); ?><?php echo $unrealized_formula; ?></div>
                <div class="main-num" style="<?= $is_emergency || $is_warning ? 'color: #fff; text-shadow: 0 0 8px rgba(255,255,255,0.8);' : '' ?>">
                    <span style="font-size: 0.7em;"><?php echo __t('user_power_realtime_label', '实时算力'); ?> </span><span style="color: red;"><?php echo $realtime_power; ?></span><span style="font-size: 0.7em; cursor: help;" title="需扣杠杆利息与手续费，实际约 1：2.5至2.7左右"> *3=毛利 </span><span style="color: red;"><?php echo intval($realtime_power * 3); ?></span>
                    <?php if ($is_emergency || $is_warning): ?>
                        <br><small style="font-size: 0.7em; opacity: 0.9;">
                            (比例: <?= number_format($current_user_power_ratio, 2) ?>%)
                        </small>
                    <?php endif; ?>
                </div>
                <?php if ($is_emergency): ?>
                    <div class="alert alert-danger mt-2 mb-0" style="font-size: 0.8em; padding: 4px 8px; border-radius: 8px;">
                        <i class="fas fa-exclamation-triangle"></i> <?php echo __t('user_power_urgent', '紧急预警'); ?>
                    </div>
                <?php elseif ($is_warning): ?>
                    <div class="alert alert-warning mt-2 mb-0" style="font-size: 0.8em; padding: 4px 8px; border-radius: 8px;">
                        <i class="fas fa-exclamation-circle"></i> <?php echo __t('user_power_warning', '算力预警'); ?>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card tech-card text-center shadow-sm">
            <div class="card-body">
                <?php 
                // 用户界面：负数显示为0，但保留原始值用于其他地方
                $display_can_withdraw = $commission_can_withdraw < 0 ? 0 : $commission_can_withdraw;
                ?>
                <div class="main-num" <?php if ($commission_can_withdraw < 0): ?>style="text-decoration: underline; color: #dc3545;" title="实际可提现为负数: <?php echo number_format($commission_can_withdraw, 2); ?> USDT"<?php endif; ?>>
                    <span style="font-size: 0.7em;"><?php echo __t('user_withdrawable_label', '可提余额'); ?> </span><?php echo number_format($display_can_withdraw, 2); ?>
                    <?php if ($commission_can_withdraw < 0): ?>
                        <br><small class="text-muted"><?php echo __t('user_commission_negative_hint', '(负数已显示为0)'); ?></small>
                    <?php endif; ?>
                </div>
                <div class="label" style="font-size: 1.5em; margin-top: 8px; cursor: help; color: #00eaff;" title="<?php echo htmlspecialchars($profit_detail_tooltip, ENT_QUOTES, 'UTF-8'); ?>">总平仓盈亏 <span style="color: red; font-weight: bold;"><?php echo number_format($total_profit, 2, '.', ''); ?></span> U</div>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card tech-card text-center shadow-sm">
            <div class="card-body">
                <div class="main-num"><span style="font-size: 0.7em;"><?php echo __t('user_team_total_label', '团队总数'); ?> </span><?php echo $total_team_count . "({$direct_count}/{$indirect_count})"; ?></div>
                <div class="label" style="font-size: 1.5em; margin-top: 8px; cursor: help; color: #00eaff;" title="算力只计算平仓盈亏，各自选择不同的杠杆会产生不同的利息与手续费，这个需自行承担">总消耗算力 <span style="color: red; font-weight: bold;"><?php echo number_format($total_power_consumed, 2, '.', ''); ?></span> U</div>
            </div>
        </div>
    </div>
</div>

<div class="row g-4 mb-4">
    <div class="col-md-3">
        <a href="invite.php" class="btn btn-info w-100"><i class="fas fa-user-plus"></i> <?php echo __t('user_btn_invite', '邀请好友'); ?></a>
    </div>
    <div class="col-md-3">
        <a href="deposit.php" class="btn btn-primary w-100"><i class="fas fa-arrow-down"></i> <?php echo __t('user_btn_deposit', '充值'); ?></a>
    </div>
    <div class="col-md-3">
        <a href="api-bind.php" class="btn btn-success w-100"><i class="fas fa-cogs"></i> <?php echo __t('user_btn_api_manage', 'API管理'); ?></a>
    </div>
    <div class="col-md-3">
        <a href="team_structure.php" class="btn btn-secondary w-100"><i class="fas fa-users"></i> <?php echo __t('user_btn_team', '我的团队'); ?></a>
    </div>
</div>
<div class="mb-3 p-2 rounded user-commission-summary-strip member-user-strip">
    <b class="strip-label"><?php echo __t('user_commission_label', '返佣余额：'); ?></b>
    <span style="font-size:1.25em;font-weight:bold;">
    <span class="strip-label"><?php echo __t('user_commission_can_withdraw', '可提'); ?></span> <span class="text-success fw-bold" <?php if ($commission_can_withdraw < 0): ?>style="text-decoration: underline; color: #dc3545;" title="实际可提现为负数: <?php echo number_format($commission_can_withdraw, 2); ?> USDT"<?php endif; ?>><?php echo number_format($display_can_withdraw, 2); ?><?php if ($commission_can_withdraw < 0): ?> <small class="text-muted"><?php echo __t('user_commission_negative_hint', '(负数已显示为0)'); ?></small><?php endif; ?></span> /
    <span class="strip-label"><?php echo __t('user_commission_withdrawn', '已提'); ?></span> <span class="text-primary fw-bold"><?php echo number_format($commission_withdrawn_display,2); ?></span> /
    <span class="strip-label"><?php echo __t('user_commission_frozen', '冻结'); ?></span> <span class="text-danger fw-bold"><?php echo number_format($commission_frozen,2); ?></span>
    <span class="strip-meta" style="font-size:0.98em;"><?php echo __t('user_commission_total', '总额：'); ?><?php echo number_format($commission_total,2); ?></span>
    </span>
    <?php 
    $stmt = $pdo->query("SELECT SUM(amount) FROM public_commission_pool");
    $pool_total = $stmt->fetchColumn();
    // 新增：根据当前时间动态生成公共补贴池基数（递增加速版，按分钟线性递增）
    $start = strtotime('2025-06-01 00:00:00');
    $now_ts = time();

    if ($now_ts < $start) {
        $base_pool = 13000;
    } else {
        $start_date = new DateTime('2025-06-01 00:00:00');
        $now_date = new DateTime();
        // 修正月份计算逻辑，循环内每次new DateTime
        $months = 0;
        if ($now_ts >= $start) {
            $months = 0;
            while (true) {
                $next_month = new DateTime('2025-06-01 00:00:00');
                $next_month->modify('+' . ($months + 1) . ' months');
                if ($now_date < $next_month) break;
                $months++;
            }
        }
        // 累计增长
        $total_increase = 0;
        for ($i = 0; $i < $months; $i++) {
            $inc = 10000 + $i * 5000;
            if ($inc > 30000) $inc = 30000;
            $total_increase += $inc;
        }
        // 本月增长量
        $this_month_increase = 10000 + $months * 5000;
        if ($this_month_increase > 30000) $this_month_increase = 30000;
        // 本月起止
        $this_month_start = new DateTime('2025-06-01 00:00:00');
        $this_month_start->modify("+{$months} months");
        $this_month_start_ts = $this_month_start->getTimestamp();
        $next_month_start = new DateTime('2025-06-01 00:00:00');
        $next_month_start->modify("+" . ($months + 1) . " months");
        $next_month_start_ts = $next_month_start->getTimestamp();
        // 按分钟递增
        $month_minutes = intval(($next_month_start_ts - $this_month_start_ts) / 60);
        $passed_minutes = intval(($now_ts - $this_month_start_ts) / 60);
        $passed_minutes = max(0, min($passed_minutes, $month_minutes));
        // 本月已增长
        $this_month_grow = $month_minutes > 0 ? $this_month_increase * ($passed_minutes / $month_minutes) : 0;
        // 最终值
        $base_pool = 13000 + $total_increase + $this_month_grow;
    }
    // 调试输出递增公式相关变量（已隐藏）
    /*
    echo '<pre style="color:#333;background:#fffbe6;border:1px solid #ffe58f;padding:8px 12px;margin-bottom:8px;">';
    echo 'start_date=' . (isset($start_date) ? $start_date->format('Y-m-d H:i:s') : '') . PHP_EOL;
    echo 'now_date=' . (isset($now_date) ? $now_date->format('Y-m-d H:i:s') : '') . PHP_EOL;
    echo 'months=' . $months . PHP_EOL;
    echo 'total_increase=' . $total_increase . PHP_EOL;
    echo 'this_month_increase=' . $this_month_increase . PHP_EOL;
    echo 'month_minutes=' . $month_minutes . PHP_EOL;
    echo 'passed_minutes=' . $passed_minutes . PHP_EOL;
    echo 'this_month_grow=' . $this_month_grow . PHP_EOL;
    echo 'base_pool=' . $base_pool . PHP_EOL;
    echo '</pre>';
    */
    ?>
    <span class="strip-accent-recharge" style="font-size:1.25em;font-weight:bold;margin-left:2em;">
        <?php echo __t('user_total_recharge_label', '总充值'); ?><?php echo number_format($total_recharge,2); ?>U 
        <a href="commission_to_power.php" class="btn btn-info btn-sm" title="<?php echo __t('user_commission_to_power_title', '将返佣余额转换为算力，可用于自己或下级用户'); ?>">
            <i class="fas fa-exchange-alt"></i> <?php echo __t('user_commission_to_power_btn', '返佣转算力(自己或下级用户)'); ?>
        </a>
        <span class="strip-accent-pool"><?php echo __t('user_power_pool_label', '公共补贴池余额：'); ?><?php echo number_format($base_pool + 6*floatval($pool_total),2); ?> USDT</span>
        <?php if ($commission_frozen > 0 && $total_recharge < 100): ?>
            <span class="strip-hint" style="font-size:0.9em;margin-left:10px;">
                <?php echo __t('user_commission_frozen_hint', '（30天以上冻结的部分会归公共补贴池，请在30天内充值100即可激活冻结部分）'); ?>
            </span>
        <?php endif; ?>
    </span>

</div>
<!-- 新增：交-易-所及官方推荐码 -->
<div class="card mb-4" style="background:#f8fafd;border-radius:10px;border:1px solid #e3e8ee;padding:16px 18px 10px 18px;">
    <div style="font-weight:600;font-size:1.1em;margin-bottom:8px;color:#007bff;">
        <i class="fas fa-university"></i> <?php echo __t('user_exchange_promo_title', '交-易-所及官方推荐码'); ?>（
        <?php echo __t('user_exchange_promo_subtitle', '直接下载APP在注册时填写免翻-QIANG'); ?>
        <?php if (!$has_partner_referral): ?>
            （<a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/down/sf.apk') ?>" target="_blank" style="color: #ff0000; font-weight: bold;"><?php echo __t('user_exchange_promo_verifier', '点击可下载身份验证器'); ?></a>）
        <?php endif; ?>
        <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENBASF.mp4') ?>" target="_blank" style="color: #ff9800; font-weight: bold; margin-left: 4px;"><?php echo __t('user_exchange_binance_authenticator', '币AN绑定身份验证器教程'); ?></a>，
        <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=ENOESF.mp4') ?>" target="_blank" style="color: #ff9800; font-weight: bold; margin-left: 4px;"><?php echo __t('user_exchange_okx_authenticator', '欧E绑定身份验证器教程'); ?></a>
    ）</div>
    <div class="row">
        <div class="col-md-6 col-12 mb-2">
            <span style="font-weight:700;color:#fff;background:#007bff;padding:2px 10px;border-radius:6px;box-shadow:0 2px 8px #007bff44;letter-spacing:1px;" title="<?php echo __t('user_btn_binance_api_title', '全球最大的币-交-所，现货交易量最大'); ?>">
                <?php echo __t('user_exchange_binance_label', '币AN'); ?>
            </span>
            <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/down/ba.apk') ?>" target="_blank" class="badge badge-success" style="margin-left:8px;" title="币AN的安卓版本的APP下载地址">
                <?php echo __t('user_exchange_binance_app', '下载APP'); ?>
            </a>
            <a href="https://down.ggai365.com/down/ba.apk" target="_blank" class="badge badge-warning" style="margin-left:8px;" title="币AN的备用下载地址">
                <?php echo __t('user_exchange_binance_apk2', 'APK下载2'); ?>
            </a>
            <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=BACZ.mp4') ?>" target="_blank" class="badge badge-success" style="margin-left:8px;color:#fff;font-weight:bold;">
                <?php echo __t('user_exchange_binance_deposit', '币AN充值教程'); ?>
            </a>
            <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=BAHELP.mp4') ?>" target="_blank" class="badge badge-danger" style="margin-left:8px;color:#fff;font-weight:bold;">
                <?php echo __t('user_exchange_binance_api', '币AN-API教程'); ?>
            </a>
            <?php if (!empty($binance_register_url)): ?>
            <a href="<?= htmlspecialchars($binance_register_url) ?>" target="_blank" class="badge badge-info" style="margin-left:8px;" title="如果打不开或要翻QIANG可以下载APP后注册时填推荐码">
                <?php echo __t('user_exchange_register_link', '注册链接'); ?>
            </a>
            <?php endif; ?>
            <span class="badge badge-light" style="background:#eef3fa;color:#007bff;font-size:0.98em;margin-left:8px;">
                <?php echo __t('user_exchange_promo_code', '推荐码：'); ?><?= htmlspecialchars($binance_referral_code) ?>
                <button type="button" class="btn btn-sm btn-outline-secondary" style="padding:2px 6px;font-size:0.8em;margin-left:4px;" onclick="copyToClipboard('<?= htmlspecialchars($binance_referral_code) ?>')" title="<?php echo __t('user_exchange_copy_promo_title', '复制推荐码'); ?>">
                    <i class="fas fa-copy"></i>
                </button>
            </span>
        </div>
        <div class="col-md-6 col-12 mb-2">
            <span style="font-weight:700;color:#fff;background:#007bff;padding:2px 10px;border-radius:6px;box-shadow:0 2px 8px #007bff44;letter-spacing:1px;" title="<?php echo __t('user_btn_okx_api_title', '全球第2大币-交-所，对于程序化交易最友好'); ?>">
                <?php echo __t('user_exchange_okx_label', 'OE'); ?>
            </span>
            <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/down/oe.apk') ?>" target="_blank" class="badge badge-success" style="margin-left:8px;" title="OE的安卓版本的APP下载地址">
                <?php echo __t('user_exchange_okx_app', '下载APP'); ?>
            </a>
            <a href="https://down.ggai365.com/down/oe.apk" target="_blank" class="badge badge-warning" style="margin-left:8px;" title="OE的备用下载地址">
                <?php echo __t('user_exchange_okx_apk2', 'APK下载2'); ?>
            </a>
            <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=OECZ.mp4') ?>" target="_blank" class="badge badge-success" style="margin-left:8px;color:#fff;font-weight:bold;">
                <?php echo __t('user_exchange_okx_deposit', '欧E充值教程'); ?>
            </a>
            <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=OEHELP.mp4') ?>" target="_blank" class="badge badge-danger" style="margin-left:8px;color:#fff;font-weight:bold;">
                <?php echo __t('user_exchange_okx_api', '欧E-API教程'); ?>
            </a>
            <a href="<?= htmlspecialchars(rtrim($download_url, '/') . '/video_download.php?file=OEZIAPI.mp4') ?>" target="_blank" class="badge badge-danger" style="margin-left:8px;color:#fff;font-weight:bold;">
                <?php echo __t('user_exchange_okx_subapi', '欧E-子帐号API教程'); ?>
            </a>
           
           
            <?php if (!empty($okx_register_url)): ?>
            <a href="<?= htmlspecialchars($okx_register_url) ?>" target="_blank" class="badge badge-info" style="margin-left:8px;" title="如果打不开或要翻QIANG可以下载APP后注册时填推荐码">
                <?php echo __t('user_exchange_register_link', '注册链接'); ?>
            </a>
            <?php endif; ?>
            <span class="badge badge-light" style="background:#eef3fa;color:#007bff;font-size:0.98em;margin-left:8px;">
                <?php echo __t('user_exchange_promo_code', '推荐码：'); ?><?= htmlspecialchars($okx_referral_code) ?>
                <button type="button" class="btn btn-sm btn-outline-secondary" style="padding:2px 6px;font-size:0.8em;margin-left:4px;" onclick="copyToClipboard('<?= htmlspecialchars($okx_referral_code) ?>')" title="<?php echo __t('user_exchange_copy_promo_title', '复制推荐码'); ?>">
                    <i class="fas fa-copy"></i>
                </button>
            </span>
        </div>
    </div>
</div>

<div class="card mb-4">
    <div class="card-header"><?php echo __t('user_recent_deposit_title', '最近充值记录'); ?></div>
    <div class="card-body p-0">
        <table class="table table-striped mb-0">
            <thead>
                <tr>
                    <th><?php echo __t('user_table_amount', '金额'); ?></th>
                    <th><?php echo __t('user_table_time', '时间'); ?></th>
                </tr>
            </thead>
            <tbody>
                <?php if (empty($deposits)): ?>
                    <tr><td colspan="2" class="text-center text-muted"><?php echo __t('user_no_deposit_records', '暂无充值记录'); ?></td></tr>
                <?php else: 
                    $deposit_index = 0;
                    foreach ($deposits as $row): 
                        $deposit_index++;
                        $is_hidden = $deposit_index > 10 ? 'style="display:none;" class="deposit-row-hidden"' : '';
                ?>
                    <tr <?php echo $is_hidden; ?>>
                        <td><?php echo htmlspecialchars($row['amount']); ?></td>
                        <td><?php echo $row['created_at']; ?></td>
                    </tr>
                <?php endforeach; endif; ?>
            </tbody>
        </table>
        <?php if ($deposits_total_count > 10): ?>
            <div class="text-center p-2">
                <button type="button" class="btn btn-sm btn-outline-primary" onclick="toggleDeposits()" id="btn-show-deposits">
                    <?php echo __t('user_show_all', '显示全部'); ?> (<?php echo $deposits_total_count; ?>)
                </button>
            </div>
        <?php endif; ?>
    </div>
</div>

<div class="card mb-4">
    <div class="card-header"><?php echo __t('user_recent_withdraw_title', '最近提现记录'); ?></div>
    <div class="card-body p-0">
        <table class="table table-striped mb-0">
            <thead>
                <tr>
                    <th><?php echo __t('user_table_amount', '金额'); ?></th>
                    <th><?php echo __t('user_table_status', '状态'); ?></th>
                    <th><?php echo __t('user_table_time', '时间'); ?></th>
                </tr>
            </thead>
            <tbody>
                <?php if (empty($withdraws)): ?>
                    <tr><td colspan="3" class="text-center text-muted"><?php echo __t('user_no_withdraw_records', '暂无提现记录'); ?></td></tr>
                <?php else: 
                    $withdraw_index = 0;
                    foreach ($withdraws as $row): 
                        $withdraw_index++;
                        $is_hidden = $withdraw_index > 10 ? 'style="display:none;" class="withdraw-row-hidden"' : '';
                ?>
                    <tr <?php echo $is_hidden; ?>>
                        <td><?php echo htmlspecialchars($row['amount']); ?></td>
                        <td><?php echo htmlspecialchars(withdraw_status_label($row['status'])); ?></td>
                        <td><?php echo $row['created_at']; ?></td>
                    </tr>
                <?php endforeach; endif; ?>
            </tbody>
        </table>
        <?php if ($withdraws_total_count > 10): ?>
            <div class="text-center p-2">
                <button type="button" class="btn btn-sm btn-outline-primary" onclick="toggleWithdraws()" id="btn-show-withdraws">
                    <?php echo __t('user_show_all', '显示全部'); ?> (<?php echo $withdraws_total_count; ?>)
                </button>
            </div>
        <?php endif; ?>
    </div>
</div>

<script>
function toggleDeposits() {
    var hiddenRows = document.querySelectorAll('.deposit-row-hidden');
    var btn = document.getElementById('btn-show-deposits');
    
    if (hiddenRows.length > 0 && hiddenRows[0].style.display === 'none') {
        // 显示全部
        hiddenRows.forEach(function(row) {
            row.style.display = '';
        });
        btn.textContent = '<?php echo __t('user_show_less', '收起'); ?>';
    } else {
        // 隐藏超出部分
        hiddenRows.forEach(function(row) {
            row.style.display = 'none';
        });
        btn.textContent = '<?php echo __t('user_show_all', '显示全部'); ?> (<?php echo $deposits_total_count; ?>)';
    }
}

function toggleWithdraws() {
    var hiddenRows = document.querySelectorAll('.withdraw-row-hidden');
    var btn = document.getElementById('btn-show-withdraws');
    
    if (hiddenRows.length > 0 && hiddenRows[0].style.display === 'none') {
        // 显示全部
        hiddenRows.forEach(function(row) {
            row.style.display = '';
        });
        btn.textContent = '<?php echo __t('user_show_less', '收起'); ?>';
    } else {
        // 隐藏超出部分
        hiddenRows.forEach(function(row) {
            row.style.display = 'none';
        });
        btn.textContent = '<?php echo __t('user_show_all', '显示全部'); ?> (<?php echo $withdraws_total_count; ?>)';
    }
}
</script>

<?php if ($show_team_leader_panel): ?>
<div class="card mb-4">
    <div class="card-header bg-warning text-dark">
        <?php echo __t('user_team_leader_section_title', '我的团队长'); ?>
        （<?php echo count($team_leader_stats); ?><?php echo __t('user_people_suffix', '人'); ?>）
    </div>
    <div class="card-body p-0">
        <table class="table table-striped mb-0">
            <thead>
                <tr>
                    <th><?php echo __t('user_team_leader_col_nickname', '团队长昵称'); ?></th>
                    <th><?php echo __t('user_team_leader_col_username', '用户名'); ?></th>
                    <th><?php echo __t('user_team_leader_col_prefix', '前缀'); ?></th>
                    <th><?php echo __t('user_team_leader_col_referral', '推荐码'); ?></th>
                    <th><?php echo __t('user_team_leader_col_display', '显示名称'); ?></th>
                    <th><?php echo __t('user_team_leader_col_levels', '层级'); ?></th>
                    <th><?php echo __t('user_team_leader_col_level_rate', '层级比例'); ?></th>
                    <th><?php echo __t('user_team_leader_col_team_count', '团队人数'); ?></th>
                    <th><?php echo __t('user_team_leader_col_performance', '团队业绩'); ?></th>
                    <th><?php echo __t('user_team_leader_col_actions', '操作'); ?></th>
                </tr>
            </thead>
            <tbody>
                <?php if (empty($team_leader_stats)): ?>
                    <tr><td colspan="7" class="text-center text-muted"><?php echo __t('user_team_leader_empty', '暂无团队长'); ?></td></tr>
                <?php else: foreach ($team_leader_stats as $id => $stat): ?>
                    <tr>
                        <td><?php echo htmlspecialchars($stat['nickname']); ?></td>
                        <td><?php echo htmlspecialchars($stat['username']); ?></td>
                        <td><?php echo htmlspecialchars($stat['team_leader_code']); ?></td>
                        <td><?php echo htmlspecialchars($stat['referral_code']); ?></td>
                        <td><?php
                            $dn = trim($stat['display_name'] ?? '');
                            echo htmlspecialchars($dn !== '' ? $dn : __t('user_team_leader_display_name_unset', '未设置（到"分配/管理团队长"设置）'));
                        ?></td>
                        <td><?php echo $stat['levels']; ?></td>
                        <td>
                            <?php
                            // 确保从 $stats 中读取最新的 rates 和 levels
                            $current_lvl = intval($stat['levels'] ?? 7);
                            $current_rates = is_array($stat['rates']) ? $stat['rates'] : [10,6,4,4,4,4,4];
                            $show_rates = array_slice($current_rates, 0, $current_lvl);
                            echo htmlspecialchars(implode('/', array_map(function($v){ return rtrim(rtrim(number_format((float)$v, 2, '.', ''), '0'), '.'); }, $show_rates)));
                             ?>
                        </td>
                        <td><?php echo htmlspecialchars($stat['team_count']); ?></td>
                        <td><?php echo number_format($stat['team_performance'], 2); ?></td>
                        <td><a href="team_leader_manage.php?id=<?php echo $id; ?>" class="btn btn-sm btn-outline-primary"><?php echo __t('user_team_leader_btn_edit', '设置/变更'); ?></a></td>
                    </tr>
                <?php endforeach; endif; ?>
            </tbody>
        </table>
  </div>
</div>
<?php endif; ?>

<!-- 名下有效API明细表格 -->
<?php if (!empty($api_rows)): ?>
<div class="card mb-4">
    <div class="card-header bg-info text-white">
        <h5 class="card-title mb-0">
            <?php echo __t('user_api_table_title', '名下有效API明细'); ?>
            （<?= $total_api_count ?>）
            <span class="text-warning" style="font-size: 0.85em;"><?= __t('user_api_table_hint_observer', '（注：小于 1 会失去查看观摩帐号的权限）'); ?></span>
        </h5>
    </div>
    <div class="card-body p-0">
        <div class="table-responsive">
            <table class="table table-bordered table-hover mb-0">
                <thead class="table-light">
                    <tr>
                        <th><?php echo __t('user_api_col_user_id', '用户ID'); ?></th>
                        <th><?php echo __t('user_api_col_username', '用户名'); ?></th>
                        <th><?php echo __t('user_api_col_parent', '上级ID/姓名'); ?></th>
                        <th><?php echo __t('user_api_col_api_id', 'APIID'); ?></th>
                        <th><?php echo __t('user_api_col_exchange', '交易所'); ?></th>
                        <th><?php echo __t('user_api_col_strategy', '策略名称'); ?></th>
                        <th><?php echo __t('user_api_col_leverage', '杠杆'); ?></th>
                        <th><?php echo __t('user_api_col_equity', '最新权益'); ?></th>
                        <th><?php echo __t('user_api_col_position', '仓位(%)'); ?></th>
                        <th><?php echo __t('user_api_col_unrealized', '浮动盈亏'); ?></th>
                        <th><?php echo __t('user_api_col_status', 'API状态'); ?></th>
                        <th><?php echo __t('user_api_col_curve', '曲线'); ?></th>
                        <th><?php echo __t('user_api_col_realtime_power', '实时算力'); ?></th>

                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($api_rows as $row): ?>
                    <tr id="row_<?= $row['api_id'] ?>">
                        <td><?php echo intval($row['user_id']); ?></td>
                        <td><?php echo htmlspecialchars($row['username']); ?></td>
                        <td><?php echo intval($row['parent_id']); ?>/<?php echo htmlspecialchars($row['parent_name']); ?></td>
                        <td><a href="/user/power-detailadmin.php?api_id=<?php echo intval($row['api_id']); ?>" target="_blank" style="color: #ff3333; font-weight: bold; text-decoration: underline;" title="点击可查看曲线图"><?php echo intval($row['api_id']); ?></a></td>
                        <td><?php echo htmlspecialchars($row['exchange']); ?></td>
                        <td><?php 
                            $sname = htmlspecialchars($row['strategy'] ?? '-');
                            $currentLang = defined('CURRENT_LANG') ? CURRENT_LANG : 'zh_cn';
                            // 只在中文环境下进行简写处理，其他语言（包括日语、英文）使用完整名称
                            if ($currentLang === 'zh_cn' || $currentLang === 'zh_tw') {
                                // 针对中文名称的缩写与颜色处理
                            $sname = str_replace('合约', '', $sname);
                            $sname = str_replace('带止损', '止', $sname);
                            $sname = str_replace('高速对冲', '高', $sname);
                            $sname = str_replace('策略-', '-', $sname);
                            }
                            // 风险等级或名称关键字判断颜色
                            $color = '';
                            $lower = mb_strtolower($sname, 'UTF-8');
                            if (strpos($lower, '稳') !== false || strpos($lower, '低') !== false || strpos($lower, 'stable') !== false) {
                                $color = 'color: #22bb33; font-weight:bold;'; // 绿色
                            } elseif (strpos($lower, '增强') !== false || strpos($lower, '中') !== false || strpos($lower, 'enhanced') !== false) {
                                $color = 'color: #ffbb33; font-weight:bold;'; // 黄色
                            } elseif (strpos($lower, '激进') !== false || strpos($lower, '高') !== false || strpos($lower, 'aggressive') !== false) {
                                $color = 'color: #ff3333; font-weight:bold;'; // 红色
                            }
                            // 只在中文环境下进行截断，其他语言保留完整策略名
                            $should_shorten = ($currentLang === 'zh_cn' || $currentLang === 'zh_tw') && mb_strlen($sname,'UTF-8')>10;
                            if($should_shorten){
                                echo '<span title="'.$sname.'" style="'.$color.'">'.mb_substr($sname,0,5,'UTF-8').'***</span>';
                            }else{
                                echo '<span style="'.$color.'">'.$sname.'</span>';
                            }
                        ?></td>
                        <td style="text-align: center; font-weight: bold; color: #007bff;">
                            <?php echo intval($row['strategy_leverage']); ?>X
                        </td>
                        <td>
                            <?php if (intval($row['user_id']) === intval($user_id)): ?>
                                <a href="/user/power-detail.php?api_id=<?php echo intval($row['api_id']); ?>" target="_blank" style="text-decoration:underline;color:#00eaff;" title="<?php echo __t('user_api_view_curve', '查看'); ?>">
                                    <?php echo number_format($row['equity'], 2); ?>
                                </a>
                            <?php else: ?>
                                <a href="/user/power-detailadmin.php?api_id=<?php echo intval($row['api_id']); ?>" target="_blank" style="text-decoration:underline;color:#00eaff;" title="<?php echo __t('user_api_view_curve', '查看'); ?>">
                                    <?php echo number_format($row['equity'], 2); ?>
                                </a>
                            <?php endif; ?>
                        </td>
                        <td>
                            <?php if (intval($row['user_id']) === intval($user_id)): ?>
                                <a href="/user/positions.php?api_id=<?php echo intval($row['api_id']); ?>" style="text-decoration:underline;color:#00eaff;" title="<?php echo __t('user_api_view_curve', '查看'); ?>">
                                    <?php echo number_format($row['position_ratio'], 2); ?>
                                </a>
                            <?php else: ?>
                                <?php echo number_format($row['position_ratio'], 2); ?>
                            <?php endif; ?>
                        </td>
                        <td><?php echo number_format($row['unrealized'], 2); ?></td>
                        <td><?php 
                            $status_map = [
                                'active'   => __t('user_api_status_active', '运行中'),
                                'inactive' => __t('user_api_status_inactive', '已停止'),
                                'paused'   => __t('user_api_status_paused', '已暂停'),
                                'error'    => __t('user_api_status_error', '错误'),
                                'pending'  => __t('user_api_status_pending', '待启动'),
                                'stopped'  => __t('user_api_status_stopped', '已停止')
                            ];
                            $status_cn = $status_map[$row['status']] ?? $row['status'];
                            // 根据状态设置颜色
                            $status_color = '';
                            switch($row['status']) {
                                case 'active':
                                    $status_color = 'color: #22bb33; font-weight:bold;'; // 绿色
                                    break;
                                case 'inactive':
                                case 'stopped':
                                    $status_color = 'color: #666666;'; // 灰色
                                    break;
                                case 'paused':
                                    $status_color = 'color: #ffbb33; font-weight:bold;'; // 黄色
                                    break;
                                case 'error':
                                    $status_color = 'color: #ff3333; font-weight:bold;'; // 红色
                                    break;
                                case 'pending':
                                    $status_color = 'color: #0066cc; font-weight:bold;'; // 蓝色
                                    break;
                            }
                            echo '<span style="'.$status_color.'">'.htmlspecialchars($status_cn).'</span>';
                        ?></td>
                        <td>
                            <a href="/user/power-detailadmin.php?api_id=<?php echo intval($row['api_id']); ?>" target="_blank" style="text-decoration:underline;color:#00eaff;" title="<?php echo __t('user_api_view_curve', '查看'); ?>">
                                <?php echo __t('user_api_view_curve', '查看'); ?>
                            </a>
                        </td>
                        <td><?php 
                            // 获取实时算力数据
                            $realtime_power = intval($row['realtime_power']);
                            
                            // 获取最新权益数据（与业务预警页保持一致）
                            $current_equity = floatval($row['equity']);
                            
                            // 计算实时算力占最新权益的比例
                            $power_ratio = 0;
                            if ($current_equity > 0) {
                                $power_ratio = ($realtime_power / $current_equity) * 100;
                            }
                            
                            // 判断是否需要黄色背景和声音提示
                            $cell_style = 'color:red;font-weight:bold;';
                            $need_sound_alert = false;
                            
                            // 条件1：比例少于2% 或 实时算力小于30 - 黄色背景
                            if ($power_ratio < 2 || $realtime_power < 30) {
                                $cell_style = 'color:red;font-weight:bold;background-color: #ffff00;';
                            }
                            
                            // 条件2：比例少于1% 或 实时算力小于20 - 整行黄色背景 + 声音提示
                            if ($power_ratio < 1 || $realtime_power < 20) {
                                $cell_style = 'color:red;font-weight:bold;background-color: #ffff00;';
                                $need_sound_alert = true;
                                // 设置整行背景颜色
                                echo '<script>document.getElementById("row_' . $row['api_id'] . '").style.backgroundColor = "#ffff00";</script>';
                            }
                            
                            echo '<span style="' . $cell_style . '" title="实时算力: ' . number_format($realtime_power, 2) . ', 最新权益: ' . number_format($current_equity, 2) . ', 比例: ' . number_format($power_ratio, 2) . '%">';
                            echo intval($realtime_power);
                            echo '</span>';
                        ?></td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<?php endif; ?>

<?php if (!empty($recent_disabled_apis)): ?>
<div class="card mb-4">
    <div class="card-header bg-danger text-white">
        <h5 class="card-title mb-0">
            <i class="fas fa-ban me-2"></i>
            <?php echo __t('user_disabled_api_title', '近期禁用API记录'); ?>
            <?php echo __t('user_disabled_api_title_suffix', '（最近10条）'); ?>
        </h5>
    </div>
    <div class="card-body p-0">
        <div class="table-responsive">
            <table class="table table-bordered table-hover mb-0">
                <thead class="table-light">
                    <tr>
                        <th><?php echo __t('user_disabled_api_col_api_id', 'API编号'); ?></th>
                        <th><?php echo __t('user_disabled_api_col_user', '用户'); ?></th>
                        <th><?php echo __t('user_disabled_api_col_exchange', '交易所'); ?></th>
                        <th><?php echo __t('user_disabled_api_col_reason', '禁用原因'); ?></th>
                        <th><?php echo __t('user_disabled_api_col_time', '禁用时间'); ?></th>
                        <th><?php echo __t('user_disabled_api_col_review', '审核备注'); ?></th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($recent_disabled_apis as $row): 
                        $uid = intval($row['user_id'] ?? 0);
                    ?>
                    <tr>
                        <td><?php echo intval($row['api_id']); ?></td>
                        <td>
                            ID:<?php echo $uid; ?> 
                            <b><?php echo htmlspecialchars($row['username'] ?? ''); ?></b>
                            <?php if (!empty($row['nickname'])): ?>
                                (<?php echo htmlspecialchars($row['nickname']); ?>)
                            <?php endif; ?>
                        </td>
                        <td><?php echo htmlspecialchars($row['exchange_name'] ?? '-'); ?></td>
                        <td>
                            <?php 
                            $reason = $row['disable_reason'] ?? ['type' => 'unknown', 'text' => '未知', 'color' => 'secondary'];
                            echo '<span class="badge badge-'.$reason['color'].'">'.$reason['text'].'</span>';
                            ?>
                        </td>
                        <td>
                            <?php 
                            $api_id_for_check = intval($row['api_id'] ?? 0);
                            $disable_time = $row['created_at'];
                            $is_recovered = false;
                            $recovered_time = '';

                            if ($api_id_for_check > 0 && isset($recent_recovered_api_times[$api_id_for_check])) {
                                $recovered_time = $recent_recovered_api_times[$api_id_for_check];
                                if (strtotime($recovered_time) > strtotime($disable_time)) {
                                    $is_recovered = true;
                                }
                            }

                            if ($is_recovered) {
                                echo '<span style="color: #28a745; font-weight: bold;">' . htmlspecialchars($disable_time) . '</span>';
                                $flagTpl = __t('user_api_recovered_flag', '✓ 已恢复 ({time})');
                                $flagText = str_replace('{time}', htmlspecialchars($recovered_time), $flagTpl);
                                echo '<br><span style="color: #28a745; font-size: 0.9em;">' . $flagText . '</span>';
                            } else {
                                echo htmlspecialchars($disable_time);
                            }
                            ?>
                        </td>
                        <td>
                            <?php
                            // 审核备注优先顺序：api_accounts.audit_remark > api_change_logs.review_remark > api_change_logs.remark
                            $audit = trim($row['audit_remark'] ?? '');
                            $review = trim($row['review_remark'] ?? '');
                            $remark = trim($row['remark'] ?? '');
                            $display_review = '';
                            if ($audit !== '') {
                                $display_review = $audit;
                            } elseif ($review !== '') {
                                $display_review = $review;
                            } elseif ($remark !== '') {
                                $display_review = $remark;
                            }
                            echo htmlspecialchars($display_review !== '' ? $display_review : '-');
                            ?>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>
<?php else: ?>
<div class="card mb-4">
    <div class="card-header bg-danger text-white">
        <h5 class="card-title mb-0">
            <i class="fas fa-ban me-2"></i>
            <?php echo __t('user_disabled_api_title', '近期禁用API记录'); ?>
            <?php echo __t('user_disabled_api_title_zero', '（0）'); ?>
        </h5>
    </div>
    <div class="card-body">
        <div class="alert alert-info mb-0">
            <p class="mb-0"><?php echo __t('user_disabled_api_empty', '当前暂无禁用API记录。'); ?></p>
        </div>
    </div>
</div>
<?php endif; ?>

<!-- 倒计时按钮和预警提示 -->
<div class="card mb-4">
    <div class="card-header bg-warning text-dark d-flex justify-content-between align-items-center">
        <div>
            <h5 class="card-title mb-0">
                <i class="fas fa-clock me-2"></i><?php echo __t('user_refresh_card_title', '页面自动刷新倒计时'); ?>
            </h5>
        </div>
        <div class="d-flex align-items-center gap-3">
            <!-- 声音开关下拉选项 -->
            <div class="d-flex align-items-center">
                <label class="form-check-label me-2" style="color: #fff; font-weight: bold;">
                    <i class="fas fa-volume-up me-1" id="soundIcon"></i><?php echo __t('user_refresh_sound_label', '声音提示'); ?>
                </label>
                <select class="form-select" id="soundSwitch" style="width: auto; min-width: 120px; font-size: 0.9em;">
                    <option value="on"><?php echo __t('user_refresh_sound_on', '开启'); ?></option>
                    <option value="off"><?php echo __t('user_refresh_sound_off', '关闭'); ?></option>
                    <option value="30min"><?php echo __t('user_refresh_sound_30min', '关30分钟'); ?></option>
                    <option value="1hour"><?php echo __t('user_refresh_sound_1hour', '关1小时'); ?></option>
                    <option value="3hour"><?php echo __t('user_refresh_sound_3hour', '关3小时'); ?></option>
                </select>
            </div>
            <!-- 测试声音按钮 -->
            <button type="button" class="btn btn-sm btn-outline-light" id="testSoundBtn" title="<?php echo __t('user_refresh_test_sound_title', '测试声音播放'); ?>">
                <i class="fas fa-play me-1"></i><?php echo __t('user_refresh_test_sound', '测试声音'); ?>
            </button>
            <span class="badge badge-info" style="background: linear-gradient(135deg, #007bff, #0056b3); color: white; font-size: 1em; padding: 8px 16px; border-radius: 20px; box-shadow: 0 2px 8px rgba(0,123,255,0.3);">
                <i class="fas fa-sync-alt me-1"></i>
                <?php echo __t('user_refresh_badge_prefix', '页面将在'); ?>
                <span id="refreshCountdown" style="font-weight: bold; color: #ffd700;">5:00</span>
                <?php echo __t('user_refresh_badge_suffix', '后自动刷新'); ?>
            </span>
        </div>
    </div>
    <div class="card-body">
        <?php
        // 检查是否有算力不足的API
        $alert_users = [];
        if (!empty($api_rows)) {
            foreach ($api_rows as $row) {
                $realtime_power = intval($row['realtime_power']);
                $current_equity = floatval($row['equity']);
                $power_ratio = 0;
                if ($current_equity > 0) {
                    $power_ratio = ($realtime_power / $current_equity) * 100;
                }
                
                // 检查是否达到预警条件
                if (($power_ratio < 2 && $current_equity > 0) || $realtime_power < 30) {
                    $alert_users[] = [
                        'user_id' => $row['user_id'],
                        'username' => $row['username'],
                        'realtime_power' => $realtime_power,
                        'power_ratio' => $power_ratio,
                        'is_emergency' => ($power_ratio < 1 && $current_equity > 0) || $realtime_power < 20
                    ];
                }
            }
        }
        
        if (!empty($alert_users)): ?>
        <div class="alert alert-warning mb-3" style="background: linear-gradient(135deg, #fff3cd, #ffeaa7); border: 2px solid #ffc107; border-radius: 10px;">
            <h6 class="alert-heading mb-3">
                <i class="fas fa-exclamation-triangle me-2"></i><?php echo __t('user_power_alert_title', '算力不足预警'); ?>
            </h6>
            <div class="row">
                <?php foreach ($alert_users as $alert_user): ?>
                <div class="col-md-6 mb-2">
                    <div class="d-flex align-items-center">
                        <span class="badge <?= $alert_user['is_emergency'] ? 'badge-danger' : 'badge-warning' ?> me-2" style="font-size: 0.9em;">
                            <?= $alert_user['is_emergency'] ? __t('user_power_alert_emergency', '紧急') : __t('user_power_alert_warning', '预警') ?>
                        </span>
                        <span class="text-dark fw-bold">
                            <?php echo __t('user_power_alert_user_id', '用户ID'); ?> <span class="text-primary"><?= $alert_user['user_id'] ?></span> 
                            (<?= htmlspecialchars($alert_user['username']) ?>) 
                            <?php echo __t('user_power_alert_need_recharge', '算力不足需要充值'); ?>
                        </span>
                        <small class="text-muted ms-2">
                            (实时算力: <?= $alert_user['realtime_power'] ?>, 比例: <?= number_format($alert_user['power_ratio'], 2) ?>%)
                        </small>
                    </div>
                </div>
                <?php endforeach; ?>
            </div>
        </div>
        <?php else: ?>
        <div class="alert alert-success mb-3" style="background: linear-gradient(135deg, #d4edda, #c3e6cb); border: 2px solid #28a745; border-radius: 10px;">
            <h6 class="alert-heading mb-0">
                <i class="fas fa-check-circle me-2"></i><?php echo __t('user_power_all_ok_title', '所有API算力充足'); ?>
            </h6>
            <p class="mb-0 mt-2">
                <span style="color: red;"><?php echo __t('user_power_all_ok_line1', '当前所有API的实时算力都处于正常水平，无需充值。'); ?></span><br>
                <?php
                $tips = __t('user_power_all_ok_tips', '');
                if ($tips !== '') {
                    $lines = preg_split('/\r\n|\r|\n/', $tips);
                    foreach ($lines as $line) {
                        if (trim($line) === '') continue;
                        echo '<span style="color:red;">'.htmlspecialchars($line).'</span><br>';
                    }
                }
                ?>
            </p>
        </div>
        <?php endif; ?>
    </div>
</div>

<!-- 推荐API实时曲线表格 -->
<div class="card mb-4">
    <div class="card-header bg-success text-white">
        <h5 class="card-title mb-0">
            <?php echo __t('user_promotion_api_title', '部分API实时资金曲线'); ?>
            <span class="ms-1">
                <button type="button" class="permission-btn" data-bs-toggle="modal" data-bs-target="#permissionRulesModal" onclick="console.log('Button clicked directly');">
                    <i class="fas fa-info-circle me-1"></i><?php echo __t('user_promotion_permission_btn', '查看权限规则'); ?>
                </button>
            </span>
        </h5>
    </div>
    <div class="card-body">
        <div class="table-responsive">
            <table id="promotionTable" class="table table-bordered table-hover">
                <thead class="table-light">
                    <tr>
                        <th><?php echo __t('user_promotion_col_view_curve', '查看曲线'); ?></th>
                        <th><?php echo __t('user_promotion_col_view_trades', '查看成交'); ?></th>
                        <th><?php echo __t('user_promotion_col_strategy', '策略名称'); ?></th>
                        <th><?php echo __t('user_promotion_col_leverage', '策略杠杆'); ?></th>
                        <th><?php echo __t('user_promotion_col_equity', '最新权益'); ?></th>
                        <th><?php echo __t('user_promotion_col_exchange', '交易所'); ?></th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td colspan="6" class="text-center text-muted"><?php echo __t('user_promotion_loading', '加载中....'); ?></td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

<!-- 预留公告/系统消息模块，可后续扩展 -->

<!-- 图表区域：用户权益趋势和每日盈亏 -->
<div class="row mb-4">
    <!-- 用户权益趋势分析（总权益） -->
    <div class="col-xl-6 col-lg-12 mb-4">
        <div class="card shadow">
            <div class="card-header py-3 d-flex justify-content-between align-items-center">
                <h6 class="m-0 font-weight-bold text-primary">
                    <?php echo __t('user_equity_chart_title', '全平台用户实时权益趋势分析（大资金建议用OE的子账号功能可无限接近以下结果）'); ?>
                </h6>
            </div>
            <div class="card-body">
                <canvas id="userEquityChart" width="400" height="300" style="display: block; width: 100%; height: 300px;"></canvas>
            </div>
        </div>
    </div>
    
    <!-- 全平台所有用户总的每日盈亏实时数据 -->
    <div class="col-xl-6 col-lg-12 mb-4">
        <div class="card shadow">
            <div class="card-header py-3 d-flex justify-content-between align-items-center">
                <h6 class="m-0 font-weight-bold" style="color: #007bff;">
                    <?php echo __t('user_daily_profit_chart_title', '全平台所有用户总的每日盈亏实时数据（多个子账号会接近以下结果）'); ?>
                </h6>
            </div>
            <div class="card-body">
                <canvas id="userDailyProfitChart" width="400" height="300" style="display: block; width: 100%; height: 300px;"></canvas>
            </div>
        </div>
    </div>
</div>

<!-- 成交直播入口：居中大按钮 + 渐变色特效；底部快捷操作同步入口 -->
<style>
.ggai-live-stream-entry {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 16px;
    padding: 28px 20px 30px;
    border-radius: 18px;
    background:
        linear-gradient(135deg, rgba(0, 180, 216, 0.18) 0%, rgba(88, 80, 236, 0.16) 55%, rgba(255, 183, 77, 0.14) 100%),
        rgba(12, 18, 36, 0.92);
    border: 1px solid rgba(0, 234, 255, 0.35);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255,255,255,0.06);
}
.ggai-live-stream-entry__text {
    width: 100%;
    max-width: 36rem;
}
.ggai-live-stream-entry__title {
    margin: 0 0 6px;
    font-size: 1.25rem;
    font-weight: 700;
    color: #e8fbff;
    letter-spacing: 0.02em;
}
.ggai-live-stream-entry__hint {
    margin: 0;
    font-size: 0.9rem;
    color: #9fd9e8;
    line-height: 1.45;
}
#btnOpenLiveTradeStream.ggai-live-stream-btn {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    min-width: min(92vw, 340px);
    min-height: 64px;
    padding: 16px 36px;
    border: 0;
    border-radius: 999px;
    font-size: 1.35rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    color: #061820;
    text-decoration: none;
    background: linear-gradient(90deg, #5ef0ff, #7dd3fc, #a78bfa, #ffd27a, #5ef0ff);
    background-size: 300% 100%;
    box-shadow:
        0 10px 28px rgba(0, 234, 255, 0.35),
        0 0 0 3px rgba(94, 240, 255, 0.25),
        0 2px 0 rgba(255,255,255,0.4) inset;
    animation: ggaiLiveBtnShift 3.2s linear infinite, ggaiLiveBtnPulse 1.8s ease-in-out infinite;
    transition: transform .18s ease, filter .18s ease, box-shadow .18s ease;
}
#btnOpenLiveTradeStream.ggai-live-stream-btn:hover {
    transform: translateY(-2px) scale(1.04);
    filter: brightness(1.08);
    color: #041016;
    text-decoration: none;
    box-shadow:
        0 14px 36px rgba(167, 139, 250, 0.45),
        0 0 0 4px rgba(255, 210, 122, 0.35),
        0 2px 0 rgba(255,255,255,0.45) inset;
}
#btnOpenLiveTradeStream.ggai-live-stream-btn:active {
    transform: translateY(0) scale(0.99);
}
#btnOpenLiveTradeStream.ggai-live-stream-btn i {
    font-size: 1.55rem;
    animation: ggaiLiveIconGlow 1.6s ease-in-out infinite;
}
@keyframes ggaiLiveBtnShift {
    0% { background-position: 0% 50%; }
    100% { background-position: 300% 50%; }
}
@keyframes ggaiLiveBtnPulse {
    0%, 100% {
        box-shadow:
            0 10px 28px rgba(0, 234, 255, 0.32),
            0 0 0 3px rgba(94, 240, 255, 0.22),
            0 2px 0 rgba(255,255,255,0.4) inset;
    }
    50% {
        box-shadow:
            0 14px 36px rgba(255, 210, 122, 0.4),
            0 0 0 5px rgba(167, 139, 250, 0.28),
            0 2px 0 rgba(255,255,255,0.45) inset;
    }
}
@keyframes ggaiLiveIconGlow {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.12); opacity: 0.88; }
}
@media (max-width: 576px) {
    #btnOpenLiveTradeStream.ggai-live-stream-btn {
        min-width: 88vw;
        min-height: 58px;
        font-size: 1.22rem;
        padding: 14px 22px;
    }
}
</style>
<?php
$__lts_ps = str_replace('\\', '/', (string) ($_SERVER['SCRIPT_NAME'] ?? '/user/index.php'));
$__lts_base = dirname(dirname($__lts_ps));
if ($__lts_base === '/' || $__lts_base === '' || $__lts_base === '.' || $__lts_base === '\\') {
    $__lts_href = '/user/live_trade_stream_view.php';
} else {
    $__lts_href = rtrim($__lts_base, '/') . '/user/live_trade_stream_view.php';
}
if (function_exists('ggai_member_url_with_impersonate')) {
    $__lts_href = ggai_member_url_with_impersonate($__lts_href);
}
$__lts_href_esc = htmlspecialchars($__lts_href, ENT_QUOTES, 'UTF-8');
?>
<div class="row mb-4">
    <div class="col-12">
        <div class="ggai-live-stream-entry">
            <div class="ggai-live-stream-entry__text">
                <p class="ggai-live-stream-entry__title">
                    <i class="fas fa-broadcast-tower me-1"></i><?php echo __t('user_live_stream_entry_title', '实时成交直播'); ?>
                </p>
                <p class="ggai-live-stream-entry__hint"><?php echo __t('user_live_stream_open_hint', '进入独立页面观看；先确认风险提示；权限与观摩帐号相同；最多 30 条，约 15 秒刷新'); ?></p>
            </div>
            <a class="ggai-live-stream-btn" id="btnOpenLiveTradeStream" href="<?php echo $__lts_href_esc; ?>" target="_blank" rel="noopener noreferrer">
                <i class="fas fa-play-circle"></i><?php echo __t('user_live_stream_open_btn', '打开成交直播'); ?>
            </a>
        </div>
    </div>
</div>

<!-- 联系方式已移至底部语言选择区域下方 -->

<?php if (!empty($_SESSION['admin_impersonate'])): ?>
<div style="position:fixed;top:10px;right:10px;z-index:9999;">
    <a href="/admin/impersonate_logout.php" class="btn btn-danger"><?php echo __t('user_admin_impersonate_exit', '退出伪装，恢复管理员'); ?></a>
</div>
<?php endif; ?>
<script src="/assets/js/jquery-3.7.1.min.js"></script>
<script src="/assets/js/chart.min.js"></script>
<script>
// 立即检查jQuery是否加载
console.log('Script started - jQuery available:', typeof $ !== 'undefined');

// 推荐API实时曲线功能
var GGAI_PROMO_IMP_SID = <?php
    $__impSid = '';
    if (!empty($_SESSION['impersonate_token']) && strpos((string) $_SESSION['impersonate_token'], 'imp_') === 0) {
        $__impSid = (string) $_SESSION['impersonate_token'];
    } elseif (!empty($_COOKIE['ggai_imp_resume']) && strpos((string) $_COOKIE['ggai_imp_resume'], 'imp_') === 0) {
        $__impSid = (string) $_COOKIE['ggai_imp_resume'];
    }
    echo json_encode($__impSid, JSON_UNESCAPED_UNICODE);
?>;
function ggaiPromoHref(path) {
    if (GGAI_PROMO_IMP_SID) {
        path += (path.indexOf('?') >= 0 ? '&' : '?') + '_sid=' + encodeURIComponent(GGAI_PROMO_IMP_SID);
    }
    return path;
}
function loadPromotionApis() {
    // 获取当前页面已显示的API ID列表
    var existingApiIds = [];
    $('table tbody tr').each(function() {
        var apiId = $(this).find('td:eq(3)').text(); // APIID是第4列（索引3）
        if (apiId && !isNaN(apiId)) {
            existingApiIds.push(parseInt(apiId));
        }
    });
    
    // 从数据库获取推荐API的详细信息
    console.log('Starting AJAX request to load promotion APIs...');
    $.ajax({
        url: '../ajax/manage_promotion_apis.php',
        method: 'POST',
        data: {
            action: 'get_details'
        },
        dataType: 'json',
        beforeSend: function() {
            console.log('AJAX request started');
        },
        success: function(response) {
            console.log('AJAX Response:', response);
            if (response.success && response.data.length > 0) {
                // 保存promotion_apis映射关系
                window.promotionApiMapping = response.mapping || {};
                
                // 过滤掉已显示的API
                var filteredApis = response.data.filter(function(api) {
                    return existingApiIds.indexOf(api.id) === -1;
                });
                
                if (filteredApis.length === 0) {
                    $('#promotionTable tbody').html('<tr><td colspan="6" class="text-center text-muted"><?php echo __t('user_promotion_empty_with_team', '暂无可用于推荐的API（当前团队已包含所有推荐API）'); ?></td></tr>');
                    return;
                }
                
                var html = '';
                filteredApis.forEach(function(api, index) {
                    // 获取promotion_apis表中的实际顺序ID
                    var promotionId = getPromotionIdByApiId(api.id);
                    var strategyName = api.strategy_name || '-';
                    var currentLang = (typeof CURRENT_LANG !== 'undefined') ? CURRENT_LANG : 'zh_cn';
                    // 只在中文环境下进行简写处理，其他语言（包括日语、英文）使用完整名称
                    if (currentLang === 'zh_cn' || currentLang === 'zh_tw') {
                    strategyName = strategyName.replace('合约', '').replace('带止损', '止').replace('高速对冲', '高').replace('策略-', '-');
                    }
                    
                    // 根据策略名称设置颜色（支持中英文关键字）
                    var color = '';
                    var lower = strategyName.toLowerCase();
                    if (lower.indexOf('稳') !== -1 || lower.indexOf('低') !== -1 || lower.indexOf('stable') !== -1) {
                        color = 'color: #22bb33; font-weight:bold;'; // 绿色
                    } else if (lower.indexOf('增强') !== -1 || lower.indexOf('中') !== -1 || lower.indexOf('enhanced') !== -1) {
                        color = 'color: #ffbb33; font-weight:bold;'; // 黄色
                    } else if (lower.indexOf('激进') !== -1 || lower.indexOf('高') !== -1 || lower.indexOf('aggressive') !== -1) {
                        color = 'color: #ff3333; font-weight:bold;'; // 红色
                    }
                    
                    // 只在中文环境下进行截断，其他语言保留完整策略名
                    var displayName = strategyName;
                    if ((currentLang === 'zh_cn' || currentLang === 'zh_tw') && strategyName.length > 10) {
                        displayName = strategyName.substring(0, 5) + '***';
                    }
                    
                    html += '<tr>';
                    html += '<td><a href="' + ggaiPromoHref('/user/power-detailGX.php?promotion_id=' + promotionId) + '" target="_blank" class="btn btn-sm btn-primary" style="font-weight: bold;" title="<?php echo __t('user_api_view_curve', '查看'); ?>"><?php echo __t('user_promotion_col_view_curve', '查看曲线'); ?> ' + promotionId + '</a></td>';
                    html += '<td><a href="' + ggaiPromoHref('/user/cjgx.php?promotion_id=' + promotionId) + '" target="_blank" class="btn btn-sm btn-success" style="font-weight: bold;" title="<?php echo __t('user_promotion_col_view_trades', '查看成交'); ?>"><?php echo __t('user_promotion_col_view_trades', '查看成交'); ?></a></td>';
                    html += '<td><span title="' + strategyName + '" style="' + color + '">' + displayName + '</span></td>';
                    html += '<td style="text-align: center; font-weight: bold; color: #007bff;">' + (api.strategy_leverage || 1) + 'X</td>';
                    html += '<td style="font-weight: bold;">' + parseFloat(api.equity || 0).toFixed(2) + '</td>';
                    html += '<td style="font-weight: bold;">' + (api.exchange_name || '未知') + '</td>';
                    html += '</tr>';
                });
                $('#promotionTable tbody').html(html);
            } else {
                $('#promotionTable tbody').html('<tr><td colspan="6" class="text-center text-muted"><?php echo __t('user_promotion_empty', '暂无可用于推荐的API'); ?></td></tr>');
            }
        },
        error: function(xhr, status, error) {
            console.log('AJAX Error:', xhr, status, error);
            console.log('Response Text:', xhr.responseText);
            $('#promotionTable tbody').html('<tr><td colspan="6" class="text-center text-danger"><?php echo __t('user_promotion_load_failed', '加载失败: '); ?>' + error + '</td></tr>');
        }
    });
}

// 根据API ID获取promotion_id
function getPromotionIdByApiId(apiId) {
    if (window.promotionApiMapping && window.promotionApiMapping[apiId]) {
        return window.promotionApiMapping[apiId];
    }
    // 如果没有映射关系，返回数组索引+1作为回退
    return 1;
}


// 检查声音是否应该播放
function shouldPlaySound() {
    // 清理旧的localStorage键
    var oldSoundEnabled = localStorage.getItem('soundEnabled');
    if (oldSoundEnabled !== null) {
        console.log('发现旧的soundEnabled设置，正在清理...');
        localStorage.removeItem('soundEnabled');
    }
    
    var soundSetting = localStorage.getItem('soundSetting') || 'on';
    var soundExpireTime = localStorage.getItem('soundExpireTime');
    var currentTime = Date.now();
    
    console.log('🔊 声音设置检查:', {
        setting: soundSetting,
        expireTime: soundExpireTime,
        currentTime: currentTime,
        expired: soundExpireTime ? currentTime > parseInt(soundExpireTime) : false,
        allLocalStorage: {
            soundSetting: localStorage.getItem('soundSetting'),
            soundExpireTime: localStorage.getItem('soundExpireTime'),
            soundEnabled: localStorage.getItem('soundEnabled')
        }
    });
    
    // 如果是永久关闭，直接返回false
    if (soundSetting === 'off') {
        console.log('❌ 声音提示已永久关闭');
        return false;
    }
    
    // 如果是开启状态，直接返回true
    if (soundSetting === 'on') {
        console.log('✅ 声音提示已开启，允许播放');
        return true;
    }
    
    // 如果是临时关闭，检查是否已过期
    if (soundExpireTime && currentTime > parseInt(soundExpireTime)) {
        console.log('⏰ 临时关闭已过期，恢复开启状态');
        // 过期后自动恢复为开启状态
        localStorage.setItem('soundSetting', 'on');
        localStorage.removeItem('soundExpireTime');
        return true;
    }
    
    // 临时关闭期间
    if (soundSetting !== 'on' && soundExpireTime && currentTime <= parseInt(soundExpireTime)) {
        var remainingMinutes = Math.ceil((parseInt(soundExpireTime) - currentTime) / 1000 / 60);
        console.log('⏳ 声音提示临时关闭中，剩余时间:', remainingMinutes, '分钟');
        return false;
    }
    
    console.log('✅ 默认允许播放声音');
    return true;
}

// 播放算力预警声音
function playPowerAlert() {
    console.log('🎵 尝试播放算力预警声音...');
    
    // 检查声音开关状态
    if (!shouldPlaySound()) {
        console.log('🚫 声音播放被阻止');
        return;
    }
    
    console.log('✅ 声音检查通过，开始播放...');
    
    // 首先尝试MP3文件播放
    playMp3Sound();
}

// 播放MP3声音
function playMp3Sound() {
    try {
        console.log('🎵 尝试播放MP3文件: /assets/sound/算力不足.mp3');
        
        // 使用MP3文件播放声音
        var audio = new Audio('/assets/sound/算力不足.mp3');
        audio.volume = 0.7; // 设置音量
        audio.preload = 'auto'; // 预加载
        
        // 添加播放事件监听
        audio.addEventListener('loadstart', function() {
            console.log('📡 开始加载MP3文件...');
        });
        
        audio.addEventListener('canplay', function() {
            console.log('🎶 MP3文件可以播放');
        });
        
        audio.addEventListener('play', function() {
            console.log('▶️ MP3声音开始播放');
        });
        
        audio.addEventListener('ended', function() {
            console.log('🏁 MP3声音播放结束');
        });
        
        audio.addEventListener('error', function(e) {
            console.log('❌ MP3播放错误:', e);
            console.log('🔄 尝试备用声音方案...');
            playFallbackAlert();
        });
        
        // 尝试播放
        var playPromise = audio.play();
        
        if (playPromise !== undefined) {
            playPromise.then(function() {
                console.log('✅ MP3声音播放成功');
            }).catch(function(error) {
                console.log('⚠️ MP3声音播放失败:', error);
                console.log('🔄 尝试备用声音方案...');
                playFallbackAlert();
            });
        }
        
    } catch(e) {
        console.log('💥 MP3播放异常:', e);
        console.log('🔄 尝试备用声音方案...');
        playFallbackAlert();
    }
}

// 备用声音播放方案（原来的音频生成）
function playFallbackAlert() {
    console.log('🔊 开始播放备用声音（音频生成）...');
    
    try {
        // 检查音频上下文状态
        var audioContext = new (window.AudioContext || window.webkitAudioContext)();
        
        if (audioContext.state === 'suspended') {
            console.log('⚠️ 音频上下文被暂停，尝试恢复...');
            audioContext.resume().then(function() {
                console.log('✅ 音频上下文已恢复');
                playFallbackSound(audioContext);
            }).catch(function(error) {
                console.log('❌ 音频上下文恢复失败:', error);
            });
        } else {
            console.log('✅ 音频上下文状态正常:', audioContext.state);
            playFallbackSound(audioContext);
        }
        
    } catch(e) {
        console.log('💥 备用声音播放失败:', e);
    }
}

// 实际播放备用声音
function playFallbackSound(audioContext) {
    try {
        console.log('🎵 生成备用声音...');
        
        var oscillator = audioContext.createOscillator();
        var gainNode = audioContext.createGain();
        
        oscillator.connect(gainNode);
        gainNode.connect(audioContext.destination);
        
        // 设置声音参数
        oscillator.frequency.setValueAtTime(800, audioContext.currentTime);
        oscillator.frequency.setValueAtTime(600, audioContext.currentTime + 0.1);
        oscillator.frequency.setValueAtTime(800, audioContext.currentTime + 0.2);
        
        gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
        gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
        
        oscillator.start(audioContext.currentTime);
        oscillator.stop(audioContext.currentTime + 0.5);
        
        console.log('✅ 备用声音播放完成');
    } catch(e) {
        console.log('💥 备用声音生成失败:', e);
    }
}

// 检查实时算力预警并播放声音提示
function checkPowerAlerts() {
    console.log('🔍 开始检查算力预警...');
    
    // 多种方式检查黄色预警
    var yellowRows1 = document.querySelectorAll('table tbody tr[style*="background-color: #ffff00"]');
    var yellowRows2 = document.querySelectorAll('table tbody tr[style*="background-color:#ffff00"]');
    var yellowRows3 = document.querySelectorAll('table tbody tr[style*="background-color: #ffff00;"]');
    var yellowRows4 = document.querySelectorAll('table tbody tr[style*="background-color:#ffff00;"]');
    
    var warningCards = document.querySelectorAll('.card.tech-card[style*="background: linear-gradient(135deg, #ffd93d"]');
    var emergencyCards = document.querySelectorAll('.card.tech-card[style*="background: linear-gradient(135deg, #ff6b6b"]');
    
    // 检查预警卡片（排除新用户福利提示）
    var allAlertCards = document.querySelectorAll('.alert-warning, .alert-danger');
    var alertCards = Array.from(allAlertCards).filter(function(card) {
        // 排除新用户福利提示
        return !card.textContent.includes('新用户专享福利');
    });
    
    // 检查所有可能的黄色背景
    var allYellowElements = document.querySelectorAll('*[style*="background-color: #ffff00"], *[style*="background-color:#ffff00"], *[style*="background-color: #ffff00;"], *[style*="background-color:#ffff00;"]');
    
    var totalYellowRows = yellowRows1.length + yellowRows2.length + yellowRows3.length + yellowRows4.length;
    
    console.log('📊 预警检查结果:', {
        yellowRows1: yellowRows1.length,
        yellowRows2: yellowRows2.length,
        yellowRows3: yellowRows3.length,
        yellowRows4: yellowRows4.length,
        totalYellowRows: totalYellowRows,
        warningCards: warningCards.length,
        emergencyCards: emergencyCards.length,
        alertCards: alertCards.length,
        allYellowElements: allYellowElements.length,
        total: totalYellowRows + warningCards.length + emergencyCards.length + alertCards.length
    });
    
    // 输出找到的元素详情
    if (allYellowElements.length > 0) {
        console.log('🎯 找到的黄色元素:', allYellowElements);
        allYellowElements.forEach(function(el, index) {
            console.log('  元素' + index + ':', el.tagName, el.className, el.style.backgroundColor);
        });
    }
    
    // 额外检查：通过文本内容判断是否有预警
    var hasWarningText = false;
    var warningTexts = ['算力不足', '预警', '不足需要充值'];
    
    // 检查是否有明确的预警文本
    warningTexts.forEach(function(text) {
        if (document.body.innerText.includes(text)) {
            hasWarningText = true;
            console.log('📝 发现预警文本:', text);
        }
    });
    
    // 检查是否有"算力充足"的提示，如果有则不应该播放声音
    var hasSufficientPower = document.body.innerText.includes('所有API算力充足') || 
                            document.body.innerText.includes('算力充足') || 
                            document.body.innerText.includes('无需充值') ||
                            document.body.innerText.includes('正常水平') ||
                            document.body.innerText.includes('当前所有API的实时算力都处于正常水平') ||
                            document.body.innerText.includes('所有API的实时算力都处于正常水平');
    
    if (hasSufficientPower) {
        console.log('✅ 检测到算力充足提示，跳过声音播放');
        hasWarningText = false;
        // 直接返回，不进行后续检查
        return;
    }
    
    // 最终判断：只有在真正有预警且没有充足提示时才播放声音
    var shouldPlaySound = false;
    
    if (hasSufficientPower) {
        console.log('✅ 检测到算力充足，不播放声音');
        shouldPlaySound = false;
    } else if (totalYellowRows > 0 || warningCards.length > 0 || emergencyCards.length > 0 || alertCards.length > 0 || hasWarningText) {
        console.log('⚠️ 发现算力预警，准备播放声音...');
        shouldPlaySound = true;
    } else {
        console.log('✅ 未发现算力预警，无需播放声音');
        shouldPlaySound = false;
    }
    
    // 额外检查：如果页面显示算力充足，强制不播放声音
    if (document.body.innerText.includes('所有API算力充足') || 
        document.body.innerText.includes('当前所有API的实时算力都处于正常水平') ||
        document.body.innerText.includes('无需充值')) {
        console.log('🔒 强制检测到算力充足状态，禁止播放声音');
        shouldPlaySound = false;
    }
    
    if (shouldPlaySound) {
        playPowerAlert();
    }
}

// 5分钟自动刷新倒计时
var refreshCountdown = 300; // 5分钟 = 300秒
var refreshTimer;

function startRefreshCountdown() {
    refreshTimer = setInterval(function() {
        refreshCountdown--;
        
        // 更新倒计时显示
        var countdownElement = document.getElementById('refreshCountdown');
        if (countdownElement) {
            var minutes = Math.floor(refreshCountdown / 60);
            var seconds = refreshCountdown % 60;
            countdownElement.textContent = minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
        }
        
        // 时间到，自动刷新页面
        if (refreshCountdown <= 0) {
            // 检查当前时间，如果是每小时的最后5分钟（55-59分钟），则不刷新
            var now = new Date();
            var minutes = now.getMinutes();
            if (minutes >= 55) {
                console.log('当前时间为每小时最后5分钟（' + minutes + '分），跳过自动刷新');
                // 重置倒计时，等待下个周期再检查
                refreshCountdown = 300;
                var countdownElement = document.getElementById('refreshCountdown');
                if (countdownElement) {
                    countdownElement.textContent = '5:00';
                }
                return;
            }
            clearInterval(refreshTimer);
            location.reload();
        }
    }, 1000);
}

// 页面加载完成后加载推荐API
$(document).ready(function() {
    console.log('Document ready - jQuery loaded:', typeof $ !== 'undefined');
    console.log('Bootstrap loaded:', typeof bootstrap !== 'undefined');
    
    // 初始化声音开关状态
    initSoundSwitch();
    
    // 显示当前声音设置状态
    setTimeout(function() {
        console.log('📋 当前声音设置状态:');
        console.log('  - soundSetting:', localStorage.getItem('soundSetting'));
        console.log('  - soundExpireTime:', localStorage.getItem('soundExpireTime'));
        console.log('  - 是否应该播放声音:', shouldPlaySound());
        
        // 注释掉自动播放测试声音，避免页面加载时播放声音
        // if (shouldPlaySound()) {
        //     console.log('🧪 声音设置为开启，尝试播放测试声音...');
        //     setTimeout(function() {
        //         playPowerAlert();
        //     }, 1000);
        // }
    }, 500);
    
    // 加载推荐API数据
    loadPromotionApis();
    
    // 检查实时算力预警
    setTimeout(checkPowerAlerts, 1000);
    
    // 额外检查：延迟更长时间再次检查，确保页面完全加载
    setTimeout(function() {
        console.log('🔄 二次检查算力预警...');
        checkPowerAlerts();
    }, 3000);
    
    // 启动5分钟自动刷新倒计时
    startRefreshCountdown();
    
    // 确保按钮点击事件
    $(document).on('click', '.permission-btn', function(e) {
        console.log('Permission button clicked');
        e.preventDefault();
        $('#permissionRulesModal').modal('show');
    });
    
    // 确保关闭按钮事件
    $(document).on('click', '[data-bs-dismiss="modal"]', function(e) {
        console.log('Close button clicked');
        e.preventDefault();
        $('#permissionRulesModal').modal('hide');
    });
    
    // 手动关闭Modal函数
    window.closePermissionModal = function() {
        console.log('Manual close function called');
        $('#permissionRulesModal').modal('hide');
    };
    
    // 初始化图表
    setTimeout(function() {
        initUserEquityChart();
        initUserDailyProfitChart();
    }, 500);
});

// 初始化声音开关
function initSoundSwitch() {
    console.log('🔧 开始初始化声音开关...');
    
    var soundSwitch = document.getElementById('soundSwitch');
    var soundIcon = document.getElementById('soundIcon');
    
    if (soundSwitch && soundIcon) {
        // 清理旧的localStorage键
        var oldSoundEnabled = localStorage.getItem('soundEnabled');
        if (oldSoundEnabled !== null) {
            console.log('🧹 清理旧的soundEnabled设置:', oldSoundEnabled);
            localStorage.removeItem('soundEnabled');
        }
        
        // 检查是否有过期的临时关闭设置
        checkAndUpdateSoundSetting();
        
        // 从localStorage恢复设置，默认为开启
        var soundSetting = localStorage.getItem('soundSetting') || 'on';
        console.log('📱 恢复声音设置:', soundSetting);
        
        // 确保localStorage中有正确的设置
        if (!localStorage.getItem('soundSetting')) {
            localStorage.setItem('soundSetting', 'on');
            soundSetting = 'on';
            console.log('🆕 首次访问，设置默认开启状态');
        }
        
        soundSwitch.value = soundSetting;
        
        // 更新图标显示
        updateSoundIcon(soundSetting);
        
        // 添加下拉选项事件监听
        soundSwitch.addEventListener('change', function() {
            var selectedValue = this.value;
            var currentTime = Date.now();
            var expireTime = null;
            
            console.log('🎛️ 用户更改声音设置:', selectedValue);
            
            // 根据选择设置过期时间
            switch(selectedValue) {
                case 'on':
                    localStorage.setItem('soundSetting', 'on');
                    localStorage.removeItem('soundExpireTime');
                    break;
                case 'off':
                    localStorage.setItem('soundSetting', 'off');
                    localStorage.removeItem('soundExpireTime');
                    break;
                case '30min':
                    expireTime = currentTime + (30 * 60 * 1000); // 30分钟
                    localStorage.setItem('soundSetting', '30min');
                    localStorage.setItem('soundExpireTime', expireTime.toString());
                    break;
                case '1hour':
                    expireTime = currentTime + (60 * 60 * 1000); // 1小时
                    localStorage.setItem('soundSetting', '1hour');
                    localStorage.setItem('soundExpireTime', expireTime.toString());
                    break;
                case '3hour':
                    expireTime = currentTime + (3 * 60 * 60 * 1000); // 3小时
                    localStorage.setItem('soundSetting', '3hour');
                    localStorage.setItem('soundExpireTime', expireTime.toString());
                    break;
            }
            
            console.log('💾 声音设置已保存:', {
                setting: selectedValue,
                expireTime: expireTime,
                expireDate: expireTime ? new Date(expireTime).toLocaleString() : '无'
            });
            
            // 更新图标显示
            updateSoundIcon(selectedValue);
        });
        
        console.log('✅ 声音开关初始化完成');
    } else {
        console.log('❌ 声音开关元素未找到');
    }
    
    // 添加测试声音按钮事件
    var testSoundBtn = document.getElementById('testSoundBtn');
    if (testSoundBtn) {
        testSoundBtn.addEventListener('click', function() {
            console.log('🧪 用户点击测试声音按钮');
            playPowerAlert();
        });
    }
}

// 检查并更新声音设置（处理过期情况）
function checkAndUpdateSoundSetting() {
    var soundSetting = localStorage.getItem('soundSetting') || 'on';
    var soundExpireTime = localStorage.getItem('soundExpireTime');
    var currentTime = Date.now();
    
    // 如果是临时关闭且已过期，自动恢复为开启
    if (soundExpireTime && currentTime > parseInt(soundExpireTime) && soundSetting !== 'on' && soundSetting !== 'off') {
        console.log('临时关闭已过期，自动恢复为开启状态');
        localStorage.setItem('soundSetting', 'on');
        localStorage.removeItem('soundExpireTime');
        
        // 更新下拉选项显示
        var soundSwitch = document.getElementById('soundSwitch');
        if (soundSwitch) {
            soundSwitch.value = 'on';
        }
    }
}

// 更新声音图标显示
function updateSoundIcon(setting) {
    var soundIcon = document.getElementById('soundIcon');
    if (!soundIcon) return;
    
    switch(setting) {
        case 'on':
            soundIcon.className = 'fas fa-volume-up me-1';
            soundIcon.style.color = '#28a745'; // 绿色
            break;
        case 'off':
            soundIcon.className = 'fas fa-volume-mute me-1';
            soundIcon.style.color = '#dc3545'; // 红色
            break;
        case '30min':
        case '1hour':
        case '3hour':
            soundIcon.className = 'fas fa-clock me-1';
            soundIcon.style.color = '#ffc107'; // 黄色
            break;
        default:
            soundIcon.className = 'fas fa-volume-up me-1';
            soundIcon.style.color = '#28a745';
    }
}

// 添加水印函数（参考power-detailadmin.php的实现）
function addWatermark(canvas, watermarkText) {
    if (!canvas || !watermarkText) return;
    
    const ctx = canvas.getContext('2d');
    const width = canvas.width;
    const height = canvas.height;
    
    // 保存当前状态
    ctx.save();
    
    // 设置水印样式
    ctx.font = 'bold 26px "Microsoft YaHei", Arial, sans-serif';
    ctx.fillStyle = 'rgba(0, 123, 255, 0.08)'; // 蓝色半透明
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';
    
    // 旋转角度（-22.5度，约等于 -Math.PI / 8）
    const rotation = -Math.PI / 8;
    
    // 在画布上绘制多个水印（参考power-detailadmin.php的循环方式）
    for (let x = 0; x <= 1; x += 0.25) {
        for (let y = 0; y <= 1; y += 0.18) {
            const posX = x * width;
            const posY = y * height;
            
            ctx.save();
            ctx.translate(posX, posY);
            ctx.rotate(rotation);
            ctx.fillText(watermarkText, 0, 0);
            ctx.restore();
        }
    }
    
    // 恢复状态
    ctx.restore();
}

// 初始化用户权益趋势图表（只显示总权益）
function initUserEquityChart() {
    // 等待Chart.js加载完成
    if (typeof Chart === 'undefined') {
        setTimeout(initUserEquityChart, 100);
        return;
    }
    
    try {
        const equityData = <?php echo json_encode($equityChartData); ?>;
        const equityCanvas = document.getElementById('userEquityChart');
        
        if (!equityCanvas || !equityData || equityData.length === 0) {
            console.log('用户权益图表数据为空或canvas元素不存在');
            return;
        }
        
        const equityCtx = equityCanvas.getContext('2d');
        const watermarkText = <?php echo json_encode($watermarkText, JSON_UNESCAPED_UNICODE); ?>;
        
        const equityChart = new Chart(equityCtx, {
            type: 'line',
            data: {
                labels: equityData.map(item => item.date),
                datasets: [{
                    label: '总权益',
                    data: equityData.map(item => parseFloat(item.total_equity || 0)),
                    borderColor: 'rgb(75, 192, 192)',
                    backgroundColor: 'rgba(75, 192, 192, 0.1)',
                    tension: 0.4,
                    fill: true
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    yAxes: [{
                        ticks: {
                            display: false  // Y轴不显示数字
                        },
                        gridLines: {
                            display: true
                        }
                    }],
                    xAxes: [{
                        ticks: {
                            maxRotation: 45,
                            minRotation: 45
                        }
                    }]
                },
                tooltips: {
                    enabled: false  // 禁用tooltip，鼠标悬停时不显示数值
                },
                legend: {
                    display: false
                },
                animation: {
                    onComplete: function() {
                        // 图表绘制完成后添加水印
                        addWatermark(equityCanvas, watermarkText);
                    }
                }
            }
        });
        
        console.log('用户权益图表初始化成功');
    } catch (error) {
        console.error('初始化用户权益图表失败:', error);
    }
}

// 初始化全平台每日盈亏图表
function initUserDailyProfitChart() {
    // 等待Chart.js加载完成
    if (typeof Chart === 'undefined') {
        setTimeout(initUserDailyProfitChart, 100);
        return;
    }
    
    try {
        const dailyProfitData = <?php echo json_encode($dailyProfitChartData); ?>;
        const dailyProfitCanvas = document.getElementById('userDailyProfitChart');
        
        if (!dailyProfitCanvas || !dailyProfitData || dailyProfitData.length === 0) {
            console.log('每日盈亏图表数据为空或canvas元素不存在');
            return;
        }
        
        const dailyProfitCtx = dailyProfitCanvas.getContext('2d');
        const dailyProfitColors = dailyProfitData.map(item => {
            const value = parseFloat(item.daily_profit);
            return value >= 0 ? 'rgba(40, 167, 69, 0.6)' : 'rgba(220, 53, 69, 0.6)';
        });
        
        const watermarkText = <?php echo json_encode($watermarkText, JSON_UNESCAPED_UNICODE); ?>;
        
        const dailyProfitChart = new Chart(dailyProfitCtx, {
            type: 'bar',
            data: {
                labels: dailyProfitData.map(item => item.date),
                datasets: [{
                    label: '每日盈亏',
                    data: dailyProfitData.map(item => parseFloat(item.daily_profit)),
                    backgroundColor: dailyProfitColors,
                    borderColor: dailyProfitColors.map(color => color.replace('0.6', '1')),
                    borderWidth: 1
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    yAxes: [{
                        ticks: {
                            display: false  // Y轴不显示数字
                        },
                        gridLines: {
                            display: true
                        }
                    }],
                    xAxes: [{
                        ticks: {
                            maxRotation: 45,
                            minRotation: 45
                        }
                    }]
                },
                tooltips: {
                    enabled: false  // 禁用tooltip，鼠标悬停时不显示数值
                },
                legend: {
                    display: false
                },
                animation: {
                    onComplete: function() {
                        // 图表绘制完成后添加水印
                        addWatermark(dailyProfitCanvas, watermarkText);
                    }
                }
            }
        });
        
        console.log('每日盈亏图表初始化成功');
    } catch (error) {
        console.error('初始化每日盈亏图表失败:', error);
    }
}

</script>

<!-- 权限规则说明弹窗 -->
<div class="modal fade" id="permissionRulesModal" tabindex="-1" aria-labelledby="permissionRulesModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header bg-primary text-white">
                <h5 class="modal-title" id="permissionRulesModalLabel">
                    <i class="fas fa-shield-alt me-2"></i>API查看权限规则
                </h5>
                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close" onclick="closePermissionModal();"></button>
            </div>
            <div class="modal-body">
                <div class="row">
                    <div class="col-12">
                        <h6 class="text-primary mb-3">
                            <i class="fas fa-list-ol me-2"></i>权限规则说明
                        </h6>
                        <div class="table-responsive">
                            <table class="table table-bordered table-hover">
                                <thead class="table-light">
                                    <tr>
                                        <th width="20%">权限类型</th>
                                        <th width="30%">条件</th>
                                        <th width="50%">说明</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr class="table-success">
                                        <td><strong>无限查看</strong></td>
                                        <td>名下有效API ≥ 1个</td>
                                        <td>可无限查看所有曲线和成交明细，无时间限制</td>
                                    </tr>
                                    <tr class="table-info">
                                        <td><strong>充值观看</strong></td>
                                        <td>充值100U+</td>
                                        <td>
                                            <ul class="mb-0">
                                                <li>100U = 1个月观看权限</li>
                                                <li>200U = 2个月观看权限</li>
                                                <li>300U = 3个月观看权限</li>
                                                <li>每满100U多1个月（按30天计算）</li>
                                            </ul>
                                        </td>
                                    </tr>
                                    <tr class="table-warning">
                                        <td><strong>新用户试用</strong></td>
                                        <td>注册后<?php echo $new_user_view_hours ?? 1; ?>小时内</td>
                                        <td>新用户注册后<?php echo $new_user_view_hours ?? 1; ?>小时内可免费查看</td>
                                    </tr>
                                    <tr class="table-danger">
                                        <td><strong>无权限</strong></td>
                                        <td>不满足上述条件</td>
                                        <td>需要充值或绑定有效API才能查看</td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                        
                        <div class="alert alert-info mt-3">
                            <h6 class="alert-heading">
                                <i class="fas fa-lightbulb me-2"></i>温馨提示
                            </h6>
                                <ul class="mb-0">
                                    <li><strong>有效API</strong>：指状态为"运行中"且为付费客户端的API</li>
                                    <li><strong>权限优先级</strong>：API数量 > 充值金额 > 新用户试用</li>
                                </ul>
                        </div>
                        
                        <div class="text-center mt-3">
                            <a href="/user/deposit.php" class="btn btn-primary me-2">
                                <i class="fas fa-credit-card me-1"></i>立即充值
                            </a>
                            <a href="/user/api-bind.php" class="btn btn-success">
                                <i class="fas fa-link me-1"></i>绑定API
                            </a>
                        </div>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal" onclick="closePermissionModal();">
                    <i class="fas fa-times me-1"></i>关闭
                </button>
            </div>
        </div>
    </div>
</div>

<!-- 底部语言选择区域（放在联系方式上方） -->
<?php
// 准备语言选择数据（与首页格式一致）
$currentUrl = $_SERVER['REQUEST_URI'] ?? '/user/index.php';
$parsedUrl = parse_url($currentUrl);
$basePath = $parsedUrl['path'] ?? '/user/index.php';
$query = [];
if (!empty($parsedUrl['query'])) {
    parse_str($parsedUrl['query'], $query);
}
// 去掉已有 lang 参数
unset($query['lang']);
$buildQuery = function(array $q) {
    $qs = http_build_query($q);
    return $qs ? ('?' . $qs) : '';
};
$currentLang = defined('CURRENT_LANG') ? CURRENT_LANG : 'zh_cn';
$supportedLangs = defined('SUPPORTED_LANGS') ? SUPPORTED_LANGS : ['zh_cn', 'zh_tw', 'en'];

// 过滤出实际存在的语言文件
$availableLangs = [];
$langDir = __DIR__ . '/../includes/lang';
foreach ($supportedLangs as $lang) {
    $langFile = $langDir . '/' . $lang . '.php';
    if (file_exists($langFile)) {
        $availableLangs[] = $lang;
    }
}

// 按首页的排序方式：中文在前，然后按字母顺序
// 确保 zh_cn 在第一位
if (in_array('zh_cn', $availableLangs)) {
    $availableLangs = array_diff($availableLangs, ['zh_cn']);
    array_unshift($availableLangs, 'zh_cn');
}
// 确保 zh_tw 在第二位（如果存在）
if (in_array('zh_tw', $availableLangs)) {
    $availableLangs = array_diff($availableLangs, ['zh_tw']);
    $pos = 1;
    array_splice($availableLangs, $pos, 0, 'zh_tw');
}
// 其他语言按字母顺序排序
$chineseLangs = ['zh_cn', 'zh_tw'];
$otherLangs = array_diff($availableLangs, $chineseLangs);
sort($otherLangs);
$availableLangs = array_merge(array_intersect($availableLangs, $chineseLangs), $otherLangs);
?>
<footer class="py-4 mt-5" style="background:#f8f9fa;border-top: 2px solid #e9ecef;">
    <div class="container">
        <!-- 语言选择区域 -->
        <div class="border-top pt-4">
            <div class="row">
                <div class="col-12">
                    <h6 class="text-center mb-4" style="color: #666; font-weight: 600; font-size: 1.1em;">
                        <i class="fas fa-globe me-2" style="color: var(--primary-color, #0066ff);"></i>
                        <?php echo __t('footer_languages_title', '选择语言:'); ?>
                    </h6>
                    <div class="d-flex flex-wrap justify-content-center align-items-center" style="gap: 0.6rem 0.9rem;">
                        <?php
                        // 按首页的排序方式：中文在前，然后按字母顺序
                        // 确保 zh_cn 在第一位
                        if (in_array('zh_cn', $availableLangs)) {
                            $availableLangs = array_diff($availableLangs, ['zh_cn']);
                            array_unshift($availableLangs, 'zh_cn');
                        }
                        // 确保 zh_tw 在第二位（如果存在）
                        if (in_array('zh_tw', $availableLangs)) {
                            $availableLangs = array_diff($availableLangs, ['zh_tw']);
                            $pos = 1;
                            array_splice($availableLangs, $pos, 0, 'zh_tw');
                        }
                        // 确保中文方言按顺序排列
                        $chineseLangsOrder = ['zh_cn', 'zh_tw'];
                        $sortedChineseLangs = [];
                        foreach ($chineseLangsOrder as $clang) {
                            if (in_array($clang, $availableLangs)) {
                                $sortedChineseLangs[] = $clang;
                                $availableLangs = array_diff($availableLangs, [$clang]);
                            }
                        }
                        // 其他语言按字母顺序排序
                        $otherLangs = $availableLangs;
                        sort($otherLangs);
                        $availableLangs = array_merge($sortedChineseLangs, $otherLangs);
                        
                        foreach ($availableLangs as $lang) {
                            $queryLang = $query;
                            $queryLang['lang'] = $lang;
                            $urlLang = $basePath . $buildQuery($queryLang);
                            $isActive = ($currentLang === $lang);
                            $langName = function_exists('get_lang_name') ? get_lang_name($lang) : strtoupper($lang);
                            $langTooltip = function_exists('get_lang_tooltip') ? get_lang_tooltip($lang) : $langName;
                            
                            // 为当前语言添加特殊样式
                            if ($isActive) {
                                echo '<a href="' . htmlspecialchars($urlLang) . '" ';
                                echo 'class="language-link language-link-active" ';
                                echo 'style="background: linear-gradient(135deg, var(--primary-color, #0066ff) 0%, #0052cc 100%); color: white; font-weight: bold; padding: 0.5rem 1rem; border-radius: 6px; text-decoration: none; box-shadow: 0 3px 8px rgba(0,102,255,0.4); display: inline-block; transition: all 0.3s;" ';
                                echo 'title="' . htmlspecialchars($langTooltip) . '">';
                                echo '<i class="fas fa-check-circle me-1"></i>';
                                echo htmlspecialchars($langName);
                                echo '</a>';
                            } else {
                                echo '<a href="' . htmlspecialchars($urlLang) . '" ';
                                echo 'class="language-link" ';
                                echo 'style="background: white; color: #495057; border: 1px solid #dee2e6; padding: 0.5rem 1rem; border-radius: 6px; text-decoration: none; display: inline-block; transition: all 0.3s;" ';
                                echo 'title="' . htmlspecialchars($langTooltip) . '">';
                                echo htmlspecialchars($langName);
                                echo '</a>';
                            }
                        }
                        ?>
                    </div>
                </div>
            </div>
        </div>
        <!-- 快捷操作按钮区域 -->
        <div class="text-center mb-4 mt-4" style="padding: 20px 0;">
            <h6 class="mb-3" style="color: #666; font-weight: 600; font-size: 1.1em;">
                <i class="fas fa-bolt me-2" style="color: var(--primary-color, #0066ff);"></i>
                <?php echo __t('user_quick_actions_title', '快捷操作'); ?>
            </h6>
            <div class="d-flex flex-wrap justify-content-center align-items-center" style="gap: 0.8rem 1rem;">
                <a href="<?php echo isset($__lts_href_esc) ? $__lts_href_esc : htmlspecialchars(function_exists('ggai_mu') ? ggai_mu('/user/live_trade_stream_view.php') : '/user/live_trade_stream_view.php', ENT_QUOTES, 'UTF-8'); ?>" target="_blank" rel="noopener noreferrer" class="btn btn-sm" style="min-width: 120px; font-weight:700; color:#06212a; background:linear-gradient(90deg,#5ef0ff 0%,#7dd3fc 42%,#ffd27a 100%); border:0; box-shadow:0 6px 16px rgba(0,234,255,.25);">
                    <i class="fas fa-broadcast-tower me-1"></i> <?php echo __t('user_live_stream_open_btn', '打开成交直播'); ?>
                </a>
                <a href="/user/deposit.php" class="btn btn-primary btn-sm" style="min-width: 100px;">
                    <i class="fas fa-wallet me-1"></i> <?php echo __t('user_nav_deposit', '充值管理'); ?>
                </a>
                <a href="/user/api-bind.php" class="btn btn-success btn-sm" style="min-width: 100px;">
                    <i class="fas fa-key me-1"></i> <?php echo __t('user_nav_api_manage', 'API管理'); ?>
                </a>
                <a href="/user/invite.php" class="btn btn-warning btn-sm" style="min-width: 100px;">
                    <i class="fas fa-gift me-1"></i> <?php echo __t('user_nav_invite', '邀请有奖'); ?>
                </a>
                <a href="/user/team_structure.php" class="btn btn-info btn-sm" style="min-width: 100px;">
                    <i class="fas fa-users me-1"></i> <?php echo __t('user_nav_team', '我的团队'); ?>
                </a>
                <?php
                $support_member_enabled = intval($GLOBALS['partnerInfo']['support_member_enabled'] ?? 1);
                $role_id_for_support = $_SESSION['role_id'] ?? 0;
                $is_staff_support = (($role_id_for_support >= 13 && $role_id_for_support <= 39) || in_array($role_id_for_support, [9,10,11], true));
                if ($support_member_enabled === 1 || $is_staff_support):
                ?>
                <a href="/user/support.php" target="_blank" class="btn btn-danger btn-sm" style="min-width: 100px;">
                    <i class="fas fa-headset me-1"></i> <?php echo __t('user_nav_support', '在线客服'); ?>
                </a>
                <?php endif; ?>
                <a href="/user/faq.php" class="btn btn-secondary btn-sm" style="min-width: 100px;">
                    <i class="fas fa-question-circle me-1"></i> <?php echo __t('user_nav_faq', '常见问题'); ?>
                </a>
                <a href="/logout.php" class="btn btn-outline-danger btn-sm" style="min-width: 100px;">
                    <i class="fas fa-sign-out-alt me-1"></i> <?php echo __t('user_nav_logout', '安全退出'); ?>
                </a>
            </div>
        </div>
        <!-- 联系方式：浅色页脚上强制深色字，避免继承会员壳层浅色字导致看不清 -->
        <?php if ($contact_info !== ''): ?>
        <div class="site-footer-contact text-center mb-4 mt-4">
            <span><?php echo __t('user_contact_label', '联系方式：'); ?><?php echo htmlspecialchars($contact_info); ?></span>
        </div>
        <?php endif; ?>
    </div>
</footer>

<?php
$pageContent = ob_get_clean();
require_once 'includes/layout.php';  