46 lines
2.1 KiB
Java

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<Reservation>()
.eq(Reservation::getId, dto.getReservationId())
.set(Reservation::getStatus, dto.getIsApprove() ? ReservationStatus.PENDING_DEVICE_ADMIN : ReservationStatus.REJECTED));
}
@Override
public IPage<LeaderApprovalVO> getLeaderApproval(Page<Approval> pageRequest, Long userId, String applicantName, String deviceName) {
return approvalMapper.getLeaderApproval(pageRequest, userId, applicantName, deviceName);
}
}