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 '封面图片',
  `category_id` VARCHAR(50) DEFAULT NULL COMMENT '分类ID',
  `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_category` (`category_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='资源表';

-- 资源分类表
DROP TABLE IF EXISTS `tb_resource_category`;
CREATE TABLE `tb_resource_category` (
  `id` VARCHAR(50) NOT NULL COMMENT '分类ID',
  `category_id` VARCHAR(50) NOT NULL COMMENT '分类唯一标识',
  `name` VARCHAR(100) NOT NULL COMMENT '分类名称',
  `parent_id` VARCHAR(50) DEFAULT NULL COMMENT '父分类ID',
  `description` VARCHAR(255) DEFAULT NULL COMMENT '分类描述',
  `icon` VARCHAR(100) DEFAULT NULL COMMENT '分类图标',
  `order_num` INT(4) DEFAULT 0 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`),
  UNIQUE KEY `uk_category_id` (`category_id`),
  KEY `idx_parent` (`parent_id`)
) 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 '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`),
  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',
  `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`),
  UNIQUE KEY `uk_resource` (`resource_id`),
  KEY `idx_order` (`order_num`)
) 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 '标签描述',
  `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` (`name`)
) 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='资源标签关联表';

-- 数据采集配置表
DROP TABLE IF EXISTS `tb_data_collection_config`;
CREATE TABLE `tb_data_collection_config` (
  `id` VARCHAR(50) NOT NULL COMMENT '配置ID',
  `name` VARCHAR(100) NOT NULL COMMENT '配置名称',
  `source_url` VARCHAR(500) NOT NULL COMMENT '采集源URL',
  `source_type` VARCHAR(50) DEFAULT NULL COMMENT '采集源类型',
  `frequency` VARCHAR(20) DEFAULT 'daily' COMMENT '采集频率（daily每天 weekly每周）',
  `category_id` VARCHAR(50) DEFAULT NULL COMMENT '默认分类ID',
  `status` INT(4) DEFAULT 1 COMMENT '状态（0禁用 1启用）',
  `last_collect_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`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='数据采集配置表';

-- 数据采集记录表
DROP TABLE IF EXISTS `tb_data_collection_log`;
CREATE TABLE `tb_data_collection_log` (
  `id` VARCHAR(50) NOT NULL COMMENT '记录ID',
  `config_id` VARCHAR(50) NOT NULL COMMENT '配置ID',
  `collect_count` INT(11) DEFAULT 0 COMMENT '采集数量',
  `success_count` INT(11) DEFAULT 0 COMMENT '成功数量',
  `fail_count` INT(11) DEFAULT 0 COMMENT '失败数量',
  `status` INT(4) DEFAULT 1 COMMENT '状态（0失败 1成功 2部分成功）',
  `message` TEXT COMMENT '采集消息',
  `collect_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '采集时间',
  PRIMARY KEY (`id`),
  KEY `idx_config` (`config_id`),
  KEY `idx_collect_time` (`collect_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='数据采集记录表';

