前言
本期项目是实验室预定系统,主要包括数据监控大盘、我的实验、实验管理、实验室管理、预约管理、保修管理、预约记录管理、班级管理、日志管理、用户管理、角色管理以及各个模块的导出功能。
功能设计
领域模型
-
DO(DataObject):与数据库表结构一一对应,通过DAO层向上传输数据源对象
-
BO(BusinessObject):业务对象。由Service层输出的封装业务逻辑的对象
-
VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象
BO和VO领域模型又分为BoRequest(输入模型)、BoResponse(输出模型)、VoRequest(输入模型)、VoResponse(输出模型)
技术栈
前端:vue + element
后端:jdk1.8 + springboot + redis + mysql
系统设计
运行效果
系统登录
dashboard
首页数据大盘,按最近7天饼图占比、最近30天折线图走势、最近一年柱状图分析、最近7天各个时间段占比分析全方位可视化分析数据。
我的实验
实验管理
预约实验室
实验室管理
实验室报修管理
预约记录管理
班级管理
Excel导出
所有模块都支持数据导出Excel,方便进行数据分析
实验列表导出
报修数据导出
日志管理
日志管理默认是开给管理员的,在系统中的所有操作都会被记录,在系统出现异常时也便于管理员进行问题排查。
用户管理
默认也是只有管理员拥有用户管理菜单的权限,可以新建/编辑用户、分配用户角色、禁用/启用等操作
用户注册
编辑用户信息
角色管理
极其灵活的权限管理,系统中的所有按钮都可以单独分配权限,你可以给A角色只分配了查询和导出权限,也可以给B角色分配查询、编辑、新建权限,还可以给C角色只分配查询权限。可以满足几乎所有的业务需求,大家可以自由发挥定义权限组合。
默认有‘管理员角色’、‘系统默认角色’、‘普通用户角色’
个人信息修改
密码修改
管理员创建完用户之后的默认密码是“123456”,用户可以登录系统自己修改密码
权限设计
权限基于security和spring-session实现。权限可以分为认证和授权,认证其实就是登录,用户登录时会进行账号密码的校验,校验成功后会,会把session存入redis中。授权指的是用户是否拥有访问后端资源的权限,每个新用户在创建后都会分配角色,角色其实就是一个权限集合,这里的权限可以理解为访问后端一个个接口(资源)的权限。
这里权限设计的非常灵活,细粒度到按钮级别,比如新增、删除、修改、查询、借阅动作,普通用户可能就只有查询权限,管理员则拥有新增、删除、修改的权限。普通用户即使通过接口直接访问后端的修改或者删除接口,后端也会返回授权失败错误,因为后端每个需要权限的接口都打了权限标识,只有拥有资源权限用户才能访问。
比如下面的修改接口,只有拥有“CAR_UPDATE”这个权限标识的用户才能访问这个接口,否则返回“未授权”的错误。
@PutMapping("/{id}")
@PreAuthorize("hasAuthority(T(com.senior.book.console.api.security.Authority).BOOK_UPDATE.name())")
public Result<Boolean> update(@PathVariable("id") Long id, @Valid @RequestBody BookUpdateVoRequest request) {
}