Skip to content

Commit

Permalink
feat: 회원 탈퇴 이유 저장 기능 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
yooooonshine committed Feb 11, 2025
1 parent 0216e88 commit e15d4f5
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -560,7 +560,7 @@ public ResponseEntity<DataResponse<Void>> deleteMember(
) {
Long memberId = memberLoader.getMemberId();

memberService.deleteMember(memberId, request.accessToken());
memberService.deleteMember(memberId, request);

return ResponseEntity.ok(DataResponse.ok());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package middle_point_search.backend.domains.member.domain;

import static jakarta.persistence.GenerationType.*;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor
public class MemberWithdrawalReason {

@Id
@Column(name = "member_withdrawal_reason_id")
@GeneratedValue(strategy = IDENTITY)
private Long id;

private String reason;

public MemberWithdrawalReason(String reason) {
this.reason = reason;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package middle_point_search.backend.domains.member.dto.request;

public record DeleteMemberRequest(
String accessToken
String accessToken,
String withdrawalReason
) {
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package middle_point_search.backend.domains.member.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import middle_point_search.backend.domains.member.domain.MemberWithdrawalReason;

public interface MemberWithdrawalReasonRepository extends JpaRepository<MemberWithdrawalReason, Long> {
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@
import middle_point_search.backend.domains.logout.LogoutService;
import middle_point_search.backend.domains.logout.LogoutToken;
import middle_point_search.backend.domains.member.domain.Member;
import middle_point_search.backend.domains.member.domain.MemberWithdrawalReason;
import middle_point_search.backend.domains.member.domain.Role;
import middle_point_search.backend.domains.member.dto.request.CreateMemberRequest;
import middle_point_search.backend.domains.member.dto.request.DeleteMemberRequest;
import middle_point_search.backend.domains.member.dto.request.FindMemberInfoResponse;
import middle_point_search.backend.domains.member.dto.request.SendEmailVerificationRequest;
import middle_point_search.backend.domains.member.dto.request.SendNewPasswordRequest;
Expand All @@ -30,6 +32,7 @@
import middle_point_search.backend.domains.member.dto.response.FindProfileImageUrlResponse;
import middle_point_search.backend.domains.member.dto.response.VerifyEmailVerificationCodeResponse;
import middle_point_search.backend.domains.member.repository.MemberRepository;
import middle_point_search.backend.domains.member.repository.MemberWithdrawalReasonRepository;
import middle_point_search.backend.domains.memberRoom.repository.MemberRoomRepository;
import middle_point_search.backend.domains.place.repository.PlaceRepository;
import middle_point_search.backend.domains.placeVoteRoom.repository.PlaceVoteCandidateMemberRepository;
Expand Down Expand Up @@ -57,6 +60,7 @@ public class MemberService {
private final PlaceRepository placeRepository;
private final PlaceVoteCandidateMemberRepository placeVoteCandidateMemberRepository;
private final TimeVoteRepository timeVoteRepository;
private final MemberWithdrawalReasonRepository memberWithdrawalReasonRepository;

// 회원가입하기
@Transactional
Expand Down Expand Up @@ -273,15 +277,18 @@ public void deleteProfileImage(Long memberId) {

// 회원 삭제
@Transactional
public void deleteMember(Long memberId, String accessToken) {
public void deleteMember(Long memberId, DeleteMemberRequest request) {
memberRoomRepository.deleteAllByMemberId(memberId);
placeVoteCandidateMemberRepository.deleteAllByMemberId(memberId);
timeVoteRepository.deleteAllByMemberId(memberId);
placeRepository.deleteAllByMemberId(memberId);
memberRepository.deleteById(memberId);

// 같은 accessToken 및 refreshToken으로 접속 못하도록 로그아웃
logoutMember(memberId, accessToken);
logoutMember(memberId, request.accessToken());

// 회원탈퇴 사유 저장
memberWithdrawalReasonRepository.save(new MemberWithdrawalReason(request.withdrawalReason()));
}

public FindMemberInfoResponse findMemberInfo(Long memberId) {
Expand Down

0 comments on commit e15d4f5

Please sign in to comment.