SpringBoot+Vue小区物业管理系统 附带详细运行指导视频

文章目录

  • 一、项目演示
  • 二、项目介绍
  • 三、运行截图
  • 四、主要代码
    • 1.用户登录代码
    • 2.查询小区信息代码
    • 3.保存缴费信息代码

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot+Vue框架开发的小区物业管理系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个小区物业管理系统该有的所有功能。

项目功能:此项目分为三个角色:业主物业员工管理员业主有登录、管理个人信息、查看物业员工和管理员信息、查看所属小区信息、查询个人房屋信息、查看所属小区的车位信息、查看个人缴费信息、支付缴费、查看所属小区公告信息、管理个人维修信息、管理个人投诉信息、查看个人数据统计等等功能。物业员工有登录、管理所属小区的业主信息、管理个人信息、查看管理员信息、查看所属小区信息、管理所属小区的楼栋信息和房屋信息、管理所属小区的车位信息、管理所属小区业主的缴费信息、管理个人发布的公告信息、受理所属小区业主的维修、投诉信息、查看所属小区数据统计等等功能。管理员有登录、管理个人信息、管理所有业主信息、管理所有物业员工信息、管理所有小区信息、管理所有楼栋、房屋信息、管理所有车位信息、管理所有缴费信息。管理所有公告信息、管理所有维修信息、管理所有投诉信息、查看数据统计等等功能。

应用技术:SpringBoot + Vue3 + MySQL + MyBatis + Redis + ElementUI-Plus + XXL-JOB

运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7(项目压缩包中自带) + Redis5.0.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3(项目压缩包中自带)+ Node14.16.1(项目压缩包中自带)

三、运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、主要代码

