基于Java+SpringBoot+Vue前后端分离小区管理系统设计与实现
创始人
2024-05-21 18:06:45
0

博主介绍:✌全网粉丝3W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌

博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

开源项目:点击这里克隆或者下载

🍅文末关注公众号获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
 

 ✨【微服务】Nacos为什么丢弃短连接(http)而选择拥抱长连接(gRPC)

目录

一、行业痛点与功能需求

1、物业行业痛点

2、产品核心功能(费用管理)

2.1、费用管理

 2.2、业主报修

2.3、日常管理

二、系统设计

1、系统运行环境

2、系统架构设计

 3、登录设计

4、项目模块设计

三、数据库设计

1、用户实体

2、房屋实体

3、小区实体

四、功能截图 

1、登录界面

2、我的小区

3、业主管理

3.1、业主信息

4、资产管理

4.1、楼栋信息

4.2、单元信息

4.3、房屋信息

5、智慧停车

5.1、停车场管理

5.2、车位信息

5.3、业主车辆

6、巡检管理

6.1、巡检点

6.2、巡检路线

6.3、巡检计划

五、实现代码

1、控制器

2、接口

3、实现类

六、获取源码


一、行业痛点与功能需求

1、物业行业痛点

2、产品核心功能(费用管理)

2.1、费用管理

 2.2、业主报修

2.3、日常管理

二、系统设计

1、系统运行环境

开发系统:Windows10

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

JDK版本:Java JDK1.8

开发工具:IDEA

数据库版本: mysql5.7

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

服务器:SpringBoot自带 apache tomcat

主要技术:Java、SpringBoot2.7、MyBatis-plus、SpringSecurity、JWT、MySQL、Redis、Html、Vue、Elementui等


2、系统架构设计

 3、登录设计

    借鉴微服务单点登录设计

 

4、项目模块设计

三、数据库设计

1、用户实体

2、房屋实体

3、小区实体

四、功能截图 

1、登录界面

2、我的小区

配置物业公司管理的小区,部署一套系统,可配置多个不同小区,减少物业的持有成本

3、业主管理

3.1、业主信息

小区业主管理,或者业主成员管理。其中业主成员包括家庭成员、租客、或者其他成员。添加类型不限。

4、资产管理

4.1、楼栋信息

4.2、单元信息

1)根据楼栋查询单元

2)单元列表

4.3、房屋信息

1)房屋列表

添加房屋功能点设计:

2)选择楼栋

 

 

3)选择单元

 

4)添加房屋

5、智慧停车

配置社区的停车场地,可对多块场地进行管理。对其中的车位、车辆信息进行登记,车辆黑名单、车位数、进出记录查询,或无人值守设置收费二维码等。

5.1、停车场管理

5.2、车位信息

1)列表

2)新增窗口

停车场需要查询停车场管理列表

5.3、业主车辆

1)列表

新增业主车辆功能点设计界面:

2)选择车位

 

3)选择业主

4)填写车辆信息

6、巡检管理

小区日常巡逻巡检。包括对设备、环境卫生等检查。可设置线路,制定巡检计划及任务检查。

6.1、巡检点

6.2、巡检路线

6.3、巡检计划

五、实现代码

1、控制器

@RestController
@AllArgsConstructor
@RequestMapping("/api/room")
public class RoomController {private IRoomService roomService;@GetMappingpublic Object loadRooms(@RequestParam Map query) {PageInfo pageInfo = roomService.loadRooms(query);return R.ok(pageInfo);}@GetMapping("/ownerRooms")public Object loadOwnerRoomInfos(@RequestParam Map query) {PageInfo pageInfo = roomService.loadOwnerRoomInfos(query);return R.ok(pageInfo);}@GetMapping("{ownerId}")public Object loadRoomsByOwnerId(@PathVariable String ownerId) {List roomVoList = roomService.loadRoomsByOwnerId(ownerId);return R.ok(roomVoList);}@PostMappingpublic Object addRoom(@RequestBody RoomDTO roomDTO) {String s = roomService.addRoom(roomDTO);return R.ok(s);}@PutMappingpublic Object editRoom(@RequestBody RoomDTO roomDTO) {String s = roomService.editRoom(roomDTO);return R.ok(s);}@DeleteMapping("{roomId}")public Object deleteRoom(@PathVariable String roomId) {String s = roomService.deleteRoomById(roomId);return R.ok(s);}
}

2、接口

public interface IRoomService extends IService {PageInfo loadRooms(Map query);PageInfo loadOwnerRoomInfos(Map query);List selectRoomIdByViewId(String floorId, String unitId);List loadRoomsByOwnerId(String ownerId);String addRoom(RoomDTO roomDTO);String editRoom(RoomDTO roomDTO);String deleteRoomById(String roomId);
}

3、实现类

@Service
public class RoomServiceImpl extends ServiceImpl implements IRoomService {@Overridepublic PageInfo loadRooms(Map query) {CriticalQuery criticalQuery = CriticalQuery.create(query);PageParam pageParam = criticalQuery.pageParam();IPage page = new Page<>(pageParam.getPage(), pageParam.getSize());QueryWrapper wrapper = criticalQuery.queryWrapper();page = baseMapper.loadRooms(page, wrapper);PageInfo pageInfo = PageInfo.of(page.getCurrent(), page.getSize());List voList = page.getRecords();pageInfo.setTotal(page.getTotal()).setList(voList);return pageInfo;}@Overridepublic PageInfo loadOwnerRoomInfos(Map query) {CriticalQuery criticalQuery = CriticalQuery.create(query);PageParam pageParam = criticalQuery.pageParam();IPage page = new Page<>(pageParam.getPage(), pageParam.getSize());QueryWrapper wrapper = criticalQuery.queryWrapper();page = baseMapper.loadOwnerRoomInfos(page, wrapper);PageInfo pageInfo = PageInfo.of(page.getCurrent(), page.getSize());List voList = page.getRecords();pageInfo.setTotal(page.getTotal()).setList(voList);return pageInfo;}@Overridepublic List selectRoomIdByViewId(String floorId, String unitId) {return baseMapper.selectRoomIdByViewId(floorId, unitId);}@Overridepublic List loadRoomsByOwnerId(String ownerId) {List roomIds = baseMapper.selectRoomIdByOwnerId(ownerId);List roomVoList = Lists.newArrayList();roomIds.forEach(id -> {RoomVO roomVo = baseMapper.loadRoomsByOwnerId(id);roomVoList.add(roomVo);});return roomVoList;}@Overridepublic String addRoom(RoomDTO roomDTO) {Room room = BeanCopyUtil.copyProperties(roomDTO, Room::new);room.setUserId(SecurityUtils.getUserId());room.setCreateTime(LocalDateTime.now());save(room);return room.getRoomId();}@Overridepublic String editRoom(RoomDTO roomDTO) {Room room =  BeanCopyUtil.copyProperties(roomDTO, Room::new);room.setUserId(SecurityUtils.getUserId());updateById(room);return room.getRoomId();}@Overridepublic String deleteRoomById(String roomId) {return String.valueOf(baseMapper.deleteById(roomId));}
} 

六、获取源码

 大家点赞、收藏、关注、评论啦 、关注下方公众号获取联系方式👇🏻👇🏻

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...