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

[COZY-410] 룸메이트 추천, 필터링, 상세 필터링 color 리턴 #194

Merged
merged 3 commits into from
Nov 30, 2024

Conversation

jpark0506
Copy link
Contributor

⚒️develop의 최신 커밋을 pull 받았나요?

#️⃣ 작업 내용

룸메이트 추천, 필터링, 상세 필터링에 color를 넣어 리턴했습니다.

동작 확인

image

💬 리뷰 요구사항(선택)

감사합니다다.

@jpark0506 jpark0506 added the enhancement New feature or request label Nov 29, 2024
@jpark0506 jpark0506 self-assigned this Nov 29, 2024
Copy link

리뷰해드려요~

FavoriteQueryService.java - 리뷰

  1. getFavoriteMemberList 메서드에서 MemberStatConverter.toPreferenceResponseDTO 메서드를 사용하여 FavoriteMemberResponseDTO 객체를 만드는 부분에서 Map<String, Object> preferences 객체를 생성하고 사용하는 부분이 제거되었습니다.
  2. getFavoriteMemberList 메서드에서 MemberStatConverter.toPreferenceResponseDTO 메서드를 사용하여 FavoriteMemberResponseDTO 객체를 만드는 부분에서 equalityMap.get(favoriteMember.getId()) 값을 사용하는 부분이 제거되었습니다.
  3. getFavoriteMemberList 메서드에서 MemberStatConverter.toPreferenceResponseDTO 메서드를 사용하여 FavoriteMemberResponseDTO 객체를 만드는 부분에서 favoriteMember.getMemberStat() 값을 사용하는 부분이 추가되었습니다.

MemberStatConverter.java - 리뷰

  1. toPreferenceResponseDTO 메서드에서 Map<String, Object> preferences 객체를 생성하고 사용하는 부분이 제거되었습니다.
  2. toPreferenceResponseDTO 메서드에서 Map<String, Object> preferences 객체를 사용하는 부분이 제거되었습니다.
  3. toPreferenceResponseDTO 메서드에서 MemberStatConverter.toMemberStatPreferenceDetailColorDTOList 메서드를 사용하여 List<MemberStatPreferenceDetailColorDTO> 객체를 만드는 부분이 추가되었습니다.

MemberStatPreferenceDetailColorDTO.java - 리뷰

  1. MemberStatPreferenceDetailColorDTO 객체가 새로 추가되었습니다.

MemberStatPreferenceResponseDTO.java - 리뷰

  1. MemberStatPreferenceResponseDTO 객체의 preferenceStats 필드에서 Map<String, Object> 타입을 List<MemberStatPreferenceDetailColorDTO> 타입으로 변경되었습니다.

MemberStatQueryService.java - 리뷰

  1. getMemberStatList 메서드와 getSearchedAndFilteredMemberStatList 메서드에서 MemberStatConverter.toPreferenceResponseDTO 메서드를 사용하여 MemberStatPreferenceResponseDTO 객체를 만드는 부분에서 criteriaMemberStat.getMember() 값을 사용하는 부분이 제거되었습니다.
  2. getMemberStatList 메서드와 getSearchedAndFilteredMemberStatList 메서드에서 MemberStatConverter.toPreferenceResponseDTO 메서드를 사용하여 MemberStatPreferenceResponseDTO 객체를 만드는 부분에서 MemberStatConverter.toMemberStatPreferenceDetailColorDTOList 메서드를 사용하는 부분이 추가되었습니다.

MemberStatUtil.java - 리뷰

  1. compareField 메서드가 새로 추가되었습니다.

추가 개선 사항:

  1. FavoriteQueryService.java 파일에서 deleteFavoriteMember 메서드를 호출하는 부분을 별도의 메서드로 분리하여 유지보수성을 높일 수 있습니다.
  2. MemberStatConverter.java 파일에서 toPreferenceResponseDTO 메서드에서 MemberStatConverter.toMemberStatPreferenceDetailColorDTOList 메서드를 호출하는 부분을 별도의 메서드로 분리하여 유지보수성을 높일 수 있습니다.
  3. MemberStatQueryService.java 파일에서 createMemberStatPreferenceResponse 메서드에서 MemberStatConverter.toPreferenceResponseDTO 메서드에서 MemberStatConverter.toMemberStatPreferenceDetailColorDTOList 메서드를 호출하는 부분을 별도의 메서드로 분리하여 유지보수성을 높일 수 있습니다.

Copy link
Contributor Author

@jpark0506 jpark0506 left a comment

Choose a reason for hiding this comment

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

감사합니다

Copy link
Contributor Author

Choose a reason for hiding this comment

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

새로운 DTO를 만들었슴다

