<?php
require_once __DIR__ . '/../includes/init.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/commission_to_power_helper.php';
require_once __DIR__ . '/../includes/commission_to_power_security.php';
checkUserAuth();

$__prev_exception_handler = set_exception_handler(function($e){
    // 将异常友好化到页面消息，避免全局“系统错误”
    $_SESSION['commission_to_power_msg'] = '申请失败：' . $e->getMessage();
    ggai_member_redirect('/user/commission_to_power.php');
    exit;
});

$pageTitle = __t('ctp_page_title', '返佣转算力');

// 获取Session中的消息（如果有）
if (isset($_SESSION['commission_to_power_msg'])) {
    $msg = $_SESSION['commission_to_power_msg'];
    unset($_SESSION['commission_to_power_msg']);
} else {
    $msg = '';
}

// 获取用户返佣统计
$user_id = $_SESSION['user_id'];

// 获取用户基本信息
$stmt = $pdo->prepare("SELECT username, nickname, points FROM users WHERE id = ?");
$stmt->execute([$user_id]);
$user_info = $stmt->fetch(PDO::FETCH_ASSOC);

try {
    $ctpEligibleSql = commission_to_power_eligible_logs_sql($pdo, 'commission_logs');
} catch (RuntimeException $e) {
    // 页面保持可读，但余额查询强制归零；实际转换入口仍会抛错，绝不降级放行。
    $ctpEligibleSql = ' AND 1=0';
    $msg = '申请失败：' . $e->getMessage();
}
$stmt = $pdo->prepare("
    SELECT 
        SUM(commission_amount - withdrawn_amount) as available_commission,
        SUM(commission_amount) as total_commission,
        SUM(withdrawn_amount) as total_withdrawn
    FROM commission_logs 
    WHERE referrer_id = ? AND status = 'paid'
    {$ctpEligibleSql}
");
$stmt->execute([$user_id]);
$commission_stats = $stmt->fetch(PDO::FETCH_ASSOC);

$available_commission = floatval($commission_stats['available_commission'] ?: 0);
$total_commission = floatval($commission_stats['total_commission'] ?: 0);
$total_withdrawn = floatval($commission_stats['total_withdrawn'] ?: 0);

// 下级下拉清单：直推、间推（状态正常，不限制人数）；提交时仍由 isUserSubordinate 校验
$ctp_subordinate_pick_list = [];
if ($user_id > 0) {
    $ctpAppendSubRow = static function (array $r, string $rel, array &$out): void {
        $st = (string) ($r['status'] ?? '');
        if ($st !== '' && $st !== 'active') {
            return;
        }
        $tid = (int) ($r['id'] ?? 0);
        if ($tid <= 0) {
            return;
        }
        $out[] = [
            'user_id' => $tid,
            'rel' => $rel,
            'username' => (string) ($r['username'] ?? ''),
            'nickname' => (string) ($r['nickname'] ?? ''),
        ];
    };

    $stmtD = $pdo->prepare("SELECT id, username, nickname, status FROM users WHERE referrer_id = ? ORDER BY id DESC");
    $stmtD->execute([$user_id]);
    foreach ($stmtD->fetchAll(PDO::FETCH_ASSOC) as $r) {
        $ctpAppendSubRow($r, '直推', $ctp_subordinate_pick_list);
    }

    $stmtI = $pdo->prepare(
        "SELECT u.id, u.username, u.nickname, u.status
         FROM users u
         INNER JOIN users d ON u.referrer_id = d.id AND d.referrer_id = ?
         ORDER BY u.id DESC"
    );
    $stmtI->execute([$user_id]);
    foreach ($stmtI->fetchAll(PDO::FETCH_ASSOC) as $r) {
        $ctpAppendSubRow($r, '间推', $ctp_subordinate_pick_list);
    }
}

// 获取系统设置
$stmt = $pdo->query("SELECT key_name, value FROM system_settings WHERE key_name IN (
    'commission_to_power_enabled',
    'commission_to_power_auto_approve',
    'commission_to_power_auto_limit',
    'commission_to_power_min_amount',
    'commission_to_power_max_amount',
    'commission_to_power_interval_minutes',
    'ctp_to_others_single_max',
    'ctp_to_others_daily_max'
)");
$settings = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $settings[$row['key_name']] = $row['value'];
}

$enabled = intval($settings['commission_to_power_enabled'] ?? 1);
$auto_approve = $settings['commission_to_power_auto_approve'] ?? '0';
$auto_limit = floatval($settings['commission_to_power_auto_limit'] ?: 0);
$min_amount = floatval($settings['commission_to_power_min_amount'] ?: 1);
$max_amount = floatval($settings['commission_to_power_max_amount'] ?: 1000);
$interval_minutes = intval($settings['commission_to_power_interval_minutes'] ?? 1);
// 他转限额（系统参数），默认 200 / 1000
$to_others_single_max = floatval($settings['ctp_to_others_single_max'] ?: 200);
$to_others_daily_max = floatval($settings['ctp_to_others_daily_max'] ?: 1000);

// 检查功能是否开启
if ($enabled == 0) {
    $msg = __t('ctp_disabled_tip', '返佣转算力功能暂时关闭，请联系管理员');
}

// 处理撤销申请
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'cancel') {
    $request_id = intval($_POST['request_id'] ?? 0);
    
    if ($request_id > 0) {
        // 检查申请是否存在且属于当前用户且状态为pending
        $stmt = $pdo->prepare("SELECT id, status FROM commission_to_power_requests WHERE id = ? AND user_id = ? AND status = 'pending'");
        $stmt->execute([$request_id, $user_id]);
        $request = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($request) {
            try {
                // 更新状态为已撤销 - 使用 rejected 状态
                $stmt = $pdo->prepare("UPDATE commission_to_power_requests SET status = 'rejected', reviewed_at = NOW(), remark = CONCAT(IFNULL(remark, ''), ' | 用户主动撤销') WHERE id = ?");
                $stmt->execute([$request_id]);
                $msg = "申请已成功撤销";
                
                // 撤销成功后自动刷新页面
                echo "<script>
                    // 显示倒计时提示
                    var countdown = 3;
                    var countdownInterval = setInterval(function() {
                        var alertDiv = document.querySelector('.alert-success');
                        if (alertDiv) {
                            alertDiv.innerHTML = alertDiv.innerHTML.replace(/<br>.*$/, '') + '<br><small>页面将在 ' + countdown + ' 秒后自动刷新...</small>';
                        }
                        countdown--;
                        if (countdown < 0) {
                            clearInterval(countdownInterval);
                            window.location.href = '/user/commission_to_power.php';
                        }
                    }, 1000);
                </script>";
            } catch (Exception $e) {
                $msg = "撤销失败：" . $e->getMessage();
            }
        } else {
            $_SESSION['commission_to_power_msg'] = "申请不存在或状态不允许撤销";
            ggai_member_redirect('/user/commission_to_power.php');
            exit;
        }
    } else {
        $_SESSION['commission_to_power_msg'] = "无效的申请ID";
        ggai_member_redirect('/user/commission_to_power.php');
        exit;
    }
}

