diff --git a/aics-admin/src/main/java/kgu/developers/admin/graduationUser/application/GraduationUserAdminFacade.java b/aics-admin/src/main/java/kgu/developers/admin/graduationUser/application/GraduationUserAdminFacade.java index 33e0d978..756263c7 100644 --- a/aics-admin/src/main/java/kgu/developers/admin/graduationUser/application/GraduationUserAdminFacade.java +++ b/aics-admin/src/main/java/kgu/developers/admin/graduationUser/application/GraduationUserAdminFacade.java @@ -28,6 +28,9 @@ import kgu.developers.domain.thesis.application.command.ThesisCommandService; import kgu.developers.domain.thesis.application.query.ThesisQueryService; import kgu.developers.domain.thesis.domain.Thesis; +import kgu.developers.domain.user.application.query.UserQueryService; +import kgu.developers.domain.user.domain.User; +import kgu.developers.domain.user.exception.UserNotFoundException; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; @@ -47,6 +50,7 @@ public class GraduationUserAdminFacade { private final ThesisQueryService thesisQueryService; private final CertificateCommandService certificateCommandService; private final CertificateQueryService certificateQueryService; + private final UserQueryService userQueryService; public GraduationUserPersistResponse createGraduationUser(GraduationUserCreateRequest request) { Long id = graduationUserCommandService.createGraduationUser(request.studentId(), request.name(), request.advisorProfessor(), request.capstoneCompletion(), request.department(), request.graduationDate()); @@ -136,8 +140,12 @@ public void deleteGraduationUser(Long id) { public GraduationUserDetailResponse getGraduationUserById(Long graduationUserId) { GraduationUser graduationUser = graduationUserQueryService.getById(graduationUserId); + String phone = userQueryService.findById(graduationUser.getUserId()) + .map(User::getPhone) + .orElse(""); + GraduationUserStatusResponse status = buildSubmissionStatus(graduationUser); - return GraduationUserDetailResponse.from(graduationUser, status); + return GraduationUserDetailResponse.from(graduationUser,phone ,status); } public GraduationUserBatchDeleteResponse deleteGraduationUsers(GraduationUserBatchDeleteRequest request) { diff --git a/aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserDetailResponse.java b/aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserDetailResponse.java index f9bb85a9..1fc04cd3 100644 --- a/aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserDetailResponse.java +++ b/aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserDetailResponse.java @@ -20,6 +20,9 @@ public record GraduationUserDetailResponse( @Schema(description = "학번(교번)", example = "202412345", requiredMode = REQUIRED) String studentId, + @Schema(description = "전화번호", example = "010-1234-5678", requiredMode = REQUIRED) + String phone, + @Schema(description = "졸업 날짜", example = "2028-08", requiredMode = REQUIRED) @DateTimeFormat(pattern = "yyyy-MM") String graduationDate, @@ -54,6 +57,7 @@ public record GraduationUserDetailResponse( ) { public static GraduationUserDetailResponse from( GraduationUser graduationUser, + String phone, GraduationUserStatusResponse status ) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); @@ -61,6 +65,7 @@ public static GraduationUserDetailResponse from( .graduationUserId(graduationUser.getId()) .name(graduationUser.getName()) .studentId(graduationUser.getUserId()) + .phone(phone) .graduationDate(graduationUser.getGraduationDate().format(formatter)) .advisor(graduationUser.getAdvisorProfessor()) .major(graduationUser.getDepartment()) diff --git a/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java b/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java index 9899151a..49a06639 100644 --- a/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java +++ b/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java @@ -51,6 +51,7 @@ import java.util.HashSet; import java.util.List; +import static kgu.developers.domain.user.domain.Major.CSE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -133,7 +134,13 @@ public void init() { .approval(false) .build() ); - + fakeUserRepository.save(User.builder() + .id("202411001") + .name("홍길동") + .phone("010-1111-2222") + .email("hong1@kyonggi.ac.kr") + .major(CSE) + .build()); graduationUserAdminFacade = new GraduationUserAdminFacade( @@ -142,7 +149,8 @@ public void init() { thesisCommandService, new ThesisQueryService(fakeThesisRepository), certificateCommandService, - new CertificateQueryService(fakeCertificateRepository) + new CertificateQueryService(fakeCertificateRepository), + userQueryService ); graduationUser1 = fakeGraduationUserRepository.save(GraduationUser.builder() @@ -275,6 +283,21 @@ public void getGrduationUserById_Success() { //then assertEquals(result.studentId(),graduationUser1.getUserId()); + assertEquals("010-1111-2222", result.phone()); + } + + @Test + @DisplayName("getGrduationUserById는 가입하지 않은 사용자의 전화번호를 빈 값으로 반환한다.") + public void getGrduationUserById_ReturnsEmptyPhoneWhenUserDoesNotExist() { + //given + Long graduationUserId = 2L; + + //when + GraduationUserDetailResponse result = graduationUserAdminFacade.getGraduationUserById(graduationUserId); + + //then + assertEquals(graduationUser2.getUserId(), result.studentId()); + assertEquals("", result.phone()); } @Test diff --git a/aics-domain/src/main/java/kgu/developers/domain/user/application/query/UserQueryService.java b/aics-domain/src/main/java/kgu/developers/domain/user/application/query/UserQueryService.java index 5006a538..8d5bf833 100644 --- a/aics-domain/src/main/java/kgu/developers/domain/user/application/query/UserQueryService.java +++ b/aics-domain/src/main/java/kgu/developers/domain/user/application/query/UserQueryService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; @Service @@ -59,4 +60,7 @@ public List getAllUsersByIds(List ids) { public Map getUserNameMapByIds(List authorIds) { return getAllUsersByIds(authorIds).stream().collect(Collectors.toMap(User::getId, User::getName)); } + public Optional findById(String userId) { + return userRepository.findById(userId); + } }