【开源】JAVA+Vue+SpringBoot实现房屋出售出租系统

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 房屋销售模块
    • 2.2 房屋出租模块
    • 2.3 预定意向模块
    • 2.4 交易订单模块
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询房屋求租单
    • 4.2 查询卖家的房屋求购单
    • 4.3 出租意向预定
    • 4.4 出租单支付
    • 4.5 查询买家房屋销售交易单
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的房屋出售出租系统包含了房屋销售模块、房屋出租模块、预定意向模块、交易订单模块、图表分析模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,房屋出售出租系统基于角色的访问控制,给管理员、买家和卖家角色使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

房屋出售出租系统包含了房屋销售模块、房屋出租模块、预定意向模块、交易订单模块、图表分析模块,接下来进行详细介绍。

2.1 房屋销售模块

房屋销售模块允许用户将待出售或出租的房源信息录入系统,包括房屋的基本信息(如面积、户型、楼层等)、地理位置、价格等。房屋销售模块提供用户按照自定义的条件,如区域、价格、面积等要求,快速搜索并筛选符合条件的房源。房屋销售模块为每个房源提供详细信息的展示页面,包括房屋照片、户型图、附属设施等,以便用户全面了解房源情况。对用户提交的看房预约、购买或租赁订单进行管理和跟踪,包括订单状态的更新、支付信息的记录等。房屋销售模块的目的是帮助用户快速、高效地管理和操作房屋销售和出租的流程,提供便捷的搜索和交流方式,为房地产行业的相关角色提供优质的服务和体验。

2.2 房屋出租模块

房屋出租模块允许用户将待出租的房源信息录入系统,包括房屋的基本信息(如面积、户型、楼层等)、地理位置、租金等。房屋出租模块提供用户按照自定义的条件,如区域、租金、面积等要求,快速搜索并筛选符合条件的房源。房屋出租模块为每个房源提供详细信息的展示页面,包括房屋照片、户型图、附属设施等,以便用户全面了解房源情况。房屋出租模块的目的是帮助用户快速、高效地管理和操作房屋出租的流程,提供便捷的搜索和交流方式,为房地产行业的相关角色提供优质的服务和体验。

2.3 预定意向模块

预定意向模块允许用户填写个人信息和意向房源的相关要求,如面积、价格、地理位置等,以便系统能够准确匹配和提供符合要求的房源。系统将用户的预定意向记录并进行管理,包括意向房源的信息、提交时间、处理状态等。用户可以随时查看自己的预定记录,并进行相应的操作。预定意向模块的目的是为潜在买家或租户提供便捷的预定房源的方式,并为房地产中介或开发商提供高效的管理和跟进工具,以提升用户体验和提高业务效率。

2.4 交易订单模块

交易订单模块允许用户创建和管理交易订单,包括购买、出租或退租等各种类型的订单。用户可以填写相关信息,目的是提供一个高效和便捷的方式管理房屋销售和出租的交易订单,确保交易的顺利进行,并提供相关方所需的信息和支持。这样可以提高房地产行业的交易效率和用户满意度。


三、系统展示

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


四、核心代码

4.1 查询房屋求租单

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询房屋求租单")
public Result<IPage<CustomerLease>> getByPage(@ModelAttribute CustomerLease customerLease ,@ModelAttribute PageVo page){
    QueryWrapper<CustomerLease> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(customerLease.getUserRemark())) {
        qw.like("user_remark",customerLease.getUserRemark());
    }
    IPage<CustomerLease> data = iCustomerLeaseService.page(PageUtil.initMpPage(page),qw);
    for (CustomerLease lease : data.getRecords()) {
        HouseLease houseLease = iHouseLeaseService.getById(lease.getHouseId());
        lease = HouseVoChangeUtils.fillCustomerLeaseByHouseLease(lease,houseLease);
        User user = iUserService.getById(lease.getUserId());
        lease = HouseVoChangeUtils.fillCustomerLeaseByUser(lease,user);
    }
    return new ResultUtil<IPage<CustomerLease>>().setData(data);
}

4.2 查询卖家的房屋求购单

@RequestMapping(value = "/getBySellerPage", method = RequestMethod.GET)
@ApiOperation(value = "查询卖家的房屋求购单")
public Result<IPage<CustomerSell>> getBySellerPage(@ModelAttribute CustomerSell customerSell ,@ModelAttribute PageVo page){
    QueryWrapper<CustomerSell> qw = new QueryWrapper<>();
    qw.eq("seller_id",securityUtil.getCurrUser().getId());
    if(!ZwzNullUtils.isNull(customerSell.getUserRemark())) {
        qw.like("user_remark",customerSell.getUserRemark());
    }
    IPage<CustomerSell> data = iCustomerSellService.page(PageUtil.initMpPage(page),qw);
    for (CustomerSell sell : data.getRecords()) {
        HouseSell houseSell = iHouseSellService.getById(sell.getHouseId());
        sell = HouseVoChangeUtils.fillCustomerSellByHouseSell(sell,houseSell);
        User user = iUserService.getById(sell.getUserId());
        sell = HouseVoChangeUtils.fillCustomerSellByUser(sell,user);
    }
    return new ResultUtil<IPage<CustomerSell>>().setData(data);
}