// 处理申请提交
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'submit') {
    // 防止重复提交 - 检查是否有未处理的申请
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM commission_to_power_requests WHERE user_id = ? AND status = 'pending'");
    $stmt->execute([$user_id]);
    $pending_count = $stmt->fetchColumn();
    
    if ($pending_count > 0) {
        $_SESSION['commission_to_power_msg'] = "您有未处理的申请，请等待审核完成后再提交新申请";
        ggai_member_redirect('/user/commission_to_power.php');
        exit;
    } else {
        // 检查是否与最近一次申请金额相同
        $amount = floatval($_POST['amount']);
        $stmt = $pdo->prepare("SELECT amount FROM commission_to_power_requests WHERE user_id = ? ORDER BY created_at DESC LIMIT 1");
        $stmt->execute([$user_id]);
        $last_amount = $stmt->fetchColumn();
        
        if ($last_amount && abs($amount - $last_amount) < 0.01) {
            $_SESSION['commission_to_power_msg'] = "不能连续两次提交相同金额的申请，请修改金额后重试";
            ggai_member_redirect('/user/commission_to_power.php');
            exit;
        } else {
    if ($enabled == 0) {
        $_SESSION['commission_to_power_msg'] = __t('ctp_disabled_tip', '返佣转算力功能暂时关闭，请联系管理员');
                ggai_member_redirect('/user/commission_to_power.php');
                exit;
    } else {
        $amount = floatval($_POST['amount']);
                $transfer_type = $_POST['transfer_type'] ?? 'self';
                $target_pick_mode = ($_POST['target_pick_mode'] ?? 'list') === 'manual' ? 'manual' : 'list';
                $target_identifier = $target_pick_mode === 'manual'
                    ? trim($_POST['target_user_manual'] ?? '')
                    : trim($_POST['target_user'] ?? '');
                $target_user_id = $user_id; // 默认自转
                $target_username_snapshot = '';
        $confirm_irreversible = isset($_POST['confirm_irreversible']);
        $verify_type = $_POST['verify_type'] ?? 'trade_password';
        $trade_password = $_POST['trade_password'] ?? '';
        $email_code = $_POST['email_code'] ?? '';
        
        // 检查确认框
        if (!$confirm_irreversible) {
                    $_SESSION['commission_to_power_msg'] = "请确认已阅读重要提示：返佣转算力后不可回退！";
                    ggai_member_redirect('/user/commission_to_power.php');
                    exit;
        } else {
                    // 处理目标用户解析与下级校验
                    if ($transfer_type === 'other') {
                if ($target_identifier === '') {
                    $_SESSION['commission_to_power_msg'] = '请选择或填写收款人';
                    ggai_member_redirect('/user/commission_to_power.php');
                    exit;
                } else {
                    // 解析为ID或用户名
                    if (ctype_digit($target_identifier)) {
                        $stmt = $pdo->prepare("SELECT id, username, status FROM users WHERE id = :target_id");
                        $stmt->execute([':target_id' => intval($target_identifier)]);
                    } else {
                        $stmt = $pdo->prepare("SELECT id, username, status FROM users WHERE username = :target_username");
                        $stmt->execute([':target_username' => $target_identifier]);
                    }
                    $tuser = $stmt->fetch(PDO::FETCH_ASSOC);
                    if (!$tuser) {
                        $_SESSION['commission_to_power_msg'] = '收款人不存在';
                        ggai_member_redirect('/user/commission_to_power.php');
                        exit;
                    } elseif (intval($tuser['id']) === intval($user_id)) {
                        $_SESSION['commission_to_power_msg'] = '收款人不能是自己，如需自转请选择"转给自己"';
                        ggai_member_redirect('/user/commission_to_power.php');
                        exit;
                    } elseif (!empty($tuser['status']) && $tuser['status'] !== 'active') {
                        $_SESSION['commission_to_power_msg'] = '收款人状态异常，无法转入';
                        ggai_member_redirect('/user/commission_to_power.php');
                        exit;
                    } else {
                        // 校验是否为下级
                        if (!function_exists('isUserSubordinate')) require_once __DIR__ . '/../includes/commission_to_power_security.php';
                        if (!isUserSubordinate(intval($user_id), intval($tuser['id']))) {
                            $_SESSION['commission_to_power_msg'] = '仅允许转给您的下级客户（直接或间接）';
                            ggai_member_redirect('/user/commission_to_power.php');
                            exit;
                        } else {
                            $target_user_id = intval($tuser['id']);
                            $target_username_snapshot = strval($tuser['username']);
                        }
                    }
                }
                    }

            // 验证用户身份
            $verify_ok = false;
                    // 他转必须用交易密码
                    if ($transfer_type === 'other' && $verify_type !== 'trade_password') {
                $_SESSION['commission_to_power_msg'] = '转给下级客户必须使用交易密码验证';
                ggai_member_redirect('/user/commission_to_power.php');
                exit;
                    } else {
                        // 验证密码或邮箱验证码
            if ($verify_type === 'email') {
                if (empty($email_code)) {
                        $_SESSION['commission_to_power_msg'] = '请填写邮箱验证码';
                        ggai_member_redirect('/user/commission_to_power.php');
                        exit;
                } else {
                    if (!function_exists('checkEmailCode')) require_once __DIR__ . '/../includes/email_code_helper.php';
                    $stmt = $pdo->prepare("SELECT email FROM users WHERE id = ?");
                    $stmt->execute([$user_id]);
                    $user_email = $stmt->fetchColumn();
                    if (!checkEmailCode($user_email, $email_code, $pdo, 'commission_to_power')) {
                            $_SESSION['commission_to_power_msg'] = '邮箱验证码错误或已过期';
                            ggai_member_redirect('/user/commission_to_power.php');
                            exit;
                    } else {
                        $verify_ok = true;
                    }
                }
            } else {
                if (empty($trade_password)) {
                        $_SESSION['commission_to_power_msg'] = '请填写交易密码';
                        ggai_member_redirect('/user/commission_to_power.php');
                        exit;
                } else {
                    $stmt = $pdo->prepare("SELECT trade_password FROM users WHERE id = ?");
                    $stmt->execute([$user_id]);
                    $row = $stmt->fetch(PDO::FETCH_ASSOC);
                        if (!$row || !$row['trade_password'] || !verify_user_trade_password($trade_password, $row['trade_password'])) {
                            $_SESSION['commission_to_power_msg'] = '交易密码错误';
                            ggai_member_redirect('/user/commission_to_power.php');
                            exit;
                    } else {
                        $verify_ok = true;
                        }
                    }
                }
            }
            
            if ($verify_ok) {
                // 检查时间间隔
                $stmt = $pdo->prepare("SELECT MAX(created_at) as last_request FROM commission_to_power_requests WHERE user_id = ?");
                $stmt->execute([$user_id]);
                $last_request = $stmt->fetchColumn();
                
                if ($last_request) {
                    $last_time = strtotime($last_request);
                    $current_time = time();
                    $time_diff = ($current_time - $last_time) / 60; // 分钟
                    
                    if ($time_diff < $interval_minutes) {
                        $remaining_minutes = ceil($interval_minutes - $time_diff);
                        $_SESSION['commission_to_power_msg'] = "请等待 {$remaining_minutes} 分钟后再申请转换";
                        ggai_member_redirect('/user/commission_to_power.php');
                        exit;
                    }
                }
                
                    // 执行安全检查
                    $ip_address = $_SERVER['REMOTE_ADDR'] ?? null;
                    $security_check = performSecurityCheck($user_id, $amount, $ip_address);
                    
                    if (!$security_check['allowed']) {
                    $_SESSION['commission_to_power_msg'] = implode('; ', $security_check['errors']);
                    ggai_member_redirect('/user/commission_to_power.php');
                    exit;
                    } elseif ($amount < $min_amount) {
                    $_SESSION['commission_to_power_msg'] = "转换金额不能少于 {$min_amount} USDT";
                    ggai_member_redirect('/user/commission_to_power.php');
                    exit;
                    } elseif ($amount > $max_amount) {
                    $_SESSION['commission_to_power_msg'] = "转换金额不能超过 {$max_amount} USDT";
                    ggai_member_redirect('/user/commission_to_power.php');
                    exit;
                    } elseif ($amount > $available_commission) {
                    $_SESSION['commission_to_power_msg'] = "返佣余额不足，可用余额：{$available_commission} USDT";
                    ggai_member_redirect('/user/commission_to_power.php');
                    exit;
                } elseif ($transfer_type === 'other') {
                    // 他转限额校验
                    if ($amount > $to_others_single_max) {
                        $_SESSION['commission_to_power_msg'] = "转给下级客户的单笔上限为 {$to_others_single_max} USDT";
                        ggai_member_redirect('/user/commission_to_power.php');
                        exit;
                    } else {
                        // 当天累计校验（如果有 transfer_type 字段则精确校验）
                        $has_transfer_type = false;
                        try {
                            $colsRes = $pdo->query("SHOW COLUMNS FROM commission_to_power_requests");
                            $existing = $colsRes ? $colsRes->fetchAll(PDO::FETCH_COLUMN, 0) : [];
                            if (is_array($existing)) { $has_transfer_type = in_array('transfer_type', $existing, true); }
                        } catch (Throwable $e) {}
                        $sum_today = 0;
                        if ($has_transfer_type) {
                            $stmtSum = $pdo->prepare("SELECT COALESCE(SUM(amount),0) FROM commission_to_power_requests WHERE user_id = :user_id AND DATE(created_at)=CURDATE() AND status IN ('pending','paid') AND transfer_type='other'");
                            $stmtSum->execute([':user_id' => $user_id]);
                            $sum_today = floatval($stmtSum->fetchColumn() ?: 0);
                        }
                        if ($has_transfer_type && ($sum_today + $amount) > $to_others_daily_max) {
                            $remain = max(0, $to_others_daily_max - $sum_today);
                            $_SESSION['commission_to_power_msg'] = "今日他转累计上限为 {$to_others_daily_max} USDT，您今日剩余额度 {$remain} USDT";
                            ggai_member_redirect('/user/commission_to_power.php');
                            exit;
                        }
                    }
                        }
                        
                        // 所有校验通过，写入数据库
                        try {
                            $pdo->beginTransaction();
                            
                            // 生成唯一请求ID
                            $request_id = uniqid('power_', true);
                            
                            // 检查是否自动审核。数据库 status 只允许 pending/paid/rejected，
                            // 自动审核时先保持 pending，转换成功后由 helper 原子改为 paid。
                            $status = 'pending';
                            $autoExecute = false;
                            $reviewed_at = null;
                            $paid_at = null;
                            
                            if ($auto_approve === '1' && $amount <= $auto_limit) {
                                $autoExecute = true;
                                $reviewed_at = date('Y-m-d H:i:s');
                            }
                            
                    // 创建转换申请记录（带可选目标字段，动态列检测）
                    $cols = ['user_id','amount','status','request_id','created_at','reviewed_at','paid_at','remark'];
                    $placeholders = [':user_id',':amount',':status',':request_id',"NOW()",':reviewed_at',':paid_at',':remark'];
                    $remark_value = '用户申请返佣转算力';
                    if ($transfer_type === 'other' && $target_user_id !== $user_id) {
                        $remark_value .= ' | 收款人: UID ' . intval($target_user_id) . ($target_username_snapshot ? (' (' . $target_username_snapshot . ')') : '');
                    }
                    $params = [
                        ':user_id' => $user_id,
                        ':amount' => $amount,
                        ':status' => $status,
                        ':request_id' => $request_id,
                        ':reviewed_at' => $reviewed_at,
                        ':paid_at' => $paid_at,
                        ':remark' => $remark_value
                    ];

                    // 动态检测列
                    $has_target_uid = false; $has_target_uname = false; $has_transfer_type = false; $has_ip = false;
                    try {
                        $colsRes = $pdo->query("SHOW COLUMNS FROM commission_to_power_requests");
                        $existing = $colsRes ? $colsRes->fetchAll(PDO::FETCH_COLUMN, 0) : [];
                        if (is_array($existing)) {
                            $has_target_uid = in_array('target_user_id', $existing, true);
                            $has_target_uname = in_array('target_username', $existing, true);
                            $has_transfer_type = in_array('transfer_type', $existing, true);
                            $has_ip = in_array('ip_address', $existing, true);
                        }
                    } catch (Throwable $e) {}

                    if ($has_transfer_type) { 
                        $cols[] = 'transfer_type'; 
                        $placeholders[] = ':transfer_type'; 
                        $params[':transfer_type'] = ($transfer_type === 'other' ? 'other' : 'self'); 
                    }
                    if ($has_target_uid) { 
                        $cols[] = 'target_user_id'; 
                        $placeholders[] = ':target_user_id'; 
                        $params[':target_user_id'] = $target_user_id; 
                    }
                    if ($has_target_uname) { 
                        $cols[] = 'target_username'; 
                        $placeholders[] = ':target_username'; 
                        $params[':target_username'] = $target_username_snapshot; 
                    }
                    if ($has_ip && !empty($ip_address)) { 
                        $cols[] = 'ip_address'; 
                        $placeholders[] = ':ip_address'; 
                        $params[':ip_address'] = $ip_address; 
                    }

                    $sql = "INSERT INTO commission_to_power_requests (" . implode(',', $cols) . ") VALUES (" . implode(',', $placeholders) . ")";
                    $stmt = $pdo->prepare($sql);
                    $stmt->execute($params);
                            $request_id_db = $pdo->lastInsertId();
                            
                            // 如果是自动审核，直接执行转换
                            if ($autoExecute) {
                                // 执行转换逻辑（不使用内部事务，因为外部已经有事务）
                        if ($transfer_type === 'other' && $target_user_id !== $user_id) {
                            $result = executeCommissionToPowerTransfer($user_id, $target_user_id, $amount, $request_id_db, false);
                        } else {
                                $result = executeCommissionToPower($user_id, $amount, $request_id_db, false);
                        }
                                if ($result['success']) {
                                    $msg = "转换成功！已自动审核并完成转换，获得算力：" . intval($amount) . " 点";
                                } else {
                                    $msg = "转换失败：" . $result['error'];
                                    // 回滚申请记录
                            $stmtDelete = $pdo->prepare("DELETE FROM commission_to_power_requests WHERE id = :request_id");
                            $stmtDelete->execute([':request_id' => $request_id_db]);
                                }
                            } else {
                                $msg = "申请已提交，等待管理员审核";
                            }
                            
                            $pdo->commit();

                            if (!empty($result['success']) && !empty($result['commission_deferred']) && !empty($result['recharge_order_id'])
                                && !commission_to_power_should_skip_distribute()) {
                                try {
                                    distribute_commission($target_user_id, $amount, 'deposit', $result['recharge_order_id']);
                                } catch (Throwable $eComm) {
                                    error_log('返佣转算力提交后返佣分配失败 request_id=' . $request_id_db . ': ' . $eComm->getMessage());
                                }
                            }
                            
                    // 保存成功消息到SESSION并跳转
                    $_SESSION['commission_to_power_msg'] = $msg;
                    ggai_member_redirect('/user/commission_to_power.php');
                    exit;
                            
                        } catch (Throwable $e) {
                            $pdo->rollBack();
                            $_SESSION['commission_to_power_msg'] = "申请失败：" . $e->getMessage();
                            ggai_member_redirect('/user/commission_to_power.php');
                            exit;
                        }
                    }
                }
            }
        }
    }
}

