@Data
@ToString
public class Checkout {
private Long id;
private String checkOutNumber;
private Long checkInId;
private Double consumePrice;
private Date createDate;
private Integer createdBy;
private String remark;
}
2、CheckoutMapper同时还需要创建一个vo类作为分页查询
package com.zcl.dao;
import com.zcl.entity.Checkout;
public interface CheckoutMapper {
int addCheckout(Checkout checkout);
}
映射文件
3、CheckoutServiceinsert into t_checkout (checkOutNumber, checkInId, consumePrice, createDate, createdBy, remark) values (#{checkOutNumber},#{checkInId},#{consumePrice},#{createDate},#{createdBy},#{remark});
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;
@Service
@Transactional
public class CheckoutServiceImpl implements CheckoutService {
@Resource
CheckoutMapper checkoutMapper;
@Resource
CheckinMapper checkinMapper;
@Resource
OrdersMapper ordersMapper;
@Resource
RoomTypeMapper roomTypeMapper;
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;
@RestController
@RequestMapping("/admin/checkout")
public class CheckoutController {
@Resource
CheckoutService checkoutService;
@RequestMapping("/addCheckout")
public String addCheckout(Checkout checkout, HttpSession session){
System.out.println("退房接收数据:"+checkout);
Map map = new HashMap();
//获取当前登录用户
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("该入住订单已完成,无需重复办理退房");
}
}



