media.sql 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. CREATE DATABASE IF NOT EXISTS wy_media DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. USE wy_media;
  3. -- ------------------------------
  4. -- 1. 媒体文件信息表(全局媒体文件存储)
  5. -- ------------------------------
  6. CREATE TABLE `media_file` (
  7. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  8. `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
  9. `file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名(系统生成的唯一文件名)',
  10. `file_type` VARCHAR(20) NOT NULL COMMENT '文件类型:image、audio、video',
  11. `file_size` BIGINT COMMENT '文件大小(字节)',
  12. `bucket_name` VARCHAR(100) NOT NULL COMMENT '存储桶名称',
  13. `file_url` VARCHAR(500) NOT NULL COMMENT '文件访问URL',
  14. `storage_type` VARCHAR(20) DEFAULT 'minio' COMMENT '存储类型(oss、local、minio等)',
  15. `status` TINYINT DEFAULT 0 COMMENT '文件状态:0-正常,1-已删除(逻辑删除)',
  16. `md5` VARCHAR(32) COMMENT '文件MD5值',
  17. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  18. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  19. INDEX `idx_file_type` (`file_type`),
  20. INDEX `idx_bucket_name` (`bucket_name`),
  21. INDEX `idx_create_time` (`create_time`),
  22. INDEX `idx_md5` (`md5`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体文件信息表';
  24. -- ------------------------------
  25. -- 2. 艺人媒体文件历史记录表(关联artist服务的artist.id、本服务的media_file表)
  26. -- ------------------------------
  27. CREATE TABLE `artist_media_history` (
  28. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  29. `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
  30. `media_type` VARCHAR(20) NOT NULL COMMENT '媒体类型: avatar、header_image等',
  31. `media_file_id` BIGINT NOT NULL COMMENT '关联本服务的media_file.id',
  32. `is_current` TINYINT DEFAULT 1 COMMENT '是否为当前使用版本:0-否,1-是',
  33. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  34. FOREIGN KEY (`media_file_id`) REFERENCES `media_file` (`id`) ON DELETE RESTRICT,
  35. UNIQUE KEY `uk_artist_media_current` (`artist_id`, `media_type`, `is_current`),
  36. INDEX `idx_artist_id` (`artist_id`)
  37. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人媒体文件历史记录表';
  38. -- ------------------------------
  39. -- 3. 分块上传信息表
  40. -- ------------------------------
  41. CREATE TABLE `chunk_info` (
  42. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  43. `file_md5` VARCHAR(32) NOT NULL COMMENT '文件MD5',
  44. `file_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
  45. `chunk_index` INT NOT NULL COMMENT '分块索引',
  46. `total_chunks` INT NOT NULL COMMENT '总分块数',
  47. `chunk_url` VARCHAR(500) COMMENT '分块文件URL',
  48. `status` TINYINT DEFAULT 0 COMMENT '状态:0-待上传,1-已上传',
  49. `uploaded_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
  50. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  51. INDEX `idx_file_md5` (`file_md5`),
  52. INDEX `idx_chunk_index` (`chunk_index`)
  53. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分块上传信息表';
  54. -- ------------------------------
  55. -- 4. 媒体处理任务表
  56. -- ------------------------------
  57. CREATE TABLE `media_process` (
  58. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  59. `file_id` VARCHAR(32) NOT NULL COMMENT '文件ID',
  60. `file_name` VARCHAR(255) NOT NULL COMMENT '文件名',
  61. `bucket` VARCHAR(100) NOT NULL COMMENT '存储桶',
  62. `file_path` VARCHAR(500) NOT NULL COMMENT '文件路径',
  63. `status` VARCHAR(10) DEFAULT '0' COMMENT '任务状态: 0-待处理, 1-处理中, 2-处理成功, 3-处理失败',
  64. `fail_count` INT DEFAULT 0 COMMENT '失败次数',
  65. `errormsg` VARCHAR(1000) COMMENT '错误信息',
  66. `url` VARCHAR(500) COMMENT '处理后文件URL',
  67. `finish_date` DATETIME COMMENT '完成时间',
  68. `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  69. `process_definition_id` VARCHAR(50) COMMENT '流程定义ID',
  70. `tag` VARCHAR(50) COMMENT '标签',
  71. INDEX `idx_status` (`status`),
  72. INDEX `idx_file_id` (`file_id`),
  73. INDEX `idx_create_date` (`create_date`)
  74. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体处理任务表';
  75. -- ------------------------------
  76. -- 5. 媒体处理历史表
  77. -- ------------------------------
  78. CREATE TABLE `media_process_history` (
  79. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  80. `process_id` BIGINT COMMENT '对应的任务ID',
  81. `file_id` VARCHAR(32) NOT NULL COMMENT '文件ID',
  82. `file_name` VARCHAR(255) NOT NULL COMMENT '文件名',
  83. `bucket` VARCHAR(100) NOT NULL COMMENT '存储桶',
  84. `file_path` VARCHAR(500) NOT NULL COMMENT '文件路径',
  85. `status` VARCHAR(10) COMMENT '处理状态',
  86. `errormsg` VARCHAR(1000) COMMENT '错误信息',
  87. `url` VARCHAR(500) COMMENT '处理后URL',
  88. `finish_date` DATETIME COMMENT '完成时间',
  89. `create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  90. INDEX `idx_process_id` (`process_id`),
  91. INDEX `idx_file_id` (`file_id`)
  92. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体处理历史表';
  93. -- ------------------------------
  94. -- 6. 视频文件表(用于存储视频相关信息)
  95. -- ------------------------------
  96. CREATE TABLE `media_video` (
  97. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  98. `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
  99. `file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名',
  100. `file_url` VARCHAR(500) COMMENT '视频文件URL',
  101. `preview_gif_url` VARCHAR(500) COMMENT '预览GIF URL',
  102. `file_size` BIGINT COMMENT '文件大小',
  103. `duration` VARCHAR(20) COMMENT '视频时长',
  104. `singer` VARCHAR(100) COMMENT '上传歌手',
  105. `bucket_name` VARCHAR(50) COMMENT '存储桶名',
  106. `status` TINYINT DEFAULT 0 COMMENT '状态:0-待处理,1-处理中,2-已完成,3-处理失败',
  107. `process_progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '处理进度(%)',
  108. `retry_count` TINYINT DEFAULT 0 COMMENT '重试次数',
  109. `created_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  110. `updated_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  111. `processed_time` TIMESTAMP NULL COMMENT '处理完成时间',
  112. INDEX `idx_status` (`status`),
  113. INDEX `idx_created_time` (`created_time`)
  114. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频文件表';
  115. -- ------------------------------
  116. -- 7. 视频处理队列表
  117. -- ------------------------------
  118. CREATE TABLE `video_process_queue` (
  119. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  120. `video_id` BIGINT NOT NULL COMMENT '视频ID',
  121. `priority` TINYINT DEFAULT 1 COMMENT '优先级:1-普通,2-高',
  122. `status` TINYINT DEFAULT 0 COMMENT '0-待处理,1-已调度,2-已完成',
  123. `scheduled_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '调度时间',
  124. INDEX `idx_status_priority` (`status`, `priority`, `scheduled_time`)
  125. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频处理队列表';
  126. -- ------------------------------
  127. -- 8. 系统配置表
  128. -- ------------------------------
  129. CREATE TABLE `sys_config` (
  130. `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
  131. `config_key` VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
  132. `config_value` TEXT COMMENT '配置值',
  133. `description` VARCHAR(255) COMMENT '配置描述',
  134. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  135. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  136. INDEX `idx_config_key` (`config_key`)
  137. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
  138. -- ------------------------------
  139. -- 9. 初始化系统配置
  140. -- ------------------------------
  141. INSERT INTO `sys_config` (`config_key`, `config_value`, `description`) VALUES
  142. ('ffmpeg.path', '/usr/local/bin/ffmpeg', 'FFmpeg可执行文件路径'),
  143. ('video.max_size', '104857600', '视频最大上传大小(字节),100MB'),
  144. ('chunk.size', '2097152', '分块大小(字节),2MB'),
  145. ('max.concurrent.tasks', '5', '最大并发处理任务数'),
  146. ('max.retry.count', '3', '最大重试次数'),
  147. ('temp.dir', '/tmp/media_temp', '临时文件目录');