Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] 마이페이지 API 구현 #124

Merged
merged 9 commits into from
Feb 11, 2024
Merged

[FEAT] 마이페이지 API 구현 #124

merged 9 commits into from
Feb 11, 2024

Conversation

jun02160
Copy link
Member

@jun02160 jun02160 commented Feb 10, 2024

📌 관련 이슈

closed #117

✨ 어떤 이유로 변경된 내용인지

마이페이지의 유저와 매칭 유저(부모-자식) 정보를 반환하는 API 개발

  • ParentchildRelation ENUM에서 유저의 성별과 자식 여부에 따른 유형을 반환하는 로직 추가 -> _user_type으로 반환
  • '나'로 표시되는 부분을 구분하기 위한 isMeChild 필드도 함께 반환하도록 했습니다!

Test 결과

  • 매칭 이후
image
  • 매칭 전
image

🙏 검토 혹은 리뷰어에게 남기고 싶은 말

  • API 명세서 추가해뒀으니 확인 바랍니다 :)
  • 상대 미연결인 부분에 대한 반환값은 뷰 나오는 대로 추가하여 반영하겠습니다!

# 제목을 아랫줄에 작성, 제목 끝에 마침표 금지, 무엇을 했는지 명확하게 작성

################
# 본문(추가 설명)을 아랫줄에 작성

################
# 꼬릿말(footer)을 아랫줄에 작성 (관련된 이슈 번호 등 추가)

################
# 아이콘	코드	     설명
# 🎨 style:      코드의 구조/형태 개선
# 🔥 remove:      코드/파일 삭제
# 🐛 bugfix:      버그 수정
# 🚑 hotfix:      긴급 수정
# ✨ feat:      새로운 기능 구현
# 📝 docs:      문서 추가/수정
# 🎉 init:      프로젝트 시작
# ✅ test:      테스트 추가/수정
# 🔖 release:      릴리즈/버전 태그
# 🔧 chore:      동작에 영향 없는 코드 or 변경 없는 변경사항(주석 추가 등) or 디렉토리 구조 변경
# ♻️  refactor:      코드 리팩토링, 전면 수정
# ⚡️ fix:      간단한 수정
################
@jun02160 jun02160 added 🔥 Pull Request PR 날림 예준🍒 ✨Feat 새로운 기능 추가 🪄API 서버 API 통신 labels Feb 10, 2024
@jun02160 jun02160 requested review from ddongseop and 0lynny February 10, 2024 11:17
@jun02160 jun02160 self-assigned this Feb 10, 2024
Copy link
Member

@0lynny 0lynny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아들 최영린입니다~ 설날 작업 넘 수고 많으셨습니다앙

Comment on lines 65 to 66
if (isChild) return "딸";
else return "엄마";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p5;
갠취이긴 하지만 삼항연산자로 뺴도 좋아보여요!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋은 의견 감사합니다 !!!

@@ -227,7 +264,7 @@ private List<QnA> getQnAListByParentchild(Parentchild parentchild) {
return qnaList;
}

private QnA getTodayQnAByParentchild(Parentchild parentchild) {
protected QnA getTodayQnAByParentchild(Parentchild parentchild) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

q;
protected로 하신 이유가 궁금합니다~!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

흠흠 이게 긴 사연이 있는데요!! 일단 잘못 들어간 게 맞구요 ㅎㅎ

바꾸게 된 과정에 대해 설명을 드려보자면,

  1. 원래 유저 정보 조회를 QnAService 보다는 다른 서비스 클래스로 분리하는 게 맞다고 생각해서 기능 상으로 도메인이 더 부합한 ParentchildService에서 구현을 하고자 했습니다!
  2. 하지만 오늘의 질문, Parentchild 조회 등 동일한 로직이 QnAService에 여럿 쓰이고 있어 해당 로직을 protected로 열어두고 호출하려 했으나,, Service에서 다른 Service를 의존하는 상황 자체가 순환 참조를 발생시킬 우려가 있다고 판단했습니다.
  3. 결론! 일단 QnAService에서 구현을 해두고 주로 쓰이는 QnAService의 조회 로직을 분리하기 위해 전면 리팩토링을 진행하기로 했습니다 허헛
  4. 그래서 다시 private으로 바꾸겠습니다 .. 감사합니다!!

Copy link
Contributor

@ddongseop ddongseop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

바쁜 와중에도 수고했슴당 🔥

Comment on lines 23 to 27
"/kakao/**", "/login", "/reissue",
"/qna/**", "onboard/**", "/home", "/dummy",
"/qna/**", "onboard/**", "/home", "/dummy", "/user/me",
// "/log-out",
"/test", "/profile", "/health", "/actuator/health",
"/alarm/qna", "/alarm/drink",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

생각해보니까 인증이 필요 없는 API들만 여기 추가되어야하는건데,
일단 테스트를 위해 다 추가해놨던게 그대로 있었네요 ...
다음에 한번에 싹 빼는걸로 합시당

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

맞아요 ,,ㅋㅋㅋㅋ 좋습니당

@@ -7,6 +7,8 @@ build/
!**/src/main/**/build/
!**/src/test/**/build/

umbba-test.http
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

포스트맨이 아니라 IntelliJ의 .http 테스트 활용하신건가요!
신기해서 저도 찾아봤습니당
https://ksh-coding.tistory.com/97

@@ -0,0 +1 @@
.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요건 무슨 용도의 파일인가요!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어엇 잘못 들어간 파일 같네요 삭제하겠습니다 !!

Comment on lines 63 to 71
public static String getUserType(ParentchildRelation relation, boolean isChild) {
if (relation.childGender.equals("여자")) {
if (isChild) return "딸";
else return "엄마";
} else {
if (isChild) return "아들";
else return "아빠";
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지금 예시로 있는 DB가 딱 그런 케이슨데요 (어쩌다보니)
초대하는 측에서 분명 엄마랑 하겠다고 골랐는데, 초대 받는 상대가 자기 성별을 남자로 골라버린 경우죠
이 경우 성별이 남자여도 엄마로 표시하기로 정했던 것 같습니다 (사회적으로는 엄마일...수도.. 있으니까요?)

암튼 그래서 지금 DB에 엄마-아들 관계로 되어 있음 + 둘다 성별은 남자임 이런 상태인데
my_user_type을 아빠가 아닌 엄마로 표시해줄 수 있도록! 로직이 수정되면 좋을것 같습니다!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네넵 그럼 User의 gender 필드 기준이 아닌, relation에 저장된 값과 isChild 기준으로 반환하는 로직으로 수정하겠습니다!!

Comment on lines 230 to 232
long qnaCnt = qnaList.stream()
.filter(qnA -> qnA.isChildAnswer() && qnA.isParentAnswer())
.count();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DB 수정 완료해서 getCount만으로 처리해도 될것같습니다!

@@ -59,6 +59,15 @@ public static ParentchildRelation relation(String gender, String relationInfo, b
throw new CustomException(ErrorType.INVALID_PARENT_CHILD_RELATION_INFO);
}

// 아들 | 딸 | 엄마 | 아빠 구분
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아주 좋습니당!

@jun02160 jun02160 merged commit 2261d87 into develop Feb 11, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
예준🍒 🪄API 서버 API 통신 ✨Feat 새로운 기능 추가 🔥 Pull Request PR 날림
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEAT] 마이페이지 API
3 participants