# 数据库脚本说明文档 ## 脚本分类 ### 核心系统脚本(必需) 系统运行的基础,必须导入: | 脚本文件 | 说明 | 包含模块 | |---------|------|---------| | yushu_core.sql | 核心系统数据库 | 用户、角色、权限、菜单、部门、岗位、字典、配置、日志、定时任务(Quartz)、文件管理、消息中心、待办事项、错误日志 | ### 扩展模块脚本(可选) 根据业务需求选择性导入: | 脚本文件 | 功能模块 | 说明 | |---------|---------|------| | yushu_module_ai.sql | AI助手 | 集成多家AI厂商(智谱、Kimi、OpenAI等),支持流式对话、多轮会话 | | yushu_module_mail.sql | 邮件系统 | 企业邮箱配置、邮件模板、发送日志、IMAP收信 | --- ## ID分配规则 为了避免模块间ID冲突,系统采用分段ID管理: ### 核心系统 - 用户ID: 1-99 - 角色ID: 1-99 - 部门ID: 100-199 - 岗位ID: 1-99 - 菜单ID: 1-2999 - 一级菜单: 1-10 - 二级菜单: 100-199 - 三级菜单: 500-599 - 按钮权限: 1000-1999 - 文件管理: 200, 1200-1299 - 消息中心: 2100-2299 - 待办事项: 2300-2399 - 错误日志: 2400-2499 ### AI扩展模块 - 菜单ID: 3000-3999 - 一级菜单: 3000 - 二级菜单: 3001-3099 - 按钮权限: 3100-3399 - AI服务ID: 10001-19999 - 会话ID: 自动增长(100001起) - 消息ID: 自动增长 ### 邮件扩展模块 - 菜单ID: 4000-4999 - 一级菜单: 4000 - 二级菜单: 4001-4099 - 按钮权限: 4100-4599 - 邮箱配置ID: 20001-29999 - 邮件模板ID: 30001-39999 - 发送日志ID: 自动增长 - 收件箱ID: 自动增长 --- ## 快速导入 ### 方式一:命令行导入(推荐) ```bash # 1. 创建数据库 mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS yushu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" # 2. 进入SQL目录 cd yushu-backend/sql # 3. 导入核心系统(必需) mysql -u root -p yushu < yushu_core.sql # 4. 根据需要导入扩展模块 mysql -u root -p yushu < yushu_module_ai.sql mysql -u root -p yushu < yushu_module_mail.sql ``` ### 方式二:一键导入所有模块 ```bash cd yushu-backend/sql # Windows for %f in (yushu_core.sql yushu_module_ai.sql yushu_module_mail.sql) do mysql -u root -p yushu < %f # Linux/Mac for file in yushu_core.sql yushu_module_ai.sql yushu_module_mail.sql; do echo "正在导入 $file ..." mysql -u root -p yushu < $file done ``` ### 方式三:使用数据库工具 使用 Navicat、DBeaver、MySQL Workbench 等工具: 1. 连接到 MySQL 服务器 2. 创建数据库 yushu(字符集utf8mb4) 3. 依次执行 SQL 脚本文件 --- ## 模块依赖关系 ``` yushu_core.sql (核心系统 - 必需) | +-- 包含:系统核心 + 定时任务 + 文件 + 消息 + 待办 + 错误日志 | v [扩展模块 - 可选,无依赖关系] | +-- yushu_module_ai.sql (AI助手) +-- yushu_module_mail.sql (邮件系统) ``` --- ## 脚本详细说明 ### 1. yushu_core.sql - 核心系统(必需) **包含模块:** **系统核心:** - sys_user - 用户信息表 - sys_role - 角色信息表 - sys_menu - 菜单权限表 - sys_dept - 部门表 - sys_post - 岗位表 - sys_dict_type / sys_dict_data - 字典表 - sys_config - 参数配置表 - sys_notice - 通知公告表 - sys_oper_log - 操作日志表 - sys_logininfor - 登录日志表 - sys_user_role - 用户角色关联表 - sys_role_menu - 角色菜单关联表 - sys_role_dept - 角色部门关联表 - sys_user_post - 用户岗位关联表 **定时任务(Quartz):** - QRTZ_JOB_DETAILS - 任务详情 - QRTZ_TRIGGERS - 触发器 - QRTZ_CRON_TRIGGERS - Cron触发器 - QRTZ_SIMPLE_TRIGGERS - 简单触发器 - QRTZ_SIMPROP_TRIGGERS - 属性触发器 - QRTZ_BLOB_TRIGGERS - Blob触发器 - QRTZ_CALENDARS - 日历信息 - QRTZ_PAUSED_TRIGGER_GRPS - 暂停的触发器组 - QRTZ_FIRED_TRIGGERS - 已触发的触发器 - QRTZ_SCHEDULER_STATE - 调度器状态 - QRTZ_LOCKS - 锁信息 **文件管理:** - sys_folder - 文件夹表 - sys_file - 文件信息表 - sys_file_share - 文件分享表 **消息中心:** - sys_notification - 系统通知表 - sys_notification_receiver - 通知接收记录表 **待办事项:** - sys_todo - 待办事项表 **错误日志:** - sys_error_log - 错误日志表 **初始数据:** - 管理员账号:admin / admin123 - 测试账号:ry / admin123 - 默认角色:超级管理员、普通角色 - 系统菜单结构(包含文件、消息、待办、错误日志菜单) - 基础部门和岗位数据 - 字典类型和数据 - 系统参数配置 ### 2. yushu_module_ai.sql - AI助手模块(可选) **包含表:** - ai_service - AI服务配置表(厂商、模型、API配置) - ai_chat_session - 对话会话表 - ai_chat_message - 对话消息表 **包含菜单:** - AI管理(一级菜单) - 服务管理、对话测试、会话记录(二级菜单) - 完整的按钮权限 **支持的AI厂商:** - OpenAI (GPT-4, GPT-3.5-turbo) - 智谱AI (GLM-4, GLM-3-turbo) - 阿里云 (Qwen-Max, Qwen-Plus) - 百度 (ERNIE-Bot-4, ERNIE-Bot-turbo) - Moonshot (Kimi) - Ollama (本地部署) **功能特性:** - 多厂商统一接口 - 流式输出支持 - 多轮对话上下文管理 - 模型参数配置 - 对话历史记录 **初始数据:** - 5个预配置的AI服务(需配置API密钥) ### 3. yushu_module_mail.sql - 邮件系统模块(可选) **包含表:** - sys_mail_config - 邮箱配置表 - sys_mail_template - 邮件模板表 - sys_mail_log - 邮件发送日志表 - sys_mail_inbox - 收件箱表 **包含菜单:** - 邮件管理(一级菜单) - 邮箱配置、邮件模板、发送邮件、发送日志、收件箱(二级菜单) - 完整的按钮权限 **支持的邮箱类型:** - 阿里云企业邮箱(SMTP/API) - 腾讯企业邮箱(SMTP/API) - 网易企业邮箱(SMTP) - 自定义SMTP服务器 **功能特性:** - 多邮箱配置管理 - 邮件模板管理 - 变量替换 - 发送日志记录 - 支持HTML/纯文本 - IMAP协议收信 - 邮件列表管理 - 附件信息记录 - 已读/未读状态 - 星标标记 **初始数据:** - 1个阿里云邮箱配置示例 - 3个邮件模板(用户注册、密码重置、系统通知) --- ## 注意事项 ### 导入顺序 1. 必须先导入 yushu_core.sql(核心系统) 2. 扩展模块可以任意顺序导入 3. 扩展模块之间无依赖关系 ### 字符集要求 - 数据库字符集:utf8mb4 - 排序规则:utf8mb4_general_ci - 确保支持中文和emoji表情 ### ID冲突避免 - 各模块使用独立的ID范围 - 核心系统使用明确的ID(不使用AUTO_INCREMENT) - 扩展模块的主要实体使用明确的ID范围 - 日志类表使用AUTO_INCREMENT ### 重复导入 - 所有脚本包含 DROP TABLE IF EXISTS - 可以安全地重复执行 - 注意:重复导入会清空现有数据 ### 生产环境 - 导入前务必备份数据库 - 建议先在测试环境验证 - 检查MySQL版本兼容性(>= 5.7) --- ## 数据库清理 如需重新初始化数据库: ```sql -- 删除数据库 DROP DATABASE IF EXISTS yushu; -- 重新创建数据库 CREATE DATABASE yushu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 使用数据库 USE yushu; ``` --- ## 常见问题 ### Q: 导入时报字符集错误? A: 确保数据库使用utf8mb4字符集: ```sql ALTER DATABASE yushu CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` ### Q: 导入时报权限错误? A: 确保MySQL用户有足够权限: ```sql GRANT ALL PRIVILEGES ON yushu.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES; ``` ### Q: 如何只导入部分模块? A: 只导入需要的SQL文件即可,但必须先导入核心脚本(yushu_core.sql) ### Q: 如何卸载某个扩展模块? A: 删除对应的表和菜单: ```sql -- 示例:卸载AI模块 DROP TABLE IF EXISTS ai_service; DROP TABLE IF EXISTS ai_chat_session; DROP TABLE IF EXISTS ai_chat_message; DELETE FROM sys_menu WHERE menu_id >= 3000 AND menu_id < 4000; ``` ### Q: 旧版本如何升级到新版本? A: 1. 备份现有数据库 2. 导出重要业务数据 3. 删除旧数据库 4. 导入新版本SQL脚本 5. 恢复业务数据 --- ## 技术支持 如遇到导入问题,请检查: 1. MySQL版本是否 >= 5.7 2. 数据库字符集是否为 utf8mb4 3. 用户权限是否足够 4. SQL文件编码是否为 UTF-8 5. 磁盘空间是否充足