<?php
require_once __DIR__ . '/../includes/init.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/strategy_filter.php';


if (!function_exists('partner_site_security_json_reject')) {
    /** AJAX：安全命中统一 JSON（含客服同款 interfere_nag） */
    function partner_site_security_json_reject(array $hit): void
    {
        $resp = [
            'success' => false,
            'message' => (string) ($hit['msg'] ?? '文件不安全，账号与IP已被限制'),
        ];
        if (!empty($hit['interfere_nag']) && is_array($hit['interfere_nag'])) {
            $resp['interfere_nag'] = $hit['interfere_nag'];
        }
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode($resp, JSON_UNESCAPED_UNICODE);
        exit;
    }
}

if (!function_exists('partner_site_security_precheck_or_reject')) {
    /** @return bool true=已拦截 */
    function partner_site_security_precheck_or_reject(
        PDO $pdo,
        int $userId,
        int $partnerId,
        string $origName,
        string $kind,
        bool $maybeAjax,
        ?string &$err
    ): bool {
        if (!function_exists('security_site_settings_upload_precheck')) {
            return false;
        }
        $ip = function_exists('getClientIP') ? getClientIP() : (string) ($_SERVER['REMOTE_ADDR'] ?? '');
        $hit = security_site_settings_upload_precheck($pdo, $userId, $ip, $origName, $kind, [
            'partner_id' => $partnerId,
        ]);
        if (empty($hit['blocked'])) {
            return false;
        }
        if ($maybeAjax) {
            partner_site_security_json_reject($hit);
        }
        $err = (string) ($hit['msg'] ?? '文件不安全，账号与IP已被限制');
        return true;
    }
}

if (!function_exists('partner_site_security_scan_saved_or_reject')) {
    /** @return bool true=已拦截 */
    function partner_site_security_scan_saved_or_reject(
        PDO $pdo,
        int $userId,
        int $partnerId,
        string $absPath,
        string $relPath,
        string $origName,
        string $kind,
        bool $maybeAjax,
        ?string &$err
    ): bool {
        if (!function_exists('security_site_settings_upload_scan_saved')) {
            return false;
        }
        $ip = function_exists('getClientIP') ? getClientIP() : (string) ($_SERVER['REMOTE_ADDR'] ?? '');
        $hit = security_site_settings_upload_scan_saved(
            $pdo,
            $userId,
            $ip,
            $absPath,
            $relPath,
            $origName,
            $kind,
            ['partner_id' => $partnerId]
        );
        if (empty($hit['blocked'])) {
            return false;
        }
        if ($maybeAjax) {
            partner_site_security_json_reject($hit);
        }
        $err = (string) ($hit['msg'] ?? '文件内容不安全，账号与IP已被限制');
        return true;
    }
}

// 已移除 uploadToW188Directly 函数
// 新方案：文件只保存到本地，通过定时任务自动同步到所有服务器（包括w188）

$user_id = $_SESSION['user_id'];
$role_id = $_SESSION['role_id'] ?? 0;

// 获取用户基本信息
$stmt = $pdo->prepare('SELECT id, username, nickname, role_id, referrer_id FROM users WHERE id=?');
$stmt->execute([$user_id]);
$user_info = $stmt->fetch(PDO::FETCH_ASSOC);

// 获取角色名称
$stmt = $pdo->prepare('SELECT name FROM roles WHERE id=?');
$stmt->execute([$role_id]);
$role_info = $stmt->fetch(PDO::FETCH_ASSOC);
$role_name = $role_info ? translate_role_label($role_info['name']) : '未知角色';

// 检查用户充值金额是否达到返佣资格条件
$min_deposit_for_commission = 100; // 默认100 USDT
$stmt = $pdo->prepare("SELECT value FROM system_settings WHERE key_name = 'min_deposit_for_commission'");
$stmt->execute();
$setting = $stmt->fetch(PDO::FETCH_ASSOC);
if ($setting && !empty($setting['value'])) {
    $min_deposit_for_commission = floatval($setting['value']);
}

$stmt = $pdo->prepare("SELECT SUM(amount) FROM recharge_orders WHERE user_id=? AND status='confirmed'");
$stmt->execute([$user_id]);
$total_deposit = floatval($stmt->fetchColumn() ?: 0);

$is_qualified = $total_deposit >= $min_deposit_for_commission;

// 必须是partners表user_id=当前用户id，且role_id为9或10
$stmt = $pdo->prepare('SELECT * FROM partners WHERE user_id=? AND role_id IN (9,10,11)');
$stmt->execute([$user_id]);
$partner = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$partner) {
    header('Location: index.php');
    exit;
}
$partner_id = $partner['id'];

// 读取合伙人信息
$stmt = $pdo->prepare('SELECT * FROM partners WHERE id=?');
$stmt->execute([$partner_id]);
$info = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$info) {
    echo '<div class="alert alert-danger mt-4">合伙人信息不存在！</div>';
    exit;
}
$GLOBALS['partnerInfo'] = $info;

// 获取有效API数量（与用户首页逻辑保持一致，包含所有下级用户）
$api_count = 0;
try {
    // 获取所有下级用户ID（包括自己）
    $member_ids = [$user_id];
    
    // 递归获取所有下级用户
    function getAllSubIds($pdo, $parent_id) {
        $subs = [];
        $stmt = $pdo->prepare("SELECT id FROM users WHERE referrer_id = ?");
        $stmt->execute([$parent_id]);
        $children = $stmt->fetchAll(PDO::FETCH_COLUMN);
        foreach ($children as $child_id) {
            $subs[] = $child_id;
            $subs = array_merge($subs, getAllSubIds($pdo, $child_id));
        }
        return $subs;
    }
    
    $all_sub_ids = getAllSubIds($pdo, $user_id);
    $member_ids = array_merge($member_ids, $all_sub_ids);
    $member_ids = array_unique($member_ids);
    
    // 统计所有下级用户的激活API数量
    if (!empty($member_ids)) {
        $placeholders = str_repeat('?,', count($member_ids) - 1) . '?';
        $stmt = $pdo->prepare("SELECT COUNT(*) FROM api_accounts WHERE user_id IN ($placeholders) AND status = 'active'");
        $stmt->execute($member_ids);
        $api_count = $stmt->fetchColumn() ?: 0;
    }
    
    
} catch (Exception $e) {
    error_log("获取API数量失败: " . $e->getMessage());
}

// 读取系统默认"首页中间介绍"标题与内容，供表单显示回退
$sysDefaults = $pdo->query("SELECT key_name,value FROM system_settings WHERE key_name IN ('homepage_intro_title_default','homepage_intro_content_default')")->fetchAll(PDO::FETCH_KEY_PAIR);
$defaultIntroTitle = $sysDefaults['homepage_intro_title_default'] ?? '平台优势';
$defaultIntroContent = $sysDefaults['homepage_intro_content_default'] ?? "一、所有重要参数全部支持自定义，包括策略，合约，杠杆，止损止盈，做趋势还是震荡品种，加仓速度等，不会的可选默认，会的可自定义\n二、有一定用户量的可申请自定义网站，可拥有独立的域名，ＬＯＧＯ，网站名等。拥有自己的品牌与ＩＰ，用户全部自己管理。\n三、系统有自动提现功能。\n四、１０万个帐号会有１０万套系统，无一相同，可避免同时开平仓引起的各类风险。\n五、除了网格是不止损的，其他均带止损，非马丁\n六、变更杠杆等５分钟左右即可生效，还有更多功能等你来发现。";
$rawTitle = $info['homepage_intro_title'] ?? '';
$rawContent = $info['homepage_intro_content'] ?? '';
// 更严格的"空"判断：NULL/空串/仅空格或全角空格都视为空
$isEmpty = function ($v) {
    if ($v === null) return true;
    if ($v === '') return true;
    return preg_match('/^\s*$/u', preg_replace('/[\x{00A0}\x{2000}-\x{200B}]/u', ' ', (string)$v)) === 1;
};
// 修正回显逻辑：优先显示用户修改的值，只有在用户没有修改时才使用默认值
$displayIntroTitle = $isEmpty($rawTitle) ? $defaultIntroTitle : $rawTitle;
$displayIntroContent = $isEmpty($rawContent) ? $defaultIntroContent : $rawContent;

