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;
|
package github.benjamin.equipreservebackend.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@TableName("approvals")
|
@TableName("approvals")
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
public class Approval {
|
public class Approval {
|
||||||
|
|
||||||
private Long id;
|
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