ARTICLE · 1304099
毕业设计基于SpringBoot+AI在线租房管理(前后端源码)
基于SpringBoot+AI大模型的在线租房管理系统
本本系统是一个基于 B/S 架构的 线上租房平台 ,面向城市租赁市场的真实业务场景,围绕“房源发布 — 房源检索 — 预约看房 — 交易撮合 — 运营监管”的完整业务闭环设计。系统以南京市为示例数据域,涵盖江宁、鼓楼、建邺、雨花台、栖霞、浦口等主要城区的房源信息。
系统采用**“公共门户 + 管理后台”双门户形态**:
- 公共门户 (`/fangyuan` ):游客无需登录即可浏览房源、地图找房、查看平台公告,降低使用门槛;
- 管理后台 :租客、房东、管理员三类角色登录后进入各自的差异化工作台,完成收藏、预约、发布、审核、运营等业务操作。
平台同时深度集成大语言模型(LLM)能力,将 AI 应用于 房源描述自动生成、对话式找房、个性化推荐 三个场景,是本系统区别于传统租房网站的核心特色。

层次 | 技术选型 | 版本 | 说明 |
后端框架 | Spring Boot | 3.3.1 | 基于 Java 17,提供 RESTful API |
持久层 | MyBatis | 3.0.3 | XML Mapper + 驼峰映射 |
数据库 | MySQL | 8.x | InnoDB 引擎,utf8mb4 字符集 |
前端框架 | Vue 3 | 3.5 | 组合式 API |
构建工具 | Vite | 8.x | 开发热更新与生产构建 |
UI 组件库 | Element Plus | 2.14 | 配合 @element-plus/icons-vue |
状态管理 | Pinia | 3.0 | 用户会话与全局状态 |
路由 | Vue Router | 5.1 | History 模式 + 前端路由守卫 |
HTTP 客户端 | Axios | 1.18 | 统一请求封装与拦截 |
数据可视化 | ECharts | 6.1 | 行情走势与管理端报表 |
地图服务 | 高德地图 JS API | 2.0 | 地图找房、房源坐标标注 |
AI 服务 | 讯飞星火大模型 | generalv3 | OpenAI 兼容接口接入 |
认证方案 | 自研 JWT | — | HMAC 签名,拦截器校验 + ThreadLocal 上下文 |
项目构建 | Maven / npm | — | 前后端分离部署 |




游客(未登录用户)
浏览房源列表、按区域/租金/户型筛选房源; 地图找房 :基于高德地图按地理位置直观查看房源分布; 查看平台公告、房源详情,进入登录/注册引导。
租客(TENANT)
房源检索与收藏 :多条件筛选、房源对比、收藏夹、浏览足迹; 地图找房 :地图模式选房,结合通勤与周边配套决策; 看房预约 :选择心仪房源发起预约,通过 租客日历 集中管理看房安排; 个性化推荐 :系统基于用户画像(工作区域、预算、户型偏好)与房源热度计算匹配分并生成推荐理由; AI 对话找房 :以自然语言描述需求(如“预算 3500 想住在江宁两居室”),AI 解析需求并实时返回匹配房源; 租房行情 :ECharts 可视化展示各区域租金水平与市场分布; 消息通知、意见反馈、个人资料维护。
房东(OWNER)
房源发布与管理 :填写房源信息上传图片,上下架管理; AI 描述生成 :一键调用大模型,依据房源结构化字段(区域、户型、租金、设施等)自动撰写营销文案,降低发布门槛; 预约管理 :接收、确认或拒绝租客的看房预约; 房东工作台:房源数据总览(浏览量、收藏量、预约量); AI 服务配置:自定义大模型接入参数并测试连通性。
管理员(ADMIN)
用户管理 :全平台用户账号的查询、启停与角色维护; 房源审核 :对房东发布/修改的房源进行内容审核(待审核 → 通过/驳回),保障信息合规; 分类管理 :维护房源分类字典; 公告管理 :发布平台公告,同步展示于公共门户; 反馈处理 :查看并回复用户反馈; 报表中心与管理看板 :用户规模、房源分布、预约转化、区域租金等多维统计图表,辅助平台运营决策。










源码经过测试,有录屏,有截图,有文档值得信赖!
源码包含AI大模型,推荐算法等功能创新点值得信赖!
对系统的源码感兴趣,可以联系技术V!

如果没有通过,技术人员联系方式也可以在“帮助反馈”菜单的子菜单“联系我们”中查看!
参考代码
package com.onlinerental.controller;import com.onlinerental.common.ApiResponse;import com.onlinerental.common.IgnoreAuth;import com.onlinerental.config.AuthContext;import com.onlinerental.dto.AiChatRequestDTO;import com.onlinerental.dto.AiDescriptionDTO;import com.onlinerental.dto.AiSettingSaveDTO;import com.onlinerental.service.AiService;import com.onlinerental.vo.AiChatResponseVO;import com.onlinerental.vo.AiSettingVO;import jakarta.validation.Valid;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api/ai")public class AiController {private final AiService aiService;public AiController(AiService aiService) {this.aiService = aiService;}@PostMapping("/generate-description")public ApiResponse<String> generateDescription(@RequestBody @Valid AiDescriptionDTO descriptionDTO) {return ApiResponse.success(aiService.generateHouseDescription(descriptionDTO, AuthContext.getCurrentUserId()));}@GetMapping("/setting")public ApiResponse<AiSettingVO> getSetting() {return ApiResponse.success(aiService.getSetting(AuthContext.getCurrentUserId()));}@PostMapping("/setting")public ApiResponse<Void> saveSetting(@RequestBody @Valid AiSettingSaveDTO saveDTO) {aiService.saveSetting(AuthContext.getCurrentUserId(), saveDTO);return ApiResponse.success("配置保存成功", null);}@PostMapping("/test")public ApiResponse<String> testConnection(@RequestBody @Valid AiSettingSaveDTO saveDTO) {return ApiResponse.success(aiService.testConnection(AuthContext.getCurrentUserId(), saveDTO));}@IgnoreAuth@PostMapping("/chat-recommend")public ApiResponse<AiChatResponseVO> chatRecommend(@RequestBody @Valid AiChatRequestDTO requestDTO) {return ApiResponse.success(aiService.chatRecommend(AuthContext.getCurrentUserId(), requestDTO));}}















































































