Skip to content

Commit

Permalink
Merge pull request #95 from Leets-Official/feat/#81/회원-탈퇴
Browse files Browse the repository at this point in the history
Feat #95 회원탈퇴 API 구현
  • Loading branch information
hyxklee authored Feb 5, 2025
2 parents e9477d3 + 11953f2 commit cffb1be
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.gachtaxi.domain.members.dto.request.FcmTokenRequest;
import com.gachtaxi.domain.members.dto.request.MemberInfoRequestDto;
import com.gachtaxi.domain.members.dto.response.MemberResponseDto;
import com.gachtaxi.domain.members.service.MemberDeleteService;
import com.gachtaxi.domain.members.service.MemberService;
import com.gachtaxi.global.auth.jwt.annotation.CurrentMemberId;
import com.gachtaxi.global.common.response.ApiResponse;
Expand All @@ -22,6 +23,7 @@
public class MemberController {

private final MemberService memberService;
private final MemberDeleteService memberDeleteService;

@PatchMapping("/firebase")
@Operation(summary = "fcm 토큰을 저장하기 위한 API입니다. 매 로그인 혹은 토큰 리프레시가 발생할 때 저장해주세요")
Expand All @@ -46,4 +48,12 @@ public ApiResponse<MemberResponseDto> memberInfoModify(
MemberResponseDto response = memberService.updateMemberInfo(currentId, dto);
return ApiResponse.response(OK, MEMBER_INFO_UPDATE.getMessage(), response);
}

@DeleteMapping
@Operation(summary = "회원 탈퇴 API입니다. 관련 정보가 모두 삭제됩니다.")
public ApiResponse<Void> delete(@CurrentMemberId Long currentId) {
memberDeleteService.softDelete(currentId);

return ApiResponse.response(OK, MEMBER_DELETE_SUCCESS.getMessage());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public enum ResponseMessage {
MEMBER_INFO_UPDATE("유저 정보를 성공적으로 수정했습니다!"),
MEMBER_INFO_RESPONSE("유저 정보를 반환합니다."),
FCM_TOKEN_UPDATE_SUCCESS("FCM 토큰 업데이트에 성공했습니다."),
MEMBER_DELETE_SUCCESS("회원 탈퇴에 성공했습니다."),

// AuthController
ALREADY_SIGN_UP("이미 가입된 이메일 입니다!"),
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/gachtaxi/domain/members/entity/Members.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,10 @@ public boolean isRoomMaster(MatchingRoom matchingRoom){
return this.equals(matchingRoom.getRoomMaster());
}

public void delete() {
this.status = UserStatus.DELETED;
}

@Override
public boolean equals(Object o) {
if (this == o) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.gachtaxi.domain.members.entity.enums;

public enum UserStatus {
ACTIVE, INACTIVE
ACTIVE, INACTIVE, DELETED
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,19 @@

import com.gachtaxi.domain.members.entity.Members;
import com.gachtaxi.domain.members.entity.enums.UserStatus;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface MemberRepository extends JpaRepository<Members, Long> {

Optional<Members> findByEmail(String email);

Optional<Members> findByIdAndStatus(Long id, UserStatus status);

Optional<Members> findByStudentNumber(Long studentNumber);

Optional<Members> findByKakaoId(Long kakaoId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.gachtaxi.domain.members.service;

import com.gachtaxi.domain.members.entity.Members;
import com.gachtaxi.domain.members.exception.MemberNotFoundException;
import com.gachtaxi.domain.members.repository.MemberRepository;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class MemberDeleteService {

private final MemberRepository memberRepository;

/*
todo 채팅 메시지 수정 PR 머지 되면 (알수없음)으로 바꾸고 프사 삭제하기
*/
@Transactional
public void softDelete(Long memberId) {
Members member = memberRepository.findById(memberId)
.orElseThrow(MemberNotFoundException::new);

member.delete();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,13 @@ public InactiveMemberDto saveTmpGoogleMember(String googleId){

@Transactional
public void updateMemberEmail(String email, Long userId) {
Members members = findById(userId);
Members members = findTempUserById(userId);
members.updateEmail(email);
}

@Transactional
public void updateMemberAgreement(MemberAgreementRequestDto dto, Long userId) {
Members members = findById(userId);
Members members = findTempUserById(userId);
members.updateAgreement(dto);
}

Expand All @@ -69,7 +69,7 @@ public MemberResponseDto updateMemberSupplement(MemberSupplmentRequestDto dto, L
checkDuplicatedNickName(dto.nickname());
checkDuplicatedStudentNumber(dto.studentNumber());

Members members = findById(userId);
Members members = findTempUserById(userId);
members.updateSupplment(dto);

return MemberResponseDto.from(members);
Expand All @@ -91,6 +91,11 @@ public void updateFcmToken(Long userId, FcmTokenRequest request) {
* */

public Members findById(Long id) {
return memberRepository.findByIdAndStatus(id, ACTIVE)
.orElseThrow(MemberNotFoundException::new);
}

public Members findTempUserById(Long id) {
return memberRepository.findById(id)
.orElseThrow(MemberNotFoundException::new);
}
Expand Down

0 comments on commit cffb1be

Please sign in to comment.