2025-10-21 16:50:33 +08:00
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
|
|
|
email VARCHAR(100) NOT NULL UNIQUE,
|
|
|
|
|
password_hash VARCHAR(100) NOT NULL,
|
|
|
|
|
role VARCHAR(30) NOT NULL DEFAULT 'ROLE_USER',
|
|
|
|
|
points INT NOT NULL DEFAULT 50,
|
2025-10-22 09:50:11 +08:00
|
|
|
phone VARCHAR(20),
|
|
|
|
|
avatar VARCHAR(500),
|
|
|
|
|
nickname VARCHAR(100),
|
|
|
|
|
gender VARCHAR(10),
|
|
|
|
|
birthday DATE,
|
|
|
|
|
address TEXT,
|
|
|
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
|
|
|
last_login_at TIMESTAMP NULL,
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
2025-10-21 16:50:33 +08:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS payments (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
order_id VARCHAR(50) NOT NULL UNIQUE,
|
|
|
|
|
amount DECIMAL(10,2) NOT NULL,
|
|
|
|
|
currency VARCHAR(3) NOT NULL DEFAULT 'CNY',
|
|
|
|
|
payment_method VARCHAR(20) NOT NULL,
|
|
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|
|
|
|
description VARCHAR(500),
|
|
|
|
|
external_transaction_id VARCHAR(100),
|
|
|
|
|
callback_url VARCHAR(1000),
|
|
|
|
|
return_url VARCHAR(1000),
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
paid_at TIMESTAMP NULL,
|
|
|
|
|
user_id BIGINT,
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS orders (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
order_number VARCHAR(50) NOT NULL UNIQUE,
|
|
|
|
|
total_amount DECIMAL(10,2) NOT NULL,
|
|
|
|
|
currency VARCHAR(3) NOT NULL DEFAULT 'CNY',
|
|
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|
|
|
|
order_type VARCHAR(20) NOT NULL DEFAULT 'PRODUCT',
|
|
|
|
|
description VARCHAR(500),
|
|
|
|
|
notes TEXT,
|
|
|
|
|
shipping_address TEXT,
|
|
|
|
|
billing_address TEXT,
|
|
|
|
|
contact_phone VARCHAR(20),
|
|
|
|
|
contact_email VARCHAR(100),
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
paid_at TIMESTAMP NULL,
|
|
|
|
|
shipped_at TIMESTAMP NULL,
|
|
|
|
|
delivered_at TIMESTAMP NULL,
|
|
|
|
|
cancelled_at TIMESTAMP NULL,
|
|
|
|
|
user_id BIGINT NOT NULL,
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS order_items (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
product_name VARCHAR(100) NOT NULL,
|
|
|
|
|
product_description VARCHAR(500),
|
|
|
|
|
product_sku VARCHAR(200),
|
|
|
|
|
unit_price DECIMAL(10,2) NOT NULL,
|
|
|
|
|
quantity INT NOT NULL,
|
|
|
|
|
subtotal DECIMAL(10,2) NOT NULL,
|
|
|
|
|
product_image VARCHAR(100),
|
|
|
|
|
order_id BIGINT NOT NULL,
|
|
|
|
|
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
2025-10-22 09:50:11 +08:00
|
|
|
-- 会员等级表
|
|
|
|
|
CREATE TABLE IF NOT EXISTS membership_levels (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
name VARCHAR(50) NOT NULL UNIQUE,
|
|
|
|
|
display_name VARCHAR(50) NOT NULL,
|
|
|
|
|
description TEXT,
|
|
|
|
|
price DECIMAL(10,2) NOT NULL DEFAULT 0,
|
|
|
|
|
duration_days INT NOT NULL DEFAULT 30,
|
|
|
|
|
points_bonus INT NOT NULL DEFAULT 0,
|
|
|
|
|
features JSON,
|
|
|
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 用户会员信息表
|
|
|
|
|
CREATE TABLE IF NOT EXISTS user_memberships (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
user_id BIGINT NOT NULL,
|
|
|
|
|
membership_level_id BIGINT NOT NULL,
|
|
|
|
|
start_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
end_date TIMESTAMP NOT NULL,
|
|
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
|
|
|
|
auto_renew BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
|
FOREIGN KEY (membership_level_id) REFERENCES membership_levels(id),
|
|
|
|
|
UNIQUE KEY unique_active_membership (user_id, status)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 视频生成任务表
|
|
|
|
|
CREATE TABLE IF NOT EXISTS video_tasks (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
task_id VARCHAR(100) NOT NULL UNIQUE,
|
|
|
|
|
user_id BIGINT NOT NULL,
|
|
|
|
|
task_type VARCHAR(50) NOT NULL, -- TEXT_TO_VIDEO, IMAGE_TO_VIDEO, STORYBOARD_VIDEO
|
|
|
|
|
title VARCHAR(200) NOT NULL,
|
|
|
|
|
description TEXT,
|
|
|
|
|
input_text TEXT,
|
|
|
|
|
input_image_url VARCHAR(500),
|
|
|
|
|
output_video_url VARCHAR(500),
|
|
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'PENDING', -- PENDING, PROCESSING, COMPLETED, FAILED
|
|
|
|
|
progress INT NOT NULL DEFAULT 0,
|
|
|
|
|
error_message TEXT,
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
completed_at TIMESTAMP NULL,
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 用户作品表
|
|
|
|
|
CREATE TABLE IF NOT EXISTS user_works (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
user_id BIGINT NOT NULL,
|
|
|
|
|
title VARCHAR(200) NOT NULL,
|
|
|
|
|
description TEXT,
|
|
|
|
|
work_type VARCHAR(50) NOT NULL, -- VIDEO, IMAGE, STORYBOARD
|
|
|
|
|
cover_image VARCHAR(500),
|
|
|
|
|
video_url VARCHAR(500),
|
|
|
|
|
tags VARCHAR(500),
|
|
|
|
|
is_public BOOLEAN NOT NULL DEFAULT TRUE,
|
|
|
|
|
view_count INT NOT NULL DEFAULT 0,
|
|
|
|
|
like_count INT NOT NULL DEFAULT 0,
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- 系统配置表
|
|
|
|
|
CREATE TABLE IF NOT EXISTS system_configs (
|
|
|
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
|
|
|
config_key VARCHAR(100) NOT NULL UNIQUE,
|
|
|
|
|
config_value TEXT,
|
|
|
|
|
description VARCHAR(500),
|
|
|
|
|
config_type VARCHAR(50) NOT NULL DEFAULT 'STRING', -- STRING, NUMBER, BOOLEAN, JSON
|
|
|
|
|
is_public BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
|
|
);
|
|
|
|
|
|