refactor(project): Reorganize frontend and backend directories

This commit is contained in:
2026-03-18 10:45:15 +08:00
parent cc9eaf4cdf
commit 92a139e470
513 changed files with 28251 additions and 287 deletions
+778
View File
@@ -0,0 +1,778 @@
-- 1. 创建数据库
CREATE DATABASE IF NOT EXISTS `video_auth` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `video_user` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `video_content` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `video_comment` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `video_recommend` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `video_admin` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建Nacos配置数据库
CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 2. 认证数据库(video_auth)
USE `video_auth`;
-- 用户认证表
CREATE TABLE IF NOT EXISTS `auth_user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(64) NOT NULL COMMENT '用户名',
`password` varchar(256) NOT NULL COMMENT '密码(加密)',
`salt` varchar(64) NOT NULL COMMENT '加密盐值',
`email` varchar(128) DEFAULT NULL COMMENT '邮箱',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0:禁用,1:正常)',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(64) DEFAULT NULL COMMENT '最后登录IP',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`),
UNIQUE KEY `idx_email` (`email`),
UNIQUE KEY `idx_phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户认证表';
-- 用户角色表
CREATE TABLE IF NOT EXISTS `auth_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`name` varchar(64) NOT NULL COMMENT '角色名称',
`code` varchar(64) NOT NULL COMMENT '角色编码(USER_开头)',
`description` varchar(256) DEFAULT NULL COMMENT '角色描述',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色表';
-- 用户权限表
CREATE TABLE IF NOT EXISTS `auth_permission` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '权限ID',
`name` varchar(64) NOT NULL COMMENT '权限名称',
`code` varchar(64) NOT NULL COMMENT '权限编码',
`description` varchar(256) DEFAULT NULL COMMENT '权限描述',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户权限表';
-- 用户角色关联表
CREATE TABLE IF NOT EXISTS `auth_user_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`role_id` bigint NOT NULL COMMENT '角色ID',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_user_role` (`user_id`,`role_id`),
CONSTRAINT `fk_aur_user` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_aur_role` FOREIGN KEY (`role_id`) REFERENCES `auth_role` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';
-- 角色权限关联表
CREATE TABLE IF NOT EXISTS `auth_role_permission` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_id` bigint NOT NULL COMMENT '角色ID',
`permission_id` bigint NOT NULL COMMENT '权限ID',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_role_permission` (`role_id`,`permission_id`),
CONSTRAINT `fk_arp_role` FOREIGN KEY (`role_id`) REFERENCES `auth_role` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_arp_permission` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表';
-- OAuth2客户端表
CREATE TABLE IF NOT EXISTS `auth_oauth_client` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`client_id` varchar(64) NOT NULL COMMENT '客户端ID',
`client_secret` varchar(256) NOT NULL COMMENT '客户端密钥',
`client_name` varchar(128) NOT NULL COMMENT '客户端名称',
`client_uri` varchar(256) DEFAULT NULL COMMENT '客户端主页',
`redirect_uri` varchar(256) DEFAULT NULL COMMENT '重定向URI',
`scope` varchar(128) NOT NULL COMMENT '授权范围',
`grant_types` varchar(128) NOT NULL COMMENT '授权类型',
`access_token_validity` int NOT NULL DEFAULT '3600' COMMENT '访问令牌有效期(秒)',
`refresh_token_validity` int NOT NULL DEFAULT '86400' COMMENT '刷新令牌有效期(秒)',
`additional_information` text COMMENT '附加信息',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0:禁用,1:正常)',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_client_id` (`client_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OAuth2客户端表';
-- 初始化认证数据
INSERT IGNORE INTO `auth_role` (`id`, `name`, `code`, `description`) VALUES
(1, '管理员', 'USER_ADMIN', '系统管理员'),
(2, '普通用户', 'USER_NORMAL', '普通用户'),
(3, 'VIP用户', 'USER_VIP', 'VIP用户'),
(4, '内容创作者', 'USER_CREATOR', '内容创作专用角色');
INSERT IGNORE INTO `auth_permission` (`id`, `name`, `code`, `description`) VALUES
(1, '视频上传', 'video:upload', '视频上传权限'),
(2, '视频管理', 'video:manage', '视频管理权限'),
(3, '评论管理', 'comment:manage', '评论管理权限'),
(4, '个人资料管理', 'profile:manage', '个人资料管理权限');
INSERT IGNORE INTO `auth_role_permission` (`role_id`, `permission_id`) VALUES
(1, 1), (1, 2), (1, 3), (1, 4),
(3, 1), (3, 4),
(4, 1), (4, 3), (4, 4);
INSERT IGNORE INTO `auth_oauth_client` (`client_id`, `client_secret`, `client_name`, `redirect_uri`, `scope`, `grant_types`, `access_token_validity`, `refresh_token_validity`) VALUES
('video-web', '$2a$10$oRZ7x/.dW.6Q9z0QY1JZ5e9ZQ9z0QY1JZ5e9ZQ9z0QY1JZ5e9ZQ', '视频网站前端', 'http://localhost:8080', 'all', 'password,refresh_token', 3600, 86400),
('video-admin', '$2a$10$oRZ7x/.dW.6Q9z0QY1JZ5e9ZQ9z0QY1JZ5e9ZQ9z0QY1JZ5e9ZQ', '视频管理后台', 'http://localhost:8081', 'all', 'authorization_code,refresh_token', 3600, 86400);
-- 3. 用户数据库(video_user)
USE `video_user`;
-- 用户信息表
CREATE TABLE IF NOT EXISTS `user_info` (
`id` bigint NOT NULL COMMENT '用户ID',
`nickname` varchar(64) NOT NULL COMMENT '昵称',
`avatar` varchar(256) DEFAULT NULL COMMENT '头像URL',
`gender` tinyint DEFAULT '0' COMMENT '性别(0:未知,1:男,2:女)',
`birthday` date DEFAULT NULL COMMENT '生日',
`signature` varchar(256) DEFAULT NULL COMMENT '个性签名',
`region` varchar(128) DEFAULT NULL COMMENT '地区',
`follower_count` int NOT NULL DEFAULT '0' COMMENT '粉丝数',
`following_count` int NOT NULL DEFAULT '0' COMMENT '关注数',
`video_count` int NOT NULL DEFAULT '0' COMMENT '视频数',
`like_count` int NOT NULL DEFAULT '0' COMMENT '获赞数',
`coin_count` int NOT NULL DEFAULT '0' COMMENT '硬币数',
`favorite_count` int NOT NULL DEFAULT '0' COMMENT '收藏数',
`view_count` bigint NOT NULL DEFAULT '0' COMMENT '播放数',
`level` tinyint NOT NULL DEFAULT '1' COMMENT '等级',
`vip_level` tinyint NOT NULL DEFAULT '0' COMMENT 'VIP等级',
`vip_expire_time` datetime DEFAULT NULL COMMENT 'VIP到期时间',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
CONSTRAINT `fk_ui_user` FOREIGN KEY (`id`) REFERENCES `video_auth`.`auth_user` (`id`) ON DELETE CASCADE,
KEY `idx_nickname` (`nickname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户信息表';
-- 用户统计表(按天)
CREATE TABLE IF NOT EXISTS `user_stat_daily` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`stat_date` date NOT NULL COMMENT '统计日期',
`follower_increment` int NOT NULL DEFAULT '0' COMMENT '新增粉丝数',
`following_increment` int NOT NULL DEFAULT '0' COMMENT '新增关注数',
`video_increment` int NOT NULL DEFAULT '0' COMMENT '新增视频数',
`like_increment` int NOT NULL DEFAULT '0' COMMENT '新增获赞数',
`coin_increment` int NOT NULL DEFAULT '0' COMMENT '新增硬币数',
`favorite_increment` int NOT NULL DEFAULT '0' COMMENT '新增收藏数',
`view_increment` bigint NOT NULL DEFAULT '0' COMMENT '新增播放数',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_user_date` (`user_id`,`stat_date`),
CONSTRAINT `fk_usd_user` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户每日统计表';
-- 用户关注表
CREATE TABLE IF NOT EXISTS `user_follow` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`follow_id` bigint NOT NULL COMMENT '关注用户ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_user_follow` (`user_id`,`follow_id`),
KEY `idx_follow` (`follow_id`),
CONSTRAINT `fk_uf_user` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_uf_follow` FOREIGN KEY (`follow_id`) REFERENCES `user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户关注表';
-- 用户私信表
CREATE TABLE IF NOT EXISTS `user_message` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`sender_id` bigint NOT NULL COMMENT '发送者ID',
`receiver_id` bigint NOT NULL COMMENT '接收者ID',
`content` text NOT NULL COMMENT '消息内容',
`is_read` tinyint NOT NULL DEFAULT '0' COMMENT '是否已读(0:未读,1:已读)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_sender` (`sender_id`),
KEY `idx_receiver` (`receiver_id`),
KEY `idx_receiver_read` (`receiver_id`,`is_read`),
CONSTRAINT `fk_um_sender` FOREIGN KEY (`sender_id`) REFERENCES `user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_um_receiver` FOREIGN KEY (`receiver_id`) REFERENCES `user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户私信表';
-- 用户通知表
CREATE TABLE IF NOT EXISTS `user_notification` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`type` tinyint NOT NULL COMMENT '通知类型(1:点赞,2:评论,3:关注,4:系统通知)',
`content` text NOT NULL COMMENT '通知内容',
`related_id` bigint DEFAULT NULL COMMENT '相关ID',
`is_read` tinyint NOT NULL DEFAULT '0' COMMENT '是否已读(0:未读,1:已读)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_user` (`user_id`),
KEY `idx_user_read` (`user_id`,`is_read`),
CONSTRAINT `fk_un_user` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户通知表';
-- 用户设置表
CREATE TABLE IF NOT EXISTS `user_setting` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`privacy_level` tinyint NOT NULL DEFAULT '1' COMMENT '隐私等级(1:公开,2:仅关注,3:私密)',
`comment_notify` tinyint NOT NULL DEFAULT '1' COMMENT '评论通知(0:关闭,1:开启)',
`like_notify` tinyint NOT NULL DEFAULT '1' COMMENT '点赞通知(0:关闭,1:开启)',
`follow_notify` tinyint NOT NULL DEFAULT '1' COMMENT '关注通知(0:关闭,1:开启)',
`system_notify` tinyint NOT NULL DEFAULT '1' COMMENT '系统通知(0:关闭,1:开启)',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_user` (`user_id`),
CONSTRAINT `fk_us_user` FOREIGN KEY (`user_id`) REFERENCES `user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户设置表';
-- 4. 内容数据库(video_content)
USE `video_content`;
-- 视频分类表
CREATE TABLE IF NOT EXISTS `content_category` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类ID',
`name` varchar(64) NOT NULL COMMENT '分类名称',
`code` varchar(64) NOT NULL COMMENT '分类编码',
`parent_id` bigint DEFAULT '0' COMMENT '父分类ID',
`level` tinyint NOT NULL DEFAULT '1' COMMENT '分类层级',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`icon` varchar(256) DEFAULT NULL COMMENT '图标',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0:禁用,1:正常)',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_code` (`code`),
KEY `idx_parent` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频分类表';
-- 视频标签表
CREATE TABLE IF NOT EXISTS `content_tag` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '标签ID',
`name` varchar(64) NOT NULL COMMENT '标签名称',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频标签表';
-- 视频信息表
CREATE TABLE IF NOT EXISTS `content_video` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`title` varchar(256) NOT NULL COMMENT '视频标题',
`description` text COMMENT '视频描述',
`cover_url` varchar(256) NOT NULL COMMENT '封面URL',
`video_url` varchar(256) NOT NULL COMMENT '视频URL',
`duration` int NOT NULL COMMENT '视频时长(秒)',
`width` int NOT NULL COMMENT '视频宽度',
`height` int NOT NULL COMMENT '视频高度',
`format` varchar(32) NOT NULL COMMENT '视频格式',
`size` bigint NOT NULL COMMENT '视频大小(字节)',
`category_id` bigint NOT NULL COMMENT '分类ID',
`status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0:审核中,1:已发布,2:已下架,3:审核不通过)',
`like_count` int NOT NULL DEFAULT '0' COMMENT '点赞数',
`coin_count` int NOT NULL DEFAULT '0' COMMENT '投币数',
`favorite_count` int NOT NULL DEFAULT '0' COMMENT '收藏数',
`comment_count` int NOT NULL DEFAULT '0' COMMENT '评论数',
`view_count` bigint NOT NULL DEFAULT '0' COMMENT '播放数',
`share_count` int NOT NULL DEFAULT '0' COMMENT '分享数',
`danmaku_count` int NOT NULL DEFAULT '0' COMMENT '弹幕数',
`is_recommend` tinyint NOT NULL DEFAULT '0' COMMENT '是否推荐(0:否,1:是)',
`is_top` tinyint NOT NULL DEFAULT '0' COMMENT '是否置顶(0:否,1:是)',
`publish_time` datetime DEFAULT NULL COMMENT '发布时间',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_user_status` (`user_id`, `status`),
KEY `idx_category_status` (`category_id`, `status`),
KEY `idx_recommend` (`is_recommend`),
KEY `idx_top` (`is_top`),
FULLTEXT KEY `ft_title_desc` (`title`,`description`),
CONSTRAINT `fk_cv_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cv_category` FOREIGN KEY (`category_id`) REFERENCES `content_category` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频信息表';
-- 视频标签关联表
CREATE TABLE IF NOT EXISTS `content_video_tag` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`tag_id` bigint NOT NULL COMMENT '标签ID',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_tag` (`video_id`,`tag_id`),
KEY `idx_tag` (`tag_id`),
CONSTRAINT `fk_cvt_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cvt_tag` FOREIGN KEY (`tag_id`) REFERENCES `content_tag` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频标签关联表';
-- 视频统计表(按天)
CREATE TABLE IF NOT EXISTS `content_video_stat_daily` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`stat_date` date NOT NULL COMMENT '统计日期',
`like_increment` int NOT NULL DEFAULT '0' COMMENT '新增点赞数',
`coin_increment` int NOT NULL DEFAULT '0' COMMENT '新增投币数',
`favorite_increment` int NOT NULL DEFAULT '0' COMMENT '新增收藏数',
`comment_increment` int NOT NULL DEFAULT '0' COMMENT '新增评论数',
`view_increment` bigint NOT NULL DEFAULT '0' COMMENT '新增播放数',
`share_increment` int NOT NULL DEFAULT '0' COMMENT '新增分享数',
`danmaku_increment` int NOT NULL DEFAULT '0' COMMENT '新增弹幕数',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_date` (`video_id`,`stat_date`),
CONSTRAINT `fk_cvsd_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频每日统计表';
-- 视频审核记录表
CREATE TABLE IF NOT EXISTS `content_video_review` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`reviewer_id` bigint NOT NULL COMMENT '审核员ID',
`status` tinyint NOT NULL COMMENT '审核状态(1:通过,2:不通过)',
`reason` varchar(256) DEFAULT NULL COMMENT '审核原因',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_video` (`video_id`),
KEY `idx_reviewer` (`reviewer_id`),
CONSTRAINT `fk_cvr_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cvr_reviewer` FOREIGN KEY (`reviewer_id`) REFERENCES `video_auth`.`auth_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频审核记录表';
-- 视频点赞表
CREATE TABLE IF NOT EXISTS `content_video_like` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_user` (`video_id`,`user_id`),
KEY `idx_user` (`user_id`),
CONSTRAINT `fk_cvl_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cvl_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频点赞表';
-- 视频投币表
CREATE TABLE IF NOT EXISTS `content_video_coin` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`amount` int NOT NULL DEFAULT '1' COMMENT '投币数量',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_user` (`video_id`,`user_id`),
KEY `idx_user` (`user_id`),
CONSTRAINT `fk_cvc_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cvc_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频投币表';
-- 用户收藏夹表
CREATE TABLE IF NOT EXISTS `content_user_favorite` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '收藏夹ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`name` varchar(64) NOT NULL COMMENT '收藏夹名称',
`description` varchar(256) DEFAULT NULL COMMENT '收藏夹描述',
`is_private` tinyint NOT NULL DEFAULT '0' COMMENT '是否私有(0:公开,1:私有)',
`video_count` int NOT NULL DEFAULT '0' COMMENT '视频数量',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_user` (`user_id`),
CONSTRAINT `fk_cuf_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户收藏夹表';
-- 视频收藏表
CREATE TABLE IF NOT EXISTS `content_video_favorite` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`favorite_id` bigint NOT NULL COMMENT '收藏夹ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_user_favorite` (`video_id`,`user_id`,`favorite_id`),
KEY `idx_user_favorite` (`user_id`,`favorite_id`),
KEY `idx_video` (`video_id`),
CONSTRAINT `fk_cvf_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cvf_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cvf_favorite` FOREIGN KEY (`favorite_id`) REFERENCES `content_user_favorite` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频收藏表';
-- 弹幕表
CREATE TABLE IF NOT EXISTS `content_danmaku` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '弹幕ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`content` varchar(256) NOT NULL COMMENT '弹幕内容',
`color` varchar(16) NOT NULL COMMENT '弹幕颜色',
`font_size` tinyint NOT NULL COMMENT '字体大小',
`position` tinyint NOT NULL COMMENT '位置(0:滚动,1:顶部,2:底部)',
`time` float NOT NULL COMMENT '发送时间(秒)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_video_time` (`video_id`,`time`),
KEY `idx_user` (`user_id`),
CONSTRAINT `fk_cd_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cd_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='弹幕表';
-- 视频播放记录表
CREATE TABLE IF NOT EXISTS `content_video_play_record` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`play_time` int NOT NULL DEFAULT '0' COMMENT '播放时长(秒)',
`is_finished` tinyint NOT NULL DEFAULT '0' COMMENT '是否看完(0:未看完,1:已看完)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_user` (`video_id`,`user_id`),
KEY `idx_user` (`user_id`),
CONSTRAINT `fk_cvpr_video` FOREIGN KEY (`video_id`) REFERENCES `content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cvpr_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频播放记录表';
-- 初始化分类数据
INSERT IGNORE INTO `content_category` (`id`, `name`, `code`, `parent_id`, `level`, `sort`) VALUES
(1, '生活', 'life', 0, 1, 1),
(2, '科技', 'tech', 0, 1, 2),
(3, '游戏', 'game', 0, 1, 3),
(4, '美食', 'food', 0, 1, 4),
(5, '音乐', 'music', 0, 1, 5),
(6, '影视', 'movie', 0, 1, 6),
(7, '知识', 'knowledge', 0, 1, 7),
(8, '数码', 'digital', 2, 2, 1),
(9, '软件', 'software', 2, 2, 2),
(10, '硬件', 'hardware', 2, 2, 3),
(11, '手机游戏', 'mobile_game', 3, 2, 1),
(12, '电脑游戏', 'pc_game', 3, 2, 2),
(13, '主机游戏', 'console_game', 3, 2, 3);
-- 5. 评论数据库(video_comment)
USE `video_comment`;
-- 评论表
CREATE TABLE IF NOT EXISTS `comment` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评论ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`content` text NOT NULL COMMENT '评论内容',
`like_count` int NOT NULL DEFAULT '0' COMMENT '点赞数',
`reply_count` int NOT NULL DEFAULT '0' COMMENT '回复数',
`top_status` tinyint NOT NULL DEFAULT '0' COMMENT '置顶状态(0:普通,1:置顶)',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0:删除,1:正常)',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_video` (`video_id`),
KEY `idx_user` (`user_id`),
KEY `idx_video_top` (`video_id`,`top_status`),
FULLTEXT KEY `ft_content` (`content`),
CONSTRAINT `fk_c_video` FOREIGN KEY (`video_id`) REFERENCES `video_content`.`content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_c_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评论表';
-- 评论回复表
CREATE TABLE IF NOT EXISTS `comment_reply` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '回复ID',
`comment_id` bigint NOT NULL COMMENT '评论ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`reply_to_id` bigint DEFAULT NULL COMMENT '回复目标用户ID',
`content` text NOT NULL COMMENT '回复内容',
`like_count` int NOT NULL DEFAULT '0' COMMENT '点赞数',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0:删除,1:正常)',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_comment` (`comment_id`),
KEY `idx_video` (`video_id`),
KEY `idx_user` (`user_id`),
KEY `idx_reply_to` (`reply_to_id`),
KEY `idx_video_time` (`video_id`, `create_time`),
FULLTEXT KEY `ft_content` (`content`),
CONSTRAINT `fk_cr_comment` FOREIGN KEY (`comment_id`) REFERENCES `comment` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cr_video` FOREIGN KEY (`video_id`) REFERENCES `video_content`.`content_video` (`id`),
CONSTRAINT `fk_cr_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cr_reply_to` FOREIGN KEY (`reply_to_id`) REFERENCES `video_user`.`user_info` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评论回复表';
-- 评论点赞表
CREATE TABLE IF NOT EXISTS `comment_like` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`comment_id` bigint NOT NULL COMMENT '评论ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`type` tinyint NOT NULL COMMENT '类型(1:评论,2:回复)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_comment_user_type` (`comment_id`,`user_id`,`type`),
KEY `idx_user` (`user_id`),
CONSTRAINT `fk_cl_comment` FOREIGN KEY (`comment_id`) REFERENCES `comment` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_cl_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评论点赞表';
-- 6. 推荐数据库(video_recommend)
USE `video_recommend`;
-- 用户兴趣标签表
CREATE TABLE IF NOT EXISTS `recommend_user_interest` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`tag_id` bigint NOT NULL COMMENT '标签ID',
`weight` float NOT NULL DEFAULT '1.0' COMMENT '权重',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_user_tag` (`user_id`,`tag_id`),
KEY `idx_tag` (`tag_id`),
CONSTRAINT `fk_rui_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_rui_tag` FOREIGN KEY (`tag_id`) REFERENCES `video_content`.`content_tag` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户兴趣标签表';
-- 用户行为记录表
CREATE TABLE IF NOT EXISTS `recommend_user_behavior` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`behavior_type` tinyint NOT NULL COMMENT '行为类型(1:浏览,2:点赞,3:收藏,4:评论,5:分享,6:完整观看)',
`behavior_weight` float NOT NULL DEFAULT '1.0' COMMENT '行为权重',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_user_video` (`user_id`,`video_id`),
KEY `idx_video` (`video_id`),
KEY `idx_user_behavior` (`user_id`,`behavior_type`),
KEY `idx_create_time` (`create_time`),
CONSTRAINT `fk_rub_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_rub_video` FOREIGN KEY (`video_id`) REFERENCES `video_content`.`content_video` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户行为记录表';
-- 视频相似度表
CREATE TABLE IF NOT EXISTS `recommend_video_similarity` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`similar_video_id` bigint NOT NULL COMMENT '相似视频ID',
`similarity` float NOT NULL COMMENT '相似度',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_similar` (`video_id`,`similar_video_id`),
KEY `idx_similar_video` (`similar_video_id`),
CONSTRAINT `fk_rvs_video` FOREIGN KEY (`video_id`) REFERENCES `video_content`.`content_video` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_rvs_similar_video` FOREIGN KEY (`similar_video_id`) REFERENCES `video_content`.`content_video` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='视频相似度表';
-- 用户推荐表
CREATE TABLE IF NOT EXISTS `recommend_user_recommendation` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`recommend_type` tinyint NOT NULL COMMENT '推荐类型(1:基于内容,2:协同过滤,3:热门推荐,4:新视频推荐)',
`score` float NOT NULL COMMENT '推荐分数',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_user_video_type` (`user_id`,`video_id`,`recommend_type`),
KEY `idx_user_type` (`user_id`,`recommend_type`),
KEY `idx_video` (`video_id`),
CONSTRAINT `fk_rur_user` FOREIGN KEY (`user_id`) REFERENCES `video_user`.`user_info` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_rur_video` FOREIGN KEY (`video_id`) REFERENCES `video_content`.`content_video` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户推荐表';
-- 热门视频表
CREATE TABLE IF NOT EXISTS `recommend_hot_video` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`video_id` bigint NOT NULL COMMENT '视频ID',
`hot_score` float NOT NULL COMMENT '热度分数',
`period_type` tinyint NOT NULL COMMENT '周期类型(1:天,2:周,3:月)',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_video_period` (`video_id`,`period_type`),
KEY `idx_period_score` (`period_type`,`hot_score`),
CONSTRAINT `fk_rhv_video` FOREIGN KEY (`video_id`) REFERENCES `video_content`.`content_video` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='热门视频表';
-- 7. 管理后台数据库(video_admin)
USE `video_admin`;
-- 管理员表
CREATE TABLE IF NOT EXISTS `admin_user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '管理员ID',
`username` varchar(64) NOT NULL COMMENT '用户名',
`password` varchar(256) NOT NULL COMMENT '密码(加密)',
`salt` varchar(64) NOT NULL COMMENT '加密盐值',
`real_name` varchar(64) DEFAULT NULL COMMENT '真实姓名',
`avatar` varchar(256) DEFAULT NULL COMMENT '头像',
`email` varchar(128) DEFAULT NULL COMMENT '邮箱',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0:禁用,1:正常)',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(64) DEFAULT NULL COMMENT '最后登录IP',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`),
UNIQUE KEY `idx_email` (`email`),
UNIQUE KEY `idx_phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员表';
-- 管理员角色表
CREATE TABLE IF NOT EXISTS `admin_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`name` varchar(64) NOT NULL COMMENT '角色名称',
`code` varchar(64) NOT NULL COMMENT '角色编码(ADMIN_开头)',
`description` varchar(256) DEFAULT NULL COMMENT '角色描述',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员角色表';
-- 管理员权限表
CREATE TABLE IF NOT EXISTS `admin_permission` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '权限ID',
`name` varchar(64) NOT NULL COMMENT '权限名称',
`code` varchar(64) NOT NULL COMMENT '权限编码',
`description` varchar(256) DEFAULT NULL COMMENT '权限描述',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员权限表';
-- 管理员角色关联表
CREATE TABLE IF NOT EXISTS `admin_user_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`admin_id` bigint NOT NULL COMMENT '管理员ID',
`role_id` bigint NOT NULL COMMENT '角色ID',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_admin_role` (`admin_id`,`role_id`),
CONSTRAINT `fk_aur_admin` FOREIGN KEY (`admin_id`) REFERENCES `admin_user` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_aur_role` FOREIGN KEY (`role_id`) REFERENCES `admin_role` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员角色关联表';
-- 角色权限关联表
CREATE TABLE IF NOT EXISTS `admin_role_permission` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_id` bigint NOT NULL COMMENT '角色ID',
`permission_id` bigint NOT NULL COMMENT '权限ID',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_role_permission` (`role_id`,`permission_id`),
CONSTRAINT `fk_arp_role` FOREIGN KEY (`role_id`) REFERENCES `admin_role` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_arp_permission` FOREIGN KEY (`permission_id`) REFERENCES `admin_permission` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表';
-- 操作日志表
CREATE TABLE IF NOT EXISTS `admin_operation_log` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`admin_id` bigint DEFAULT NULL COMMENT '管理员ID',
`username` varchar(64) DEFAULT NULL COMMENT '用户名',
`operation` varchar(64) NOT NULL COMMENT '操作',
`method` varchar(128) DEFAULT NULL COMMENT '方法名',
`params` text COMMENT '参数',
`ip` varchar(64) DEFAULT NULL COMMENT 'IP地址',
`status` tinyint DEFAULT NULL COMMENT '状态(0:失败,1:成功)',
`error_msg` text COMMENT '错误消息',
`operation_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
PRIMARY KEY (`id`),
KEY `idx_admin` (`admin_id`),
KEY `idx_operation_time` (`operation_time`),
CONSTRAINT `fk_aol_admin` FOREIGN KEY (`admin_id`) REFERENCES `admin_user` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
-- 系统配置表
CREATE TABLE IF NOT EXISTS `admin_system_config` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`config_key` varchar(64) NOT NULL COMMENT '配置键',
`config_value` text NOT NULL COMMENT '配置值',
`description` varchar(256) DEFAULT NULL COMMENT '配置描述',
`created_by` varchar(64) DEFAULT 'system' COMMENT '创建人',
`updated_by` varchar(64) DEFAULT 'system' COMMENT '更新人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_key` (`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
-- 初始化管理员数据
INSERT IGNORE INTO `admin_role` (`id`, `name`, `code`, `description`) VALUES
(1, '超级管理员', 'ADMIN_SUPER', '拥有所有权限'),
(2, '内容管理员', 'ADMIN_CONTENT', '内容管理权限'),
(3, '用户管理员', 'ADMIN_USER', '用户管理权限'),
(4, '系统管理员', 'ADMIN_SYSTEM', '系统配置权限');
INSERT IGNORE INTO `admin_permission` (`id`, `name`, `code`, `description`) VALUES
(1, '用户管理', 'user:manage', '用户管理权限'),
(2, '角色管理', 'role:manage', '角色管理权限'),
(3, '权限管理', 'permission:manage', '权限管理权限'),
(4, '视频管理', 'video:manage', '视频管理权限'),
(5, '评论管理', 'comment:manage', '评论管理权限'),
(6, '标签管理', 'tag:manage', '标签管理权限'),
(7, '分类管理', 'category:manage', '分类管理权限'),
(8, '推荐管理', 'recommend:manage', '推荐管理权限'),
(9, '系统配置', 'system:config', '系统配置权限'),
(10, '操作日志', 'operation:log', '操作日志权限');
INSERT IGNORE INTO `admin_role_permission` (`role_id`, `permission_id`) VALUES
(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10),
(2, 4), (2, 5), (2, 6), (2, 7), (2, 8),
(3, 1),
(4, 9), (4, 10);
-- 初始化系统配置
INSERT IGNORE INTO `admin_system_config` (`config_key`, `config_value`, `description`) VALUES
('site_name', '高可用在线视频平台', '网站名称'),
('site_logo', '/static/logo.png', '网站Logo'),
('site_favicon', '/static/favicon.ico', '网站图标'),
('site_copyright', 'Copyright © 2024 XXXXXX', '版权信息'),
('video_upload_limit', '1024', '视频上传大小限制(MB)'),
('video_review_enabled', '1', '视频审核开关(0:关闭,1:开启)'),
('comment_review_enabled', '0', '评论审核开关(0:关闭,1:开启)'),
('user_register_enabled', '1', '用户注册开关(0:关闭,1:开启)');
+440
View File
@@ -0,0 +1,440 @@
-- Nacos 配置初始化脚本
-- 在 Nacos 数据库中执行此脚本,创建所有配置
-- 注意:tenant_id 为空字符串 '' 表示 public 命名空间
-- Nacos 2.x 版本需要 encrypted_data_key 字段
-- ============================================
-- 1. 公共基础配置 (common.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('common.yaml', 'DEFAULT_GROUP', '# 公共配置 - 所有微服务共享
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 300000
connection-timeout: 20000
connection-test-query: SELECT 1
keepalive-time: 60000
validation-timeout: 3000
max-lifetime: 58000
data:
redis:
timeout: 10000
lettuce:
pool:
max-active: 200
max-wait: -1
max-idle: 10
min-idle: 0
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
global-config:
db-config:
id-type: auto
logic-delete-field: is_deleted
logic-delete-value: 1
logic-not-delete-value: 0
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
feign:
circuitbreaker:
enabled: true
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
logging:
level:
com.nuaa.video: info
org.springframework.security: info', '', '', 'nacos', '');
-- ============================================
-- 2. 开发环境 Redis 配置 (common-redis-dev.yaml)
-- 单机模式
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('common-redis-dev.yaml', 'DEFAULT_GROUP', '# Redis 单机配置 - 开发环境
spring:
data:
redis:
host: ${REDIS_HOST:5.180.253.115}
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD:redis_EsJ8FX}', '', '', 'nacos', '');
-- ============================================
-- 3. 高可用环境 Redis 配置 (common-redis-ha.yaml)
-- Sentinel 哨兵模式
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('common-redis-ha.yaml', 'DEFAULT_GROUP', '# Redis Sentinel 高可用配置 - 生产环境
spring:
data:
redis:
password: ${REDIS_PASSWORD:redis_HA_Cluster_2024}
sentinel:
master: mymaster
nodes: ${REDIS_SENTINEL_NODES:192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
password: ${REDIS_PASSWORD:redis_HA_Cluster_2024}', '', '', 'nacos', '');
-- ============================================
-- 4. Gateway 服务配置 (video-gateway.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('video-gateway.yaml', 'DEFAULT_GROUP', '# Gateway 服务配置
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
routes:
- id: video-auth
uri: lb://video-auth
predicates:
- Path=/auth/**
- id: video-user
uri: lb://video-user
predicates:
- Path=/user/**
- id: video-content
uri: lb://video-content
predicates:
- Path=/content/**
- id: video-comment
uri: lb://video-comment
predicates:
- Path=/comment/**
- id: video-recommend
uri: lb://video-recommend
predicates:
- Path=/recommend/**
- id: video-admin
uri: lb://video-admin
predicates:
- Path=/admin/**
sentinel:
transport:
dashboard: ${SENTINEL_DASHBOARD_HOST:sentinel}:${SENTINEL_DASHBOARD_PORT:8880}
port: ${SPRING_CLOUD_SENTINEL_TRANSPORT_PORT:8720}
client-ip: ${SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP:}
eager: true
scg:
fallback:
mode: response
response-body: ''{"code":500,"message":"服务不可用,请稍后再试"}''
gateway:
ignore:
urls:
- /**/auth/login
- /**/auth/register
- /**/auth/captcha
- /content/video/public/**
- /content/category/tree
- /content/category/list
- /comment/reply/public/**
- /comment/public/**
- /admin/auth/captcha
- /admin/auth/login', '', '', 'nacos', '');
-- ============================================
-- 5. Auth 服务配置 (video-auth.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('video-auth.yaml', 'DEFAULT_GROUP', '# Auth 服务配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/video_auth?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: ${MYSQL_ROOT_PASSWORD:root123456}
data:
redis:
database: 0
cloud:
sentinel:
transport:
dashboard: ${SENTINEL_DASHBOARD_HOST:sentinel}:${SENTINEL_DASHBOARD_PORT:8880}
port: ${SPRING_CLOUD_SENTINEL_TRANSPORT_PORT:8720}
client-ip: ${SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP:}
eager: true
mybatis-plus:
type-aliases-package: com.nuaa.video.auth.entity
jwt:
secret: video-platform-secret-key-2024-nuaa
expiration: 86400
token-header: Authorization
token-prefix: "Bearer "', '', '', 'nacos', '');
-- ============================================
-- 6. User 服务配置 (video-user.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('video-user.yaml', 'DEFAULT_GROUP', '# User 服务配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/video_user?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: ${MYSQL_ROOT_PASSWORD:root123456}
data:
redis:
database: 1
cloud:
sentinel:
transport:
dashboard: ${SENTINEL_DASHBOARD_HOST:sentinel}:${SENTINEL_DASHBOARD_PORT:8880}
port: ${SPRING_CLOUD_SENTINEL_TRANSPORT_PORT:8721}
client-ip: ${SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP:}
eager: true
mybatis-plus:
type-aliases-package: com.nuaa.video.user.entity
auth:
ignore-urls:
- /user/profile/public/**
- /user/profile/init
- /actuator/**
minio:
endpoint: http://${MINIO_HOST:minio}:${MINIO_PORT:9000}
accessKey: minioadmin
secretKey: minioadmin123
bucketName: video-platform', '', '', 'nacos', '');
-- ============================================
-- 7. Content 服务配置 (video-content.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('video-content.yaml', 'DEFAULT_GROUP', '# Content 服务配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/video_content?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: ${MYSQL_ROOT_PASSWORD:root123456}
data:
redis:
database: 2
servlet:
multipart:
max-file-size: 1024MB
max-request-size: 1024MB
enabled: true
rocketmq:
topic-prefix: video-platform-
name-server: ${NAMESRV_ADDR:192.168.1.101:9876;192.168.1.102:9876;192.168.1.103:9876}
producer:
group: video-content-producer
send-message-timeout: 3000
retry-times-when-send-failed: 3
cloud:
sentinel:
transport:
dashboard: ${SENTINEL_DASHBOARD_HOST:sentinel}:${SENTINEL_DASHBOARD_PORT:8880}
port: ${SPRING_CLOUD_SENTINEL_TRANSPORT_PORT:8722}
client-ip: ${SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP:}
eager: true
mybatis-plus:
type-aliases-package: com.nuaa.video.content.entity
minio:
endpoint: http://${MINIO_HOST:minio}:${MINIO_PORT:9000}
accessKey: ${MINIO_ACCESS_KEY:minioadmin}
secretKey: ${MINIO_SECRET_KEY:minioadmin123}
bucketName: ${MINIO_BUCKET:video-platform}
ffmpeg:
binary:
path: ${FFMPEG_PATH:/usr/bin/ffmpeg}
probe:
path: ${FFPROBE_PATH:/usr/bin/ffprobe}
temp:
path: ${FFMPEG_TEMP_PATH:/tmp/ffmpeg}
auth:
ignore-urls:
- /content/video/public/**
- /content/category/list
- /content/tag/list
- /actuator/**
jwt:
secret: video-platform-secret-key-2024-nuaa
expiration: 86400
token-header: Authorization
token-prefix: "Bearer "', '', '', 'nacos', '');
-- ============================================
-- 8. Comment 服务配置 (video-comment.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('video-comment.yaml', 'DEFAULT_GROUP', '# Comment 服务配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/video_comment?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: ${MYSQL_ROOT_PASSWORD:root123456}
data:
redis:
database: 3
cloud:
sentinel:
transport:
dashboard: ${SENTINEL_DASHBOARD_HOST:sentinel}:${SENTINEL_DASHBOARD_PORT:8880}
port: ${SPRING_CLOUD_SENTINEL_TRANSPORT_PORT:8723}
client-ip: ${SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP:}
eager: true
mybatis-plus:
type-aliases-package: com.nuaa.video.comment.entity
global-config:
db-config:
logic-delete-field: status
logic-delete-value: 0
logic-not-delete-value: 1
comment:
sensitive-filter:
enabled: true
review:
enabled: false
jwt:
secret: video-platform-secret-key-2024-nuaa
expiration: 86400
token-header: Authorization
token-prefix: "Bearer "
auth:
ignore-urls:
- /comment/public/**
- /actuator/**', '', '', 'nacos', '');
-- ============================================
-- 9. Recommend 服务配置 (video-recommend.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('video-recommend.yaml', 'DEFAULT_GROUP', '# Recommend 服务配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/video_recommend?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: ${MYSQL_ROOT_PASSWORD:root123456}
data:
redis:
database: 4
cloud:
sentinel:
transport:
dashboard: ${SENTINEL_DASHBOARD_HOST:sentinel}:${SENTINEL_DASHBOARD_PORT:8880}
port: ${SPRING_CLOUD_SENTINEL_TRANSPORT_PORT:8724}
client-ip: ${SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP:}
eager: true
mybatis-plus:
type-aliases-package: com.nuaa.video.recommend.entity
recommend:
hot:
default-size: 20
refresh-interval: 60
weights:
view: 1
like: 3
favorite: 5
coin: 5
comment: 2
share: 3
similarity:
tag-weight: 0.5
category-weight: 0.3
behavior-weight: 0.2
personalized:
default-size: 30
behavior-weights:
view: 1
like: 3
favorite: 5
coin: 5
comment: 2
share: 3
complete-watch: 4
jwt:
secret: video-platform-secret-key-2024-nuaa
expiration: 86400
token-header: Authorization
token-prefix: "Bearer "
auth:
ignore-urls:
- /recommend/hot/**
- /recommend/tag/**
- /actuator/**', '', '', 'nacos', '');
-- ============================================
-- 10. Admin 服务配置 (video-admin.yaml)
-- ============================================
INSERT INTO config_info (data_id, group_id, content, tenant_id, app_name, src_user, encrypted_data_key) VALUES
('video-admin.yaml', 'DEFAULT_GROUP', '# Admin 服务配置
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST:mysql}:${MYSQL_PORT:3306}/video_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: root
password: ${MYSQL_ROOT_PASSWORD:root123456}
data:
redis:
database: 5
cloud:
sentinel:
transport:
dashboard: ${SENTINEL_DASHBOARD_HOST:sentinel}:${SENTINEL_DASHBOARD_PORT:8880}
port: ${SPRING_CLOUD_SENTINEL_TRANSPORT_PORT:8725}
client-ip: ${SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP:}
eager: true
mybatis-plus:
type-aliases-package: com.nuaa.video.admin.entity
global-config:
db-config:
logic-delete-field: status
logic-delete-value: 0
logic-not-delete-value: 1
jwt:
secret: video-platform-admin-secret-key-2024-nuaa
expiration: 86400
token-header: Authorization
token-prefix: "Bearer "
login:
retry-count: 5
lock-time: 30
operation-log:
enabled: true
exclude-paths:
- /admin/auth/login
- /admin/auth/logout
- /admin/auth/captcha
- /actuator/**', '', '', 'nacos', '');
+176
View File
@@ -0,0 +1,176 @@
-- 创建Nacos配置数据库
CREATE DATABASE IF NOT EXISTS nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE nacos_config;
-- Nacos数据库初始化脚本
CREATE TABLE IF NOT EXISTS `config_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description',
`c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage',
`effect` varchar(64) DEFAULT NULL COMMENT '配置生效目标',
`type` varchar(64) DEFAULT NULL COMMENT '配置类型',
`c_schema` text COMMENT '配置模式',
`encrypted_data_key` text NOT NULL COMMENT '密钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_info';
CREATE TABLE IF NOT EXISTS `config_info_aggr` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
`content` longtext NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='增加租户字段';
CREATE TABLE IF NOT EXISTS `config_info_beta` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '密钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_info_beta';
CREATE TABLE IF NOT EXISTS `config_info_tag` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_info_tag';
CREATE TABLE IF NOT EXISTS `config_tags_relation` (
`id` bigint NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint NOT NULL AUTO_INCREMENT COMMENT 'nid',
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='config_tag_relation';
CREATE TABLE IF NOT EXISTS `group_capacity` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='集群、各Group容量信息表';
CREATE TABLE IF NOT EXISTS `his_config_info` (
`id` bigint unsigned NOT NULL COMMENT 'id',
`nid` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`op_type` char(10) DEFAULT NULL COMMENT 'operation type',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '密钥',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='多租户改造';
CREATE TABLE IF NOT EXISTS `tenant_capacity` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='租户容量信息表';
CREATE TABLE IF NOT EXISTS `tenant_info` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`tenant_name` varchar(128) DEFAULT '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint NOT NULL COMMENT '创建时间',
`gmt_modified` bigint NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='tenant_info';
CREATE TABLE IF NOT EXISTS `users` (
`username` varchar(50) NOT NULL COMMENT 'username',
`password` varchar(500) NOT NULL COMMENT 'password',
`enabled` tinyint(1) NOT NULL COMMENT 'enabled',
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;
CREATE TABLE IF NOT EXISTS `roles` (
`username` varchar(50) NOT NULL COMMENT 'username',
`role` varchar(50) NOT NULL COMMENT 'role',
UNIQUE KEY `uk_username_role` (`username`,`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;
CREATE TABLE IF NOT EXISTS `permissions` (
`role` varchar(50) NOT NULL COMMENT 'role',
`resource` varchar(255) NOT NULL COMMENT 'resource',
`action` varchar(8) NOT NULL COMMENT 'action',
UNIQUE KEY `uk_role_permission` (`role`,`resource`,`action`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin;
-- 初始化Nacos用户
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');