基于javaweb+mysql的springboot酒店预订管理系统(java+springboot+vue+maven+mysql)
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot酒店预订管理系统(java+springboot+vue+maven+mysql)
一、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。
/**
* @ProjectName: hotel
* @Package: cn.mafangui.hotel.controller.worker
* @ClassName: OpNoticeController
* @description:公告管理控制层
* @modified By:
* @version: v1.0.0$
*/
@RestController
@RequestMapping(value = "/op/notice")
public class OpNoticeController {
@Autowired
private NoticeService noticeService;
/**
* 添加公告
* 订单状态默认为未付款状态
*/
@RequestMapping(value = "/add")
public AjaxResult addNotice(String title, String content, @DateTimeFormat(pattern = "yyyy-MM-dd") Date time, String userId, String userName, String phone,String role) {
Notice notice = new Notice(0,title, content, time, Integer.parseInt(userId), userName, phone,role);
int re = noticeService.insert(notice);
if (re != 1) return ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success("添加成功.");
}
@RequestMapping(value = "/delete")
public AjaxResult deleteNotice(int id) {
int re = noticeService.delete(id);
if (re != 1) return ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success("删除成功.");
}
@RequestMapping(value = "/update")
public AjaxResult updateNotice(int id, String title, String content) {
Notice notice = new Notice(id,title,content);
int re = noticeService.update(notice);
if (re != 1) return ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success("修改成功.");
* @return
*/
@RequestMapping(value = "")
public AjaxResult getAllRoomType(){
List<RoomType> rooms = roomTypeService.findAllType();
return ResponseTool.success(rooms);
}
/**
* 查找有余量的房型
* @return
*/
@RequestMapping(value = "/rest")
public AjaxResult findAllRestRoomType(){
return ResponseTool.success(roomTypeService.findAllRestType());
}
/**
* 根据id查找房型
* @param typeId
* @return
*/
@RequestMapping(value = "/{typeId}")
public AjaxResult getById(@PathVariable int typeId){
return ResponseTool.success(roomTypeService.selectById(typeId));
}
/**
* 添加房型
* @param roomType
* @param price
* @param discount
* @param area
* @param bedNum
* @param bedSize
* @param window
* @param remark
* @return
*/
@RequestMapping(method = RequestMethod.POST,value = "/add")
public AjaxResult addRoomType(String roomType,Double price,Double discount,Integer area,
return ResponseTool.success(MsgType.SUCCESS);
}
/**
* 删除订单
* @param orderId
* @return
*/
@RequestMapping(value = "/delete")
public AjaxResult deleteOrderByUser(int orderId){
Order order = new Order(orderId,OrderStatus.WAS_DELETED.getCode());
int re = orderService.update(order);
if(re!=1) ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success(MsgType.SUCCESS);
}
/**
* 订单支付
* @param orderId
* @return
*/
@RequestMapping(method = RequestMethod.POST,value = "/pay")
public AjaxResult payOrder(Integer orderId,String username,String password){
User user = userService.selectByUsernameAndPassword(username,password);
if(user==null) return ResponseTool.failed("密码错误");
int re = orderService.payOrder(orderId);
if(re!=1) ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success(MsgType.SUCCESS);
}
/**
* 取消订单
* @param orderId
* @return
*/
@RequestMapping(value = "/cancel")
public AjaxResult cancelOrder(int orderId){
int re = orderService.cancelOrder(orderId);
if(re!=1) ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success(MsgType.SUCCESS);
}
/**
* 客户查询个人所有订单(不包括被自己删除的)
/**
* 订单接口
*/
@RestController
@RequestMapping(value = "/user/order")
public class UserOrderController {
@Autowired
private OrderService orderService;
@Autowired
private UserService userService;
/**
* 添加预订
* 订单状态默认为未付款状态
* @param orderTypeId
* @param orderType
* @param userId
* @param name
* @param phone
* @param roomTypeId
* @param roomType
* @param orderDate
* @param orderDays
* @param orderCost
* @return
*/
@RequestMapping(value = "/add")
public AjaxResult addOrder(int orderTypeId,String orderType, int userId,String name, String phone,int roomTypeId, String roomType,
@DateTimeFormat(pattern = "yyyy-MM-dd") Date orderDate, Integer orderDays, Double orderCost){
Order order = new Order(orderTypeId,orderType,userId,name,phone,roomTypeId,
roomType,orderDate,orderDays, OrderStatus.UNPAID.getCode(),orderCost);
int re = orderService.addOrder(order);
if(re!=1) ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success(MsgType.SUCCESS);
}
/**
* 更新用户信息
* @param userId
* @param name
* @param gender
* @param phone
* @param email
* @param address
* @param idcard
* @return
*/
@RequestMapping(method = RequestMethod.POST,value = "/update")
public AjaxResult userUpdate(Integer userId, String name, String gender, String phone,
String email, String address, String idcard, HttpServletRequest request){
HttpSession session = request.getSession();
if (!session.getAttribute("userId").equals(userId)){
return ResponseTool.failed(MsgType.PERMISSION_DENIED);
}
User user = new User();
user.setUserId(userId);
user.setName(name);
user.setGender(gender);
user.setPhone(phone);
user.setEmail(email);
user.setAddress(address);
user.setIdcard(idcard);
if(userService.updateUser(user)==1)
return ResponseTool.success("修改成功");
return ResponseTool.success("修改失败,请检查或稍后再试");
}
/**
* 更改密码
* @param username
* @param oldPassword
* @param newPassword
* @return
*/
@RequestMapping(method = RequestMethod.POST,value = "/updatePassword")
public AjaxResult updatePassword(String username,String oldPassword,String newPassword){
User user = userService.selectByUsernameAndPassword(username,oldPassword);
if (user == null){
return ResponseTool.failed("密码不对");
}
user.setPassword(newPassword);
if(userService.updateUser(user)==1)
return ResponseTool.success("修改成功");
return ResponseTool.failed("修改失败");
}
@RestController
@RequestMapping(value = "/admin/operator")
public class OperatorController {
@Autowired
private WorkerService workerService;
@RequestMapping(method = RequestMethod.POST,value = "/delete/{workerId}")
public AjaxResult deleteOperator(@PathVariable Integer workerId){
int re = workerService.delete(workerId);
if(re!=1) ResponseTool.failed();
return ResponseTool.success("删除成功");
}
@RequestMapping(value = "")
public AjaxResult getAllOperator(){
return ResponseTool.success(workerService.selectByRole(Role.OPERATOR.getValue()));
}
@RequestMapping(method = RequestMethod.POST,value = "/{workerId}")
public AjaxResult getOperator(@PathVariable Integer workerId){
return ResponseTool.success(workerService.selectById(workerId));
}
@RequestMapping(method = RequestMethod.POST,value = "/add")
public AjaxResult addOperator(String username,String password,String name,String gender,String phone,String email,String address){
Worker worker = new Worker(username,password,name,gender,phone,email,address);
worker.setRole(Role.OPERATOR.getValue());
int re = workerService.insert(worker);
if(re!=1) return ResponseTool.failed();
return ResponseTool.success("添加成功");
}
@RequestMapping(method = RequestMethod.POST,value = "/update")
public AjaxResult updateOperator(int workerId,String name,String gender,String phone,String email,String address){
Worker worker = new Worker();
worker.setWorkerId(workerId);
worker.setName(name);
worker.setGender(gender);
worker.setPhone(phone);
worker.setEmail(email);
worker.setAddress(address);
int re = workerService.updateById(worker);
if(re!=1) return ResponseTool.failed();
setCorsMappings(request, response);
PrintWriter writer = response.getWriter();
AjaxResult result = ResponseTool.failed(MsgType.PERMISSION_DENIED);
ObjectMapper mapper = new ObjectMapper();
writer.write(mapper.writeValueAsString(result));
return false;
}
}
private void setCorsMappings(HttpServletRequest request, HttpServletResponse response){
String origin = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", origin);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization");
response.setHeader("Access-Control-Allow-Credentials", "true");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
public class SessionInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if(session.getAttribute("userId") != null){
return true;
}else {
@RequestMapping(value = "/op/msg")
public class OpMsgController {
@Autowired
private MsgService msgService;
/**
* 添加公告
* 订单状态默认为未付款状态
*/
@RequestMapping(value = "/add")
public AjaxResult addNotice(String title, String content, @DateTimeFormat(pattern = "yyyy-MM-dd") Date time, String userId, String userName, String phone,String role) {
Msg msg = new Msg(0,title, content, time, Integer.parseInt(userId), userName, phone,role);
int re = msgService.insert(msg);
if (re != 1) return ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success("添加成功.");
}
@RequestMapping(value = "/delete")
public AjaxResult deleteNotice(int orderId) {
int re = msgService.delete(orderId);
if (re != 1) return ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success("删除成功.");
}
@RequestMapping(value = "/update")
public AjaxResult updateNotice(int id, String title, String content) {
Msg msg = new Msg(id, title, content);
int re = msgService.update(msg);
if (re != 1) return ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success("修改成功.");
}
@RequestMapping(value = "")
public AjaxResult getAllMsg() {
return ResponseTool.success(msgService.AllMsg());
}
@RequestMapping(value = "/count")
public AjaxResult getMsgCount() {
return ResponseTool.success(msgService.getMsgCount());
}
/**
@RequestMapping(value = "")
public AjaxResult getAllOrder(){
return ResponseTool.success(orderService.AllOrders());
}
@RequestMapping(value = "/count")
public AjaxResult getOrderCount(){
return ResponseTool.success(orderService.getOrderCount());
}
/**
* 根据userID查询所有订单
* @param userId
* @return
*/
@RequestMapping(value = "/user/{userId}")
public AjaxResult getByUser(@PathVariable int userId){
return ResponseTool.success(orderService.selectByUserId(userId));
}
/**
* 根据订单号查询订单
* @param orderId
* @return
*/
@RequestMapping(value = "/{orderId}")
public AjaxResult getById(@PathVariable Integer orderId){
return ResponseTool.success(orderService.selectById(orderId));
}
/**
* 根据姓名、预留手机号查找订单
* 主要用于客户入住
* @param name
* @param phone
* @return
*/
@RequestMapping(value = "/withNameAndPhone")
public AjaxResult getByNameAndPhone(String name,String phone){
return ResponseTool.success(orderService.selectByNameAndPhone(name,phone));
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if(session.getAttribute("role").equals(Role.ADMIN.getValue())){
return true;
}else {
setCorsMappings(request, response);
PrintWriter writer = response.getWriter();
AjaxResult result = ResponseTool.failed(MsgType.PERMISSION_DENIED);
ObjectMapper mapper = new ObjectMapper();
writer.write(mapper.writeValueAsString(result));
return false;
}
}
private void setCorsMappings(HttpServletRequest request, HttpServletResponse response){
String origin = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", origin);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization");
response.setHeader("Access-Control-Allow-Credentials", "true");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
if (roomService.insert(room) == 1){
rt.setTypeId(typeId);
rt.setRest(roomTypeService.selectById(typeId).getRest() + 1);
if(roomTypeService.update(rt)!=1) return ResponseTool.failed("添加失败");
}else return ResponseTool.failed("添加失败");
return ResponseTool.success("添加成功");
}
@RequestMapping(method = RequestMethod.POST,value = "/delete/{roomId}")
public AjaxResult deleteRoom(@PathVariable Integer roomId){
if(roomService.delete(roomId)!=1) return ResponseTool.failed("删除失败");
return ResponseTool.success("删除成功");
}
@RequestMapping(value = "/update")
public AjaxResult updateRoom(Integer roomId,String roomNumber,Integer typeId,
String roomType,double roomPrice,double roomDiscount,int roomStatus,String remark){
Room room = new Room(roomNumber,typeId,roomType,roomPrice,roomDiscount,roomStatus,remark);
room.setRoomId(roomId);
if(roomService.update(room)!=1) return ResponseTool.failed("更新失败");
return ResponseTool.success("更新成功");
}
@RequestMapping(value = "/{id}")
public AjaxResult getById(@PathVariable Integer id){
return ResponseTool.success(roomService.selectById(id));
}
@RequestMapping(value = "/type/{typeId}")
public AjaxResult getByType(@PathVariable Integer typeId){
return ResponseTool.success(roomService.selectByType(typeId));
}
@RequestMapping(value = "/status/{statusId}")
public AjaxResult getByStatus(@PathVariable Integer statusId){
return ResponseTool.success(roomService.selectByStatus(statusId));
}
@RequestMapping(value = "")
public AjaxResult getAll(){
return ResponseTool.success(roomService.selectAll());
}
}
int re = dishesService.update(notice);
if (re != 1) return ResponseTool.failed(MsgType.FAILED);
return ResponseTool.success("修改成功.");
}
@RequestMapping(value = "")
public AjaxResult getAllNotice() {
return ResponseTool.success(dishesService.AllNotices());
}
@RequestMapping(value = "/count")
public AjaxResult getDishesCount() {
return ResponseTool.success(dishesService.getDishesCount());
}
/**
* 根据userID查询所有公告
*
* @param userId
* @return
*/
@RequestMapping(value = "/user/{userId}")
public AjaxResult getByUser(@PathVariable int userId) {
return ResponseTool.success(dishesService.selectByUserId(userId));
}
/**
* 根据id号查询公告
*
* @param id
* @return
*/
@RequestMapping(value = "/{id}")
public AjaxResult getById(@PathVariable Integer id) {
return ResponseTool.success(dishesService.selectById(id));
}
}
}
@RequestMapping(value = "")
public AjaxResult getAll(){
return ResponseTool.success(checkInService.selectAll());
}
}
public class AdminInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if(session.getAttribute("role").equals(Role.ADMIN.getValue())){
return true;
}else {
setCorsMappings(request, response);
PrintWriter writer = response.getWriter();
AjaxResult result = ResponseTool.failed(MsgType.PERMISSION_DENIED);
ObjectMapper mapper = new ObjectMapper();
writer.write(mapper.writeValueAsString(result));
return false;
}
}
private void setCorsMappings(HttpServletRequest request, HttpServletResponse response){
@Autowired
private RoomTypeService roomTypeService;
@RequestMapping(value = "/add")
public AjaxResult addRoom(String roomNumber, Integer typeId, String roomType, double roomPrice, double roomDiscount, int roomStatus, String remark){
if(roomService.selectByNumber(roomNumber)!=null) return ResponseTool.failed("房间号码重复");
Room room = new Room(roomNumber,typeId,roomType,roomPrice,roomDiscount,roomStatus,remark);
RoomType rt = new RoomType();
if (roomService.insert(room) == 1){
rt.setTypeId(typeId);
rt.setRest(roomTypeService.selectById(typeId).getRest() + 1);
if(roomTypeService.update(rt)!=1) return ResponseTool.failed("添加失败");
}else return ResponseTool.failed("添加失败");
return ResponseTool.success("添加成功");
}
@RequestMapping(method = RequestMethod.POST,value = "/delete/{roomId}")
public AjaxResult deleteRoom(@PathVariable Integer roomId){
if(roomService.delete(roomId)!=1) return ResponseTool.failed("删除失败");
return ResponseTool.success("删除成功");
}
@RequestMapping(value = "/update")
public AjaxResult updateRoom(Integer roomId,String roomNumber,Integer typeId,
String roomType,double roomPrice,double roomDiscount,int roomStatus,String remark){
Room room = new Room(roomNumber,typeId,roomType,roomPrice,roomDiscount,roomStatus,remark);
room.setRoomId(roomId);
if(roomService.update(room)!=1) return ResponseTool.failed("更新失败");
return ResponseTool.success("更新成功");
}
@RequestMapping(value = "/{id}")
public AjaxResult getById(@PathVariable Integer id){
return ResponseTool.success(roomService.selectById(id));
}
@RequestMapping(value = "/type/{typeId}")
public AjaxResult getByType(@PathVariable Integer typeId){
return ResponseTool.success(roomService.selectByType(typeId));
}
@RequestMapping(value = "/status/{statusId}")
public AjaxResult getByStatus(@PathVariable Integer statusId){
return ResponseTool.success(roomService.selectByStatus(statusId));
}
@RequestMapping(value = "")
public AjaxResult getAll(){
return ResponseTool.success(roomService.selectAll());
}
}
}
/**
* 订单接口
*/
@RestController
@RequestMapping(value = "/user/order")
public class UserOrderController {
@Autowired
private OrderService orderService;
@Autowired
private UserService userService;
/**
* 添加预订
* 订单状态默认为未付款状态
* @param orderTypeId
* @param orderType
* @param userId
* @param name
* @param phone
* @param roomTypeId
* @param roomType
* @param orderDate
* @param orderDays
* @param orderCost
* @return
*/
* 根据订单号查询订单
* @param orderId
* @return
*/
@RequestMapping(value = "/{orderId}")
public AjaxResult getById(@PathVariable int orderId){
return ResponseTool.success(orderService.selectById(orderId));
}
}
@RestController
@RequestMapping(value = "/op/user")
public class OpUserController {
@Autowired
private UserService userService;
@RequestMapping(value = "")
public AjaxResult getAllUser(){
return ResponseTool.success(userService.selectAllUser());
}
@RequestMapping(value = "/count")
public AjaxResult getUserCount(){
return ResponseTool.success(userService.getUserCount());
}
@RequestMapping(value = "/delete/{userId}")
public AjaxResult deleteUser(@PathVariable Integer userId){
int re = userService.deleteUser(userId);
if(re!=1) return ResponseTool.failed();
return ResponseTool.success();
public class OperatorController {
@Autowired
private WorkerService workerService;
@RequestMapping(method = RequestMethod.POST,value = "/delete/{workerId}")
public AjaxResult deleteOperator(@PathVariable Integer workerId){
int re = workerService.delete(workerId);
if(re!=1) ResponseTool.failed();
return ResponseTool.success("删除成功");
}
@RequestMapping(value = "")
public AjaxResult getAllOperator(){
return ResponseTool.success(workerService.selectByRole(Role.OPERATOR.getValue()));
}
@RequestMapping(method = RequestMethod.POST,value = "/{workerId}")
public AjaxResult getOperator(@PathVariable Integer workerId){
return ResponseTool.success(workerService.selectById(workerId));
}
@RequestMapping(method = RequestMethod.POST,value = "/add")
public AjaxResult addOperator(String username,String password,String name,String gender,String phone,String email,String address){
Worker worker = new Worker(username,password,name,gender,phone,email,address);
worker.setRole(Role.OPERATOR.getValue());
int re = workerService.insert(worker);
if(re!=1) return ResponseTool.failed();
return ResponseTool.success("添加成功");
}
@RequestMapping(method = RequestMethod.POST,value = "/update")
public AjaxResult updateOperator(int workerId,String name,String gender,String phone,String email,String address){
Worker worker = new Worker();
worker.setWorkerId(workerId);
worker.setName(name);
worker.setGender(gender);
worker.setPhone(phone);
worker.setEmail(email);
worker.setAddress(address);
int re = workerService.updateById(worker);
if(re!=1) return ResponseTool.failed();
return ResponseTool.success("更新成功");
}
}