Skip to content

Commit

Permalink
Merge pull request #68 from Central-MakeUs/feat/15
Browse files Browse the repository at this point in the history
Feat/15 ✨ 임시 회원 탈퇴 구현
  • Loading branch information
HyoBN authored Jan 25, 2024
2 parents fd6cf5d + 4c93137 commit 7207291
Show file tree
Hide file tree
Showing 9 changed files with 70 additions and 5 deletions.
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(), "회원탈퇴 완료"));
}
}

0 comments on commit 7207291

Please sign in to comment.