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

[BSVR-146] MemberInfo API 구현 #67

Merged
merged 18 commits into from
Jul 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
432e9c4
feat : 홈 화면 멤버 정보 호출 API
wjdwnsdnjs13 Jul 21, 2024
5d83b94
feat : 홈 피드 화면 필터 제외
wjdwnsdnjs13 Jul 21, 2024
cd4dc97
feat : 홈 피드 화면 조회 API 구현
wjdwnsdnjs13 Jul 21, 2024
df80a8d
fix : 정상적인 토큰을 소유해도 401 오류가 나던 것 해결
wjdwnsdnjs13 Jul 21, 2024
dabbdf2
build : aop를 위한 의존성 추가
wjdwnsdnjs13 Jul 21, 2024
6cb84fa
refactor : jwt 내의 memberId String -> Long 타입 변경
wjdwnsdnjs13 Jul 21, 2024
f097e94
feat : MemberId 어노테이션 추가
wjdwnsdnjs13 Jul 21, 2024
45d49bf
feat : 헤더의 jwt 토큰에서 memberId 가져오는 AOP 추가
wjdwnsdnjs13 Jul 21, 2024
9a6071e
Merge remote-tracking branch 'origin/feat/BSVR-78' into feat/BSVR-146
wjdwnsdnjs13 Jul 22, 2024
5fecbdd
Merge branch 'main' into feat/BSVR-146
wjdwnsdnjs13 Jul 22, 2024
35f1394
refactor : CurrentMember를 사용해 memberId 가져오도록 수정
wjdwnsdnjs13 Jul 22, 2024
db231b9
feat : (홈 피드 API 분리) MemberInfo API 구현
wjdwnsdnjs13 Jul 23, 2024
e1c7bce
refactor : (홈 피드 API 분리) MemberInfo만 제공하도록 변경
wjdwnsdnjs13 Jul 23, 2024
ffc05e5
refactor : (홈 피드 API 분리) MemberInfo만 제공하도록 변경
wjdwnsdnjs13 Jul 23, 2024
2ea6355
refactor : API 메소드명 변경(findMemberInfo)
wjdwnsdnjs13 Jul 23, 2024
332ad34
refactor : (홈 피드 API 분리) 제거된 Home url 삭제
wjdwnsdnjs13 Jul 23, 2024
3b796b6
refactor : 중복된 커스텀 어노테이션 제거
wjdwnsdnjs13 Jul 23, 2024
13bcdd0
refactor : findMemberInfo 일기 전용 -> readOnly = true 설정
wjdwnsdnjs13 Jul 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@

import jakarta.validation.Valid;

import org.depromeet.spot.application.common.annotation.CurrentMember;
import org.depromeet.spot.application.common.jwt.JwtTokenUtil;
import org.depromeet.spot.application.member.dto.request.RegisterReq;
import org.depromeet.spot.application.member.dto.response.JwtTokenResponse;
import org.depromeet.spot.application.member.dto.response.MyHomeResponse;
import org.depromeet.spot.domain.member.Member;
import org.depromeet.spot.usecase.port.in.member.MemberUsecase;
import org.depromeet.spot.usecase.port.in.member.MemberUsecase.MemberInfo;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
Expand Down Expand Up @@ -97,4 +100,13 @@ public Boolean deleteMember(
// TODO : (개발용) 유저 탈퇴 아님! 단순 유저 삭제만 진행함.
return memberUsecase.deleteMember(accessToken);
}
Comment on lines 100 to 102
Copy link
Collaborator

Choose a reason for hiding this comment

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

PR 리뷰와는 무관한데, 우리 플레이스토어 나가려면 유저 탈퇴 필수라고 하지 않았어?
@wjdwnsdnjs13 유저 탈퇴 API가 API 명세서 페이지에 없는데, 혹시 언제 작업 예정일까?!


@CurrentMember
@GetMapping("/memberInfo")
@ResponseStatus(HttpStatus.OK)
public MyHomeResponse findMemberInfo(@Parameter(hidden = true) Long memberId) {
MemberInfo memberInfo = memberUsecase.findMemberInfo(memberId);

return MyHomeResponse.from(memberInfo);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.depromeet.spot.application.member.dto.response;

import org.depromeet.spot.usecase.port.in.member.MemberUsecase.MemberInfo;

import lombok.Builder;

@Builder
public record MyHomeResponse(
String profileImageUrl, String nickname, Integer level, String teamImageUrl) {
public static MyHomeResponse from(MemberInfo memberInfo) {
return MyHomeResponse.builder()
.profileImageUrl(memberInfo.getMember().getProfileImage())
.nickname(memberInfo.getMember().getNickname())
.level(memberInfo.getMember().getLevel())
.teamImageUrl(memberInfo.getBaseballTeam().getLogo())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package org.depromeet.spot.usecase.port.in.member;

import org.depromeet.spot.domain.member.Member;
import org.depromeet.spot.domain.team.BaseballTeam;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

public interface MemberUsecase {

Expand All @@ -13,4 +18,18 @@ public interface MemberUsecase {
String getAccessToken(String idCode);

Boolean deleteMember(String accessToken);

MemberInfo findMemberInfo(Long memberId);

@Getter
@Builder
@AllArgsConstructor
class MemberInfo {
Member member;
BaseballTeam baseballTeam;

public static MemberInfo of(Member member, BaseballTeam baseballTeam) {
return MemberInfo.builder().member(member).baseballTeam(baseballTeam).build();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
import org.depromeet.spot.common.exception.member.MemberException.MemberNicknameConflictException;
import org.depromeet.spot.common.exception.member.MemberException.MemberNotFoundException;
import org.depromeet.spot.domain.member.Member;
import org.depromeet.spot.domain.team.BaseballTeam;
import org.depromeet.spot.usecase.port.in.member.MemberUsecase;
import org.depromeet.spot.usecase.port.in.member.ReadMemberUsecase;
import org.depromeet.spot.usecase.port.in.team.ReadBaseballTeamUsecase;
import org.depromeet.spot.usecase.port.out.member.MemberRepository;
import org.depromeet.spot.usecase.port.out.oauth.OauthRepository;
import org.springframework.stereotype.Service;
Expand All @@ -21,6 +24,10 @@ public class MemberService implements MemberUsecase {

private final MemberRepository memberRepository;

private final ReadMemberUsecase readMemberUsecase;

private final ReadBaseballTeamUsecase readBaseballTeamUsecase;

@Override
public Member create(String accessToken, Member member) {
if (memberRepository.existsByNickname(member.getNickname())) {
Expand Down Expand Up @@ -64,11 +71,21 @@ public String getAccessToken(String idCode) {
public Boolean deleteMember(String accessToken) {
Member memberResult = oauthRepository.getLoginUserInfo(accessToken);
Optional<Member> existedMember = memberRepository.findByIdToken(memberResult.getIdToken());

// 멤버 없으면 오류 출력
if (existedMember.isEmpty()) {
throw new MemberNotFoundException();
}
memberRepository.deleteByIdToken(memberResult.getIdToken());
return Boolean.TRUE;
}

@Transactional(readOnly = true)
@Override
public MemberInfo findMemberInfo(Long memberId) {
Member member = readMemberUsecase.findById(memberId);
BaseballTeam baseballTeam = readBaseballTeamUsecase.findById(member.getTeamId());

return MemberInfo.of(member, baseballTeam);
}
Comment on lines +84 to +90
Copy link
Collaborator

Choose a reason for hiding this comment

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

}
Loading