// 获取用户申请记录
$stmt = $pdo->prepare("
    SELECT * FROM commission_to_power_requests 
    WHERE user_id = ? 
    ORDER BY created_at DESC 
    LIMIT 20
");
$stmt->execute([$user_id]);
$requests = $stmt->fetchAll(PDO::FETCH_ASSOC);

/** 下级下拉展示：昵称/账号若含手机、邮箱等联系方式则脱敏 */
if (!function_exists('ctp_mask_subordinate_display')) {
    function ctp_mask_subordinate_display(?string $raw): string
    {
        $s = trim((string) $raw);
        if ($s === '') {
            return '';
        }
        // 文案中嵌入的 11 位手机号
        $s = preg_replace_callback('/(?<!\d)(1[3-9]\d{9})(?!\d)/', static function (array $m): string {
            $d = $m[1];
            return substr($d, 0, 3) . '****' . substr($d, -4);
        }, $s) ?? $s;
        if (function_exists('mask_contact_for_tooltip')) {
            $masked = mask_contact_for_tooltip($s);
            if ($masked !== $s) {
                return $masked;
            }
        }
        if (strpos($s, '@') !== false) {
            if (!function_exists('ggai_mask_username_display')) {
                require_once __DIR__ . '/includes/ggai_mask_username_display.php';
            }
            return ggai_mask_username_display($s);
        }
        return $s;
    }
}

ob_start();
?>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<style>
/* 页面美化样式 */
.commission-page {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    min-height: 100vh;
    padding: 20px 0;
}

.commission-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 15px;
}

