From c7aa2108a50f03e620177e08fea5ab9d8d564640 Mon Sep 17 00:00:00 2001 From: Jooyunbin Date: Tue, 31 Mar 2026 16:31:56 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feature/KD-75=20:=20=EC=A1=B8=EC=97=85?= =?UTF-8?q?=EB=8C=80=EC=83=81=EC=9E=90=20=EC=83=81=EC=84=B8=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=EC=8B=9C=20phon=EC=BB=AC=EB=9F=BC=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/GraduationUserAdminFacade.java | 6 +++++- .../response/GraduationUserDetailResponse.java | 5 +++++ .../application/GraduationUserAdminFacadeTest.java | 13 +++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) 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..18f737fb 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,8 @@ 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 lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; @@ -47,6 +49,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 +139,9 @@ public void deleteGraduationUser(Long id) { public GraduationUserDetailResponse getGraduationUserById(Long graduationUserId) { GraduationUser graduationUser = graduationUserQueryService.getById(graduationUserId); + User user = userQueryService.getUserById(graduationUser.getUserId()); GraduationUserStatusResponse status = buildSubmissionStatus(graduationUser); - return GraduationUserDetailResponse.from(graduationUser, status); + return GraduationUserDetailResponse.from(graduationUser,user.getPhone() ,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..80d5b14f 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,7 @@ public void getGrduationUserById_Success() { //then assertEquals(result.studentId(),graduationUser1.getUserId()); + assertEquals("010-1111-2222", result.phone()); } @Test From 0f6b2cb3942bc14982631b0fedf47e7888595de2 Mon Sep 17 00:00:00 2001 From: Jooyunbin Date: Tue, 31 Mar 2026 22:43:12 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix/KD-75=20:=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=EA=B0=80=20=EC=95=84=EC=A7=81=20=EA=B0=80=EC=9E=85=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=95=98=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=EC=A1=B0=ED=9A=8C=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=EC=9D=B4=20=EC=8B=A4=ED=8C=A8=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/GraduationUserAdminFacade.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 18f737fb..fc7fc76c 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 @@ -30,6 +30,7 @@ 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; @@ -139,9 +140,15 @@ public void deleteGraduationUser(Long id) { public GraduationUserDetailResponse getGraduationUserById(Long graduationUserId) { GraduationUser graduationUser = graduationUserQueryService.getById(graduationUserId); - User user = userQueryService.getUserById(graduationUser.getUserId()); + String phone = ""; + try { + User user = userQueryService.getUserById(graduationUser.getUserId()); + phone = user.getPhone() != null ? user.getPhone() : ""; + } catch (UserNotFoundException ignored) { + } GraduationUserStatusResponse status = buildSubmissionStatus(graduationUser); - return GraduationUserDetailResponse.from(graduationUser,user.getPhone() ,status); + + return GraduationUserDetailResponse.from(graduationUser,phone ,status); } public GraduationUserBatchDeleteResponse deleteGraduationUsers(GraduationUserBatchDeleteRequest request) { From def91a43cd035a3f5dd32e10698d1bff8a70fad9 Mon Sep 17 00:00:00 2001 From: Jooyunbin Date: Tue, 31 Mar 2026 22:44:33 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feature/KD-75=20:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/GraduationUserAdminFacadeTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java b/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java index 80d5b14f..49a06639 100644 --- a/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java +++ b/aics-admin/src/testFixtures/java/graduationUser/application/GraduationUserAdminFacadeTest.java @@ -286,6 +286,20 @@ public void getGrduationUserById_Success() { 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 @DisplayName("deleteGraduationUsers는 여러 GraduationUser를 삭제한다.") public void deleteGraduationUsers_Success() { From 910aea25ebde7abfcef87d894fca67c482fde383 Mon Sep 17 00:00:00 2001 From: Jooyunbin Date: Wed, 1 Apr 2026 09:08:00 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor/KD-75=20:=20userQueryServic=20find?= =?UTF-8?q?ById=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/GraduationUserAdminFacade.java | 11 ++++------- .../user/application/query/UserQueryService.java | 4 ++++ 2 files changed, 8 insertions(+), 7 deletions(-) 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 fc7fc76c..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 @@ -140,14 +140,11 @@ public void deleteGraduationUser(Long id) { public GraduationUserDetailResponse getGraduationUserById(Long graduationUserId) { GraduationUser graduationUser = graduationUserQueryService.getById(graduationUserId); - String phone = ""; - try { - User user = userQueryService.getUserById(graduationUser.getUserId()); - phone = user.getPhone() != null ? user.getPhone() : ""; - } catch (UserNotFoundException ignored) { - } - GraduationUserStatusResponse status = buildSubmissionStatus(graduationUser); + String phone = userQueryService.findById(graduationUser.getUserId()) + .map(User::getPhone) + .orElse(""); + GraduationUserStatusResponse status = buildSubmissionStatus(graduationUser); return GraduationUserDetailResponse.from(graduationUser,phone ,status); } 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); + } }