1. 项目简介
校园管理系统是一个基于Spring Boot + Vue.js的全栈应用,专注于高校内部的多角色协作管理。系统实现了院校管理、单位管理、用户管理、通知推送、投票管理等功能模块,满足管理员、院校管理员、普通用户三类角色的不同操作需求。核心目标是提升校园管理效率,实现通知精准推送与数据可视化统计。
2. 技术栈
后端技术
- 框架: Spring Boot 2.2.2.RELEASE
- ORM: MyBatis-Plus 2.3
- 安全控制: Apache Shiro 1.3.2
- 数据库: MySQL 5.7 / SQL Server
- 工具库: Hutool 4.0.12, Fastjson 1.2.8
- API文档: 通过RESTful接口交互
前端技术
- 框架: Vue.js + Vue Router
- UI组件: Element UI
- 状态管理: Vuex
- 地图集成: Vue AMap(高德地图)
- 图表: ECharts
- 工具: Axios, MD5加密
部署
- 前端构建: Webpack
- 权限控制: 动态路由 + RBAC角色模型
3. 详细介绍
功能模块
- 权限管理
- 三类角色:超级管理员、院校管理员、普通用户
- 基于Token的鉴权(JWT模式)
- 动态菜单生成(不同角色显示不同菜单)
- 院校管理
- 学院信息维护(名称、简介、职工人数)
- 资料文件上传/下载
- 单位管理
- 单位分类(如:教职工、学生组织)
- 单位成员管理(个人信息、联系方式)
- 通知系统
- 院校管理员 → 用户的消息推送
- 用户消息回复与追踪
- 实时消息状态看板
- 投票管理
- 候选人信息维护
- 实时票数统计(赞成/反对票)
- 投票结果可视化展示
数据库设计
关键表结构示例:
CREATE TABLE `tongzhituisong` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`yuanxiaozhanghao` VARCHAR(200) COMMENT '院校账号',
`yonghuzhanghao` VARCHAR(200) COMMENT '用户账号',
`tongzhineirong` LONGTEXT COMMENT '通知内容',
`fasongshijian` DATETIME COMMENT '发送时间',
PRIMARY KEY (`id`)
) ENGINE=INNODB COMMENT='通知推送';
权限控制流程
- 用户登录 → 生成Token并关联角色
- 访问API → 拦截器校验Token有效性
- Vue前端根据角色动态加载路由
4. 部分核心代码
后端权限拦截器
// AuthorizationInterceptor.java
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
// 1. 检查@IgnoreAuth注解(免鉴权接口)
if (handler instanceof HandlerMethod) {
IgnoreAuth annotation = ((HandlerMethod) handler)
.getMethodAnnotation(IgnoreAuth.class);
if (annotation != null) return true;
}
// 2. Token验证
String token = request.getHeader("Token");
TokenEntity tokenEntity = tokenService.getTokenEntity(token);
if (tokenEntity == null) {
response.sendError(401, "无效Token");
return false;
}
// 3. 绑定会话信息
request.getSession().setAttribute("userId", tokenEntity.getUserid());
request.getSession().setAttribute("role", tokenEntity.getRole());
return true;
}
}
前端动态路由生成
// router-static.js
const routes = [{
path: '/index',
component: Index,
children: [
{ path: '/', component: Home },
{ path: '/tongzhituisong', component: Tongzhituisong }, // 通知推送
{ path: '/toupiaoxinxi', component: Toupiaoxinxi } // 投票管理
]
}];
多角色按钮级权限控制
// utils.js
export function isAuth(tableName, key) {
const role = storage.get("role");
const menus = menu.list();
// 遍历菜单配置检查权限
for (let menuItem of menus) {
if (menuItem.roleName === role) {
const hasPermission = menuItem.backMenu.some(item =>
item.child.some(child =>
child.tableName === tableName &&
child.buttons.includes(key)
)
);
return hasPermission;
}
}
return false;
}
5. 部分截图
6. 项目总结
技术亮点
- 精细化权限体系
- 三层级角色控制(系统级/院校级/用户级)
- 按钮级操作权限(如"审核"、"删除"独立配置)
- 高效消息机制
- 通知精准推送(院校→指定用户)
- 消息双向追踪(发送+回复状态)
- 深度第三方集成
- 百度AI人脸识别(活体检测)
- 高德地图API(校区位置服务)
- 数据可视化
- ECharts实现投票实时看板
- Excel报表一键导出
在线演示:
后台:http://springboot6yjn8.xiaobias.com/springboot6yjn8/admin/dist/index.html
管理员:abo/abo
用户:用户1/123456
用户2/123456
院校管理员:院校管理2/123456
院校管理员3/123456
资源:https://fifteen.xiaobias.com/source/28