4.3 出租意向预定

@RequestMapping(value = "/frontLease", method = RequestMethod.POST)
@ApiOperation(value = "出租意向预定")
public Result<Object> frontLease(@RequestParam String id,@RequestParam float money,@RequestParam String remark){
    HouseLease houseLease = iHouseLeaseService.getById(id);
    if(houseLease == null) {
        return ResultUtil.error("房屋出租单不存在");
    }
    User currUser = securityUtil.getCurrUser();
    CustomerLease lease = new CustomerLease();
    lease.setSellerId(houseLease.getSellerId());
    lease.setHouseId(houseLease.getId());
    lease.setUserId(currUser.getId());
    lease.setStatus(0);
    lease.setUserMoney(BigDecimal.valueOf(money));
    lease.setUserRemark(remark);
    iCustomerLeaseService.saveOrUpdate(lease);
    return ResultUtil.success();
}

4.4 出租单支付

@RequestMapping(value = "/pay", method = RequestMethod.POST)
@ApiOperation(value = "支付")
public Result<Object> delByIds(@RequestParam String id) {
    HouseLeaseOrder order = iHouseLeaseOrderService.getById(id);
    if(order == null) {
        return ResultUtil.error("出租单不存在");
    }
    order.setStatus(1);
    iHouseLeaseOrderService.saveOrUpdate(order);
    return ResultUtil.success();
}

4.5 查询买家房屋销售交易单

@RequestMapping(value = "/getByBuyPage", method = RequestMethod.GET)
@ApiOperation(value = "查询买家房屋销售交易单")
public Result<IPage<HouseSellOrder>> getByBuyPage(@ModelAttribute HouseSellOrder houseSellOrder ,@ModelAttribute PageVo page){
    QueryWrapper<HouseSellOrder> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(houseSellOrder.getAddress())) {
        qw.like("address",houseSellOrder.getAddress());
    }
    if(!ZwzNullUtils.isNull(houseSellOrder.getHouseOwner())) {
        qw.like("house_owner",houseSellOrder.getHouseOwner());
    }
    qw.eq("user_id",securityUtil.getCurrUser().getId());
    IPage<HouseSellOrder> data = iHouseSellOrderService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<HouseSellOrder>>().setData(data);
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub-Empire靶机-详细打靶流程

渗透思路 1.确认靶机IP地址2.端口服务扫描3.敏感目录扫描4.ffuf命令在这个目录下&#xff0c;继续使用ffuf工具扫描 5.ssh私钥爆破1.将私钥写进sh.txt中2.将私钥转换为可以被john爆破的形式3.通过John爆破 6.ssh私钥登陆7.icex64提权8.arsene提权 1.确认靶机IP地址 ┌──(roo…

【WebSocket】微信小程序原生组件使用SocketTask 调用星火认知大模型

直接上代码 微信开发者工具-调试器-终端-新建终端 进行依赖安装 npm install base-64 npm install crypto-js 然后顶部工具栏依次点击 工具-构建npm // index.js const defaultAvatarUrl https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQ…

android studio下开发flutter

文章目录 1. 配置环境 https://flutter.cn/docs/get-started/install2. android studio下开发flutter 1. 配置环境 https://flutter.cn/docs/get-started/install 2. android studio下开发flutter 打开Android Studio -> File -> Settings -> Plugins 搜索Dart插件 …

Golang 基础 Go Modules包管理

Golang 基础 Go Modules包管理 在 Go 项目开发中&#xff0c;依赖包管理是一个非常重要的内容&#xff0c;依赖包处理不好&#xff0c;就会导致编译失败&#xff0c;本文将系统介绍下 Go 的依赖包管理工具。 我会首先介绍下 Go 依赖包管理工具的历史&#xff0c;并详细介绍下…

第4章——深度学习入门(鱼书)

第4章 神经网络的学习 本章的主题是神经网络的学习。这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。本章中&#xff0c;为了使神经网络能进行学习&#xff0c;将导入损失函数这一指标。而学习的目的就是以该损失函数为基准&#xff0c;找出能使它的值达到最…

(力扣)1314.矩阵区域和

给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c < j k 且(r, c) 在矩阵内。 示例 1&#xff1a; 输入&a…

Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案

目录 发现问题 解决办法 第一步 第二步 第三步 第四步 最后一步 问题解决 发现问题 如果大家也遇到下面这种问题&#xff0c;可能是没有include文件夹中没有bits/stdc.h 解决办法 第一步 打开一个C项目&#xff0c;鼠标移动至头文件上右击&#xff0c;选择转到文档或…

Chrome 沙箱逃逸 -- Plaid CTF 2020 mojo

