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/15 ✨ 임시 회원 탈퇴 구현 #68

Merged
merged 1 commit into from
Jan 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions src/main/java/cmc/peerna/domain/PeerFeedback.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,8 @@ public class PeerFeedback extends BaseEntity {
public void updateWriter(Member member) {
this.writer = member;
}
public void updateWriterToNull(){
this.writer = null;
}

}
4 changes: 4 additions & 0 deletions src/main/java/cmc/peerna/domain/PeerGradeResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,8 @@ public class PeerGradeResult extends BaseEntity {
public void updateWriter(Member member) {
this.writer = member;
}
public void updateWriterToNull(){
this.writer = null;
}

}
4 changes: 4 additions & 0 deletions src/main/java/cmc/peerna/domain/PeerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,8 @@ public class PeerTest extends BaseEntity {
public void updateWriter(Member member) {
this.writer = member;
}

public void updateWriterToNull(){
this.writer = null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,8 @@ public interface PeerFeedbackRepository extends JpaRepository<PeerFeedback, Long
List<PeerFeedback> findTop3ByTargetOrderByCreatedAtDesc(Member target);

Page<PeerFeedback> findAllByTarget(Member target, PageRequest pageRequest);

List<PeerFeedback> findAllByWriter(Member writer);

void deleteAllByTarget(Member target);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ public interface PeerGradeResultRepository extends JpaRepository<PeerGradeResult
Long countByTargetAndPeerGrade(Member target, PeerGrade peerGrade);

List<PeerGradeResult> findAllByTarget(Member target);
List<PeerGradeResult> findAllByWriter(Member writer);

Long countByTarget(Member target);

void deleteAllByTarget(Member target);

}
4 changes: 4 additions & 0 deletions src/main/java/cmc/peerna/repository/PeerTestRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@

public interface PeerTestRepository extends JpaRepository<PeerTest, Long> {
List<PeerTest> findALlByTarget(Member target);
List<PeerTest> findALlByWriter(Member writer);
List<PeerTest> findAllByNonMemberUuid(String nonMemberUuid);

Long countByTargetAndAnswerId(Member target, Long answerId);

void deleteAllByTarget(Member target);

}
2 changes: 2 additions & 0 deletions src/main/java/cmc/peerna/service/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ public interface MemberService {
MemberRequestDto.profileUpdateDto updateMemberProfile(Member member, MemberRequestDto.profileUpdateDto request);

String regenerateAccessToken(RefreshToken refreshToken);

void withdrawal(Member member);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@
import cmc.peerna.apiResponse.code.ResponseStatus;
import cmc.peerna.apiResponse.exception.handler.MemberException;
import cmc.peerna.converter.MemberConverter;
import cmc.peerna.domain.Member;
import cmc.peerna.domain.PeerGradeResult;
import cmc.peerna.domain.*;
import cmc.peerna.domain.enums.SocialType;
import cmc.peerna.jwt.JwtProvider;
import cmc.peerna.redis.domain.RefreshToken;
import cmc.peerna.repository.MemberRepository;
import cmc.peerna.repository.PeerGradeResultRepository;
import cmc.peerna.repository.*;
import cmc.peerna.service.MemberService;
import cmc.peerna.web.dto.requestDto.MemberRequestDto;
import cmc.peerna.web.dto.responseDto.MemberResponseDto;
Expand All @@ -29,7 +27,11 @@
public class MemberServiceImpl implements MemberService {

private final MemberRepository memberRepository;
private final SelfTestRepository selfTestRepository;
private final SelfTestResultRepository selfTestResultRepository;
private final PeerGradeResultRepository peerGradeResultRepository;
private final PeerFeedbackRepository peerFeedbackRepository;
private final PeerTestRepository peerTestRepository;

private final JwtProvider jwtProvider;

Expand Down Expand Up @@ -112,4 +114,30 @@ public String regenerateAccessToken(RefreshToken refreshToken) {
String accessToken = jwtProvider.createAccessToken(member.getId(), member.getSocialType().toString(), member.getSocialId(), Arrays.asList(new SimpleGrantedAuthority("USER")));
return accessToken;
}

@Override
@Transactional
public void withdrawal(Member member) {
selfTestRepository.deleteAllByWriter(member);
selfTestResultRepository.deleteByMember(member);
peerTestRepository.deleteAllByTarget(member);
peerFeedbackRepository.deleteAllByTarget(member);
peerGradeResultRepository.deleteAllByTarget(member);

List<PeerTest> peerTestListByWriter = peerTestRepository.findALlByWriter(member);
for (PeerTest peerTest : peerTestListByWriter) {
peerTest.updateWriterToNull();
}

List<PeerFeedback> peerFeedbackListByWriter = peerFeedbackRepository.findAllByWriter(member);
for (PeerFeedback peerFeedback : peerFeedbackListByWriter) {
peerFeedback.updateWriterToNull();
}

List<PeerGradeResult> peerGradeResultListByWriter = peerGradeResultRepository.findAllByWriter(member);
for (PeerGradeResult peerGradeResult : peerGradeResultListByWriter) {
peerGradeResult.updateWriterToNull();
}
memberRepository.deleteById(member.getId());
}
}
14 changes: 13 additions & 1 deletion src/main/java/cmc/peerna/web/controller/MemberController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import cmc.peerna.apiResponse.code.ResponseStatus;
import cmc.peerna.apiResponse.exception.handler.MemberException;
import cmc.peerna.apiResponse.response.ResponseDto;
import cmc.peerna.converter.MemberConverter;
import cmc.peerna.domain.Member;
import cmc.peerna.domain.enums.SocialType;
import cmc.peerna.domain.enums.UserRole;
Expand Down Expand Up @@ -257,6 +258,17 @@ ResponseDto<MemberResponseDto.memberBasicInfoDto> getMemberBasicInfo(@AuthMember
}



@Operation(summary = "회원탈퇴 API ✔️🔑", description = "회원탈퇴 API입니다.")
@ApiResponses({
@ApiResponse(responseCode = "2200", description = "BAD_REQUEST, 존재하지 않는 유저를 조회한 경우.")
})
@Parameters({
@Parameter(name = "member", hidden = true)
})
@PostMapping("/member/withdrawal")
ResponseDto<MemberResponseDto.MemberStatusDto> withdrawal(@AuthMember Member member) {
memberService.withdrawal(member);
return ResponseDto.of(MemberConverter.toMemberStatusDto(member.getId(), "회원탈퇴 완료"));
}
}

Loading