基于springboot2+vue2的租房管理系统
温馨提示:
本文最后更新于 2026年06月04日,已超过 6 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 资源
2. 项目简介
租房管理系统旨在为租客、屋主以及管理员提供一个在线房屋租赁信息管理平台。租客可以浏览和搜索房源信息、预约看房、下单租赁并对租赁体验进行评价;屋主可以发布和管理自己的房源、处理租客的预约和订单、回复租客评价;管理员则负责对整个系统进行统一管理,包括用户管理、房源审核、订单监管、公告发布等。系统实现了租房流程的数字化管理,提升了信息流通效率和用户体验。
3. 技术栈
| 技术分类 | 技术选型 |
|---|---|
| 后端框架 | Spring Boot 2.2.2.RELEASE, MyBatis-Plus 2.3, Apache Shiro 1.3.2 |
| 前端框架 | Vue.js (后台管理), Layui / 原生 HTML/JS (前端界面) |
| 数据库 | MySQL 5.7.32-log |
| 工具库 | Fastjson, Commons-lang3, Hutool, ECharts, 百度AI SDK |
| 其他 | Maven, Element UI (后台UI) |
4. 详细介绍
4.1 核心功能模块
- 管理员端:
- 用户管理:对租客和屋主账户进行增、删、改、查操作。
- 房源信息管理:管理所有房源,并进行审核、查看评论等操作。
- 订单信息管理:查看所有租赁订单,并进行审核等操作。
- 评价与申诉管理:查看租客评价和屋主申诉。
- 系统管理:管理通知公告、留言板、轮播图和房屋资讯。
- 租客端(前端页面):
- 房源浏览:查看已审核通过的房源列表,按条件搜索房源。
- 预约看房:对感兴趣的房源发起看房预约,等待屋主审核。
- 租赁下单:确认租赁房屋,生成订单,并支付。
- 评价管理:对已完成的租赁订单进行评价。
- 个人信息管理:维护个人资料和查看收藏记录。
- 屋主端(前端页面):
- 房源管理:发布和管理自己的房源信息,包括增、删、改、查。
- 预约看房管理:查看租客的看房预约,并进行审核。
- 订单信息管理:查看和处理与自己房源相关的租赁订单。
- 租客评价管理:查看租客对自己的评价,并进行回复或申诉。
- 个人信息管理:维护个人资料。
4.2 数据库设计
- 用户相关:
users(管理员),zuke(租客),wuzhu(屋主)。 - 业务核心:
fangyuanxinxi(房源信息),dingdanxinxi(订单信息),yuyuekanfang(预约看房)。 - 交互与反馈:
zukepingjia(租客评价),wuzhuhuifu(屋主回复),wuzhushensu(屋主申诉),messages(留言板),discussfangyuanxinxi(房源信息评论表)。 - 系统支持:
config(配置文件/轮播图),news(房屋资讯),tongzhigonggao(通知公告),token(token表),storeup(收藏表)。
4.3 业务流程
- 房源发布与审核:屋主登录系统,填写并发布房源信息。管理员在后台对新发布的房源进行审核,审核通过后房源才会在前端展示。
- 租客租房流程:租客浏览并搜索房源 -> 预约看房(屋主审核预约) -> 确认租赁后下单 -> 系统生成订单并等待屋主确认 -> 租客支付 -> 入住。
- 评价与反馈:租客在完成订单后可对房屋和屋主进行评价。屋主可以对评价进行回复。若对评价有异议,屋主可以发起申诉,由管理员处理。
- 信息发布:管理员可以在后台发布通知公告和房屋资讯,这些信息会实时展示在前端页面的相应板块。
5. 部分代码
5.1 后端 - 用户登录拦截器 (AuthorizationInterceptor.java)
此代码展示了后端的权限验证逻辑,通过拦截请求,验证请求头中的 Token 来判断用户是否已登录。
package com.interceptor;
// ... imports ...
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {
public static final String LOGIN_TOKEN_KEY = "Token";
@Autowired
private TokenService tokenService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// ... 跨域请求处理 ...
// 检查方法是否包含 @IgnoreAuth 注解,如果有则跳过验证
if (handler instanceof HandlerMethod) {
IgnoreAuth annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
if (annotation != null) {
return true;
}
}
// 从请求头中获取 Token
String token = request.getHeader(LOGIN_TOKEN_KEY);
TokenEntity tokenEntity = null;
if (StringUtils.isNotBlank(token)) {
tokenEntity = tokenService.getTokenEntity(token);
}
// 验证 Token 有效性,有效则设置会话信息
if (tokenEntity != null) {
request.getSession().setAttribute("userId", tokenEntity.getUserid());
request.getSession().setAttribute("role", tokenEntity.getRole());
request.getSession().setAttribute("tableName", tokenEntity.getTablename());
request.getSession().setAttribute("username", tokenEntity.getUsername());
return true;
}
// Token 无效,返回 401 未授权响应
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
PrintWriter writer = response.getWriter();
writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
return false;
}
}
5.2 后端 - 房源信息控制器 (FangyuanxinxiController.java)
此代码展示了核心业务“房源信息”的后端API接口,包括分页查询、前端列表、详情查看(含点击量统计)、以及智能排序等功能。
package com.controller;
// ... imports ...
@RestController
@RequestMapping("/fangyuanxinxi")
public class FangyuanxinxiController {
@Autowired
private FangyuanxinxiService fangyuanxinxiService;
// 后端分页列表(供管理后台使用)
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, FangyuanxinxiEntity fangyuanxinxi, HttpServletRequest request){
// ... 根据登录角色(如屋主)进行数据过滤 ...
PageUtils page = fangyuanxinxiService.queryPage(params, ...);
return R.ok().put("data", page);
}
// 前端公开列表
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, FangyuanxinxiEntity fangyuanxinxi, HttpServletRequest request){
PageUtils page = fangyuanxinxiService.queryPage(params, ...);
return R.ok().put("data", page);
}
// 获取详情,访问时自动增加点击次数
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
FangyuanxinxiEntity fangyuanxinxi = fangyuanxinxiService.selectById(id);
fangyuanxinxi.setClicknum(fangyuanxinxi.getClicknum() + 1); // 点击量+1
fangyuanxinxi.setClicktime(new Date());
fangyuanxinxiService.updateById(fangyuanxinxi);
return R.ok().put("data", fangyuanxinxi);
}
// 前端智能排序(按点击量降序)
@IgnoreAuth
@RequestMapping("/autoSort")
public R autoSort(@RequestParam Map<String, Object> params, ...){
params.put("sort", "clicknum");
params.put("order", "desc");
PageUtils page = fangyuanxinxiService.queryPage(params, ...);
return R.ok().put("data", page);
}
// ... 其他保存、修改、删除等方法 ...
}
5.3 核心实体类 - 房源信息 (FangyuanxinxiEntity.java)
此代码定义了房源信息的数据结构,与数据库表 fangyuanxinxi 一一对应,是系统业务逻辑的核心。
package com.entity;
// ... imports ...
@TableName("fangyuanxinxi")
public class FangyuanxinxiEntity<T> implements Serializable {
@TableId
private Long id;
private String fangwubianhao; // 房屋编号
private String fangwumingcheng; // 房屋名称
private String fangwudizhi; // 房屋地址
private String fangwuzhuangtai; // 房屋状态
private String fangwutedian; // 房屋特点
private String fangwujieshao; // 房屋介绍
private String chengjiaoliang; // 成交量
private Integer zulinjiage; // 租赁价格
private String xiangqing; // 详情(富文本)
private String fangwuzhaopian; // 房屋照片(可多张,逗号分隔)
private String wuzhuzhanghao; // 屋主账号
private String wuzhuxingming; // 屋主姓名
private String lianxidianhua; // 联系电话
private String sfsh; // 是否审核
private String shhf; // 审核回复
private Integer thumbsupnum; // 点赞数
private Integer crazilynum; // 点踩数
private Date clicktime; // 最近点击时间
private Integer clicknum; // 点击次数
// ... Getters and Setters ...
}
5.4 前端 - 导航栏菜单配置 (menu.js)
此代码展示了前端菜单的动态配置方式,根据不同角色(管理员、租客、屋主)返回不同的菜单结构,实现了权限控制的前端展示。
const menu = {
list() {
return [
{
"roleName": "管理员",
"tableName": "users",
"backMenu": [
{ "menu": "租客管理", "child": [{ "menu": "租客", "tableName": "zuke", "buttons": ["新增","查看","修改","删除"] }] },
{ "menu": "屋主管理", "child": [{ "menu": "屋主", "tableName": "wuzhu", "buttons": ["新增","查看","修改","删除"] }] },
{ "menu": "房源信息管理", "child": [{ "menu": "房源信息", "tableName": "fangyuanxinxi", "buttons": ["查看","删除","审核","查看评论"] }] },
// ... 更多管理员菜单 ...
],
"frontMenu": [
{ "menu": "房源信息模块", "child": [{ "menu": "房源信息列表", "tableName": "fangyuanxinxi", "buttons": ["查看","预约","查看评论"] }] },
{ "menu": "通知公告模块", "child": [{ "menu": "通知公告列表", "tableName": "tongzhigonggao", "buttons": ["查看"] }] }
],
// ...
},
{
"roleName": "租客",
"tableName": "zuke",
"backMenu": [
{ "menu": "预约看房管理", "child": [{ "menu": "预约看房", "tableName": "yuyuekanfang", "buttons": ["查看"] }] },
{ "menu": "订单信息管理", "child": [{ "menu": "订单信息", "tableName": "dingdanxinxi", "buttons": ["查看","发布评价","支付"] }] },
// ... 更多租客菜单 ...
],
// ...
}
// ... 屋主菜单 ...
]
}
}
export default menu;
6. 部分截图



































7. 项目总结
租房管理系统是一个功能完善的租房管理系统,它成功地将租客、屋主和管理员三个核心角色紧密联系起来,涵盖了从房源发布、浏览、预约到租赁、评价的完整业务闭环。
- 优点:
- 技术栈成熟:采用业界主流的 Spring Boot + MyBatis-Plus 作为后端基础,Vue + Element UI 构建管理后台,使得系统稳定、易于开发和维护。
- 权限控制清晰:项目通过 Shiro/自定义拦截器 + Token 机制实现了接口级别的访问控制,同时前端菜单也根据角色动态生成,权限体系较为完善。
- 业务功能完整:系统不仅包含了基础的增删改查,还实现了审核流程、预约-订单流程、评价-回复-申诉流程等复杂业务逻辑,贴近真实应用场景。
- 用户体验兼顾:前端界面使用了 Layui 和原生技术,并集成了轮播图、地图、富文本编辑器、图表(ECharts)等功能,提升了用户交互体验。
正文到此结束
- 本文标签: Java Spring Boot 毕业设计
- 本文链接: https://blog.xiaobias.com/article/54
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