文章目录 前置知识参考文章环境搭建题目环境调试环境 题目分析附件分析漏洞分析OOBUAF 漏洞利用总结 前置知识 Mojo & Services 简介 chromium mojo 快速入门 Mojo docs Intro to Mojo & Services 译文&#xff1a;利用Mojo IPC的UAF漏洞实现Chrome浏览器沙箱逃逸原文…

训练集,验证集,测试集比例

三者的区别 训练集&#xff08;train set&#xff09; —— 用于模型拟合的数据样本。验证集&#xff08;validation set&#xff09;—— 是模型训练过程中单独留出的样本集&#xff0c;它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时…

SpringMVC原理(设计原理+启动原理+工作原理)

文章目录 前言正文一、设计原理1.1 servlet生命周期简述1.2 设计原理小结 二、启动原理2.1 AbstractHandlerMethodMapping 初始化 --RequestMapping注解解析2.2 DispatcherServlet 的初始化2.3 DispatcherServlet#initHandlerMappings(...) 初始化示例说明 三、工作原理 前言 …

Open CASCADE学习|创建多段线与圆

使用Open CASCADE Technology (OCCT)库来创建和显示一些2D几何形状。 主要过程如下&#xff1a; 包含头文件&#xff1a;代码首先包含了一些必要的头文件&#xff0c;这些头文件提供了创建和显示几何形状所需的类和函数。 定义变量&#xff1a;在main函数中&#xff0c;定义…

Linux下库函数、静态库与动态库

库函数 什么是库 库是二进制文件, 是源代码文件的另一种表现形式, 是加了密的源代码; 是一些功能相近或者是相似的函数的集合体. 使用库有什么好处 提高代码的可重用性, 而且还可以提高程序的健壮性;可以减少开发者的代码开发量, 缩短开发周期. 库制作完成后, 如何给用户…

2 月 7 日算法练习- 数据结构-树状数组

树状数组 lowbit 在学习树状数组之前&#xff0c;我们需要了解lowbit操作&#xff0c;这是一种位运算操作&#xff0c;用于计算出数字的二进制表达中的最低位的1以及后面所有的0。 写法很简单&#xff1a; int lowbit&#xff08;int x&#xff09;&#xff5b;return x &am…

C#,字符串相似度的莱文斯坦距离(Levenshtein Distance)算法与源代码

一、莱文斯坦&#xff08;Levenshtein&#xff09; Vladimir I. Levenshtein 弗拉基米尔I列文施坦博士是纠错码理论的先驱&#xff0c;被称为俄罗斯编码理论之父。Levenshtein是莫斯科俄罗斯科学院Keldysh应用数学研究所的研究教授&#xff0c;他的贡献体现在消费者的日常生活中…

SERVLET过滤器

SERVLET过滤器 全球因特网用户使用不同类型的Web浏览器访问应用服务器上存储的Web应用程序。每个浏览器根据对应的Web浏览器窗口中的设置显示应用程序中的信息。Web应用程序可能会有一些客户机的Web浏览器不支持的HTML标记或功能。这种情况下,应用程序在客户机的Web浏览器中可…

Pandas文本数据处理大全:类型判断、空白字符处理、拆分与连接【第67篇—python:文本数据】

文章目录 Pandas文本数据处理大全&#xff1a;类型判断、空白字符处理、拆分与连接1. 判断文本数据类型2. 去除空白字符3. 文本数据拆分4. 文本数据连接5. 文本数据替换6. 文本数据匹配与提取7. 文本数据的大小写转换8. 文本数据的长度计算9. 文本数据的排序10. 文本数据的分组…

Spring如何扫描自定义的注解?

目录 一、Spring框架介绍 二、什么是自定义注解 三、如何扫描自定义的注解 一、Spring框架介绍 Spring框架是一个开源的Java应用程序框架&#xff0c;它提供了一种全面的编程和配置模型&#xff0c;用于构建现代化的企业级应用程序。Spring框架的核心原则是依赖注入&#x…

Tkinter教程21:Listbox列表框+OptionMenu选项菜单+Combobox下拉列表框控件的使用+绑定事件

------------★Tkinter系列教程★------------ Tkinter教程21&#xff1a;Listbox列表框OptionMenu选项菜单Combobox下拉列表框控件的使用绑定事件 Tkinter教程20&#xff1a;treeview树视图组件&#xff0c;表格数据的插入与表头排序 Python教程57&#xff1a;tkinter中如何…

【数据库】索引的使用

【数据库】索引的使用 前言出发示例创建表Explain 查看sql执行计划where 查询解析无索引有索引 where oderBy 查询解析无索引有索引 总结 前言 在数据库设计过程中&#xff0c;常需要考虑性能&#xff0c;好的设计可以大大提高sql 语句的增删改查速度。在表的创建过程中&…

IEC 104电力规约详细解读(三) - 遥信

1.功能简述 遥信&#xff0c;、即状态量&#xff0c;是为了将断路器、隔离开关、中央信号等位置信号上送到监控后台的信息。遥信信息包括&#xff1a;反应电网运行拓扑方式的位置信息。如断路器状态、隔离开关状态&#xff1b;反应一次二次设备工作状况的运行信息&#xff0c;如…