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

在这里插入图片描述

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

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

相关文章

vue手写卡片切换,并且点击获取到卡片信息

需求&#xff1a;做一个卡片样式的列表&#xff0c;之后有一些基本信息&#xff0c;之后卡片选中后样式不一样&#xff0c;默认选中第一个卡片&#xff0c;点击卡片后可以获取到卡片的信息 一、效果 二、关键代码 index默认重0开始,activeTable默认为0,0-0等于0&#xff0c;但…

【Flink】FlinkSQL读取hive数据(批量)

一、简介: Hive在整个数仓中扮演了非常重要的一环,我们可以使用FlinkSQL实现对hive数据的读取,方便后续的操作,本次例子为Flink1.13.6版本 二、依赖jar包准备: 官网地址如下: Overview | Apache Flink 1、我们需要准备相关的jar包到Flink安装目录的lib目录下,我们需…

PostgreSQL如何使用UUID

离线安装时&#xff0c;一般有四个包&#xff0c;都安装的话&#xff0c;只需要开启uuid的使用即可&#xff0c;如果工具包(即 postgresql11-contrib&#xff09;没有安装的话&#xff0c;需要单独安装一次&#xff0c;再进行开启。 开启UUID方法 下面介绍一下如何开启&#…

第九节HarmonyOS 常用基础组件27-Rating

1、描述 提供在给定范围内选择评分的组件。 2、接口 Rating(options?:{rating:number, indicator?:boolean}) 3、参数 参数名 参数类型 必填 描述 rating number 是 设置并接收评分值。默认值&#xff1a;0&#xff1b;取值范围[0, stars]&#xff0c;小于0取0&am…

AIGC 实战:Ollama 和 Hugging Face 是什么关系?

Ollama和 Hugging Face 之间存在着双重关系&#xff1a; 1. Ollama是 Hugging Face 开发并托管的工具&#xff1a; Ollama是一个由 Hugging Face 自行开发的开源项目。它主要用于在本地运行大型语言模型 (LLM)&#xff0c;特别是存储在 GPT 生成的统一格式 (GPT-Generated Un…

com.alibaba.nacos.api.exception.NacosException: Request nacos server failed

问题描述 安装nacos2.0以上版本&#xff0c;启动报错:com.alibaba.nacos.api.exception.NacosException: Request nacos server failed com.alibaba.nacos.api.exception.NacosException: Request nacos server failed: at com.alibaba.nacos.client.naming.remote.gprc.Nami…

做抖音小店怎么选品?给新手商家的三条建议,能让你销量猛增999+

大家好&#xff0c;我是电商花花。 总是担心店铺不出单&#xff0c;没有销量&#xff0c;看着断断续续的收益&#xff0c;新手商家应该都是愁容满面吧。 今天花花从是3个维度上给新手商家一些建议&#xff0c;讲解一下如何高效选品&#xff0c;加你如何让你出单猛增999。 以前…

Java的编程之旅27——继承

1.继承的简介 继承是面向对象编程中的一个重要概念&#xff0c;指的是一个类可以继承另一个类的属性和方法。被继承的类称为父类或基类&#xff0c;继承这个父类的类称为子类或派生类。 通过继承&#xff0c;子类可以继承父类的属性和方法&#xff0c;使得子类具有相似的行为…

Java基于SSM+JSP的超市进销库存管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【深度学习】SSD 神经网络:彻底改变目标检测

一、说明 Single Shot MultiBox Detector &#xff08;SSD&#xff09; 是一项关键创新&#xff0c;尤其是在物体检测领域。在 SSD 出现之前&#xff0c;对象检测主要通过两阶段过程执行&#xff0c;首先识别感兴趣的区域&#xff0c;然后将这些区域分类为对象类别。这种方法虽…

Git修改提交的文件的用户名和邮箱

