【开源】基于JAVA的房屋出售出租系统

在这里插入图片描述


目录

  • 一、摘要
    • 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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

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

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

相关文章

单片机学习笔记---定时器计数器(含寄存器)工作原理介绍(详解篇1)

目录 51内部定时计数器概述 定时器和计数器概念的区分 定时计数器的结构框图 定时计数器的控制字 M1和M0工作方式选择位的四种工作方式 总结 51内部定时计数器概述 先概述一下&#xff0c;51内部是有两个16位的定时计数器&#xff0c;这个16位指的是它定时计数的常数是1…

4秒读取50w行Excel数据

4秒读取50w行Excel数据 文章比较了几种常用的读取Excel的方法&#xff0c;最终发现rust库Calamine的速度最快&#xff0c;可以在4秒内读取50w行excel数据。 原文&#xff1a;Fastest Way to Read Excel in Python&#xff1a;https://hakibenita.com/fast-excel-python 我们在…

React16源码: React中处理LegacyContext相关的源码实现

LegacyContext 老的 contextAPI 也就是我们使用 childContextTypes 这种声明方式来从父节点为它的子树提供 context 内容的这么一种方式遗留的contextAPI 在 react 17 被彻底移除了&#xff0c;就无法使用了那么为什么要彻底移除这个contextAPI的使用方式呢&#xff1f;因为它…

openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题

文章目录 openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题209.1 共享内存泄露问题209.1.1 问题现象209.1.2 原因分析209.1.3 处理方法 openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题 209.1 共享内存泄露问题…

【Web前端实操18】粘性定位——即固定顶层内容,可以继续滚动,但是顶层内容固定,不随着一起滚动

粘性定位 1、了解 可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。粘性定位是指网页或移动应用程序中的一种特性,即当用户滚动页面时,某个元素能够保持在屏幕上特定位置不动,直到用户滚动到达一定位置或进行特定操作。这个特性可…

Qt无边框窗口拖拽和阴影

先看下效果&#xff1a; 说明 自定义窗口控件的无边框,窗口事件由于没有系统自带边框,无法实现拖拽拉伸等事件的处理,一种方法就是重新重写主窗口的鼠标事件&#xff0c;一种时通过nativeEvent事件处理。重写事件相对繁琐,我们这里推荐nativeEvent处理。注意后续我们在做win平…

2.3_8 多生产者-多消费者问题

2.3_8 多生产者-多消费者问题 实现思路 semaphore mutex1; //实现互斥访问盘子(缓冲区) semaphore apple0; //盘子中有几个苹果 semaphore orange0; //盘子中有几个橘子 semaphore plate 1; //盘子中还可以放多少个水果dad(){while(1){准备一个苹果;P(plate);P(mutex);把苹果放…

网络相关知识

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、相关工具3.1 network profiler/ In…

休息日的思考与额外题——链表

文章目录 前言链表知识点 一、 92. 反转链表 II二、21. 合并两个有序链表总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划二刷完卡子哥的刷题计划&#xff0c;加油&#xff01; 二刷决定精刷了&#xff0c;于是参加了卡子哥的刷题班&#xff0c;训练…

构建知识图谱:从技术到实战的完整指南

目录 一、概述二、知识图谱的基础理论定义与分类核心组成历史与发展 三、知识获取与预处理数据源选择数据清洗实体识别 四、知识表示方法知识表示模型RDFOWL属性图模型 本体构建关系提取与表示 五、知识图谱构建技术图数据库选择Neo4jArangoDB 构建流程数据预处理实体关系识别图…

详谈掼蛋两大类牌型

掼蛋中的10种牌型&#xff0c;总体上可以分为炸弹牌型系列和普通牌型两大类。炸弹牌型系列包括天王炸、同花顺和多头炸3大类&#xff1b;普通牌型系列包括单张、对子、三同张、三带二、顺子、三连对、连三张等7种牌型。 一、两类牌型的区别 炸弹牌型系列和普通牌型系列两大类有…

信创条件下的运维思考-驱动数字化转型,塑造企业未来之篇章

2024-01-14 12:59 发布于&#xff1a;山西省 运维信创&#xff1a;驱动数字化转型&#xff0c;塑造企业未来之篇章 随着信息技术的迅猛发展&#xff0c;数字化转型已成为企业生存和发展的必由之路。在数字化转型的过程中&#xff0c;运维作为企业IT的重要组成部分&#xff…

【安装指南】HBuilder X 下载、安装详细教程

目录 &#x1f33a;1. 概述 &#x1f33b;2. HBuilder X 安装包下载 &#x1f33c;3. 安装详细教程 &#x1f33a;1. 概述 HBuilder X 是一款由DCloud开发的基于Electron框架的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于Web和移动应用程序的开发。以下是…

【自媒体实战】——公众号排版工具调研

公众号排版工具 壹伴 地址&#xff1a;https://yiban.io/ 网站 壹伴 (https://yiban.io/) 主要提供一个高效的微信编辑器&#xff0c;专门服务于公众号运营者。它包括了一系列工具和功能&#xff0c;旨在帮助用户更便捷地进行文章排版、图片编辑、素材寻找和消息回复等操作。…

web渗透测试-Server2225-(环境+解析)

1、访问目标IP,打开第1题,根据页面提示,将获取的flag提交。提交格式:flag{xxx}(提交花括号里面的字段) 给出了如上代码,很明显,flag在flag.php文件内。 REQUEST方法既可以接受GET方法,也可以接受POST方法,方便起见,我们选择GET方法。 eval函数 eval() 函数把字符串…

如何实现无公网ip远程SSH连接家中本地的树莓派

文章目录 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址4.5 ssh公网…

防御保护第四次作业

防火墙的智能选路 就近选路 --- 我们希望在访问不同运营商的服务器是&#xff0c;通过对应运营商的链路。这样可以高 通信效率&#xff0c;避免绕路。 策略路由 -- PBR 传统的路由&#xff0c;仅基于数据包中的目标IP地址查找路由表。仅关心其目标&#xff0c;所以&#…

大模型:合成数据、安全挑战与知识注入

在如今这个快速发展的AI时代&#xff0c;大语言模型&#xff08;LLM&#xff09;的研究论文数量呈指数级增长&#xff0c;几乎到了人力无法一一阅读和消化的地步。然而&#xff0c;对这些研究成果的归纳和总结至关重要&#xff0c;因为它们描绘了LLM领域的未来发展轮廓。在近期…

变相体罚学生包括什么

有时候由于种种原因&#xff0c;一些老师可能会采用变相体罚的方式来对待学生&#xff0c;不仅会伤害学生的身心健康&#xff0c;还会影响学生的学习积极性和成绩。什么是变相体罚呢&#xff1f; 变相体罚是指不采用直接的身体惩罚方式&#xff0c;而是采用其他方式来惩罚学生…

3、css设置样式总结、节点、节点之间关系、创建元素的方式、BOM

一、css设置样式的方式总结&#xff1a; 对象.style.css属性 对象.className ‘’ 会覆盖原来的类 对象.setAttribut(‘style’,‘css样式’) 对象.setAttribute(‘class’,‘类名’) 对象.style.setProperty(css属性名,css属性值) 对象.style.cssText “css样式表” …
最新文章