基于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、系统运行环境

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;

    @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));
    }
}

六、获取源码

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

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡布奇诺-海晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值