98 lines
3.7 KiB
PHP
98 lines
3.7 KiB
PHP
<?php
|
|
require_once 'config.php';
|
|
|
|
// 创建数据表
|
|
try {
|
|
$pdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8mb4", DB_USER, DB_PASS);
|
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
|
|
// 创建数据库
|
|
$pdo->exec("CREATE DATABASE IF NOT EXISTS " . DB_NAME);
|
|
$pdo->exec("USE " . DB_NAME);
|
|
|
|
// 用户表
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS users (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
email VARCHAR(100) UNIQUE NOT NULL,
|
|
password VARCHAR(255) NOT NULL,
|
|
credits INT DEFAULT 10,
|
|
invite_code VARCHAR(20) UNIQUE NOT NULL,
|
|
invited_by INT DEFAULT NULL,
|
|
is_admin TINYINT DEFAULT 0,
|
|
is_verified TINYINT DEFAULT 0,
|
|
verification_token VARCHAR(64),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
last_sign_in DATE,
|
|
INDEX idx_invite_code (invite_code),
|
|
INDEX idx_email (email),
|
|
FOREIGN KEY (invited_by) REFERENCES users(id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
|
|
|
|
// 签到记录表
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS sign_in_logs (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
user_id INT NOT NULL,
|
|
sign_in_date DATE NOT NULL,
|
|
credits_earned INT DEFAULT 2,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
UNIQUE KEY unique_signin (user_id, sign_in_date),
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
|
|
|
|
// 域名表
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS domains (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
user_id INT NOT NULL,
|
|
main_domain VARCHAR(100) NOT NULL,
|
|
subdomain VARCHAR(100) NOT NULL,
|
|
record_type VARCHAR(10) NOT NULL,
|
|
record_value VARCHAR(255) NOT NULL,
|
|
status TINYINT DEFAULT 1,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
UNIQUE KEY unique_domain (main_domain, subdomain),
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
INDEX idx_user (user_id),
|
|
INDEX idx_status (status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
|
|
|
|
// 邀请记录表
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS invite_logs (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
inviter_id INT NOT NULL,
|
|
invitee_id INT NOT NULL,
|
|
credits_earned INT DEFAULT 10,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (inviter_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (invitee_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
UNIQUE KEY unique_invitee (invitee_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
|
|
|
|
// 系统设置表
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS settings (
|
|
setting_key VARCHAR(50) PRIMARY KEY,
|
|
setting_value TEXT,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
|
|
|
|
// 插入默认设置
|
|
$pdo->exec("INSERT IGNORE INTO settings (setting_key, setting_value) VALUES
|
|
('theme', 'dark'),
|
|
('credit_per_domain', '5'),
|
|
('max_domains_per_user', '10'),
|
|
('sign_in_credit', '2'),
|
|
('invite_credit', '10'),
|
|
('site_name', '域名分发系统')
|
|
");
|
|
|
|
// 创建管理员账户(提示用户输入)
|
|
echo "<h2>数据库安装成功!</h2>";
|
|
echo "<p><b>您已安装 Parlz Domains Beta 0.1。</b></p>"
|
|
echo "<p>请访问 <a href='auth.php?action=register'>注册页面</a> 来创建管理员账户。</p>";
|
|
echo "<p><a href='/'>进入首页</a></p>";
|
|
|
|
} catch (PDOException $e) {
|
|
die("安装失败: " . $e->getMessage());
|
|
}
|
|
?>
|