-
Notifications
You must be signed in to change notification settings - Fork 0
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
[DELETE] 회원 탈퇴 #108
[DELETE] 회원 탈퇴 #108
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,13 +9,19 @@ | |
import com.soptie.server.member.entity.Member; | ||
import com.soptie.server.member.entity.SocialType; | ||
import com.soptie.server.member.repository.MemberRepository; | ||
import com.soptie.server.memberDoll.service.MemberDollService; | ||
import com.soptie.server.memberRoutine.service.CompletedMemberDailyRoutineService; | ||
import com.soptie.server.memberRoutine.service.MemberDailyRoutineService; | ||
import com.soptie.server.memberRoutine.service.MemberHappinessRoutineService; | ||
import jakarta.persistence.EntityNotFoundException; | ||
import lombok.RequiredArgsConstructor; | ||
import lombok.val; | ||
import org.springframework.security.core.Authentication; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import java.util.Objects; | ||
|
||
import static com.soptie.server.auth.message.ErrorMessage.INVALID_TOKEN; | ||
import static com.soptie.server.member.message.ErrorMessage.INVALID_MEMBER; | ||
|
||
|
@@ -27,6 +33,10 @@ public class AuthServiceImpl implements AuthService { | |
private final JwtTokenProvider jwtTokenProvider; | ||
private final MemberRepository memberRepository; | ||
private final KakaoService kakaoService; | ||
private final MemberDailyRoutineService memberDailyRoutineService; | ||
private final MemberHappinessRoutineService memberHappinessRoutineService; | ||
private final MemberDollService memberDollService; | ||
private final CompletedMemberDailyRoutineService completedMemberDailyRoutineService; | ||
private final ValueConfig valueConfig; | ||
|
||
@Override | ||
|
@@ -42,6 +52,17 @@ public void signOut(Long memberId) { | |
member.resetRefreshToken(); | ||
} | ||
|
||
@Override | ||
@Transactional | ||
public void withdraw(Long memberId) { | ||
val member = findMember(memberId); | ||
deleteMemberDoll(member); | ||
deleteMemberDailyRoutines(member); | ||
deleteMemberHappinessRoutine(member); | ||
deleteCompletedMemberDailyRoutine(member); | ||
deleteMember(member); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이번 리뷰를 달다가 든 생각인데, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 뭔가 모든 메서드가 member를 넘기다보니까 member를 넘기게 됐습니다...ㅋㅋㅋ |
||
} | ||
|
||
private Member getMember(String socialAccessToken, SignInRequest request) { | ||
val socialType = request.socialType(); | ||
val socialId = getSocialId(socialAccessToken, socialType); | ||
|
@@ -85,4 +106,29 @@ private Member findMember(Long id) { | |
return memberRepository.findById(id) | ||
.orElseThrow(() -> new EntityNotFoundException(INVALID_MEMBER.getMeesage())); | ||
} | ||
|
||
private void deleteMemberDoll(Member member) { | ||
if (Objects.nonNull(member.getMemberDoll())) { | ||
memberDollService.deleteMemberDoll(member.getMemberDoll()); | ||
} | ||
} | ||
|
||
private void deleteMemberDailyRoutines(Member member) { | ||
member.getDailyRoutines() | ||
.forEach(memberDailyRoutineService::deleteMemberDailyRoutine); | ||
} | ||
|
||
private void deleteMemberHappinessRoutine(Member member) { | ||
if (Objects.nonNull(member.getHappinessRoutine())) { | ||
memberHappinessRoutineService.deleteMemberHappinessRoutine(member.getHappinessRoutine()); | ||
} | ||
} | ||
|
||
private void deleteCompletedMemberDailyRoutine(Member member) { | ||
completedMemberDailyRoutineService.deleteCompletedMemberDailyRoutine(member); | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. CompletedMemberDailyRoutine도 한 회원이 여러 개를 가질 수 있기 때문에, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아 맞네요 중복 리뷰 죄송합니다ㅠㅠ |
||
|
||
private void deleteMember(Member member) { | ||
memberRepository.delete(member); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,9 @@ | ||
package com.soptie.server.memberDoll.repository; | ||
|
||
import com.soptie.server.member.entity.Member; | ||
import com.soptie.server.memberDoll.entity.MemberDoll; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
public interface MemberDollRepository extends JpaRepository<MemberDoll, Long> { | ||
void deleteByMember(Member member); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package com.soptie.server.memberRoutine.service; | ||
|
||
import com.soptie.server.member.entity.Member; | ||
|
||
public interface CompletedMemberDailyRoutineService { | ||
|
||
void deleteCompletedMemberDailyRoutine(Member member); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.soptie.server.memberRoutine.service; | ||
|
||
import com.soptie.server.member.entity.Member; | ||
import com.soptie.server.memberRoutine.repository.CompletedMemberDailyRoutineRepository; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
@Transactional(readOnly = true) | ||
public class CompletedMemberDailyRoutineServiceImpl implements CompletedMemberDailyRoutineService { | ||
|
||
private final CompletedMemberDailyRoutineRepository completedMemberDailyRoutineRepository; | ||
|
||
public void deleteCompletedMemberDailyRoutine(Member member) { | ||
completedMemberDailyRoutineRepository.deleteAllByMember(member); | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @OverRide와 @transactional 누락했습니다...ㅠ 수정했습니다 |
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,13 @@ | ||
package com.soptie.server.memberRoutine.service; | ||
|
||
import com.soptie.server.memberRoutine.dto.*; | ||
import com.soptie.server.memberRoutine.entity.happiness.MemberHappinessRoutine; | ||
|
||
public interface MemberHappinessRoutineService { | ||
|
||
MemberHappinessRoutineResponse createMemberHappinessRoutine(Long memberId, MemberHappinessRoutineRequest request); | ||
MemberHappinessRoutinesResponse getMemberHappinessRoutine(Long memberId); | ||
void deleteMemberHappinessRoutine(Long memberId, Long routineId); | ||
void achieveMemberHappinessRoutine(Long memberId, Long routineId); | ||
void deleteMemberHappinessRoutine(MemberHappinessRoutine routine); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오늘 논의한대로 notNull을 보장하기 위해 long 타입을 사용하면 더 좋을 것 같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분은 제가 Long 타입을 사용한게 너무 많아서 추후에 이슈 파서 한 번에 리팩토링하겠습니다!