1.用户登录代码

	/*** 用户登录操作* @param userDTO* @return*/@Overridepublic ResponseDTO<UserDTO> login(UserDTO userDTO) {// 进行是否为空判断if(CommonUtil.isEmpty(userDTO.getPhone())){return ResponseDTO.errorByMsg(CodeMsg.PHONE_EMPTY);}if(CommonUtil.isEmpty(userDTO.getPassword())){return ResponseDTO.errorByMsg(CodeMsg.PASSWORD_EMPTY);}// 对比昵称和密码是否正确UserExample userExample = new UserExample();userExample.createCriteria().andPhoneEqualTo(userDTO.getPhone()).andPasswordEqualTo(userDTO.getPassword()).andRoleIdEqualTo(userDTO.getRoleId());List<User> userList = userMapper.selectByExample(userExample);if(userList == null || userList.size() != 1){return ResponseDTO.errorByMsg(CodeMsg.PHONE_PASSWORD_ERROR);}// 生成登录token并存入Redis中UserDTO selectedUserDTO = CopyUtil.copy(userList.get(0), UserDTO.class);String token = UuidUtil.getShortUuid();selectedUserDTO.setToken(token);//把token存入redis中 有效期1小时stringRedisTemplate.opsForValue().set("USER_" + token, JSON.toJSONString(selectedUserDTO), 3600, TimeUnit.SECONDS);return ResponseDTO.successByMsg(selectedUserDTO, "登录成功!");}

2.查询小区信息代码

	/*** 分页获取小区数据* @param pageDTO* @return*/@Overridepublic ResponseDTO<PageDTO<DistrictDTO>> getDistrictList(PageDTO<DistrictDTO> pageDTO) {DistrictExample districtExample = new DistrictExample();// 不知道当前页多少,默认为第一页if(pageDTO.getPage() == null){pageDTO.setPage(1);}// 不知道每页多少条记录,默认为每页5条记录if(pageDTO.getSize() == null){pageDTO.setSize(5);}DistrictExample.Criteria c1 = districtExample.createCriteria();if(pageDTO.getParam() != null) {DistrictDTO districtDTO = pageDTO.getParam();if(!CommonUtil.isEmpty(districtDTO.getName())) {c1.andNameLike("%" + districtDTO.getName() + "%");}if(!CommonUtil.isEmpty(districtDTO.getLocation())) {c1.andLocationLike("%" + districtDTO.getLocation() + "%");}if(!CommonUtil.isEmpty(districtDTO.getId())) {c1.andIdEqualTo(districtDTO.getId());}}PageHelper.startPage(pageDTO.getPage(), pageDTO.getSize());// 分页查出小区数据List<District> districtList = districtMapper.selectByExample(districtExample);PageInfo<District> pageInfo = new PageInfo<>(districtList);// 获取数据的总数pageDTO.setTotal(pageInfo.getTotal());// 将domain类型数据  转成 DTO类型数据List<DistrictDTO> districtDTOList = CopyUtil.copyList(districtList, DistrictDTO.class);for(DistrictDTO districtDTO : districtDTOList) {// 查询此小区的楼栋数BuildingExample buildingExample = new BuildingExample();buildingExample.createCriteria().andDistrictIdEqualTo(districtDTO.getId());List<Building> buildingList = buildingMapper.selectByExample(buildingExample);int buildingTotal = (int) buildingList.stream().map(Building::getName).distinct().count();districtDTO.setBuildingTotal(buildingTotal);// 查询此小区的房屋数List<String> buildingIdList = buildingList.stream().map(Building::getId).collect(Collectors.toList());if(buildingIdList.size() > 0) {HouseExample houseExample = new HouseExample();houseExample.createCriteria().andBuildingIdIn(buildingIdList);int houseTotal = houseMapper.selectByExample(houseExample).size();districtDTO.setHouseTotal(houseTotal);} else {districtDTO.setHouseTotal(0);}// 查询此小区的车位数ParkingExample parkingExample = new ParkingExample();parkingExample.createCriteria().andDistrictIdEqualTo(districtDTO.getId());districtDTO.setParkingTotal(parkingMapper.selectByExample(parkingExample).size());}pageDTO.setList(districtDTOList);return ResponseDTO.success(pageDTO);}

3.保存缴费信息代码

	/*** 保存缴费信息* @param feeDTO* @return*/@Overridepublic ResponseDTO<Boolean> saveFee(FeeDTO feeDTO) {// 进行统一表单验证CodeMsg validate = ValidateEntityUtil.validate(feeDTO);if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {return ResponseDTO.errorByMsg(validate);}Fee fee = CopyUtil.copy(feeDTO, Fee.class);User user = userMapper.selectByPrimaryKey(fee.getUserId());if(user == null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}// 准备创建xxl-job任务DefaultXxlJobAddParam defaultXxlJobAddParam = new DefaultXxlJobAddParam();defaultXxlJobAddParam.setAuthor("杨杨吖");defaultXxlJobAddParam.setJobDesc("缴费逾期罚金处理任务");defaultXxlJobAddParam.setExecutorHandler("feeHandler");Calendar calendar = Calendar.getInstance();if(fee.getDeadTime() != null) {calendar.setTime(fee.getDeadTime());int day = calendar.get(Calendar.DAY_OF_MONTH);
//            defaultXxlJobAddParam.setScheduleConf("0/0 0/0 0/0 " + day + "/1 * ?");defaultXxlJobAddParam.setScheduleConf("0/0 0/0 0/0 * * ?");}if(CommonUtil.isEmpty(fee.getId())) {// 添加操作fee.setId(UuidUtil.getShortUuid());fee.setCreateTime(new Date());if(fee.getDeadTime() != null) {defaultXxlJobAddParam.setExecutorParam(fee.getId());Integer taskId = xxlJobService.add(defaultXxlJobAddParam);xxlJobService.start(taskId);fee.setTaskId(String.valueOf(taskId));}if(feeMapper.insertSelective(fee) == 0) {return ResponseDTO.errorByMsg(CodeMsg.FEE_ADD_ERROR);}} else {// 修改操作Fee feeDB = feeMapper.selectByPrimaryKey(fee.getId());if(!FeeStateEnum.PAYED.getCode().equals(feeDB.getState()) && FeeStateEnum.PAYED.getCode().equals(fee.getState())) {fee.setPayTime(new Date());xxlJobService.remove(Integer.parseInt(feeDB.getTaskId()));}if(feeDB.getDeadTime().getTime() != fee.getDeadTime().getTime()) {defaultXxlJobAddParam.setExecutorParam(feeDB.getId());Integer taskId = xxlJobService.add(defaultXxlJobAddParam);xxlJobService.start(taskId);fee.setTaskId(String.valueOf(taskId));}if(feeMapper.updateByPrimaryKeySelective(fee) == 0) {return ResponseDTO.errorByMsg(CodeMsg.FEE_EDIT_ERROR);}}return ResponseDTO.successByMsg(true, "保存成功!");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探索 Rust 的 clap 库:命令行解析的艺术

版本声明 Rust: 1.76clap: 4.5.1clap_complete 4.5.1rpassword: 7.3.1 结论先行 本文将从 CLI&#xff08;Command Line Interface&#xff09;命令行工具的概述讲起&#xff0c;介绍一个优秀的命令行工具应该具备的功能和特性。然后介绍 Rust 中一个非常优秀的命令行解析工…

《Windows API每日一练》4.3 点和线的绘制

理论上&#xff0c;所有的图形设备驱动程序所需要的就是SetPixel函数和GetPixel函数。其余的一切都可以使用在GDI模块中实现的更高层的例程来处理。例如&#xff0c;画一条线&#xff0c;GDI可以不停地调整x和y坐标&#xff0c;然后连续调用多次SetPixel函数来实现。 事实上&a…

2024 年最新 windows 操作系统部署安装 redis 数据库详细教程(更新中)

Redis 数据库概述 Redis 是一个开源的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中介。Redis&#xff08;Remote Dictionary Server &#xff09;&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基…

数据通信与网络(二)

计算机网络的性能指标 包括速率、带宽、吞吐量、时延、时延带宽积和利用率。 还有一些非性能指标&#xff1a;如费用、质量、标准化、可靠性、可扩展性、可升级性和可维性。 一、速率 指计算机网络中的主机在信道上单位时间内传送数据量&#xff0c;又称数据率(data rate)或…

每日AI资讯-20240616

1. AI漫画角色一致性大突破 由中山大学和联想团队联合提出AutoStudio&#xff0c;它是一个无需训练的多智能体协同框架。AutoStudio采用基于大语言模型的三个智能体来处理交互&#xff0c;并使用基于扩散模型的Drawer生成高质量图像。实验中&#xff0c;AutoStudio无论是在定量…

腾讯地图避坑-获取地图点击点的经纬度

map.on(click,(evt)>{console.log("evt",evt)let lat evt.latLng.getLat();//lat 获取let lng evt.latLng.getLng();//lng 获取console.log("evt.latLng-有效方式",evt.latLng)console.log("evt[latlng]-无效方式",evt[latlng])})

PiDiNet推理手顺

GitHub链接 https://github.com/hellozhuo/pidinet 运行环境 Pyhton 3.8 filelock3.14.0 fsspec2024.5.0 imageio2.34.1 intel-openmp2021.4.0 Jinja23.1.4 lazy_loader0.4 MarkupSafe2.1.5 mkl2021.4.0 mpmath1.3.0 networkx3.1 numpy1.24.4 open…

小程序外卖开发中的关键技术与实现方法

小程序外卖服务凭借其便捷性和灵活性&#xff0c;正成为现代餐饮行业的重要组成部分。开发一个功能完善的小程序外卖系统&#xff0c;需要掌握一系列关键技术和实现方法。本文将介绍小程序外卖开发中的核心技术&#xff0c;并提供具体的代码示例&#xff0c;帮助开发者理解和实…

认识异常

一、异常的概念和体系结构 1、异常的概念 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常&#xff0c;常见的有算术异常&#xff0c;数组越界异常&#xff0c;空指针异常 2、异常的体系结构 从上图中可以看到&#xff1a; 1.Throwable&#xff1a;是异常体系…

Euro Efficiency(POJ, Open judge)

题目链接: 1252 -- Euro Efficiency 题目描述: 思路: 题面的大概意思就是给你一组基本面值的钱币&#xff0c;问你要凑出指定的面值最少需要多少个钱币的参与&#xff0c;钱币的参与可以是加法也可以是减法。 分析一下&#xff0c;由于答案与钱币参与的顺序无关&#xff0c;…

机器学习-课程整理及初步介绍

简介: 机器学习是人工智能的一个分支&#xff0c;它使计算机系统能够从经验中学习并改进其在特定任务上的表现&#xff0c;而无需进行明确的编程。机器学习涉及多种算法和统计模型&#xff0c;它们可以从数据中学习规律&#xff0c;并做出预测或决策。机器学习的应用非常广泛&…

LabVIEW的热门应用

LabVIEW是一种图形化编程语言&#xff0c;因其易用性和强大的功能&#xff0c;在多个行业和领域中广泛应用。介绍LabVIEW在以下五个热门应用领域中的使用情况&#xff0c;&#xff1a;工业自动化、医疗设备与生物医学工程、科学研究与实验室自动化、能源管理与智能电网、航空航…

[Shell编程学习路线]——if条件语句(单,双,多分支结构)详细语法介绍

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f6e0;️Shell编程专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月17日7点50分 &#x1f004;️文章质量&#xff1a;95分 文章目录 ————前言———— &#x1f4af;趣站&#x1f4af…

C语言王国——深入自定义类型(结构体)

目录 一、引言 二、结构体 1. 结构体类型的声明 2. 结构体变量的创建和初始化 2.1 创建 2.2 初始化 2.3 typedef 2.4 特殊声明 2.5 自引用 3. 结构成员访问操作符 4. 结构体内存对齐 4.1 对齐规则 4.2 offsetof 4.3 为什么存在内存对齐 5. 结构体传参 6. 结构体实现…

RTOS实时操作系统

常见的RTOS有&#xff1a; VxWorks&#xff1a;广泛应用于工业、医疗、通信和航空航天领域。FreeRTOS&#xff1a;一个开源的RTOS&#xff0c;广泛用于嵌入式设备。uc/OS&#xff1a;一个适用于教育和小型商业项目的RTOS。QNX&#xff1a;主要应用于汽车和工业自动化领域。Win…

探索C嘎嘎的奇妙世界:第三关---缺省参数与函数重载

在c语言中,我们常常在对有参函数进行传参,这样的繁琐过程,C祖师爷对此进行了相关改进,多说无益,上干货: 1 缺省参数: 缺省参数是指在声明或定义函数时为函数的形参指定一个默认值&#xff08;默认参数&#xff09;。在调用该函数时&#xff0c;如果没有指定实参&#xff0c;则…

Linux常⽤服务器构建-ssh和scp

目录 1.ssh <1>ssh介绍 <2>安装ssh A.安装ssh服务器 B.远程登陆 <3>使⽤ssh连接服务器 2.scp 本地⽂件复制到远程&#xff1a; 本地⽬录复制到远程&#xff1a; 远程⽂件复制到本地&#xff1a; 远程⽬录复制到本地&#xff1a; 1.ssh <1>…

SQLite检索查询结果函数

代码 database.h #include <sqlite3.h> // &#xfffd;&#xfffd;&#xfffd;&#xfffd;SQLite&#xfffd;ӿں&#xfffd;&#xfffd;&#xfffd;#include<stdio.h>// &#xfffd;&#xfffd;&#xfffd;&#xfffd;һ&#xfffd;&#…

【git使用二】gitee远程仓库创建与本地git命令用法

目录 gitee介绍 管理者注册gitee账号 管理者在gitee网站上创建远程仓库 每个开发者安装git与基本配置 1.git的下载和安装 2.配置SSH公钥 3.开发者信息配置 git命令用法 gitee介绍 Gitee&#xff08;又称码云&#xff09;是一个基于Git的代码托管服务&#xff0c;由开源…

netty:promise的简单示例

# 项目代码资源&#xff1a; 可能还在审核中&#xff0c;请等待。。。 https://download.csdn.net/download/chenhz2284/89442495 # 项目代码 【pom.xml】 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><v…