云计算百科
云计算领域专业知识百科平台

025 安居租赁 · 房屋租赁平台

安居租赁 · 房屋租赁平台

一个前后端分离的房屋租赁管理系统,覆盖房源发布与审核、看房预约、在线签约、账单缴费、评价、收藏、消息通知、投诉建议等完整业务闭环,支持租客 / 房东 / 管理员三种角色。

功能特性

角色功能
访客/租客 浏览房源列表与详情、搜索筛选、预约看房、在线签约、查看账单并缴费、收藏房源、发表评价、消息通知、提交投诉建议、个人资料管理
房东 房源发布/编辑/上下架、管理预约(确认/完成)、查看合同、查看账单、后台工作台概览
管理员 用户管理(增删改/禁用)、房源审核、投诉处理与回复、公告管理、支付流水查看

功能界面预览

以下截图由无头浏览器(1280×800)基于 sql/house_rent.sql 内置演示数据自动渲染,源文件位于 docs/screenshots/。

公共页面(无需登录)

  • 首页 /home:顶部导航 + 搜索入口,中部直达功能卡片,下方为最新房源轮播与平台公告,底部页脚。
    在这里插入图片描述

  • 房源列表 /list:按城市 / 租赁类型 / 租金范围筛选,卡片式展示封面、户型、月租、标签与收藏状态。
    在这里插入图片描述

  • 房源详情 /house/:id:封面轮播、价格与户型指标面板、房源标签 / 地址 / 浏览与评分、房东信息、以及「预约看房」「立即签约」「收藏」入口,下方为房源详情与租客评价。
    在这里插入图片描述

  • 登录 /login 与注册 /register:JWT 登录、角色差异展示,注册后自动登录并跳转。
    在这里插入图片描述

租客端

  • 预约看房弹窗:房源详情页「预约看房」弹出,选择看房日期时间并填写备注,提交后状态流在「我的预约」中可见。
    在这里插入图片描述

  • 我的预约 /appointments:租约状态流转(待确认 → 已确认 → 已完成 / 已取消),支持取消预约。
    在这里插入图片描述

  • 我的合同 /contracts:电子合同列表与详情(租金 / 期限 / 付款方式 / 条款),房东可解约、租客可查看账单。
    在这里插入图片描述

  • 我的账单 /bills:按合同生成的水电 / 租金账单,支持在线缴费并生成支付流水。
    在这里插入图片描述

  • 我的收藏 /favorites:一键收藏的房源合集,可直接进入详情或取消收藏。
    在这里插入图片描述

  • 我的评价 /comments:已签约房源发表 / 删除评价,星级 + 文字内容。
    在这里插入图片描述

  • 消息通知 /messages:系统消息(预约、签约、账单等提醒),支持标记已读 / 全部已读,顶栏带未读数角标。
    在这里插入图片描述

  • 投诉建议 /complaints:提交问题并跟进管理处回复。
    在这里插入图片描述

  • 个人资料 /profile:头像更换(上传)与真实姓名 / 手机号维护。
    在这里插入图片描述

