# stusystem #### 1.介绍 一个简单的练手demo,[前后端分离] 运用了MySQL为后台数据库,使用了当前较为流行的框架spring Boot + MyBatis + shiro,前端是Vue + Element-ui架构,以IDEA为开发工具,系统实现了宿舍管理、学生管理、宿舍分配、宿舍评比、损坏管理查询等必需的功能,其操作简单,界面友好,运行比较稳定,适用于大学院校大学生宿舍管理。 用户管理(增删改查)、宿舍管理(增删改查)、学生管理(增删改查)、宿舍分配(增删改查)、宿舍评比(增删改查)、损坏报备(增删改查)、日志记录(增查)、进出宿舍记录(增查)_调用人脸识别 权限: * 学生:修改自己信息(宿舍号不能改),损坏报备(自己的报备记录),日志(查看自己的),进出宿舍记录(自己的); * 宿管:修改自己信息,损坏报备(自己管的楼报备记录),日志(查看自己的),宿舍管理(自己楼,宿舍状况,增删改查),学生管理(自己所在楼的增删改查密码重置),进出宿舍记录(归自己管的), * 辅导员:修改自己信息,学生管理(自己所管的增删改查密码重置),进出宿舍记录(归自己管的学生),日志(查看自己的) * 领导:修改自己信息,学生管理(全部),损坏报备查看(全部),宿舍管理(全部),日志(查看自己的),学生管理(全部),进出宿舍记录(全部),员工管理(辅导员,宿管,增删改查) * 超级用户: 登录 * 登录验证权限,显示对应权限下的功能; * 登录成功后将IP地址,时间,账号存入数据库中,以便于后续查看用户登录情况; 注册 菜单加载: 登录成功后去后台查询菜单,在查询完菜单后,在根据用户去查询权限,将权限code也携带在菜单中,可以实现某一些页面中的按钮这个用户没有权限,就不显示。当然在后端的接口也要验证是否有权限,否则通过手动修改按钮显示也是可以实现数据传入后台。 **效果展示:** ![1](/doc/img/chat.gif) ![log](/doc/img/log.png) ![register](/doc/img/register.png) ![菜单管理](/doc/img/菜单管理.png) ![菜单管理1](/doc/img/菜单管理1.png) ![聊天](/doc/img/聊天.png) #### 2.软件架构 1. 系统环境 后端 1.Java 8 2.SpringBoot 2.3.3 3.MySQL 5.7 4.Maven 3.5 5.MyBatis 2.1.4 6.Shiro 1.4.0 7.Tomcat 9.0.37 8.Liquibase 3.8.9 #### 3.安装教程 1. 克隆项目到本地 2. 在数据库中新建数据库名称为stusystem,注意设置数据库编码等为UTF-8 3. 在项目中设置数据库连接信息,用户名 & 密码 4. 按照下面方式启动项目即可,数据表自动建(系统使用了Liquibase,所以会自动新建数据表) #### 4.使用说明 1. 项目启动:本系统前后端分离,故而在启动项目时候需要启动前端、后端两者。 前端启动:npm run dev 2. 打包部署项目: ① 打包前端(IDEA下方Terminal):npm run build ② 启动后端:启动SpringBoot项目 ③ 访问项目:在浏览器中输入 -> `localhost:2020` 登录账号: 管理员账号:admin 密码:1 #### 5.报错 ① 启动项目时候卡死,控制台报 `Waiting for changelog lock....` 出现的问题:liquibase导致表锁死报错 解决办法,在数据库中执行更新语句,将DATABASECHANGELOGLOCK表中锁状态改成0 UPDATE DATABASECHANGELOGLOCK SET locked=0, lockgranted=null, lockedby=null WHERE id=1 #### 6.开发记录 文件管理: 1、前端上传图片/文件,将图片名字改成uuid,存放到指定位置,在文件表记录一条信息,用到图片的表中记录id。 2、定时任务,在规定时间去检查文件表,已经删除的文件进行清除 #### 7.说在最后 1. 系统正在开发,想到的后面再更新 2. 正在学习使用这些技术,若有错误 不对之处欢迎大佬指正