- 扩展数据库表结构,添加会员等级、用户会员信息、视频任务、用户作品、系统配置等表 - 更新用户表,添加手机号、头像、昵称、性别、生日、地址等字段 - 创建完整的初始数据,包含10个用户、3个会员等级、15个订单、10个视频任务、10个用户作品 - 实现会员管理API控制器,支持CRUD操作和批量操作 - 创建会员等级和用户会员信息实体类及仓库接口 - 更新前端会员管理页面,集成真实API调用,保留模拟数据作为后备 - 实现编辑功能,支持修改用户名、会员等级、资源点、到期时间等信息
155 lines
5.4 KiB
SQL
155 lines
5.4 KiB
SQL
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,
|
|
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
|
|
);
|
|
|
|
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
|
|
);
|
|
|
|
-- 会员等级表
|
|
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
|
|
);
|
|
|