房东后台(/manage/*)

  • 工作台 /manage/overview:统计卡片 + ECharts 数据可视化(房源 / 预约 / 合同状态分布、近 6 个月账单趋势、热门房源 TOP5)。
    在这里插入图片描述

  • 房源管理 /manage/houses:本人房源列表,支持发布 / 编辑 / 上架下架。
    在这里插入图片描述

  • 发布房源 /manage/houses/new:完整表单(标题、城市、户型、租金押金、封面/图片上传、描述)。
    在这里插入图片描述

  • 预约管理 /manage/appointments:查看租客预约,确认 / 取消并通知租客。
    在这里插入图片描述

  • 合同管理 /manage/contracts:已签合同台账并执行解约。
    在这里插入图片描述

  • 账单 / 收款 /manage/bills:各合同账单明细与收款状态。
    在这里插入图片描述

管理后台(admin,/manage/*)

  • 用户管理 /manage/users:租客 / 房东 / 管理员账号增删改、重置密码与禁用启用。
    在这里插入图片描述

  • 房源审核 /manage/audits:对待审核房源进行通过 / 驳回并通知房东。
    在这里插入图片描述

  • 投诉处理 /manage/complaints:回复租客投诉并推进闭环。
    在这里插入图片描述

  • 公告管理 /manage/notices:发布 / 删除平台公告,租客端首页同步展示。
    在这里插入图片描述

  • 支付流水 /manage/payments:全部缴费记录查询。
    在这里插入图片描述

技术栈

后端(backend/)

  • Java 8(JDK 1.8)
  • Spring Boot 2.7.18
  • Spring Security + JWT(jjwt 0.9.1)身份认证与接口鉴权
  • MyBatis-Plus 3.5.3.1
  • MySQL 8.0(驱动 mysql-connector-java 8.0.22)
  • Hibernate Validator 参数校验、Lombok

前端(frontend/)

  • Vue 3.4(<script setup> 组合式 API)
  • Vite 5.4 + @vitejs/plugin-vue
  • Element Plus 2.7 + @element-plus/icons-vue
  • Vue Router 4(路由级登录/角色守卫)、Pinia 2(用户状态)

环境要求

软件版本
JDK 1.8(后端为 Java 8 工程,不可用更高版本 JDK 编译)
Maven 3.6+
Node.js 18+
MySQL 8.0
浏览器 Chrome / Edge 等现代浏览器

目录结构

house-rent/
├── backend/ # Spring Boot 后端
│ ├── src/main/java/com/houserent/
│ │ ├── config/ # 安全、CORS、MyBatis-Plus、数据初始化
│ │ ├── controller/ # 12 个 REST 控制器(/api/**)
│ │ ├── service/ # 业务层
│ │ ├── mapper/ # MyBatis-Plus Mapper
│ │ ├── entity/ dto/ vo/ # 实体、请求、返回对象
│ │ ├── security/ # JWT 认证链路
│ │ └── common/ # 统一返回 Result / 异常处理
│ └── src/main/resources/application.yml
├── frontend/ # Vue3 前端
│ └── src/
│ ├── api/ # 接口封装(axios 实例、按模块)
│ ├── views/front/ # 前台页面(首页/房源/预约/合同/账单等)
│ ├── views/manage/ # 后台页面(工作台/房源管理/审核/用户等)
│ ├── views/auth/ # 登录/注册
│ ├── layouts/ # 前台/后台布局
│ ├── router/ stores/ utils/ components/ styles/
│ └── main.js App.vue
├── docs/screenshots/ # 功能界面截图(README「功能界面预览」配图)
└── sql/house_rent.sql # 数据库初始化脚本(建库 + 11 张表 + 演示数据)

快速启动

1. 初始化数据库

mysql -uroot -p < sql/house_rent.sql

脚本会执行 DROP DATABASE IF EXISTS house_rent 并重建,包含 11 张表:sys_user、house、appointment、contract、bill、payment、favorite、house_comment、message、complaint、notice,并在脚本末尾自带完整的演示数据,导入一次即可直接体验所有页面(详见“演示账号”)。

2. 启动后端(端口 8080)

数据库连接、JWT 等配置在 backend/src/main/resources/application.yml:

server.port: 8080
spring.datasource.username: root
spring.datasource.password: "123456" # 按本机 MySQL 修改
jwt.secret / jwt.expirehours # JWT 密钥与有效期(24 小时)
upload.dir: ../upload/ # 图片上传目录(相对后端运行目录)

命令行方式:

cd backend
mvn clean package -DskipTests # 打包,JDK 8
java -jar target/house-rent-backend-1.0.0.jar # 运行

或在 IDEA 中直接运行 HouseRentApplication.main。

3. 启动前端(端口 5173)

Vite 已配置开发代理,/api 自动转发到 http://localhost:8080(见 frontend/vite.config.js)。

cd frontend
npm install
npm run dev # 开发模式,访问 http://localhost:5173
npm run build # 生产构建(产物在 dist/)
npm run preview # 本地预览构建产物

访问入口

浏览器打开 http://localhost:5173 即可进入系统首页 /home(默认跳转),无需登录即可浏览房源、查看详情与公告。登录后:

  • 租客/房东/管理员:继续使用前台功能(预约、签约、账单、收藏、评价、消息、投诉等)
  • 房东/管理员:点击页面右上角头像菜单中的「进入房东后台/进入管理后台」进入管理端 /manage/overview
  • 游客:点击右上角「登录」进入 /login 使用演示账号登录

演示账号

用户名密码角色说明
admin 123456 管理员 平台管理(用户/审核/投诉/公告/流水)
landlord 123456 房东 王建国,管理自己的 5 套演示房源
tenant 123456 租客 李娜,演示租客端全流程

演示数据:4 套已上架房源(北京/上海/广州/深圳)+ 1 套待审核房源(杭州),房源均带真实图片(存放于 frontend/public/uploads/);3 条平台公告;以及覆盖租客/房东各页面的预约、合同、账单、支付流水、收藏、评价、消息、投诉建议。上述数据统一由 sql/house_rent.sql 内置(密码为 BCrypt 密文,明文均为 123456),随脚本一次性导入,无需额外初始化。

主要页面(路由)

  • 前台:/home 首页、/list 房源列表、/house/:id 房源详情、/appointments 我的预约、/contracts 我的合同、/bills 我的账单、/favorites 我的收藏、/comments 我的评价、/messages 消息通知、/complaints 投诉建议、/profile 个人资料
  • 后台 /manage/*:overview 工作台(统计图表,含房源/预约/合同状态分布、近 6 个月账单趋势、热门房源 TOP5)、houses(含 houses/new、houses/:id/edit)房源管理、appointments 预约管理、contracts 合同管理、bills 账单管理、users 用户管理(admin)、audits 房源审核(admin)、complaints 投诉处理(admin)、notices 公告管理(admin)、payments 支付流水(admin)
  • 登录 /login、注册 /register、404 兜底页

标注 meta.auth 的路由未登录会跳转 /login 并携带 redirect 参数;标注 meta.roles 的路由会校验角色(租客无权进入后台)。

API 一览

所有接口统一返回 Result:{ code, msg, data },code=200 为成功;/api/auth/**、/api/house/list、/api/house/detail/**、/api/comment/house/**、/api/notice/list、/api/upload/** 免登录,其余需带 Authorization: Bearer <token>,/api/admin/** 仅管理员,/api/landlord/** 限房东/管理员。

模块端点
认证 POST /api/auth/login、POST /api/auth/register、GET /api/auth/me、PUT /api/auth/profile
房源 GET /api/house/list、GET /api/house/detail/{id}、POST /api/house、PUT /api/house/{id}、DELETE /api/house/{id}、PUT /api/house/{id}/status
预约 POST /api/appointment、GET /api/appointment/my(别名 /api/client/appointment/my)、GET /api/landlord/appointments、PUT /api/landlord/appointment/{id}/status
合同 POST /api/contract/sign、GET /api/contract/my、GET /api/contract/{id}、GET /api/landlord/contracts、PUT /api/landlord/contract/{id}/terminate
账单/支付 GET /api/bill/my、POST /api/bill/pay、GET /api/landlord/bills、GET /api/contract/{contractId}/bills
收藏 POST /api/favorite/{houseId}、GET /api/favorite/my
评价 GET /api/comment/house/{houseId}、POST /api/comment、GET /api/comment/my、DELETE /api/comment/{id}
消息 GET /api/message/list、GET /api/message/unread-count、PUT /api/message/read/{id}、PUT /api/message/read-all
投诉 POST /api/complaint、GET /api/complaint/my、GET /api/admin/complaints、PUT /api/admin/complaint/{id}/reply
公告 GET /api/notice/list、POST /api/admin/notice、DELETE /api/admin/notice/{id}
管理 GET/POST/PUT/DELETE /api/admin/user(s…/)、PUT /api/admin/user/{id}/status、GET /api/admin/houses、PUT /api/admin/house/{id}/audit、GET /api/admin/payments
上传 POST /api/upload(multipart 文件,upload.dir 指定存储目录)

常见问题

  • 后端启动失败/连不上数据库:确认 MySQL 已启动、application.yml 中账号密码正确,且已执行 sql/house_rent.sql。
  • 端口被占用:8080(后端)被占用时改 application.yml 的 server.port,并同步改 frontend/vite.config.js 的 proxy.target。
  • 中文乱码:数据库使用 utf8mb4;JVM 启动可加 -Dfile.encoding=UTF-8。
  • 数据缺失或想重置:演示数据随 sql/house_rent.sql 导入;如需还原,重新导入该脚本后重启后端即可。房源图片需与仓库中 frontend/public/uploads/ 目录保持一致。
赞(0)
未经允许不得转载:网硕互联帮助中心 » 025 安居租赁 · 房屋租赁平台
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!