学生公寓管理系统

简介

基于 SpringBoot + Vue 的学生公寓管理系统,自定义了权限拦截器进行权限认证与授权,使用 aop+log4j 进行日志记录,使用 reids 作为缓存,使用 mysql 作为数据库,使用 druid 作为数据库连接池,使用 jwt 作为前后端状态交互信息,使用 websocket 进行通知的实时推送。

功能

  • 登录注销,修改密码个人信息

  • 宿舍管理

  • 学生管理

  • 班级管理

  • 宿舍楼管理

  • 维修记录

  • 用户管理

  • 菜单管理

  • 角色管理

  • 日志

  • 通知管理

  • 退宿审核

代码

自定义权限拦截

@Component
public class SecurityInterceptor implements HandlerInterceptor {private final RedisUtil redisUtil;private final SystemFunctionService systemFunctionService;private final SystemRoleService systemRoleService;private static final Map<Match, Validate> VALIDATE_MAP = new HashMap<>();static {VALIDATE_MAP.put(Match.HAS_ANY, (userPermission, methodPermission) -> {for (String up : userPermission) {for (String mp : methodPermission) {if (up.equalsIgnoreCase(mp)) {return true;}}}return false;});VALIDATE_MAP.put(Match.HAS_ALL, (userPermission, methodPermission) -> {int vote = 0;for (String up : userPermission) {for (String mp : methodPermission) {if (up.equalsIgnoreCase(mp)) {vote++;}}}return vote == methodPermission.length;});}public SecurityInterceptor(RedisUtil redisUtil, SystemFunctionService systemFunctionService, SystemRoleService systemRoleService) {this.redisUtil = redisUtil;this.systemFunctionService = systemFunctionService;this.systemRoleService = systemRoleService;}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {//获取请求的方法HandlerMethod handlerMethod;if (handler instanceof HandlerMethod) {handlerMethod = (HandlerMethod) handler;} else {//404return true;}Method method = handlerMethod.getMethod();//获取请求方法所需的权限String[] requiredPermissions;Match match;if (method.isAnnotationPresent(RequirePermission.class)) {RequirePermission hasPermission = method.getAnnotation(RequirePermission.class);requiredPermissions = hasPermission.permissions();match = hasPermission.matchType();} else {//方法不需要权限(无 RequirePermission 注解)return true;}String token = request.getHeader(Constant.HEADER_TOKEN);Long id = redisUtil.get(token);//获取该用户的权限List<SystemRole> roleList = systemRoleService.listByUserId(id);Set<String> permissions;if (roleList.size() == 0) {permissions = new HashSet<>();} else {permissions = systemFunctionService.getPermission(roleList);}//验证权限if (VALIDATE_MAP.get(match).validate(permissions, requiredPermissions)) {return true;}//权限验证失败throw new HttpException(HttpCode.HAS_NO_PERMISSIONS, "没有权限,请联系管理员");}private interface Validate {/*** 验证权限* @param userPermission 用户拥有的权限* @param methodPermission 方法需要的权限* @return 是否通过*/Boolean validate(Set<String> userPermission, String[] methodPermission);}
}

实现通知消息的推送

@Component
@ServerEndpoint("/ws/{name}")
public class WebSocket {private Session session;private String name;public final static Map<String,WebSocket> WEB_SOCKET_SET = new ConcurrentHashMap<>();@OnOpenpublic void onOpen(Session session,@PathParam(value = "name") String name){this.session = session;this.name = name;WEB_SOCKET_SET.put(name,this);}@OnClosepublic void onClose(){WEB_SOCKET_SET.remove(name);}@OnMessagepublic void onMessage(String message) throws JsonProcessingException {Message m = new ObjectMapper().readValue(message, Message.class);System.out.println(m);}/*** 发送消息* @param userId 目标用户id* @param message 消息内容* @param systemUserService 。*/public static boolean sendMessage(Long userId, Message message, SystemUserService systemUserService) {SystemUser systemUser = systemUserService.get(userId).orElseThrow(() -> new HttpException(HttpCode.FAILED, "用户不存在"));if (WEB_SOCKET_SET.containsKey(systemUser.getLoginName())) {ObjectMapper objectMapper = new ObjectMapper();try {WEB_SOCKET_SET.get(systemUser.getLoginName()).session.getBasicRemote().sendText(objectMapper.writeValueAsString(message));return true;} catch (IOException e) {e.printStackTrace();}}return false;}
}

示例

登录

管理员主页

宿舍管理

学生管理

班级管理

宿舍楼管理

维修记录

用户管理

角色管理

菜单管理

日志记录

消息

审核

基于 SpringBoot + Vue 的学生公寓管理系统相关推荐

  1. 基于SpringBoot+Vue的学生成绩管理系统

