[#7] FEAT: '본인/다른유저 프로필 조회 API'의 응답값에, 추천인 전화번호 추가#72
Conversation
There was a problem hiding this comment.
Pull request overview
본인 프로필 조회 API 응답에 “추천인(Referrer) 전화번호”를 포함시키기 위한 변경입니다.
Changes:
UserProfileResponse에referrerPhoneNumber필드 추가/profile/my응답 생성 시 추천인 전화번호를 조회하여 매핑GetUserDataService에 추천인 전화번호 조회 로직 및 관련 테스트 의존성 주입 반영
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/main/java/greenfirst/be/user/application/service/GetUserDataService.java | 추천인(파트너 관계 기반) 전화번호 조회 메서드 및 의존성 추가 |
| src/main/java/greenfirst/be/user/adapter/in/web/response/UserProfileResponse.java | 응답 DTO에 referrerPhoneNumber 필드 추가 |
| src/main/java/greenfirst/be/user/adapter/in/web/controller/GetUserDataController.java | /profile/my에서 추천인 전화번호 조회/매핑 추가 |
| src/test/java/greenfirst/be/user/application/GetUserDataServiceUnitTest.java | GetUserDataService 생성자 변경에 맞춰 테스트 세팅 수정 |
| src/test/java/greenfirst/be/user/application/facade/PartnerRelationshipFacadeUnitTest.java | GetUserDataService 생성자 변경에 맞춰 테스트 세팅 수정 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // 8. 파트너 추천인 전화번호 조회 | ||
| public String getReferrerPhoneNumber(UUID partnerUuid) { | ||
| if (partnerUuid == null) { | ||
| return null; | ||
| } | ||
|
|
||
| Optional<PartnerRelationship> relationshipOptional = getPartnerRelationshipDataService.getPartnerRelationshipDataOptional(partnerUuid); |
There was a problem hiding this comment.
getReferrerPhoneNumber(UUID partnerUuid) is invoked from the controller with a generic userUuid, and the logic also works for non-partner users (it just returns null). To avoid confusion for future callers, consider renaming the parameter (and/or method) to reflect the accepted input (e.g., userUuid or targetUserUuid), or make it explicitly partner-only and enforce that contract.
| // 8. 파트너 추천인 전화번호 조회 | |
| public String getReferrerPhoneNumber(UUID partnerUuid) { | |
| if (partnerUuid == null) { | |
| return null; | |
| } | |
| Optional<PartnerRelationship> relationshipOptional = getPartnerRelationshipDataService.getPartnerRelationshipDataOptional(partnerUuid); | |
| // 8. 유저 추천인 전화번호 조회 | |
| public String getReferrerPhoneNumber(UUID userUuid) { | |
| if (userUuid == null) { | |
| return null; | |
| } | |
| Optional<PartnerRelationship> relationshipOptional = getPartnerRelationshipDataService.getPartnerRelationshipDataOptional(userUuid); |
| // 8. 파트너 추천인 전화번호 조회 | ||
| public String getReferrerPhoneNumber(UUID partnerUuid) { | ||
| if (partnerUuid == null) { | ||
| return null; | ||
| } | ||
|
|
||
| Optional<PartnerRelationship> relationshipOptional = getPartnerRelationshipDataService.getPartnerRelationshipDataOptional(partnerUuid); | ||
| if (relationshipOptional.isEmpty()) { | ||
| return null; | ||
| } | ||
|
|
||
| UUID referrerUuid = relationshipOptional.get().getReferrerUuid(); | ||
| if (referrerUuid == null) { | ||
| return null; | ||
| } | ||
|
|
||
| List<Users> referrerCandidates = userQueryRepository.getUsersByUuidInList(List.of(referrerUuid)); | ||
| if (referrerCandidates.isEmpty()) { | ||
| return null; | ||
| } | ||
|
|
||
| return referrerCandidates.get(0).getUserPhoneNumber(); | ||
| } |
There was a problem hiding this comment.
New behavior in getReferrerPhoneNumber(...) isn’t covered by unit tests in this file. Please add tests for at least: (1) no PartnerRelationship -> null, (2) relationship exists but referrerUuid is null -> null, and (3) relationship + referrer user exists -> returns the referrer’s phone number.
| // 추천인 전화번호 조회 | ||
| String referrerPhoneNumber = getUserDataService.getReferrerPhoneNumber(user.getUserUuid()); | ||
|
|
||
| // mapping | ||
| UserProfileResponse response = modelMapper.map(user, UserProfileResponse.class) | ||
| .toBuilder() | ||
| .vehicleNumber(vehicleNumber) | ||
| .referrerPhoneNumber(referrerPhoneNumber) | ||
| .build(); |
There was a problem hiding this comment.
UserProfileResponse now includes referrerPhoneNumber, but only /profile/my populates it; /profile/{userUuid} still returns the same response type and will leave this field null (and likely still serialized). Either populate referrerPhoneNumber for the other profile endpoint as well, or split the response DTOs / adjust JSON inclusion so the field doesn’t appear for endpoints that don’t support it.
00975d4 to
5d1a103
Compare
Issue ✨
변경점 👍