-- MySQL dump 10.13 Distrib 8.0.41, for Win64 (x86_64) -- -- Host: 212.64.112.158 Database: gotest -- ------------------------------------------------------ -- Server version 5.7.44-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!50503 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Current Database: `gotest` -- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `gotest` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; USE `gotest`; -- -- Table structure for table `sys_access_log` -- DROP TABLE IF EXISTS `sys_access_log`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `sys_access_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `tenant_id` int(11) NOT NULL DEFAULT '0', `user_id` int(11) NOT NULL DEFAULT '0', `username` varchar(255) NOT NULL DEFAULT '', `module` varchar(255) NOT NULL DEFAULT '', `resource_type` varchar(255) NOT NULL DEFAULT '', `resource_id` int(11) DEFAULT NULL, `request_url` varchar(255) DEFAULT NULL, `query_string` longtext, `ip_address` varchar(255) DEFAULT NULL, `user_agent` varchar(255) DEFAULT NULL, `request_method` varchar(255) DEFAULT NULL, `duration` int(11) DEFAULT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `sys_dict_item` -- DROP TABLE IF EXISTS `sys_dict_item`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `sys_dict_item` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `dict_type_id` bigint(20) NOT NULL COMMENT '字典类型ID', `dict_label` varchar(100) NOT NULL COMMENT '字典标签(显示值,如 正常)', `dict_value` varchar(100) NOT NULL COMMENT '字典值(存储值,如 1)', `parent_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '父级字典项ID(0表示一级项)', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(0-禁用,1-启用)', `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序号', `color` varchar(20) DEFAULT NULL COMMENT '颜色标记(如 #1890ff)', `icon` varchar(50) DEFAULT NULL COMMENT '图标(如 el-icon-success)', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除(0-未删,1-已删)', PRIMARY KEY (`id`), UNIQUE KEY `uk_dict_type_value` (`dict_type_id`,`dict_value`,`is_deleted`), KEY `idx_dict_type_parent_status` (`dict_type_id`,`parent_id`,`status`,`is_deleted`), KEY `idx_parent_id` (`parent_id`,`status`,`is_deleted`) ) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8mb4 COMMENT='字典项表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `sys_dict_type` -- DROP TABLE IF EXISTS `sys_dict_type`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `sys_dict_type` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `tenant_id` int(11) NOT NULL DEFAULT '0' COMMENT '租户ID(0表示平台字典,>0表示租户字典)', `dict_code` varchar(50) NOT NULL COMMENT '字典编码(唯一,如 USER_STATUS)', `dict_name` varchar(100) NOT NULL COMMENT '字典名称(如 用户状态)', `parent_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '父级字典ID(0表示一级字典)', `is_global` tinyint(4) DEFAULT '0' COMMENT '是否全局0-否 1-是', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(0-禁用,1-启用)', `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序号', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除(0-未删,1-已删)', PRIMARY KEY (`id`), UNIQUE KEY `uk_dict_code_tenant` (`dict_code`,`is_deleted`), KEY `idx_parent_id` (`parent_id`,`is_deleted`), KEY `idx_status` (`status`,`is_deleted`), KEY `idx_tenant_id` (`tenant_id`,`is_deleted`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COMMENT='字典类型表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `sys_feedback` -- DROP TABLE IF EXISTS `sys_feedback`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `sys_feedback` ( `id` varchar(36) NOT NULL COMMENT 'ID', `tenant_id` varchar(64) NOT NULL COMMENT '租户ID', `feedback_name` varchar(50) DEFAULT '' COMMENT '反馈人姓名', `module` varchar(30) NOT NULL COMMENT '反馈对应模块', `feedback_type` varchar(20) NOT NULL COMMENT '反馈类型', `content` text NOT NULL COMMENT '反馈详细内容', `attachment_url` varchar(255) DEFAULT '' COMMENT '附件URL', `handle_status` varchar(20) NOT NULL DEFAULT '0' COMMENT '处理状态(0-待处理/1-处理中/2-已解决/3-已驳回/4-无需处理)', `handle_remark` text COMMENT '处理备注(移除默认值,TEXT类型不支持)', `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 '删除时间', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`) COMMENT '租户ID索引,优化租户级查询', KEY `idx_module` (`module`) COMMENT '模块索引,优化模块级反馈统计', KEY `idx_handle_status` (`handle_status`) COMMENT '处理状态索引,优化待处理反馈查询', KEY `idx_create_time` (`create_time`) COMMENT '创建时间索引,优化时间范围查询' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用反馈表(支持租户隔离、软删除)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `sys_operation_log` -- DROP TABLE IF EXISTS `sys_operation_log`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `sys_operation_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID', `tenant_id` int(11) NOT NULL DEFAULT '0' COMMENT '租户ID(0表示平台操作,>0表示租户操作)', `user_id` int(11) NOT NULL COMMENT '操作用户ID', `username` varchar(50) NOT NULL COMMENT '操作用户名', `module` varchar(100) NOT NULL COMMENT '操作模块(user/tenant/dict/role等)', `resource_type` varchar(50) NOT NULL COMMENT '资源类型(如User/Tenant/Dict等)', `resource_id` int(11) DEFAULT NULL COMMENT '资源ID(如被操作的用户ID、租户ID等)', `operation` varchar(20) NOT NULL COMMENT '操作类型(CREATE/UPDATE/DELETE/LOGIN/LOGOUT/VIEW等)', `description` varchar(500) DEFAULT NULL COMMENT '操作描述', `old_value` longtext COMMENT '修改前的值(JSON格式,用于UPDATE操作)', `new_value` longtext COMMENT '修改后的值(JSON格式,用于UPDATE操作)', `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址', `user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理信息', `request_method` varchar(10) DEFAULT NULL COMMENT '请求方法(GET/POST/PUT/DELETE等)', `request_url` varchar(500) DEFAULT NULL COMMENT '请求URL', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1-成功,0-失败', `error_message` text COMMENT '错误信息', `duration` int(11) DEFAULT NULL COMMENT '执行时长(毫秒)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_user_id` (`user_id`), KEY `idx_module` (`module`), KEY `idx_resource_type` (`resource_type`), KEY `idx_resource_id` (`resource_id`), KEY `idx_operation` (`operation`), KEY `idx_create_time` (`create_time`), KEY `idx_tenant_user_time` (`tenant_id`,`user_id`,`create_time`), KEY `idx_tenant_module_time` (`tenant_id`,`module`,`create_time`) ) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8mb4 COMMENT='系统操作日志表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_exam` -- DROP TABLE IF EXISTS `yz_exam`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_exam` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '考试唯一标识', `tenant_id` int(11) NOT NULL COMMENT '租户ID(多租户隔离)', `category_id` int(11) NOT NULL COMMENT '关联考试分类表ID', `exam_name` varchar(100) NOT NULL COMMENT '考试名称', `exam_desc` varchar(500) DEFAULT '' COMMENT '考试描述', `exam_time` datetime NOT NULL COMMENT '考试开始时间', `exam_duration` int(11) NOT NULL COMMENT '考试时长(分钟)', `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '考试状态(0-未开始,1-进行中,2-已结束,3-已取消)', `create_by` int(11) NOT 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 '更新时间', PRIMARY KEY (`id`), KEY `idx_tenant_category_status` (`tenant_id`,`category_id`,`status`), KEY `idx_tenant_create_by` (`tenant_id`,`create_by`), KEY `fk_yz_exam_category` (`category_id`), CONSTRAINT `fk_yz_exam_category` FOREIGN KEY (`category_id`) REFERENCES `yz_exam_category` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_yz_exam_tenant` FOREIGN KEY (`tenant_id`) REFERENCES `yz_tenants` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考试主表(关联分类+租户隔离)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_exam_category` -- DROP TABLE IF EXISTS `yz_exam_category`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_exam_category` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类唯一标识', `tenant_id` int(11) NOT NULL COMMENT '租户ID(多租户隔离)', `category_name` varchar(50) NOT NULL COMMENT '分类名称', `parent_id` int(11) DEFAULT '0' COMMENT '父分类ID,0表示一级分类', `sort_order` tinyint(4) DEFAULT '0' COMMENT '排序序号', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(1-启用,0-禁用)', `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_tenant_parent` (`tenant_id`,`parent_id`), KEY `idx_tenant_status` (`tenant_id`,`status`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考试分类表(含多租户隔离)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_exam_question_bank` -- DROP TABLE IF EXISTS `yz_exam_question_bank`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_exam_question_bank` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '题库ID', `tenant_id` int(11) NOT NULL COMMENT '租户ID(多租户隔离)', `bank_name` varchar(100) NOT NULL COMMENT '题库名称', `bank_desc` varchar(500) DEFAULT '' COMMENT '题库描述', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态(1-启用,0-禁用)', `sort_order` int(11) NOT NULL DEFAULT '0' COMMENT '排序序号', `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 '删除时间(软删除)', PRIMARY KEY (`id`), KEY `idx_tenant_status` (`tenant_id`,`status`), KEY `idx_tenant_name` (`tenant_id`,`bank_name`), KEY `idx_delete_time` (`delete_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考试题库表(支持租户隔离、软删除)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_exam_users` -- DROP TABLE IF EXISTS `yz_exam_users`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_exam_users` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户唯一标识', `tenant_id` int(11) NOT NULL COMMENT '租户ID(多租户隔离)', `username` varchar(50) NOT NULL COMMENT '用户名', `real_name` varchar(50) DEFAULT '' COMMENT '真实姓名', `mobile` varchar(20) DEFAULT '' COMMENT '手机号', `email` varchar(100) DEFAULT '' COMMENT '邮箱', `user_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '用户类型(1-学生,2-教师,3-管理员)', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '账号状态(1-正常,0-禁用,2-冻结)', `password` varchar(100) NOT NULL COMMENT '加密后密码(salt+明文密码哈希)', `salt` varchar(50) NOT NULL COMMENT '密码盐值', `last_login_time` datetime DEFAULT NULL 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 `uk_tenant_username` (`tenant_id`,`username`), UNIQUE KEY `uk_salt` (`salt`) USING BTREE, UNIQUE KEY `uk_tenant_mobile` (`tenant_id`,`mobile`) USING BTREE, KEY `idx_tenant_username` (`tenant_id`,`username`), KEY `idx_tenant_type_status` (`tenant_id`,`user_type`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考试用户表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_files` -- DROP TABLE IF EXISTS `yz_files`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_files` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件ID', `tenant_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID', `file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件名称', `original_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '原始文件名', `file_path` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件存储路径', `file_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件访问URL', `file_size` bigint(20) NOT NULL DEFAULT '0' COMMENT '文件大小(字节)', `file_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件类型', `file_ext` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件扩展名', `md5` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件MD5值,用于去重', `category` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件分类', `sub_category` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '子分类', `status` tinyint(4) DEFAULT '1' COMMENT '状态(1:正常, 0:删除)', `is_public` tinyint(4) DEFAULT '0' COMMENT '是否公开(1:是, 0:否)', `upload_by` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '上传人', `upload_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (`id`), KEY `idx_tenant` (`tenant_id`), KEY `idx_user` (`user_id`), KEY `idx_category` (`category`), KEY `idx_upload_time` (`upload_time`), KEY `idx_status` (`status`), KEY `idx_md5` (`md5`), KEY `idx_original_name` (`original_name`) ) ENGINE=InnoDB AUTO_INCREMENT=72 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_knowledge` -- DROP TABLE IF EXISTS `yz_knowledge`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_knowledge` ( `knowledge_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '知识ID', `tenant_id` int(11) DEFAULT NULL COMMENT '租户ID', `title` varchar(200) NOT NULL COMMENT '标题', `category_id` int(11) DEFAULT NULL COMMENT '分类ID', `tags` text COMMENT '标签JSON数组,存储标签名称', `author` varchar(50) NOT NULL COMMENT '作者', `content` longtext COMMENT '正文内容(富文本)', `summary` varchar(500) DEFAULT NULL COMMENT '摘要', `cover_url` varchar(500) DEFAULT NULL COMMENT '封面图片URL', `status` tinyint(4) DEFAULT '0' COMMENT '状态:0-草稿,1-已发布,2-已归档', `share` int(10) DEFAULT '0' COMMENT '是否共享 0-不共享 1-共享', `view_count` int(11) DEFAULT '0' COMMENT '查看次数', `like_count` int(11) DEFAULT '0' COMMENT '点赞数', `is_recommend` tinyint(4) DEFAULT '0' COMMENT '是否推荐:0-否,1-是', `is_top` tinyint(4) DEFAULT '0' COMMENT '是否置顶:0-否,1-是', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `delete_by` varchar(255) DEFAULT NULL COMMENT '删除人', PRIMARY KEY (`knowledge_id`), KEY `idx_category_id` (`category_id`), KEY `idx_author` (`author`), KEY `idx_status` (`status`), KEY `idx_create_time` (`create_time`), KEY `idx_view_count` (`view_count`), KEY `idx_is_recommend` (`is_recommend`), KEY `idx_is_top` (`is_top`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COMMENT='知识库内容表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_knowledge_category` -- DROP TABLE IF EXISTS `yz_knowledge_category`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_knowledge_category` ( `category_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类ID', `tenant_id` int(11) DEFAULT NULL COMMENT '租户ID', `category_name` varchar(100) NOT NULL COMMENT '分类名称', `category_desc` varchar(500) DEFAULT NULL COMMENT '分类描述', `parent_id` int(11) DEFAULT '0' COMMENT '父分类ID,0表示顶级分类', `sort_order` int(11) DEFAULT '0' COMMENT '排序序号', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`category_id`), KEY `idx_parent_id` (`parent_id`), KEY `idx_sort_order` (`sort_order`) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='知识库分类表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_knowledge_favorites` -- DROP TABLE IF EXISTS `yz_knowledge_favorites`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_knowledge_favorites` ( `favorite_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '收藏ID', `knowledge_id` int(11) NOT NULL COMMENT '知识ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `tenant_id` int(11) DEFAULT NULL COMMENT '租户ID', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`favorite_id`), UNIQUE KEY `uk_knowledge_user` (`knowledge_id`,`user_id`), KEY `idx_user_id` (`user_id`), CONSTRAINT `yz_fk_fav_knowledge` FOREIGN KEY (`knowledge_id`) REFERENCES `yz_knowledge` (`knowledge_id`) ON DELETE CASCADE, CONSTRAINT `yz_fk_fav_user` FOREIGN KEY (`user_id`) REFERENCES `yz_users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='知识库收藏表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_knowledge_tags` -- DROP TABLE IF EXISTS `yz_knowledge_tags`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_knowledge_tags` ( `tag_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '标签ID', `tenant_id` int(11) DEFAULT NULL COMMENT '租户ID', `tag_name` varchar(50) NOT NULL COMMENT '标签名称', `tag_background` varchar(20) DEFAULT NULL COMMENT '标签背景', `tag_color` varchar(20) DEFAULT NULL COMMENT '标签颜色', `usage_count` int(11) DEFAULT '0' COMMENT '使用次数', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`tag_id`), UNIQUE KEY `uk_tag_name` (`tag_name`), KEY `idx_usage_count` (`usage_count`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COMMENT='知识库标签表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_menus` -- DROP TABLE IF EXISTS `yz_menus`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_menus` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '菜单名称', `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '菜单路径', `parent_id` int(11) DEFAULT '0' COMMENT '父菜单ID,0表示顶级菜单', `icon` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '菜单图标', `order` int(11) DEFAULT '0' COMMENT '排序序号', `status` tinyint(4) DEFAULT '1' COMMENT '状态:0-禁用,1-启用', `is_show` int(11) DEFAULT NULL COMMENT '是否显示 0-不显示 1-显示', `component_path` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '组件路径', `is_external` tinyint(4) DEFAULT '0' COMMENT '是否外部链接:0-内部路由,1-外部链接', `external_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '外部链接地址', `menu_type` tinyint(4) DEFAULT '1' COMMENT '菜单类型:1-页面菜单,2-目录菜单,3-权限按钮', `permission` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '权限标识', `description` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '菜单描述', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)', `create_by` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人', `update_by` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人', PRIMARY KEY (`id`), KEY `idx_parent_id` (`parent_id`), KEY `idx_status` (`status`), KEY `idx_order` (`order`), KEY `idx_menu_type` (`menu_type`), KEY `idx_delete_time` (`delete_time`) ) ENGINE=InnoDB AUTO_INCREMENT=136 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单表(增强版)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_program_category` -- DROP TABLE IF EXISTS `yz_program_category`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_program_category` ( `category_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类ID', `category_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类名称', `category_desc` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分类描述', `parent_id` int(11) DEFAULT '0' COMMENT '父分类ID,0表示顶级分类', `sort_order` int(11) DEFAULT '0' COMMENT '排序序号,用于展示顺序', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`category_id`), KEY `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='程序分类表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_program_info` -- DROP TABLE IF EXISTS `yz_program_info`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_program_info` ( `program_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '程序ID', `category_id` int(11) NOT NULL COMMENT '所属分类ID', `program_name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '程序名称', `program_desc` text COLLATE utf8mb4_unicode_ci COMMENT '程序描述', `jump_url` varchar(1000) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '跳转地址', `icon_url` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '程序图标地址', `version` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '程序版本', `status` tinyint(4) DEFAULT '1' COMMENT '状态:0-禁用,1-启用', `sort_order` int(11) DEFAULT '0' COMMENT '排序序号,用于展示顺序', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`program_id`), KEY `idx_category_id` (`category_id`), KEY `idx_status` (`status`), CONSTRAINT `yz_fk_program_category` FOREIGN KEY (`category_id`) REFERENCES `yz_program_category` (`category_id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='程序信息表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_roles` -- DROP TABLE IF EXISTS `yz_roles`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_roles` ( `role_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色ID', `tenant_id` int(11) NOT NULL COMMENT '租户ID 0-全局角色 其他-各租户自设角色', `role_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色代码', `role_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称', `description` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '角色描述', `menu_ids` json DEFAULT NULL COMMENT '菜单权限ID数组,JSON格式存储', `status` tinyint(4) DEFAULT '1' COMMENT '角色状态:0-禁用,1-启用', `sort_order` int(11) DEFAULT '0' COMMENT '排序序号', `default` tinyint(4) NOT NULL DEFAULT '0' COMMENT '角色显示范围:0-全局展示,1-平台用户展示(yz_users),2-租户用户展示(yz_tenant_employees)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', `create_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人', PRIMARY KEY (`role_id`), UNIQUE KEY `uk_role_code` (`role_code`), KEY `idx_status` (`status`), KEY `idx_sort_order` (`sort_order`), KEY `idx_create_time` (`create_time`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_delete_time` (`delete_time`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenant_crm_contact` -- DROP TABLE IF EXISTS `yz_tenant_crm_contact`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenant_crm_contact` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID(关联租户表,隔离数据)', `related_type` tinyint(4) NOT NULL COMMENT '关联类型:1=客户,2=供应商(区分联系人归属)', `related_id` bigint(20) NOT NULL COMMENT '关联ID(关联yz_tenant_crm_customer.id或yz_tenant_crm_supplier.id)', `contact_name` varchar(50) NOT NULL COMMENT '联系人姓名', `gender` tinyint(4) DEFAULT '0' COMMENT '性别:0=未知,1=男,2=女', `mobile` varchar(20) DEFAULT NULL COMMENT '手机号(唯一索引,避免重复)', `phone` varchar(20) DEFAULT NULL COMMENT '固定电话', `email` varchar(100) DEFAULT NULL COMMENT '邮箱', `position` varchar(50) DEFAULT NULL COMMENT '职位(如:项目经理、采购负责人)', `department` varchar(50) DEFAULT NULL COMMENT '所属部门', `is_primary` tinyint(4) DEFAULT '0' COMMENT '是否主联系人:0=否,1=是(一个客户/供应商可设一个主联系人)', `remark` varchar(500) DEFAULT NULL COMMENT '备注(如:关键决策人、对接优先级等)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `create_by` bigint(20) DEFAULT NULL COMMENT '创建人ID(关联用户表)', `update_by` bigint(20) DEFAULT NULL COMMENT '更新人ID(关联用户表)', `is_deleted` tinyint(4) DEFAULT '0' COMMENT '逻辑删除:0=正常,1=删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_mobile` (`tenant_id`,`mobile`) COMMENT '同一租户内手机号唯一', KEY `idx_tenant_related` (`tenant_id`,`related_type`,`related_id`) COMMENT '查询租户下某客户/供应商的所有联系人', KEY `idx_contact_name` (`tenant_id`,`contact_name`) COMMENT '按姓名模糊查询联系人' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM联系人表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenant_crm_customer` -- DROP TABLE IF EXISTS `yz_tenant_crm_customer`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenant_crm_customer` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID', `tenant_id` varchar(64) NOT NULL COMMENT '租户ID', `customer_name` varchar(100) NOT NULL COMMENT '客户名称(企业/个人名称)', `customer_type` varchar(20) NOT NULL COMMENT '客户类型(1-企业/2-政府机构/3-国企/4-个人)', `contact_person` varchar(50) NOT NULL COMMENT '联系人姓名', `contact_phone` varchar(20) NOT NULL COMMENT '联系人电话', `contact_email` varchar(100) DEFAULT '' COMMENT '联系人邮箱', `customer_level` varchar(20) DEFAULT '3' COMMENT '客户等级(1-核心客户/2-重要客户/3-普通客户/4-潜在客户)', `industry` varchar(50) DEFAULT '' COMMENT '所属行业(如:互联网、金融、制造业、教育等)', `address` varchar(255) DEFAULT '' COMMENT '客户地址(详细地址)', `register_time` date DEFAULT NULL COMMENT '客户注册/合作起始日期', `expire_time` date DEFAULT NULL COMMENT '合作到期日期(无到期则为空)', `status` varchar(20) NOT NULL DEFAULT '1' COMMENT '客户状态(0-禁用/1-正常/2-冻结/3-已注销)', `remark` text COMMENT '客户备注', `invoice_title` varchar(100) DEFAULT '' COMMENT '发票抬头', `tax_number` varchar(50) DEFAULT '' COMMENT '纳税人识别号', `bank_name` varchar(100) DEFAULT '' COMMENT '开户行名称', `bank_account` varchar(50) DEFAULT '' COMMENT '开户行账号', `registered_address` varchar(255) DEFAULT '' COMMENT '注册地址', `registered_phone` varchar(50) DEFAULT '' COMMENT '注册电话', `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 '删除时间', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`) COMMENT '租户ID索引,优化多租户隔离查询', KEY `idx_customer_name` (`customer_name`) COMMENT '客户名称索引,优化按名称模糊查询', KEY `idx_contact_phone` (`contact_phone`) COMMENT '联系人电话索引,优化按电话精准查询', KEY `idx_status` (`status`) COMMENT '客户状态索引,优化按状态筛选(如:查询正常客户)', KEY `idx_register_time` (`register_time`) COMMENT '注册时间索引,优化按合作时间范围查询' ) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COMMENT='客户管理表(支持租户隔离、软删除、客户全生命周期追踪)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenant_crm_supplier` -- DROP TABLE IF EXISTS `yz_tenant_crm_supplier`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenant_crm_supplier` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID', `tenant_id` varchar(64) NOT NULL COMMENT '租户ID', `supplier_name` varchar(100) NOT NULL COMMENT '供应商名称(企业/个人名称)', `supplier_type` varchar(20) NOT NULL COMMENT '供应商类型', `contact_person` varchar(50) NOT NULL COMMENT '联系人姓名', `contact_phone` varchar(20) NOT NULL COMMENT '联系人电话', `contact_email` varchar(100) DEFAULT '' COMMENT '联系人邮箱', `supplier_level` varchar(20) DEFAULT '3' COMMENT '供应商等级(1-核心供应商/2-重要供应商/3-普通供应商/4-潜在供应商)', `industry` varchar(50) DEFAULT '' COMMENT '所属行业', `address` varchar(255) DEFAULT '' COMMENT '供应商地址', `register_time` date DEFAULT NULL COMMENT '供应商注册/合作起始日期', `expire_time` date DEFAULT NULL COMMENT '合作到期日期', `status` varchar(20) NOT NULL DEFAULT '1' COMMENT '供应商状态(0-禁用/1-正常/2-冻结/3-已注销)', `remark` text COMMENT '供应商备注', `invoice_title` varchar(100) DEFAULT '' COMMENT '发票抬头', `tax_number` varchar(50) DEFAULT '' COMMENT '纳税人识别号', `bank_name` varchar(100) DEFAULT '' COMMENT '开户行名称', `bank_account` varchar(50) DEFAULT '' COMMENT '开户行账号', `registered_address` varchar(255) DEFAULT '' COMMENT '注册地址', `registered_phone` varchar(50) DEFAULT '' COMMENT '注册电话', `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 '删除时间', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`) COMMENT '租户ID索引,优化多租户隔离查询', KEY `idx_supplier_name` (`supplier_name`) COMMENT '供应商名称索引,优化按名称模糊查询', KEY `idx_contact_phone` (`contact_phone`) COMMENT '联系人电话索引,优化按电话精准查询', KEY `idx_status` (`status`) COMMENT '供应商状态索引,优化按状态筛选', KEY `idx_register_time` (`register_time`) COMMENT '注册时间索引,优化按合作时间范围查询' ) ENGINE=InnoDB AUTO_INCREMENT=501 DEFAULT CHARSET=utf8mb4 COMMENT='供应商管理表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenant_departments` -- DROP TABLE IF EXISTS `yz_tenant_departments`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenant_departments` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门ID', `tenant_id` int(11) NOT NULL DEFAULT '0' COMMENT '租户ID', `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '部门名称', `code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '部门编码', `parent_id` int(11) DEFAULT '0' COMMENT '父部门ID,0表示顶级部门', `description` text COLLATE utf8mb4_unicode_ci COMMENT '部门描述', `manager_id` int(11) DEFAULT NULL COMMENT '部门经理ID', `sort_order` int(11) DEFAULT '0' COMMENT '排序序号', `status` tinyint(4) DEFAULT '1' COMMENT '状态:1-启用,0-禁用', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_code` (`code`), KEY `idx_parent_id` (`parent_id`), KEY `idx_status` (`status`), KEY `idx_sort_order` (`sort_order`), KEY `idx_delete_time` (`delete_time`), KEY `idx_tenant_delete` (`tenant_id`,`delete_time`) ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenant_employees` -- DROP TABLE IF EXISTS `yz_tenant_employees`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenant_employees` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '员工ID', `tenant_id` int(11) NOT NULL DEFAULT '0' COMMENT '租户ID', `employee_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '工号', `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名', `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号', `email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱', `department_id` int(11) DEFAULT NULL COMMENT '部门ID', `position_id` int(11) DEFAULT NULL COMMENT '职位ID', `role` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户角色', `bank_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '工资卡开户行', `bank_account` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '工资卡卡号', `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登录密码(加密后)', `salt` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码盐值', `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', `last_login_ip` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后登录IP', `status` tinyint(4) DEFAULT '1' COMMENT '状态:1-在职,0-离职', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_employee_no` (`employee_no`), KEY `idx_name` (`name`), KEY `idx_department_id` (`department_id`), KEY `idx_position_id` (`position_id`), KEY `idx_status` (`status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenant_positions` -- DROP TABLE IF EXISTS `yz_tenant_positions`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenant_positions` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '职位ID', `tenant_id` int(11) NOT NULL DEFAULT '0' COMMENT '租户ID', `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '职位名称', `code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '职位编码', `department_id` int(11) DEFAULT NULL COMMENT '所属部门ID', `level` int(11) DEFAULT '0' COMMENT '职位级别', `description` text COLLATE utf8mb4_unicode_ci COMMENT '职位描述', `sort_order` int(11) DEFAULT '0' COMMENT '排序序号', `status` tinyint(4) DEFAULT '1' COMMENT '状态:1-启用,0-禁用', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间(软删除)', PRIMARY KEY (`id`), KEY `idx_tenant_id` (`tenant_id`), KEY `idx_code` (`code`), KEY `idx_department_id` (`department_id`), KEY `idx_status` (`status`), KEY `idx_sort_order` (`sort_order`), KEY `idx_delete_time` (`delete_time`), KEY `idx_dept_delete_status` (`department_id`,`delete_time`,`status`) ) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='职位表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenant_tasks` -- DROP TABLE IF EXISTS `yz_tenant_tasks`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenant_tasks` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务ID(主键)', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID(多租户隔离,如无多租户需求可设为默认1)', `task_no` varchar(64) NOT NULL COMMENT '任务编号(唯一标识,如TASK20251112001)', `task_name` varchar(255) NOT NULL COMMENT '任务名称', `task_desc` text COMMENT '任务描述(富文本内容,支持图片/表格)', `task_type` varchar(32) DEFAULT 'common' COMMENT '任务类型(common=普通任务,project=项目任务,repeat=重复任务,可自定义)', `business_tag` varchar(64) DEFAULT NULL COMMENT '业务标签(多个标签用逗号分隔,如"紧急,日常协作")', `parent_task_id` bigint(20) DEFAULT NULL COMMENT '父任务ID(子任务关联用,无父任务则为NULL)', `project_id` bigint(20) DEFAULT NULL COMMENT '关联项目ID(关联OA项目模块)', `related_id` bigint(20) DEFAULT NULL COMMENT '关联其他模块ID(如审批单ID、客户ID)', `related_type` varchar(32) DEFAULT NULL COMMENT '关联模块类型(approval=审批单,customer=客户,为空则无关联)', `team_employee_ids` varchar(500) DEFAULT NULL COMMENT '团队成员', `creator_id` bigint(20) NOT NULL COMMENT '创建人ID', `creator_name` varchar(64) NOT NULL COMMENT '创建人姓名', `principal_id` bigint(20) NOT NULL COMMENT '负责人ID', `principal_name` varchar(64) NOT NULL COMMENT '负责人姓名', `participant_ids` varchar(512) DEFAULT NULL COMMENT '参与人ID(多个用逗号分隔)', `participant_names` varchar(512) DEFAULT NULL COMMENT '参与人姓名(多个用逗号分隔)', `cc_ids` varchar(512) DEFAULT NULL COMMENT '抄送人ID(多个用逗号分隔)', `cc_names` varchar(512) DEFAULT NULL COMMENT '抄送人姓名(多个用逗号分隔)', `plan_start_time` datetime DEFAULT NULL COMMENT '计划开始时间', `plan_end_time` datetime NOT NULL COMMENT '计划截止时间', `actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间', `actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间', `estimated_hours` decimal(10,2) DEFAULT NULL COMMENT '预估工时(小时)', `actual_hours` decimal(10,2) DEFAULT NULL COMMENT '实际工时(小时)', `task_status` varchar(32) NOT NULL DEFAULT 'not_started' COMMENT '任务状态(0-未开始,1-进行中,2-暂停,3-已完成,4-已关闭)', `priority` varchar(16) NOT NULL DEFAULT 'medium' COMMENT '优先级(0-高,1-中,2-低,3-紧急)', `progress` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务进度(0-100,子任务存在时自动计算)', `need_approval` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否需要完成审批(0=否,1=是)', `approval_id` bigint(20) DEFAULT NULL COMMENT '关联审批单ID(完成审批时填写)', `delay_approved` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已延期审批(0=否,1=是)', `old_plan_end_time` datetime DEFAULT NULL COMMENT '原计划截止时间(延期时记录)', `repeat_type` varchar(16) DEFAULT NULL COMMENT '重复类型(daily=按日,weekly=按周,monthly=按月,为空则非重复任务)', `repeat_cycle` int(11) DEFAULT NULL COMMENT '重复周期(如每周重复则为7,每月重复则为30)', `repeat_end_time` datetime DEFAULT NULL COMMENT '重复截止时间(重复任务终止时间)', `attachment_ids` varchar(1024) DEFAULT NULL COMMENT '附件ID(关联文件表,多个用逗号分隔)', `remark` varchar(512) DEFAULT NULL COMMENT '备注(额外说明)', `is_archived` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否归档(0=未归档,1=已归档)', `archive_time` datetime DEFAULT NULL COMMENT '归档时间', `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted_time` datetime DEFAULT NULL COMMENT '删除时间', `operator_id` bigint(20) DEFAULT NULL COMMENT '最后操作人ID', `operator_name` varchar(64) DEFAULT NULL COMMENT '最后操作人姓名', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_task_no` (`tenant_id`,`task_no`) COMMENT '租户+任务编号唯一索引', KEY `idx_tenant_principal` (`tenant_id`,`principal_id`) COMMENT '租户+负责人索引(查询个人任务)', KEY `idx_tenant_status` (`tenant_id`,`task_status`) COMMENT '租户+状态索引(筛选任务状态)', KEY `idx_tenant_project` (`tenant_id`,`project_id`) COMMENT '租户+项目索引(查询项目下任务)', KEY `idx_tenant_plan_end_time` (`tenant_id`,`plan_end_time`) COMMENT '租户+截止时间索引(逾期提醒、日历视图)', KEY `idx_parent_task_id` (`parent_task_id`) COMMENT '父任务ID索引(查询子任务)' ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='OA系统任务表(多租户适配)'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_tenants` -- DROP TABLE IF EXISTS `yz_tenants`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_tenants` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '租户ID', `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户名称', `code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户编码(唯一)', `owner` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '负责人', `phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '联系电话', `email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱地址', `status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态:1-启用,0-禁用', `audit_status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'pending' COMMENT '审核状态:pending-待审核,approved-已通过,rejected-已拒绝', `audit_comment` text COLLATE utf8mb4_unicode_ci COMMENT '审核意见', `audit_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核人', `audit_time` datetime DEFAULT NULL COMMENT '审核时间', `capacity` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '分配空间容量(MB)', `capacity_used` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '已用空间容量(MB)', `attachment_url` longtext COLLATE utf8mb4_unicode_ci COMMENT '附件', `remark` text COLLATE utf8mb4_unicode_ci COMMENT '备注', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', `create_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人', PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`), KEY `idx_name` (`name`), KEY `idx_owner` (`owner`), KEY `idx_status` (`status`), KEY `idx_audit_status` (`audit_status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='租户表'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `yz_users` -- DROP TABLE IF EXISTS `yz_users`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `yz_users` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `tenant_id` int(11) DEFAULT NULL COMMENT '租户ID', `username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名', `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '加密后的密码', `salt` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码盐值', `email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱地址', `avatar` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像URL', `nickname` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '昵称', `role` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'user' COMMENT '用户角色', `department_id` int(11) DEFAULT NULL COMMENT '部门ID', `position_id` int(11) DEFAULT NULL COMMENT '职位ID', `status` tinyint(4) DEFAULT '1' COMMENT '用户状态:0-禁用,1-启用', `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', `last_login_ip` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后登录IP', `login_count` int(11) DEFAULT '0' COMMENT '登录次数', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` datetime DEFAULT NULL COMMENT '删除时间', `create_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), KEY `idx_email` (`email`), KEY `idx_role` (`role`), KEY `idx_status` (`status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; CREATE TABLE `yz_exam_question` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '试题唯一标识', `tenant_id` int(11) NOT NULL COMMENT '租户ID(多租户隔离)', `question_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '题型(1-单选,2-多选,3-判断,4-填空,5-简答)', `question_title` varchar(1000) NOT NULL COMMENT '题干内容', `question_analysis` varchar(2000) DEFAULT '' COMMENT '试题解析', `score` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT '试题分值', `sort_order` tinyint(4) DEFAULT 0 COMMENT '排序序号', `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态(1-启用,0-禁用)', `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 '删除时间(软删除)', PRIMARY KEY (`id`), -- 核心联合索引:租户+状态+删除时间(查询可用试题) KEY `idx_tenant_status_delete` (`tenant_id`, `status`, `delete_time`), -- 联合索引:租户+题型+删除时间(筛选特定题型试题) KEY `idx_tenant_type_delete` (`tenant_id`, `question_type`, `delete_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='试题主表(通用型+多租户隔离+软删除)'; CREATE TABLE `yz_exam_question_option` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '选项唯一标识', `tenant_id` int(11) NOT NULL COMMENT '租户ID(多租户隔离)', `question_id` bigint(20) NOT NULL COMMENT '关联试题主表ID', `option_label` varchar(10) NOT NULL COMMENT '选项标签(A/B/C/D/对/错)', `option_content` varchar(500) NOT NULL COMMENT '选项内容', `sort_order` tinyint(4) DEFAULT 0 COMMENT '排序序号', `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 '删除时间(软删除)', PRIMARY KEY (`id`), -- 核心联合索引:租户+试题ID+删除时间(查询某试题所有选项) KEY `idx_tenant_question_delete` (`tenant_id`, `question_id`, `delete_time`), -- 联合索引:租户+试题ID+选项标签+删除时间(快速定位选项) KEY `idx_tenant_question_label_delete` (`tenant_id`, `question_id`, `option_label`, `delete_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='试题选项表(客观题专用+多租户隔离+软删除)'; CREATE TABLE `yz_exam_question_answer` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '答案唯一标识', `tenant_id` int(11) NOT NULL COMMENT '租户ID(多租户隔离)', `question_id` bigint(20) NOT NULL COMMENT '关联试题主表ID', `answer_content` varchar(1000) NOT NULL COMMENT '正确答案(客观题存标签,主观题存文字)', `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 '删除时间(软删除)', PRIMARY KEY (`id`), -- 核心联合索引:租户+试题ID+删除时间(查询某试题正确答案) KEY `idx_tenant_question_delete` (`tenant_id`, `question_id`, `delete_time`), -- 唯一索引:同一租户下同一试题只能有一个正确答案 UNIQUE KEY `uk_tenant_question` (`tenant_id`, `question_id`, `delete_time`) COMMENT '软删除状态下试题答案唯一' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='试题答案表(通用答案存储+多租户隔离+软删除)';