基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第1张图片

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

uniapp微信小程序面试题软考题免费使用,还可以使用ChatGPT,微信支付,扫码加群

点击这里预览

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第2张图片

文末获取联系精彩专栏推荐订阅 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

目录

一、系统设计

1、系统运行环境

2、系统架构设计类似如图

三、非功能性与可行性分析

四、功能截图

1、登录

2、首页

3、员工宿舍管理

3.1、宿舍管理

详情

3.2、员工管理

3.3、部门管理

查看员工

3.4、宿舍楼管理

4、记录

4.1、维修记录

5、系统管理

5.1、用户管理

发送消息给杨秀梅

杨秀梅查看消息279a797a密码123456

点击信封消息详情

5.2、角色管理

详情

5.3、菜单管理

详情

5.4、日志管理

查看详情

6、个人中心

7、修改密码

8、消息

8.1、通知

我收到的

我发送的

8.2、退宿审核

8.3、发送通知

9、宿管登录

五、实现代码 

1、角色控制器

2、服务接口

3、实现类

七、获取源码


一、系统设计

1、系统运行环境


开发系统:Windows10左右

架构模式:MVC/前后端分离

JDK版本:Java JDK1.8

开发工具:IDEA

数据库版本: mysql5.7

数据库可视化工具: SQL yog或Navicat for MySQL

服务器:SpringBoot自带 apache tomcat

主要技术:Java、SpringBoot2、MyBatis、SpringSecurity、Redis、MySQL、Html、Vue、Elementui等
 

2、系统架构设计
类似如图

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第3张图片

三、非功能性与可行性分析

2.5非功能性需求分析

非功能性需求:用户对软件质量属性、运行环境、资源约束、外部接口等方面的要求或期望,包括:

2.5.1性能需求:

用户在软件响应速度、结果精度、运行时资源消耗量等方面的要求。

2.5.2可行性需求:

用户在软件失效的频率、严重程度、易恢复性,以及故障可预测性等方面的要求。

2.5.3易用性需求:

用户在界面的易用性、美观性,以及对面向用户的文档和培训资料等方面的要求。

2.5.4安全性需求:

用户在身份证、授权控制、私密性等方面的要求。

2.5.5运行环境约束:

用户对软件系统运行环境的要求。

2.5.6外部接口:

用户对待开发软件系统与其它软件系统或设备之间的接口要求

2.6可行性分析

可行性分析是从不同的角度,对可能影响系统的各方面因素进行分析,确认系统在实际生活上是可行的。本系统只是单纯地从经济、法律、技术、操作可行性四个方面来分析说明。

2.6.1技术可行性

技术上的可行性分析主要分析技术条件能否顺利完成开发工作,软、硬件能否满足需要。本系统采用Vue+Elementui开发出友好美观的人机界面,便于用户理解、操作。数据库管理系统采用MySQL,它能够处理大量数据,同时保持数据的完整性、安全性和持久性。后端技术使用SpringBoot、MyBatis,这些技术在许多公司已经被商用了,因此本系统的开发平台已成熟可行。硬件方面,在科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越便宜,因此硬件平台也能够满足本系统所需。

2.6.2经济可行性

  项目放在阿里学生服务器或者本地虚拟机的linux环境,故可行。

2.6.3法律可行性

  可行,自己写的项目,目的明确,没有违法违规。

2.6.4操作可行性

操作较为简单,而且当下信息科技发达,界面的设计也着实考虑到用户的体验,系统也是为用户而生。故操作是可行的,不存在难度大的操作。
 

四、功能截图

1、登录

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第4张图片

2、首页

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第5张图片

3、员工宿舍管理

3.1、宿舍管理

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第6张图片

详情

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第7张图片

3.2、员工管理

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第8张图片

3.3、部门管理

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第9张图片

查看员工

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第10张图片

3.4、宿舍楼管理

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第11张图片

4、记录

4.1、维修记录

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第12张图片

5、系统管理

5.1、用户管理

可以查看用户是否在线

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第13张图片

发送消息给杨秀梅

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第14张图片

杨秀梅查看消息279a797a密码123456

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第15张图片

点击信封消息详情

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第16张图片

5.2、角色管理

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第17张图片

详情

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第18张图片

5.3、菜单管理

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第19张图片

详情

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第20张图片

5.4、日志管理

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第21张图片

查看详情

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第22张图片

6、个人中心

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第23张图片

7、修改密码

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第24张图片

8、消息

8.1、通知

我收到的

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第25张图片

我发送的

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第26张图片

8.2、退宿审核

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第27张图片

8.3、发送通知

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第28张图片

9、宿管登录

基于Java+SpringBoot+Vue前后端分离员工宿舍管理系统设计与实现_第29张图片

五、实现代码 

1、角色控制器

