<?php
// 后台管理系统主页面
session_start();

if (!isset($_SESSION['admin'])) {
    header('Location: login.php');
    exit;
}

// 检查配置文件
if (!file_exists('config.php')) {
    header('Location: install.php');
    exit;
}

require 'config.php';

// 连接数据库
$conn = mysqli_connect($dbconfig['host'], $dbconfig['user'], $dbconfig['pass'], $dbconfig['name']);
if (!$conn) {
    die('数据库连接失败');
}

// 处理操作
$message = '';
$messageType = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 处理修改密码
    if (isset($_POST['changePassword'])) {
        $oldPassword = $_POST['oldPassword'];
        $newPassword = $_POST['newPassword'];
        $confirmPassword = $_POST['confirmPassword'];
        
        // 验证输入
        if (empty($oldPassword) || empty($newPassword) || empty($confirmPassword)) {
            $message = '请填写所有密码字段';
            $messageType = 'error';
        } elseif ($newPassword !== $confirmPassword) {
            $message = '两次输入的新密码不一致';
            $messageType = 'error';
        } else {
            // 验证旧密码
            $sql = "SELECT * FROM `admin` WHERE `username` = ?";
            $stmt = mysqli_prepare($conn, $sql);
            mysqli_stmt_bind_param($stmt, 's', $_SESSION['admin']);
            mysqli_stmt_execute($stmt);
            $result = mysqli_stmt_get_result($stmt);
            
            if ($row = mysqli_fetch_assoc($result)) {
                if (password_verify($oldPassword, $row['password'])) {
                    // 更新密码
                    $hashedPassword = password_hash($newPassword, PASSWORD_DEFAULT);
                    $updateSql = "UPDATE `admin` SET `password` = ? WHERE `username` = ?";
                    $updateStmt = mysqli_prepare($conn, $updateSql);
                    mysqli_stmt_bind_param($updateStmt, 'ss', $hashedPassword, $_SESSION['admin']);
                    
                    if (mysqli_stmt_execute($updateStmt)) {
                        $message = '密码修改成功';
                        $messageType = 'success';
                    } else {
                        $message = '密码修改失败';
                        $messageType = 'error';
                    }
                    
                    mysqli_stmt_close($updateStmt);
                } else {
                    $message = '旧密码错误';
                    $messageType = 'error';
                }
            }
            
            mysqli_stmt_close($stmt);
        }
    }
    
    // 处理上传广告音
    if (isset($_POST['uploadAdAudio'])) {
        if (isset($_FILES['adAudio']) && $_FILES['adAudio']['error'] === UPLOAD_ERR_OK) {
            $file = $_FILES['adAudio'];
            $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
            
            if ($ext === 'mp3') {
                $filename = uniqid() . '.mp3';
                $destPath = '../ad_audio/' . $filename;
                
                if (move_uploaded_file($file['tmp_name'], $destPath)) {
                    // 记录到数据库
                    $size = filesize($destPath);
                    $sql = "INSERT INTO `ad_audio` (`filename`, `size`, `created_at`) VALUES (?, ?, NOW())";
                    $stmt = mysqli_prepare($conn, $sql);
                    mysqli_stmt_bind_param($stmt, 'si', $filename, $size);
                    
                    if (mysqli_stmt_execute($stmt)) {
                        $message = '广告音上传成功';
                        $messageType = 'success';
                    } else {
                        $message = '广告音上传失败';
                        $messageType = 'error';
                        unlink($destPath);
                    }
                    
                    mysqli_stmt_close($stmt);
                } else {
                    $message = '文件移动失败';
                    $messageType = 'error';
                }
            } else {
                $message = '请上传MP3格式的广告音';
                $messageType = 'error';
            }
        } else {
            $message = '请选择要上传的广告音';
            $messageType = 'error';
        }
    }
    
    // 处理上传封面
    if (isset($_POST['uploadAdCover'])) {
        if (isset($_FILES['adCover']) && $_FILES['adCover']['error'] === UPLOAD_ERR_OK) {
            $file = $_FILES['adCover'];
            $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
            
            if (in_array($ext, array('jpg', 'jpeg', 'png', 'gif'))) {
                $filename = uniqid() . '.' . $ext;
                $destPath = '../ad_cover/' . $filename;
                
                if (move_uploaded_file($file['tmp_name'], $destPath)) {
                    // 记录到数据库
                    $size = filesize($destPath);
                    $sql = "INSERT INTO `ad_cover` (`filename`, `size`, `created_at`) VALUES (?, ?, NOW())";
                    $stmt = mysqli_prepare($conn, $sql);
                    mysqli_stmt_bind_param($stmt, 'si', $filename, $size);
                    
                    if (mysqli_stmt_execute($stmt)) {
                        $message = '封面上传成功';
                        $messageType = 'success';
                    } else {
                        $message = '封面上传失败';
                        $messageType = 'error';
                        unlink($destPath);
                    }
                    
                    mysqli_stmt_close($stmt);
                } else {
                    $message = '文件移动失败';
                    $messageType = 'error';
                }
            } else {
                $message = '请上传图片格式的封面';
                $messageType = 'error';
            }
        } else {
            $message = '请选择要上传的封面';
            $messageType = 'error';
        }
    }
    
    // 处理删除广告音
    if (isset($_POST['deleteAdAudio'])) {
        $id = $_POST['id'];
        
        // 获取文件名
        $sql = "SELECT `filename` FROM `ad_audio` WHERE `id` = ?";
        $stmt = mysqli_prepare($conn, $sql);
        mysqli_stmt_bind_param($stmt, 'i', $id);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        
        if ($row = mysqli_fetch_assoc($result)) {
            $filename = $row['filename'];
            $filePath = '../ad_audio/' . $filename;
            
            // 删除文件
            if (file_exists($filePath)) {
                unlink($filePath);
            }
            
            // 从数据库删除
            $deleteSql = "DELETE FROM `ad_audio` WHERE `id` = ?";
            $deleteStmt = mysqli_prepare($conn, $deleteSql);
            mysqli_stmt_bind_param($deleteStmt, 'i', $id);
            
            if (mysqli_stmt_execute($deleteStmt)) {
                $message = '广告音删除成功';
                $messageType = 'success';
            } else {
                $message = '广告音删除失败';
                $messageType = 'error';
            }
            
            mysqli_stmt_close($deleteStmt);
        }
        
        mysqli_stmt_close($stmt);
    }
    
    // 处理删除封面
    if (isset($_POST['deleteAdCover'])) {
        $id = $_POST['id'];
        
        // 获取文件名
        $sql = "SELECT `filename` FROM `ad_cover` WHERE `id` = ?";
        $stmt = mysqli_prepare($conn, $sql);
        mysqli_stmt_bind_param($stmt, 'i', $id);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        
        if ($row = mysqli_fetch_assoc($result)) {
            $filename = $row['filename'];
            $filePath = '../ad_cover/' . $filename;
            
            // 删除文件
            if (file_exists($filePath)) {
                unlink($filePath);
            }
            
            // 从数据库删除
            $deleteSql = "DELETE FROM `ad_cover` WHERE `id` = ?";
            $deleteStmt = mysqli_prepare($conn, $deleteSql);
            mysqli_stmt_bind_param($deleteStmt, 'i', $id);
            
            if (mysqli_stmt_execute($deleteStmt)) {
                $message = '封面删除成功';
                $messageType = 'success';
            } else {
                $message = '封面删除失败';
                $messageType = 'error';
            }
            
            mysqli_stmt_close($deleteStmt);
        }
        
        mysqli_stmt_close($stmt);
    }
}

