package github.benjamin.equipreservebackend.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import github.benjamin.equipreservebackend.constant.ApprovalStep; import github.benjamin.equipreservebackend.constant.ReservationStatus; import github.benjamin.equipreservebackend.dto.LeaderApprovalDTO; import github.benjamin.equipreservebackend.entity.Approval; import github.benjamin.equipreservebackend.entity.Reservation; import github.benjamin.equipreservebackend.mapper.ApprovalMapper; import github.benjamin.equipreservebackend.mapper.ReservationMapper; import github.benjamin.equipreservebackend.service.ApprovalService; import github.benjamin.equipreservebackend.vo.LeaderApprovalVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class ApprovalServiceImpl implements ApprovalService { private final ApprovalMapper approvalMapper; private final ReservationMapper reservationMapper; @Override public void addApproval(LeaderApprovalDTO dto) { Approval approval = Approval.builder() .approverId(dto.getLeaderId()) .reservationId(dto.getReservationId()) .step(ApprovalStep.LEADER.getStep()) .decision(dto.getIsApprove() ? 1 : 0) .build(); approvalMapper.insert(approval); reservationMapper.update(new LambdaUpdateWrapper() .eq(Reservation::getId, dto.getReservationId()) .set(Reservation::getStatus, dto.getIsApprove() ? ReservationStatus.PENDING_DEVICE_ADMIN : ReservationStatus.REJECTED)); } @Override public IPage getLeaderApproval(Page pageRequest, Long userId, String applicantName, String deviceName) { return approvalMapper.getLeaderApproval(pageRequest, userId, applicantName, deviceName); } }