.page-header {
    background: rgba(255, 255, 255, 0.95);
    border-radius: 15px;
    padding: 25px 30px;
    margin-bottom: 30px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.page-title {
    font-size: 2.2rem;
    font-weight: 700;
    color: #2d3748;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 15px;
}

.page-title i {
    color: #667eea;
    font-size: 1.8rem;
}

.stats-card {
    background: rgba(255, 255, 255, 0.95);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.2);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.stats-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 50px rgba(0, 0, 0, 0.15);
}

.stats-card .card-header {
    background: linear-gradient(135deg, #667eea, #764ba2);
    color: white;
    border-radius: 15px 15px 0 0;
    padding: 20px 25px;
    margin: -30px -30px 25px -30px;
    border: none;
}

.stats-card .card-header h6 {
    font-size: 1.28rem;
    font-weight: 700;
    color: #ffffff;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    text-shadow: 0 1px 6px rgba(0, 0, 0, 0.35);
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 25px;
    margin-top: 20px;
}

.stat-item {
    text-align: center;
    padding: 22px 18px;
    background: linear-gradient(165deg, rgba(10, 32, 52, 0.98) 0%, rgba(18, 42, 68, 0.95) 100%);
    border-radius: 15px;
    border: 1.5px solid rgba(0, 234, 255, 0.35);
    transition: all 0.3s ease;
}

.stat-item:hover {
    border-color: #667eea;
    transform: translateY(-3px);
}

.stat-value {
    font-size: clamp(1.75rem, 4.5vw, 2.35rem);
    font-weight: 800;
    margin-bottom: 10px;
    color: #ffd54f;
    text-shadow: 0 0 16px rgba(255, 213, 79, 0.35);
}

.stat-label {
    font-size: 1.08rem;
    color: #ffffff;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0.03em;
    line-height: 1.4;
}

.ctp-target-select {
    font-size: 1.06rem;
    padding: 0.7rem 1rem;
    min-height: 48px;
    cursor: pointer;
}

.ctp-target-manual-wrap {
    margin-top: 0.25rem;
}

.ctp-target-manual-wrap .form-control {
    font-size: 1.06rem;
    padding: 0.7rem 1rem;
    min-height: 48px;
}

.ctp-sub-pick-wrap {
    max-height: 360px;
    overflow: auto;
    border-radius: 14px;
    margin-top: 10px;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(246, 248, 255, 0.9) 100%);
    border: 1px solid rgba(102, 126, 234, 0.28);
    box-shadow: 0 6px 24px rgba(102, 126, 234, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
.ctp-sub-pick-table {
    margin-bottom: 0;
    --ctp-pick-id-size: clamp(1.15rem, 2.6vw, 1.45rem);
}
.ctp-sub-pick-table thead th {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #5a67d8;
    font-weight: 700;
    border-bottom: 2px solid rgba(102, 126, 234, 0.22) !important;
    padding: 0.7rem 0.85rem;
    background: linear-gradient(180deg, rgba(237, 242, 255, 0.95), rgba(224, 231, 255, 0.75)) !important;
    white-space: nowrap;
}
.ctp-sub-pick-table tbody td {
    padding: 0.75rem 0.85rem;
    vertical-align: middle;
    border-color: rgba(102, 126, 234, 0.08);
}
.ctp-sub-pick-table tbody tr:nth-child(even) {
    background-color: rgba(102, 126, 234, 0.04);
}
.ctp-sub-pick-table tbody tr {
    cursor: pointer;
    transition: background 0.15s ease, box-shadow 0.15s ease;
}
.ctp-sub-pick-table tbody tr:hover {
    background: rgba(102, 126, 234, 0.11) !important;
    box-shadow: inset 3px 0 0 #667eea;
}
.ctp-sub-th-id {
    width: 34%;
    min-width: 5.5rem;
}
.ctp-sub-th-rel {
    width: 22%;
    min-width: 4.5rem;
}
.ctp-sub-pick-id {
    display: inline-block;
    font-size: var(--ctp-pick-id-size);
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.03em;
    line-height: 1.15;
    color: #4338ca;
    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.95);
}
.ctp-sub-pick-table tbody tr:hover .ctp-sub-pick-id {
    color: #312e81;
}
.ctp-sub-pick-badge {
    display: inline-block;
    padding: 0.32rem 0.85rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    white-space: nowrap;
    border: 1px solid transparent;
}
.ctp-sub-pick-badge--direct {
    background: linear-gradient(135deg, #667eea 0%, #5b6fe6 50%, #4f5fd4 100%);
    color: #fff;
    border-color: rgba(255, 255, 255, 0.25);
    box-shadow: 0 2px 10px rgba(102, 126, 234, 0.4);
}
.ctp-sub-pick-badge--indirect {
    background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 45%, #6d28d9 100%);
    color: #fff;
    border-color: rgba(255, 255, 255, 0.2);
    box-shadow: 0 2px 10px rgba(124, 58, 237, 0.35);
}
.ctp-sub-pick-name {
    display: inline-block;
    font-size: 1.02rem;
    font-weight: 600;
    color: #1e293b;
    letter-spacing: 0.02em;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}
.ctp-sub-pick-name-wrap {
    max-width: 14rem;
}
@media (min-width: 576px) {
    .ctp-sub-pick-name-wrap {
        max-width: 18rem;
    }
}

.form-card {
    background: rgba(255, 255, 255, 0.95);
    border-radius: 20px;
    padding: 35px;
    margin-bottom: 30px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.form-card .card-header {
    background: linear-gradient(135deg, #28a745, #20c997);
    color: white;
    border-radius: 15px 15px 0 0;
    padding: 20px 25px;
    margin: -35px -35px 25px -35px;
    border: none;
}

.form-card .card-header h6 {
    font-size: 1.3rem;
    font-weight: 600;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.form-group {
    margin-bottom: 25px;
}

.form-group label {
    font-weight: 600;
    color: #2d3748;
    margin-bottom: 8px;
    font-size: 1rem;
}

.form-control {
    border: 2px solid #e2e8f0;
    border-radius: 12px;
    padding: 12px 16px;
    font-size: 1rem;
    transition: all 0.3s ease;
    background: rgba(255, 255, 255, 0.9);
}

.form-control:focus {
    border-color: #667eea;
    box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
    background: white;
}

.form-check {
    margin-bottom: 15px;
}

.form-check-input {
    width: 20px;
    height: 20px;
    margin-top: 0.1rem;
}

.form-check-label {
    font-weight: 500;
    color: #2d3748;
    margin-left: 8px;
}

.btn-custom {
    background: linear-gradient(135deg, #667eea, #764ba2);
    border: none;
    border-radius: 12px;
    padding: 12px 30px;
    font-weight: 600;
    font-size: 1.1rem;
    color: white;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
}

.btn-custom:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
    color: white;
}

.btn-custom:disabled {
    opacity: 0.6;
    transform: none;
    box-shadow: none;
}

.alert-custom {
    border-radius: 12px;
    border: none;
    padding: 15px 20px;
    margin-bottom: 20px;
    font-weight: 500;
}

.alert-success {
    background: linear-gradient(135deg, #d4edda, #c3e6cb);
    color: #155724;
}

.alert-danger {
    background: linear-gradient(135deg, #f8d7da, #f5c6cb);
    color: #721c24;
}

.alert-warning {
    background: linear-gradient(135deg, #fff3cd, #ffeaa7);
    color: #856404;
}

.table-card {
    background: linear-gradient(165deg, rgba(24, 32, 56, 0.94) 0%, rgba(16, 22, 40, 0.97) 100%);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(0, 234, 255, 0.22);
    color: #e8fbff;
}

.table-card .card-header {
    background: linear-gradient(90deg, rgba(0, 90, 160, 0.92) 0%, rgba(70, 45, 130, 0.95) 100%);
    color: #ffffff;
    border-radius: 15px 15px 0 0;
    padding: 20px 25px;
    margin: -30px -30px 25px -30px;
    border: none;
}

.table-card .card-header h6 {
    font-size: 1.28rem;
    font-weight: 700;
    color: #ffffff;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    text-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
}

.table {
    background: white;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
}

.table thead th {
    background: linear-gradient(135deg, #f8f9fa, #e9ecef);
    color: #495057;
    font-weight: 600;
    border: none;
    padding: 15px;
}

.table tbody td {
    padding: 15px;
    border-color: #f1f3f4;
    vertical-align: middle;
}

.badge {
    padding: 8px 16px;
    border-radius: 20px;
    font-weight: 600;
    font-size: 0.85rem;
}

.badge-success {
    background: linear-gradient(135deg, #28a745, #20c997);
    color: white;
}

.badge-warning {
    background: linear-gradient(135deg, #ffc107, #fd7e14);
    color: #212529;
}

.badge-danger {
    background: linear-gradient(135deg, #dc3545, #e83e8c);
    color: white;
}

.badge-secondary {
    background: linear-gradient(135deg, #6c757d, #495057);
    color: white;
}

/* 撤销按钮样式 */
.btn-outline-danger {
    border: 1px solid #dc3545;
    color: #dc3545;
    background: transparent;
    border-radius: 6px;
    padding: 4px 8px;
    font-size: 0.8rem;
    transition: all 0.3s ease;
}

.btn-outline-danger:hover {
    background: #dc3545;
    color: white;
    transform: translateY(-1px);
    box-shadow: 0 2px 8px rgba(220, 53, 69, 0.3);
}

.btn-outline-danger:focus {
    box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.25);
}

/* 移动端优化 */
@media (max-width: 768px) {
    .commission-page {
        padding: 10px 0;
    }
    
    .commission-container {
        padding: 0 10px;
        max-width: 100%;
    }
    
    .page-header {
        padding: 15px;
        margin-bottom: 15px;
        border-radius: 10px;
    }
    
    .page-header .d-flex {
        flex-direction: column;
        gap: 15px;
        text-align: center;
    }
    
    .page-header .d-flex.gap-2 {
        flex-direction: row;
        justify-content: center;
        flex-wrap: wrap;
        gap: 10px;
    }
    
    .page-header .d-flex.gap-2 .btn-custom {
        flex: 1;
        min-width: 120px;
        font-size: 0.9rem;
        padding: 8px 12px;
    }
    
    .page-title {
        font-size: 1.6rem;
        margin-bottom: 0;
    }
    
    .page-title i {
        font-size: 1.4rem;
    }
    
    .btn-custom {
        width: 100%;
        padding: 10px 20px;
        font-size: 1rem;
    }
    
    .stats-card, .form-card, .table-card {
        padding: 15px;
        margin-bottom: 15px;
        border-radius: 15px;
    }
    
    .stats-card .card-header, .form-card .card-header, .table-card .card-header {
        padding: 15px;
        margin: -15px -15px 15px -15px;
        border-radius: 10px 10px 0 0;
    }
    
    .stats-card .card-header h6, .form-card .card-header h6, .table-card .card-header h6 {
        font-size: 1.1rem;
    }
    
    .stats-grid {
        grid-template-columns: 1fr;
        gap: 12px;
        margin-top: 15px;
    }
    
    .stat-item {
        padding: 15px;
        border-radius: 10px;
    }
    
    .stat-value {
        font-size: 1.6rem;
        margin-bottom: 5px;
    }
    
    .stat-label {
        font-size: 1rem;
    }
    
    .form-group {
        margin-bottom: 20px;
    }
    
    .form-control {
        padding: 10px 12px;
        font-size: 16px; /* 防止iOS缩放 */
        border-radius: 8px;
    }
    
    .form-check {
        margin-bottom: 12px;
    }
    
    .form-check-label {
        font-size: 0.9rem;
        line-height: 1.4;
    }
    
    .input-group .btn {
        padding: 8px 12px;
        font-size: 0.9rem;
    }
    
    .table-responsive {
        border-radius: 8px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    
    .table {
        font-size: 0.85rem;
        min-width: 600px;
    }
    
    .table thead th {
        padding: 10px 8px;
        font-size: 0.8rem;
    }
    
    .table tbody td {
        padding: 10px 8px;
    }
    
    .badge {
        padding: 4px 8px;
        font-size: 0.75rem;
    }
    
    .alert-custom {
        padding: 12px 15px;
        margin-bottom: 15px;
        border-radius: 8px;
        font-size: 0.9rem;
    }
    
    .btn-outline-danger {
        padding: 6px 10px;
        font-size: 0.75rem;
        width: 100%;
        margin-top: 5px;
    }
}

/* 超小屏幕优化 */
@media (max-width: 480px) {
    .commission-page {
        padding: 5px 0;
    }
    
    .commission-container {
        padding: 0 5px;
    }
    
    .page-header {
        padding: 12px;
        margin-bottom: 12px;
    }
    
    .page-title {
        font-size: 1.4rem;
    }
    
    .stats-card, .form-card, .table-card {
        padding: 12px;
        margin-bottom: 12px;
    }
    
    .stats-card .card-header, .form-card .card-header, .table-card .card-header {
        padding: 12px;
        margin: -12px -12px 12px -12px;
    }
    
    .stat-item {
        padding: 12px;
    }
    
    .stat-value {
        font-size: 1.4rem;
    }
    
    .form-control {
        padding: 8px 10px;
        font-size: 16px;
    }
    
    .btn-custom {
        padding: 8px 16px;
        font-size: 0.9rem;
    }
    
    .page-header .d-flex.gap-2 {
        flex-direction: column;
        gap: 8px;
    }
    
    .page-header .d-flex.gap-2 .btn-custom {
        width: 100%;
        font-size: 0.85rem;
        padding: 6px 10px;
    }
    
    .table {
        font-size: 0.8rem;
        min-width: 500px;
    }
    
    .table thead th, .table tbody td {
        padding: 8px 6px;
    }
}

/* 横屏优化 */
@media (max-width: 768px) and (orientation: landscape) {
    .page-header .d-flex {
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
    }
    
    .page-title {
        font-size: 1.4rem;
    }
    
    .btn-custom {
        width: auto;
        padding: 8px 16px;
    }
}
</style>

<div class="commission-page">
    <div class="commission-container">
        <div class="page-header">
            <div class="d-flex justify-content-between align-items-center">
                <h1 class="page-title">
                    <i class="fas fa-exchange-alt"></i>
                    <?php echo $pageTitle; ?>
                </h1>
                <div class="d-flex gap-2">
                    <a href="<?= htmlspecialchars(ggai_mu('/user/commission_to_power.php'), ENT_QUOTES, 'UTF-8') ?>" class="btn btn-custom">
                        <i class="fas fa-sync-alt me-2"></i><?php echo __t('ctp_btn_refresh', '刷新页面'); ?>
                    </a>
                    <a href="<?= htmlspecialchars(ggai_mu('/user/index.php'), ENT_QUOTES, 'UTF-8') ?>" class="btn btn-custom">
                        <i class="fas fa-home me-2"></i><?php echo __t('ctp_btn_back_home', '返回会员首页'); ?>
                    </a>
                </div>
        </div>
    </div>

        <!-- 用户信息条 -->
        <div class="mb-3" style="background: rgba(255,255,255,0.05); padding: 12px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.1);">
            <span class="fw-bold me-3" style="color: #e0e0e0; font-size: 1.1em;"><i class="fas fa-user"></i> <?php echo __t('ctp_user_username', '用户名：'); ?></span><span class="text-primary me-4" style="font-weight: 600; font-size: 1.2em;"><?php echo htmlspecialchars($user_info['username']); ?></span>
            <span class="fw-bold me-3" style="color: #e0e0e0; font-size: 1.1em;"><i class="fas fa-user-astronaut"></i> <?php echo __t('ctp_user_nickname', '昵称：'); ?></span><span class="text-success me-4" style="font-weight: 600; font-size: 1.2em;"><?php echo htmlspecialchars($user_info['nickname']); ?></span>
            <span class="fw-bold me-2" style="color: #e0e0e0; font-size: 1.1em;"><i class="fas fa-bolt"></i> <?php echo __t('ctp_user_power_balance', '算力余额：'); ?></span><span class="text-warning" style="font-size:1.3em; font-weight: 600;"> <?php echo number_format($user_info['points'], 2); ?> </span>
            <span class="fw-bold me-2" style="color: #e0e0e0; font-size: 1.1em;"><i class="fas fa-coins"></i> <?php echo __t('ctp_user_available_commission', '可提现余额：'); ?></span><span class="text-info" style="font-size:1.3em; font-weight: 600;" <?php if ($available_commission < 0): ?>style="text-decoration: underline; color: #dc3545;"<?php endif; ?>> <?php echo number_format($available_commission, 2); ?> </span>
    </div>

    <!-- 返佣余额卡片 -->
        <div class="stats-card">
            <div class="card-header">
                <h6><i class="fas fa-wallet"></i> <?php echo __t('ctp_card_commission_balance', '返佣余额'); ?></h6>
        </div>
            <div class="stats-grid">
                <div class="stat-item">
                    <div class="stat-value text-success"><?php echo number_format($available_commission, 2); ?> USDT</div>
                    <div class="stat-label"><?php echo __t('ctp_card_available_label', '可转换余额'); ?></div>
                    </div>
                <div class="stat-item">
                    <div class="stat-value text-info"><?php echo number_format($total_commission, 2); ?> USDT</div>
                    <div class="stat-label"><?php echo __t('ctp_card_total_label', '总返佣'); ?></div>
                </div>
                <div class="stat-item">
                    <div class="stat-value text-warning"><?php echo number_format($total_withdrawn, 2); ?> USDT</div>
                    <div class="stat-label"><?php echo __t('ctp_card_withdrawn_label', '已提现'); ?></div>
            </div>
        </div>
    </div>

    <!-- 功能状态 -->
    <?php if ($enabled == 0): ?>
            <div class="alert alert-warning alert-custom">
            <i class="fas fa-exclamation-triangle"></i> <?php echo __t('ctp_disabled_tip', '返佣转算力功能暂时关闭，请联系管理员'); ?>
        </div>
    <?php else: ?>
        <!-- 转换申请表单 -->
            <div class="form-card">
                <div class="card-header">
                    <h6><i class="fas fa-exchange-alt"></i> <?php echo __t('ctp_form_title', '申请转换'); ?></h6>
            </div>
                <?php if ($msg): ?>
                    <div class="alert alert-<?php echo strpos($msg, '成功') !== false ? 'success' : 'danger'; ?> alert-custom">
                        <?php echo htmlspecialchars($msg); ?>
                    </div>
                <?php endif; ?>

                <form method="POST">
                    <input type="hidden" name="action" value="submit">
                    
                    <div class="form-group">
                        <label><?php echo __t('ctp_form_transfer_target', '转账对象'); ?></label>
                        <div class="d-flex align-items-center" style="gap:20px;">
                            <div class="form-check">
                                <input class="form-check-input" type="radio" name="transfer_type" id="transfer_self" value="self" checked>
                                <label class="form-check-label" for="transfer_self"><?php echo __t('ctp_form_transfer_self', '转给自己'); ?></label>
                            </div>
                            <div class="form-check">
                                <input class="form-check-input" type="radio" name="transfer_type" id="transfer_other" value="other">
                                <label class="form-check-label" for="transfer_other"><?php echo __t('ctp_form_transfer_other', '转给下级客户（直接或间接）'); ?></label>
                            </div>
                        </div>
                    </div>

                    <div class="form-group transfer-target-row" style="display:none;">
                        <label><?php echo __t('ctp_form_target_label', '收款人'); ?></label>
                        <div class="d-flex flex-wrap align-items-center mb-3" style="gap:16px;">
                            <div class="form-check">
                                <input class="form-check-input" type="radio" name="target_pick_mode" id="target_pick_list" value="list" checked disabled>
                                <label class="form-check-label" for="target_pick_list"><?php echo __t('ctp_form_target_mode_list', '从列表选择'); ?></label>
                            </div>
                            <div class="form-check">
                                <input class="form-check-input" type="radio" name="target_pick_mode" id="target_pick_manual" value="manual" disabled>
                                <label class="form-check-label" for="target_pick_manual"><?php echo __t('ctp_form_target_mode_manual', '手动输入'); ?></label>
                            </div>
                        </div>
                        <div class="ctp-target-list-wrap">
                        <select name="target_user" id="ctp_target_user" class="form-control ctp-target-select" disabled>
                            <option value=""><?php echo __t('ctp_form_target_select_placeholder', '请选择下级客户'); ?></option>
                            <?php
                            $ctp_subs_grouped = ['直推' => [], '间推' => []];
                            foreach ($ctp_subordinate_pick_list as $sp) {
                                $relKey = (string) ($sp['rel'] ?? '间推');
                                if (!isset($ctp_subs_grouped[$relKey])) {
                                    $ctp_subs_grouped[$relKey] = [];
                                }
                                $ctp_subs_grouped[$relKey][] = $sp;
                            }
                            $ctp_rel_group_labels = [
                                '直推' => __t('ctp_rel_direct', '直推'),
                                '间推' => __t('ctp_rel_indirect', '间推'),
                            ];
                            foreach (['直推', '间推'] as $relGroup):
                                if (empty($ctp_subs_grouped[$relGroup])) {
                                    continue;
                                }
                            ?>
                            <optgroup label="<?php echo htmlspecialchars($ctp_rel_group_labels[$relGroup] ?? $relGroup); ?>">
                                <?php foreach ($ctp_subs_grouped[$relGroup] as $sp):
                                    $uid = (int) ($sp['user_id'] ?? 0);
                                    if ($uid <= 0) {
                                        continue;
                                    }
                                    $nickRaw = trim((string) ($sp['nickname'] ?? ''));
                                    $unameRaw = trim((string) ($sp['username'] ?? ''));
                                    $nick = ctp_mask_subordinate_display($nickRaw);
                                    $uname = ctp_mask_subordinate_display($unameRaw);
                                    $labelParts = ['UID ' . $uid];
                                    if ($nick !== '') {
                                        $labelParts[] = $nick;
                                    }
                                    if ($unameRaw !== '' && $unameRaw !== $nickRaw) {
                                        $labelParts[] = '(' . $uname . ')';
                                    }
                                    $optLabel = implode(' · ', $labelParts);
                                ?>
                                <option value="<?php echo $uid; ?>"><?php echo htmlspecialchars($optLabel); ?></option>
                                <?php endforeach; ?>
                            </optgroup>
                            <?php endforeach; ?>
                            <?php if (empty($ctp_subordinate_pick_list)): ?>
                            <option value="" disabled><?php echo __t('ctp_form_sub_pick_empty', '暂无符合条件的下级'); ?></option>
                            <?php endif; ?>
                        </select>
                        <small class="form-text text-muted d-block mt-1"><?php echo __t('ctp_form_target_select_hint', '列出全部直推与间推、且状态为「正常」的客户。'); ?></small>
                        </div>
                        <div class="ctp-target-manual-wrap" style="display:none;">
                            <input type="text" name="target_user_manual" id="ctp_target_user_manual" class="form-control" placeholder="<?php echo __t('ctp_form_target_placeholder', '请输入下级客户的用户名或 UID'); ?>" autocomplete="off" disabled>
                            <small class="form-text text-muted d-block mt-1"><?php echo __t('ctp_form_target_manual_hint', '可填写任意层级下级（含直推、间推及更深层）。提交时系统会校验推荐关系。'); ?></small>
                        </div>
                    </div>
                    
                    <div class="form-group">
                        <label for="amount"><?php echo __t('ctp_form_amount_label', '转换金额 (USDT):'); ?></label>
                        <input type="number" class="form-control" id="amount" name="amount" 
                               step="0.01" min="<?php echo $min_amount; ?>" max="<?php echo min($max_amount, $available_commission); ?>" 
                               placeholder="请输入转换金额" required>
                        <small class="form-text text-muted">
                            <?php
                            echo str_replace(
                                ['{min}','{max}'],
                                [number_format($min_amount,2), number_format(min($max_amount, $available_commission),2)],
                                __t('ctp_form_amount_minmax', '最小金额：{min} USDT，最大金额：{max} USDT')
                            );
                            if ($auto_approve === '1') {
                                echo '<br>' . str_replace(
                                    '{limit}',
                                    number_format($auto_limit,2),
                                    __t('ctp_form_amount_auto_limit', '金额 ≤ {limit} USDT 将自动审核通过')
                                );
                            }
                            echo '<br>' . str_replace(
                                ['{single}','{daily}'],
                                [number_format($to_others_single_max,2), number_format($to_others_daily_max,2)],
                                __t('ctp_form_amount_other_limit', '转给下级客户：单笔上限 {single} USDT，单日累计上限 {daily} USDT')
                            );
                            ?>
                            <br><span class="text-warning"><i class="fas fa-exclamation-triangle"></i> <?php echo __t('ctp_form_amount_no_same', '不能连续两次提交相同金额的申请'); ?></span>
                        </small>
                    </div>
                    
                    <div class="form-group">
                        <div class="form-check">
                            <input type="checkbox" class="form-check-input" id="confirmIrreversible" name="confirm_irreversible" required>
                            <label class="form-check-label text-danger font-weight-bold" for="confirmIrreversible">
                                <i class="fas fa-exclamation-triangle"></i> <?php echo (function_exists('scheme_t_lite_enabled') && scheme_t_lite_enabled())
                                    ? __t('ctp_form_confirm_label_v22', '重要提示：返佣转算力后不可回退。内部转换会完整结算一次，但由该转换衍生的结算金额不能再次转为算力。')
                                    : __t('ctp_form_confirm_label', '重要提示：返佣转算力后不可回退！系统会自动走一轮提现+充值流程！会产生新的返佣。'); ?>
                            </label>
                        </div>
                        <small class="form-text text-muted">
                            <?php echo (function_exists('scheme_t_lite_enabled') && scheme_t_lite_enabled())
                                ? __t('ctp_form_confirm_hint_v22', '请仔细确认转换金额。转换成功后无法撤销；系统记录内部来源和深度 1，防止循环转换。')
                                : __t('ctp_form_confirm_hint', '请仔细确认转换金额，转换成功后无法撤销或退回返佣，不管转自己还是转给他人，都会产生新的返佣。'); ?>
                        </small>
                    </div>
                    
                    <div class="form-group">
                        <label><?php echo __t('ctp_form_verify_label', '验证方式'); ?></label>
                        <div class="d-flex align-items-center">
                            <div class="form-check me-4">
                                <input class="form-check-input" type="radio" name="verify_type" id="verify_pwd" value="trade_password" checked>
                                <label class="form-check-label" for="verify_pwd"><?php echo __t('ctp_form_verify_trade_password', '交易密码'); ?></label>
                            </div>
                            <div class="form-check">
                                <input class="form-check-input" type="radio" name="verify_type" id="verify_email" value="email">
                                <label class="form-check-label" for="verify_email"><?php echo __t('ctp_form_verify_email_code', '邮箱验证码'); ?></label>
                            </div>
                        </div>
                    </div>
                    
                    <div class="form-group verify-pwd-row">
                        <label><?php echo __t('ctp_form_trade_password_label', '交易密码'); ?></label>
                        <input type="password" name="trade_password" class="form-control" placeholder="<?php echo __t('ctp_form_trade_password_placeholder', '如用交易密码验证请填写'); ?>" autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false">
                    </div>
                    
                    <div class="form-group verify-email-row" style="display:none;">
                        <label><?php echo __t('ctp_form_email_code_label', '邮箱验证码'); ?></label>
                        <div class="input-group">
                            <input type="text" name="email_code" class="form-control" placeholder="<?php echo __t('ctp_form_email_code_placeholder', '如用邮箱验证码验证请填写'); ?>">
                            <button type="button" class="btn btn-outline-secondary" onclick="sendEmailCode()"><?php echo __t('ctp_form_email_code_btn', '获取验证码'); ?></button>
                        </div>
                    </div>
                    
                    <button type="submit" class="btn btn-custom" id="submitBtn" disabled
                        onclick="return confirm('<?php echo __t('ctp_form_submit_btn', '提交转换申请'); ?>?')">
                        <i class="fas fa-exchange-alt me-2"></i> <?php echo __t('ctp_form_submit_btn', '提交转换申请'); ?>
                </button>
            </form>
        </div>
    <?php endif; ?>

    <!-- 申请记录 -->
        <div class="table-card">
            <div class="card-header">
                <h6><i class="fas fa-history"></i> <?php echo __t('ctp_history_title', '申请记录'); ?></h6>
        </div>
            <?php if (empty($requests)): ?>
                <div class="text-center py-5">
                    <i class="fas fa-inbox fa-3x text-muted mb-3"></i>
                <p class="text-muted"><?php echo __t('ctp_history_no_records', '暂无申请记录'); ?></p>
                </div>
            <?php else: ?>
                <div class="table-responsive">
                    <table class="table">
                        <thead>
                            <tr>
                                <?php
                                $headers = explode(',', __t('ctp_history_headers', '申请时间,金额(USDT),状态,审核时间,备注,操作'));
                                foreach ($headers as $h): ?>
                                    <th><?php echo trim($h); ?></th>
                                <?php endforeach; ?>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($requests as $request): ?>
                                <tr>
                                    <td><?php echo $request['created_at']; ?></td>
                                    <td><strong><?php echo number_format($request['amount'], 2); ?> USDT</strong></td>
                                    <td>
                                        <span class="badge badge-<?php 
                                            echo $request['status'] === 'paid' ? 'success' : 
                                                ($request['status'] === 'rejected' ? 'danger' : 'warning'); 
                                        ?>">
                                            <?php 
                                            if ($request['status'] === 'paid') {
                                                echo __t('ctp_history_status_paid', '已完成');
                                            } elseif ($request['status'] === 'rejected') {
                                                echo (strpos($request['remark'] ?? '', '用户主动撤销') !== false)
                                                    ? __t('ctp_history_action_cancel', '撤销申请')
                                                    : __t('ctp_history_status_rejected', '已拒绝');
                                            } else {
                                                echo __t('ctp_history_status_pending', '待审核');
                                            }
                                            ?>
                                        </span>
                                    </td>
                                    <td><?php echo $request['reviewed_at'] ?: '-'; ?></td>
                                    <td><?php echo htmlspecialchars($request['remark'] ?: '-'); ?></td>
                                    <td>
                                        <?php if ($request['status'] === 'pending'): ?>
                                            <form method="POST" style="display: inline;" onsubmit="return confirm('<?php echo __t('ctp_history_action_cancel', '撤销申请'); ?>?')">
                                                <input type="hidden" name="action" value="cancel">
                                                <input type="hidden" name="request_id" value="<?php echo $request['id']; ?>">
                                                <button type="submit" class="btn btn-sm btn-outline-danger">
                                                    <i class="fas fa-times"></i> <?php echo __t('ctp_history_action_cancel', '撤销申请'); ?>
                                                </button>
                                            </form>
                                        <?php else: ?>
                                            <span class="text-muted">-</span>
                                        <?php endif; ?>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

<script>
function sendEmailCode() {
    const btn = event.target;
    const originalText = btn.innerHTML;
    
    // 禁用按钮防止重复点击
    btn.disabled = true;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 发送中...';
    
    var sendUrl = <?= json_encode(function_exists('ggai_member_url_with_impersonate') ? ggai_member_url_with_impersonate('/user/ajax/send_email_code.php') : '/user/ajax/send_email_code.php', JSON_UNESCAPED_UNICODE); ?>;
    // 发送AJAX请求获取验证码
    fetch(sendUrl, {
        method: 'POST',
        credentials: 'same-origin',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Accept': 'application/json'
        },
        body: 'action=send_code'
    })
    .then(function(response) {
        return response.text().then(function(t) {
            var j = null;
            try { j = JSON.parse(t); } catch (e) {}
            return { ok: response.ok, json: j, raw: t };
        });
    })
    .then(function(pack) {
        var data = pack.json;
        if (data && data.success) {
            alert(<?= json_encode(__t('ctp_msg_code_sent', '验证码已发送到您的邮箱，请查收。'), JSON_UNESCAPED_UNICODE); ?>);
            // 开始倒计时
            let countdown = 60;
            const countdownInterval = setInterval(() => {
                btn.innerHTML = countdown + '秒后重发';
                countdown--;
                if (countdown < 0) {
                    clearInterval(countdownInterval);
                    btn.disabled = false;
                    btn.innerHTML = originalText;
                }
            }, 1000);
        } else {
            var errMsg = (data && data.message) ? data.message : <?= json_encode(__t('ctp_msg_code_failed', '发送失败，请稍后重试'), JSON_UNESCAPED_UNICODE); ?>;
            if (!data && pack.raw) { errMsg = errMsg + '（接口返回异常）'; }
            alert(<?= json_encode(__t('ctp_msg_code_fail_prefix', '发送失败：'), JSON_UNESCAPED_UNICODE); ?> + errMsg);
            btn.disabled = false;
            btn.innerHTML = originalText;
        }
    })
    .catch(function(error) {
        console.error('Error:', error);
        alert(<?= json_encode(__t('ctp_msg_code_failed', '发送失败，请稍后重试'), JSON_UNESCAPED_UNICODE); ?>);
        btn.disabled = false;
        btn.innerHTML = originalText;
    });
}

function toggleVerifyBox() {
    if (document.querySelector('input[name=verify_type]:checked').value === 'email') {
        document.querySelector('.verify-email-row').style.display = 'block';
        document.querySelector('.verify-pwd-row').style.display = 'none';
    } else {
        document.querySelector('.verify-email-row').style.display = 'none';
        document.querySelector('.verify-pwd-row').style.display = 'block';
    }
}

document.addEventListener('DOMContentLoaded', function() {
    const confirmCheckbox = document.getElementById('confirmIrreversible');
    const submitBtn = document.getElementById('submitBtn');
    const amountInput = document.querySelector('input[name=amount]');
    
    // 从localStorage获取上次提交的金额
    const lastAmount = localStorage.getItem('lastCommissionAmount');
    if (lastAmount && amountInput) {
        amountInput.setAttribute('data-last-amount', lastAmount);
    }
    
    if (confirmCheckbox && submitBtn) {
        confirmCheckbox.addEventListener('change', function() {
            submitBtn.disabled = !this.checked;
        });
    }
    
    // 验证方式切换
    document.querySelectorAll('input[name=verify_type]').forEach(function(radio) {
        radio.addEventListener('change', toggleVerifyBox);
    });
    toggleVerifyBox();

    // 收款人：列表 / 手动 二选一
    function toggleTargetPickMode() {
        var isOther = document.querySelector('input[name=transfer_type]:checked') && document.querySelector('input[name=transfer_type]:checked').value === 'other';
        var isManual = document.getElementById('target_pick_manual') && document.getElementById('target_pick_manual').checked;
        var listWrap = document.querySelector('.ctp-target-list-wrap');
        var manualWrap = document.querySelector('.ctp-target-manual-wrap');
        var targetSelect = document.getElementById('ctp_target_user');
        var targetManual = document.getElementById('ctp_target_user_manual');
        if (listWrap) { listWrap.style.display = (isOther && !isManual) ? 'block' : 'none'; }
        if (manualWrap) { manualWrap.style.display = (isOther && isManual) ? 'block' : 'none'; }
        if (targetSelect) {
            var useList = isOther && !isManual;
            targetSelect.disabled = !useList;
            if (useList) {
                targetSelect.setAttribute('required', 'required');
            } else {
                targetSelect.removeAttribute('required');
                if (!isOther) { targetSelect.value = ''; }
            }
        }
        if (targetManual) {
            var useManual = isOther && isManual;
            targetManual.disabled = !useManual;
            if (useManual) {
                targetManual.setAttribute('required', 'required');
            } else {
                targetManual.removeAttribute('required');
                if (!isOther) { targetManual.value = ''; }
            }
        }
    }

    // 转账对象切换
    function toggleTransferTarget() {
        var isOther = document.querySelector('input[name=transfer_type]:checked') && document.querySelector('input[name=transfer_type]:checked').value === 'other';
        var row = document.querySelector('.transfer-target-row');
        var pickList = document.getElementById('target_pick_list');
        var pickManual = document.getElementById('target_pick_manual');
        if (row) { row.style.display = isOther ? 'block' : 'none'; }
        if (pickList) { pickList.disabled = !isOther; }
        if (pickManual) { pickManual.disabled = !isOther; }
        if (!isOther) {
            if (pickList) { pickList.checked = true; }
        }
        toggleTargetPickMode();
        // 他转强制交易密码
        var emailRadio = document.getElementById('verify_email');
        var pwdRadio = document.getElementById('verify_pwd');
        if (emailRadio && pwdRadio) {
            if (isOther) {
                pwdRadio.checked = true;
                emailRadio.checked = false;
                emailRadio.disabled = true;
                var emailRow = document.querySelector('.verify-email-row');
                var pwdRow = document.querySelector('.verify-pwd-row');
                if (emailRow) emailRow.style.display = 'none';
                if (pwdRow) pwdRow.style.display = 'block';
            } else {
                emailRadio.disabled = false;
            }
        }
    }
    document.querySelectorAll('input[name=transfer_type]').forEach(function(r){
        r.addEventListener('change', toggleTransferTarget);
    });
    document.querySelectorAll('input[name=target_pick_mode]').forEach(function(r){
        r.addEventListener('change', toggleTargetPickMode);
    });
    toggleTransferTarget();

    // 表单提交验证和防重复提交
    document.querySelector('form').addEventListener('submit', function(e) {
        const submitBtn = document.getElementById('submitBtn');
        const verifyType = document.querySelector('input[name=verify_type]:checked').value;
        
        // 验证必填字段
        if (verifyType === 'email' && !document.querySelector('input[name=email_code]').value) {
            alert('请填写邮箱验证码');
            document.querySelector('input[name=email_code]').focus();
            e.preventDefault();
            return false;
        }
        if (verifyType === 'trade_password' && !document.querySelector('input[name=trade_password]').value) {
            alert('请填写交易密码');
            document.querySelector('input[name=trade_password]').focus();
            e.preventDefault();
            return false;
        }

        var transferType = document.querySelector('input[name=transfer_type]:checked');
        if (transferType && transferType.value === 'other') {
            var pickManual = document.getElementById('target_pick_manual') && document.getElementById('target_pick_manual').checked;
            if (pickManual) {
                var targetManual = document.getElementById('ctp_target_user_manual');
                if (targetManual && !targetManual.value.trim()) {
                    alert('请填写收款人（用户名或 UID）');
                    targetManual.focus();
                    e.preventDefault();
                    return false;
                }
            } else {
                var targetSel = document.getElementById('ctp_target_user');
                if (targetSel && !targetSel.value) {
                    alert('请选择收款人');
                    targetSel.focus();
                    e.preventDefault();
                    return false;
                }
            }
        }
        
        // 检查金额是否与上次相同（前端提示）
        const currentAmount = parseFloat(document.querySelector('input[name=amount]').value);
        const lastAmount = parseFloat(document.querySelector('input[name=amount]').getAttribute('data-last-amount') || '0');
        if (lastAmount > 0 && Math.abs(currentAmount - lastAmount) < 0.01) {
            alert('不能连续两次提交相同金额的申请，请修改金额后重试');
            document.querySelector('input[name=amount]').focus();
            e.preventDefault();
            return false;
        }
        
        // 防重复提交 - 禁用按钮
        if (submitBtn) {
            submitBtn.disabled = true;
            submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>提交中...';
            
            // 保存当前金额到localStorage
            const currentAmount = document.querySelector('input[name=amount]').value;
            localStorage.setItem('lastCommissionAmount', currentAmount);
            
            // 5秒后重新启用按钮（防止网络问题导致按钮永久禁用）
            setTimeout(function() {
                if (submitBtn) {
                    submitBtn.disabled = false;
                    submitBtn.innerHTML = '<i class="fas fa-exchange-alt me-2"></i> 提交申请';
                }
            }, 5000);
        }
    });
});
</script>

<?php
$pageContent = ob_get_clean();
require_once __DIR__ . '/includes/layout.php';
