【开源】基于Vue+SpringBoot的民宿预定管理系统

在这里插入图片描述

项目编号: S 058 ,文末获取源码。 \color{red}{项目编号:S058,文末获取源码。} 项目编号:S058,文末获取源码。


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 用例设计
    • 2.2 功能设计
      • 2.2.1 租客角色
      • 2.2.2 房主角色
      • 2.2.3 系统管理员角色
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询民宿
    • 4.2 新增民宿
    • 4.3 新增民宿评价
    • 4.4 查询留言
    • 4.5 新增民宿订单
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的民宿预定管理系统,包含了民宿档案模块、民宿订单模块、民宿评价模块、民宿留言模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,民宿预定管理系统基于角色的访问控制,给民宿管理员、旅客使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏

源码下载


二、功能模块

2.1 用例设计

民宿预订管理系统,使用Spring Boot、Vue.js 框架进行开发,后台服务器使用了Tomcat,数据库使用MySQL。

该系统实现了登录注册、上传房源、预订民宿、我的留言、评价功能、订单生成等模块功能。

本系统分为以下三种用户类型。

租客:指那些在平台上注册的想要租民宿的消费者。

房主:指上传房源的当前民宿经营者。

系统管理员:指管理房源、用户与评论,帮助租客和房主解决问题的系统管理者。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.2 功能设计

民宿预订管理系统本系统分为使用用户类型分为租客、房主、系统管理员三种,具体功能结构如下。

2.2.1 租客角色

  1. 注册、登录功能
  2. 搜索功能:根据某些特定项模糊匹配民宿。
  3. 预订功能:在线预订民宿房间。
  4. 留言和评论功能:可以跟其他角色留言、评论民宿房间。
  5. 订单功能:查看生成的订单详情,进行退订操作。

2.2.2 房主角色

  1. 注册、登录功能
  2. 搜索功能:根据某些特定项模糊匹配民宿。
  3. 民宿房源管理功能:修改房源状态与信息、上传房源照片、新增房源、搜索房源。
  4. 留言和评论功能:可以跟其他角色留言、评论民宿房间。
  5. 订单功能:可以查看生成的订单信息。

2.2.3 系统管理员角色

  1. 注册、登录功能
  2. 搜索功能:根据某些特定项模糊匹配民宿。
  3. 用户管理:按条件查询所有类型的用户,删除用户,修改自己的信息。
  4. 房源管理:修改房源上下线状态。
  5. 留言和评论管理:可以回复租客和房主的问题且可以删除评论。

三、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、核心代码

4.1 查询民宿

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询民宿")
public Result<IPage<Homestay>> getByPage(@ModelAttribute Homestay homestay ,@ModelAttribute PageVo page){QueryWrapper<Homestay> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();// 如果是房主,自己看自己QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 and role_id = '1635922262441988096'");if(iUserService.count(userQw) > 0L) {qw.eq("user_id",currUser.getId());}if(!ZwzNullUtils.isNull(homestay.getTitle())) {qw.like("title",homestay.getTitle());}if(!ZwzNullUtils.isNull(homestay.getStatus())) {qw.eq("status",homestay.getStatus());}IPage<Homestay> data = iHomestayService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Homestay>>().setData(data);
}

4.2 新增民宿

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增民宿")
public Result<Homestay> insert(Homestay homestay){User currUser = securityUtil.getCurrUser();homestay.setUserId(currUser.getId());iHomestayService.saveOrUpdate(homestay);return new ResultUtil<Homestay>().setData(homestay);
}

4.3 新增民宿评价

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增评价")
public Result<Appraise> insert(Appraise appraise){Homestay h = iHomestayService.getById(appraise.getDormId());if(h == null) {return ResultUtil.error("民宿不存在");}appraise.setDormName(h.getTitle());User currUser = securityUtil.getCurrUser();appraise.setUserId(currUser.getId());appraise.setUserName(currUser.getNickname());iAppraiseService.saveOrUpdate(appraise);return new ResultUtil<Appraise>().setData(appraise);
}

