SSM框架之酒店管理系统十七(B端退房管理)
SSM框架之酒店管理系统十七(B端退房管理)
1、实体类创建
@Data@ToStringpublic class Checkout { private Long id; private String checkOutNumber; private Long checkInId; private Double consumePrice; private Date createDate; private Integer createdBy; private String remark;}
同时还需要创建一个vo类作为分页查询
2、CheckoutMapper
package com.zcl.dao;import com.zcl.entity.Checkout;/** * 项目名称:ssm_hotel * 描述:退房办理持久层 * * @author zhong * @date 2022-05-23 16:04 */public interface CheckoutMapper { /** * 退房信息添加 * @param checkout * @return */ int addCheckout(Checkout checkout);}
映射文件
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.zcl.dao.CheckoutMapper"> <insert id="addCheckout"> insert into t_checkout (checkOutNumber, checkInId, consumePrice, createDate, createdBy, remark) values (#{checkOutNumber},#{checkInId},#{consumePrice},#{createDate},#{createdBy},#{remark}); </insert></mapper>
3、CheckoutService
package com.zcl.service.impl;import com.zcl.dao.CheckinMapper;import com.zcl.dao.CheckoutMapper;import com.zcl.dao.OrdersMapper;import com.zcl.dao.RoomTypeMapper;import com.zcl.entity.Checkin;import com.zcl.entity.Checkout;import com.zcl.entity.Orders;import com.zcl.entity.RoomType;import com.zcl.service.CheckoutService;import com.zcl.utils.UUIDUtils;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;import java.util.Date;/** * 项目名称:ssm_hotel * 描述: * * @author zhong * @date 2022-05-23 16:11 */@Service@Transactionalpublic class CheckoutServiceImpl implements CheckoutService { /** * 注入持久层 */ @Resource CheckoutMapper checkoutMapper; /** * 注入入住管理 */ @Resource CheckinMapper checkinMapper; /** * 注入预订管理 */ @Resource OrdersMapper ordersMapper; /** * 注入房间类型管理 */ @Resource RoomTypeMapper roomTypeMapper; /** * 添加退房数据 * @param checkout * @return */ public int addCheckout(Checkout checkout) { // 1、添加退房记录 checkout.setCreateDate(new Date()); checkout.setCheckOutNumber(UUIDUtils.randomUUID()); // 调用添加退房信息的方法 int count = checkoutMapper.addCheckout(checkout); if(count > 0){ // 2、修改入住管理t_checkin表中的状态为2【已退房】 Checkin checkin = checkinMapper.finfById(checkout.getCheckInId()); checkin.setStatus(2); // 调用修改入住订单方法 checkinMapper.updateCheckin(checkin); // 3、修改t_orders预订表中的状态为【4】已完成 Orders orders = new Orders(); orders.setId(checkin.getOrdersid()); orders.setStatus(4); // 调用修改的方法 ordersMapper.updateOrders(orders); // 4、修改t_room_type房型表的数据 RoomType roomType = roomTypeMapper.findById(checkin.getRoomtypeid()); // 房间可用数量 roomType.setAvilablenum(roomType.getAvilablenum()+1); // 房间已住数量 roomType.setLivednum(roomType.getLivednum()-1); roomTypeMapper.updateRoomType(roomType); } return count; }}
这边的话可能调用了行的修改方法,需要自己去添加
4、CheckoutController
package com.zcl.controller.admin;import com.alibaba.fastjson.JSON;import com.zcl.dao.CheckoutMapper;import com.zcl.entity.Checkin;import com.zcl.entity.Checkout;import com.zcl.entity.Employee;import com.zcl.service.CheckoutService;import com.zcl.utils.SystemConstant;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import javax.servlet.http.HttpSession;import java.util.HashMap;import java.util.Map;/** * 项目名称:ssm_hotel * 描述:办理退房控制器 * * @author zhong * @date 2022-05-23 17:55 */@RestController@RequestMapping("/admin/checkout")public class CheckoutController { @Resource CheckoutService checkoutService; @RequestMapping("/addCheckout") public String addCheckout(Checkout checkout, HttpSession session){ System.out.println("退房接收数据:"+checkout); Map<String,Object> map = new HashMap<String,Object>(); //获取当前登录用户 Employee employee = (Employee) session.getAttribute(SystemConstant.LOGINUSER); //退房人【当前登录用户】 checkout.setCreatedBy(employee.getId()); //调用添加退房信息的方法 if(checkoutService.addCheckout(checkout)>0){ map.put(SystemConstant.SUCCESS,true); map.put(SystemConstant.MESSAGES,"办理退房成功"); }else{ map.put(SystemConstant.SUCCESS,false); map.put(SystemConstant.MESSAGES,"办理退房失败"); } return JSON.toJSONString(map); }}
5、前端页面请求事件
// 退房事件function checkOut(data) { console.log(data); // 判断当前的入住状态 if(data.status == 1){ // 提示是否退房 layer.confirm('您确定要办理退房吗?', {icon: 3, title:'退房提示'}, function(index){ //发送请求 $.post("/admin/checkout/addCheckout",{"checkInId":data.id,"consumePrice":data.payprice},function(result){ if(result.succser){ layer.alert(result.messages,{icon:1}); tableIns.reload(); }else { layer.alert(result.messages,{icon:5}); } },"json"); layer.close(index); }); }else { layer.msg("该入住订单已完成,无需重复办理退房"); }}