🍅 作者主页: java源码客栈
🍅 简介:大厂java程序员,分享源码、学习资料、面试题库、技术干货【关注我,都给你】
🍅 文末获取源码联系方式 📝
一、功能简介
1、系统介绍
这是一个宿舍管理系统,包含三个角色,后勤、学生和宿管,各自的功能如下图
后勤:调换处理、宿舍分配、用户管理、房间管理
学生:通知管理、调换申请、维修申请、日程管理和记账管理
宿管:通知发布、账单管理和维修处理
2、功能框架
二、技术和环境
技术:
Spring Boot + SpringMVC + MyBatis + Layui
环境:
jdk版本:jdk1.8
mysql版本:mysql5.7
开发运行工具:Idea/Eclipse
maven版本:maven3.x
三、项目截图
后勤
用户管理
调换审核
楼宇管理
房间管理
宿舍分配
宿管
通知发布
水电账单
维修处理
学生
个人信息
通知公告
调换申请
维修申请
日程管理
记账管理
四、项目结构和数据库
- 数据库
- 项目结构
后端:
前端:
五、运行教程
1. 准备工作
1.1 开发环境
JDK 1.8
MySQL 8.0 (替代品:MySQL 5.7)
1.2 开发工具
WebStorm 2020.3(替代品:Visual Studio Code)
IntelliJ IDEA 2020.3(替代品:Eclipse【界面、图标太丑,不推荐】)
DataGrip 2020.3(替代品:Navicat)
Google Chrome 90.0
2. 打开项目文件并运行
本系统将前后端开发分离:分别在IntelliJ IDEA(后端)与WebStrom(前端)中进行开发。
因此,在此用IntelliJ IDEA 2020.3与WebStrom 2020.3进行演示。
2.1 IntelliJ IDEA
点击Open,选择源文件中的dormitory文件并打开。
进入到pom.xml中
点击此图标,下载项目所需依赖
⚠️注意:如果两三分钟内还没有下载完所有的依赖,那么可能是没有用国内的镜像;使用Windows的小伙伴可以先在IDEA的settings->Maven->User settings file找到settings.xml文件的地址,打开该文件后再参考上面那篇文章进行国内镜像设置
依赖全部下载完毕后,会出现绿色的√
打开application.xml,如果有需要,修改这三项内容。
选择DormitoryApplication,点击运行按钮
2.2 WebStorm(idea打开与WebStorm相同)
点击Open,选择源文件中的dormitoryfont文件并打开。
进入到login.html,点击浏览器图标。即可进入到系统中
因手工向数据库中输入的数据数量所限,故仅有三个人登录系统,各个模块才能达到正常显示效果。
登录账号列表
六、部分代码
/**
* @author
* @date 2021年3月13日, 周六
*/
@RestController
@RequestMapping("/repair")
public class RepairController {
@Autowired
private RepairService repairService;
@Autowired
private UserService userService;
@Autowired
private BuildingService buildingService;
@Autowired
private RoomService roomService;
@PostMapping("create")
public Result create(@RequestBody Repair repair){
int flag = repairService.create(repair);
if(flag>0){
return Result.ok();
}else{
return Result.fail();
}
}
@GetMapping("delete")
public Result delete(String ids){
int flag = repairService.delete(ids);
if(flag>0){
return Result.ok();
}else{
return Result.fail();
}
}
@PostMapping("update")
public Result update(@RequestBody Repair repair){
int flag = repairService.updateSelective(repair);
if(flag>0){
return Result.ok();
}else{
return Result.fail();
}
}
@GetMapping("detail")
public Repair detail(Integer id){
return repairService.detail(id);
}
@PostMapping("query")
public Map<String,Object> query(@RequestBody Repair repair, HttpServletRequest request){
User param = (User)request.getAttribute("user");
int userId = param.getId(); // 1. 获取该宿管员Id
System.out.println("宿管员ID:" + userId);
int buildingId = buildingService.queryDomersBuilding(userId);
repair.setBuildingId(buildingId);
PageInfo<Repair> pageInfo = repairService.query(repair);
pageInfo.getList().forEach(entity->{
entity.setUser(userService.detail(entity.getStuId()));
entity.setBuilding(buildingService.detail(entity.getBuildingId()));
entity.setRoom(roomService.detail(entity.getRoomId()));
});
return Result.ok(pageInfo);
}
@PostMapping("query_my_room")
// HttpServletRequest传入发起请求的用户信息
public Map<String,Object> queryMyRoom(@RequestBody Repair repair, HttpServletRequest request){
User param = (User)request.getAttribute("user"); // 获取前端发起请求的用户信息
// TODO: 完成查询全寝室的报修记录(3月15日)
// repair.setRoomId(param.getRoomId()); // 按学生所在房间的id去查整个寝室发起的报修
// ⚠️因返回结果显示未多个,暂时无法解决
repair.setStuId(param.getId()); // 按学生学号去查自己发起的报修
PageInfo<Repair> pageInfo = repairService.query(repair);
System.out.println(pageInfo);
pageInfo.getList().forEach(entity->{
// entity.setUser(userService.detailByRoom(entity.getRoomId()));
entity.setUser(userService.detail(entity.getStuId()));
entity.setBuilding(buildingService.detail(entity.getBuildingId()));
entity.setRoom(roomService.detail(entity.getRoomId()));
});
return Result.ok(pageInfo);
}
// @PostMapping("query_my_room")
// // HttpServletRequest传入发起请求的用户信息
// public Map<String,Object> queryMyRoom(@RequestBody Repair repair, HttpServletRequest request){
//
// User param = (User)request.getAttribute("user"); // 获取前端发起请求的用户信息
// // TODO: 完成查询全寝室的报修记录(3月15日)
//
//
//
// System.out.println("User Param:" + param);
// System.out.println("User Id:" + param.getId());
// repair.setStuId(param.getId()); // 按学生学号去查自己发起的报修
//
// User student = userService.detail(param.getId()); //获取当前学生信息
// int roomId = student.getRoomId(); // 获取当前学生所在房间
// repair.setRoomId(roomId); // 按学生所在房间的id去查整个寝室发起的报修
//
// PageInfo<Repair> pageInfo = repairService.query(repair);
// System.out.println(pageInfo);
// pageInfo.getList().forEach(entity->{
// // entity.setUser(userService.detailByRoom(entity.getRoomId()));
// entity.setUser(userService.detail(entity.getStuId()));
// entity.setBuilding(buildingService.detail(entity.getBuildingId()));
// entity.setRoom(roomService.detail(entity.getRoomId()));
// });
// return Result.ok(pageInfo);
// }
@PostMapping("stu_create")
public Result stuCreate(@RequestBody Repair repair, HttpServletRequest request){
User param = (User)request.getAttribute("user"); // 获取发起当前操作的用户信息
User student = new User();
student.setId(param.getId()); // 构造一个新的学生用户,并通过前端传入的用户信息为TA的ID赋值
PageInfo<User> pageInfo = userService.query(student); // 将查询到的该学生信息封装为pageInfo信息
if (pageInfo.getList() != null && pageInfo.getList().size()>0){
User user = pageInfo.getList().get(0); // 将pageInfo中数据赋值给user
Room room = roomService.detail(user.getRoomId()); // 通过user房间ID获取room信息
repair.setBuildingId(room.getBuildingId()); // 将“通过room获取到的楼栋id”赋值给repair的楼栋id
repair.setRoomId(user.getRoomId()); // 将“通过user获取到的房间id”赋值给repair的房间id
repair.setStuId(param.getId()); // 将“从前端获取到的用户id”赋值给repair的学生id
repair.setRepStatus(0); // 将维修状态置0(等待维修)
repair.setRepDate(new Date()); // 将维修申报时间设定为现在
int flag = repairService.create(repair); // 将上述信息打包后插入数据库
if(flag>0){
return Result.ok();
}else{
return Result.fail();
}
}else {
return Result.fail("操作失败,没有该学生的相关宿舍信息");
}
}
}
获取完整源码:
大家 点赞、收藏、关注、评论啦 、 查看 👇🏻 👇🏻 👇🏻 微信公众号获取联系 👇🏻 👇🏻 👇🏻