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

news2025/1/24 5:13:11

在这里插入图片描述


目录

  • 一、摘要
    • 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.coloradmin.cn/o/1446295.html

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

相关文章

Kafka 之生产者(Producer)

目录 一. 前言 二. 生产消息 三. 幂等和事务 四. send() 发送消息 五. 原理解析 一. 前言 Kafka生产者是一个应用程序&#xff0c;它负责向 Kafka 主题发送消息。这些消息可以用于多种目的&#xff0c;如记录用户活动、收集物联网设备数据、保存日志消息或缓存即将写入数据…

《乱弹篇(十四)香火旺》

连日来&#xff0c;“大年初一烧香祈福&#xff0c;北京雍和宫人山人海”这一词条登上社交网站热搜&#xff0c;对这一现象的描述多为“初一凌晨 民众在雍和宫前排大队”&#xff0c;“大年初一&#xff0c;雍和宫内人山人海&#xff0c;烟雾缭绕”&#xff0c;“雍和宫迎来6万…

Asp .Net Core 系列:Asp .Net Core 集成 NLog

简介 NLog是一个基于.NET平台编写的日志记录类库&#xff0c;它可以在应用程序中添加跟踪调试代码&#xff0c;以便在开发、测试和生产环境中对程序进行监控和故障排除。NLog具有简单、灵活和易于配置的特点&#xff0c;支持在任何一种.NET语言中输出带有上下文的调试诊断信息…

三、案例 - MySQL数据迁移至ClickHouse

MySQL数据迁移至ClickHouse 一、生成测试数据表和数据1.在MySQL创建数据表和数据2.在ClickHouse创建数据表 二、生成模板文件1.模板文件内容2.模板文件参数详解2.1 全局设置2.2 数据读取&#xff08;Reader&#xff09;2.3 数据写入&#xff08;Writer&#xff09;2.4 性能设置…

ctfshow-文件上传(web151-web161)

目录 web151 web152 web153 web154 web155 web156 web157 web158 web159 web160 web161 web151 提示前台验证不可靠 那限制条件估计就是在前端设置的 上传php小马后 弹出了窗口说不支持的格式 查看源码 这一条很关键 这种不懂直接ai搜 意思就是限制了上传类型 允许…

计算机组成原理 1 概论

主要内容 介绍运算器、控制器、存储器结构、工作原理、设计方法及互连构成整机的技术。 主要内容&#xff1a; ◼ 数值表示与运算方法 ◼ 运算器的功能、组成和基本运行原理 ◼ 存储器及层次存储系统 ◼ 指令系统 ◼ CPU功能、组成和运行原理 ◼ 流水线 ◼ 系统总线 ◼ 输入输出…

UE5 播放本地MP3、MP4

1.创建一个媒体播放器 2.如创建视频&#xff0c;勾选。 它会多一个媒体纹理给你 3.1 设置音频 在一个actor上添加“媒体音频组件” “音频媒体播放器”赋值给它 3.2播放音频 添加一个音频媒体播放器变量&#xff0c; 赋值 地址使用绝对地址 4.1设置视频 UI上创建一个imag…

快速学习Spring

Spring 简介 Spring 是一个开源的轻量级、非侵入式的 JavaEE 框架&#xff0c;它为企业级 Java 应用提供了全面的基础设施支持。Spring 的设计目标是简化企业应用的开发&#xff0c;并解决 Java 开发中常见的复杂性和低效率问题。 Spring常用依赖 <dependencies><!-…

Linux:信号的处理

文章目录 信号处理 本篇总结的是关于信号的处理 信号处理 在之前有这样的观点&#xff1a;信号在合适的时候被处理好&#xff0c;当进程收到信号后&#xff0c;当前进程可能在做优先级更高的事&#xff0c;所以它来不及处理这个信号&#xff0c;那么就会把这个信号暂时保存起…

spring aop @annotation的用法

直接看原文: spring aop annotation的用法-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- annotation用在定义连接点时&#xff0c;对连接点进行限制。比如我们想对标注了…

双非本科准备秋招(18.2)—— 图解Monitor

对象头 普通对象&#xff1a; 数组对象&#xff1a; java中对象存储结构分为对象头&#xff08;Header&#xff09;、实例数据&#xff08;Instance Date&#xff09;和对齐填充&#xff08;Padding&#xff09;。 对象头存储着Mark Word和Klass Word&#xff0c;通过Klass Wo…

【MySQL】操作库 —— 库的操作 -- 详解

一、增删数据库 1、创建数据库 create database db_name; 本质就是在 /var/lib/mysql 创建一个目录。 说明&#xff1a; 大写的表示关键字。[ ] 是可选项。CHARACTER SET&#xff1a;指定数据库采用的字符集。COLLATE&#xff1a;指定数据库字符集的校验规则。 2、数据库删除…

背包问题(理论)

对于面试的话&#xff0c;掌握01背包、完全背包&#xff0c;就够用了&#xff0c;最多可以再来一个多重背包。 至于背包九讲其他背包&#xff0c;面试几乎不会问&#xff0c;都是竞赛级别的了&#xff0c;leetcode上连多重背包的题目都没有&#xff0c;所以题库也告诉我们&…

NodeJS安装(windows)

NodeJS安装&#xff08;windows&#xff09; 1、官网地址 NodeJS官网地址&#xff1a;https://nodejs.org/en 2、安装 3、验证NodeJS环境变量 cmd后&#xff0c;运行&#xff1a;node -v 4、配置npm的全局安装路径&#xff08;需要管理员身份运行&#xff09; npm conf…

【后端高频面试题--设计模式上篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 什么是设计模式&#xff1f;怎么理解设计模式&#xff1f; 设计模式是在软件设计中&#xff0c…

三.AV Foundation 视频播放 - 播放控制

引言 前面的博客我们已经实现了视频的播放功能&#xff0c;但是作为一个完整的视频播放器仅仅有播放功能是不够的&#xff0c;暂停&#xff0c;快进&#xff0c;播放进度条&#xff0c;显示播放时间&#xff0c;显示视频标题和字幕都是必不可少的功能。 本篇博客我们就对视频…

Spring Cloud Gateway 网关路由

一、路由断言 路由断言就是判断路由转发的规则 二、路由过滤器 1. 路由过滤器可以实现对网关请求的处理&#xff0c;可以使用 Gateway 提供的&#xff0c;也可以自定义过滤器 2. 路由过滤器 GatewayFilter&#xff08;默认不生效&#xff0c;只有配置到路由后才会生效&#x…

【原创 附源码】Flutter安卓及iOS海外登录--Apple登录最详细流程

最近接触了几个海外登录的平台&#xff0c;踩了很多坑&#xff0c;也总结了很多东西&#xff0c;决定记录下来给路过的兄弟坐个参考&#xff0c;也留着以后留着回顾。更新时间为2024年2月12日&#xff0c;后续集成方式可能会有变动&#xff0c;所以目前的集成流程仅供参考&…

【GameFramework框架内置模块】1、全局配置(Config)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

AtCoder Beginner Contest 340(A-G)

A - Arithmetic Progression (atcoder.jp) 1.思路&#xff1a;循环输出即可 2.代码&#xff1a; #include <bits/stdc.h> #define rep(i,z,n) for(int i z;i < n; i) #define per(i,n,z) for(int i n;i > z; i--) #define PII pair<int,int> #define fi f…