# 学习系统SQL执行指南 ## 📋 执行顺序 请按照以下顺序执行SQL文件: ### 1. 基础初始化(必须执行) ```sql -- 执行学习系统基础配置 source server/sql/01_learning_system_init.sql; ``` **包含内容:** - ✅ 8个数据字典(课程难度、课程状态、章节状态、知识点状态、题目类型、题目难度、学习状态、考试状态) - ✅ 所有字典详情配置 - ✅ 教学管理和在线学习两个主菜单 - ✅ 10个子菜单(6个教学管理 + 4个学生学习) - ✅ 70个API权限配置(8个模块完整覆盖) ### 2. 角色权限配置(推荐执行) ```sql -- 执行角色权限配置 source server/sql/02_learning_system_roles.sql; ``` **包含内容:** - ✅ 创建教师角色(teacher)和学生角色(student) - ✅ 为教师分配教学管理菜单和完整API权限(70个API) - ✅ 为学生分配在线学习菜单和相应API权限(30个API) - ✅ 可选的测试用户创建 ## 🎯 执行后效果 ### 教师用户登录后: - 默认跳转到 `/learning` 路径 - 看到"教学管理"菜单,包含: - 课程管理 - 章节管理 - 知识点管理 - 题目管理 - 考试管理 - 学习记录 - 拥有所有教学相关API的完整权限 ### 学生用户登录后: - 默认跳转到 `/student` 路径 - 看到"在线学习"菜单,包含: - 学习首页(现代化Dashboard) - 我的课程 - 在线考试 - 我的错题 - 拥有学习相关API的查看和个人数据管理权限 ## 🔧 可选配置 ### 创建测试用户 如果需要测试用户,可以取消注释 `learning_system_roles.sql` 中的测试用户部分: ```sql -- 教师测试账号 用户名: teacher 密码: 123456 -- 学生测试账号 用户名: student 密码: 123456 ``` ## 📊 验证执行结果 ### 1. 验证字典配置 ```sql SELECT d.name, d.type, COUNT(dd.id) as detail_count FROM sys_dictionaries d LEFT JOIN sys_dictionary_details dd ON d.id = dd.sys_dictionary_id WHERE d.type LIKE '%course%' OR d.type LIKE '%chapter%' OR d.type LIKE '%knowledge%' OR d.type LIKE '%question%' OR d.type LIKE '%learning%' OR d.type LIKE '%exam%' GROUP BY d.id, d.name, d.type ORDER BY d.id; ``` ### 2. 验证菜单配置 ```sql SELECT id, menu_level, parent_id, path, name, title, icon FROM sys_base_menus WHERE name IN ('learning', 'student') OR parent_id IN ( SELECT id FROM sys_base_menus WHERE name IN ('learning', 'student') ) ORDER BY menu_level, parent_id, sort; ``` ### 3. 验证API权限 ```sql SELECT api_group, COUNT(*) as api_count FROM sys_apis WHERE api_group IN ('课程管理', '章节管理', '知识点管理', '题目管理', '考试管理', '学习记录管理', '错题本管理', '用户考试记录管理') GROUP BY api_group ORDER BY api_group; ``` ### 4. 验证角色权限 ```sql SELECT v0 as role, COUNT(*) as api_count FROM casbin_rule WHERE v0 IN ('teacher', 'student') AND ptype = 'p' GROUP BY v0; ``` ## ⚠️ 注意事项 1. **执行顺序很重要**:必须先执行 `learning_system_init.sql`,再执行 `learning_system_roles.sql` 2. **数据库备份**:执行前建议备份数据库 3. **权限检查**:确保数据库用户有足够的权限执行这些SQL语句 4. **重复执行**:如果需要重复执行,请先清理相关数据或使用 `INSERT IGNORE` 语句 ## 🚀 快速开始 如果您想快速体验完整的学习系统,只需执行: ```bash # 进入MySQL命令行 mysql -u your_username -p your_database # 执行初始化脚本 source server/sql/01_learning_system_init.sql; # 执行角色权限脚本 source server/sql/02_learning_system_roles.sql; # 退出MySQL exit; ``` 执行完成后,重启您的应用程序,就可以体验完整的学习系统了! ## 📞 问题反馈 如果在执行过程中遇到问题,请检查: 1. 数据库连接是否正常 2. 用户权限是否足够 3. 表结构是否已通过应用程序自动创建 4. SQL语法是否与您的MySQL版本兼容