-- ============================================ -- 宝塔面板数据库初始化SQL文件 -- 适用于MySQL/MariaDB数据库 -- ============================================ -- 创建数据库(如果不存在,请根据实际情况修改数据库名) -- CREATE DATABASE IF NOT EXISTS `aigc_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- USE `aigc_db`; -- ============================================ -- 基础表结构 -- ============================================ -- 用户表 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, frozen_points INT NOT NULL DEFAULT 0 COMMENT '冻结积分', phone VARCHAR(20), avatar TEXT COMMENT '头像URL', nickname VARCHAR(100), gender VARCHAR(10), birthday DATE, address TEXT, bio TEXT COMMENT '个人简介', 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, INDEX idx_username (username), INDEX idx_email (email), INDEX idx_role (role), INDEX idx_is_active (is_active), INDEX idx_created_at (created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; -- 支付表 CREATE TABLE IF NOT EXISTS payments ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id VARCHAR(50) NOT NULL COMMENT '订单号(不唯一,一个订单可以有多次支付尝试)', 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' COMMENT '支付状态:PENDING, PROCESSING, SUCCESS, FAILED, CANCELLED', description VARCHAR(500), external_transaction_id VARCHAR(100) COMMENT '外部交易号(支付宝交易号等)', callback_url VARCHAR(1000), return_url VARCHAR(1000), payment_url VARCHAR(2000) COMMENT '支付跳转URL', 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 COMMENT '用户ID', order_id_ref BIGINT COMMENT '关联的订单ID(外键)', FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL, FOREIGN KEY (order_id_ref) REFERENCES orders(id) ON DELETE SET NULL, INDEX idx_order_id (order_id), INDEX idx_user_id (user_id), INDEX idx_status (status), INDEX idx_payment_method (payment_method), INDEX idx_created_at (created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='支付表'; -- 订单表 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), INDEX idx_order_number (order_number), INDEX idx_user_id (user_id), INDEX idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表'; -- 订单项表 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, INDEX idx_order_id (order_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单项表'; -- 会员等级表 CREATE TABLE IF NOT EXISTS membership_levels ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL UNIQUE COMMENT '等级名称(内部标识)', display_name VARCHAR(50) NOT NULL COMMENT '显示名称', description TEXT COMMENT '描述', price DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '价格(元)', duration_days INT NOT NULL DEFAULT 30 COMMENT '时长(天)', points_bonus INT NOT NULL DEFAULT 0 COMMENT '积分奖励', resource_points INT NOT NULL DEFAULT 0 COMMENT '资源点数量', features JSON COMMENT '功能特性(JSON格式)', is_active BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否启用', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX idx_name (name), INDEX idx_is_active (is_active) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员等级表'; -- 用户会员信息表 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), INDEX idx_user_id (user_id), INDEX idx_status (status), INDEX idx_end_date (end_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会员信息表'; -- 视频生成任务表 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 COMMENT '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' COMMENT '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, INDEX idx_task_id (task_id), INDEX idx_user_id (user_id), INDEX idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频生成任务表'; -- 系统配置表 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' COMMENT '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, INDEX idx_config_key (config_key) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表'; -- 系统设置表(用于存储系统级别的设置) CREATE TABLE IF NOT EXISTS system_settings ( id BIGINT PRIMARY KEY AUTO_INCREMENT, standard_price_cny INT NOT NULL DEFAULT 0 COMMENT '标准版价格(元)', pro_price_cny INT NOT NULL DEFAULT 0 COMMENT '专业版价格(元)', points_per_generation INT NOT NULL DEFAULT 1 COMMENT '每次生成消耗的资源点', site_name VARCHAR(100) NOT NULL DEFAULT 'AIGC Demo' COMMENT '站点名称', site_subtitle VARCHAR(150) NOT NULL DEFAULT '现代化的Spring Boot应用演示' COMMENT '站点副标题', registration_open BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否开放注册', maintenance_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '维护模式', enable_alipay BOOLEAN NOT NULL DEFAULT TRUE COMMENT '启用支付宝', enable_paypal BOOLEAN NOT NULL DEFAULT TRUE COMMENT '启用PayPal', contact_email VARCHAR(120) DEFAULT 'support@example.com' COMMENT '联系邮箱' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统设置表'; -- 用户活跃度统计表 CREATE TABLE IF NOT EXISTS user_activity_stats ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '统计ID', activity_date DATE NOT NULL UNIQUE COMMENT '统计日期', daily_active_users INT NOT NULL DEFAULT 0 COMMENT '日活用户数', monthly_active_users INT NOT NULL DEFAULT 0 COMMENT '月活用户数', new_users INT NOT NULL DEFAULT 0 COMMENT '新增用户数', returning_users INT NOT NULL DEFAULT 0 COMMENT '回访用户数', session_count INT NOT NULL DEFAULT 0 COMMENT '会话数', avg_session_duration DECIMAL(10,2) DEFAULT 0 COMMENT '平均会话时长(分钟)', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', UNIQUE KEY uk_activity_date (activity_date), INDEX idx_activity_date (activity_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户活跃度统计表'; -- 文生视频任务表 CREATE TABLE IF NOT EXISTS text_to_video_tasks ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '任务ID', task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务唯一标识', username VARCHAR(100) NOT NULL COMMENT '用户名', prompt TEXT COMMENT '文本描述/提示词', aspect_ratio VARCHAR(10) NOT NULL DEFAULT '16:9' COMMENT '宽高比:16:9, 4:3, 1:1, 3:4, 9:16', duration INT NOT NULL DEFAULT 5 COMMENT '视频时长(秒):5, 10, 15, 30', hd_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否高清模式', status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态:PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED', progress INT NOT NULL DEFAULT 0 COMMENT '进度(0-100)', result_url TEXT COMMENT '结果视频URL', real_task_id VARCHAR(100) COMMENT '外部API返回的真实任务ID', error_message TEXT COMMENT '错误信息', cost_points INT NOT NULL DEFAULT 0 COMMENT '消耗积分', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at TIMESTAMP NULL COMMENT '完成时间', INDEX idx_username (username), INDEX idx_status (status), INDEX idx_created_at (created_at), INDEX idx_task_id (task_id), INDEX idx_real_task_id (real_task_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文生视频任务表'; -- 图生视频任务表 CREATE TABLE IF NOT EXISTS image_to_video_tasks ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '任务ID', task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务唯一标识', username VARCHAR(100) NOT NULL COMMENT '用户名', first_frame_url VARCHAR(500) NOT NULL COMMENT '首帧图片URL', last_frame_url VARCHAR(500) COMMENT '末帧图片URL', prompt TEXT COMMENT '文本描述/提示词', aspect_ratio VARCHAR(10) NOT NULL DEFAULT '16:9' COMMENT '宽高比:16:9, 4:3, 1:1, 3:4, 9:16', duration INT NOT NULL DEFAULT 5 COMMENT '视频时长(秒):5, 10, 15, 30', hd_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否高清模式', status VARCHAR(20) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态:PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED', progress INT NOT NULL DEFAULT 0 COMMENT '进度(0-100)', result_url TEXT COMMENT '结果视频URL', real_task_id VARCHAR(100) COMMENT '外部API返回的真实任务ID', error_message TEXT COMMENT '错误信息', cost_points INT NOT NULL DEFAULT 0 COMMENT '消耗积分', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at TIMESTAMP NULL COMMENT '完成时间', INDEX idx_username (username), INDEX idx_status (status), INDEX idx_created_at (created_at), INDEX idx_task_id (task_id), INDEX idx_real_task_id (real_task_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='图生视频任务表'; -- ============================================ -- 任务队列相关表 -- ============================================ -- 任务队列表 CREATE TABLE IF NOT EXISTS task_queue ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL COMMENT '用户名', task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID', task_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO', 'STORYBOARD_VIDEO') NOT NULL COMMENT '任务类型', status ENUM('PENDING', 'PROCESSING', 'COMPLETED', 'FAILED', 'CANCELLED', 'TIMEOUT') NOT NULL DEFAULT 'PENDING' COMMENT '队列状态', priority INT NOT NULL DEFAULT 0 COMMENT '优先级,数字越小优先级越高', real_task_id VARCHAR(100) COMMENT '外部API返回的真实任务ID', last_check_time DATETIME COMMENT '最后一次检查时间', check_count INT NOT NULL DEFAULT 0 COMMENT '检查次数', max_check_count INT NOT NULL DEFAULT 30 COMMENT '最大检查次数(30次 * 2分钟 = 60分钟)', error_message TEXT COMMENT '错误信息', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at DATETIME COMMENT '完成时间', INDEX idx_username_status (username, status), INDEX idx_status_priority (status, priority), INDEX idx_last_check_time (last_check_time), INDEX idx_created_at (created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务队列表'; -- 积分冻结记录表 CREATE TABLE IF NOT EXISTS points_freeze_records ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL COMMENT '用户名', task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID', task_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO', 'STORYBOARD_VIDEO') NOT NULL COMMENT '任务类型', freeze_points INT NOT NULL COMMENT '冻结的积分数量', status ENUM('FROZEN', 'DEDUCTED', 'RETURNED', 'EXPIRED') NOT NULL DEFAULT 'FROZEN' COMMENT '冻结状态', freeze_reason VARCHAR(200) COMMENT '冻结原因', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at DATETIME COMMENT '完成时间', INDEX idx_username_status (username, status), INDEX idx_task_id (task_id), INDEX idx_created_at (created_at), INDEX idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='积分冻结记录表'; -- 用户作品表 CREATE TABLE IF NOT EXISTS user_works ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL COMMENT '用户名', task_id VARCHAR(50) NOT NULL UNIQUE COMMENT '任务ID', work_type ENUM('TEXT_TO_VIDEO', 'IMAGE_TO_VIDEO', 'STORYBOARD_VIDEO') NOT NULL COMMENT '作品类型', title VARCHAR(200) COMMENT '作品标题', description TEXT COMMENT '作品描述', prompt TEXT COMMENT '生成提示词', result_url VARCHAR(500) COMMENT '结果视频URL', thumbnail_url VARCHAR(500) COMMENT '缩略图URL', duration VARCHAR(10) COMMENT '视频时长', aspect_ratio VARCHAR(10) COMMENT '宽高比', quality VARCHAR(20) COMMENT '画质', file_size VARCHAR(20) COMMENT '文件大小', points_cost INT NOT NULL DEFAULT 0 COMMENT '消耗积分', status ENUM('PROCESSING', 'COMPLETED', 'FAILED', 'DELETED') NOT NULL DEFAULT 'PROCESSING' COMMENT '作品状态', is_public BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否公开', view_count INT NOT NULL DEFAULT 0 COMMENT '浏览次数', like_count INT NOT NULL DEFAULT 0 COMMENT '点赞次数', download_count INT NOT NULL DEFAULT 0 COMMENT '下载次数', tags VARCHAR(500) COMMENT '标签', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at DATETIME COMMENT '完成时间', INDEX idx_username_status (username, status), INDEX idx_task_id (task_id), INDEX idx_work_type (work_type), INDEX idx_is_public_status (is_public, status), INDEX idx_created_at (created_at), INDEX idx_view_count (view_count), INDEX idx_like_count (like_count), INDEX idx_tags (tags), INDEX idx_prompt (prompt(100)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户作品表'; -- 任务状态表 CREATE TABLE IF NOT EXISTS task_status ( id BIGINT AUTO_INCREMENT PRIMARY KEY, task_id VARCHAR(255) NOT NULL COMMENT '任务ID', username VARCHAR(255) NOT NULL COMMENT '用户名', task_type VARCHAR(50) NOT NULL COMMENT '任务类型', status VARCHAR(50) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态', progress INT DEFAULT 0 COMMENT '进度百分比', result_url TEXT COMMENT '结果URL', error_message TEXT COMMENT '错误信息', external_task_id VARCHAR(255) COMMENT '外部任务ID', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at TIMESTAMP NULL COMMENT '完成时间', last_polled_at TIMESTAMP NULL COMMENT '最后轮询时间', poll_count INT DEFAULT 0 COMMENT '轮询次数', max_polls INT DEFAULT 60 COMMENT '最大轮询次数(2小时)', INDEX idx_task_id (task_id), INDEX idx_username (username), INDEX idx_status (status), INDEX idx_created_at (created_at), INDEX idx_last_polled (last_polled_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务状态表'; -- 成功任务归档表 CREATE TABLE IF NOT EXISTS completed_tasks_archive ( id BIGINT AUTO_INCREMENT PRIMARY KEY, task_id VARCHAR(255) NOT NULL, username VARCHAR(255) NOT NULL, task_type VARCHAR(50) NOT NULL, prompt TEXT, aspect_ratio VARCHAR(20), duration INT, hd_mode BOOLEAN DEFAULT FALSE, result_url TEXT, real_task_id VARCHAR(255), progress INT DEFAULT 100, created_at TIMESTAMP NOT NULL, completed_at TIMESTAMP NOT NULL, archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, points_cost INT DEFAULT 0, INDEX idx_username (username), INDEX idx_task_type (task_type), INDEX idx_created_at (created_at), INDEX idx_completed_at (completed_at), INDEX idx_archived_at (archived_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成功任务归档表'; -- 失败任务清理日志表 CREATE TABLE IF NOT EXISTS failed_tasks_cleanup_log ( id BIGINT AUTO_INCREMENT PRIMARY KEY, task_id VARCHAR(255) NOT NULL, username VARCHAR(255) NOT NULL, task_type VARCHAR(50) NOT NULL, error_message TEXT, created_at TIMESTAMP NOT NULL, failed_at TIMESTAMP NOT NULL, cleaned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_username (username), INDEX idx_task_type (task_type), INDEX idx_cleaned_at (cleaned_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='失败任务清理日志表'; -- 分镜视频任务表 CREATE TABLE IF NOT EXISTS storyboard_video_tasks ( id BIGINT AUTO_INCREMENT PRIMARY KEY, task_id VARCHAR(50) NOT NULL UNIQUE, username VARCHAR(100) NOT NULL, prompt TEXT COMMENT '文本描述/提示词', image_url TEXT COMMENT '上传的参考图片URL(可选)', aspect_ratio VARCHAR(10) NOT NULL COMMENT '宽高比:16:9, 4:3, 1:1, 3:4, 9:16', hd_mode BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否高清模式', status VARCHAR(20) NOT NULL COMMENT '任务状态:PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED', progress INT NOT NULL DEFAULT 0 COMMENT '进度(0-100)', result_url LONGTEXT COMMENT '分镜图URL(Base64编码的图片,可能非常大)- 网格图', storyboard_images LONGTEXT COMMENT '单独的分镜图片(JSON数组,每张图片为Base64格式,带data URI前缀)', real_task_id VARCHAR(255) COMMENT '外部API返回的真实任务ID', video_task_ids TEXT COMMENT '多个视频任务ID(JSON数组,每张图片对应一个视频任务)', video_urls LONGTEXT COMMENT '多个视频URL(JSON数组,用于拼接)', error_message TEXT COMMENT '错误信息', cost_points INT NOT NULL DEFAULT 0 COMMENT '消耗积分', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', completed_at TIMESTAMP NULL COMMENT '完成时间', INDEX idx_username (username), INDEX idx_status (status), INDEX idx_task_id (task_id), INDEX idx_created_at (created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分镜视频任务表'; -- ============================================ -- 初始化完成 -- ============================================ -- 所有表结构已创建完成 -- 注意:此文件仅创建表结构,不包含初始数据 -- 如需初始化数据,请通过系统管理界面或API进行 -- -- 宝塔面板使用说明: -- 1. 登录宝塔面板,进入"数据库" -> "phpMyAdmin" -- 2. 选择或创建数据库(建议数据库名:aigc_platform) -- 3. 点击"导入" -> 选择此SQL文件 -> 执行 -- 4. 或者使用命令行:mysql -u用户名 -p数据库名 < init_database.sql -- -- 数据库配置建议: -- - 数据库名:aigc_platform -- - 字符集:utf8mb4 -- - 排序规则:utf8mb4_unicode_ci -- ============================================ -- 管理员权限设置 -- ============================================ -- 将 984523799@qq.com 设置为管理员 -- 如果该用户存在,则更新其角色为管理员 UPDATE users SET role = 'ROLE_ADMIN', updated_at = CURRENT_TIMESTAMP WHERE email = '984523799@qq.com';