/**
 * 

* 角色表 前端控制器 *

* * @author CeaM * @since 2023-01-28 */ @RestController @AllArgsConstructor @RequestMapping("/api/roles") public class CeamSysRoleController { private final ICeamSysRoleService ceamSysRoleService; private final ICeamSysUserService ceamSysUserService; @GetMapping public ResponseEntity> getRoles(PageableDTO pageable) { IPage mapIPage = ceamSysRoleService.pageCeaMSysRoleVO(pageable); return ResponseEntity.ok(mapIPage); } @GetMapping(value = "/level") public ResponseEntity getLevel() { return new ResponseEntity<>(Dict.create().set("level", getLevels(null)), HttpStatus.OK); } @PutMapping(value = "/menu") public ResponseEntity updateMenu(@RequestBody CeaMSysRoleDTO roleDTO) { CeamSysRole role = ceamSysRoleService.getById(roleDTO.getId()); getLevels(role.getLevel()); ceamSysRoleService.updateMenu(roleDTO, role); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } /** * 获取用户的角色级别 * @return / */ private int getLevels(Integer level) { CeaMSysUserDTO user = ceamSysUserService.loadUserInfo(SecurityUtils.getUsername()); List roleDTOS = ceamSysRoleService.listByUserId(user.getId()); List levels = roleDTOS.stream().map(RoleDTO::getLevel).collect(Collectors.toList()); int min = Collections.min(levels); if (level != null) { if (level < min) { throw new ServiceException("权限不足,你的角色级别:" + min + ",低于操作的角色级别:" + level); } } return min; } }

2、服务接口

/**
 * 

* 角色表 服务类 *

* * @author CeaM * @since 2023-01-28 */ public interface ICeamSysRoleService extends IService { IPage pageCeaMSysRoleVO(PageableDTO pageable); /** * 获取用户权限信息 * @param userId 用户信息 * @return 权限信息 */ Collection grantedAuthorities(Long userId); /** * * @param userId 用户ID * @return RoleItemVOs */ List listByUserId(Long userId); void updateMenu(CeaMSysRoleDTO roleDTO, CeamSysRole role); }

3、实现类

/**
 * 

* 角色表 服务实现类 *

* * @author CeaM * @since 2023-01-28 */ @Slf4j @Service @AllArgsConstructor public class CeamSysRoleServiceImpl extends ServiceImpl implements ICeamSysRoleService { private ICeamSysMenuService ceamSysMenuService; private ICeamRoleMenuService ceamRoleMenuService; @Override public IPage pageCeaMSysRoleVO(PageableDTO pageable) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() .eq(CeamSysRole::getDeleted, GlobalConstants.FALSE); Page page = new Page<>(pageable.getPage(), pageable.getSize()); // 手动设置当前页,不然分页失效 page.setCurrent((long)pageable.getPage() + GlobalConstants.ONE); Page ceamSysRolePage = page(page, queryWrapper); IPage ceaMSysRoleVOIPage = PageVOUtil.copyToPageVO(ceamSysRolePage, CeaMSysRoleVO.class); for (CeaMSysRoleVO role : ceaMSysRoleVOIPage.getRecords()) { List menuDTOS = ceamSysMenuService.findByRoleId(role.getId(), GlobalConstants.ZERO); role.setMenus(menuDTOS); } return ceaMSysRoleVOIPage; } @Override public Collection grantedAuthorities(Long userId) { List roleItemDTOS = this.baseMapper.listByUserId(userId); if (CollectionUtils.isEmpty(roleItemDTOS)) { throw new ServiceException("没有分配角色"); } List menuDTOS = ceamSysMenuService.findByRoles(roleItemDTOS, GlobalConstants.ZERO); // 角色 Set permissions = roleItemDTOS.stream() .filter(role -> StringUtils.isNotBlank(role.getName())) .map(RoleDTO::getName).collect(Collectors.toSet()); permissions.addAll( menuDTOS.stream() .filter(menu -> StringUtils.isNotBlank(menu.getPermission())) .map(MenuDTO::getPermission).collect(Collectors.toSet()) ); return permissions.stream().map(SimpleGrantedAuthority::new) .collect(Collectors.toList()); } @Override public List listByUserId(Long userId) { return this.baseMapper.listByUserId(userId); } @Override public void updateMenu(CeaMSysRoleDTO roleDTO, CeamSysRole role) { if (roleDTO.getMenus().size() > 0) { List rolesMenusList = roleDTO.getMenus().stream().map(i -> { CeamRoleMenu rolesMenus = new CeamRoleMenu(); rolesMenus.setRoleId(roleDTO.getId()); rolesMenus.setMenuId(i.getId()); return rolesMenus; }).collect(Collectors.toList()); ceamRoleMenuService.remove(new LambdaQueryWrapper() .eq(CeamRoleMenu::getRoleId, roleDTO.getId())); ceamRoleMenuService.saveBatch(rolesMenusList); } } }

七、获取源码

 大家点赞、收藏、关注、评论 、天下没有免费的午餐,关注下方公众号获取联系方式

你可能感兴趣的:(Java项目案例,java,spring,boot,后端)