게시물 및 댓글 신고시 member의 reportCount를 더하고 3회이상이면 해당 계정을 정지처리를 해야하는데 해당기능은 memberService에 있는게 좋다고 생각해서 reply에서 삭제 이벤트를 발생시키면 memberService에서 해당 이벤트를 처리하는 식으로 하는게 좋을것 같습니다. 혹시 더나은 방법이 있다면 공유해주시면 감사하겠습니다.
댓글 삭제(ReplyService)
@Override
public void deleteReply(MemberDetails memberDetails, long replyId) {
Reply reply = replyRepository.findById(replyId)
.orElseThrow(() -> new NotFoundException(ExceptionCode.NOT_FOUND_REPLY));
if(memberDetails.getRoles().contains(Member.Role.ROLE_MANAGER)){
long memberId = reply.getMember().getMemberId();
publisher.publishEvent(new DeleteByManagerEvent(memberId)); // 댓글삭제 이벤트 발행
}else {
if(reply.getMember().getMemberId() != memberDetails.getMemberId())
throw new AccessDeniedException(ExceptionCode.ACCESS_DENIED);
}
replyRepository.delete(reply);
}
계정 정지(MemberService)
@Override
@EventListener
public void lock(DeleteByManagerEvent deleteByManagerEvent) {
long memberId = deleteByManagerEvent.getMemberId();
Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new NotFoundException(ExceptionCode.NOT_FOUND_MEMBER));
member.addReportCount();
if(member.getReportCount() >= 3) member.setLocked(true);
}
spring 에 @EventListener라는 좋은 기능을 지원해 줘서 해당 기능을 이용하였습니다.
게시물 및 댓글 신고시 member의 reportCount를 더하고 3회이상이면 해당 계정을 정지처리를 해야하는데 해당기능은 memberService에 있는게 좋다고 생각해서 reply에서 삭제 이벤트를 발생시키면 memberService에서 해당 이벤트를 처리하는 식으로 하는게 좋을것 같습니다. 혹시 더나은 방법이 있다면 공유해주시면 감사하겠습니다.
댓글 삭제(ReplyService)
spring 에 @EventListener라는 좋은 기능을 지원해 줘서 해당 기능을 이용하였습니다.