1. Base64 编码
复制打开获取源代码: https://blog.xiaobias.com/article/54
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来判断用户是否已登录。
packagecom.interceptor;// ... imports ...@ComponentpublicclassAuthorizationInterceptorimplementsHandlerInterceptor{publicstaticfinalStringLOGIN_TOKEN_KEY="Token";@AutowiredprivateTokenServicetokenService;@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{// ... 跨域请求处理 ...// 检查方法是否包含 @IgnoreAuth 注解,如果有则跳过验证if(handlerinstanceofHandlerMethod){IgnoreAuthannotation=((HandlerMethod)handler).getMethodAnnotation(IgnoreAuth.class);if(annotation!=null){returntrue;}}// 从请求头中获取 TokenStringtoken=request.getHeader(LOGIN_TOKEN_KEY);TokenEntitytokenEntity=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());returntrue;}// Token 无效,返回 401 未授权响应response.setCharacterEncoding("UTF-8");response.setContentType("application/json; charset=utf-8");PrintWriterwriter=response.getWriter();writer.print(JSONObject.toJSONString(R.error(401,"请先登录")));returnfalse;}}5.2 后端 - 房源信息控制器 (FangyuanxinxiController.java)
此代码展示了核心业务“房源信息”的后端API接口,包括分页查询、前端列表、详情查看(含点击量统计)、以及智能排序等功能。
packagecom.controller;// ... imports ...@RestController@RequestMapping("/fangyuanxinxi")publicclassFangyuanxinxiController{@AutowiredprivateFangyuanxinxiServicefangyuanxinxiService;// 后端分页列表(供管理后台使用)@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,FangyuanxinxiEntityfangyuanxinxi,HttpServletRequestrequest){// ... 根据登录角色(如屋主)进行数据过滤 ...PageUtilspage=fangyuanxinxiService.queryPage(params,...);returnR.ok().put("data",page);}// 前端公开列表@IgnoreAuth@RequestMapping("/list")publicRlist(@RequestParamMap<String,Object>params,FangyuanxinxiEntityfangyuanxinxi,HttpServletRequestrequest){PageUtilspage=fangyuanxinxiService.queryPage(params,...);returnR.ok().put("data",page);}// 获取详情,访问时自动增加点击次数@RequestMapping("/detail/{id}")publicRdetail(@PathVariable("id")Longid){FangyuanxinxiEntityfangyuanxinxi=fangyuanxinxiService.selectById(id);fangyuanxinxi.setClicknum(fangyuanxinxi.getClicknum()+1);// 点击量+1fangyuanxinxi.setClicktime(newDate());fangyuanxinxiService.updateById(fangyuanxinxi);returnR.ok().put("data",fangyuanxinxi);}// 前端智能排序(按点击量降序)@IgnoreAuth@RequestMapping("/autoSort")publicRautoSort(@RequestParamMap<String,Object>params,...){params.put("sort","clicknum");params.put("order","desc");PageUtilspage=fangyuanxinxiService.queryPage(params,...);returnR.ok().put("data",page);}// ... 其他保存、修改、删除等方法 ...}5.3 核心实体类 - 房源信息 (FangyuanxinxiEntity.java)
此代码定义了房源信息的数据结构,与数据库表fangyuanxinxi一一对应,是系统业务逻辑的核心。
packagecom.entity;// ... imports ...@TableName("fangyuanxinxi")publicclassFangyuanxinxiEntity<T>implementsSerializable{@TableIdprivateLongid;privateStringfangwubianhao;// 房屋编号privateStringfangwumingcheng;// 房屋名称privateStringfangwudizhi;// 房屋地址privateStringfangwuzhuangtai;// 房屋状态privateStringfangwutedian;// 房屋特点privateStringfangwujieshao;// 房屋介绍privateStringchengjiaoliang;// 成交量privateIntegerzulinjiage;// 租赁价格privateStringxiangqing;// 详情(富文本)privateStringfangwuzhaopian;// 房屋照片(可多张,逗号分隔)privateStringwuzhuzhanghao;// 屋主账号privateStringwuzhuxingming;// 屋主姓名privateStringlianxidianhua;// 联系电话privateStringsfsh;// 是否审核privateStringshhf;// 审核回复privateIntegerthumbsupnum;// 点赞数privateIntegercrazilynum;// 点踩数privateDateclicktime;// 最近点击时间privateIntegerclicknum;// 点击次数// ... Getters and Setters ...}5.4 前端 - 导航栏菜单配置 (menu.js)
此代码展示了前端菜单的动态配置方式,根据不同角色(管理员、租客、屋主)返回不同的菜单结构,实现了权限控制的前端展示。
constmenu={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":["查看","发布评价","支付"]}]},// ... 更多租客菜单 ...],// ...}// ... 屋主菜单 ...]}}exportdefaultmenu;6. 部分截图
7. 项目总结
租房管理系统是一个功能完善的租房管理系统,它成功地将租客、屋主和管理员三个核心角色紧密联系起来,涵盖了从房源发布、浏览、预约到租赁、评价的完整业务闭环。
- 优点:
- 技术栈成熟:采用业界主流的 Spring Boot + MyBatis-Plus 作为后端基础,Vue + Element UI 构建管理后台,使得系统稳定、易于开发和维护。
- 权限控制清晰:项目通过 Shiro/自定义拦截器 + Token 机制实现了接口级别的访问控制,同时前端菜单也根据角色动态生成,权限体系较为完善。
- 业务功能完整:系统不仅包含了基础的增删改查,还实现了审核流程、预约-订单流程、评价-回复-申诉流程等复杂业务逻辑,贴近真实应用场景。
- 用户体验兼顾:前端界面使用了 Layui 和原生技术,并集成了轮播图、地图、富文本编辑器、图表(ECharts)等功能,提升了用户交互体验。