前端项目:基于Nodejs+vue开发实现酒店管理系统

简介: 本项目使用纯前端技术开发实现一个酒店管理系统,前端采用VUE开发实现,后台通过NODEJS作为服务器开发实现,主要实现了酒店管理系统中的:房型管理、房间管理、顾客管理、订单管理等,用户可以注册并登陆后进行相应的管理操作

文末获取源码

项目编号:BS-QD-KS-002

一,项目简介

本项目使用纯前端技术开发实现一个酒店管理系统,前端采用VUE开发实现,后台通过NODEJS作为服务器开发实现,主要实现了酒店管理系统中的:房型管理、房间管理、顾客管理、订单管理等,用户可以注册并登陆后进行相应的管理操作。主要说明

    1. 前后端分离技术
    2. 前端使用vuejs,ElementUI,axios前后端通信,图标使用了ElementUI自带的图标还有font-awesome.css的图标库, 阿里的iconfont图标库也不错,这里没用。
    3. 后端使用了nodejs,nodejs采用了Express框架,orm采用的是Sequelize操作数据库(效率极高),restful风格的Api, 跨域是由后端解决的,采用的是nodejs的cors模块(比较方便)。
    4. 数据库采用了mysql5.2(建议大家换成最新的mysql版本)
    5. 使用jsonwebtoken验证用户调用api的权限,增加接口的安全性,防止恶意攻击接口,串改数据。
    6. 主要界面里面的图片主要使用的是网上的图片,免费而且美观。

    二,环境介绍

    语言环境:nodejs

    数据库: mysql5.7

    应用服务器:nodejs

    开发工具:IDEA或vscode

    开发技术:nodejs+vue+elementUI

    三,系统展示

    用户注册

    image.gif编辑

    用户登陆

    image.gif编辑

    房间管理

    image.gif编辑

    image.gif编辑

    房型管理

    image.gif编辑

    image.gif编辑

    订单管理

    image.gif编辑

    image.gif编辑

    订单管理

    image.gif编辑

    image.gif编辑

    四,核心代码展示

    const { Op } = require('sequelize')//nodejs的sequelize模块
    const express = require('express')//express框架
    const admin = require('../crud/table/admin.js')//引入管理员信息表
    const token = require('../comment/token.js')//引入token模块
    const adminRouter = express.Router()//express路由
    adminRouter.post('/register',(req,res) =>{//管理员注册
        const { adminId, adminName, adminPassword } = req.body;
        admin.findOne({
            where:{
                adminId:adminId
            }
        })
        .then(data =>{
            if(data){
                res.status(200).json({
                    msg:'该用户已经注册',
                    success:false
                })
                return new Promise(() =>{})
            }else{
                return admin.create({
                    adminId, adminName, adminPassword
                })
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'管理员注册成功!',
                admin:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'内部服务器错误!'
            })
        })
    })
    adminRouter.get('/login',(req,res) =>{//登录
        const { adminId, adminPassword } = req.query;
        let adminInfo;
        admin.findOne({
            where:{
                adminId
            }
        })
        .then(data =>{
            if(data){
                if(data.get().adminPassword==adminPassword){
                    adminInfo = data.get();
                    return token.setToken(data.get())
                }else{
                    res.status(200).json({
                        success:false,
                        msg:'用户密码错误!'
                    });  
                    return new Promise(() =>{})
                }
            }else{
               res.status(200).json({
                   success:false,
                   msg:'该用户还未注册!'
               })
               return new Promise(() =>{})
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                admin:adminInfo,
                token:data,
                msg:'登录成功!'
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'内部服务器出错!'
            })
        })
    })
    adminRouter.put('/update',(req,res) =>{//修改管理员信息
        const { adminId, adminName, adminPassword, adminSex, adminAge } = req.body;
        admin.findOne({
            where:{
                adminId,adminPassword
            }
        })
        .then(data =>{
            if(data){
               return admin.update({
                        adminName,adminSex,adminAge
                    },{
                        where:{
                            adminId,adminPassword
                        }
                    })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'管理员账号或者密码错误!'
                })
                return new Promise(() =>{})
            }
        })
        .then(data =>{
            return admin.findOne({
                where:{
                    adminId,adminPassword
                }
            })
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'管理员信息修改成功!',
                admin:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    adminRouter.delete('/del',(req,res) =>{
        const { adminId } = req.body || req.query;
        admin.destroy({
            where:{
                adminId
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'删除成功!'
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'删除失败!'
            })
        })
    })
    module.exports = adminRouter;

    image.gif

    const { Op } = require('sequelize')//nodejs的sequelize模块
    const express = require('express')//express框架
    const customer = require('../crud/table/customer.js')//引入用户表
    const customerRouter = express.Router()//express路由
    customerRouter.post('/add',(req,res) =>{//用户注册
        const { customerIdCard, customerName, customerSex, customerPhoneNumber } = req.body;
        customer.findOne({
            where:{
                customerIdCard
            }
        })
        .then(data =>{
            if(data){
                res.status(200).json({
                    success:false,
                    msg:'该用户已经注册!'
                })
                return new Promise(() =>{})
            }else{
                return customer.create({
                    customerIdCard, customerName, customerSex, customerPhoneNumber
                })
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'用户信息录入成功!',
                customer:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'内部服务器错误!'
            })
        })
    })
    // customerRouter.get('/login',(req,res) =>{//用户登录
    //     const { customerIdCard, cust}
    // })
    customerRouter.put('/update',(req,res) =>{//用户基本信息修改
        const { customerIdCard, customerName, customerSex, customerPhoneNumber } = req.body;
        customer.findOne({
            where:{
                customerIdCard:{
                    [Op.eq]:customerIdCard
                }
            }
        })
        .then(data =>{
            if(data){
                return customer.update({
                    customerName, customerSex, customerPhoneNumber
                },{
                   where:{
                        customerIdCard:{
                            [Op.eq]:customerIdCard
                        }
                   }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'该用户还未注册!'
                })
                return new Promise(() =>{})
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'用户信息修改成功!',
                customer:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器出错!'
            })
        }) 
    }) 
    customerRouter.delete('/del',(req,res) =>{//删除用户
        const { customerIdCard } = req.body;
        customer.destroy({
            where:{
                customerIdCard
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'用户删除成功!'
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    customerRouter.put('/updatevip',(req,res) =>{//购买会员
        const { customerIdCard, level } = req.body;
        customer.findOne({
            where:{
                customerIdCard
            }
        })
        .then(data =>{
            if(data){
                return customer.update({
                    level
                },{
                    where:{
                        customerIdCard
                    }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'该用户未注册!'
                })
                return new Promise(() =>{})
            }
        })
        .then(data =>{
            return customer.findOne({
                where:{
                    customerIdCard
                }
            })
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'vip更改成功!',
                customer:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    customerRouter.put('/updatemoney',(req,res) =>{//修改用户总消费金额
        const { customerIdCard, money} = req.body;
        customer.findOne({
            where:{
                customerIdCard
            }
        })
        .then(data =>{
            if(data){
                let oldMoney = data.get().totalAmount;
                let newMoney = oldMoney + money;
                return customer.update({
                    totalAmount: newMoney
                },{
                    where:{
                        customerIdCard
                    }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'该用户为注册!'
                })
            }
        })
        .then(data =>{
            return customer.findOne({
                where:{
                    customerIdCard
                }
            })
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'用户消费金额修改成功!'
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    customerRouter.get('/getAllCustomer',(req,res) =>{//查询所有顾客
        customer.findAndCountAll()
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'顾客信息查询成功!',
                customerList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器出错!'
            })
        })
    })
    customerRouter.get('/queryCustomer',(req,res) =>{//模糊查询顾客信息
        const { queryName } = req.query;
        customer.findAndCountAll({
            where:{
                customerName:{
                    [Op.like]:'%'+queryName+'%'
                }
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'顾客信息查询成功!',
                customerList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count
            })
        })
        .then(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器出错!'
            })
        })
    })
    module.exports = customerRouter;

    image.gif

    const express = require('express')//express框架
    const { Op } = require('sequelize')//nodejs的sequelize模块
    const order = require('../crud/table/myorder.js')//引入订单信息表
    const customer = require('../crud/table/customer.js')//引入顾客信息表
    const room = require('../crud/table/room.js')//引入房间信息表
    order.hasOne(customer,{ sourceKey:'customerIdCard', foreignKey:'customerIdCard' })
    order.hasOne(room,{ sourceKey:'roomNumber', foreignKey:'roomNumber' })
    const orderRouter = express.Router()
    orderRouter.post('/add',(req,res) =>{//创建订单
        console.log(req.body)
        const { orderNumber, orderStatus,customerIdCard,roomNumber,
                checkInTime,checkOutTime,totalMoney,remarks
            } = req.body;
        order.findOne({
            where:{
                orderNumber
            }
        })
        .then(data =>{
            if(data){
                res.status(200).json({
                    success:false,
                    msg:'该订单已经存在!'
                })
                return new Promise(() =>{})
            }else{
                return customer.findOne({
                    where:{
                        customerIdCard
                    }
                })
            }
        })
        .then(data =>{
            if(data){
                return room.update({
                        roomStatus:'已入住'
                },{
                    where:{
                            roomNumber
                    }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'该用户还未注册!'
                });
                return new Promise(() =>{});
            }
        })
        .then(data =>{
            return order.create({
                orderNumber, orderStatus,customerIdCard,roomNumber,
                checkInTime,checkOutTime,totalMoney,remarks
            })
        })
        .then(data =>{
            res.status(200).json({
                success:'true',
                msg:'订单创建成功!'
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'内部服务器出错!'
            })
        })
    })
    orderRouter.delete('/del',(req,res) =>{//删除订单
        const { orderNumber } = req.body;
        order.findOne({
            where:{
                orderNumber
            }
        })
        .then(data =>{
            if(data){
                return order.destroy({
                    where:{
                        orderNumber
                    }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'该订单不存在!'
                })
                return new Promise(() =>{})
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'删除成功!'
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    orderRouter.put('/update',(req,res) =>{//修改订单状态
        const { orderStatus, orderNumber,totalMoney,roomNumber } = req.body;
        order.findOne({
            where:{
                orderNumber
            }
        })
        .then(data =>{
            if(data){
                return room.update({
                    roomStatus:'未入住'
                },{
                    where:{
                        roomNumber
                    }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'该订单不存在!'                
                })
                return new Promise(() =>{})
            }
        })
        .then(data =>{
            return order.update({
                orderStatus,totalMoney
            },{
                where:{
                    orderNumber
                }
            })
        })
        .then(data =>{
            return order.findOne({
                where:{
                    orderNumber
                }
            })
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'订单修改成功!',
                order:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    orderRouter.get('/getAllOrder',(req,res) =>{//查询所有订单
        const { pageSize, offset } = req.query;
        order.findAndCountAll({
            limit:pageSize,
            offset:offset,
            include:[
                {
                    model:customer,
                    foreignKey:'customerIdCard',
                    attributes:['customerName','customerSex','customerVipLevel','customerPhoneNumber','totalAmount']
                },
                {
                    model:room,
                    foreignKey:'roomNumber',
                    attributes:['type','remarks']
                }
            ]
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'所有订单查询成功!',
                orderList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    orderRouter.get('/getAllNotPayOrder',(req,res) =>{//查询所有未支付的订单
        const { pageSize, offset } = req.query;
        order.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                orderStatus:{
                    [Op.eq]:'未支付'
                }
            },
            include:[
                {
                    model:customer,
                    foreignKey:'customerIdCard',
                    attributes:['customerName','customerSex','customerVipLevel','customerPhoneNumber','totalAmount']
                },
                {
                    model:room,
                    foreignKey:'roomNumber',
                    attributes:['type']
                }
            ]
        })
        .then(data  =>{
            res.status(200).json({
                success:true,
                msg:'未支付订单查询成功!',
                orderList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count,
                pageSize:pageSize,
                offset:offset
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    orderRouter.get('/getAllPayOrder',(req,res) =>{//查询所有已支付的订单
        const { pageSize, offset } = req.query;
        order.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                orderStatus:{
                    [Op.eq]:'已支付'
                }
            },
            include:[
                {
                    model:customer,
                    foreignKey:'customerIdCard',
                    attributes:['customerName','customerSex','customerVipLevel','customerPhoneNumber','totalAmount']
                },
                {
                    model:room,
                    foreignKey:'roomNumber',
                    attributes:['type']
                }
            ]
        })
        .then(data  =>{
            res.status(200).json({
                success:true,
                msg:'未支付订单查询成功!',
                orderList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count,
                pageSize:pageSize,
                offset:offset
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    orderRouter.get('/getStatusOrder',(req,res) =>{//查询所有该状态的订单
        const { pageSize, offset, orderStatus } = req.query;
        order.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                orderStatus:{
                    [Op.eq]:orderStatus
                }
            },
            include:[
                {
                    model:customer,
                    foreignKey:'customerIdCard',
                    attributes:['customerName','customerSex','customerVipLevel','customerPhoneNumber','totalAmount']
                },
                {
                    model:room,
                    foreignKey:'roomNumber',
                    attributes:['type']
                }
            ]
        })
        .then(data  =>{
            res.status(200).json({
                success:true,
                msg:'状态订单查询成功!',
                orderList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count,
                pageSize:pageSize,
                offset:offset
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    module.exports = orderRouter;

    image.gif

    const express = require('express')//express框架
    const { Op } = require('sequelize')//nodejs的sequelize模块
    const room = require('../crud/table/room.js')//引入放假信息表
    const roomType = require('../crud/table/roomType.js')//引入所有房间类型表
    room.hasOne(roomType,{ sourceKey:'type',foreignKey:'type'})//每个房间都有一个房间类型
    const roomRouter = express.Router()
    roomRouter.post('/add',(req,res) =>{//添加房间
        const { roomNumber, type, roomStatus, remarks } = req.body;
        room.findOne({
            where:{
                roomNumber
            }
        })
        .then(data =>{
            if(data){
                res.status(200).json({
                    success:false,
                    msg:'该房间已经存在!'
                })
                return new Promise(() =>{})
            }else{
                return room.create({
                    roomNumber, type, roomStatus, remarks
                })
            }
        })
        .then(data =>{
            return room.findOne({
                where:{
                    roomNumber
                },
                include:[{
                    model:roomType,
                    foreignKey:'type',
                    attributes:['price','url']
                }]
            })
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'房间添加成功!',
                room:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    roomRouter.delete('/del',(req,res) =>{
        const { roomNumber } = req.body;
        room.findOne({
            where:{
                roomNumber
            }
        })
        .then(data =>{
            if(data){
                return room.destroy({
                    where:{
                        roomNumber
                    }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'房间删除失败!'
                })
                return new Promise(() =>{})
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'该房间删除成功!'
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    roomRouter.put('/update',(req,res) =>{//修改房间信息
        const { roomNumber, type, roomStatus,remarks } = req.body;
        room.findOne({
            where:{
                roomNumber
            }
        })
        .then(data =>{
            if(data){
                return room.update({
                    type, roomStatus,remarks
                },{
                    where:{
                        roomNumber
                    }
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'该房间不存在!'
                })
                return new Promise(() =>{})
            }
        })
        .then(data =>{
            return room.findOne({
                where:{
                    roomNumber
                }
            })
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'房间信息修改成功!',
                room:data.get()
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误'
            })
        })
    })
    roomRouter.get('/getAllRoom',(req,res) =>{//获取所有房间信息
        const { pageSize, offset } = req.query;
        room.findAndCountAll({
            limit:pageSize,
            offset:offset
        })
        .then(data =>{
            let roomList = data.rows.map(item =>{
                return item.get()
            })
            res.status(200).json({
                success:true,
                msg:'房间信息查询成功!',
                roomList:roomList,
                count:data.count
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    roomRouter.get('/getOneRoom',(req,res) =>{//获取某个房间号的房间信息
        const { roomNumber } = req.query;
        room.findOne({
            where:{
                roomNumber
            }
        })
        .then(data =>{
            if(data){
                res.status(200).json({
                    success:true,
                    msg:'房间查询成功!',
                    room:data.get()
                })
            }else{
                res.status(200).json({
                    success:false,
                    msg:'未查询到该房间信息'
                })
            }
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    roomRouter.get('/getNotInRoom',(req,res) =>{//获取未入住房间信息
        const { pageSize, offset } = req.query;
        room.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                roomStatus:{
                    [Op.eq]:'未入住'
                }
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'未入住房间查询成功!',
                roomList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    roomRouter.get('/getInRoom',(req,res) =>{//查询已入住房间信息
        const { pageSize, offset } = req.query;
        room.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                roomStatus:{
                    [Op.eq]:'已入住'
                }
            }
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'已入住房间查询成功!',
                roomList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    roomRouter.get('/getAllRoomPrice',(req,res) =>{//查询所有的房间以及价格
        const { pageSize, offset } = req.query;
        room.findAndCountAll({
            limit:pageSize,
            offset:offset,
            include:[{
                model:roomType,
                foreignKey:'type',
                attributes:['price','url']
            }]
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'房间信息查询成功!',
                roomList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器内部错误!'
            })
        })
    })
    roomRouter.get('/getAllNotINRoomPrice',(req,res) =>{//获取所有未入住的房间信息
        const { pageSize, offset } = req.query;
        room.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                roomStatus:{
                    [Op.eq]:'未入住'
                }
            },
            include:[{
                model:roomType,
                foreignKey:'type',
                attributes:['price','url']
            }]
        })
        .then(data =>{
           res.status(200).json({
               success:true,
               msg:'房间信息查询成功!',
               roomList:data.rows.map(item =>{
                   return item.get()
               }),
               count:data.count
           })
        })
    })
    roomRouter.get('/getAllINRoomPrice',(req,res) =>{//获取所有已入住的房间信息
        const { pageSize, offset } = req.query;
        room.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                roomStatus:{
                    [Op.eq]:'已入住'
                }
            },
            include:[{
                model:roomType,
                foreignKey:'type',
                attributes:['price','url']
            }]
        })
        .then(data =>{
           res.status(200).json({
               success:true,
               msg:'房间信息查询成功!',
               roomList:data.rows.map(item =>{
                   return item.get()
               }),
               count:data.count
           })
        })
    })
    roomRouter.get('/getAllRoomTypePrice',(req,res) =>{
        const { pageSize, offset, type } = req.query;
        room.findAndCountAll({
            where:{
               type:{
                   [Op.eq]:type
               }
            },
            include:[{
                model:roomType,
                foreignKey:'type',
                attributes:['price','url']
            }]
        })
        .then(data =>{
            res.status(200).json({
                success:true,
                msg:'房型查询成功!',
                roomList:data.rows.map(item =>{
                    return item.get()
                }),
                count:data.count
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'服务器出错!'
            })
        })
    })
    roomRouter.get('/getAllStatusRoom',(req,res) =>{//获取所有该状态的房间信息
        const { pageSize, offset, roomStatus } = req.query;
        room.findAndCountAll({
            limit:pageSize,
            offset:offset,
            where:{
                roomStatus:{
                    [Op.eq]:roomStatus
                }
            },
            include:[{
                model:roomType,
                foreignKey:'type',
                attributes:['price','url']
            }]
        })
        .then(data =>{
           res.status(200).json({
               success:true,
               msg:'房间信息查询成功!',
               roomList:data.rows.map(item =>{
                   return item.get()
               }),
               count:data.count
           })
        })
    })
    module.exports = roomRouter

    image.gif

    五,项目总结

    相关文章
    |
    11月前
    |
    JSON 监控 前端开发
    AMIS:百度开源的前端低代码神器,18.4k star 背后的开发效率提升利器
    AMIS(前端低代码框架)是百度开源的低代码前端框架,基于纯 JSON 配置即可生成完整后台页面,包括表单、表格、图表、CRUD 列表,支持可视化拖拽编辑。,星标数已达 18.4k,百度内部已沉淀超过 5 万个页面,广泛应用于审核系统、数据管理后台、模型监控等落地场景
    1818 0
    |
    10月前
    |
    人工智能 前端开发 JavaScript
    前端工程化演进之路:从手工作坊到AI驱动的智能化开发
    前端工程化演进之路:从手工作坊到AI驱动的智能化开发
    1036 19
    前端工程化演进之路:从手工作坊到AI驱动的智能化开发
    |
    JSON 自然语言处理 前端开发
    【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
    【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
    778 72
    【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
    |
    存储 消息中间件 前端开发
    PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
    校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
    760 4
    PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
    |
    JavaScript 前端开发 数据可视化
    【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
    【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
    1082 2
    【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
    |
    人工智能 监控 JavaScript
    HarmonyOS5云服务技术分享--ArkTS开发Node环境
    本文详细讲解了在HarmonyOS(ArkTS API 9及以上)中使用云函数的开发技巧,结合Node.js和HTTP触发器,从零开始手把手教学。内容涵盖核心能力、开发流程(配置到部署)、高阶优化及常见问题解决,并提供实际应用场景示例。助你快速掌握Serverless开发,提升效率,探索跨端协作与AI集成等未来方向。
    |
    JSON 前端开发 数据可视化
    前端开发者狂喜!30K star开源组件库,界面美观度/开发速度双碾压!
    嗨,大家好,我是小华同学。Layui 是一款开源前端 UI 组件库,具有极简设计、强大功能和卓越性能,支持布局、表单、表格、弹层等六大模块,组件高度可定制。它无需复杂构建工具,直接面向浏览器开发,极大提升开发效率与界面美观度。适合新手和老手,快来试试吧!
    893 0
    |
    存储 人工智能 前端开发
    前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
    本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
    1645 14
    |
    JavaScript 前端开发 程序员
    前端学习笔记——node.js
    前端学习笔记——node.js
    1054 0
    |
    SpringCloudAlibaba JavaScript 前端开发
    谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
    分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
    谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架

    热门文章

    最新文章

  1. 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1243
  2. 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    554
  3. 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    428
  4. 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    429
  5. 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    543
  6. 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    720
  7. 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1403
  8. 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    312
  9. 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1166
  10. 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    500