SuspensionService.java

package com.newbit.user.service;

import com.newbit.user.entity.User;
import com.newbit.user.repository.UserRepository;
import com.newbit.post.repository.PostRepository;
import com.newbit.post.repository.CommentRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
@RequiredArgsConstructor
public class SuspensionService {

    private final UserRepository userRepository;
    private final PostRepository postRepository;
    private final CommentRepository commentRepository;

    public void checkAndSuspendUser(Long userId) {
        int postReports = postRepository.sumReportCountByUserId(userId);
        int commentReports = commentRepository.sumReportCountByUserId(userId);
        int totalReports = postReports + commentReports;

        if (totalReports >= 50 && totalReports % 50 == 0) {
            User user = userRepository.findById(userId)
                    .orElseThrow(() -> new IllegalArgumentException("유저를 찾을 수 없습니다."));
            if (!user.getIsSuspended()) {
                user.setIsSuspended(true);
                user.setUpdatedAt(LocalDateTime.now());
                userRepository.save(user);
            }
        }
    }
}