基于Java+SpringBoot+Vue前后端分离小区管理系统设计与实现
配置物业公司管理的小区,部署一套系统,可配置多个不同小区,减少物业的持有成本
博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌
博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦
🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用ChatGPT,微信支付,扫码加群
🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》https://blog.csdn.net/qq_57756904/category_12199600.html
有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。
最后再送一句:最好是学会了,而不是学废了!!!
目录
一、行业痛点与功能需求
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;
@GetMapping
public 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);
}
@PostMapping
public Object addRoom(@RequestBody RoomDTO roomDTO) {
String s = roomService.addRoom(roomDTO);
return R.ok(s);
}
@PutMapping
public 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 {
@Override
public 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;
}
@Override
public 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;
}
@Override
public List<String> selectRoomIdByViewId(String floorId, String unitId) {
return baseMapper.selectRoomIdByViewId(floorId, unitId);
}
@Override
public 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;
}
@Override
public String addRoom(RoomDTO roomDTO) {
Room room = BeanCopyUtil.copyProperties(roomDTO, Room::new);
room.setUserId(SecurityUtils.getUserId());
room.setCreateTime(LocalDateTime.now());
save(room);
return room.getRoomId();
}
@Override
public String editRoom(RoomDTO roomDTO) {
Room room = BeanCopyUtil.copyProperties(roomDTO, Room::new);
room.setUserId(SecurityUtils.getUserId());
updateById(room);
return room.getRoomId();
}
@Override
public String deleteRoomById(String roomId) {
return String.valueOf(baseMapper.deleteById(roomId));
}
}
六、获取源码
大家点赞、收藏、关注、评论啦 、关注下方公众号获取联系方式👇🏻👇🏻
更多推荐
所有评论(0)