Comment on lines +200 to +234

// 랜덤에서 사용하는 Converter
public static List<MemberStatPreferenceDetailColorDTO> toMemberStatPreferenceDetailColorDTOList(
MemberStat memberStat, List<String> preferences
){
Map<String, Object> memberStatMap = MemberStatUtil.getMemberStatFields(memberStat, preferences);

return memberStatMap.entrySet().stream()
.map(entry ->
MemberStatConverter.toMemberStatPreferenceDetailColorDTO(entry.getKey(), entry.getValue(), DifferenceStatus.WHITE))
.toList();
}

// 일반 검색/ 필터링에서 사용하는 Converter
public static List<MemberStatPreferenceDetailColorDTO> toMemberStatPreferenceDetailColorDTOList(
MemberStat memberStat, MemberStat criteriaMemberStat, List<String> preferences
){
Map<String, Object> memberStatMap = MemberStatUtil.getMemberStatFields(memberStat, preferences);
Map<String, Object> criteriaMemberStatMap = MemberStatUtil.getMemberStatFields(criteriaMemberStat, preferences);

return memberStatMap.entrySet().stream()
.map(entry->
MemberStatConverter.toMemberStatPreferenceDetailColorDTO(
entry.getKey(), entry.getValue(), MemberStatUtil.compareField(entry.getValue(), criteriaMemberStatMap.get(entry.getKey())
))).toList();
}

public static MemberStatPreferenceDetailColorDTO toMemberStatPreferenceDetailColorDTO(String stat, Object value, DifferenceStatus color){
return MemberStatPreferenceDetailColorDTO.builder()
.stat(stat)
.value(value)
.color(color.getValue())
.build();
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

빡세게 계층화 했습니다

Comment on lines +60 to +67
public static DifferenceStatus compareField(
Object memberStatMapValue, Object criteriaMemberStatValue){
if(memberStatMapValue.equals(criteriaMemberStatValue)){
return DifferenceStatus.BLUE;
}
return DifferenceStatus.RED;
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

새로 만든 비교 메서드임다

Copy link
Member

@eple0329 eple0329 left a comment

Choose a reason for hiding this comment

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

깔끔해졌네용 멋지다~

@Builder
public record MemberStatPreferenceDetailColorDTO(
String stat,
Object value,
Copy link
Member

Choose a reason for hiding this comment

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

주석으로 어떤 이유에서 Object를 사용하는지 적어주면 알아보기 편할 것 같습니당
왜 오브젝트를 쓰지? 했는데, 멤버스탯이었군요...

Copy link
Member

@eple0329 eple0329 left a comment

Choose a reason for hiding this comment

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

어프로브 안누름 ㅎ

Copy link
Member

@veronees veronees left a comment

Choose a reason for hiding this comment

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

LGTM~ 구구굳

@jpark0506 jpark0506 merged commit 61efd41 into develop Nov 30, 2024
1 check passed
@jpark0506 jpark0506 deleted the feature/COZY-410 branch November 30, 2024 16:32
Copy link

리뷰해드려요~

FavoriteQueryService.java - 리뷰 1

  • 새로운 멤버Stat 정보를 반환하는 변수가 추가되었습니다.
  • 새로운 메서드가 추가되어 새로운 변수를 사용하여 반환되는 것을 확인할 수 있습니다.

MemberStatConverter.java - 리뷰 2

  • 새로운 메서드가 추가되어 새로운 변수를 사용하여 반환되는 것을 확인할 수 있습니다.

MemberStatPreferenceDetailColorDTO.java - 리뷰 3

  • 새로운 파일이 추가되어 새로운 변수를 사용하여 반환되는 것을 확인할 수 있습니다.

MemberStatPreferenceResponseDTO.java - 리뷰 4

  • 새로운 변수가 추가되어 새로운 변수를 사용하여 반환되는 것을 확인할 수 있습니다.

MemberStatQueryService.java - 리뷰 5

  • 새로운 변수가 추가되어 새로운 변수를 사용하여 반환되는 것을 확인할 수 있습니다.

MemberStatUtil.java - 리뷰 6

  • 새로운 메서드가 추가되어 새로운 변수를 사용하여 반환되는 것을 확인할 수 있습니다.

추가 개선 사항 제안:

  • 새로운 변수를 사용하여 반환되는 메서드를 만들면서 오류가 발생하지 않도록 테스트 케이스를 추가해야 합니다.
  • 새로운 변수를 사용하는 메서드를 만들면서 새로운 변수가 올바르게 사용되고 있는지 검사해야 합니다.
  • 새로운 변수를 사용하는 메서드를 만들면서 새로운 변수가 올바른 값을 반환하고 있는지 검사해야 합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants