返回作品

绝知(juezhi)——基于芋道 yudao 的校园管理实践平台

创建于 2026 年 1 月 1 日

标签
  • Spring Boot 3
  • 芋道 yudao 框架
  • MyBatis Plus
  • Spring Security
  • Redis
  • MySQL 8
  • Vue 3
  • Element Plus
  • Vite

项目介绍

“纸上得来终觉浅,绝知此事要躬行”——这个项目名「绝知」本身就是对项目定位最好的注脚:与其停留在阅读框架文档,不如基于一个成熟的企业级快速开发平台,亲手把一套完整业务”躬行”一遍。项目以芋道 yudao(ruoyi-vue-pro 完整版)为底座,在其系统模块中新增了校园管理(campus)业务域,覆盖学生、教师、课程、选课、考试成绩五个环节,构成”建学生档案 → 录教师信息 → 开课排课 → 学生选课 → 考试录分”的完整教学管理闭环。

项目后端基于 JDK 17 + Spring Boot 3.x(README 徽章标注 3.4.5),前端采用 Vue 3 + Element Plus 管理后台(UI/vue3-admin)。部署形态上,yudao-server 只启用了 yudao-module-systemyudao-module-infra 两个模块,其余商城、工作流、CRM、ERP 等业务模块全部按需裁剪,保持了”框架底座 + 单一业务域”的清爽结构,非常适合作为学习 yudao 架构与 Java 企业级开发的实践载体。

项目架构

项目沿用 yudao 经典的多模块 Maven 工程:yudao-dependencies(依赖版本管理)、yudao-framework(通用框架层,含 security、mybatis、redis、web 等 starter)、yudao-module-system(系统与业务模块)、yudao-module-infra(基础设施模块)与 yudao-server(启动入口)。数据库采用 MySQL,数据访问基于 MyBatis Plus,认证授权基于 Spring Security + Token + Redis,支持多终端登录与 SaaS 多租户;服务端还内置了操作日志、定时任务、文件存储、API 日志、代码生成等基础设施。

校园业务代码统一收拢在 yudao-module-systemcampus 包内,遵循 yudao 标准的分层规范:controller(REST 接口,统一 /system/campus/* 前缀)→ service(业务逻辑)→ dal/mysql(Mapper)→ dal/dataobject(DO 实体),VO 按 student、teacher、course、selection、exam 五个子域组织,接口通过 @PreAuthorize("@ss.hasPermission('campus:xxx:query')") 做按钮级权限控制,并完整继承 yudao 的审计字段(creator/updater/时间戳)与租户字段。

数据库侧提供独立的实践脚本 docs/script/sql/campus_management_practice_mysql.sql:定义 campus_teachercampus_studentcampus_coursecampus_course_selectioncampus_exam_record 五张业务表,通过外键关联 system_users(学生/教师复用系统账号)与 campus_coursecampus_course_selection 等表;另建 5 个视图(如 campus_student_detail_vcampus_course_pass_stat_vcampus_pending_exam_detail_v),将学生总分、课程及格人数、待录成绩等聚合指标放在数据库视图层动态统计,主表不冗余存储。

核心功能

  • 学生管理:维护学号、姓名、性别、手机号、入学年份、班级、状态等字段;学号唯一索引防重,user_id 唯一关联系统用户实现账号打通,支持按班级、入学年份、状态分页筛选,学生总分通过视图动态统计。
  • 教师管理:维护教师工号、姓名、手机号等基础信息,同样关联系统用户;提供”教师简易列表”接口供课程表单下拉选择任课教师。
  • 课程管理:课程编码唯一,绑定任课教师(teacher_id),配置学分与及格分(默认 60 分);分页接口通过 campus_course_detail_v 视图带出及格人数等统计信息。
  • 选课管理:以”学生 + 课程 + 学年 + 学期”为维度记录选课,唯一索引 uk_student_course_term_deleted 从数据库层杜绝重复选课,CHECK 约束限定学期只能为上学期/下学期。
  • 考试记录管理:成绩关联选课记录(selection_id 唯一),CHECK 约束保证分数在 0-100 之间;提供”待录成绩分页”(基于视图列出尚未录分的选课)与”我的成绩分页”(通过 getLoginUserId() 按当前登录用户自动过滤),贴合教师录分、学生查分的真实场景。

功能截图

暂无运行截图。

快速上手

项目沿用 yudao 标准启动流程。首先准备 MySQL(8.0+)与 Redis:创建数据库后导入基础脚本 docs/script/sql/mysql/ruoyi-vue-pro.sql(框架系统表与菜单数据),再执行 docs/script/sql/campus_management_practice_mysql.sql 初始化校园业务表、外键与统计视图。

后端在项目根目录执行 mvn install -DskipTests 编译,然后启动 yudao-server 模块(默认端口 48080),数据库连接、Redis 地址等配置位于 yudao-server/src/main/resources/application-local.yaml。前端进入 UI/vue3-admin 目录,执行 npm install 安装依赖后 npm run dev 启动开发服务器,浏览器访问管理后台即可使用;校园模块菜单需要拥有对应权限码(如 campus:student:query)的账号。仓库同时提供了 Docker Compose(docs/script/docker)与部署脚本(docs/script/shell/deploy.sh)可供一键环境编排或生产发布参考。

总结

绝知项目的价值不在于发明新框架,而在于”在真实框架里走通一条真实业务线”:它以芋道 yudao 完整版为底座,按 yudao 的分层与权限规范新增了学生、教师、课程、选课、考试五张表与对应接口、页面,把”照着文档学”变成”动手实现一个教学管理系统”。数据库层用视图承载聚合统计、用唯一索引与 CHECK 约束兜底业务规则,是值得借鉴的建模细节;权限点、审计字段、多租户等能力则直接复用了框架既有设施,展示了企业级快速开发平台的正确打开方式。

在此基础上,项目还留有清晰的演进空间:可以继续引入 yudao 的 BPM 工作流模块做请假/调课审批,接入支付模块做学费缴纳,或者用代码生成器把新增业务表一键生成 CRUD 页面,进一步体验”框架 + 业务”的高效组合拳。