Study/server/sql/README.md

3.9 KiB
Raw Permalink Blame History

学习系统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;

⚠️ 注意事项

  1. 执行顺序很重要:必须先执行 learning_system_init.sql,再执行 learning_system_roles.sql
  2. 数据库备份:执行前建议备份数据库
  3. 权限检查确保数据库用户有足够的权限执行这些SQL语句
  4. 重复执行:如果需要重复执行,请先清理相关数据或使用 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;

执行完成后,重启您的应用程序,就可以体验完整的学习系统了!

📞 问题反馈

如果在执行过程中遇到问题,请检查:

  1. 数据库连接是否正常
  2. 用户权限是否足够
  3. 表结构是否已通过应用程序自动创建
  4. SQL语法是否与您的MySQL版本兼容