// 处理翻译请求（AJAX）
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'translate') {
    header('Content-Type: application/json; charset=utf-8');
    
    $text = trim($_POST['text'] ?? '');
    $field = trim($_POST['field'] ?? '');
    
    if (empty($text)) {
        echo json_encode(['success' => false, 'message' => '翻译文本不能为空'], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    if (empty($field)) {
        echo json_encode(['success' => false, 'message' => '字段名不能为空'], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // 使用现有的翻译函数
    if (function_exists('translate_content')) {
        $translated = translate_content($text, 'en', $pdo);
        if (!empty($translated) && $translated !== $text) {
            echo json_encode([
                'success' => true,
                'translated' => $translated,
                'message' => '翻译成功'
            ], JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode([
                'success' => false,
                'message' => '翻译失败，请稍后重试'
            ], JSON_UNESCAPED_UNICODE);
        }
    } else {
        echo json_encode([
            'success' => false,
            'message' => '翻译功能不可用'
        ], JSON_UNESCAPED_UNICODE);
    }
    exit;
}

$err = '';
$succ = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $site_name = trim($_POST['site_name'] ?? '');
    // 验证网站名称不能为空
    // 注意：AJAX 上传LOGO/广告图/PDF时不会带 site_name，不应因此报错
    if (array_key_exists('site_name', $_POST) && empty($site_name)) {
        $err = '网站名称不能为空！';
    }
    // 下载地址改为不可更改：强制使用数据库中的现有值，忽略POST
    $download_url = trim($info['download_url'] ?? '');
    $contact_info = trim($_POST['contact_info'] ?? '');
    $welcome_text = trim($_POST['welcome_text'] ?? '');
    $contact_show_index = $_POST['contact_show_index'] ?? 'partner';
    $contact_show_user = $_POST['contact_show_user'] ?? 'partner';
    $logo_url = $info['logo_url'] ?? '';
    // 兜底：如果本次保存时 DB 里还是空，但前端已经通过 AJAX 上传成功并把新地址写到表单里，避免被覆盖回空
    $posted_logo_url = trim((string)($_POST['logo_url'] ?? ''));
    if ($logo_url === '' && $posted_logo_url !== '') {
        $tmp = '/' . ltrim($posted_logo_url, '/');
        if (strpos($tmp, '/uploads/partner_logo/') === 0 && strpos($tmp, '..') === false) {
            $logo_url = $tmp;
        }
    }
    $commission_levels = intval($_POST['commission_levels'] ?? ($info['commission_levels'] ?? 7));
    // 处理LOGO上传
    if (!empty($_FILES['logo_file']['name'])) {
        $file = $_FILES['logo_file'];
        $isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
        $onlyLogoUpload = empty($_POST['site_name']) && !empty($_FILES['logo_file']['name']) && empty($_FILES['banner_file']['name']) && empty($_FILES['manual_pdf']['name']);
        $maybeAjaxUpload = ($isAjax || $onlyLogoUpload);
        
        // 检查上传错误
        if ($file['error'] !== UPLOAD_ERR_OK) {
            $upload_errors = [
                UPLOAD_ERR_INI_SIZE => '文件大小超过系统限制',
                UPLOAD_ERR_FORM_SIZE => '文件大小超过表单限制',
                UPLOAD_ERR_PARTIAL => '文件上传不完整',
                UPLOAD_ERR_NO_FILE => '没有选择文件',
                UPLOAD_ERR_NO_TMP_DIR => '临时目录不存在',
                UPLOAD_ERR_CANT_WRITE => '文件写入失败',
                UPLOAD_ERR_EXTENSION => '文件上传被扩展阻止'
            ];
            $err = '上传错误：' . ($upload_errors[$file['error']] ?? '未知错误（错误代码：' . $file['error'] . '）');
            if ($maybeAjaxUpload) {
                header('Content-Type: application/json; charset=utf-8');
                echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                exit;
            }
        } else {
            // 验证是否为真实上传文件
            if (!is_uploaded_file($file['tmp_name'])) {
                $err = '文件验证失败，请重试';
                if ($maybeAjaxUpload) {
                    header('Content-Type: application/json; charset=utf-8');
                    echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                    exit;
                }
            } else {
                if (partner_site_security_precheck_or_reject($pdo, (int)$user_id, (int)$partner_id, (string)$file['name'], 'logo', $maybeAjaxUpload, $err)) {
                    // 已拦截
                } else {
                $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
                $allow_ext = ['jpg','jpeg','png','gif','bmp'];
                if (!in_array($ext, $allow_ext)) {
                    $err = '仅允许上传JPG、PNG、GIF、BMP格式图片';
                    if ($maybeAjaxUpload) {
                        header('Content-Type: application/json; charset=utf-8');
                        echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                        exit;
                    }
                } elseif ($file['size'] > 3*1024*1024) {
                    $err = '图片大小不能超过3MB';
                    if ($maybeAjaxUpload) {
                        header('Content-Type: application/json; charset=utf-8');
                        echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                        exit;
                    }
                } elseif ($file['size'] == 0) {
                    $err = '文件大小为0，请检查文件';
                    if ($maybeAjaxUpload) {
                        header('Content-Type: application/json; charset=utf-8');
                        echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                        exit;
                    }
                } else {
                    $img_info = @getimagesize($file['tmp_name']);
                    if ($img_info === false) {
                        $err = '请上传真实图片文件，禁止伪造图片或木马';
                        if ($maybeAjaxUpload) {
                            header('Content-Type: application/json; charset=utf-8');
                            echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                            exit;
                        }
                    } else {
                        // 关键：必须保存到站点 DocumentRoot 下，确保 /uploads/... URL 刷新后可直接访问
                        $docRoot = (string)($_SERVER['DOCUMENT_ROOT'] ?? '');
                        if ($docRoot === '') {
                            // 兜底：以 OS7 目录作为站点根
                            $docRoot = realpath(__DIR__ . '/..') ?: (dirname(__DIR__));
                        }
                        $docRoot = rtrim($docRoot, "/\\");
                        $save_dir = $docRoot . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'partner_logo' . DIRECTORY_SEPARATOR;
                        
                        // 创建目录（如果不存在）
                        if (!is_dir($save_dir)) {
                            if (!@mkdir($save_dir, 0777, true)) {
                                $lastError = error_get_last();
                                $err = '创建目录失败：' . ($lastError['message'] ?? '未知错误');
                                error_log('LOGO上传：创建目录失败 - ' . $save_dir . ' - ' . ($lastError['message'] ?? 'unknown'));
                                if ($maybeAjaxUpload) {
                                    header('Content-Type: application/json; charset=utf-8');
                                    echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                                    exit;
                                }
                            }
                        }
                        
                        if (empty($err)) {
                            $new_name = 'logo_partner_' . $partner_id . '_' . time() . '.' . $ext;
                            $save_path = $save_dir . $new_name;
                            
                            // 移动上传的文件
                            if (@move_uploaded_file($file['tmp_name'], $save_path)) {
                                // 验证文件是否真的保存成功
                                if (!file_exists($save_path)) {
                                    $err = '文件保存后验证失败，请重试';
                                    error_log('LOGO上传：文件移动后不存在 - ' . $save_path);
                                    if ($maybeAjaxUpload) {
                                        header('Content-Type: application/json; charset=utf-8');
                                        echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                                        exit;
                                    }
                                } elseif (filesize($save_path) != $file['size']) {
                                    // 文件大小不匹配，可能是上传不完整
                                    @unlink($save_path); // 删除不完整的文件
                                    $err = '文件上传不完整，请重试';
                                    error_log('LOGO上传：文件大小不匹配 - 期望：' . $file['size'] . '，实际：' . filesize($save_path));
                                    if ($maybeAjaxUpload) {
                                        header('Content-Type: application/json; charset=utf-8');
                                        echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                                        exit;
                                    }
                                } else {
                                    // 再次验证图片有效性（防止损坏的图片）
                                    $verify_img = @getimagesize($save_path);
                                    if ($verify_img === false) {
                                        @unlink($save_path);
                                        $err = '图片文件损坏，请重新上传';
                                        error_log('LOGO上传：保存后的图片验证失败 - ' . $save_path);
                                        if ($maybeAjaxUpload) {
                                            header('Content-Type: application/json; charset=utf-8');
                                            echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                                            exit;
                                        }
                                    } else {
                                        if (partner_site_security_scan_saved_or_reject($pdo, (int)$user_id, (int)$partner_id, $save_path, '/uploads/partner_logo/' . $new_name, (string)$file['name'], 'logo', $maybeAjaxUpload, $err)) {
                                            // 已隔离并拦截
                                        } else {
                                        $logo_url = '/uploads/partner_logo/' . $new_name;
                                        
                                        // 立即更新数据库中的logo_url（先更新数据库，确保URL可用）
                                        $stmt = $pdo->prepare('UPDATE partners SET logo_url=? WHERE id=?');
                                        $stmt->execute([$logo_url, $partner_id]);
                                        $info['logo_url'] = $logo_url;
                                        
                                        // 新方案：只保存到本地，通过定时任务自动同步到所有服务器（包括w188）
                                        // 使用本地URL显示，图片可以立即显示
                                        // 确保$logo_url是相对路径（以/开头）
                                        $logo_url = '/' . ltrim($logo_url, '/');
                                        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
                                        $host = $_SERVER['HTTP_HOST'];
                                        $logo_local_url = $protocol . '://' . $host . $logo_url;
                                        
                                        // 如果是AJAX请求（只上传LOGO，不提交表单），返回JSON响应
                                        if ($maybeAjaxUpload) {
                                            $abs_saved = $save_path;
                                            $saved_exists = @file_exists($abs_saved);
                                            $saved_size = $saved_exists ? @filesize($abs_saved) : 0;
                                            // 返回JSON响应，前端直接更新预览（使用本地URL）
                                            header('Content-Type: application/json; charset=utf-8');
                                            echo json_encode([
                                                'success' => true,
                                                'message' => 'LOGO上传成功！',
                                                'logo_url' => $logo_url,
                                                'logo_local_url' => $logo_local_url,
                                                'saved_name' => $new_name,
                                                'saved_exists' => $saved_exists ? 1 : 0,
                                                'saved_size' => intval($saved_size)
                                            ], JSON_UNESCAPED_UNICODE);
                                            exit;
                                        }
                                        
                                        // best-effort 后台异步同步（不影响上传成功；失败忽略）
                                        // 文件会通过定时任务自动同步，这里只是尝试立即同步（可选）
                                        if (function_exists('fastcgi_finish_request')) {
                                            fastcgi_finish_request();
                                        }
                                        try {
                                            require_once __DIR__ . '/../includes/classes/FileSync.php';
                                            $fileSync = new FileSync();
                                            // 同步到所有服务器（包括w188），定时任务会确保最终同步成功
                                            $fileSync->syncFile($logo_url);
                                        } catch (Exception $e) {
                                            error_log('LOGO同步失败: ' . $e->getMessage());
                                            // ignore - 定时任务会处理同步
                                        }
                                    }
                                }
                                        }
                            } else {
                                $lastError = error_get_last();
                                $err = '图片上传失败：' . ($lastError['message'] ?? '未知错误，请重试');
                                error_log('LOGO上传：move_uploaded_file失败 - ' . $save_path . ' - ' . ($lastError['message'] ?? 'unknown'));
                                if ($maybeAjaxUpload) {
                                    header('Content-Type: application/json; charset=utf-8');
                                    echo json_encode(['success' => false, 'message' => $err], JSON_UNESCAPED_UNICODE);
                                    exit;
                                }
                            }
                        }
                    }
                }
            }
                }
        }
    }
    // 处理PDF文件上传
    if (!empty($_FILES['manual_pdf']['name'])) {
        $file = $_FILES['manual_pdf'];
        
        // 检查上传错误
        if ($file['error'] !== UPLOAD_ERR_OK) {
            $upload_errors = [
                UPLOAD_ERR_INI_SIZE => '文件大小超过系统限制',
                UPLOAD_ERR_FORM_SIZE => '文件大小超过表单限制',
                UPLOAD_ERR_PARTIAL => '文件上传不完整',
                UPLOAD_ERR_NO_FILE => '没有选择文件',
                UPLOAD_ERR_NO_TMP_DIR => '临时目录不存在',
                UPLOAD_ERR_CANT_WRITE => '文件写入失败',
                UPLOAD_ERR_EXTENSION => '文件上传被扩展阻止'
            ];
            $err = 'PDF上传错误：' . ($upload_errors[$file['error']] ?? '未知错误（错误代码：' . $file['error'] . '）');
        } else {
            // 验证是否为真实上传文件
            if (!is_uploaded_file($file['tmp_name'])) {
                $err = 'PDF文件验证失败，请重试';
            } else {
                $isAjaxPdf = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower((string)$_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
                $onlyPdfUploadGate = empty($_POST['site_name']) && !empty($_FILES['manual_pdf']['name']) && empty($_FILES['logo_file']['name']) && empty($_FILES['banner_file']['name']);
                $maybeAjaxPdf = ($isAjaxPdf || $onlyPdfUploadGate);
                if (partner_site_security_precheck_or_reject($pdo, (int)$user_id, (int)$partner_id, (string)$file['name'], 'pdf', $maybeAjaxPdf, $err)) {
                    // 已拦截
                } else {
                $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
                if ($ext !== 'pdf') {
                    $err = '仅允许上传PDF文件';
                } elseif ($file['size'] > 10*1024*1024) {
                    $err = 'PDF文件大小不能超过10MB';
                } elseif ($file['size'] == 0) {
                    $err = '文件大小为0，请检查文件';
                } else {
                    $file_head = file_get_contents($file['tmp_name'], false, null, 0, 512);
                    if (stripos($file_head, '<html') !== false || stripos($file_head, '<?php') !== false || stripos($file_head, '<script') !== false) {
                        $err = '禁止上传伪造的网页文件';
                    } else {
                        // 关键：必须保存到站点 DocumentRoot 下，确保 /uploads/... URL 刷新后可直接访问
                        $docRoot = (string)($_SERVER['DOCUMENT_ROOT'] ?? '');
                        if ($docRoot === '') {
                            $docRoot = realpath(__DIR__ . '/..') ?: (dirname(__DIR__));
                        }
                        $docRoot = rtrim($docRoot, "/\\");
                        $saveDir = $docRoot . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'partner_manual' . DIRECTORY_SEPARATOR;
                        
                        // 创建目录（如果不存在）
                        if (!is_dir($saveDir)) {
                            if (!@mkdir($saveDir, 0777, true)) {
                                $lastError = error_get_last();
                                $err = '创建目录失败：' . ($lastError['message'] ?? '未知错误');
                                error_log('PDF上传：创建目录失败 - ' . $saveDir . ' - ' . ($lastError['message'] ?? 'unknown'));
                            }
                        }
                        
                        if (empty($err)) {
                            $newName = 'manual_partner_' . $partner_id . '_' . time() . '.pdf';
                            $savePath = $saveDir . $newName;
                            
                            // 移动上传的文件
                            if (@move_uploaded_file($file['tmp_name'], $savePath)) {
                                // 验证文件是否真的保存成功
                                if (!file_exists($savePath)) {
                                    $err = 'PDF文件保存后验证失败，请重试';
                                    error_log('PDF上传：文件移动后不存在 - ' . $savePath);
                                } elseif (filesize($savePath) != $file['size']) {
                                    // 文件大小不匹配，可能是上传不完整
                                    @unlink($savePath); // 删除不完整的文件
                                    $err = 'PDF文件上传不完整，请重试';
                                    error_log('PDF上传：文件大小不匹配 - 期望：' . $file['size'] . '，实际：' . filesize($savePath));
                                } else {
                                    $isAjaxPdf2 = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower((string)$_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
                                    $onlyPdfUpload2 = empty($_POST['site_name']) && !empty($_FILES['manual_pdf']['name']) && empty($_FILES['logo_file']['name']) && empty($_FILES['banner_file']['name']);
                                    $maybeAjaxPdf2 = ($isAjaxPdf2 || $onlyPdfUpload2);
                                    if (partner_site_security_scan_saved_or_reject($pdo, (int)$user_id, (int)$partner_id, $savePath, '/uploads/partner_manual/' . $newName, (string)$file['name'], 'pdf', $maybeAjaxPdf2, $err)) {
                                        // 已隔离并拦截
                                    } else {
                                    $manualPdfUrl = '/uploads/partner_manual/' . $newName;
                                    $stmt = $pdo->prepare('UPDATE partners SET manual_pdf=? WHERE id=?');
                                    $stmt->execute([$manualPdfUrl, $partner_id]);
                                    $info['manual_pdf'] = $manualPdfUrl;

                    // 新方案：使用绝对路径（不带域名），浏览器会自动使用当前域名
                    // 确保路径格式正确（绝对路径，以/开头）
                    $manualPdfUrl = '/' . ltrim($manualPdfUrl, '/');
                    
                    // 如果是AJAX请求（只上传PDF，不提交表单），返回JSON响应
                    $isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
                    $onlyPdfUpload = empty($_POST['site_name']) && !empty($_FILES['manual_pdf']['name']) && empty($_FILES['logo_file']['name']) && empty($_FILES['banner_file']['name']);
                    
                    if ($isAjax || $onlyPdfUpload) {
                        // 返回JSON响应，前端直接更新输入框（使用绝对路径）
                        header('Content-Type: application/json; charset=utf-8');
                        echo json_encode([
                            'success' => true,
                            'message' => 'PDF上传成功！',
                            'manual_pdf_url' => $manualPdfUrl,
                            'manual_pdf_local_url' => $manualPdfUrl,  // 使用绝对路径
                            'url' => $manualPdfUrl  // 兼容旧代码
                        ], JSON_UNESCAPED_UNICODE);
                        exit;
                    }

                    // 新方案：只保存到本地，通过定时任务自动同步到所有服务器（包括w188）
                    // best-effort 后台异步同步（不影响上传成功；失败忽略）
                    if (function_exists('fastcgi_finish_request')) {
                        fastcgi_finish_request();
                    }
                    try {
                        require_once __DIR__ . '/../includes/classes/FileSync.php';
                        $fileSync = new FileSync();
                        // 同步到所有服务器（包括w188），定时任务会确保最终同步成功
                        $fileSync->syncFile($manualPdfUrl);
                                    } catch (Exception $e) {
                                        error_log('PDF同步失败: ' . $e->getMessage());
                                        // ignore - 定时任务会处理同步
                                    }
                                }
                                    }
                            } else {
                                $lastError = error_get_last();
                                $err = 'PDF上传失败：' . ($lastError['message'] ?? '未知错误，请重试');
                                error_log('PDF上传：move_uploaded_file失败 - ' . $savePath . ' - ' . ($lastError['message'] ?? 'unknown'));
                            }
                        }
                    }
                }
            }
        }
    }
                }
    // 兜底：保存时同步使用前端已上传的 PDF 地址（防止上传未完成/并发覆盖）
    if (empty($err)) {
        $posted_manual_pdf = trim((string)($_POST['manual_pdf'] ?? ''));
        if (!empty($posted_manual_pdf)) {
            $tmp = '/' . ltrim($posted_manual_pdf, '/');
            if (strpos($tmp, '/uploads/partner_manual/') === 0 && strpos($tmp, '..') === false) {
                $info['manual_pdf'] = $tmp;
            }
        }
    }
    // 处理广告图片上传
    if (!empty($_FILES['banner_file']['name'])) {
        $file = $_FILES['banner_file'];
        
        // 检查上传错误
        if ($file['error'] !== UPLOAD_ERR_OK) {
            $upload_errors = [
                UPLOAD_ERR_INI_SIZE => '文件大小超过系统限制',
                UPLOAD_ERR_FORM_SIZE => '文件大小超过表单限制',
                UPLOAD_ERR_PARTIAL => '文件上传不完整',
                UPLOAD_ERR_NO_FILE => '没有选择文件',
                UPLOAD_ERR_NO_TMP_DIR => '临时目录不存在',
                UPLOAD_ERR_CANT_WRITE => '文件写入失败',
                UPLOAD_ERR_EXTENSION => '文件上传被扩展阻止'
            ];
            $err = '广告图片上传错误：' . ($upload_errors[$file['error']] ?? '未知错误（错误代码：' . $file['error'] . '）');
        } else {
            // 验证是否为真实上传文件
            if (!is_uploaded_file($file['tmp_name'])) {
                $err = '文件验证失败，请重试';
            } else {
                $isAjaxBanner = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower((string)$_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
                $onlyBannerUploadGate = empty($_POST['site_name']) && !empty($_FILES['banner_file']['name']) && empty($_FILES['logo_file']['name']) && empty($_FILES['manual_pdf']['name']);
                $maybeAjaxBanner = ($isAjaxBanner || $onlyBannerUploadGate);
                if (partner_site_security_precheck_or_reject($pdo, (int)$user_id, (int)$partner_id, (string)$file['name'], 'banner', $maybeAjaxBanner, $err)) {
                    // 已拦截
                } else {
                $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
                $allow_ext = ['jpg','jpeg','png','gif'];
                if (!in_array($ext, $allow_ext)) {
                    $err = '广告图片仅允许上传JPG、PNG、GIF格式';
                } elseif ($file['size'] > 2*1024*1024) {
                    $err = '广告图片不能超过2MB';
                } elseif ($file['size'] == 0) {
                    $err = '文件大小为0，请检查文件';
                } else {
                    $img_info = @getimagesize($file['tmp_name']);
                    if ($img_info === false) {
                        $err = '请上传真实图片文件';
                    } else {
                        // 关键：必须保存到站点 DocumentRoot 下，确保 /uploads/... URL 刷新后可直接访问
                        $docRoot = (string)($_SERVER['DOCUMENT_ROOT'] ?? '');
                        if ($docRoot === '') {
                            $docRoot = realpath(__DIR__ . '/..') ?: (dirname(__DIR__));
                        }
                        $docRoot = rtrim($docRoot, "/\\");
                        $save_dir = $docRoot . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'partner_logo' . DIRECTORY_SEPARATOR;
                        
                        // 创建目录（如果不存在）
                        if (!is_dir($save_dir)) {
                            if (!@mkdir($save_dir, 0777, true)) {
                                $lastError = error_get_last();
                                $err = '创建目录失败：' . ($lastError['message'] ?? '未知错误');
                                error_log('广告图片上传：创建目录失败 - ' . $save_dir . ' - ' . ($lastError['message'] ?? 'unknown'));
                            }
                        }
                        
                        if (empty($err)) {
                            $new_name = 'banner_partner_' . $partner_id . '_' . time() . '.' . $ext;
                            $save_path = $save_dir . $new_name;
                            
                            // 移动上传的文件
                            if (@move_uploaded_file($file['tmp_name'], $save_path)) {
                                // 验证文件是否真的保存成功
                                if (!file_exists($save_path)) {
                                    $err = '广告图片保存后验证失败，请重试';
                                    error_log('广告图片上传：文件移动后不存在 - ' . $save_path);
                                } elseif (filesize($save_path) != $file['size']) {
                                    // 文件大小不匹配，可能是上传不完整
                                    @unlink($save_path); // 删除不完整的文件
                                    $err = '广告图片上传不完整，请重试';
                                    error_log('广告图片上传：文件大小不匹配 - 期望：' . $file['size'] . '，实际：' . filesize($save_path));
                                } else {
                                    // 再次验证图片有效性（防止损坏的图片）
                                    $verify_img = @getimagesize($save_path);
                                    if ($verify_img === false) {
                                        @unlink($save_path);
                                        $err = '图片文件损坏，请重新上传';
                                        error_log('广告图片上传：保存后的图片验证失败 - ' . $save_path);
                                    } else {
                    $isAjaxBanner2 = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower((string)$_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
                    $onlyBannerUpload2 = empty($_POST['site_name']) && !empty($_FILES['banner_file']['name']) && empty($_FILES['logo_file']['name']) && empty($_FILES['manual_pdf']['name']);
                    $maybeAjaxBanner2 = ($isAjaxBanner2 || $onlyBannerUpload2);
                    if (partner_site_security_scan_saved_or_reject($pdo, (int)$user_id, (int)$partner_id, $save_path, '/uploads/partner_logo/' . $new_name, (string)$file['name'], 'banner', $maybeAjaxBanner2, $err)) {
                        // 已隔离并拦截
                    } else {
                    $banner_url = '/uploads/partner_logo/' . $new_name;
                    $stmt = $pdo->prepare('UPDATE partners SET banner_img=? WHERE id=?');
                    $stmt->execute([$banner_url, $partner_id]);
                    $info['banner_img'] = $banner_url;

                    // 新方案：使用本地URL（图片已保存在本地）
                    // 确保路径格式正确（相对路径，以/开头）
                    $banner_url = '/' . ltrim($banner_url, '/');
                    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
                    $host = $_SERVER['HTTP_HOST'];
                    $banner_local_url = $protocol . '://' . $host . $banner_url;
                    
                    // 如果是AJAX请求（只上传图片，不提交表单），返回JSON响应
                    $isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
                    $onlyBannerUpload = empty($_POST['site_name']) && !empty($_FILES['banner_file']['name']) && empty($_FILES['logo_file']['name']) && empty($_FILES['manual_pdf']['name']);
                    
                    if ($isAjax || $onlyBannerUpload) {
                        // 返回JSON响应，前端直接更新预览（使用本地URL）
                        header('Content-Type: application/json; charset=utf-8');
                        echo json_encode([
                            'success' => true,
                            'message' => '广告图片上传成功！',
                            'banner_url' => $banner_url,
                            'banner_local_url' => $banner_local_url,
                            'url' => $banner_url  // 兼容旧代码
                        ], JSON_UNESCAPED_UNICODE);
                        exit;
                    }

                    // 新方案：只保存到本地，通过定时任务自动同步到所有服务器（包括w188）
                    // best-effort 后台异步同步（不影响上传成功；失败忽略）
                    if (function_exists('fastcgi_finish_request')) {
                        fastcgi_finish_request();
                    }
                    try {
                        require_once __DIR__ . '/../includes/classes/FileSync.php';
                        $fileSync = new FileSync();
                        $fileSync->syncFile($banner_url);
                                        } catch (Exception $e) {
                                            error_log('广告图片同步失败: ' . $e->getMessage());
                                        }
                                    }
                                }
                    }
                            } else {
                                $lastError = error_get_last();
                                $err = '广告图片上传失败：' . ($lastError['message'] ?? '未知错误，请重试');
                                error_log('广告图片上传：move_uploaded_file失败 - ' . $save_path . ' - ' . ($lastError['message'] ?? 'unknown'));
                            }
                        }
                    }
                }
            }
        }
    }
                }
    // 兜底：保存时同步使用前端已上传的 banner 地址（防止上传未完成/并发覆盖）
    if (empty($err)) {
        $posted_banner = trim((string)($_POST['banner_img'] ?? ''));
        if (!empty($posted_banner)) {
            $tmp = '/' . ltrim($posted_banner, '/');
            if (strpos($tmp, '/uploads/partner_logo/') === 0 && strpos($tmp, '..') === false) {
                $info['banner_img'] = $tmp;
            }
        }
    }
    if (!$err) {
        $homepage_intro_title = trim($_POST['homepage_intro_title'] ?? '');
        $homepage_intro_content = trim($_POST['homepage_intro_content'] ?? '');
        $homepage_style = trim($_POST['homepage_style'] ?? 'default');
        $allow_user_style_choice = intval($_POST['allow_user_style_choice'] ?? 1);
        $allowed_strategies = json_encode($_POST['allowed_strategies'] ?? []);

        // 在线客服开关
        $support_guest_mode = intval($_POST['support_guest_mode'] ?? intval($info['support_guest_mode'] ?? 1));
        if (!in_array($support_guest_mode, [0,1,2], true)) $support_guest_mode = 1;
        $support_member_enabled = intval($_POST['support_member_enabled'] ?? intval($info['support_member_enabled'] ?? 1));
        $support_member_enabled = $support_member_enabled ? 1 : 0;

        // 英文版字段
        $site_name_en = trim($_POST['site_name_en'] ?? '');
        $welcome_text_en = trim($_POST['welcome_text_en'] ?? '');
        $homepage_intro_title_en = trim($_POST['homepage_intro_title_en'] ?? '');
        $homepage_intro_content_en = trim($_POST['homepage_intro_content_en'] ?? '');
        $contact_info_en = trim($_POST['contact_info_en'] ?? '');

        // 注意：logo_url/manual_pdf/banner_img 可能由 AJAX 上传更新，这里以当前变量/回显值为准，避免被覆盖
        // 一对一 bindValue，禁止 execute([...]) 整包数组
        $stmt = $pdo->prepare('UPDATE partners SET
            site_name=:site_name,
            logo_url=:logo_url,
            download_url=:download_url,
            contact_info=:contact_info,
            contact_info_en=:contact_info_en,
            welcome_text=:welcome_text,
            welcome_text_en=:welcome_text_en,
            homepage_intro_title=:homepage_intro_title,
            homepage_intro_title_en=:homepage_intro_title_en,
            homepage_intro_content=:homepage_intro_content,
            homepage_intro_content_en=:homepage_intro_content_en,
            homepage_style=:homepage_style,
            allow_user_style_choice=:allow_user_style_choice,
            support_guest_mode=:support_guest_mode,
            support_member_enabled=:support_member_enabled,
            allowed_strategies=:allowed_strategies,
            contact_show_index=:contact_show_index,
            contact_show_user=:contact_show_user,
            commission_levels=:commission_levels
            WHERE id=:id');
        $stmt->bindValue(':site_name', $site_name);
        $stmt->bindValue(':logo_url', $logo_url);
        $stmt->bindValue(':download_url', $download_url);
        $stmt->bindValue(':contact_info', $contact_info);
        $stmt->bindValue(':contact_info_en', $contact_info_en);
        $stmt->bindValue(':welcome_text', $welcome_text);
        $stmt->bindValue(':welcome_text_en', $welcome_text_en);
        $stmt->bindValue(':homepage_intro_title', $homepage_intro_title);
        $stmt->bindValue(':homepage_intro_title_en', $homepage_intro_title_en);
        $stmt->bindValue(':homepage_intro_content', $homepage_intro_content);
        $stmt->bindValue(':homepage_intro_content_en', $homepage_intro_content_en);
        $stmt->bindValue(':homepage_style', $homepage_style);
        $stmt->bindValue(':allow_user_style_choice', (int)$allow_user_style_choice, PDO::PARAM_INT);
        $stmt->bindValue(':support_guest_mode', (int)$support_guest_mode, PDO::PARAM_INT);
        $stmt->bindValue(':support_member_enabled', (int)$support_member_enabled, PDO::PARAM_INT);
        $stmt->bindValue(':allowed_strategies', $allowed_strategies);
        $stmt->bindValue(':contact_show_index', (int)$contact_show_index, PDO::PARAM_INT);
        $stmt->bindValue(':contact_show_user', (int)$contact_show_user, PDO::PARAM_INT);
        $stmt->bindValue(':commission_levels', $commission_levels);
        $stmt->bindValue(':id', (int)$partner_id, PDO::PARAM_INT);
        $stmt->execute();
        $succ = '保存成功！';
        // 重新读取
        $stmt = $pdo->prepare('SELECT * FROM partners WHERE id=?');
        $stmt->execute([$partner_id]);
        $info = $stmt->fetch(PDO::FETCH_ASSOC);
        // 同步兜底字段（如果前端传了最新地址，确保回显一致）
        if (!empty($posted_logo_url)) $info['logo_url'] = $logo_url;
        if (!empty($posted_manual_pdf)) $info['manual_pdf'] = $info['manual_pdf'] ?? $posted_manual_pdf;
        if (!empty($posted_banner)) $info['banner_img'] = $info['banner_img'] ?? $posted_banner;
        // 立即回显：使用POST提交的值，确保用户修改的内容能正确显示
        $info['homepage_intro_title'] = $homepage_intro_title;
        $info['homepage_intro_content'] = $homepage_intro_content;
        $info['site_name_en'] = $site_name_en;
        $info['welcome_text_en'] = $welcome_text_en;
        $info['homepage_intro_title_en'] = $homepage_intro_title_en;
        $info['homepage_intro_content_en'] = $homepage_intro_content_en;
        $info['contact_info_en'] = $contact_info_en;
    }
}
// 选项
$show_options = [
    'partner' => '合伙人',
    'referrer' => '上级推荐人',
    'team_leader' => '所属团队长',
    'none' => '不显示'
];

// 页面内容输出
ob_start();
?>
<style>
.partner-settings-title {
    background: linear-gradient(90deg, #1e3c72 0%, #2a5298 100%);
    color: #fff;
    border-radius: 16px;
    padding: 28px 32px 18px 32px;
    margin-bottom: 32px;
    box-shadow: 0 4px 18px rgba(30,60,114,0.10);
    font-size: 1.7rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    display: flex;
    align-items: center;
    gap: 18px;
}
.partner-settings-form {
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 8px 32px rgba(30,60,114,0.13);
    padding: 28px 24px 24px 24px;
    max-width: 100%;
    margin: 0 auto;
}
.partner-settings-form .mb-3 {
    margin-bottom: 28px !important;
}
.partner-settings-form label.form-label {
    font-weight: 600;
    color: #1e3c72;
    font-size: 1.08em;
}
.partner-settings-form input.form-control,
.partner-settings-form select.form-select {
    border-radius: 10px;
    font-size: 1.08em;
    padding: 12px 16px;
}
.partner-settings-form input[type="file"] {
    padding: 6px 0;
}
.partner-settings-form .form-text {
    color: #7fa1e3 !important;
}
.partner-settings-form button.btn-primary {
    background: linear-gradient(90deg, #1e3c72 0%, #2a5298 100%);
    border: none;
    border-radius: 10px;
    font-weight: 700;
    font-size: 1.1em;
    padding: 12px 32px;
    box-shadow: 0 2px 8px rgba(30,60,114,0.08);
    transition: background 0.2s, box-shadow 0.2s, transform 0.15s;
}
.partner-settings-form button.btn-primary:hover {
    background: linear-gradient(90deg, #2a5298 0%, #1e3c72 100%);
    transform: translateY(-2px) scale(1.03);
    box-shadow: 0 8px 24px rgba(30,60,114,0.18);
}
.partner-logo-preview {
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 16px;
}
.partner-logo-preview img {
    max-height: 60px;
    max-width: 200px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(30,60,114,0.10);
    background: #f8f9fa;
    padding: 4px;
}
@media (max-width: 768px) {
    .partner-settings-title { font-size: 1.2rem; padding: 18px 12px 12px 12px; }
    .partner-settings-form { padding: 16px 12px; border-radius: 14px; }
}
</style>
<div class="partner-settings-title">
    <i class="fas fa-cogs"></i> <?= __t('partner_settings_title', '合伙人网站设置（以下全部可改，包括LOGO，网站名字等）'); ?> <a href="/user/index.php" class="btn btn-outline-light btn-sm ml-2"><i class="fas fa-home me-1"></i> <?= __t('common_back_home', '返回会员首页'); ?></a>
</div>

<!-- 用户基本信息卡片 -->
<div class="card mb-4" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none;">
    <div class="card-body">
        <div class="row align-items-center">
            <div class="col-md-8">
                <h5 class="mb-2"><i class="fas fa-user-circle me-2"></i>用户信息</h5>
                <p class="mb-1"><strong>用户ID:</strong> <?php echo htmlspecialchars($user_info['id']); ?> | <strong>用户名:</strong> <?php echo htmlspecialchars($user_info['username']); ?> | <strong>昵称:</strong> <?php echo htmlspecialchars($user_info['nickname'] ?: '未设置'); ?></p>
                <p class="mb-1"><strong>身份:</strong> <?php echo htmlspecialchars($role_name); ?> | <strong>总充值:</strong> <?php echo number_format($total_deposit, 2); ?> USDT</p>
            </div>
            <div class="col-md-4 text-end">
                <?php if (!$is_qualified): ?>
                    <div class="alert alert-warning mb-0" style="background: #ff6b35; border: none; color: white;">
                        <strong><i class="fas fa-exclamation-triangle me-1"></i>您还没有激活您的管理员号，充值满 <?php echo $min_deposit_for_commission; ?> USDT 即可激活所有管理员功能。</strong>
                    </div>
                <?php else: ?>
                    <div class="alert alert-success mb-0" style="background: #28a745; border: none; color: white;">
                        <strong><i class="fas fa-check-circle me-1"></i>管理员功能已激活</strong>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    </div>
    <div class="mb-3">
        <label class="form-label">在线客服开关（按本域名生效）</label>
        <div class="row g-2">
            <div class="col-md-7">
                <label class="form-label small text-muted">未登录首页在线客服</label>
                <?php $gm = intval($info['support_guest_mode'] ?? 1); ?>
                <select name="support_guest_mode" class="form-control">
                    <option value="1" <?= $gm===1?'selected':'' ?>>仅对有推荐码的新用户开放并显示（默认）</option>
                    <option value="2" <?= $gm===2?'selected':'' ?>>不管是否有推荐码都开放并显示</option>
                    <option value="0" <?= $gm===0?'selected':'' ?>>全部不显示</option>
                </select>
            </div>
            <div class="col-md-5">
                <label class="form-label small text-muted">会员登录后在线客服</label>
                <?php $me = intval($info['support_member_enabled'] ?? 1); ?>
                <select name="support_member_enabled" class="form-control">
                    <option value="1" <?= $me===1?'selected':'' ?>>开通（默认）</option>
                    <option value="0" <?= $me===0?'selected':'' ?>>不开通</option>
                </select>
            </div>
        </div>
        <div class="form-text">系统将基于“当前域名所属合伙人 + 邀请码归属”决定是否显示客服入口与功能。</div>
    </div>
</div>

<?php if ($err): ?><div class="alert alert-danger"><?php echo $err; ?></div><?php endif; ?>
<?php if ($succ): ?><div class="alert alert-success"><?php echo $succ; ?></div><?php endif; ?>
<form method="post" enctype="multipart/form-data" class="partner-settings-form">
    <div class="mb-3">
        <label class="form-label">网站名称（以下所有的中文汉字类均可改）</label>
        <input type="text" name="site_name" class="form-control" value="<?php echo htmlspecialchars($info['site_name'] ?? ''); ?>" maxlength="100" required>
        <div class="form-text">网站名称不能为空，建议使用有意义的名称</div>
    </div>
    <div class="mb-3">
        <label class="form-label">网站名称（英文版，可选）</label>
        <div class="input-group">
            <input type="text" name="site_name_en" id="site_name_en" class="form-control" value="<?php echo htmlspecialchars($info['site_name_en'] ?? ''); ?>" maxlength="100">
            <button type="button" class="btn btn-outline-secondary" onclick="translateField('site_name', 'site_name_en')" title="自动翻译为英文">
                <i class="fas fa-language"></i> 翻译
            </button>
        </div>
        <div class="form-text">用于英文界面展示的网站名称，留空则自动使用上面的中文名称。点击"翻译"按钮可自动翻译。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">网站欢迎词</label>
        <input type="text" name="welcome_text" class="form-control" value="<?php echo htmlspecialchars($info['welcome_text'] ?? ''); ?>" maxlength="255">
        <div class="form-text">如：欢迎光临创世纪智能AI量化平台</div>
    </div>
    <div class="mb-3">
        <label class="form-label">网站欢迎词（英文版，可选）</label>
        <div class="input-group">
            <input type="text" name="welcome_text_en" id="welcome_text_en" class="form-control" value="<?php echo htmlspecialchars($info['welcome_text_en'] ?? ''); ?>" maxlength="255">
            <button type="button" class="btn btn-outline-secondary" onclick="translateField('welcome_text', 'welcome_text_en')" title="自动翻译为英文">
                <i class="fas fa-language"></i> 翻译
            </button>
        </div>
        <div class="form-text">用于英文界面的欢迎语，留空则自动使用上面的中文欢迎词。点击"翻译"按钮可自动翻译。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">首页中间介绍标题</label>
        <input type="text" name="homepage_intro_title" class="form-control" value="<?php echo htmlspecialchars($displayIntroTitle); ?>" maxlength="255">
        <div class="form-text">显示在首页“平台优势”模块的标题，如“平台优势”。若留空，将显示系统默认标题。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">首页中间介绍标题（英文版，可选）</label>
        <div class="input-group">
            <input type="text" name="homepage_intro_title_en" id="homepage_intro_title_en" class="form-control" value="<?php echo htmlspecialchars($info['homepage_intro_title_en'] ?? ''); ?>" maxlength="255">
            <button type="button" class="btn btn-outline-secondary" onclick="translateField('homepage_intro_title', 'homepage_intro_title_en')" title="自动翻译为英文">
                <i class="fas fa-language"></i> 翻译
            </button>
        </div>
        <div class="form-text">用于英文界面的首页中部标题，留空则自动使用上面的中文标题。点击"翻译"按钮可自动翻译。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">首页中间介绍内容（每行一条）</label>
        <textarea name="homepage_intro_content" class="form-control" rows="8" style="min-height:120px;"><?php echo htmlspecialchars($displayIntroContent); ?></textarea>
        <div class="form-text">支持分行显示，每行一条，字多了自动换行。若留空，将显示系统默认内容。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">首页中间介绍内容（英文版，可选，每行一条）</label>
        <div style="display: flex; gap: 5px;">
            <textarea name="homepage_intro_content_en" id="homepage_intro_content_en" class="form-control" rows="8" style="min-height:120px; flex: 1;"><?php echo htmlspecialchars($info['homepage_intro_content_en'] ?? ''); ?></textarea>
            <button type="button" class="btn btn-outline-secondary" onclick="translateField('homepage_intro_content', 'homepage_intro_content_en')" title="自动翻译为英文" style="align-self: flex-start;">
                <i class="fas fa-language"></i> 翻译
            </button>
        </div>
        <div class="form-text">用于英文界面的首页中部介绍，留空则自动使用上面的中文内容。点击"翻译"按钮可自动翻译。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">首页风格（有效API数：<?= $api_count ?>个，解锁风格：<?= max(30, $api_count) ?>种）--有效帐号越多，可选设风格越多</label>
        <select name="homepage_style" class="form-control">
            <?php
            // 定义所有50种风格
            $all_styles = [
                'default' => '🔵 默认科技感 - 蓝色科技',
                'business' => '💼 商务专业 - 深蓝商务',
                'finance' => '💰 金融金色 - 金色金融',
                'modern' => '🔴 现代简约 - 红色现代',
                'dark' => '🌑 深色主题 - 黑色深色',
                'ocean' => '🌊 海洋蓝 - 蓝色海洋',
                'forest' => '🌲 森林绿 - 绿色森林',
                'sunset' => '🌅 日落橙 - 橙色日落',
                'sakura' => '🌸 樱花粉 - 粉色樱花',
                'aurora' => '🌌 极光紫 - 紫色极光',
                'violet' => '💜 紫罗兰 - 紫色罗兰',
                'steel' => '🔩 钢铁灰 - 灰色钢铁',
                'flame' => '🔥 火焰红 - 红色火焰',
                'mint' => '🌿 薄荷绿 - 绿色薄荷',
                'amber' => '🟡 琥珀黄 - 黄色琥珀',
                'indigo' => '🔵 靛青蓝 - 蓝色靛青',
                'coral' => '🪸 珊瑚橙 - 橙色珊瑚',
                'emerald' => '💚 翡翠绿 - 绿色翡翠',
                'rosegold' => '🌹 玫瑰金 - 金色玫瑰',
                'starry' => '⭐ 星空银 - 银色星空',
                'cyber' => '🤖 赛博朋克 - 霓虹科技',
                'neon' => '💡 霓虹灯 - 彩色霓虹',
                'matrix' => '🔢 矩阵绿 - 绿色矩阵',
                'galaxy' => '🌌 银河系 - 深蓝银河',
                'cosmic' => '🚀 宇宙紫 - 紫色宇宙',
                'crystal' => '💎 水晶蓝 - 蓝色水晶',
                'golden' => '🏆 黄金色 - 金色辉煌',
                'silver' => '🥈 银色系 - 银色优雅',
                'copper' => '🥉 铜色系 - 铜色温暖',
                'bronze' => '🏺 青铜色 - 青铜古典',
                'platinum' => '💍 铂金色 - 铂金高贵',
                'titanium' => '⚙️ 钛银色 - 钛银现代',
                'chrome' => '🔧 铬银色 - 铬银亮丽',
                'pearl' => '🦪 珍珠白 - 白色珍珠',
                'ivory' => '🦷 象牙白 - 象牙温润',
                'cream' => '🧁 奶油色 - 奶油柔和',
                'beige' => '🥛 米色系 - 米色自然',
                'tan' => '🏖️ 棕褐色 - 棕褐阳光',
                'coffee' => '☕ 咖啡色 - 咖啡浓郁',
                'chocolate' => '🍫 巧克力 - 巧克力香甜',
                'caramel' => '🍯 焦糖色 - 焦糖甜蜜',
                'honey' => '🍯 蜂蜜色 - 蜂蜜金黄',
                'lemon' => '🍋 柠檬黄 - 柠檬清新',
                'lime' => '🍈 青柠绿 - 青柠活力',
                'mango' => '🥭 芒果橙 - 芒果热情',
                'peach' => '🍑 桃子粉 - 桃子甜美',
                'cherry' => '🍒 樱桃红 - 樱桃鲜艳',
                'grape' => '🍇 葡萄紫 - 葡萄神秘',
                'berry' => '🫐 浆果蓝 - 浆果深邃',
                'lavender' => '🪻 薰衣草 - 薰衣草淡雅',
                'lilac' => '🪻 丁香紫 - 丁香清香',
                'jasmine' => '🌼 茉莉白 - 茉莉纯洁',
                'rose' => '🌹 玫瑰红 - 玫瑰浪漫',
                'tulip' => '🌷 郁金香 - 郁金香优雅',
                'sunflower' => '🌻 向日葵 - 向日葵阳光',
                'daisy' => '🌼 雏菊白 - 雏菊纯真',
                'orchid' => '🪷 兰花紫 - 兰花高贵'
            ];
            
            // 计算可选风格数量（最少30种，每增加1个API多1种）
            $available_styles_count = max(30, $api_count);
            $available_styles = array_slice($all_styles, 0, $available_styles_count, true);
            
            // 生成选项
            foreach ($available_styles as $style_key => $style_name) {
                $selected = ($info['homepage_style'] ?? 'default') === $style_key ? 'selected' : '';
                echo "<option value=\"$style_key\" $selected>$style_name</option>";
            }
            ?>
        </select>
        <div class="form-text">选择首页的视觉风格主题。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">允许用户选择风格</label>
        <div class="form-check">
            <input class="form-check-input" type="radio" name="allow_user_style_choice" value="1" id="allow_style_yes" <?= ($info['allow_user_style_choice'] ?? 1) == 1 ? 'checked' : '' ?>>
            <label class="form-check-label" for="allow_style_yes">
                是 - 允许用户自主选择风格
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input" type="radio" name="allow_user_style_choice" value="0" id="allow_style_no" <?= ($info['allow_user_style_choice'] ?? 1) == 0 ? 'checked' : '' ?>>
            <label class="form-check-label" for="allow_style_no">
                否 - 仅使用管理员设置的默认风格
            </label>
        </div>
        <div class="form-text">选择"是"时，用户可以在首页选择自己喜欢的风格；选择"否"时，用户只能看到管理员设置的默认风格。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">允许的策略（<span style="color: red; font-weight: bold;">总业绩充值大于2万U以上可增加自定义策略名称 网站首页-API添加修改页均同步</span>）</label>
        <div class="form-check">
            <input class="form-check-input" type="checkbox" id="selectAllStrategies" onchange="toggleAllStrategies()">
            <label class="form-check-label" for="selectAllStrategies">
                <strong>全选/全不选</strong>
            </label>
        </div>
        <div class="row mt-2" id="strategyList">
            <?php
            // 获取所有策略
            $stmt = $pdo->query("SELECT id, name, type FROM strategies ORDER BY type, name");
            $strategies = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $allowed_strategies_raw = isset($info['allowed_strategies']) ? (string)$info['allowed_strategies'] : null;
            
            $current_type = '';
            foreach ($strategies as $strategy) {
                if ($strategy['type'] !== $current_type) {
                    if ($current_type !== '') echo '</div>';
                    echo '<div class="col-md-6 mb-2"><h6>' . ($strategy['type'] === 'spot' ? '现货策略（将推出）' : '合约策略') . '</h6>';
                    $current_type = $strategy['type'];
                }
                $checked = partner_strategy_checkbox_checked_with_default_crude($pdo, $allowed_strategies_raw, $strategy['id']) ? 'checked' : '';
                echo '<div class="form-check form-check-inline">';
                echo '<input class="form-check-input strategy-checkbox" type="checkbox" name="allowed_strategies[]" value="' . $strategy['id'] . '" id="strategy_' . $strategy['id'] . '" ' . $checked . '>';
                echo '<label class="form-check-label" for="strategy_' . $strategy['id'] . '">' . htmlspecialchars($strategy['name']) . '</label>';
                echo '</div>';
            }
            if ($current_type !== '') echo '</div>';
            ?>
        </div>
        <div class="form-text">选择允许显示的策略，不选择表示显示全部策略。用户添加/修改API时只能选择这些策略。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">LOGO图片（建议：宽420*高60px）可以用豆包AI免费生成你要的LOGO图片再来上传</label><br>
        <div class="partner-logo-preview">
        <?php if (!empty($info['logo_url'])):
            // 预览兜底：走 PHP 输出，避免 Windows/IIS 下 /uploads 静态目录映射问题导致裂图
            $logo_path = '/' . ltrim($info['logo_url'], '/');
            $logo_preview_src = '/user/serve_upload.php?path=' . urlencode($logo_path) . '&v=' . time();
        ?>
            <img src="<?php echo htmlspecialchars($logo_preview_src); ?>" 
                 alt="LOGO" 
                 style="max-height: 60px; max-width: 200px; border-radius: 8px; box-shadow: 0 2px 8px rgba(30,60,114,0.10); background: #f8f9fa; padding: 4px; display: block;">
        <?php endif; ?>
        </div>
        <div class="input-group">
            <input type="file" id="logo_file" accept="image/*" class="form-control">
            <div class="input-group-append">
                <button type="button" class="btn btn-outline-primary" id="upload_logo_btn" <?php echo !$is_qualified ? 'disabled' : ''; ?>>
                    <i class="fas fa-upload"></i> <?php echo $is_qualified ? '上传LOGO' : '上传LOGO（需激活）'; ?>
                </button>
            </div>
        </div>
        <div class="form-text">仅支持JPG、PNG、GIF、BMP，最大3MB。选择文件后点击"上传LOGO"按钮，或直接点击"保存设置"按钮。</div>
        <div class="form-text" style="color:#666;">
            <span>当前选择：</span>
            <span id="logo_selected_name" style="font-weight:700;">
                <?php echo !empty($info['logo_url']) ? htmlspecialchars(basename((string)$info['logo_url'])) : '未选择'; ?>
            </span>
            <span style="margin-left:10px;">（出于浏览器安全限制，无法显示本地完整路径，只显示文件名）</span>
        </div>
        <div class="form-text" id="logo_upload_status" style="color:#1e3c72;font-weight:600;"></div>
        <!-- 隐藏的input用于表单提交 -->
        <input type="file" name="logo_file" id="logo_file_hidden" style="display:none;">
    </div>
    <div class="mb-3">
        <label class="form-label">LOGO图片地址</label>
        <input type="text" name="logo_url" id="logo_url_display" class="form-control" value="<?php echo htmlspecialchars($info['logo_url'] ?? ''); ?>" readonly>
    </div>
    <div class="mb-3">
        <label class="form-label">首页广告图片（没更好可不改）</label><br>
        <div class="partner-logo-preview">
            <?php
            // 新方案：使用本地URL
            $banner_path = !empty($info['banner_img']) ? $info['banner_img'] : '/uploads/partner_logo/index.gif';
            // 确保路径格式正确（绝对路径，以/开头）
            $banner_path = '/' . ltrim($banner_path, '/');
            // 使用绝对路径，不拼接域名
            ?>
            <img id="banner_preview_img" src="<?php echo htmlspecialchars($banner_path); ?>" alt="广告图片" style="max-width:100%;height:auto;">
        </div>
        <div class="input-group">
            <input type="text" name="banner_img" id="banner_img" class="form-control" value="<?php echo htmlspecialchars(!empty($info['banner_img']) ? $info['banner_img'] : '/uploads/partner_logo/index.gif'); ?>" readonly>
            <div class="input-group-append">
                <label class="btn btn-outline-secondary mb-0">
                    上传
                    <input type="file" id="banner_file" style="display:none;" accept="image/jpeg,image/png,image/gif">
                </label>
                <button type="button" class="btn btn-outline-info mb-0" id="restore_default_banner_btn" title="恢复默认广告图片">
                    <i class="fas fa-undo"></i> 恢复默认
                </button>
            </div>
        </div>
        <div class="form-text">仅支持JPG、PNG、GIF，最大2MB，建议宽度1200px以上</div>
    </div>
    <script>
    // 注入统一图片地址到JavaScript，供前端使用
    <?php
    $canonicalImageBase = get_system_setting('canonical_image_base_url');
    if (empty($canonicalImageBase)) {
        $canonicalImageBase = 'https://w188.ggai365.com';
    }
    ?>
    window.CANONICAL_IMAGE_BASE_URL = <?php echo json_encode(rtrim($canonicalImageBase, '/'), JSON_UNESCAPED_UNICODE); ?>;
    
    document.addEventListener('DOMContentLoaded', function() {

        function partnerSiteApplyInterfereNag(data) {
            if (data && data.interfere_nag && window.GGAI_INTERFERE_NAG
                && typeof window.GGAI_INTERFERE_NAG.applyFromServer === 'function') {
                window.GGAI_INTERFERE_NAG.applyFromServer(data.interfere_nag);
            }
        }

        // LOGO上传功能
        var logoFileInput = document.getElementById('logo_file');
        var uploadLogoBtn = document.getElementById('upload_logo_btn');
        var logoHiddenInput = document.getElementById('logo_file_hidden');
        var logoUrlDisplay = document.getElementById('logo_url_display');
        var logoUploadStatus = document.getElementById('logo_upload_status');
        var logoSelectedName = document.getElementById('logo_selected_name');
        var saveBtn = document.getElementById('save_settings_btn');
        window.__logoUploading = false;
        // 查找LOGO预览容器（第一个.partner-logo-preview）
        var logoPreviewContainer = document.querySelectorAll('.partner-logo-preview')[0];
        var logoPreview = logoPreviewContainer ? logoPreviewContainer.querySelector('img') : null;
        
        if (uploadLogoBtn && logoFileInput) {
            console.log('LOGO上传功能已初始化');
            
            // 先监听文件选择，当文件选择后自动触发上传
            logoFileInput.addEventListener('change', function() {
                var file = this.files[0];
                if (file) {
                    console.log('文件已选择:', file.name, '大小:', file.size, '类型:', file.type);
                    if (logoSelectedName) {
                        logoSelectedName.textContent = file.name;
                    }
                    // 自动触发上传（只有在按钮可用时才触发）
                    if (uploadLogoBtn && !uploadLogoBtn.disabled) {
                        console.log('自动触发上传');
                        uploadLogoBtn.click();
                    } else {
                        console.warn('上传按钮被禁用，无法自动上传');
                        // 如果按钮被禁用，提示用户
                        if (uploadLogoBtn && uploadLogoBtn.disabled) {
                            alert('上传功能暂时不可用，请检查账户状态。文件已选择但未上传。');
                        }
                    }
                } else {
                    console.log('文件选择被取消或清空');
                    if (logoSelectedName) {
                        logoSelectedName.textContent = '未选择';
                    }
                }
            });
            
            uploadLogoBtn.addEventListener('click', function(e) {
                e.preventDefault();
                e.stopPropagation();
                
                console.log('上传LOGO按钮被点击，按钮状态:', {
                    disabled: uploadLogoBtn.disabled,
                    hasFile: !!logoFileInput.files[0]
                });
                
                // 检查按钮是否被禁用
                if (uploadLogoBtn.disabled) {
                    console.warn('按钮被禁用，无法上传');
                    alert('上传功能暂时不可用，请检查账户状态');
                    return false;
                }
                
                var file = logoFileInput.files[0];
                if (!file) {
                    console.log('未选择文件，打开文件选择对话框');
                    alert('请先选择LOGO图片文件');
                    logoFileInput.click(); // 自动打开文件选择对话框
                    return false;
                }
                
                console.log('开始上传文件:', file.name, '大小:', file.size, '类型:', file.type);
                
                // 验证文件类型（Windows/部分浏览器 file.type 可能为空，需用扩展名兜底）
                var allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/bmp'];
                var allowedExts = ['jpg', 'jpeg', 'png', 'gif', 'bmp'];
                var fileName = (file.name || '').toLowerCase();
                var ext = '';
                if (fileName.indexOf('.') !== -1) {
                    ext = fileName.split('.').pop();
                }
                var typeOk = !!file.type && allowedTypes.indexOf(file.type) !== -1;
                var extOk = !!ext && allowedExts.indexOf(ext) !== -1;
                if (!typeOk && !extOk) {
                    alert('仅支持JPG、PNG、GIF、BMP格式（当前：type=' + (file.type || '空') + '，ext=' + (ext || '无') + '）');
                    // 清空选择，避免错误文件反复触发
                    logoFileInput.value = '';
                    return false;
                }
                
                // 验证文件大小
                if (file.size > 3 * 1024 * 1024) {
                    alert('图片大小不能超过3MB');
                    logoFileInput.value = ''; // 清空选择
                    return false;
                }
                
                // 显示上传状态
                if (uploadLogoBtn) {
                    var originalBtnText = uploadLogoBtn.innerHTML;
                    uploadLogoBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 上传中...';
                    uploadLogoBtn.disabled = true;
                }
                window.__logoUploading = true;
                if (saveBtn) saveBtn.disabled = true;
                if (logoUploadStatus) {
                    logoUploadStatus.style.color = '#1e3c72';
                    logoUploadStatus.textContent = '上传中…';
                }
                
                // 创建FormData
                var formData = new FormData();
                formData.append('logo_file', file);
                
                // 发送上传请求（添加AJAX标识）
                fetch('', {
                    method: 'POST',
                    headers: {
                        'X-Requested-With': 'XMLHttpRequest'
                    },
                    body: formData
                }).then(function(response) {
                    // 检查HTTP响应状态
                    if (!response.ok) {
                        // HTTP错误状态码（如404, 500等）
                        var errorMsg = '服务器错误：HTTP ' + response.status;
                        if (response.statusText) {
                            errorMsg += ' ' + response.statusText;
                        }
                        return Promise.reject(new Error(errorMsg));
                    }
                    
                    // 先尝试解析为JSON（如果是JSON响应）
                    var contentType = response.headers.get('content-type') || '';
                    if (contentType.includes('application/json')) {
                        return response.json().then(function(data) {
                            return { type: 'json', data: data, ok: true };
                        }).catch(function(err) {
                            // JSON解析失败，尝试作为文本处理
                            console.warn('JSON解析失败，尝试作为HTML处理:', err);
                            return response.text().then(function(html) {
                                return { type: 'html', data: html, ok: true };
                            });
                        });
                    } else {
                        // 否则作为HTML处理
                        return response.text().then(function(html) {
                            return { type: 'html', data: html, ok: true };
                        });
                    }
                }).then(function(result) {
                    var html = result.type === 'html' ? result.data : '';
                    var jsonData = result.type === 'json' ? result.data : null;
                    
                    // 检查是否上传成功
                    if (jsonData && jsonData.success) {
                        // JSON响应：直接更新预览图片，不刷新页面
                        // 新方案：使用本地URL（图片已保存在本地，可以立即显示）
                        // 使用绝对路径（不带域名）
                        var logoLocalUrl = jsonData.logo_local_url || jsonData.logo_url || '';
                        if (logoLocalUrl) {
                            // 如果是完整URL，提取路径部分
                            if (logoLocalUrl.startsWith('http://') || logoLocalUrl.startsWith('https://')) {
                                try {
                                    var urlObj = new URL(logoLocalUrl);
                                    logoLocalUrl = urlObj.pathname;
                                } catch(e) {
                                    var match = logoLocalUrl.match(/https?:\/\/[^\/]+(\/.*)/);
                                    if (match) logoLocalUrl = match[1];
                                }
                            }
                            // 确保是绝对路径
                            if (!logoLocalUrl.startsWith('/')) {
                                logoLocalUrl = '/' + logoLocalUrl;
                            }
                        }
                        
                        // 获取预览容器（第一个.partner-logo-preview是LOGO的）
                        var previewDiv = document.querySelectorAll('.partner-logo-preview')[0];
                        if (!previewDiv) {
                            console.error('未找到LOGO预览容器');
                            return;
                        }
                        
                        // 直接使用预览兜底URL更新预览（避免 /uploads 静态映射问题）
                        var existingImg = previewDiv.querySelector('img');
                        var previewUrl = '/user/serve_upload.php?path=' + encodeURIComponent(logoLocalUrl) + '&v=' + Date.now();
                        if (existingImg) {
                            // 如果已有预览图片，直接更新URL
                            existingImg.src = previewUrl;
                            existingImg.style.display = 'block';
                            existingImg.onerror = function() {
                                // 如果本地URL加载失败，使用FileReader创建预览
                                var imgEl = existingImg;
                                var reader = new FileReader();
                                reader.onload = function(e) {
                                    imgEl.src = e.target.result;
                                };
                                reader.readAsDataURL(file);
                            };
                            // 更新logoPreview变量
                            logoPreview = existingImg;
                        } else {
                            // 如果没有预览图片，创建一个新的
                            var img = document.createElement('img');
                            img.src = previewUrl;
                            img.alt = 'LOGO';
                            img.style.cssText = 'max-height: 60px; max-width: 200px; border-radius: 8px; box-shadow: 0 2px 8px rgba(30,60,114,0.10); background: #f8f9fa; padding: 4px; display: block;';
                            previewDiv.innerHTML = '';
                            previewDiv.appendChild(img);
                            // 更新logoPreview变量
                            logoPreview = img;
                            img.onerror = function() {
                                // 如果本地URL加载失败，使用FileReader创建预览
                                var imgEl = img;
                                var reader = new FileReader();
                                reader.onload = function(e) {
                                    imgEl.src = e.target.result;
                                };
                                reader.readAsDataURL(file);
                            };
                        }
                        
                        // 更新logo_url显示框
                        if (logoUrlDisplay) {
                            logoUrlDisplay.value = jsonData.logo_url || '';
                        }
                        
                        // 上传成功，清空文件选择框（允许用户再次选择相同文件）
                        if (logoFileInput) {
                            logoFileInput.value = '';
                            console.log('上传成功，清空文件选择框');
                        }
                        if (logoSelectedName && jsonData.saved_name) {
                            // 这里展示“服务器已保存”的文件名
                            logoSelectedName.textContent = '已保存：' + jsonData.saved_name;
                        }
                        if (logoUploadStatus) {
                            logoUploadStatus.style.color = '#28a745';
                            var extra = '';
                            if (jsonData.saved_name) extra += ' 文件：' + jsonData.saved_name;
                            if (jsonData.saved_exists !== undefined) extra += ' 本地保存：' + (jsonData.saved_exists ? '是' : '否');
                            if (jsonData.saved_size) extra += ' 大小：' + jsonData.saved_size + 'B';
                            logoUploadStatus.textContent = '上传成功。' + extra;
                        }
                        // 不显示alert弹窗，图片已自动更新显示
                    } else if (html && (html.includes('保存成功') || html.includes('alert-success'))) {
                        // HTML响应：直接刷新页面显示新图片
                        location.reload();
                    } else {
                        // 上传失败才显示alert，但不清空文件选择框，让用户可以重试
                        partnerSiteApplyInterfereNag(jsonData);
                        var errorMsg = 'LOGO上传失败';
                        if (jsonData) {
                            if (jsonData.message) {
                                errorMsg += '：' + jsonData.message;
                            } else if (jsonData.error) {
                                errorMsg += '：' + jsonData.error;
                            }
                        } else if (html) {
                            // 尝试从HTML中提取错误信息
                            var errorMatch = html.match(/<div[^>]*class="[^"]*alert[^"]*danger[^"]*"[^>]*>([^<]+)<\/div>/i);
                            if (errorMatch) {
                                errorMsg += '：' + errorMatch[1].trim();
                            } else if (html.includes('alert-danger')) {
                                // 尝试提取更详细的错误信息
                                var errorDiv = html.match(/<div[^>]*alert[^"]*danger[^"]*"[^>]*>([\s\S]*?)<\/div>/i);
                                if (errorDiv) {
                                    errorMsg += '：' + errorDiv[1].replace(/<[^>]+>/g, '').trim();
                                }
                            }
                        }
                        alert(errorMsg + '。文件已保留，可以重试上传。');
                        // 不清空文件选择框，保留文件以便重试
                        console.log('上传失败，保留文件选择以便重试。错误信息:', errorMsg);
                        if (logoUploadStatus) {
                            logoUploadStatus.style.color = '#dc3545';
                            logoUploadStatus.textContent = errorMsg;
                        }
                    }
                }).catch(function(error) {
                    console.error('LOGO上传错误:', error);
                    alert('上传过程中发生错误：' + (error.message || '未知错误') + '。文件已保留，可以重试。');
                    // 不清空文件选择框，保留文件以便重试
                    if (logoUploadStatus) {
                        logoUploadStatus.style.color = '#dc3545';
                        logoUploadStatus.textContent = '上传异常：' + (error.message || '未知错误');
                    }
                }).finally(function() {
                    // 恢复按钮状态
                    if (uploadLogoBtn) {
                        var isQualified = <?php echo $is_qualified ? 'true' : 'false'; ?>;
                        uploadLogoBtn.innerHTML = '<i class="fas fa-upload"></i> ' + (isQualified ? '上传LOGO' : '上传LOGO（需激活）');
                        uploadLogoBtn.disabled = false;
                    }
                    window.__logoUploading = false;
                    if (saveBtn) {
                        // 仅在账号允许时恢复
                        var isQualified = <?php echo $is_qualified ? 'true' : 'false'; ?>;
                        saveBtn.disabled = !isQualified;
                    }
                    // 检查文件是否还在（如果被清空，可能是验证失败导致的，这是正常的）
                    if (logoFileInput && !logoFileInput.files[0]) {
                        console.log('文件选择框已被清空（可能是验证失败）');
                    } else if (logoFileInput && logoFileInput.files[0]) {
                        console.log('文件选择框仍有文件:', logoFileInput.files[0].name);
                    }
                });
            });

            // 防止“上传中点保存”导致 logo_url 被旧值覆盖
            var form = uploadLogoBtn.closest('form');
            if (form) {
                form.addEventListener('submit', function(ev) {
                    if (window.__logoUploading) {
                        ev.preventDefault();
                        alert('LOGO正在上传中，请等待上传完成后再点击保存设置。');
                        return false;
                    }
                });
            }
        } else {
            console.warn('LOGO上传按钮或文件输入框未找到:', {
                uploadLogoBtn: !!uploadLogoBtn,
                logoFileInput: !!logoFileInput
            });
        }
        
        // 广告图片上传功能
        // 广告图片上传功能
        var bannerInput = document.getElementById('banner_file');
        if(bannerInput){
            bannerInput.addEventListener('change', function(){
                var file = this.files[0];
                if (!file) return;
                
                // 验证文件类型
                if(['image/jpeg','image/png','image/gif'].indexOf(file.type)===-1) { 
                    alert('仅允许上传JPG、PNG、GIF格式'); 
                    this.value = ''; // 清空选择
                    return; 
                }
                
                // 验证文件大小
                if(file.size > 2*1024*1024) { 
                    alert('广告图片不能超过2MB'); 
                    this.value = ''; // 清空选择
                    return; 
                }
                
                // 显示上传状态
                var uploadBtn = this.closest('.input-group').querySelector('label.btn');
                var originalText = uploadBtn ? uploadBtn.textContent.trim() : '上传';
                if (uploadBtn) {
                    uploadBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 上传中...';
                    uploadBtn.style.pointerEvents = 'none';
                }
                
                // 创建FormData，使用正确的字段名
                var formData = new FormData();
                formData.append('banner_file', file);
                
                // 发送上传请求到当前页面（添加AJAX标识）
                fetch('', {
                    method: 'POST',
                    headers: {
                        'X-Requested-With': 'XMLHttpRequest'
                    },
                    body: formData
                }).then(function(response) {
                    // 先尝试解析为JSON（如果是JSON响应）
                    var contentType = response.headers.get('content-type') || '';
                    if (contentType.includes('application/json')) {
                        return response.json().then(function(data) {
                            return { type: 'json', data: data };
                        });
                    } else {
                        // 否则作为HTML处理
                        return response.text().then(function(html) {
                            return { type: 'html', data: html };
                        });
                    }
                }).then(function(result) {
                    var html = result.type === 'html' ? result.data : '';
                    var jsonData = result.type === 'json' ? result.data : null;
                    
                    // 恢复按钮状态
                    if (uploadBtn) {
                        uploadBtn.innerHTML = originalText;
                        uploadBtn.style.pointerEvents = '';
                    }
                    
                    // 检查是否上传成功
                    if (jsonData && jsonData.success) {
                        // JSON响应：更新输入框和预览
                        var bannerImgInput = document.getElementById('banner_img');
                        // 获取广告图片预览容器（第二个.partner-logo-preview是广告图片的）
                        var bannerPreviewContainers = document.querySelectorAll('.partner-logo-preview');
                        var bannerPreviewContainer = bannerPreviewContainers.length > 1 ? bannerPreviewContainers[1] : null;
                        var bannerPreviewImg = bannerPreviewContainer ? bannerPreviewContainer.querySelector('#banner_preview_img') : document.getElementById('banner_preview_img');
                        
                        // 使用绝对路径（不带域名）
                        var bannerLocalUrl = jsonData.banner_local_url || jsonData.banner_url || jsonData.url || '';
                        if (bannerLocalUrl) {
                            // 如果是完整URL，提取路径部分
                            if (bannerLocalUrl.startsWith('http://') || bannerLocalUrl.startsWith('https://')) {
                                try {
                                    var urlObj = new URL(bannerLocalUrl);
                                    bannerLocalUrl = urlObj.pathname;
                                } catch(e) {
                                    var match = bannerLocalUrl.match(/https?:\/\/[^\/]+(\/.*)/);
                                    if (match) bannerLocalUrl = match[1];
                                }
                            }
                            // 确保是绝对路径
                            if (!bannerLocalUrl.startsWith('/')) {
                                bannerLocalUrl = '/' + bannerLocalUrl;
                            }
                        }
                        
                        if (bannerImgInput) {
                            bannerImgInput.value = jsonData.banner_url || jsonData.url || '';
                        }
                        if (bannerPreviewImg) {
                            bannerPreviewImg.src = bannerLocalUrl;
                            bannerPreviewImg.style.display = 'block';
                        } else if (bannerPreviewContainer) {
                            // 如果没有预览图片，创建一个
                            var img = document.createElement('img');
                            img.id = 'banner_preview_img';
                            img.src = bannerLocalUrl;
                            img.alt = '广告图片';
                            img.style.cssText = 'max-width:100%;height:auto;display:block;';
                            bannerPreviewContainer.innerHTML = '';
                            bannerPreviewContainer.appendChild(img);
                        }
                        // 不显示alert，上传成功
                    } else if (html && (html.includes('保存成功') || html.includes('alert-success'))) {
                        // HTML响应：刷新页面显示新图片
                        location.reload();
                    } else {
                        // 上传失败才显示alert
                        partnerSiteApplyInterfereNag(jsonData);
                        alert('广告图片上传失败，请重试');
                        this.value = ''; // 清空选择
                    }
                }).catch(function(error) {
                    // 恢复按钮状态
                    if (uploadBtn) {
                        uploadBtn.innerHTML = originalText;
                        uploadBtn.style.pointerEvents = '';
                    }
                    alert('上传过程中发生错误：' + error.message);
                    this.value = ''; // 清空选择
                });
            });
        }
        
        // 恢复默认广告图片功能
        var restoreDefaultBannerBtn = document.getElementById('restore_default_banner_btn');
        if (restoreDefaultBannerBtn) {
            restoreDefaultBannerBtn.addEventListener('click', function() {
                if (!confirm('确定要恢复默认广告图片吗？')) {
                    return;
                }
                
                var defaultBannerUrl = '/uploads/partner_logo/index.gif';
                // 确保路径以/开头
                var defaultBannerPath = defaultBannerUrl.startsWith('/') ? defaultBannerUrl : '/' + defaultBannerUrl;
                var defaultBannerLocalUrl = window.location.protocol + '://' + window.location.host + defaultBannerPath;
                
                // 更新输入框
                var bannerImgInput = document.getElementById('banner_img');
                if (bannerImgInput) {
                    bannerImgInput.value = defaultBannerUrl;
                }
                
                // 更新预览图片
                var bannerPreviewContainers = document.querySelectorAll('.partner-logo-preview');
                var bannerPreviewContainer = bannerPreviewContainers.length > 1 ? bannerPreviewContainers[1] : null;
                var bannerPreviewImg = bannerPreviewContainer ? bannerPreviewContainer.querySelector('#banner_preview_img') : document.getElementById('banner_preview_img');
                
                if (bannerPreviewImg) {
                    bannerPreviewImg.src = defaultBannerLocalUrl;
                    bannerPreviewImg.style.display = 'block';
                } else if (bannerPreviewContainer) {
                    // 如果没有预览图片，创建一个
                    var img = document.createElement('img');
                    img.id = 'banner_preview_img';
                    img.src = defaultBannerLocalUrl;
                    img.alt = '广告图片';
                    img.style.cssText = 'max-width:100%;height:auto;display:block;';
                    bannerPreviewContainer.innerHTML = '';
                    bannerPreviewContainer.appendChild(img);
                }
                
                // 提示用户需要保存设置
                alert('已恢复默认广告图片，请点击"保存设置"按钮保存更改。');
            });
        }
    });
    </script>
    <div class="mb-3">
        <label class="form-label">下载地址（不可更改）</label>
        <input type="text" name="download_url" class="form-control" value="<?php echo htmlspecialchars($info['download_url'] ?? ''); ?>" maxlength="255" readonly>
    </div>
    <div class="mb-3">
        <label class="form-label">联系方式</label>
        <input type="text" name="contact_info" class="form-control" value="<?php echo htmlspecialchars($info['contact_info'] ?? ''); ?>" maxlength="255">
    </div>
    <div class="mb-3">
        <label class="form-label">联系方式（英文版，可选）</label>
        <div class="input-group">
            <input type="text" name="contact_info_en" id="contact_info_en" class="form-control" value="<?php echo htmlspecialchars($info['contact_info_en'] ?? ''); ?>" maxlength="255">
            <button type="button" class="btn btn-outline-secondary" onclick="translateField('contact_info', 'contact_info_en')" title="自动翻译为英文">
                <i class="fas fa-language"></i> 翻译
            </button>
        </div>
        <div class="form-text">用于英文界面的联系方式，留空则自动使用上面的中文联系方式。点击"翻译"按钮可自动翻译。</div>
    </div>
    <div class="mb-3">
        <label class="form-label">首页联系方式显示</label>
        <select name="contact_show_index" class="form-select">
            <?php foreach ($show_options as $k=>$v): ?>
                <option value="<?php echo $k; ?>" <?php if (($info['contact_show_index'] ?? 'partner')==$k) echo 'selected'; ?>><?php echo $v; ?></option>
            <?php endforeach; ?>
        </select>
        <div class="form-text">决定网站首页下方联系方式显示来源</div>
    </div>
    <div class="mb-3">
        <label class="form-label">会员后台首页联系方式显示</label>
        <select name="contact_show_user" class="form-select">
            <?php foreach ($show_options as $k=>$v): ?>
                <option value="<?php echo $k; ?>" <?php if (($info['contact_show_user'] ?? 'partner')==$k) echo 'selected'; ?>><?php echo $v; ?></option>
            <?php endforeach; ?>
        </select>
        <div class="form-text">决定会员后台首页下方联系方式显示来源</div>
    </div>
    <div class="mb-3">
        <label class="form-label">普通返佣层级数</label>
        <select class="form-select" name="commission_levels" required>
            <?php for($i=1;$i<=7;$i++): ?>
                <option value="<?= $i ?>" <?= (isset($info['commission_levels']) ? $info['commission_levels'] : 7) == $i ? 'selected' : '' ?>><?= $i ?> 级</option>
            <?php endfor; ?>
        </select>
        <div class="form-text">设置普通返佣分配的层级数，范围1~7，未分配部分归合伙人</div>
        <div class="form-text" style="color:#d32f2f;font-weight:bold;"><b>请注意：要确保您的设置符合您客户群体所在地的法律法规！<br>如果设为2，就只有直推与间推，但不会影响团队长与合伙人<br>层级分配不足时，团队长会同时有多项会累加</b></div>
    </div>
    <div class="mb-3 row align-items-center">
        <label class="col-sm-3 col-form-label mb-0">使用说明（PDF）</label>
        <div class="col-sm-9 d-flex align-items-center" style="gap:10px;">
            <div class="input-group" style="flex:1;">
                <input type="text" class="form-control" name="manual_pdf" id="manual_pdf" value="<?php echo htmlspecialchars($info['manual_pdf'] ?? ''); ?>" readonly>
                <div class="input-group-append">
                    <label class="btn btn-outline-secondary mb-0">
                        上传
                        <input type="file" id="manual_pdf_upload" style="display:none;" accept="application/pdf">
                    </label>
                </div>
            </div>
            <?php if (!empty($info['manual_pdf'])): ?>
                <?php
                // 新方案：使用本地URL
                // 确保路径格式正确（相对路径，以/开头）
                $pdf_path = '/' . ltrim($info['manual_pdf'], '/');
                // 使用绝对路径，不拼接域名
                ?>
                <a href="<?php echo htmlspecialchars($pdf_path); ?>" target="_blank" class="btn btn-danger d-flex align-items-center" style="white-space:nowrap;font-weight:bold;">
                    <i class="fa fa-file-pdf-o" style="margin-right:6px;"></i> 查看PDF
                </a>
            <?php endif; ?>
        </div>
        <div class="col-sm-9 offset-sm-3"><div class="form-text">仅支持PDF文件，最大10MB</div></div>
    </div>
    <script>
    document.addEventListener('DOMContentLoaded', function() {
        var manualPdfUpload = document.getElementById('manual_pdf_upload');
        if (manualPdfUpload) {
            manualPdfUpload.addEventListener('change', function(){
                var file = this.files[0];
                if (!file) return;
                
                // 验证文件类型
                if(file.type !== 'application/pdf') { 
                    alert('仅允许上传PDF文件'); 
                    this.value = ''; // 清空选择
                    return; 
                }
                
                // 验证文件大小
                if(file.size > 10*1024*1024) { 
                    alert('PDF文件不能超过10MB'); 
                    this.value = ''; // 清空选择
                    return; 
                }
                
                // 显示上传状态
                var uploadBtn = this.closest('.input-group').querySelector('label.btn');
                var originalText = uploadBtn ? uploadBtn.textContent.trim() : '上传';
                if (uploadBtn) {
                    uploadBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 上传中...';
                    uploadBtn.style.pointerEvents = 'none';
                }
                
                // 创建FormData，使用正确的字段名
                var formData = new FormData();
                formData.append('manual_pdf', file);
                
                // 发送上传请求到当前页面（添加AJAX标识）
                fetch('', {
                    method: 'POST',
                    headers: {
                        'X-Requested-With': 'XMLHttpRequest'
                    },
                    body: formData
                }).then(function(response) {
                    // 先尝试解析为JSON（如果是JSON响应）
                    var contentType = response.headers.get('content-type') || '';
                    if (contentType.includes('application/json')) {
                        return response.json().then(function(data) {
                            return { type: 'json', data: data };
                        });
                    } else {
                        // 否则作为HTML处理
                        return response.text().then(function(html) {
                            return { type: 'html', data: html };
                        });
                    }
                }).then(function(result) {
                    var html = result.type === 'html' ? result.data : '';
                    var jsonData = result.type === 'json' ? result.data : null;
                    
                    // 恢复按钮状态
                    if (uploadBtn) {
                        uploadBtn.innerHTML = originalText;
                        uploadBtn.style.pointerEvents = '';
                    }
                    
                    // 检查是否上传成功
                    if (jsonData && jsonData.success) {
                        // JSON响应：更新输入框
                        var manualPdfInput = document.getElementById('manual_pdf');
                        if (manualPdfInput) {
                            manualPdfInput.value = jsonData.manual_pdf_url || jsonData.url || '';
                        }
                        // 更新或创建查看PDF按钮
                        var btnContainer = document.querySelector('.col-sm-9.d-flex');
                        if (btnContainer && jsonData.manual_pdf_url) {
                            // 查找是否已有查看PDF按钮（使用更精确的选择器）
                            var viewBtn = btnContainer.querySelector('a.btn-danger[target="_blank"]');
                            
                            // 使用绝对路径（不带域名）
                            var pdfLocalUrl = jsonData.manual_pdf_local_url || jsonData.manual_pdf_url || jsonData.url || '';
                            if (pdfLocalUrl) {
                                // 如果是完整URL，提取路径部分
                                if (pdfLocalUrl.startsWith('http://') || pdfLocalUrl.startsWith('https://')) {
                                    try {
                                        var urlObj = new URL(pdfLocalUrl);
                                        pdfLocalUrl = urlObj.pathname;
                                    } catch(e) {
                                        var match = pdfLocalUrl.match(/https?:\/\/[^\/]+(\/.*)/);
                                        if (match) pdfLocalUrl = match[1];
                                    }
                                }
                                // 确保是绝对路径
                                if (!pdfLocalUrl.startsWith('/')) {
                                    pdfLocalUrl = '/' + pdfLocalUrl;
                                }
                            }
                            
                            if (viewBtn) {
                                // 如果已有按钮，只更新链接
                                viewBtn.href = pdfLocalUrl;
                                viewBtn.style.display = '';
                            } else {
                                // 如果没有按钮，创建一个新的
                                var newBtn = document.createElement('a');
                                newBtn.href = pdfLocalUrl;
                                newBtn.target = '_blank';
                                newBtn.className = 'btn btn-danger d-flex align-items-center';
                                newBtn.style.cssText = 'white-space:nowrap;font-weight:bold;';
                                newBtn.innerHTML = '<i class="fa fa-file-pdf-o" style="margin-right:6px;"></i> 查看PDF';
                                btnContainer.appendChild(newBtn);
                            }
                        }
                        // 不显示alert，上传成功
                    } else if (html && (html.includes('保存成功') || html.includes('alert-success'))) {
                        // HTML响应：刷新页面显示新PDF
                        location.reload();
                    } else {
                        // 上传失败才显示alert
                        partnerSiteApplyInterfereNag(jsonData);
                        alert('PDF上传失败，请重试');
                        this.value = ''; // 清空选择
                    }
                }).catch(function(error) {
                    // 恢复按钮状态
                    if (uploadBtn) {
                        uploadBtn.innerHTML = originalText;
                        uploadBtn.style.pointerEvents = '';
                    }
                    alert('上传过程中发生错误：' + error.message);
                    this.value = ''; // 清空选择
                });
            });
        }
    });
    
    // 策略全选功能
    function toggleAllStrategies() {
        const selectAll = document.getElementById('selectAllStrategies');
        const checkboxes = document.querySelectorAll('.strategy-checkbox');
        
        checkboxes.forEach(checkbox => {
            checkbox.checked = selectAll.checked;
        });
    }
    
    // 页面加载时检查是否全选
    document.addEventListener('DOMContentLoaded', function() {
        const checkboxes = document.querySelectorAll('.strategy-checkbox');
        const selectAll = document.getElementById('selectAllStrategies');
        
        // 检查是否所有策略都被选中
        const allChecked = Array.from(checkboxes).every(checkbox => checkbox.checked);
        selectAll.checked = allChecked;
        
        // 监听单个复选框变化
        checkboxes.forEach(checkbox => {
            checkbox.addEventListener('change', function() {
                const allChecked = Array.from(checkboxes).every(cb => cb.checked);
                selectAll.checked = allChecked;
            });
        });
    });
    
    // 翻译功能
    function translateField(sourceFieldName, targetFieldId) {
        // 获取源字段的值
        var sourceInput = document.querySelector('input[name="' + sourceFieldName + '"], textarea[name="' + sourceFieldName + '"]');
        if (!sourceInput) {
            alert('未找到源字段：' + sourceFieldName);
            return;
        }
        
        var sourceText = sourceInput.value.trim();
        if (!sourceText) {
            alert('请先填写' + (sourceFieldName === 'site_name' ? '网站名称' : 
                                 sourceFieldName === 'welcome_text' ? '网站欢迎词' : 
                                 sourceFieldName === 'homepage_intro_title' ? '首页介绍标题' : 
                                 sourceFieldName === 'homepage_intro_content' ? '首页介绍内容' : 
                                 sourceFieldName === 'contact_info' ? '联系方式' : '源字段') + '，然后再翻译');
            return;
        }
        
        // 获取目标字段
        var targetInput = document.getElementById(targetFieldId);
        if (!targetInput) {
            alert('未找到目标字段');
            return;
        }
        
        // 显示翻译中状态
        var translateBtn = event.target.closest('button');
        var originalHtml = translateBtn.innerHTML;
        translateBtn.disabled = true;
        translateBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 翻译中...';
        
        // 发送翻译请求
        var formData = new FormData();
        formData.append('action', 'translate');
        formData.append('text', sourceText);
        formData.append('field', sourceFieldName);
        
        fetch('', {
            method: 'POST',
            body: formData
        })
        .then(function(response) {
            return response.json();
        })
        .then(function(data) {
            if (data.success) {
                // 翻译成功，填入目标字段
                targetInput.value = data.translated;
                // 显示成功提示
                var successMsg = document.createElement('div');
                successMsg.className = 'alert alert-success alert-dismissible fade show';
                successMsg.style.cssText = 'position:fixed;top:20px;right:20px;z-index:9999;min-width:200px;';
                successMsg.innerHTML = '<i class="fas fa-check-circle"></i> 翻译成功！<button type="button" class="btn-close" data-bs-dismiss="alert"></button>';
                document.body.appendChild(successMsg);
                // 3秒后自动移除
                setTimeout(function() {
                    if (successMsg.parentNode) {
                        successMsg.parentNode.removeChild(successMsg);
                    }
                }, 3000);
            } else {
                alert('翻译失败：' + (data.message || '未知错误'));
            }
        })
        .catch(function(error) {
            console.error('翻译请求错误:', error);
            alert('翻译请求失败，请稍后重试');
        })
        .finally(function() {
            // 恢复按钮状态
            translateBtn.disabled = false;
            translateBtn.innerHTML = originalHtml;
        });
    }
    </script>
    <button type="submit" class="btn btn-primary" id="save_settings_btn" <?php echo !$is_qualified ? 'disabled' : ''; ?>><?php echo $is_qualified ? '保存设置' : '保存设置（需激活管理员功能）'; ?></button>
</form>
<?php
$pageContent = ob_get_clean();
$pageTitle = '合伙人网站设置';
require_once __DIR__ . '/includes/layout.php'; 