基于javaweb的SpringBoot民宿在线预定平台(java+springboot+mybaits+vue+elementui+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

341125050706

361125050706

371125050706

381125050706

391125050706

401125050706

411125050706

421125050706

431125050706

441125050706

基于javaweb的SpringBoot民宿在线预定平台(java+springboot+mybaits+vue+elementui+mysql)

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 

4.数据库:MySql 5.7/8.0版本均可;

5.是否Maven项目:是;

技术栈

后端:SpringBoot+Mybaits

前端:Vue+elementui

使用说明

项目运行:

  1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;

  2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;

  3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;

  4. 运行项目,在浏览器中输入地址:

前台地址:http://localhost:8080/springbootrpj39/front/index.html

后台地址:http://localhost:8080/springbootrpj39/admin/dist/index.html

管理员 abo 密码 abo

用户:用户1 密码: 123456

注意项目文件路径中不能含有中文、空格、特殊字符等,否则图片会上传不成功。

用户管理控制层: 

@Controller

@RequestMapping(“/user”)

public class UserController {

private static Logger logger = Logger.getLogger(OrderController.class);

ModelAndView mav = new ModelAndView();

@Autowired

UserService userService;

@RequestMapping(value = “/foreregister”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView register(HttpServletRequest request, HttpServletResponse response,User user) throws Exception{

GeneralController generalController = new GeneralController();

try{

userService.insert(user);

request.getSession().setAttribute(“user”,user);

}catch (Exception e){

logger.info(“用户名已存在”);

return generalController.home(request);

mav.setViewName(“registerSuccess”);

return mav;

订单管理控制层:

@Controller

@RequestMapping(“/order”)

class OrderController {

private static Logger logger = Logger.getLogger(OrderController.class);

//获取所有订单

@RequestMapping(value = “/list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public List listOrder(/* @RequestParam(value = “addressId”) int addressId */) throws Exception{

SqlSession sqlSession = MybatisSessionFactory.getSession();

OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);

return orderMapper.selectAll();

@RequestMapping(value = “/deleteOne”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public String deleteById(@RequestParam(value = “orderId”) Integer orderId) throws Exception{

SqlSession sqlSession = MybatisSessionFactory.getSession();

OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);

try{

orderMapper.deleteByPrimaryKey(orderId);

return “删除成功”;

}catch (Exception e){

e.printStackTrace();

return e.getMessage();

@RequestMapping(value = “/delete”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public String deleteById(@RequestParam(value = “orderIds”) List orderIds) throws Exception{

SqlSession sqlSession = MybatisSessionFactory.getSession();

//使用mapper批量删除

OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);

OrderExample orderExample = new OrderExample();

OrderExample.Criteria criteria = orderExample.createCriteria();

criteria.andIdIn(orderIds);

try{

orderMapper.deleteByExample(orderExample);

return “删除成功”;

}catch (Exception e){

e.printStackTrace();

return e.getMessage();

后台管理控制层: 

@Controller

@RequestMapping(“/admin”)

public class AdminController {

@Autowired

private UserService userService;

@Autowired

private CategoryService categoryService;

@Autowired

private OrderItemService orderItemService;

@Autowired

private OrderService orderService;

@Autowired

private ProductService productService;

private static Logger logger = Logger.getLogger(AdminController.class);

private ModelAndView mav = new ModelAndView();

// windows系统参考路径 注:此处必须为项目路径

private static String imgPath = “C:\Users\70953\Gotrip\“;

// Mac系统参考路径

// private static String imgPath = “/Users/hanmeng/Desktop/java源码/SSM/012ssm民宿管理系统/源码/Gotrip/“;

private ModelAndView listProduct(Integer cid) {

List products = productService.listProducts(cid);

mav.addObject(“ps”,products);

mav.addObject(“c”,categoryService.getCategory(cid));

mav.setViewName(“/admin/listProduct”);

return mav;

//查询所有房间分类

@RequestMapping(value = “/admin_category_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView listCategory(){

List categories = categoryService.listAll();

mav.addObject(“thecs”, categories);

mav.setViewName(“admin/listCategory”);

return mav;

//打印页面

@RequestMapping(value = “/admin_print_category_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView printListCategory(){

List categories = categoryService.listAll();

mav.addObject(“thecs”, categories);

mav.setViewName(“admin/printListCategory”);

return mav;

//导出分类EXCEL文件

@RequestMapping(value = “/admin_export_category_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public void exportListCategory(HttpServletRequest request, HttpServletResponse response) throws Exception{

List categories = categoryService.listAll();

String []rowsName = new String[]{“id”,”name”};

List<Object[]> dataList = new ArrayList<Object[]>();

for(int i = 0;i < categories.size();i++){

Object[] objs = new Object[rowsName.length];

Category category = categories.get(i);

objs[0] = category.getId();

System.out.println(objs[0]);

objs[1] = category.getName();

System.out.println(objs[1]);

dataList.add(objs);

String fileName = “exportCategoriesExcel”;

//执行导出

ExportExcel.exportExcel(request,response,fileName, rowsName, dataList, “yyyy-MM-dd HH:mm:ss”);

//添加分类

//特别注意,由于本操作涉及图片保存,更换运行环境时需要重新配置路径

@RequestMapping(value = “/admin_category_add”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_category_add(@RequestParam(“name”) String name, @RequestParam(“filepath”) MultipartFile filepath) throws IOException {

Category category = new Category();

category.setName(name);

Integer cid = categoryService.insert(category);

// windows系统参考路径 注:此处必须为本地src及target下category的路径

String path1 = imgPath+”src\main\webapp\img\category\“+cid.toString()+”.jpg”;

String path2 = imgPath+”target\Gotrip-1.0-SNAPSHOT\img\category\“+cid.toString()+”.jpg”;

// Mac系统参考路径 注:此处必须为本地src及target下category的路径

// String path1 = imgPath+”src/main/webapp/img/category/“+cid.toString()+”.jpg”;

// String path2 = imgPath+”target/Gotrip-1.0-SNAPSHOT/img/category/“+cid.toString()+”.jpg”;

filepath.transferTo(new File(path1));

FileUtils.copyFile(new File(path1),new File(path2));

mav = listCategory();

return mav;

//查询所有订单

@RequestMapping(value = “/admin_order_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView listOrder(){

List orders = orderService.listAll();

for(Order order:orders){

order.setOrderItems(orderItemService.getOrderItem(order.getId()));

mav.addObject(“os”,orders);

mav.setViewName(“/admin/listOrder”);

return mav;

@RequestMapping(value = “/admin_print_order_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView printListOrder(){

mav = listOrder();

mav.setViewName(“/admin/printListOrder”);

return mav;

//导出订单列表

@RequestMapping(value = “/admin_export_order_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public void exportListOrder(HttpServletRequest request, HttpServletResponse response) throws Exception{

List orders = orderService.listAll();

String []rowsName = new String[]{“ID”, “状态”, “金额”, “房间数量”,”买家名称”,”支付时间”};

List<Object[]> dataList = new ArrayList<Object[]>();

for(int i = 0;i < orders.size();i++){

Object[] objs = new Object[rowsName.length];

Order order = orders.get(i);

objs[0] = order.getId();

objs[1] = order.getStatus();

objs[2] = order.getTotal();

objs[3] = order.getTotalNumber();

objs[4] = order.getUser().getName();

objs[5] = order.getPayDate();

dataList.add(objs);

String fileName = “exportOrderExcel”;

//执行导出

ExportExcel.exportExcel(request,response,fileName, rowsName, dataList, “yyyy-MM-dd HH:mm:ss”);

//查询所有属性

@RequestMapping(value = “/admin_property_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView listProperty(@RequestParam(value = “cid”) Integer cid,HttpServletRequest request){

request.getSession().setAttribute(“cid”,cid);

List properties = productService.listProproty(cid);

mav.addObject(“ps”,properties);

mav.addObject(“c”,categoryService.getCategory(cid));

mav.setViewName(“/admin/listProperty”);

return mav;

//编辑属性名称页面

@RequestMapping(value = “/admin_property_edit”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_property_edit(@RequestParam(value = “id”) Integer id){

Property property = productService.getProperty(id);

mav.addObject(“p”,property);

mav.setViewName(“/admin/editProperty”);

return mav;

//提交编辑的属性名称

@RequestMapping(value = “/admin_property_update”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_property_update(Property record){

productService.updateProperty(record);

List properties = productService.listProproty(record.getCid());

mav.addObject(“ps”,properties);

mav.setViewName(“/admin/listProperty”);

return mav;

//删除属性名称

@RequestMapping(value = “/admin_property_delete”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_property_delete(Integer id,HttpServletRequest request){

try{

productService.deleteProperty(id);

}catch (Exception e){

e.printStackTrace();

List properties = productService.listProproty((Integer)request.getSession().getAttribute(“cid”));

mav.addObject(“ps”,properties);

mav.setViewName(“/admin/listProperty”);

return mav;

//房间管理

@RequestMapping(value = “/admin_product_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_product_list(Integer cid){

return listProduct(cid);

//添加房间

@RequestMapping(value = “/admin_product_add”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_product_add(Product product,HttpServletRequest request){

productService.insert(product);

List products = productService.listProducts(product.getCid());

mav.addObject(“ps”,products);

mav.addObject(“c”,categoryService.getCategory(product.getCid()));

mav.setViewName(“/admin/listProduct”);

return mav;

//删除房间

@RequestMapping(value = “/admin_product_delete”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_product_delete(Integer id,Integer cid, HttpServletRequest request){

productService.delete(id);

return listProduct(cid);

//房间图片管理页面

@RequestMapping(value = “/admin_productImage_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_productImage_list(Integer pid, HttpServletRequest request){

Product product = productService.getProduct(pid);

product.setCategory(categoryService.getCategory(product.getCid()));

List productimages = productService.listProductImage(product.getId());

mav.addObject(“p”,product);

mav.addObject(“pisSingle”,productimages.stream().filter(e -> e.getType().equals(“type_single”)).collect(Collectors.toList()));

mav.addObject(“pisDetail”,productimages.stream().filter(e -> e.getType().equals(“type_detail”)).collect(Collectors.toList()));

mav.setViewName(“/admin/listProductImage”);

return mav;

//删除房间图片

@RequestMapping(value = “/admin_productImage_delete”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_productImage_delete(Integer id,Integer pid, HttpServletRequest request, HttpServletResponse response) throws Exception {

try {

productService.deleteProductImage(id);

} catch (Exception e) {

e.getMessage();

return admin_productImage_list(pid,request);

//添加房间图片

@RequestMapping(value = “/admin_productImage_add”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_productImage_add(@RequestParam(“filepath”) MultipartFile filepath,@RequestParam(“type”) String type,@RequestParam(“pid”) int pid,HttpServletRequest request) throws IOException {

Productimage productimage = new Productimage();

productimage.setPid(pid);

productimage.setType(type);

Integer imageId = productService.insertImage(productimage);

// Mac系统参考路径 注:此处必须为本地src及target下category的路径

String path1 = “”;

String path2 = “”;

if (type.equals(“type_detail”)){

// windows系统参考路径 注:此处必须为本地src及target下productDetail的路径

path1 = imgPath+”src\main\webapp\img\productDetail\“+imageId.toString()+”.jpg”;

path2 = imgPath+”target\Gotrip-1.0-SNAPSHOT\img\productDetail\“+imageId.toString()+”.jpg”;

// Mac系统参考路径

// path1 = imgPath+”src/main/webapp/img/productDetail/“+imageId.toString()+”.jpg”;

// path2 = imgPath+”target/Gotrip-1.0-SNAPSHOT/img/productDetail/“+imageId.toString()+”.jpg”;

filepath.transferTo(new File(path1));

FileUtils.copyFile(new File(path1),new File(path2));

if (type.equals(“type_single”)){

// windows系统参考路径

path1 = imgPath+”src\main\webapp\img\productSingle\“+imageId.toString()+”.jpg”;

path2 = imgPath+”target\Gotrip-1.0-SNAPSHOT\img\productSingle\“+imageId.toString()+”.jpg”;

String path3 = imgPath+”src\main\/webapp\img\productSingle_middle\“+imageId.toString()+”.jpg”;;

String path4 = imgPath+”target\Gotrip-1.0-SNAPSHOT\img\productSingle_middle\“+imageId.toString()+”.jpg”;

String path5 = imgPath+”src\main\webapp\img\productSingle_small\“+imageId.toString()+”.jpg”;;

String path6 = imgPath+”target\Gotrip-1.0-SNAPSHOT\img\productSingle_small\“+imageId.toString()+”.jpg”;

// Mac系统参考路径

// path1 = imgPath+”src/main/webapp/img/productSingle/“+imageId.toString()+”.jpg”;

// path2 = imgPath+”target/Gotrip-1.0-SNAPSHOT/img/productSingle/“+imageId.toString()+”.jpg”;

// String path3 = imgPath+”src/main/webapp/img/productSingle_middle/“+imageId.toString()+”.jpg”;;

// String path4 = imgPath+”target/Gotrip-1.0-SNAPSHOT/img/productSingle_middle/“+imageId.toString()+”.jpg”;

// String path5 = imgPath+”src/main/webapp/img/productSingle_small/“+imageId.toString()+”.jpg”;;

// String path6 = imgPath+”target/Gotrip-1.0-SNAPSHOT/img/productSingle_small/“+imageId.toString()+”.jpg”;

filepath.transferTo(new File(path1));

FileUtils.copyFile(new File(path1),new File(path2));

FileUtils.copyFile(new File(path1),new File(path3));

FileUtils.copyFile(new File(path1),new File(path4));

FileUtils.copyFile(new File(path1),new File(path5));

FileUtils.copyFile(new File(path1),new File(path6));

return admin_productImage_list(pid,request);

//更改房间属性选项

@RequestMapping(value = “/admin_product_editPropertyValue”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_product_editPropertyValue(Integer id, HttpServletRequest request){

Product product = productService.getProduct(id);

List values = productService.listProprotyValue(id);

for(Propertyvalue p: values){

p.setProperty(productService.getProperty(p.getPtid()));

mav.addObject(“p”,product);

mav.addObject(“pvs”,values);

mav.setViewName(“/admin/editProductValue”);

return mav;

//提交更新房间属性值

@RequestMapping(value = “/admin_product_updatePropertyValue”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public String admin_product_updatePropertyValue(Integer id, Integer pvid, String value){

productService.updatePropertyValue(pvid, value);

return “success”;

//提交房间修改信息

@RequestMapping(value = “/admin_product_update”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_product_update(Product product){

productService.update(product);

return admin_product_list(product.getCid());

//编辑房间信息页面

@RequestMapping(value = “/admin_product_edit”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_product_edit(Integer id, HttpServletRequest request){

Product product = productService.getProduct(id);

mav.addObject(“p”,product);

mav.setViewName(“/admin/editProduct”);

return mav;

//编辑房间分类页面

@RequestMapping(value = “/admin_category_edit”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_category_edit(Integer id, HttpServletRequest request){

Category category = categoryService.getCategory(id);

mav.addObject(“c”,category);

mav.setViewName(“/admin/editCategory”);

return mav;

//查询所有用户

@RequestMapping(value = “/admin_user_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView listUser(){

List users = userService.listAll();

mav.addObject(“us”,users);

mav.setViewName(“/admin/listUser”);

return mav;

//打印用户信息

@RequestMapping(value = “/admin_print_user_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView printLlistUser(){

List users = userService.listAll();

mav.addObject(“us”,users);

mav.setViewName(“/admin/printListUser”);

return mav;

//导出用户信息

@RequestMapping(value = “/admin_export_user_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public void exportUserList(HttpServletRequest request, HttpServletResponse response) throws Exception{

List users = userService.listAll();

String []rowsName = new String[]{“id”,”name”,”password”};

List<Object[]> dataList = new ArrayList<Object[]>();

for(int i = 0;i < users.size();i++){

Object[] objs = new Object[rowsName.length];

User user = users.get(i);

objs[0] = user.getId();

objs[1] = user.getName();

objs[2] = user.getPassword();

dataList.add(objs);

String fileName = “exportUserExcel”;

//执行导出

ExportExcel.exportExcel(request,response,fileName, rowsName, dataList, “yyyy-MM-dd HH:mm:ss”);

//删除用户

@RequestMapping(value = “/admin_user_delete”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_user_delete(Integer id, HttpServletRequest request){

try{

userService.deleteByPrimaryKey(id);

}catch (Exception e){

e.getMessage();

List users = userService.listAll();

mav.addObject(“us”,users);

mav.setViewName(“/admin/listUser”);

return mav;

//编辑用户信息页面

@RequestMapping(value = “/admin_user_edit”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_user_edit(Integer id, HttpServletRequest request){

User user = userService.getUser(id);

mav.addObject(“u”,user);

mav.setViewName(“/admin/editUser”);

return mav;

//提交更新用户信息

@RequestMapping(value = “/admin_user_update”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_user_update(User user){

//user = userService.getUser(user.getName());

userService.update(user);

List users = userService.listAll();

mav.addObject(“us”,users);

mav.setViewName(“/admin/listUser”);

return mav;

//添加用户

@RequestMapping(value = “/admin_user_add”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_user_add(User user,HttpServletRequest request){

userService.insert(user);

List users = userService.listAll();

mav.addObject(“us”,users);

mav.setViewName(“/admin/listUser”);

return mav;

//修改订单信息页面

@RequestMapping(value = “/admin_order_edit”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_order_edit(Integer id, HttpServletRequest request){

Order order = orderService.getOrder(id);

request.getSession().setAttribute(“oid”,id);

mav.addObject(“c”,order);

mav.setViewName(“/admin/editOrder”);

return mav;

//条件查询订单

@RequestMapping(value = “/select_order_list”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView select_order_list(@RequestParam(“status”) String status, @RequestParam(“min”) Integer min, @RequestParam(“max”) Integer max){

if(status==null || status.equals(“”)){

status = “%”;

if(min==null){

min = -1;

if(max==null){

max = Integer.MAX_VALUE;

List orders = orderService.selectOrder(status,min,max);

for(Order order:orders){

order.setOrderItems(orderItemService.getOrderItem(order.getId()));

mav.addObject(“os”,orders);

mav.setViewName(“/admin/listOrder”);

return mav;

//提交修改订单信息

@RequestMapping(value = “/admin_order_update”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_order_update(Order order){

Order oldOrder = orderService.getOrder(order.getId());

oldOrder.setReceiver(order.getReceiver());

oldOrder.setTotal(order.getTotal());

oldOrder.setStatus(order.getStatus());

orderService.update(oldOrder);

mav = listOrder();

mav.setViewName(“/admin/listOrder”);

return mav;

//超时三天未评论的订单

@RequestMapping(value = “/outdate_order”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView outdate_order(){

List orders = orderService.outDateOrder();

mav.addObject(“os”,orders);

mav.setViewName(“/admin/listOrder”);

return mav;

//添加订单

@RequestMapping(value = “/admin_order_add”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_order_add(Order order,HttpServletRequest request){

request.getSession().setAttribute(“id”,order.getId());

orderService.insert(order);

mav = listOrder();

mav.setViewName(“/admin/listOrder”);

return mav;

//删除订单

@RequestMapping(value = “/admin_order_delete”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_order_delete(Integer id){

orderService.deleteOrder(id);

mav = listOrder();

mav.setViewName(“/admin/listOrder”);

return mav;

//删除房间分类

@RequestMapping(value = “/admin_category_delete”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_category_delete(Integer id, HttpServletRequest request, HttpServletResponse response) throws Exception {

try {

categoryService.delete(id);

} catch (Exception e) {

e.getMessage();

return listCategory();

//添加属性

@RequestMapping(value = “/admin_property_add”,produces = “text/html;charset=UTF-8”)

@ResponseBody

public ModelAndView admin_property_add(Property property) throws Exception {

productService.newProperty(property);

List properties = productService.listProproty(property.getCid());

mav.addObject(“ps”,properties);

mav.setViewName(“/admin/listProperty”);

return mav;


项目链接:
https://javayms.github.io?id=101125140706201ru
https://javayms.pages.dev?id=101125140706201ru