    基于SpringBoot+Vue的学生成绩管理系统 ,已经实现了增删改查,完美的springBoot项目脚手架 ,适合学习和二次开发,课程设计 已经实现了增删改查和搜索查询所有功能,完美的spring ...

  2. 计算机毕业设计springboot+vue+elementUI学生公寓管理系统

    项目介绍 本学生公寓管理系统是针对目学生公寓管理的实际需求,从实际工作出发,对过去的学生公寓管理系统存在的问题进行分析,完善学生的使用体会.采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准 ...

  3. java基于springboot+vue的学生成绩管理系统 elementui

    在我国,基本每一个人都会经历学生时代,在学生时代大家比较看重的一点就是学生的成绩.相较过去而言,当前的学生成绩一般都是信息化的管理系统再也不是以前的那种手动管理模式.信息化的管理模式不仅可以让学生可以 ...

  4. 基于springboot的的学生干部管理系统

    <基于springboot的的学生干部管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等.系统功能完整,适合作为毕业设计.课程设计.数据库大作业学习使用. 项 ...

  5. 基于springboot vue新生可视化报到管理系统源码

    演示视频: 基于springboot vue新生可视化报到管理系统源码 package com.zxy.controller;import com.baomidou.mybatisplus.exten ...

  6. java语言基于springboot+vue+elementUI 毕业生实习管理系统-#计算机毕业设计

    项目介绍 每年都有大量的毕业生,毕业生面临的一个很严峻的问题就是如何去进行实习.我经过了实习,用人单位才能够更好的让实习生进行工作. 传统的毕业生实习管理都是通过人工手动的方式进行管理的.这种管理模式 ...

  7. 计算机毕业设计基于springboot+vue+elementUI的网吧管理系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着我国的经济发展,人们的生活水平也有了一定程度的提高,对网络的要求也越来越高,很多家庭都有了自己的电脑,但是很多时候大家在家里玩电脑的时候找不到那种玩耍的气氛和氛围,这个时候大家就都选择了 ...

  8. 基于springboot+Vue的智慧酒店管理系统

    真正的大师,永远都怀着一颗学徒的心! 一.项目简介 基于springboot+Vue的智慧酒店管理系统 二.实现功能 支持多端 支持用户管理 支持酒店前台管理 支持酒店管理 支持订单管理 支持系统管理 ...

  9. 基于springboot+vue的便利店库存管理系统

    基于springboot+vue的便利店库存管理系统 ✌全网粉丝20W+,csdn特邀作者.博客专家.CSDN新星计划导师.java领域优质创作者,博客之星.掘金/华为云/阿里云/InfoQ等平台优质 ...

最新文章

  1. 特性(property)
  2. GMQ发行稳定币将进一步打破稳定币市场垄断格局
  3. 在 ubuntu下面利用libpcap编程
  4. 配置所需要的依赖_配置spring所需要的jar包
  5. 使用百度编辑器--ueditor,后台接收提交编辑的内容,HTML不见了, 赋值不了,赋值之后,html暴露出来了??...
  6. 解决办法!!!!UnsatisfiedLinkError: Failed to find the required library mclmcrrt9_0.dll on java.library.
  7. 德赛西威领投智驾科技B轮3亿元,加速智能驾驶人人可享
  8. 手机上怎么安装Java的软件游戏
  9. Structs详细用法(一)
  10. 利用Python制作证件照
  11. 使用java生成mapbox-gl可读的vector tile
  12. bequeath_conn
  13. 如何使用html、css制作一个期末作业网站【羽毛球体育运动主题html网页设计】
  14. join left loke mysql_mysql监控---慢语句查询
  15. send message
  16. python-docx+pandas实现word邀请函批量生成
  17. DRF中的路由Router使用
  18. 计算机组成与体系结构 LRU 算法与 MRU 算法对比
  19. [附源码]计算机毕业设计基于springBoot仓库管理系统
  20. linux中如何使用nginx部署多个静态资源文件?

热门文章

  1. 我们用ESP32-Wrover-Kit做自平衡小车犯过的坑
  2. axios向springboot后台传递json数据
  3. Python实现用户输入国家名称,打印出所输入的国家名称和首都。
  4. 挑战UnityShader学习之八——用最简单的方法实现下雨天积水效果
  5. 程序员都有黑客梦,聊聊渗透工程师主要学什么?
  6. 用什么软件能测试dbm信号强度,怎么查看手机信号强度?多少dbm属于正常范围
  7. 讯飞语音识别之语音转文字------java
  8. canvas小鸟飞行游戏
  9. 我的世界服务器清道夫不显示,我的世界清道夫指令 | 手游网游页游攻略大全
  10. Excel VBA:更改图表数据标记大小和曲线粗细