原创

基于springboot2+vue2的租房管理系统

温馨提示:
本文最后更新于 2026年06月04日,已超过 6 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 资源

https://fifteen.xiaobias.com/source/105

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 业务流程

  1. 房源发布与审核:屋主登录系统,填写并发布房源信息。管理员在后台对新发布的房源进行审核,审核通过后房源才会在前端展示。
  2. 租客租房流程:租客浏览并搜索房源 -> 预约看房(屋主审核预约) -> 确认租赁后下单 -> 系统生成订单并等待屋主确认 -> 租客支付 -> 入住。
  3. 评价与反馈:租客在完成订单后可对房屋和屋主进行评价。屋主可以对评价进行回复。若对评价有异议,屋主可以发起申诉,由管理员处理。
  4. 信息发布:管理员可以在后台发布通知公告和房屋资讯,这些信息会实时展示在前端页面的相应板块。

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. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24
img25
img26
img27
img28
img29
img30
img31
img32
img33
img34
img35

7. 项目总结

租房管理系统是一个功能完善的租房管理系统,它成功地将租客、屋主和管理员三个核心角色紧密联系起来,涵盖了从房源发布、浏览、预约到租赁、评价的完整业务闭环。

  • 优点
    1. 技术栈成熟:采用业界主流的 Spring Boot + MyBatis-Plus 作为后端基础,Vue + Element UI 构建管理后台,使得系统稳定、易于开发和维护。
    2. 权限控制清晰:项目通过 Shiro/自定义拦截器 + Token 机制实现了接口级别的访问控制,同时前端菜单也根据角色动态生成,权限体系较为完善。
    3. 业务功能完整:系统不仅包含了基础的增删改查,还实现了审核流程、预约-订单流程、评价-回复-申诉流程等复杂业务逻辑,贴近真实应用场景。
    4. 用户体验兼顾:前端界面使用了 Layui 和原生技术,并集成了轮播图、地图、富文本编辑器、图表(ECharts)等功能,提升了用户交互体验。

代码:https://fifteen.xiaobias.com/source/105

正文到此结束
本文目录