본문 바로가기

프로젝트/[더공] 구현기능

4. 회원 탈퇴 & 특정 기간동안 재가입 방지

 

작성중 입니다.

 

@DeleteMapping("/{member-id}")
@CheckUserPermission
public ResponseEntity deleteMember(@PathVariable("member-id") @Positive long memberId,
                                   @Valid @RequestBody MemberDto.DeleteMember requestBody) {

    memberService.removeUser(requestBody.getMemberId());
    return new ResponseEntity<>(HttpStatus.OK);
}
public void removeUser(long memberId) {
    Member member = findVerifiedMember(memberId);

    LocalDateTime deletionDate = LocalDateTime.now().plusDays(30);
    member.setDeletionDate(deletionDate);
    member.setStatus(Member.MemberStatus.DELETE);

    memberRepository.save(member);
}
public Member findVerifiedMember(long memberId) {
    Optional<Member> member = memberRepository.findById(memberId);
    Member findMember = member.orElseThrow(() -> new BusinessLogicException(ExceptionCode.MEMBER_NOT_FOUND));
    if (findMember.getStatus().equals(Member.MemberStatus.DELETE)) {
        throw new BusinessLogicException(ExceptionCode.MEMBER_NOT_FOUND);
    }
    return findMember;
}
@Configuration
@EnableScheduling
@RequiredArgsConstructor
public class SchedulingConfig {

    private final MemberRepository memberRepository;

    @Scheduled(fixedDelay = 24 * 60 * 60 * 1000) //24시간마다 자동실행
    public void deleteExpiredMembers(){
        LocalDateTime now = LocalDateTime.now();

        List<Member> deleteMemberList = memberRepository.findByDeletionDateBefore(now);
        if (deleteMemberList != null) {
            memberRepository.deleteAll(deleteMemberList);
        }
    }
}

'프로젝트 > [더공] 구현기능' 카테고리의 다른 글

3. JwtVerificationFilter  (0) 2024.01.05
2. JwtAutenticationFilter를 사용한 로그인  (0) 2024.01.01
1. 회원가입 로직  (0) 2024.01.01