-
Notifications
You must be signed in to change notification settings - Fork 0
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
[이성 검색] 사용자는 이성을 검색할 수 있다.(#54) #88
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
보낼 화살 수를 담은 요청 DTO 정의
- 화살 송수신 내역 repository 정의 - 보낸 사용자, 받은 사용자를 통해 내역 존재 여부를 확인하는 로직 구현
보낸 사용자, 받은 사용자를 통해 송수신 내역 존재 여부를 확인하는 로직 구현
다음 상황들에 대한 예외 enum을 정의하였다. - 자기 자신에게 화살을 보내는 경우 - 이미 화살을 보낸 사용자인 경우 - 가진 화살 수가 부족해 화살을 보낼 수 없는 경우
감소하려는 화살 수가 사용자가 보유한 화살 수보다 클 경우 예외 발생
화살 보내기 비즈니스 로직은 다음 과정을 거친다. 1. 자기 자신에게 화살을 보내는 상황 검증 2. 화살을 보낸 사용자에게 또 보내는 상황 검증 3. 화살 내역 저장 4. 보내는 사용자 화살 감소, 화살이 부족할 경우 예외 발생(과정 3 롤백) 5. 받는 사용자 화살 증가
- query, command를 service, repository를 중개하는 별도의 계층을 통해 구분 - 이에 따라 기존 command repository 삭제 - 기존 command repository 사용 위치, 화살 command로 대체
# Conflicts: # be/src/main/java/yeonba/be/arrow/repository/ArrowCommand.java # be/src/main/java/yeonba/be/arrow/service/ArrowService.java # be/src/main/java/yeonba/be/exception/CommonException.java # be/src/main/java/yeonba/be/user/entity/User.java
서로 대치되는 작업을 수행하는 상황을 잘 표현할 수 있도록 메서드 이름 수정
- 이미 화살을 보낸 사용자 예외 - 화살이 부족하여 화살을 보낼 수 없는 예외
가독성 향상을 위해 간단한 이름을 수정
dev 브랜치 작업 내역 병합에 따른 코드 배치 수정
좀 더 명확하게 대치되는 의미를 나타낼 수 있도록 화살을 받는 사용자 ID 파라미터 이름을 receiverId로 수정
- 이름 칼럼 추가 - 테스트시 활용 가능한 생성자 추가
- 래퍼 타입 필드들 기본 타입으로 변경 - 프로필 사진 URL 리스트 필드 추가 - 사용자가 가진 총 화살 수 필드 추가 - 음주 성향, 흡연 성향 필드 추가 - 코드 정렬
- 레퍼런스 타입 not null 필드들, Column 어노테이션 사용 명시 - salt 필드 추가 - 생성 일시, 최종 수정 일시 필드 추가 - JpaAuditing 활용, 생성/최종 수정 일시 필드들 엔티티 저장시 자동 설정 - 새로운 생성자 구성
프로필을 조회하는 사용자 ID의 경우 상대방이 화살을 보넀던 사용자인지 확인하기 위해 파라미터로 받는다.
- 요구사항 변경에 따라 음주 성향, 흡연 성향 필드 삭제 - 성별 정보 제공 메서드 추가
- 음주 성향, 흡연 성향 필드 삭제 - 성별 필드 추가
- 음주 성향, 흡연 성향 필드 삭제 - 생성자 성별 필드 설정 로직 수정 - 코드 정렬
- 음주 성향, 흡연 성향 삭제 - 성별 정보 응답에 포함토록 수정 - 코드 정렬
- 사용자 ID, 성별을 함께 전달받기 위해 엔티티를 파라미터로 받도록 수정 - 검색일 파라미터 변수명 수정
- 페이지 번호 필드 nullable 하게 변경, 검증 제약 수정 - 나이/키 상한 및 하한 범위 검증 제약 추가
- 이성 검색 메서드명 변경 - 이성 검색 메서드 파라미터명, 타입 변경 - 이성 검색 조건에 같은 성별 사용자 제외 조건 추가 - 화살 내역 존재 여부 확인 쿼리에 사용자간 송수신 타입 조건 추가 - 하한/상한 범위 조건 생성 로직 별도 분리
- 여러 비즈니스 로직에서 사용되는 한계값 검증 로직 별도 분리 - 래퍼 타입의 하한/상한이 둘 다 존재할 경우 하한 <= 상한 여부 검증
- 페이지 번호 nullable하게 변경, 기본 첫 페이지(0) - 검색하는 사용자 조회 로직 추가 - 검색 나이/키 하한,상한 검증 로직 추가
사용자 엔티티 파라미터를 통해 사용자 ID, 성별을 제공받도록 수정
- 응답에 포함된 사용자들 조회 로직, 별도 분리 - 추천 이성 조회 로직 변경에 따라 사용 위치 수정 - 이성 검색 메서드명 변경
query parameters로 요청 DTO를 매핑하는 구조에서는 필드 존재 유무와 상관 없이 DTO가 생성되지만 request body를 통해 매핑하는 경우 request body 자체가 존재하지 않을 수 있기 때문에 요청 DTO null 여부 검증 추가
- 추천 이성 조회, 이성 검색 API의 경우 요청시 내역 저장 작업 수행 - 서버의 상태를 변경하는 작업이 수반되므로 GET으로 표현하기 부적절, POST로 변경
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
따로 요청 드린 부분 해주시면 감사하겠습니다.
그리고 사용하신 querydsl 관련 내용에 대해서 설명해주시면 감사하곘습니다. (ex. JPQLQuery, Expressions.allof() )
be/src/main/java/yeonba/be/user/dto/request/UserSearchRequest.java
Outdated
Show resolved
Hide resolved
be/src/main/java/yeonba/be/user/repository/user/UserRepositoryCustom.java
Outdated
Show resolved
Hide resolved
be/src/main/java/yeonba/be/user/repository/user/UserRepositoryImpl.java
Outdated
Show resolved
Hide resolved
be/src/main/java/yeonba/be/user/repository/usersearchlog/UserSearchLogCommand.java
Outdated
Show resolved
Hide resolved
be/src/main/java/yeonba/be/user/repository/usersearchlog/UserSearchLogRepository.java
Outdated
Show resolved
Hide resolved
be/src/main/java/yeonba/be/user/repository/user/UserRepositoryImpl.java
Outdated
Show resolved
Hide resolved
- 이성 검색 조건, BooleanExpression을 통해 구성되도록 수정 - 나이/키 범위 조건, BooleanExpression 이용하도록 수정 - 같은 성별 사용자 제외 조건, 별도 메서드로 분리 - 선호 동물상 포함 조건 형성 로직 ,별도 메서드로 분리
페이지 번호 존재 여부, 하한/상한 값 검증을 DTO가 존재할 경우 함께 수행하도록 잘못된 로직 변경
acceptor-gyu
approved these changes
May 28, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
작업 대상
📄 작업 내용
🙋🏻 주의 사항
이성 검색 API가
@PostMapping
인 이유@GetMapping
으로 표현하는 것은 적절치 않다 판단@PostMapping
으로 변경📎 관련 이슈
레퍼런스