实现效果 提交的测试二&#xff0c;用户名&#xff1a;git1 邮箱&#xff1a;email1,更改成 newGit1、newEmail1 一、概念 Git配置文件级别 系统级、全局级、本地级&#xff0c;生效规则是本地级>全局级>系统级&#xff0c;也就是当本地级配置上此属性&#xff0c;那么…

Uipath 读取Word模板实现录用通知书PDF批量生成

本文主要讲解如何使用Uipath 读取Excel 面试人员信息表&#xff0c;读取Word模板&#xff0c;再批量生成录用通知书PDF文件&#xff0c;该自动化大大提高了HR 的工作效率。 注&#xff1a;本方案实现采用无代码模式&#xff0c;通过拖拉控件实现。 1. 数据准备 1.1 面试人员…

最简单的基于 FFmpeg 的视音频分离器 - 简化版

最简单的基于 FFmpeg 的视音频分离器 - 简化版 最简单的基于 FFmpeg 的视音频分离器 - 简化版正文结果工程文件下载参考链接 最简单的基于 FFmpeg 的视音频分离器 - 简化版 参考雷霄骅博士的文章&#xff0c;链接&#xff1a;最简单的基于FFmpeg的封装格式处理&#xff1a;视音…

开源免费的NTFS for mac工具mounty

开源免费的NTFS for mac工具mounty 安装依赖 brew install gromgit/fuse/ntfs-3g-macbrew install --cask macfuse安装mounty 如果已经安装macFUSE和ntfs-3g-mac&#xff0c;可以直接点击下载的dmg安装包&#xff0c;安装升级。第一次启动mounty&#xff0c;你需要接受一系列…

DFT系列文章之 《DFT Scan chain》

我们知道,运用DFT技术的基本步骤: 1. 规划scan chain 规划 scan chain,首先将电路中的普通 DFF 换成 scan DFF: 2. scan cell 替换 scan DFF 是在原DFF 的输入端增加了一个 MUX,于是多了几个 pin :scan_in,scan_enable,scan_out。换完之后将所有的 scan DFF 首尾依…

dpdk环境搭建和工作原理

文章目录 1、DPDK环境搭建1.1、环境搭建1.2、编译DPDK 2、DPDK工作原理 1、DPDK环境搭建 1.1、环境搭建 工具准备&#xff1a;VMware、ubuntu16.04。 &#xff08;1&#xff09;VMware添加两个网卡。桥接网卡作为 DPDK 运行的网卡&#xff0c;NAT 网卡作为 ssh 连接的网卡。 …

C++奇怪的 ::template

答疑解惑 怎么会有::template的写法 起初 在阅读stl的源码的时候&#xff0c;发现了一条诡异的代码 // ALIAS TEMPLATE _Rebind_alloc_t template<class _Alloc,class _Value_type> using _Rebind_alloc_t typename allocator_traits<_Alloc>::template rebind…

AMRT3D数字孪生引擎详解

AMRT 3D数字孪生引擎介绍 AMRT3D引擎是一款融合了眸瑞科技的AMRT格式与轻量化处理技术为基础&#xff0c;以降本增效为目标&#xff0c;支持多端发布的一站式纯国产自研的CS架构项目开发引擎。 引擎包括场景搭建、UI拼搭、零代码交互事件、光影特效组件、GIS/BIM组件、实时数据…

洛谷B2084 质因数分解 题解

#题外话&#xff08;第36篇题解&#xff09;&#xff08;本题为普及-难度&#xff09;&#xff08;c语言&#xff09; #先看题目 #思路 从2遍历到n-1&#xff0c;如果被遍历的数是n的因数&#xff0c;且它是质数&#xff0c;且 n/遍历数 也是个质数&#xff0c;那么n/遍历数就…

LLMs之Gemma:Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略

LLMs之Gemma&#xff1a;Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略 导读&#xff1a;此文章介绍了Google推出的新一代开源模型Gemma&#xff0c;旨在帮助研发人员负责任地开发AI。 背景&#xff1a; >> Google长期致力于为开发者和研究人…