From f7ec1f990391c302fcb03e9c4211bce376ea9243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EA=B2=BD=EB=AF=BC?= Date: Wed, 19 Feb 2025 00:13:31 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[UPDATE]=20=EB=A7=A4=EC=B9=AD=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20api=20-=20=EB=A7=A4=EC=B9=AD=20=EC=A7=84=ED=96=89?= =?UTF-8?q?=EC=A4=91=EC=9D=B8=20=EC=96=B4=EB=A5=B4=EC=8B=A0=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MatchingController.java | 21 ++++++++--- .../response/GetMatchingSeniors.java | 33 +++++++++++++++++ .../response/GetMatchingSeniorsList.java | 18 ++++++++++ .../matching/service/MatchingService.java | 35 +++++++++++++++++++ .../senior/repository/SeniorRepository.java | 4 ++- 5 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniors.java create mode 100644 src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniorsList.java 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..2c6efff 100644 --- a/src/main/java/young/blaybus/domain/matching/controller/MatchingController.java +++ b/src/main/java/young/blaybus/domain/matching/controller/MatchingController.java @@ -22,7 +22,7 @@ public class MatchingController { // 매칭 요청 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()); } + // 관리자 쪽에서 매칭중인 어르신 목록 조회 + @GetMapping(value = "/senior/list") + @Operation(summary = "(관리자) 매칭중인 어르신 목록 조회") + @ApiResponses(value = { + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "200", + content = @Content(schema = @Schema(implementation = GetMatchingSeniorsList.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/GetMatchingSeniors.java b/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniors.java new file mode 100644 index 0000000..6f82bb3 --- /dev/null +++ b/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniors.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 GetMatchingSeniors { + + @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/controller/response/GetMatchingSeniorsList.java b/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniorsList.java new file mode 100644 index 0000000..86c9c0d --- /dev/null +++ b/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniorsList.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 GetMatchingSeniorsList { + + @Schema(description = "매칭중인 어르신 목록") + private List seniorList; +} 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..b2a1e34 100644 --- a/src/main/java/young/blaybus/domain/matching/service/MatchingService.java +++ b/src/main/java/young/blaybus/domain/matching/service/MatchingService.java @@ -3,6 +3,7 @@ import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import young.blaybus.domain.center.Center; import young.blaybus.domain.certificate.Certificate; import young.blaybus.domain.certificate.repository.CertificateRepository; import young.blaybus.domain.certificate.request.CreateCertificateRequest; @@ -130,4 +131,38 @@ public void matchingStatusPatch(PatchStatusRequest statusRequest) { matchingRepository.save(matchingUpdateObject); } + // 매칭중인 어르신 목록 조회 + public GetMatchingSeniorsList getMatchingSeniors() { + String adminId = SecurityUtils.getCurrentMemberName(); + Member member = memberRepository.findById(adminId).orElse(null); + + List seniorsList = new ArrayList<>(); + if (member != null) { + long centerId = member.getCenter().getId(); + List center = seniorRepository.findByCenterId(centerId); + center.forEach(s -> { + List matching = matchingRepository.findBySenior_Id(s.getId()); + matching.forEach(m -> { + if (m.getStatus().equals(MatchingStatus.PENDING)) { + seniorsList.add( + GetMatchingSeniors.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 GetMatchingSeniorsList.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); } From 9032f518152e966fd784d1a509903fc7264226a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EA=B2=BD=EB=AF=BC?= Date: Wed, 19 Feb 2025 00:29:22 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[UPDATE]=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=EB=AA=85=20=EB=A6=AC=ED=8E=99=ED=86=A0=EB=A7=81=20=EB=B0=8F=20?= =?UTF-8?q?=EB=A7=A4=EC=B9=AD=EC=A4=91=EC=9D=B8=20=EC=96=B4=EB=A5=B4?= =?UTF-8?q?=EC=8B=A0=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MatchingController.java | 8 +++--- ...ava => GetProgressMatchingSeniorList.java} | 4 +-- ...s.java => GetProgressMatchingSeniors.java} | 2 +- .../matching/service/MatchingService.java | 26 +++++++------------ .../senior/service/CreateSeniorService.java | 6 ++--- 5 files changed, 19 insertions(+), 27 deletions(-) rename src/main/java/young/blaybus/domain/matching/controller/response/{GetMatchingSeniorsList.java => GetProgressMatchingSeniorList.java} (77%) rename src/main/java/young/blaybus/domain/matching/controller/response/{GetMatchingSeniors.java => GetProgressMatchingSeniors.java} (94%) 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 2c6efff..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,7 +20,7 @@ public class MatchingController { private final MatchingService matchingService; - // 매칭 요청 POST + // 매칭 요청 @PostMapping(value = "/request/{worker-id}/{senior-id}") @Operation(summary = "(관리자) 매칭 요청") public ApiResponse request( @@ -63,14 +63,14 @@ public ApiResponse getMatchingSeniorList() { @ApiResponses(value = { @io.swagger.v3.oas.annotations.responses.ApiResponse( responseCode = "200", - content = @Content(schema = @Schema(implementation = GetMatchingSeniorsList.class)) + content = @Content(schema = @Schema(implementation = GetProgressMatchingSeniorList.class)) ) }) - public ApiResponse getMatchingSeniors() { + public ApiResponse getMatchingSeniors() { return ApiResponse.onSuccess(matchingService.getMatchingSeniors()); } - // 수락/거절/조율요청에 따라 Matching 테이블 내 status 컬럼 수정 + // Matching 테이블 내 status 컬럼 수정 @PatchMapping(value = "/status/update") @Operation(summary = "(요양보호사) 매칭 상태 수정") public ApiResponse update(@RequestBody PatchStatusRequest statusRequest) { diff --git a/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniorsList.java b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniorList.java similarity index 77% rename from src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniorsList.java rename to src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniorList.java index 86c9c0d..5f8652c 100644 --- a/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniorsList.java +++ b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniorList.java @@ -11,8 +11,8 @@ @ToString @AllArgsConstructor @Schema(description = "매칭중인 어르신 목록 조회 응답 객체") -public class GetMatchingSeniorsList { +public class GetProgressMatchingSeniorList { @Schema(description = "매칭중인 어르신 목록") - private List seniorList; + private List seniorList; } diff --git a/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniors.java b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniors.java similarity index 94% rename from src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniors.java rename to src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniors.java index 6f82bb3..c60ac54 100644 --- a/src/main/java/young/blaybus/domain/matching/controller/response/GetMatchingSeniors.java +++ b/src/main/java/young/blaybus/domain/matching/controller/response/GetProgressMatchingSeniors.java @@ -11,7 +11,7 @@ @ToString @AllArgsConstructor @Schema(description = "매칭 진행중인 어르신 조회 응답 객체") -public class GetMatchingSeniors { +public class GetProgressMatchingSeniors { @Schema(description = "어르신 ID") private String seniorId; 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 b2a1e34..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,17 +3,12 @@ import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import young.blaybus.domain.center.Center; -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; @@ -34,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); @@ -53,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); @@ -86,7 +80,7 @@ public GetMatchingStatistics getMatching() { } // 매칭 현황 어르신 리스트 조회 -> 요양보호사 쪽에서 어르신 매칭 요청 조회 - @Transactional(rollbackOn = Exception.class) + @Transactional public List getMatchingSeniorList() { String workerId = SecurityUtils.getCurrentMemberName(); List matching = matchingRepository.findByMember_Id(workerId); @@ -116,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); @@ -132,20 +126,20 @@ public void matchingStatusPatch(PatchStatusRequest statusRequest) { } // 매칭중인 어르신 목록 조회 - public GetMatchingSeniorsList getMatchingSeniors() { + @Transactional + public GetProgressMatchingSeniorList getMatchingSeniors() { String adminId = SecurityUtils.getCurrentMemberName(); Member member = memberRepository.findById(adminId).orElse(null); - List seniorsList = new ArrayList<>(); + List seniorsList = new ArrayList<>(); if (member != null) { - long centerId = member.getCenter().getId(); - List center = seniorRepository.findByCenterId(centerId); + 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( - GetMatchingSeniors.builder() + GetProgressMatchingSeniors.builder() .seniorId(String.valueOf(s.getId())) .profileUrl(s.getProfileUrl()) .name(s.getName()) @@ -160,7 +154,7 @@ public GetMatchingSeniorsList getMatchingSeniors() { } - return GetMatchingSeniorsList.builder() + return GetProgressMatchingSeniorList.builder() .seniorList(seniorsList) .build(); } 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())