diff --git a/src/main/java/github/benjamin/equipreservebackend/constant/ReservationStatus.java b/src/main/java/github/benjamin/equipreservebackend/constant/ReservationStatus.java index f6f10b9..b10b824 100644 --- a/src/main/java/github/benjamin/equipreservebackend/constant/ReservationStatus.java +++ b/src/main/java/github/benjamin/equipreservebackend/constant/ReservationStatus.java @@ -7,8 +7,8 @@ public enum ReservationStatus { PENDING_LEADER("团队负责人审批中"), PENDING_DEVICE_ADMIN("设备负责人审批中"), APPROVED("通过"), - APPROVED_ASSIST("需要协助实验"), - REJECTED("审批不通过"); + APPROVED_ASSIST("通过,需要协助实验"), + REJECTED("不通过"); final String label; diff --git a/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java b/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java index 0c3266c..4cb65eb 100644 --- a/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java +++ b/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java @@ -25,15 +25,15 @@ public class ApprovalController { return ResponseResult.success(); } - @PreAuthorize("hasRole('LEADER')") - @GetMapping("/leader/{id}") - public ResponseResult> getLeaderApproval(@PathVariable("id") Long id, + @PreAuthorize("hasAnyRole('LEADER', 'DEVICE_ADMIN')") + @GetMapping("/{id}") + public ResponseResult> getApproval(@PathVariable("id") Long id, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size, @RequestParam(required = false) String applicantName, @RequestParam(required = false) String deviceName) { Page pageRequest = new Page<>(page, size); - return ResponseResult.success(approvalService.getLeaderApproval(pageRequest, id, applicantName, deviceName)); + return ResponseResult.success(approvalService.getApproval(pageRequest, id, applicantName, deviceName)); } } diff --git a/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java b/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java index 876ed8d..c3401b7 100644 --- a/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java +++ b/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java @@ -11,7 +11,7 @@ import org.springframework.stereotype.Repository; @Repository public interface ApprovalMapper extends BaseMapper { - IPage getLeaderApproval(Page page, + IPage getApproval(Page page, @Param("approverId") Long approverId, @Param("applicantName") String applicantName, @Param("deviceName") String deviceName); diff --git a/src/main/java/github/benjamin/equipreservebackend/service/ApprovalService.java b/src/main/java/github/benjamin/equipreservebackend/service/ApprovalService.java index f6d6bbd..645e3ac 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/ApprovalService.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/ApprovalService.java @@ -9,5 +9,5 @@ import github.benjamin.equipreservebackend.vo.LeaderApprovalVO; public interface ApprovalService { void addApproval(LeaderApprovalDTO dto); - IPage getLeaderApproval(Page pageRequest, Long userId, String applicantName, String deviceName); + IPage getApproval(Page pageRequest, Long userId, String applicantName, String deviceName); } diff --git a/src/main/java/github/benjamin/equipreservebackend/service/impl/ApprovalServiceImpl.java b/src/main/java/github/benjamin/equipreservebackend/service/impl/ApprovalServiceImpl.java index e114229..d76e052 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/impl/ApprovalServiceImpl.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/impl/ApprovalServiceImpl.java @@ -38,7 +38,7 @@ public class ApprovalServiceImpl implements ApprovalService { final ReservationStatus status; if (userRoles.stream().anyMatch(r -> r.getCode().equals("LEADER"))) { step = ApprovalStep.LEADER; - status = dto.getIsApprove() ? ReservationStatus.APPROVED : ReservationStatus.REJECTED; + status = dto.getIsApprove() ? ReservationStatus.PENDING_DEVICE_ADMIN : ReservationStatus.REJECTED; } else if (userRoles.stream().anyMatch(r -> r.getCode().equals("DEVICE_ADMIN"))){ step = ApprovalStep.DEVICE_ADMIN; if (dto.getIsApprove()) { @@ -62,7 +62,7 @@ public class ApprovalServiceImpl implements ApprovalService { } @Override - public IPage getLeaderApproval(Page pageRequest, Long userId, String applicantName, String deviceName) { - return approvalMapper.getLeaderApproval(pageRequest, userId, applicantName, deviceName); + public IPage getApproval(Page pageRequest, Long userId, String applicantName, String deviceName) { + return approvalMapper.getApproval(pageRequest, userId, applicantName, deviceName); } } diff --git a/src/main/java/github/benjamin/equipreservebackend/service/impl/ReservationServiceImpl.java b/src/main/java/github/benjamin/equipreservebackend/service/impl/ReservationServiceImpl.java index 6292970..02f7881 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/impl/ReservationServiceImpl.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/impl/ReservationServiceImpl.java @@ -90,19 +90,14 @@ public class ReservationServiceImpl implements ReservationService { Page res = PageUtil.copyPage(reservations); List vos; - if (deviceAdminIDs.isEmpty()) { - vos = reservations.getRecords().stream() - .map(reservation -> new UserReservationVO(reservation, deviceNameMap)) - .toList(); - } else { - Map deviceAdminMap = userMapper.selectList(new LambdaQueryWrapper() - .in(User::getId, deviceAdminIDs)) - .stream() - .collect(Collectors.toMap(User::getId, Function.identity())); - vos = reservations.getRecords().stream() - .map(reservation -> new UserReservationVO(reservation, deviceNameMap, deviceAdminMap)) - .toList(); - } + Map deviceAdminMap = userMapper.selectList(new LambdaQueryWrapper() + .in(User::getId, deviceAdminIDs)) + .stream() + .collect(Collectors.toMap(User::getId, Function.identity())); + + vos = reservations.getRecords().stream() + .map(reservation -> new UserReservationVO(reservation, deviceNameMap, deviceAdminMap)) + .toList(); res.setRecords(vos); return res; } diff --git a/src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java b/src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java index 1d5fb1d..7a21892 100644 --- a/src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java +++ b/src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java @@ -18,5 +18,6 @@ public class LeaderApprovalVO { private LocalDate startTime; private LocalDate endTime; private Integer decision; + private String status; } diff --git a/src/main/java/github/benjamin/equipreservebackend/vo/UserReservationVO.java b/src/main/java/github/benjamin/equipreservebackend/vo/UserReservationVO.java index f34db16..922a64d 100644 --- a/src/main/java/github/benjamin/equipreservebackend/vo/UserReservationVO.java +++ b/src/main/java/github/benjamin/equipreservebackend/vo/UserReservationVO.java @@ -24,23 +24,17 @@ public class UserReservationVO { private String deviceAdminContact; private LocalDateTime createdTime; - public UserReservationVO(Reservation r, Map deviceNameMap) { + + public UserReservationVO(Reservation r, Map deviceNameMap, Map deviceAdminMap) { this.reservationId = r.getId().toString(); this.deviceName = deviceNameMap.get(r.getDeviceId()); this.startTime = r.getStartTime(); this.endTime = r.getEndTime(); this.statusLabel = ReservationStatus.valueOf(r.getStatus()).getLabel(); + User deviceAdmin = deviceAdminMap.get(r.getDeviceAdminId()); + this.deviceAdminName = deviceAdmin.getName(); + this.deviceAdminContact = deviceAdmin.getPhone(); this.createdTime = r.getCreatedTime(); - } - - public UserReservationVO(Reservation r, Map deviceNameMap, Map deviceAdminMap) { - this(r, deviceNameMap); - ReservationStatus status = ReservationStatus.valueOf(r.getStatus()); - if (status == ReservationStatus.APPROVED_ASSIST) { - User deviceAdmin = deviceAdminMap.get(r.getDeviceAdminId()); - this.deviceAdminName = deviceAdmin.getName(); - this.deviceAdminContact = deviceAdmin.getPhone(); - } } } diff --git a/src/main/resources/mapper/ApprovalMapper.xml b/src/main/resources/mapper/ApprovalMapper.xml index 83fb603..a919672 100644 --- a/src/main/resources/mapper/ApprovalMapper.xml +++ b/src/main/resources/mapper/ApprovalMapper.xml @@ -4,8 +4,8 @@ - + SELECT a.id as approvalId, r.applicant_name, r.applicant_team, r.applicant_contact, d.name as deviceName, r.start_time, r.end_time, a.decision, r.status FROM approvals a LEFT JOIN reservations r ON a.reservation_id = r.id LEFT JOIN devices d ON r.device_id = d.id