4.4 查询留言

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询留言")
public Result<IPage<Message>> getByPage(@ModelAttribute Message message ,@ModelAttribute PageVo page){QueryWrapper<Message> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();// 如果是租客,自己看自己QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 and role_id = '1536606659751841795'");if(iUserService.count(userQw) > 0L) {qw.eq("user_id",currUser.getId());}if(!ZwzNullUtils.isNull(message.getContent())) {qw.like("content",message.getContent());}if(!ZwzNullUtils.isNull(message.getUserName())) {qw.like("user_name",message.getUserName());}IPage<Message> data = iMessageService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Message>>().setData(data);
}

4.5 新增民宿订单

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增订单")
public Result<Order> insert(Order order){Homestay h = iHomestayService.getById(order.getDormId());if(h == null) {return ResultUtil.error("民宿不存在");}order.setDormName(h.getTitle());User currUser = securityUtil.getCurrUser();order.setUserId(currUser.getId());order.setUserName(currUser.getNickname());order.setUserMobile(currUser.getMobile());order.setDate(DateUtil.today());iOrderService.saveOrUpdate(order);return new ResultUtil<Order>().setData(order);
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/209726.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分享】2015-2023年我国区县逐月二手房房价数据(Excel/Shp格式)

房价是一个城市发展程度的重要体现&#xff0c;一个城市的房价越高通常代表这个城市越发达&#xff0c;对于人口的吸引力越大&#xff01;因此&#xff0c;房价数据是我们在各项城市研究中都非常常用的数据&#xff01;之前我们分享过2015-2023年我国地级市逐月房价数据&#x…

FTP服务文件上传失败,错误码553的排故过程

本文主要记录文件上传失败&#xff0c;错误码553的排故过程。 1 背景 树莓派通过FTP给嵌入式板卡传输文件&#xff0c;好几套设备&#xff0c;发现有的能传输成功&#xff0c;有的传输不成功。树莓派和嵌入式板卡都一样的&#xff0c;出现问题时感觉很懵。 2 逐项对比 2.1 自…

吉利展厅 | 透明OLED拼接2x2:科技与艺术的完美融合

产品&#xff1a;4块55寸OLED透明拼接屏 项目地点&#xff1a;南宁 项目时间&#xff1a;2023年11月 应用场景&#xff1a;吉利展厅 在2023年11月的南宁&#xff0c;吉利展厅以其独特的展示设计吸引了众多参观者的目光。其中最引人注目的亮点是展厅中央一个由四块55寸OLED透…

线程变量引发的session混乱问题

最近不是在救火&#xff0c;就是在救火的路上。 也没什么特别可写的&#xff0c;今天记录下最近遇到的一个问题&#xff0c;个人觉得挺有意思&#xff0c; 待有缘人阅读 言归正传&#xff0c;售后反馈&#xff1a; 营业查询中付款方式为第三方支付的几条银行缴费&#xff0c;创…

ENVI植被指数阈值法

植被指数阈值法提取纯净像元 首先用ENVI打开无人机遥感影像 1. 假彩色显示 打开数据管理工具&#xff0c;无人机的4波段为红边波段 2. 波段计算 打开band math&#xff0c;输入 float(b1-b2)/(b1b2) 选择对应波段 3. 阈值筛选 阈值按经验值选的0.7&#xff0c;ndvi…

爬虫概念、基本使用及一个类型和六个方法(一)

目录 一、爬虫简介 1.什么是爬虫 2.爬虫的核心 3.爬虫的用途 4.爬虫的分类 5.反爬手段 二、Urllib基本使用 1.导入我们需要的包 2.定义一个url 3.模拟浏览器向服务器发送请求 4.获取响应中的页面的源码 5.打印数据 三、一个类型和六个方法 1.定义url&#xff0c;并…

Docker 容器日志查看和清理

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

java springboot通过application配置文件生成随机值并控制范围

我们找到 项目的 application 配置文件 这里我们还是习惯用 yml格式的 我们在配置文件中 写出 ${random.} 的时候 他就会将所有可配置的随机类型都提示出来了 有 整数 长整星 字符串 uuid 这里 我们来个模板 testcase:book:id: ${random.int}name: ${random.value}date: ${r…

Ubuntu18.04安装Ipopt-3.12.8流程

本文主要介绍在Ubuntu18.04中安装Ipopt库的流程&#xff0c;及过程报错的解决方法&#xff0c;已经有很多关于Ipopt安装的博客&#xff0c;但经过我的测试&#xff0c;很多都失效了&#xff0c;经过探索&#xff0c;找到可流畅的安装Ipopt的方法&#xff0c;总结成本篇博客。 …

提升Zoom视频会议流畅度,试试一站式SaaS应用加速方案

对于一些跨国企业&#xff0c;Zoom是比较常用的视频会议软件。首先明确的是Zoom官方版也就是国际版&#xff0c;国内企业访问Zoom国际版会觉得慢一点&#xff0c;尤其在进行跨国、跨区域大型实时会议时卡顿、花屏就会更为明显。 为什么会卡顿呢&#xff1f; 主要问题之一还是受…

zabbix配置snmp trap--使用snmptrapd和Bash接收器(缺zabbix_trap_handler.sh文中自取)--图文教程

1.前言 我的zabbix的版本是5.0版本&#xff0c;5.0的官方文档没有使用bash接收器的示例&#xff0c;6.0的官方文档有使用bash接收器的示例&#xff0c;但是&#xff0c;下载文件的链接失效&#xff1f;&#xff01; 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

UI咨询公司-蓝蓝设计:顶级秘籍:提升UI设计吸引力的3大绝招

想要让你的UI设计在海量应用中脱颖而出&#xff0c;吸引用户眼球吗&#xff1f;如果你正在寻找提升UI设计吸引力的绝妙方法&#xff0c;那么你绝对不能错过本文&#xff01;我们将为你揭示顶级UI设计师都不会告诉你的3大绝招&#xff0c;让你轻松掌握提升UI设计吸引力的关键技巧…

kafka 3.x 学习笔记

kafka 3.x 学习笔记 在 kafka 2.8.0 版本之前&#xff0c;安装使用 kafka 需要配套安装 zookeeper&#xff0c;但在 2.8.0 版本之后&#xff0c;不再需要安装 zookeeper&#xff0c;本次学习笔记采用的 kafka 版本为 3.0.0。 文章目录 kafka 3.x 学习笔记一、kafka 定义1 什么是…

【Proteus仿真】【51单片机】篮球比赛计分器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用声光报警模块、动态数码管模块、按键模块等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示比赛时间和AB队得分&#xff1b;系统还未开…

网络和Linux网络_10(网络层)IP协议+分片组装+网段划分+路由

目录 1. IP协议作用和报头 1.1 IP和TCP作用 1.2 IP协议报头 2. 分片与组装 2.1 分片与组装概念 2.2 类似面试题的QA 3. 网段划分和IP地址 3.1 网段划分 3.2 IP地址分类 3.3 内外IP和公网IP地址 4. 路由和8位生存时间 4.1 路由的概念 4.2 8位生存时间 5. IP相关选…

华为云之一键安装宝塔面板

华为云之一键安装宝塔面板 一、本次实践介绍1.1 实践环境简介1.2 本次实践目的 二、宝塔面板介绍三、环境准备工作3.1 预置实验环境3.2 查看环境信息3.3 登录华为云3.4 查看弹性云服务器状态3.5 ssh登录弹性云服务器3.6 查看操作系统版本 四、安装宝塔面板4.1 一键部署宝塔面板…

git 本地改动无法删除

1. 问题 记录下git遇到奇怪的问题&#xff0c;本地有些改动不知道什么原因无法删除 git stash&#xff0c; git reset --hard HEAD 等都无法生效&#xff0c;最终通过强制拉取线上解决 如下图&#xff1a; 2. 解决 git fetch --all git reset --hard origin/master执行这两…

业务场景中Hive解析Json常用案例

业务场景中Hive解析Json常用案例 json在线工具 json格式转换在线工具 https://tool.lu/json/format格式互转&#xff1a; // 格式化可以合并整行显示 {"name":"John Doe","age":35,"email":"johnexample.com"}// 格式化…

TimeGPT:时间序列预测模型实例

时间序列预测领域正在经历一个非常激动人心的时期。在过去的三年里&#xff0c;我们见证了许多重要的贡献&#xff0c;如N-BEATS、N-HiTS、PatchTST和TimesNet等。同时&#xff0c;大型语言模型&#xff08;LLM&#xff09;近来在流行度方面取得了很大的成功&#xff0c;例如Ch…

深入了解Java Period类,对时间段的精确控制

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概2900多字&#xff0c;预计阅读时间长需要3分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…