基于SSM做的酒店管理系统,个人总结
退房业务逻辑
package com.sam.service.impl;
import com.sam.dao.*;
import com.sam.entity.*;
import com.sam.service.CheckoutService;
import com.sam.utils.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
/**
* Description :
*
* @author : Sam
* @created : 2021/5/9
*/
@Service
@Transactional
public class CheckoutServiceImpl implements CheckoutService {
@Autowired
private CheckoutMapper checkoutMapper;
@Autowired
private CheckinMapper checkinMapper;
@Autowired
private RoomTypeMapper roomTypeMapper;
@Autowired
private RoomMapper roomMapper;
@Autowired
private OrdersMapper ordersMapper;
/**
* 添加退房记录
* @param checkout
* @return
*/
@Override
@Transactional
public int addCheckout(Checkout checkout) {
//1.设置退房信息
checkout.setCreateDate(new Date());//设置创建时间
checkout.setCheckOutNumber(UUIDUtil.randomUUID());//设置退房单号
int count = checkoutMapper.insertCheckout(checkout);// 执行添加退房的方法
//2.如果退房成功
if(count>0){
//2.1入住管理中,入住状态从入住中改为已离店
Checkin currentCheckin = checkinMapper.selectCheckinByCheckinId(checkout.getCheckInId());//获取当前的入住对象
currentCheckin.setStatus(2);//设置状态为已离店
checkinMapper.updateCheckin(currentCheckin);//调用修改方法
//2.2房型管理中,已入住人数-1,可入住人数+1
RoomType roomType = roomTypeMapper.selectRoomTypeByRoomTypeId(currentCheckin.getRoomTypeId());//查询当前入住信息所属房型对象
roomType.setLivedNum(roomType.getLivedNum()-1);//已入住人数-1
roomType.setAvilableNum(roomType.getAvilableNum()+1);//可入住房间数+1
roomTypeMapper.updateRoomType(roomType);//修改房型
//2.3房间管理中,房间状态从入住中改为可预订
Room room = new Room();
room.setId(currentCheckin.getRoomId().intValue());//设置房间主键
room.setStatus(1);//房间状态设置为可入住
roomMapper.updateRoom(room);//修改房间
//2.4预定管理中,房间状态修改为已离店
Orders orders = ordersMapper.selectOrdersByOrdersId(currentCheckin.getOrdersId());//获取orders对象
orders.setStatus(3);//设置状态为已离店
ordersMapper.updateOrders(orders);//修改预定信息
}
//返回数据
return count;
}
}
办理入住业务逻辑
package com.sam.service.impl;
import com.sam.dao.CheckinMapper;
import com.sam.dao.OrdersMapper;
import com.sam.dao.RoomMapper;
import com.sam.dao.RoomTypeMapper;
import com.sam.entity.Checkin;
import com.sam.entity.Orders;
import com.sam.entity.Room;
import com.sam.entity.RoomType;
import com.sam.service.CheckinService;
import com.sam.vo.CheckinVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* Description :
*
* @author : Sam
* @created : 2021/5/9
*/
@Service
@Transactional
public class CheckinServiceImpl implements CheckinService {
@Autowired
private CheckinMapper checkinMapper;
@Autowired
private OrdersMapper ordersMapper;
@Autowired
private RoomTypeMapper roomTypeMapper;
@Autowired
private RoomMapper roomMapper;
/**
* 查询入住列表
* @param checkinVo
* @return
*/
@Override
public List<Checkin> findCheckinList(CheckinVo checkinVo) {
return checkinMapper.selectCheckinList(checkinVo);
}
/**
* 添加入住
* @param checkin
* @return
*/
@Override
@Transactional(rollbackFor = RuntimeException.class)
public int addCheckin(Checkin checkin) {
//1.设置入住信息
checkin.setStatus(1);//设置入住状态1,表示入住中
checkin.setCreateDate(new Date());//设置创建时间
//调用添加入住的方法
int count = checkinMapper.insertCheckin(checkin);
//2.若入住成功
if(count>0){
//2.1在预定管理中,
Orders orders = new Orders();
orders.setStatus(3);//修改订单状态为入住中
orders.setId(checkin.getOrdersId());//设置订单主键
ordersMapper.updateOrders(orders);//调用修改方法
//2.2在房型管理
RoomType roomType = roomTypeMapper.selectRoomTypeByRoomTypeId(checkin.getRoomTypeId()); //获取需要办理入住的房型
roomType.setLivedNum(roomType.getLivedNum()+1);//将该房型的已入住人数在原有入住人数基础上+1
roomTypeMapper.updateRoomType(roomType); //调用修改房型信息的方法
//2.3在房间管理中
Room room = new Room();
room.setStatus(3);//设置房间状态为入住中
room.setId(checkin.getRoomId().intValue());//设置房间主键
roomMapper.updateRoom(room);//修改房间状态
}
return count;
}
}