CREATE DATABASE IF NOT EXISTS wy_media DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; USE wy_media; -- ------------------------------ -- 1. 媒体文件信息表(全局媒体文件存储) -- ------------------------------ CREATE TABLE `media_file` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名', `file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名(系统生成的唯一文件名)', `file_type` VARCHAR(20) NOT NULL COMMENT '文件类型:image、audio、video', `file_size` BIGINT COMMENT '文件大小(字节)', `bucket_name` VARCHAR(100) NOT NULL COMMENT '存储桶名称', `file_url` VARCHAR(500) NOT NULL COMMENT '文件访问URL', `storage_type` VARCHAR(20) DEFAULT 'minio' COMMENT '存储类型(oss、local、minio等)', `status` TINYINT DEFAULT 0 COMMENT '文件状态:0-正常,1-已删除(逻辑删除)', `md5` VARCHAR(32) COMMENT '文件MD5值', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX `idx_file_type` (`file_type`), INDEX `idx_bucket_name` (`bucket_name`), INDEX `idx_create_time` (`create_time`), INDEX `idx_md5` (`md5`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体文件信息表'; -- ------------------------------ -- 2. 艺人媒体文件历史记录表(关联artist服务的artist.id、本服务的media_file表) -- ------------------------------ CREATE TABLE `artist_media_history` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id', `media_type` VARCHAR(20) NOT NULL COMMENT '媒体类型: avatar、header_image等', `media_file_id` BIGINT NOT NULL COMMENT '关联本服务的media_file.id', `is_current` TINYINT DEFAULT 1 COMMENT '是否为当前使用版本:0-否,1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', FOREIGN KEY (`media_file_id`) REFERENCES `media_file` (`id`) ON DELETE RESTRICT, UNIQUE KEY `uk_artist_media_current` (`artist_id`, `media_type`, `is_current`), INDEX `idx_artist_id` (`artist_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人媒体文件历史记录表'; -- ------------------------------ -- 3. 分块上传信息表 -- ------------------------------ CREATE TABLE `chunk_info` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `file_md5` VARCHAR(32) NOT NULL COMMENT '文件MD5', `file_name` VARCHAR(255) NOT NULL COMMENT '原始文件名', `chunk_index` INT NOT NULL COMMENT '分块索引', `total_chunks` INT NOT NULL COMMENT '总分块数', `chunk_url` VARCHAR(500) COMMENT '分块文件URL', `status` TINYINT DEFAULT 0 COMMENT '状态:0-待上传,1-已上传', `uploaded_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', INDEX `idx_file_md5` (`file_md5`), INDEX `idx_chunk_index` (`chunk_index`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分块上传信息表'; -- ------------------------------ -- 4. 媒体处理任务表 -- ------------------------------ CREATE TABLE `media_process` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `file_id` VARCHAR(32) NOT NULL COMMENT '文件ID', `file_name` VARCHAR(255) NOT NULL COMMENT '文件名', `bucket` VARCHAR(100) NOT NULL COMMENT '存储桶', `file_path` VARCHAR(500) NOT NULL COMMENT '文件路径', `status` VARCHAR(10) DEFAULT '0' COMMENT '任务状态: 0-待处理, 1-处理中, 2-处理成功, 3-处理失败', `fail_count` INT DEFAULT 0 COMMENT '失败次数', `errormsg` VARCHAR(1000) COMMENT '错误信息', `url` VARCHAR(500) COMMENT '处理后文件URL', `finish_date` DATETIME COMMENT '完成时间', `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `process_definition_id` VARCHAR(50) COMMENT '流程定义ID', `tag` VARCHAR(50) COMMENT '标签', INDEX `idx_status` (`status`), INDEX `idx_file_id` (`file_id`), INDEX `idx_create_date` (`create_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体处理任务表'; -- ------------------------------ -- 5. 媒体处理历史表 -- ------------------------------ CREATE TABLE `media_process_history` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `process_id` BIGINT COMMENT '对应的任务ID', `file_id` VARCHAR(32) NOT NULL COMMENT '文件ID', `file_name` VARCHAR(255) NOT NULL COMMENT '文件名', `bucket` VARCHAR(100) NOT NULL COMMENT '存储桶', `file_path` VARCHAR(500) NOT NULL COMMENT '文件路径', `status` VARCHAR(10) COMMENT '处理状态', `errormsg` VARCHAR(1000) COMMENT '错误信息', `url` VARCHAR(500) COMMENT '处理后URL', `finish_date` DATETIME COMMENT '完成时间', `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', INDEX `idx_process_id` (`process_id`), INDEX `idx_file_id` (`file_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体处理历史表'; -- ------------------------------ -- 6. 视频文件表(用于存储视频相关信息) -- ------------------------------ CREATE TABLE `media_video` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名', `file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名', `file_url` VARCHAR(500) COMMENT '视频文件URL', `preview_gif_url` VARCHAR(500) COMMENT '预览GIF URL', `file_size` BIGINT COMMENT '文件大小', `duration` VARCHAR(20) COMMENT '视频时长', `singer` VARCHAR(100) COMMENT '上传歌手', `bucket_name` VARCHAR(50) COMMENT '存储桶名', `status` TINYINT DEFAULT 0 COMMENT '状态:0-待处理,1-处理中,2-已完成,3-处理失败', `process_progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '处理进度(%)', `retry_count` TINYINT DEFAULT 0 COMMENT '重试次数', `created_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `processed_time` TIMESTAMP NULL COMMENT '处理完成时间', INDEX `idx_status` (`status`), INDEX `idx_created_time` (`created_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频文件表'; -- ------------------------------ -- 7. 视频处理队列表 -- ------------------------------ CREATE TABLE `video_process_queue` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `video_id` BIGINT NOT NULL COMMENT '视频ID', `priority` TINYINT DEFAULT 1 COMMENT '优先级:1-普通,2-高', `status` TINYINT DEFAULT 0 COMMENT '0-待处理,1-已调度,2-已完成', `scheduled_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '调度时间', INDEX `idx_status_priority` (`status`, `priority`, `scheduled_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频处理队列表'; -- ------------------------------ -- 8. 系统配置表 -- ------------------------------ CREATE TABLE `sys_config` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `config_key` VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键', `config_value` TEXT COMMENT '配置值', `description` VARCHAR(255) COMMENT '配置描述', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX `idx_config_key` (`config_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表'; -- ------------------------------ -- 9. 初始化系统配置 -- ------------------------------ INSERT INTO `sys_config` (`config_key`, `config_value`, `description`) VALUES ('ffmpeg.path', '/usr/local/bin/ffmpeg', 'FFmpeg可执行文件路径'), ('video.max_size', '104857600', '视频最大上传大小(字节),100MB'), ('chunk.size', '2097152', '分块大小(字节),2MB'), ('max.concurrent.tasks', '5', '最大并发处理任务数'), ('max.retry.count', '3', '最大重试次数'), ('temp.dir', '/tmp/media_temp', '临时文件目录');