基于javaweb+mysql的springboot民宿管理系统(java+springboot+vue+elementui+layui+mysql)
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot民宿管理系统(java+springboot+vue+elementui+layui+mysql)
项目介绍
角色:管理员、商家、用户
系统功能 用户注册登录后可进行首页、个人中心、民宿信息管理、房间信息管理、房间预订管理、房间退订管理、投诉反馈管理、我的收藏管理。
商家用户注册登录,可以对首页、个人中心、民宿信息管理、房间信息管理、房间预订管理、房间退订管理、投诉反馈管理、我的收藏管理等功能模块。
管理员登录后可进行首页、个人中心、用户管理、商家管理、民宿信息管理、房间类型管理、房间信息管理、房间预订管理、房间退订管理、投诉反馈管理、我的收藏管理、系统管理。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 5.7/8.0等版本均可;
技术栈
后端:SpringBoot+Mybaits 前端:Vue+ElementUI+Layui+HTML+CSS+JS
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
*/
@RequestMapping(value="/upload_photo",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> uploadPhoto(MultipartFile photo,HttpServletRequest request){
Map<String, String> ret = new HashMap<String, String>();
if(photo == null){
ret.put("type", "error");
ret.put("msg", "选择要上传的文件!");
return ret;
if(photo.getSize() > 1024*1024*1024){
ret.put("type", "error");
ret.put("msg", "文件大小不能超过10M!");
* 编辑用户
* @param user
* @return
*/
@RequestMapping(value="/edit",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> edit(User user){
Map<String, String> ret = new HashMap<String, String>();
if(user == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的用户信息!");
return ret;
ret.put("msg", "请填写用户名!");
return ret;
if(StringUtils.isEmpty(user.getPassword())){
ret.put("type", "error");
ret.put("msg", "请填写密码!");
return ret;
if(user.getRoleId() == null){
ret.put("type", "error");
ret.put("msg", "请选择所属角色!");
return ret;
if(isExist(user.getUsername(), 0l)){
ret.put("type", "error");
ret.put("msg", "该用户名已经存在,请重新输入!");
return ret;
String filename = new Date().getTime()+"."+suffix;
try {
//将文件保存至指定目录
photo.transferTo(new File(savePath+filename));
}catch (Exception e) {
// TODO Auto-generated catch block
ret.put("type", "error");
ret.put("msg", "保存文件异常!");
e.printStackTrace();
return ret;
public Result<List<OrderRoom>> orderroomList(@PathVariable("orderno") int orderno)
return ResultReturn.success(orderroomservice.findAll(orderno));
/**
* 根据订单-房间序号查找对应记录
* @param orno 订单-房间表的序号
* @return 返回对应的订单-房间信息
*/
@RequestMapping("/order/orderroom/orderroomSearchOne/{orno}")
public Result<OrderRoom> orderroomSearchOne(@PathVariable("orno") int orno)
return ResultReturn.success(orderroomservice.findOne(orno));
/**
* OrderRoom表更新
@RequestMapping("/order/orderroom/roomid/update/{rino}")
public Result roomidUpdate(@PathVariable("rino") int rino,@RequestParam("name") String name,
@RequestParam("id") String id)
Roomid ri=roomidservice.findByRino(rino);
ri.setId(id);
ri.setName(name);
return ResultReturn.success(roomidservice.save(ri));
/**
* 寻找未入住的房间号列表
* @return 返回房间号列表
*/
@RequestMapping("/order/orderroom/roomid/getEmptyRoomno")
public Result<List<Integer>> getEmptyRoomno()
return ResultReturn.error(2,"客房编号已存在!");
//更新已有信息
@RequestMapping("/room/update/{roomno}")
public Result roomUpdate(@PathVariable("roomno") int roomno,@RequestParam("type") int type,
@RequestParam("price") int price,@RequestParam("ifwindow") int ifwindow,
@RequestParam("comment") String comment) {
//需要先查询是否存在
if(roomservice.findByRoom(roomno)==null) {
return ResultReturn.error(1,"cant't find roomno!");
else {
Room r = saveRoom(roomno, type, price, ifwindow, comment);
return ResultReturn.success(roomservice.save(r));
@RequestMapping("/room/searchOne/{roomno}")
@RequestMapping(value="/edit",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> edit(User user){
Map<String, String> ret = new HashMap<String, String>();
if(user == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的用户信息!");
return ret;
if(StringUtils.isEmpty(user.getUsername())){
ret.put("type", "error");
ret.put("msg", "请填写用户名!");
return ret;
// if(StringUtils.isEmpty(user.getPassword())){
/**
* 上传图片
* @param photo
* @param request
* @return
*/
@RequestMapping(value="/upload_photo",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> uploadPhoto(MultipartFile photo,HttpServletRequest request){
Map<String, String> ret = new HashMap<String, String>();
if(photo == null){
ret.put("type", "error");
ret.put("msg", "选择要上传的文件!");
* @param orno 编号
* @param brand 车牌号
* @param roomnoAfter 之前的房间号
* @param roomnoBefore 现在重新设定的房间号(计算价格需要)
* @param orderno 订单号(保存当前订单的价格需要)
* @return 返回保存的orderroom对象
*/
@RequestMapping("/order/orderroom/update/{orno}")
public Result orderroomUpdate(@PathVariable("orno") int orno,@RequestParam("brand") String brand,
@RequestParam("roomnoAfter") int roomnoAfter,
@RequestParam("roomnoBefore") int roomnoBefore,@RequestParam("orderno") int orderno)
OrderRoom or=orderroomservice.findOne(orno);
this.orderHistoryService=orderHistoryService;
this.financeService=financeService;
/**
* 查找所有订单
* @return 返回现有的全部订单
*/
@RequestMapping("/order/orderlist")
public Result<List<Order>> orderList()
return ResultReturn.success(orderservice.findAll());
/**
* 根据订单号查找对应订单信息
* @param orderno 订单号
* @return 返回订单号对应的订单
model.addObject("roleList", roleService.findList(queryMap));
model.setViewName("user/list");
return model;
/**
* 获取用户列表
* @param page
* @param username
* @param roleId
* @param sex
* @return
*/
* @return 返回房间列表
*/
@RequestMapping("/order/orderroom/{orderno}")
public Result<List<OrderRoom>> orderroomList(@PathVariable("orderno") int orderno)
return ResultReturn.success(orderroomservice.findAll(orderno));
/**
* 根据订单-房间序号查找对应记录
* @param orno 订单-房间表的序号
* @return 返回对应的订单-房间信息
*/
@RequestMapping("/order/orderroom/orderroomSearchOne/{orno}")
public Result<OrderRoom> orderroomSearchOne(@PathVariable("orno") int orno)
/**
* 根据房间-身份证表的序号查找对应信息
* @param rino 房间-身份证表的序号
* @return 返回对应信息
*/
@RequestMapping("/order/orderroom/roomid/roomidSearchOne/{rino}")
public Result<Roomid> roomidSearchOne(@PathVariable("rino") int rino)
return ResultReturn.success(roomidservice.findByRino(rino));
/**
* 房间-身份证表更新
* @param rino 房间-身份证表的序号
* @param name 姓名
public Result deleteByStdNo(@RequestParam("stdno") int stdno){
standservice.delete(standservice.findByStandard(stdno));
return ResultReturn.success();
//查询客房信息列表
@RequestMapping("/room/roomlist")
public Result<List<Room>> roomList() {
return ResultReturn.success(roomservice.getAll()) ;
//添加客房信息
@PostMapping("/room/add")
public Result roomAdd(@RequestParam("roomno") int roomno,@RequestParam("type") int type,
@RequestParam("price") int price,@RequestParam("ifwindow") int ifwindow,
@RequestParam("comment") String comment) {
System.out.println("qian"+roomno+" "+roomservice.findByRoom(roomno));
@RequestMapping("/order/orderroom/roomid/update/{rino}")
public Result roomidUpdate(@PathVariable("rino") int rino,@RequestParam("name") String name,
@RequestParam("id") String id)
Roomid ri=roomidservice.findByRino(rino);
ri.setId(id);
ri.setName(name);
return ResultReturn.success(roomidservice.save(ri));
/**
* 寻找未入住的房间号列表
* @return 返回房间号列表
*/
return ResultReturn.error(1,"it's not exist, you can't delete!");
else {
roomservice.delete(r);
return ResultReturn.success(r);
public Room saveRoom(int roomno,int type,int price,int ifwindow,String comment) {
Room r = new Room();
r.setRoomno(roomno);
r.setType(type);
r.setPrice(price);
r.setIfwindow(ifwindow);