작성중 입니다.
@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 |