基于SpringBoot校园管理系统

发布于:2025-08-16 ⋅ 阅读:(18) ⋅ 点赞:(0)

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. 详细介绍

功能模块
  1. 权限管理
    • 三类角色:超级管理员、院校管理员、普通用户
    • 基于Token的鉴权(JWT模式)
    • 动态菜单生成(不同角色显示不同菜单)
  2. 院校管理
    • 学院信息维护(名称、简介、职工人数)
    • 资料文件上传/下载
  3. 单位管理
    • 单位分类(如:教职工、学生组织)
    • 单位成员管理(个人信息、联系方式)
  4. 通知系统
    • 院校管理员 → 用户的消息推送
    • 用户消息回复与追踪
    • 实时消息状态看板
  5. 投票管理
    • 候选人信息维护
    • 实时票数统计(赞成/反对票)
    • 投票结果可视化展示
数据库设计

关键表结构示例:

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='通知推送';
权限控制流程
  1. 用户登录 → 生成Token并关联角色
  2. 访问API → 拦截器校验Token有效性
  3. 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. 项目总结

技术亮点
  1. 精细化权限体系
    • 三层级角色控制(系统级/院校级/用户级)
    • 按钮级操作权限(如"审核"、"删除"独立配置)
  2. 高效消息机制
    • 通知精准推送(院校→指定用户)
    • 消息双向追踪(发送+回复状态)
  3. 深度第三方集成
    • 百度AI人脸识别(活体检测)
    • 高德地图API(校区位置服务)
  4. 数据可视化
    • 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


网站公告

今日签到

点亮在社区的每一天
去签到