校园智慧后勤管理系统的设计与实现(SpringBoot+Vue+JWT,RBAC 动态菜单前后端分离源码)
前言
一所校园的后勤部门,日常要跟多少套台账打交道?宿舍楼门禁的通行记录是一张表,仓库里的灭火器和维修工具是一张表,学生手里的 IC 卡余额是一张表,再加上公告通知、维修动态,基本全靠 Excel 和纸质单据在几个科室之间流转。人一多、楼一多,账目对不上、责任理不清的问题就来了。
这个项目把这套后勤台账搬到了线上:门禁通行、物料库存、IC 卡账户、学生住宿信息、消息公告全部入库管理,再配一套完整的用户-角色-菜单权限体系,不同科室登录后只看得到自己的业务模块。项目采用前后端分离架构,后端 Spring Boot + MyBatis-Plus 提供纯 REST 接口,前端 Vue2 + Element UI 渲染,JWT 令牌维持登录态——是学习 RBAC 权限设计和前后端分离工程组织的一个规整样本。
技术栈
- 后端:Spring Boot 2.5 + MyBatis-Plus 3.5,RESTful 风格接口,业务报表通过 Apache POI 支持 Excel 导入导出;
- 认证:JWT 无状态令牌。登录成功后签发 Token,前端存入 localStorage,此后每个请求在请求头携带
token字段,拦截器统一校验解析; - 权限:经典 RBAC 三件套——用户表、角色表、菜单表,外加角色-菜单关联表。登录接口不仅返回用户信息,还一并下发该角色可见的菜单树,前端据此动态注册路由、渲染侧边栏,没有权限的页面连路由都不存在;
- 前端:Vue2 + Vue Router + Vuex + Element UI,webpack 打包;管理端与面向学生的前台门户共用一个工程,通过路由分区;
- 数据库:MySQL 5.7,utf8mb4 字符集,12 张表。
整个工程构建后是一个可执行 jar,前端构建产物直接内嵌其中——部署时只需要一个 MySQL 和一条java -jar命令,浏览器打开就是一个完整的后勤管理系统。
功能设计
系统按业务域划分为三大块:后勤管理(门禁、物料、消息、IC 卡、学生)、系统管理(用户、角色、菜单、文件)和面向普通用户的前台门户。整体功能结构如下图。
后勤管理:
- 门禁管理:登记人员通行授权与通行记录,含生效时间、结束时间、门禁数量与状态,支持按姓名检索;
- 物料管理:后勤物资台账,记录物资名称、库存数量、所属区域与备注,支撑库存盘点;
- IC 卡余额管理:维护每张卡的持卡人、当前余额与累计消费,宿舍水电、食堂消费都能挂在这套账上;
- 学生基本信息:学生的宿舍号、班级、年龄、证件信息与佐证材料,支持 Excel 批量导入导出;
- 消息管理与消息分类:公告、维修动态、政策文件按类型发布,前台门户同步展示。
系统管理(RBAC):
- 用户管理:账号的增删改查与角色分配;
- 角色管理:角色定义与菜单授权,勾选即生效;
- 菜单管理:菜单树维护,菜单项与前端页面组件一一对应;
- 文件管理:上传到服务器的资料文件统一归档管理;
前台门户:普通用户登录后可在前台查看消息公告、维护个人资料与修改密码。
登录后进入后台主页,左侧菜单完全由当前账号的角色权限动态生成——这正是 RBAC 动态菜单方案最直观的验证方式。
数据库设计
数据库db_intelligent_logistics共 12 张表,整体 E-R 关系如下。
核心表结构:
| 表名 | 说明 | 关键字段 |
|---|---|---|
| t_entrance_guard | 门禁通行 | 姓名、状态、证件号、门禁数量、生效/结束时间 |
| t_goods | 物料台账 | 物资名称、库存数量、所属区域及编号、备注 |
| t_ic_card | IC 卡账户 | 卡号、持卡人、余额、累计金额、备注 |
| t_student | 学生信息 | 姓名、性别、年龄、证件号、宿舍号、班级、佐证文件 |
| t_news / t_news_type | 消息与分类 | 标题、正文、作者、类型 |
| sys_user / sys_role / sys_menu / sys_role_menu | RBAC 权限四件套 | 账号密码、角色标识、菜单树、角色-菜单关联 |
| sys_dict / sys_file | 数据字典与上传文件 | 图标字典、上传文件登记 |
权限四件套的关系值得细看:菜单表以pid组织成树,page_path字段直接对应前端页面组件名;角色-菜单关联表决定每个角色能看到哪些节点;登录接口把菜单树一次性下发给前端,前端setRoutes拿它动态注册路由。新增一个业务页面时,只需要在菜单表里插一行记录,所有拥有该菜单的角色自动可见——扩展成本非常低。
系统演示
门禁管理页提供按姓名搜索、批量删除与分页,表格列出每条通行授权的状态、证件号与生效区间,编辑和删除操作就近放置。
物料管理页维护各区域的物资库存,搜索、重置、新增、批量删除一应俱全。
学生基本信息页集中管理住宿学生的档案,配合 POI 导入导出可以和线下 Excel 无缝衔接。
消息管理按分类发布公告与动态,前台门户同步展示,形成"后台运营、前台消费"的闭环。
小结
这个项目的价值在于把"前后端分离 + RBAC 动态权限"这套在企业管理系统里最常用的组合跑通了一遍:JWT 无状态认证、菜单树驱动的前端动态路由、按角色收敛的数据可见性,每一环都有可以直接参考的实现。后勤业务的建模(门禁、物料、IC 卡、学生)贴近真实校园场景,拿来作为毕业设计、课程设计或者后勤信息化的起步模板都合适。
工程内含数据库初始化脚本与部署说明,导入 MySQL、java -jar启动后即可登录体验。对 RBAC 设计、JWT 认证或 MyBatis-Plus 用法有疑问的话,欢迎评论区交流。
完整工程已整理上传(含前后端源码、数据库脚本与部署说明):
校园智慧后勤管理系统源码(SpringBoot+Vue 前后端分离)
如果在实现类似系统时遇到问题,欢迎评论区交流。