From a89d4520745d9dc7679a705db26729a214bd70b3 Mon Sep 17 00:00:00 2001 From: BenjaminNH <1249376374@qq.com> Date: Mon, 30 Jun 2025 17:20:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E5=A4=8D=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=A2=84=E7=BA=A6=E5=88=97=E8=A1=A8=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86=E5=91=98=E5=92=8C?= =?UTF-8?q?=E5=9B=A2=E9=98=9F=E8=B4=9F=E8=B4=A3=E4=BA=BA=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=9D=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/ReservationStatus.java | 4 ++-- .../controller/ApprovalController.java | 8 +++---- .../mapper/ApprovalMapper.java | 2 +- .../service/ApprovalService.java | 2 +- .../service/impl/ApprovalServiceImpl.java | 6 +++--- .../service/impl/ReservationServiceImpl.java | 21 +++++++------------ .../vo/LeaderApprovalVO.java | 1 + .../vo/UserReservationVO.java | 16 +++++--------- src/main/resources/mapper/ApprovalMapper.xml | 4 ++-- 9 files changed, 27 insertions(+), 37 deletions(-) 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