Skip to content

feat: 멤버 기능 구현(#39)#43

Merged
chaiminwoo0223 merged 1 commit intodevelopfrom
feature/39
Jul 29, 2025
Merged

feat: 멤버 기능 구현(#39)#43
chaiminwoo0223 merged 1 commit intodevelopfrom
feature/39

Conversation

@chaiminwoo0223
Copy link
Contributor

@chaiminwoo0223 chaiminwoo0223 commented Jul 27, 2025

📌 작업 내용 및 특이사항

✅ 멤버 수정 API

  • 사용자가 자신의 닉네임 또는 카테고리를 수정할 수 있도록 기능을 구현하였습니다.
  • 수정은 MemberService.updateNicknameAndCategoryIfPresent()를 통해 수행되며, UpdateMemberRequest를 사용합니다.
  • Member.update()를 통해, 기존 닉네임 또는 카테고리와 다른 경우에만 수정한다.

✅ 멤버 삭제 API

  • 인증된 사용자가 자신의 계정을 Soft Delete 방식으로 회원탈퇴할 수 있도록 기능을 구현하였습니다.
  • Member.updateDeletedAt()을 통해 삭제 시간을 기록하며, 실제 DB에서는 제거되지 않습니다.

✅ 멤버 상세 조회 API

  • 사용자의 마이페이지에서 활용할 수 있도록 멤버의 상세 정보를 조회하는 기능을 구현하였습니다.
  • 응답에는 LoadMemberDetailResponse를 사용하며, 닉네임, 이메일, 코스형 여행 개수, 탐험형 여행 개수, 학습 기록 개수 등이 포함됩니다.
  • 여행 개수는 TripService.getActiveTripCountsByMemberId()를 통해 조회합니다.

✅ 도메인 메서드 추가

  • Member: update(), updateDeletedAt() 메서드 추가
  • MemberPolicy: validateNotDuplicated(), validateNotDeleted() 메서드 추가

✅ 서비스 메서드 추가

  • MemberService: updateNicknameAndCategoryIfPresent(), deleteMember(), getActiveMemberById() 등 메서드 추가

✅ 리포지토리 메서드 추가

  • MemberRepository: findByIdAndDeletedAtIsNull() 메서드 추가
  • TripQueryRepository: countActiveTripsByMemberIdAndCategory() 메서드 추가

✅ DTO 추가

  • CreateMemberCommand 추가
  • UpdateMemberRequest 추가
  • LoadMemberDetailResponse 추가
  • MemberInfo, TripCount, MemberDetail 추가

✅ StudyLog 기능 개발

  • StudyLog 엔티티에 @ManyToOne Member 연관관계 매핑
  • StudyLogFactory 구현
  • StudyLogQueryRepository, StudyLogQueryRepositoryAdapter 구현
  • StudyLogService 구현

✅ 테스트

  • MemberServiceTest단위 테스트 추가
  • MemberControllerIntegrationTest 통합 테스트 추가
  • CreateMemberCommandFixture, UpdateMemberRequestFixture 추가
  • StudyLogServiceTest 단위 테스트 추가
  • TripServiceTest.getActiveTripCountsByMemberId() 단위 테스트
  • KakaoLoginRequestFixture, KakaoSignupRequestFixture 추가
  • KakaoTokenResponseFixture, KakaoUserInfoResponseFixture 추가
  • MemberFactory를 적용하여 MemberFixture 개선
  • KakaoOauthFixture 삭제

🌱 관련 이슈


🔍 참고사항

  • MemberFactory.fromKakao()MemberFactory.createFromKakao()로 메서드명 개선
  • MemberService.createMemberFromKakao() 비즈니스 로직 개선
  • MissionServiceTest, MissionControllerIntegrationTest@DisplayName 어노테이션 추가 및 테스트 메서드 이름 개선

@chaiminwoo0223 chaiminwoo0223 requested a review from hisonghy July 27, 2025 04:57
@chaiminwoo0223 chaiminwoo0223 self-assigned this Jul 27, 2025
@chaiminwoo0223 chaiminwoo0223 added the ✨feature 구현, 개선 사항 관련 부분 label Jul 27, 2025
Copy link
Contributor

@hisonghy hisonghy 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

@hisonghy hisonghy left a comment

Choose a reason for hiding this comment

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

고생하셨습니다! 병합 부탁드립니다!

* feat: Member에 update, updateDeletedAt 메서드 추가
* feat: MemberErrorCode에 MEMBER_NICKNAME_DUPLICATED 에러코드 추가
* feat: MemberRepository에 findByIdAndDeletedAtIsNull 메서드 추가
* feat: MemberPolicy에 validateNotDuplicated, validateNotDeleted 메서드 추가
* feat: MemberService에 getActiveMemberById 메서드 추가
* feat: CreateMemberCommand 추가
* feat: MemberInfo, MemberDetail 추가
* feat: UpdateMemberRequest 추가
* feat: MemberFacade 구현
* feat: MemberController 구현
* feat: LoadMemberDetailResponse 추가
* feat: StudyLog 엔티티에 Member 연관관계 매핑 추가
* feat: StudyLogFactory 구현
* feat: StudyLogQueryRepository, StudyLogQueryRepositoryAdapter 구현
* feat: StudyLogService 구현
* feat: TripQueryRepository에 countActiveTripsByMemberIdAndCategory 메서드 추가
* feat: TripService에 getActiveTripCountsByMemberId 메서드 추가
* feat: TripCount 추가

* refactor: MemberService.createMemberFromKakao() 비즈니스 로직 개선
* refactor: MemberFactory.fromKakao() -> MemberFactory.createFromKakao() 이름 변경
* refactor: MissionServiceTest, MissionControllerIntegrationTest에 @DisplayName 어노테이션 추가
* refactor: MissionControllerIntegrationTest 메서드명 개선
* refactor: Member에서 nickname 필드 unique = true 설정 제거

* test: MemberFactory를 적용하여 MemberFixture 개선
* test: KakoOauthFixture 삭제
* test: CreateMemberCommandFixture 추가
* test: UpdateMemberRequestFixture 추가
* test: KakaoLoginRequestFixture, KakaoSignupRequestFixture 추가
* test: KakaoTokenResponseFixture, KakaoUserInfoResponseFixture 추가
* test: MemberServiceTest에 UpdateNicknameAndCategoryIfPresent, DeleteMember, GetActiveMemberById 단위 테스트 추가
* test: MemberControllerIntegrationTest 통합 테스트 추가
* test: StudyLogServiceTest 단위 테스트 추가
* test: TripServiceTest에 GetActiveTripCountsByMemberId 단위 테스트 추가

* chore: 닉네임 중복 검사 API에 인증 없이 접근 가능하도록 Spring Security 설정 추가
@chaiminwoo0223 chaiminwoo0223 merged commit ead1177 into develop Jul 29, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨feature 구현, 개선 사항 관련 부분

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨[FEAT]: 멤버 관련 기능 구현

2 participants