|
|
||
|---|---|---|
| .. | ||
| 01_learning_system_init.sql | ||
| 02_learning_system_roles.sql | ||
| README.md | ||
| 执行说明.txt | ||
README.md
学习系统SQL执行指南
📋 执行顺序
请按照以下顺序执行SQL文件:
1. 基础初始化(必须执行)
-- 执行学习系统基础配置
source server/sql/01_learning_system_init.sql;
包含内容:
- ✅ 8个数据字典(课程难度、课程状态、章节状态、知识点状态、题目类型、题目难度、学习状态、考试状态)
- ✅ 所有字典详情配置
- ✅ 教学管理和在线学习两个主菜单
- ✅ 10个子菜单(6个教学管理 + 4个学生学习)
- ✅ 70个API权限配置(8个模块完整覆盖)
2. 角色权限配置(推荐执行)
-- 执行角色权限配置
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 中的测试用户部分:
-- 教师测试账号
用户名: teacher
密码: 123456
-- 学生测试账号
用户名: student
密码: 123456
📊 验证执行结果
1. 验证字典配置
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. 验证菜单配置
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权限
SELECT api_group, COUNT(*) as api_count
FROM sys_apis
WHERE api_group IN ('课程管理', '章节管理', '知识点管理', '题目管理', '考试管理', '学习记录管理', '错题本管理', '用户考试记录管理')
GROUP BY api_group
ORDER BY api_group;
4. 验证角色权限
SELECT v0 as role, COUNT(*) as api_count
FROM casbin_rule
WHERE v0 IN ('teacher', 'student') AND ptype = 'p'
GROUP BY v0;
⚠️ 注意事项
- 执行顺序很重要:必须先执行
learning_system_init.sql,再执行learning_system_roles.sql - 数据库备份:执行前建议备份数据库
- 权限检查:确保数据库用户有足够的权限执行这些SQL语句
- 重复执行:如果需要重复执行,请先清理相关数据或使用
INSERT IGNORE语句
🚀 快速开始
如果您想快速体验完整的学习系统,只需执行:
# 进入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;
执行完成后,重启您的应用程序,就可以体验完整的学习系统了!
📞 问题反馈
如果在执行过程中遇到问题,请检查:
- 数据库连接是否正常
- 用户权限是否足够
- 表结构是否已通过应用程序自动创建
- SQL语法是否与您的MySQL版本兼容