171 lines
4.9 KiB
SQL
171 lines
4.9 KiB
SQL
-- ==========================================
|
|
-- Database Initialization Script
|
|
-- Generated at: 2025-12-22 17:54:23.463367
|
|
-- ==========================================
|
|
|
|
-- 1. Select Database and Cleanup Tables
|
|
USE designer_db;
|
|
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
DROP TABLE IF EXISTS check_in_config;
|
|
DROP TABLE IF EXISTS check_in_records;
|
|
DROP TABLE IF EXISTS features_config;
|
|
DROP TABLE IF EXISTS plugin_groups;
|
|
DROP TABLE IF EXISTS points_history;
|
|
DROP TABLE IF EXISTS vip_config;
|
|
DROP TABLE IF EXISTS users;
|
|
DROP TABLE IF EXISTS user_sessions;
|
|
SET FOREIGN_KEY_CHECKS = 1;
|
|
|
|
-- 2. Create Tables
|
|
CREATE TABLE check_in_config (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
consecutive_days INTEGER NOT NULL,
|
|
base_points INTEGER NOT NULL,
|
|
bonus_points INTEGER NOT NULL,
|
|
total_points INTEGER NOT NULL,
|
|
enabled BOOL,
|
|
created_at DATETIME DEFAULT now(),
|
|
updated_at DATETIME,
|
|
PRIMARY KEY (id),
|
|
UNIQUE (consecutive_days)
|
|
);
|
|
|
|
CREATE TABLE check_in_records (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
username VARCHAR(50) NOT NULL,
|
|
check_in_date DATE NOT NULL,
|
|
points_earned INTEGER NOT NULL,
|
|
consecutive_days INTEGER NOT NULL,
|
|
vip_multiplier FLOAT,
|
|
created_at DATETIME DEFAULT now(),
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE features_config (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
feature_key VARCHAR(50) NOT NULL,
|
|
feature_name VARCHAR(100) NOT NULL,
|
|
category VARCHAR(50),
|
|
points_cost INTEGER,
|
|
vip_points_cost INTEGER,
|
|
svip_points_cost INTEGER,
|
|
enabled BOOL,
|
|
description TEXT,
|
|
created_at DATETIME DEFAULT now(),
|
|
updated_at DATETIME,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE plugin_groups (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
name VARCHAR(64) NOT NULL,
|
|
current_version_file VARCHAR(255),
|
|
comment TEXT,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE points_history (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
username VARCHAR(50) NOT NULL,
|
|
type VARCHAR(20) NOT NULL,
|
|
amount INTEGER NOT NULL,
|
|
balance INTEGER NOT NULL,
|
|
description VARCHAR(255),
|
|
created_at DATETIME DEFAULT now(),
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE vip_config (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
vip_type VARCHAR(20) NOT NULL,
|
|
name VARCHAR(50) NOT NULL,
|
|
price FLOAT NOT NULL,
|
|
daily_quota INTEGER NOT NULL,
|
|
points_multiplier FLOAT,
|
|
enabled BOOL,
|
|
description TEXT,
|
|
created_at DATETIME DEFAULT now(),
|
|
updated_at DATETIME,
|
|
PRIMARY KEY (id),
|
|
UNIQUE (vip_type)
|
|
);
|
|
|
|
CREATE TABLE users (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
username VARCHAR(64) NOT NULL,
|
|
hashed_password VARCHAR(128) NOT NULL,
|
|
created_at DATETIME NOT NULL DEFAULT now(),
|
|
group_id INTEGER,
|
|
permissions TEXT,
|
|
expire_date DATETIME,
|
|
email VARCHAR(255),
|
|
is_verified BOOL,
|
|
verification_code VARCHAR(6),
|
|
reset_token VARCHAR(128),
|
|
reset_token_expire DATETIME,
|
|
nickname VARCHAR(50),
|
|
avatar VARCHAR(500),
|
|
points INTEGER,
|
|
level INTEGER,
|
|
vip_type VARCHAR(20),
|
|
vip_expire DATETIME,
|
|
vip_daily_quota INTEGER,
|
|
vip_quota_reset_date DATE,
|
|
total_check_in_days INTEGER,
|
|
consecutive_check_in INTEGER,
|
|
last_check_in_date DATE,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(group_id) REFERENCES plugin_groups (id)
|
|
);
|
|
|
|
CREATE TABLE user_sessions (
|
|
id INTEGER NOT NULL AUTO_INCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
device_id VARCHAR(128) NOT NULL,
|
|
active BOOL NOT NULL,
|
|
expires_at DATETIME,
|
|
created_at DATETIME NOT NULL DEFAULT now(),
|
|
login_at DATETIME,
|
|
logout_at DATETIME,
|
|
duration_seconds INTEGER,
|
|
last_seen_at DATETIME,
|
|
PRIMARY KEY (id),
|
|
FOREIGN KEY(user_id) REFERENCES users (id)
|
|
);
|
|
|
|
-- 3. Insert Initial Data
|
|
-- Default User Group
|
|
INSERT INTO plugin_groups (name, comment) VALUES ('default', 'Default User Group');
|
|
-- VIP Config
|
|
INSERT INTO vip_config (vip_type, name, price, daily_quota, points_multiplier) VALUES ('vip', 'VIP会员', 30.0, 20, 1.5);
|
|
INSERT INTO vip_config (vip_type, name, price, daily_quota, points_multiplier) VALUES ('svip', 'SVIP会员', 88.0, -1, 2.0);
|
|
-- Check-in Config
|
|
INSERT INTO checkin_config (consecutive_days, base_points, bonus_points, total_points) VALUES (1, 10, 0, 10);
|
|
INSERT INTO checkin_config (consecutive_days, base_points, bonus_points, total_points) VALUES (3, 10, 5, 15);
|
|
INSERT INTO checkin_config (consecutive_days, base_points, bonus_points, total_points) VALUES (7, 10, 20, 30);
|
|
-- Feature Config
|
|
INSERT INTO feature_configs (feature_key, feature_name, points_cost, category) VALUES ('ai_remove_bg', '智能抠图', 10, 'ai');
|
|
-- 4. Create Admin User (admin / password123)
|
|
|
|
INSERT INTO users (
|
|
username, hashed_password, email, is_verified, permissions,
|
|
group_id, nickname, level, vip_type, vip_expire,
|
|
created_at, points, total_check_in_days, consecutive_check_in, vip_daily_quota
|
|
) VALUES (
|
|
'admin',
|
|
'$2b$12$UsFjs3Jwn5BG7u/RJ1efNuTF4zIsjT.pSm1mQEBXGWKR.3Kakhpmq',
|
|
'admin@example.com',
|
|
1,
|
|
'admin,vip,svip',
|
|
(SELECT id FROM plugin_groups WHERE name = 'default' LIMIT 1),
|
|
'Administrator',
|
|
999,
|
|
'svip',
|
|
'2099-12-31 23:59:59',
|
|
NOW(),
|
|
0, 0, 0, 0
|
|
);
|