Study/server/sql/README.md

143 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 学习系统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版本兼容