From caf903114e23fc44419a187e962395bc8bf13f52 Mon Sep 17 00:00:00 2001 From: BenjaminNH <1249376374@qq.com> Date: Mon, 30 Jun 2025 10:23:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E8=B4=9F=E8=B4=A3=E4=BA=BA=E5=8E=86=E5=8F=B2=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApprovalController.java | 20 +++++++++++++---- .../mapper/ApprovalMapper.java | 10 +++++++++ .../service/ApprovalService.java | 6 +++++ .../service/impl/ApprovalServiceImpl.java | 9 ++++++++ .../vo/LeaderApprovalVO.java | 22 +++++++++++++++++++ src/main/resources/application-template.yaml | 6 ++++- src/main/resources/mapper/ApprovalMapper.xml | 22 +++++++++++++++++++ 7 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java create mode 100644 src/main/resources/mapper/ApprovalMapper.xml diff --git a/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java b/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java index bac6942..a4b13ae 100644 --- a/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java +++ b/src/main/java/github/benjamin/equipreservebackend/controller/ApprovalController.java @@ -1,14 +1,15 @@ package github.benjamin.equipreservebackend.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import github.benjamin.equipreservebackend.dto.LeaderApprovalDTO; +import github.benjamin.equipreservebackend.entity.Approval; import github.benjamin.equipreservebackend.response.ResponseResult; import github.benjamin.equipreservebackend.service.ApprovalService; +import github.benjamin.equipreservebackend.vo.LeaderApprovalVO; 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; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/approval") @@ -24,4 +25,15 @@ public class ApprovalController { return ResponseResult.success(); } + @PreAuthorize("hasRole('LEADER')") + @GetMapping("/leader/{id}") + public ResponseResult> getLeaderApproval(@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)); + } + } diff --git a/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java b/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java index 59c6a2e..876ed8d 100644 --- a/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java +++ b/src/main/java/github/benjamin/equipreservebackend/mapper/ApprovalMapper.java @@ -1,9 +1,19 @@ package github.benjamin.equipreservebackend.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import github.benjamin.equipreservebackend.entity.Approval; +import github.benjamin.equipreservebackend.vo.LeaderApprovalVO; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @Repository public interface ApprovalMapper extends BaseMapper { + + IPage getLeaderApproval(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 7f6191e..f6d6bbd 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/ApprovalService.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/ApprovalService.java @@ -1,7 +1,13 @@ package github.benjamin.equipreservebackend.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import github.benjamin.equipreservebackend.dto.LeaderApprovalDTO; +import github.benjamin.equipreservebackend.entity.Approval; +import github.benjamin.equipreservebackend.vo.LeaderApprovalVO; public interface ApprovalService { void addApproval(LeaderApprovalDTO dto); + + IPage getLeaderApproval(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 06aaa81..1754488 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/impl/ApprovalServiceImpl.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/impl/ApprovalServiceImpl.java @@ -1,6 +1,9 @@ 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; @@ -9,6 +12,7 @@ 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; @@ -33,4 +37,9 @@ public class ApprovalServiceImpl implements ApprovalService { .eq(Reservation::getId, dto.getReservationId()) .set(Reservation::getStatus, dto.getIsApprove() ? ReservationStatus.PENDING_DEVICE_ADMIN : ReservationStatus.REJECTED)); } + + @Override + public IPage getLeaderApproval(Page pageRequest, Long userId, String applicantName, String deviceName) { + return approvalMapper.getLeaderApproval(pageRequest, userId, applicantName, deviceName); + } } diff --git a/src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java b/src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java new file mode 100644 index 0000000..1d5fb1d --- /dev/null +++ b/src/main/java/github/benjamin/equipreservebackend/vo/LeaderApprovalVO.java @@ -0,0 +1,22 @@ +package github.benjamin.equipreservebackend.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class LeaderApprovalVO { + + @JsonSerialize(using = ToStringSerializer.class) + private Long approvalId; + private String applicantName; + private String applicantTeam; + private String applicantContact; + private String deviceName; + private LocalDate startTime; + private LocalDate endTime; + private Integer decision; + +} diff --git a/src/main/resources/application-template.yaml b/src/main/resources/application-template.yaml index d5c6a04..f3040f8 100644 --- a/src/main/resources/application-template.yaml +++ b/src/main/resources/application-template.yaml @@ -12,4 +12,8 @@ jwt: secret: your-secret equip-reserve: device-days: 7 - allowed-origins: http://localhost:5173 \ No newline at end of file + allowed-origins: http://localhost:5173 +mybatis-plus: + mapper-locations: classpath:mapper/*.xml + configuration: + map-underscore-to-camel-case: true \ No newline at end of file diff --git a/src/main/resources/mapper/ApprovalMapper.xml b/src/main/resources/mapper/ApprovalMapper.xml new file mode 100644 index 0000000..83fb603 --- /dev/null +++ b/src/main/resources/mapper/ApprovalMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file