// 获取转换记录
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$pageSize = 20;
$offset = ($page - 1) * $pageSize;

// 获取总记录数
$totalSql = "SELECT COUNT(*) FROM `convert_records`";
$totalResult = mysqli_query($conn, $totalSql);
$totalRow = mysqli_fetch_row($totalResult);
$totalRecords = $totalRow[0];
$totalPages = ceil($totalRecords / $pageSize);

// 获取当前页记录
$recordsSql = "SELECT * FROM `convert_records` ORDER BY `created_at` DESC LIMIT ? OFFSET ?";
$recordsStmt = mysqli_prepare($conn, $recordsSql);
mysqli_stmt_bind_param($recordsStmt, 'ii', $pageSize, $offset);
mysqli_stmt_execute($recordsStmt);
$recordsResult = mysqli_stmt_get_result($recordsStmt);

// 获取广告音列表
$adAudioSql = "SELECT * FROM `ad_audio` ORDER BY `created_at` DESC";
$adAudioResult = mysqli_query($conn, $adAudioSql);

// 获取封面列表
$adCoverSql = "SELECT * FROM `ad_cover` ORDER BY `created_at` DESC";
$adCoverResult = mysqli_query($conn, $adCoverSql);

// 格式化文件大小
function formatFileSize($bytes) {
    if ($bytes >= 1073741824) {
        return number_format($bytes / 1073741824, 2) . ' GB';
    } elseif ($bytes >= 1048576) {
        return number_format($bytes / 1048576, 2) . ' MB';
    } elseif ($bytes >= 1024) {
        return number_format($bytes / 1024, 2) . ' KB';
    } else {
        return $bytes . ' B';
    }
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>后台管理 - 音视频转MP3工具</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Microsoft YaHei', Arial, sans-serif;
            background-color: #f5f5f5;
            color: #333;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }
        
        header {
            background-color: #2c3e50;
            color: #fff;
            padding: 20px;
            border-radius: 8px;
            margin-bottom: 30px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        header h1 {
            font-size: 24px;
        }
        
        header .logout {
            color: #fff;
            text-decoration: none;
            padding: 8px 16px;
            background-color: #e74c3c;
            border-radius: 4px;
            transition: background-color 0.3s;
        }
        
        header .logout:hover {
            background-color: #c0392b;
        }
        
        .message {
            padding: 15px;
            border-radius: 5px;
            margin-bottom: 20px;
            text-align: center;
        }
        
        .message.success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .message.error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        .tabs {
            display: flex;
            margin-bottom: 30px;
            background-color: #fff;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        
        .tab {
            flex: 1;
            padding: 15px;
            text-align: center;
            cursor: pointer;
            border-bottom: 3px solid transparent;
            transition: all 0.3s;
        }
        
        .tab.active {
            border-bottom-color: #3498db;
            color: #3498db;
            font-weight: bold;
        }
        
        .tab-content {
            display: none;
            background-color: #fff;
            border-radius: 8px;
            padding: 30px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            margin-bottom: 30px;
        }
        
        .tab-content.active {
            display: block;
        }
        
        h2 {
            margin-bottom: 20px;
            color: #2c3e50;
        }
        
        .form-group {
            margin-bottom: 20px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: 500;
        }
        
        .form-group input {
            width: 100%;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
            font-size: 14px;
        }
        
        .btn {
            display: inline-block;
            padding: 10px 20px;
            background-color: #3498db;
            color: #fff;
            border: none;
            border-radius: 5px;
            font-size: 14px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        
        .btn:hover {
            background-color: #2980b9;
        }
        
        .btn-danger {
            background-color: #e74c3c;
        }
        
        .btn-danger:hover {
            background-color: #c0392b;
        }
        
        table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
        }
        
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        
        th {
            background-color: #f8f9fa;
            font-weight: 600;
        }
        
        tr:hover {
            background-color: #f8f9fa;
        }
        
        .pagination {
            display: flex;
            justify-content: center;
            margin-top: 20px;
        }
        
        .pagination a {
            padding: 8px 16px;
            margin: 0 5px;
            background-color: #fff;
            border: 1px solid #ddd;
            border-radius: 4px;
            text-decoration: none;
            color: #333;
            transition: all 0.3s;
        }
        
        .pagination a:hover {
            background-color: #3498db;
            color: #fff;
            border-color: #3498db;
        }
        
        .pagination a.active {
            background-color: #3498db;
            color: #fff;
            border-color: #3498db;
        }
        
        .upload-section {
            margin-bottom: 30px;
            padding: 20px;
            background-color: #f8f9fa;
            border-radius: 8px;
        }
        
        .file-list {
            margin-top: 20px;
        }
        
        .file-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 10px;
            background-color: #f8f9fa;
            border-radius: 5px;
            margin-bottom: 10px;
        }
        
        .file-info {
            flex: 1;
        }
        
        .file-name {
            font-weight: 500;
        }
        
        .file-meta {
            font-size: 12px;
            color: #666;
            margin-top: 5px;
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>后台管理系统</h1>
            <a href="login.php?action=logout" class="logout">退出登录</a>
        </header>
        
        <?php if ($message): ?>
            <div class="message <?php echo $messageType; ?>"><?php echo $message; ?></div>
        <?php endif; ?>
        
        <div class="tabs">
            <div class="tab active" data-tab="records">转换记录</div>
            <div class="tab" data-tab="password">修改密码</div>
            <div class="tab" data-tab="adAudio">广告音管理</div>
            <div class="tab" data-tab="adCover">封面管理</div>
            <div class="tab"><a href="settings.php" style="text-decoration: none; color: inherit;">系统设置</a></div>
        </div>
        
        <!-- 转换记录 -->
        <div class="tab-content active" id="records">
            <h2>转换记录</h2>
            
            <table>
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>文件名</th>
                        <th>原始大小</th>
                        <th>转换后大小</th>
                        <th>时长</th>
                        <th>码率</th>
                        <th>采样率</th>
                        <th>声道</th>
                        <th>是否添加广告</th>
                        <th>转换时间</th>
                    </tr>
                </thead>
                <tbody>
                    <?php while ($row = mysqli_fetch_assoc($recordsResult)): ?>
                        <tr>
                            <td><?php echo $row['id']; ?></td>
                            <td><?php echo $row['filename']; ?></td>
                            <td><?php echo formatFileSize($row['original_size']); ?></td>
                            <td><?php echo formatFileSize($row['converted_size']); ?></td>
                            <td><?php echo $row['duration']; ?></td>
                            <td><?php echo $row['bitrate']; ?></td>
                            <td><?php echo $row['sample_rate']; ?></td>
                            <td><?php echo $row['channels']; ?></td>
                            <td><?php echo $row['add_ad'] ? '是' : '否'; ?></td>
                            <td><?php echo $row['created_at']; ?></td>
                        </tr>
                    <?php endwhile; ?>
                </tbody>
            </table>
            
            <!-- 分页 -->
            <?php if ($totalPages > 1): ?>
                <div class="pagination">
                    <?php if ($page > 1): ?>
                        <a href="?page=<?php echo $page - 1; ?>">上一页</a>
                    <?php endif; ?>
                    
                    <?php for ($i = 1; $i <= $totalPages; $i++): ?>
                        <a href="?page=<?php echo $i; ?>" class="<?php echo $i == $page ? 'active' : ''; ?>"><?php echo $i; ?></a>
                    <?php endfor; ?>
                    
                    <?php if ($page < $totalPages): ?>
                        <a href="?page=<?php echo $page + 1; ?>">下一页</a>
                    <?php endif; ?>
                </div>
            <?php endif; ?>
        </div>
        
        <!-- 修改密码 -->
        <div class="tab-content" id="password">
            <h2>修改密码</h2>
            
            <form method="POST" action="">
                <input type="hidden" name="changePassword" value="1">
                
                <div class="form-group">
                    <label for="oldPassword">旧密码</label>
                    <input type="password" id="oldPassword" name="oldPassword" required>
                </div>
                
                <div class="form-group">
                    <label for="newPassword">新密码</label>
                    <input type="password" id="newPassword" name="newPassword" required>
                </div>
                
                <div class="form-group">
                    <label for="confirmPassword">确认新密码</label>
                    <input type="password" id="confirmPassword" name="confirmPassword" required>
                </div>
                
                <button type="submit" class="btn">修改密码</button>
            </form>
        </div>
        
        <!-- 广告音管理 -->
        <div class="tab-content" id="adAudio">
            <h2>广告音管理</h2>
            
            <div class="upload-section">
                <h3>上传广告音</h3>
                <form method="POST" action="" enctype="multipart/form-data">
                    <input type="hidden" name="uploadAdAudio" value="1">
                    
                    <div class="form-group">
                        <label for="adAudio">选择MP3文件</label>
                        <input type="file" id="adAudio" name="adAudio" accept=".mp3" required>
                    </div>
                    
                    <button type="submit" class="btn">上传</button>
                </form>
            </div>
            
            <div class="file-list">
                <h3>广告音列表</h3>
                <?php while ($row = mysqli_fetch_assoc($adAudioResult)): ?>
                    <div class="file-item">
                        <div class="file-info">
                            <div class="file-name"><?php echo $row['filename']; ?></div>
                            <div class="file-meta">
                                大小: <?php echo formatFileSize($row['size']); ?> | 
                                上传时间: <?php echo $row['created_at']; ?>
                            </div>
                        </div>
                        <form method="POST" action="" style="display: inline;">
                            <input type="hidden" name="deleteAdAudio" value="1">
                            <input type="hidden" name="id" value="<?php echo $row['id']; ?>">
                            <button type="submit" class="btn btn-danger" onclick="return confirm('确定要删除这个广告音吗？');">删除</button>
                        </form>
                    </div>
                <?php endwhile; ?>
            </div>
        </div>
        
        <!-- 封面管理 -->
        <div class="tab-content" id="adCover">
            <h2>封面管理</h2>
            
            <div class="upload-section">
                <h3>上传封面</h3>
                <form method="POST" action="" enctype="multipart/form-data">
                    <input type="hidden" name="uploadAdCover" value="1">
                    
                    <div class="form-group">
                        <label for="adCover">选择图片文件</label>
                        <input type="file" id="adCover" name="adCover" accept=".jpg,.jpeg,.png,.gif" required>
                    </div>
                    
                    <button type="submit" class="btn">上传</button>
                </form>
            </div>
            
            <div class="file-list">
                <h3>封面列表</h3>
                <?php while ($row = mysqli_fetch_assoc($adCoverResult)): ?>
                    <div class="file-item">
                        <div class="file-info">
                            <div class="file-name"><?php echo $row['filename']; ?></div>
                            <div class="file-meta">
                                大小: <?php echo formatFileSize($row['size']); ?> | 
                                上传时间: <?php echo $row['created_at']; ?>
                            </div>
                        </div>
                        <form method="POST" action="" style="display: inline;">
                            <input type="hidden" name="deleteAdCover" value="1">
                            <input type="hidden" name="id" value="<?php echo $row['id']; ?>">
                            <button type="submit" class="btn btn-danger" onclick="return confirm('确定要删除这个封面吗？');">删除</button>
                        </form>
                    </div>
                <?php endwhile; ?>
            </div>
        </div>
    </div>
    
    <script>
        // 标签切换
        document.querySelectorAll('.tab').forEach(tab => {
            tab.addEventListener('click', function() {
                // 移除所有活动状态
                document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
                document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
                
                // 添加当前活动状态
                this.classList.add('active');
                const tabId = this.getAttribute('data-tab');
                document.getElementById(tabId).classList.add('active');
            });
        });
    </script>
</body>
</html>