use school_news; -- 操作日志表 DROP TABLE IF EXISTS `tb_sys_operation_log`; CREATE TABLE `tb_sys_operation_log` ( `id` VARCHAR(50) NOT NULL COMMENT '日志ID', `user_id` VARCHAR(50) NULL COMMENT '用户ID', `username` VARCHAR(50) NULL COMMENT '用户名', `module` VARCHAR(100) DEFAULT NULL COMMENT '操作模块', `operation` VARCHAR(100) DEFAULT NULL COMMENT '操作类型', `method` VARCHAR(200) DEFAULT NULL COMMENT '请求方法', `request_url` VARCHAR(500) DEFAULT NULL COMMENT '请求URL', `request_method` VARCHAR(20) DEFAULT NULL COMMENT '请求方式(GET/POST等)', `request_params` TEXT COMMENT '请求参数', `response_data` TEXT COMMENT '响应数据', `ip_address` VARCHAR(45) DEFAULT NULL COMMENT 'IP地址', `ip_source` VARCHAR(100) DEFAULT NULL COMMENT 'IP来源', `browser` VARCHAR(100) DEFAULT NULL COMMENT '浏览器', `os` VARCHAR(100) DEFAULT NULL COMMENT '操作系统', `status` INT(4) DEFAULT 1 COMMENT '操作状态(0失败 1成功)', `error_message` TEXT COMMENT '错误消息', `execute_time` INT(11) DEFAULT 0 COMMENT '执行时长(毫秒)', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_module` (`module`), KEY `idx_create_time` (`create_time`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='操作日志表'; -- 系统配置表 DROP TABLE IF EXISTS `tb_sys_config`; CREATE TABLE `tb_sys_config` ( `id` VARCHAR(50) NOT NULL COMMENT '配置ID', `config_key` VARCHAR(100) NOT NULL COMMENT '配置键', `config_value` TEXT COMMENT '配置值', `config_type` VARCHAR(50) DEFAULT 'string' COMMENT '配置类型(string/number/boolean/json)', `config_group` VARCHAR(50) DEFAULT NULL COMMENT '配置分组', `description` VARCHAR(255) DEFAULT NULL COMMENT '配置描述', `is_system` TINYINT(1) 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_config_key` (`config_key`), KEY `idx_group` (`config_group`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统配置表'; -- 系统访问统计表 DROP TABLE IF EXISTS `tb_sys_visit_statistics`; CREATE TABLE `tb_sys_visit_statistics` ( `id` VARCHAR(50) NOT NULL COMMENT '统计ID', `stat_date` DATE NOT NULL COMMENT '统计日期', `total_visits` INT(11) DEFAULT 0 COMMENT '总访问量', `unique_visitors` INT(11) DEFAULT 0 COMMENT '独立访客数', `new_users` INT(11) DEFAULT 0 COMMENT '新增用户数', `active_users` INT(11) DEFAULT 0 COMMENT '活跃用户数', `page_views` INT(11) DEFAULT 0 COMMENT '页面浏览量', `avg_visit_duration` INT(11) DEFAULT 0 COMMENT '平均访问时长(秒)', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_stat_date` (`stat_date`), KEY `idx_date` (`stat_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统访问统计表'; -- 通知表 DROP TABLE IF EXISTS `tb_sys_notification`; CREATE TABLE `tb_sys_notification` ( `id` VARCHAR(50) NOT NULL COMMENT '通知ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `type` INT(4) DEFAULT 1 COMMENT '通知类型(1系统通知 2任务通知 3成就通知)', `title` VARCHAR(255) NOT NULL COMMENT '通知标题', `content` TEXT COMMENT '通知内容', `link_type` INT(4) DEFAULT NULL COMMENT '链接类型(1资源 2课程 3任务)', `link_id` VARCHAR(50) DEFAULT NULL COMMENT '链接ID', `is_read` TINYINT(1) DEFAULT 0 COMMENT '是否已读', `read_time` TIMESTAMP NULL DEFAULT NULL COMMENT '阅读时间', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_is_read` (`is_read`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统通知表'; -- 文件上传记录表 -- -------------------------------------------------------- -- 文件上传记录表 -- -------------------------------------------------------- DROP TABLE IF EXISTS `tb_sys_file`; CREATE TABLE IF NOT EXISTS `tb_sys_file` ( `id` VARCHAR(50) NOT NULL COMMENT '主键ID', `file_id` VARCHAR(64) NOT NULL COMMENT '文件ID', `file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名(UUID生成)', `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名', `file_path` VARCHAR(500) NOT NULL COMMENT '文件存储路径', `file_url` VARCHAR(500) DEFAULT NULL COMMENT '文件访问URL', `file_size` BIGINT NOT NULL COMMENT '文件大小(字节)', `file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型(如:image、document、video等)', `mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型(如:image/jpeg)', `storage_type` VARCHAR(20) NOT NULL DEFAULT 'local' COMMENT '存储类型(local-本地存储、minio-MinIO存储、oss-阿里云OSS等)', `module` VARCHAR(50) DEFAULT NULL COMMENT '所属模块(如:user、news、course等)', `business_id` VARCHAR(64) DEFAULT NULL COMMENT '业务ID(关联的业务数据ID)', `uploader` VARCHAR(64) DEFAULT NULL COMMENT '上传者用户ID', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` DATETIME DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除(0-否,1-是)', PRIMARY KEY (`id`), INDEX `idx_file_id` (`file_id`), INDEX `idx_file_name` (`file_name`), INDEX `idx_uploader` (`uploader`), INDEX `idx_module_business` (`module`, `business_id`), INDEX `idx_storage_type` (`storage_type`), INDEX `idx_deleted` (`deleted`), INDEX `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文件上传记录表'; -- 数据字典表 DROP TABLE IF EXISTS `tb_sys_dict_type`; CREATE TABLE `tb_sys_dict_type` ( `id` VARCHAR(50) NOT NULL COMMENT '字典类型ID', `dict_type` VARCHAR(100) NOT NULL COMMENT '字典类型', `dict_name` VARCHAR(100) NOT NULL COMMENT '字典名称', `description` VARCHAR(255) DEFAULT NULL 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_dict_type` (`dict_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='字典类型表'; -- 数据字典详情表 DROP TABLE IF EXISTS `tb_sys_dict_data`; CREATE TABLE `tb_sys_dict_data` ( `id` VARCHAR(50) NOT NULL COMMENT '字典数据ID', `dict_type` VARCHAR(100) NOT NULL COMMENT '字典类型', `dict_label` VARCHAR(100) NOT NULL COMMENT '字典标签', `dict_value` VARCHAR(100) NOT NULL COMMENT '字典值', `dict_sort` INT(4) DEFAULT 0 COMMENT '排序', `css_class` VARCHAR(100) DEFAULT NULL COMMENT '样式类', `list_class` VARCHAR(100) DEFAULT NULL COMMENT '列表样式', `is_default` TINYINT(1) DEFAULT 0 COMMENT '是否默认', `status` INT(4) DEFAULT 1 COMMENT '状态(0禁用 1启用)', `remark` 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_dict_type` (`dict_type`), KEY `idx_dict_sort` (`dict_sort`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='字典数据表';