143 lines
3.9 KiB
Markdown
143 lines
3.9 KiB
Markdown
# 学习系统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版本兼容
|