目录
一、摘要
1.1 项目介绍
基于JAVA+Vue+SpringBoot+MySQL的假日旅社管理系统,包含了民宿管理模块、民宿订单模块、民宿评论模块和民宿新闻模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,假日旅社管理系统基于角色的访问控制,给旅社管理员、旅客使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
1.2 项目录屏
<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="AKiaetVN-1700636826413" src="https://player.bilibili.com/player.html?aid=620864714"></iframe>
二、功能模块
2.1 系统介绍
随着国民生活水平的逐渐提高,每逢假期或空闲时节走出家门游山玩水已渐渐成为人们生活的一部分,那么外出住宿是必然要考虑到的问题。互联网的普及给人们带来的便利不需多说。
因此如果把假日旅社与互联网结合起来,利用 spring boot 框架,mysql 技术建设民宿短租系统,实现假日旅社管理的网络化。则对于进一步提高国民经济发展,丰富人们的精神生活定能起到不少的促进作用。
根据本系统的研究现状和发展趋势,系统从需求分析、结构设计、数据库设计,在到系统实现,分别为前端实现和后端实现。
- 主界面,主要显示正在热门假日旅社动态、网站导航
- 用户登陆注册和用户管理,用户管理包括用户信息、添加时间、手机号等
- 民宿详情,为用户提供民宿的基本信息,用户可以进行评论。
- 民宿预定,用户进行预定,确认订单信息,生成用户订单等
- 角色管理:对后台管理员账号进行修改和增删。
2.2 QA 问答
假日旅社管理系统的使用对象有两个,分别是宿舍管理员和旅客。
-
宿舍管理员可以对旅社的宿舍进行管理维护;对旅社的时政新闻进行管理;监控查询旅客的预约、评论信息;系统权限的配置;旅社组织架构的设计;系统用户的管理
-
旅客可以查询旅社的宿舍;查询旅社的新闻;在对旅社的宿舍进行预约;对宿舍进行评论
假日旅社管理系统拥有以下六个功能模块。
-
承载旅社的宿舍管理功能。也就是宿舍管理员可以对旅社的宿舍进行增删改查操作。
宿舍是假日旅社系统的基础数据,所以需要这个模块。 -
承载旅客档案管理功能。也就是宿舍管理员可以对旅客的档案进行增删改查操作。比如维护手机号、姓名等。
旅客也是假日旅社系统的基础数据,所以需要这个模块。 -
承载宿舍预约的功能,和模拟付款功能。
旅客可以查询宿舍管理员发布的宿舍,并且进行预定,支持模拟付款功能,模拟整个预定的过程。 -
承载旅社的新闻时政功能。
一家旅社要能够得到旅客的信赖,新闻时政肯定是必不可少的
所以需要这个模块,由宿舍管理员维护,开放给旅客查询。 -
承载旅社宿舍的留言功能。
旅客可以对宿舍进行评论,可以被给其他旅客看到,给与决策支持。 -
承载可能需要的其他功能。
在设计这个系统的时候,可能会用到其他功能,比如日志、文件管理
我会把这些功能封装成独立的模块,利用Vue的组件化优势提供给别的模块调用
这个系统前端采用了国内流行的Vue技术,采用View UI作为组件库;后端采用SpringBoot整合MybatisPlus。采用maven构建项目,采用Mysql数据库,使用Redis缓存加密的用户临时数据。
三、系统展示
四、核心代码
4.1 查询民宿
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询民宿")
public Result<IPage<Dormitory>> getByPage(@ModelAttribute Dormitory dormitory,@ModelAttribute PageVo page){
QueryWrapper<Dormitory> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(dormitory.getTitle())) {
qw.like("title",dormitory.getTitle());
}
if(!ZwzNullUtils.isNull(dormitory.getType())) {
qw.eq("type",dormitory.getType());
}
if(!ZwzNullUtils.isNull(dormitory.getBreakfast())) {
qw.eq("breakfast",dormitory.getBreakfast());
}
IPage<Dormitory> data = iDormitoryService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Dormitory>>().setData(data);
}
4.2 新增民宿评论
@RequestMapping(value = "/addMyDiscuss", method = RequestMethod.POST)
@ApiOperation(value = "新增民宿评论")
public Result<Object> addMyDiscuss(@RequestParam String id,@RequestParam String reply,@RequestParam String text){
Dormitory dormitory = iDormitoryService.getById(id);
if(dormitory == null) {
return ResultUtil.error("民宿不存在");
}
User currUser = securityUtil.getCurrUser();
DormitoryDiscuss discuss = new DormitoryDiscuss();
discuss.setUserId(currUser.getId());
discuss.setUserName(currUser.getNickname());
discuss.setReply(reply);
discuss.setDormitoryId(dormitory.getId());
discuss.setDiscussTime(DateUtil.now());
discuss.setContent(text);
iDormitoryDiscussService.saveOrUpdate(discuss);
return ResultUtil.success();
}
4.3 查询民宿新闻
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询民宿新闻")
public Result<IPage<DormitoryNews>> getByPage(@ModelAttribute DormitoryNews dormitoryNews,@ModelAttribute PageVo page){
QueryWrapper<DormitoryNews> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(dormitoryNews.getNewTitle())) {
qw.like("new_title",dormitoryNews.getNewTitle());
}
if(!ZwzNullUtils.isNull(dormitoryNews.getNewDescribe())) {
qw.like("new_describe",dormitoryNews.getNewDescribe());
}
if(!ZwzNullUtils.isNull(dormitoryNews.getPeriodTime())) {
qw.like("period_time",dormitoryNews.getPeriodTime());
}
if(!ZwzNullUtils.isNull(dormitoryNews.getIsPublic())) {
qw.like("is_public",dormitoryNews.getIsPublic());
}
if(!ZwzNullUtils.isNull(dormitoryNews.getIsTop())) {
qw.like("is_top",dormitoryNews.getIsTop());
}
IPage<DormitoryNews> data = iDormitoryNewsService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<DormitoryNews>>().setData(data);
}
4.4 新建民宿预订单
@RequestMapping(value = "/addMyOrder", method = RequestMethod.POST)
@ApiOperation(value = "新建民宿预订单")
public Result<Object> addMyOrder(@RequestParam String id,@RequestParam String date){
Dormitory dormitory = iDormitoryService.getById(id);
if(dormitory == null) {
return ResultUtil.error("民宿不存在");
}
QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();
qw.eq("dormitory_id",id);
qw.eq("order_date",date);
long count = iDormitoryOrderService.count(qw);
if(count > 0) {
return ResultUtil.error("民宿当日已被预定");
}
User currUser = securityUtil.getCurrUser();
DormitoryOrder order = new DormitoryOrder();
order.setUserId(currUser.getId());
order.setUserName(currUser.getNickname());
order.setOrderTime(DateUtil.now());
order.setPayFlag("否");
order.setDormitoryId(dormitory.getId());
order.setPrice(dormitory.getPrice());
order.setRemark("");
order.setDormitoryName(dormitory.getTitle());
order.setOrderDate(date);
iDormitoryOrderService.saveOrUpdate(order);
return ResultUtil.success();
}
4.5 查询我的民宿预订单
@RequestMapping(value = "/getMyPage", method = RequestMethod.GET)
@ApiOperation(value = "查询我的民宿预订单")
public Result<IPage<DormitoryOrder>> getMyPage(@ModelAttribute DormitoryOrder order,@ModelAttribute PageVo page){
User currUser = securityUtil.getCurrUser();
QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();
qw.eq("user_id",currUser.getId());
if(!ZwzNullUtils.isNull(order.getDormitoryId())) {
qw.eq("dormitory_id",order.getDormitoryId());
}
if(!ZwzNullUtils.isNull(order.getUserName())) {
qw.eq("user_name",order.getUserName());
}
IPage<DormitoryOrder> data = iDormitoryOrderService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<DormitoryOrder>>().setData(data);
}
五、免责说明
- 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
- 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
- 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!
- 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
- 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
- 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
- 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。