use school_news;
-- 资源/新闻表
DROP TABLE IF EXISTS `tb_resource`;
CREATE TABLE `tb_resource` (
  `id` VARCHAR(50) NOT NULL COMMENT 'ID',
  `resource_id` VARCHAR(50) NOT NULL COMMENT '资源ID',
  `title` VARCHAR(255) NOT NULL COMMENT '资源标题',
  `content` LONGTEXT COMMENT '资源内容',
  `summary` VARCHAR(500) DEFAULT NULL COMMENT '资源简介',
  `cover_image` VARCHAR(255) DEFAULT NULL COMMENT '封面图片',
  `tag_id` VARCHAR(50) DEFAULT NULL COMMENT '标签ID（文章分类标签，tagType=1）',
  `author` VARCHAR(100) DEFAULT NULL COMMENT '作者',
  `source` VARCHAR(255) DEFAULT NULL COMMENT '来源',
  `source_url` VARCHAR(500) DEFAULT NULL COMMENT '来源URL',
  `view_count` INT(11) DEFAULT 0 COMMENT '浏览次数',
  `like_count` INT(11) DEFAULT 0 COMMENT '点赞次数',
  `collect_count` INT(11) DEFAULT 0 COMMENT '收藏次数',
  `status` INT(4) DEFAULT 0 COMMENT '状态（0草稿 1已发布 2下架）',
  `is_recommend` TINYINT(1) DEFAULT 0 COMMENT '是否推荐',
  `is_banner` TINYINT(1) DEFAULT 0 COMMENT '是否轮播',
  `publish_time` TIMESTAMP NULL DEFAULT NULL COMMENT '发布时间',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  KEY `idx_resource_id` (`resource_id`),
  KEY `idx_tag` (`tag_id`),
  KEY `idx_status` (`status`),
  KEY `idx_publish_time` (`publish_time`),
  KEY `idx_view_count` (`view_count`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='资源表';


-- Banner管理表
DROP TABLE IF EXISTS `tb_banner`;
CREATE TABLE `tb_banner` (
  `id` VARCHAR(50) NOT NULL COMMENT 'ID',
  `banner_id` VARCHAR(50) NOT NULL COMMENT 'Banner ID',
  `title` VARCHAR(255) NOT NULL COMMENT 'Banner标题',
  `image_url` VARCHAR(500) NOT NULL COMMENT 'Banner图片URL',
  `link_type` INT(4) DEFAULT 1 COMMENT '链接类型（1资源 2课程 3外部链接）',
  `link_id` VARCHAR(50) DEFAULT NULL COMMENT '关联ID（资源ID或课程ID）',
  `link_url` VARCHAR(500) DEFAULT NULL COMMENT '外部链接URL',
  `order_num` INT(4) DEFAULT 0 COMMENT '排序号',
  `status` INT(4) DEFAULT 1 COMMENT '状态（0禁用 1启用）',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_banner_id` (`banner_id`),
  KEY `idx_order` (`order_num`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Banner表';

-- 资源推荐表
DROP TABLE IF EXISTS `tb_resource_recommend`;
CREATE TABLE `tb_resource_recommend` (
  `id` VARCHAR(50) NOT NULL COMMENT '推荐ID',
  `resource_id` VARCHAR(50) NOT NULL COMMENT '资源ID',
  `recommend_type` INT(4) DEFAULT 1 COMMENT '推荐类型（1-热门资源，2-思政资源）',
  `order_num` INT(4) DEFAULT 0 COMMENT '排序号',
  `reason` VARCHAR(255) DEFAULT NULL COMMENT '推荐理由',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  KEY `idx_resource_id` (`resource_id`),
  KEY `idx_recommend_type` (`recommend_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='资源推荐表';

-- 标签表
DROP TABLE IF EXISTS `tb_tag`;
CREATE TABLE `tb_tag` (
  `id` VARCHAR(50) NOT NULL COMMENT '标签ID',
  `tag_id` VARCHAR(50) NOT NULL COMMENT '标签唯一标识',
  `name` VARCHAR(100) NOT NULL COMMENT '标签名称',
  `color` VARCHAR(20) DEFAULT NULL COMMENT '标签颜色',
  `description` VARCHAR(255) DEFAULT NULL COMMENT '标签描述',
  `tag_type` INT(4) DEFAULT 1 COMMENT '标签类型（1-文章分类标签 2-课程分类标签 3-学习任务分类标签）',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tag_id` (`tag_id`),
  UNIQUE KEY `uk_tag_name_type` (`name`, `tag_type`),
  KEY `idx_tag_type` (`tag_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签表';

-- 资源标签关联表
DROP TABLE IF EXISTS `tb_resource_tag`;
CREATE TABLE `tb_resource_tag` (
  `id` VARCHAR(50) NOT NULL COMMENT '关联ID',
  `resource_id` VARCHAR(50) NOT NULL COMMENT '资源ID',
  `tag_id` VARCHAR(50) NOT NULL COMMENT '标签ID',
  `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_resource_tag` (`resource_id`, `tag_id`),
  KEY `idx_resource` (`resource_id`),
  KEY `idx_tag` (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='资源标签关联表';