feat: 实现团队负责人审批预约接口
This commit is contained in:
parent
4f1b72128b
commit
5c77f66b0a
@ -0,0 +1,17 @@
|
||||
package github.benjamin.equipreservebackend.constant;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum ApprovalStep {
|
||||
|
||||
LEADER(1),
|
||||
DEVICE_ADMIN(2);
|
||||
|
||||
final Integer step;
|
||||
|
||||
ApprovalStep(Integer step) {
|
||||
this.step = step;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package github.benjamin.equipreservebackend.controller;
|
||||
|
||||
import github.benjamin.equipreservebackend.dto.LeaderApprovalDTO;
|
||||
import github.benjamin.equipreservebackend.response.ResponseResult;
|
||||
import github.benjamin.equipreservebackend.service.ApprovalService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/approval")
|
||||
@RequiredArgsConstructor
|
||||
public class ApprovalController {
|
||||
|
||||
private final ApprovalService approvalService;
|
||||
|
||||
@PreAuthorize("hasRole('LEADER')")
|
||||
@PostMapping("/leader")
|
||||
public ResponseResult<?> addApproval(@RequestBody LeaderApprovalDTO dto) {
|
||||
approvalService.addApproval(dto);
|
||||
return ResponseResult.success();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package github.benjamin.equipreservebackend.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LeaderApprovalDTO {
|
||||
|
||||
private Long leaderId;
|
||||
private Long reservationId;
|
||||
private Boolean isApprove;
|
||||
|
||||
}
|
@ -1,12 +1,18 @@
|
||||
package github.benjamin.equipreservebackend.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@TableName("approvals")
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class Approval {
|
||||
|
||||
private Long id;
|
||||
|
@ -0,0 +1,9 @@
|
||||
package github.benjamin.equipreservebackend.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import github.benjamin.equipreservebackend.entity.Approval;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface ApprovalMapper extends BaseMapper<Approval> {
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package github.benjamin.equipreservebackend.service;
|
||||
|
||||
import github.benjamin.equipreservebackend.dto.LeaderApprovalDTO;
|
||||
|
||||
public interface ApprovalService {
|
||||
void addApproval(LeaderApprovalDTO dto);
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package github.benjamin.equipreservebackend.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
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 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));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user