diff --git a/src/main/java/young/blaybus/domain/matching/controller/MatchingController.java b/src/main/java/young/blaybus/domain/matching/controller/MatchingController.java index 11bece5..191c0b4 100644 --- a/src/main/java/young/blaybus/domain/matching/controller/MatchingController.java +++ b/src/main/java/young/blaybus/domain/matching/controller/MatchingController.java @@ -20,9 +20,9 @@ public class MatchingController { private final MatchingService matchingService; - // 매칭 요청 POST + // 매칭 요청 @PostMapping(value = "/request/{worker-id}/{senior-id}") - @Operation(summary = "매칭 요청") + @Operation(summary = "(관리자) 매칭 요청") public ApiResponse request( @PathVariable("senior-id") String seniorId, @PathVariable("worker-id") String workerId @@ -33,7 +33,7 @@ public ApiResponse request( // 매칭 현황 조회 @GetMapping(value = "/statistics") - @Operation(summary = "매칭 현황 조회") + @Operation(summary = "(요양보호사) 매칭 현황 조회") @ApiResponses(value = { @io.swagger.v3.oas.annotations.responses.ApiResponse( responseCode = "200", @@ -46,7 +46,7 @@ public ApiResponse get() { // 관리자 쪽에서 요양보호사 매칭 현황 조회 @GetMapping(value = "/request/senior/list") - @Operation(summary = "어르신 매칭 요청 목록 조회") + @Operation(summary = "(요양보호사) 어르신 매칭 요청 목록 조회") @ApiResponses(value = { @io.swagger.v3.oas.annotations.responses.ApiResponse( responseCode = "200", @@ -57,9 +57,22 @@ public ApiResponse getMatchingSeniorList() { return ApiResponse.onSuccess(matchingService.getMatchingSeniorList()); } - // 수락/거절/조율요청에 따라 Matching 테이블 내 status 컬럼 수정 + // 관리자 쪽에서 매칭중인 어르신 목록 조회 + @GetMapping(value = "/senior/list") + @Operation(summary = "(관리자) 매칭중인 어르신 목록 조회") + @ApiResponses(value = { + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "200", + content = @Content(schema = @Schema(implementation = GetProgressMatchingSeniorList.class)) + ) + }) + public ApiResponse getMatchingSeniors() { + return ApiResponse.onSuccess(matchingService.getMatchingSeniors()); + } + + // Matching 테이블 내 status 컬럼 수정 @PatchMapping(value = "/status/update") - @Operation(summary = "매칭 상태 수정") + @Operation(summary = "(요양보호사) 매칭 상태 수정") public ApiResponse update(@RequestBody PatchStatusRequest statusRequest) { matchingService.matchingStatusPatch(statusRequest); return ApiResponse.onSuccess(); diff --git a/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniorList.java b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniorList.java new file mode 100644 index 0000000..5f8652c --- /dev/null +++ b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniorList.java @@ -0,0 +1,18 @@ +package young.blaybus.domain.matching.controller.response; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.List; + +@Getter +@Builder +@Setter +@ToString +@AllArgsConstructor +@Schema(description = "매칭중인 어르신 목록 조회 응답 객체") +public class GetProgressMatchingSeniorList { + + @Schema(description = "매칭중인 어르신 목록") + private List seniorList; +} diff --git a/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniors.java b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniors.java new file mode 100644 index 0000000..c60ac54 --- /dev/null +++ b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniors.java @@ -0,0 +1,33 @@ +package young.blaybus.domain.matching.controller.response; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@Builder +@ToString +@AllArgsConstructor +@Schema(description = "매칭 진행중인 어르신 조회 응답 객체") +public class GetProgressMatchingSeniors { + + @Schema(description = "어르신 ID") + private String seniorId; + + @Schema(description = "프로필 사진") + private String profileUrl; + + @Schema(description = "성함") + private String name; + + @Schema(description = "성별") + private String sex; + + @Schema(description = "생년월일") + private String birthday; + + @Schema(description = "주소") + private String address; +} diff --git a/src/main/java/young/blaybus/domain/matching/service/MatchingService.java b/src/main/java/young/blaybus/domain/matching/service/MatchingService.java index 0e54f18..2b284a9 100644 --- a/src/main/java/young/blaybus/domain/matching/service/MatchingService.java +++ b/src/main/java/young/blaybus/domain/matching/service/MatchingService.java @@ -3,16 +3,12 @@ import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import young.blaybus.domain.certificate.Certificate; -import young.blaybus.domain.certificate.repository.CertificateRepository; -import young.blaybus.domain.certificate.request.CreateCertificateRequest; import young.blaybus.domain.matching.Matching; import young.blaybus.domain.matching.controller.request.PatchStatusRequest; import young.blaybus.domain.matching.controller.response.*; import young.blaybus.domain.matching.enums.MatchingStatus; import young.blaybus.domain.matching.repository.MatchingRepository; import young.blaybus.domain.member.Member; -import young.blaybus.domain.member.controller.response.GetMember; import young.blaybus.domain.member.repository.MemberRepository; import young.blaybus.domain.member.security.SecurityUtils; import young.blaybus.domain.senior.Senior; @@ -33,10 +29,9 @@ public class MatchingService { private final MemberRepository memberRepository; private final SeniorRepository seniorRepository; private final MatchingRepository matchingRepository; - private final CertificateRepository certificateRepository; // 매칭 요청 - @Transactional(rollbackOn = Exception.class) + @Transactional public void matchingRequest(String workerId, long seniorId) { Member member = memberRepository.findById(workerId).orElse(null); Senior senior = seniorRepository.findById(seniorId).orElse(null); @@ -52,7 +47,7 @@ public void matchingRequest(String workerId, long seniorId) { } // 매칭 현황 조회 (특정) - @Transactional(rollbackOn = Exception.class) + @Transactional public GetMatchingStatistics getMatching() { String workerId = SecurityUtils.getCurrentMemberName(); Member member = memberRepository.findById(workerId).orElse(null); @@ -85,7 +80,7 @@ public GetMatchingStatistics getMatching() { } // 매칭 현황 어르신 리스트 조회 -> 요양보호사 쪽에서 어르신 매칭 요청 조회 - @Transactional(rollbackOn = Exception.class) + @Transactional public List getMatchingSeniorList() { String workerId = SecurityUtils.getCurrentMemberName(); List matching = matchingRepository.findByMember_Id(workerId); @@ -115,7 +110,7 @@ public List getMatchingSeniorList() { } // 매칭 상태 수정 - @Transactional(rollbackOn = Exception.class) + @Transactional public void matchingStatusPatch(PatchStatusRequest statusRequest) { String workerId = SecurityUtils.getCurrentMemberName(); Matching matching = matchingRepository.findBySenior_IdAndMember_Id(Long.parseLong(statusRequest.seniorId()), workerId); @@ -130,4 +125,38 @@ public void matchingStatusPatch(PatchStatusRequest statusRequest) { matchingRepository.save(matchingUpdateObject); } + // 매칭중인 어르신 목록 조회 + @Transactional + public GetProgressMatchingSeniorList getMatchingSeniors() { + String adminId = SecurityUtils.getCurrentMemberName(); + Member member = memberRepository.findById(adminId).orElse(null); + + List seniorsList = new ArrayList<>(); + if (member != null) { + List center = seniorRepository.findByCenterId(member.getCenter().getId()); + center.forEach(s -> { + List matching = matchingRepository.findBySenior_Id(s.getId()); + matching.forEach(m -> { + if (m.getStatus().equals(MatchingStatus.PENDING)) { + seniorsList.add( + GetProgressMatchingSeniors.builder() + .seniorId(String.valueOf(s.getId())) + .profileUrl(s.getProfileUrl()) + .name(s.getName()) + .sex(s.getSex().name()) + .birthday(s.getBirthday().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"))) + .address(s.getAddress()) + .build() + ); + } + }); + }); + + } + + return GetProgressMatchingSeniorList.builder() + .seniorList(seniorsList) + .build(); + } + } diff --git a/src/main/java/young/blaybus/domain/senior/repository/SeniorRepository.java b/src/main/java/young/blaybus/domain/senior/repository/SeniorRepository.java index ab13384..c34cb7e 100644 --- a/src/main/java/young/blaybus/domain/senior/repository/SeniorRepository.java +++ b/src/main/java/young/blaybus/domain/senior/repository/SeniorRepository.java @@ -3,6 +3,8 @@ import org.springframework.data.jpa.repository.JpaRepository; import young.blaybus.domain.senior.Senior; -public interface SeniorRepository extends JpaRepository { +import java.util.List; +public interface SeniorRepository extends JpaRepository { + List findByCenterId(Long centerId); } diff --git a/src/main/java/young/blaybus/domain/senior/service/CreateSeniorService.java b/src/main/java/young/blaybus/domain/senior/service/CreateSeniorService.java index 1e4d635..2a7f7db 100644 --- a/src/main/java/young/blaybus/domain/senior/service/CreateSeniorService.java +++ b/src/main/java/young/blaybus/domain/senior/service/CreateSeniorService.java @@ -37,8 +37,7 @@ public void createSenior(CreateSeniorRequest request) { .orElseThrow(() -> new GeneralException(ErrorStatus.UNAUTHORIZED)); String profileUrl = "https://theaverageagegottenyounger.s3.ap-northeast-2.amazonaws.com/blaybus-basic-profile-image.png"; - boolean isProfileUrl = StringUtils.hasText(request.profileUrl()); - if (isProfileUrl) profileUrl = request.profileUrl(); + if (StringUtils.hasText(request.profileUrl())) profileUrl = request.profileUrl(); Senior senior = Senior.builder() .name(request.name()) @@ -61,8 +60,7 @@ public void updateSenior(Long seniorId, UpdateSeniorRequest request) { .orElseThrow(() -> new GeneralException(ErrorStatus.KEY_NOT_EXIST, "존재하지 않는 어르신 ID입니다.")); String profileUrl = senior.getProfileUrl(); - boolean isProfileUrl = StringUtils.hasText(request.profileUrl()); - if (isProfileUrl) profileUrl = request.profileUrl(); + if (StringUtils.hasText(request.profileUrl())) profileUrl = request.profileUrl(); senior.toBuilder() .name(request.name())