基于Java+SpringBoot+Vue前后端分离小区管理系统设计与实现

news/2024/11/2 3:41:47/

博主介绍:✌全网粉丝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<String, String> query) {PageInfo<RoomVO> pageInfo = roomService.loadRooms(query);return R.ok(pageInfo);}@GetMapping("/ownerRooms")public Object loadOwnerRoomInfos(@RequestParam Map<String, String> query) {PageInfo<RoomVO> pageInfo = roomService.loadOwnerRoomInfos(query);return R.ok(pageInfo);}@GetMapping("{ownerId}")public Object loadRoomsByOwnerId(@PathVariable String ownerId) {List<RoomVO> 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<Room> {PageInfo<RoomVO> loadRooms(Map<String, String> query);PageInfo<RoomVO> loadOwnerRoomInfos(Map<String, String> query);List<String> selectRoomIdByViewId(String floorId, String unitId);List<RoomVO> loadRoomsByOwnerId(String ownerId);String addRoom(RoomDTO roomDTO);String editRoom(RoomDTO roomDTO);String deleteRoomById(String roomId);
}

3、实现类

@Service
public class RoomServiceImpl extends ServiceImpl<RoomMapper, Room> implements IRoomService {@Overridepublic PageInfo<RoomVO> loadRooms(Map<String, String> query) {CriticalQuery criticalQuery = CriticalQuery.create(query);PageParam pageParam = criticalQuery.pageParam();IPage<RoomVO> page = new Page<>(pageParam.getPage(), pageParam.getSize());QueryWrapper<Object> wrapper = criticalQuery.queryWrapper();page = baseMapper.loadRooms(page, wrapper);PageInfo<RoomVO> pageInfo = PageInfo.of(page.getCurrent(), page.getSize());List<RoomVO> voList = page.getRecords();pageInfo.setTotal(page.getTotal()).setList(voList);return pageInfo;}@Overridepublic PageInfo<RoomVO> loadOwnerRoomInfos(Map<String, String> query) {CriticalQuery criticalQuery = CriticalQuery.create(query);PageParam pageParam = criticalQuery.pageParam();IPage<RoomVO> page = new Page<>(pageParam.getPage(), pageParam.getSize());QueryWrapper<Object> wrapper = criticalQuery.queryWrapper();page = baseMapper.loadOwnerRoomInfos(page, wrapper);PageInfo<RoomVO> pageInfo = PageInfo.of(page.getCurrent(), page.getSize());List<RoomVO> voList = page.getRecords();pageInfo.setTotal(page.getTotal()).setList(voList);return pageInfo;}@Overridepublic List<String> selectRoomIdByViewId(String floorId, String unitId) {return baseMapper.selectRoomIdByViewId(floorId, unitId);}@Overridepublic List<RoomVO> loadRoomsByOwnerId(String ownerId) {List<String> roomIds = baseMapper.selectRoomIdByOwnerId(ownerId);List<RoomVO> 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));}
}

六、获取源码

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


http://www.ppmy.cn/news/20152.html

相关文章

【华为上机真题】密码要求

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

PHP反序列化新手入门学习总结

最近写了点反序列化的题&#xff0c;才疏学浅&#xff0c;希望对CTF新手有所帮助&#xff0c;有啥错误还请大师傅们批评指正。 php反序列化简单理解 首先我们需要理解什么是序列化&#xff0c;什么是反序列化&#xff1f; PHP序列化&#xff1a;serialize() 序列化是将变量…

如何炼就数据分析的思维?

目录 前言结构化思维假说演绎思维指标化思维维度分析思维 前言 面对数据异常&#xff0c;我们经常会出现“好像是A原因引起的&#xff1f;”“貌似和B原因也相关&#xff1f;““有可能是 C操作不当“的主观臆测。 或者&#xff0c;拿到一个分析议题&#xff0c;分析”11 月销售…

单板硬件设计:存储器

在单板设计中&#xff0c;无论是涉及到一个简易的CPU、MCU小系统或者是复杂的单板设计&#xff0c;都离不开存储器设计&#xff1a; 1、存储器介绍 存储器的分类大致可以划分如下&#xff1a; ROM和RAM指的都是半导体存储器&#xff0c;ROM在系统停止供电的时候仍然可以保持…

Linux操作系统使用git提交代码

引言&#xff1a; 北京时间 2023/1/27/9:50&#xff0c;今天的起床时间9:05&#xff0c;可以看出我们是提前了一些些&#xff0c;但是不是我的功劳&#xff0c;当然也不是我的闹钟的功劳&#xff0c;毕竟我的闹钟是8:20和8&#xff1a;50的&#xff0c;因为我亲爱的老妈……懂…

HTML5新特性

HTML5的重要性 产生于1990年1997年HTML4出现并且维持了10年时间2008年 HTML5出现&#xff0c;2012年趋于稳定 &#xff08;移动互联的红利期&#xff09;HTML5新特性 www.w3school.com.cn/html/ 语义化标签 <div class"header">Header</div><div cla…

Python---学生管理系统(pyinstaller)

专栏&#xff1a;python 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些python的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 学生管理系统前言创建入口函数新增学生insert展…

2023年房地产地段研究报告

房地产的投资业务中&#xff0c;选择一个好的地段&#xff0c;或者说区位&#xff0c;是十分重要的。在房地产行业&#xff0c;房价中包含地价&#xff0c;而房价上升的主要原因则是地价的上升。当房屋所处的地段深受消费者青睐、该地段的房屋供不应求时&#xff0c;房屋的价格…