@@ -76,7 +76,7 @@ public class ViolationHandler implements RequestHandler {
|
|||||||
|
|
||||||
targetFiles = List.of(file);
|
targetFiles = List.of(file);
|
||||||
} else {
|
} else {
|
||||||
targetFiles = fileEntityService.getAllUserFiles(userId);
|
targetFiles = fileEntityService.getAllUserFilesExcludingBlockedAndRemoved(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalDateTime startDate = null;
|
LocalDateTime startDate = null;
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ public interface FileMonitoringRepository extends JpaRepository<FileMonitoringEn
|
|||||||
@Query("SELECT fm FROM FileMonitoringEntity fm WHERE fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now")
|
@Query("SELECT fm FROM FileMonitoringEntity fm WHERE fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now")
|
||||||
List<FileMonitoringEntity> findReadyForRun(@Param("now") LocalDateTime now);
|
List<FileMonitoringEntity> findReadyForRun(@Param("now") LocalDateTime now);
|
||||||
|
|
||||||
|
@Query("SELECT fm FROM FileMonitoringEntity fm LEFT JOIN FETCH FileEntity f ON f.id = fm.file.id WHERE" +
|
||||||
|
" fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now AND f.status IN :statuses")
|
||||||
|
List<FileMonitoringEntity> findReadyForRun(@Param("now") LocalDateTime now, @Param("statuses") List<String> statuses);
|
||||||
|
|
||||||
List<FileMonitoringEntity> findByMonitoringTypeAndIsActiveTrue(MonitoringType type);
|
List<FileMonitoringEntity> findByMonitoringTypeAndIsActiveTrue(MonitoringType type);
|
||||||
|
|
||||||
@Query("SELECT COUNT(m) FROM FileMonitoringEntity m " +
|
@Query("SELECT COUNT(m) FROM FileMonitoringEntity m " +
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import ru.soune.nocopy.entity.file.FileStatus;
|
||||||
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
|
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
|
||||||
import ru.soune.nocopy.entity.notification.NotificationType;
|
import ru.soune.nocopy.entity.notification.NotificationType;
|
||||||
import ru.soune.nocopy.repository.FileMonitoringRepository;
|
import ru.soune.nocopy.repository.FileMonitoringRepository;
|
||||||
@@ -37,7 +38,8 @@ public class MonitoringScheduler {
|
|||||||
log.info("Starting scheduled monitoring check at 02:01 MSK");
|
log.info("Starting scheduled monitoring check at 02:01 MSK");
|
||||||
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
List<FileMonitoringEntity> readyForRun = monitoringRepository.findReadyForRun(now);
|
List<FileMonitoringEntity> readyForRun = monitoringRepository.findReadyForRun(now,
|
||||||
|
List.of(FileStatus.ACTIVE.name(), FileStatus.MODERATION.name()));
|
||||||
Map<Long, List<FileMonitoringEntity>> groupingFilesMonitoring = readyForRun.stream()
|
Map<Long, List<FileMonitoringEntity>> groupingFilesMonitoring = readyForRun.stream()
|
||||||
.collect(Collectors.groupingBy(FileMonitoringEntity::getUserId));
|
.collect(Collectors.groupingBy(FileMonitoringEntity::getUserId));
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,24 @@ public class FileEntityService {
|
|||||||
return allFiles;
|
return allFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public List<FileEntity> getAllUserFilesExcludingBlockedAndRemoved(Long userId) {
|
||||||
|
User user = userRepository.findById(userId).orElseThrow();
|
||||||
|
List<FileEntity> allFiles = new ArrayList<>();
|
||||||
|
|
||||||
|
if (user.getCompany() != null) {
|
||||||
|
for (Long uId : userRepository.findByCompanyId(user.getCompany().getId()).stream()
|
||||||
|
.map(User::getId)
|
||||||
|
.toList()) {
|
||||||
|
allFiles.addAll(getAllUserFiles(uId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION)));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
allFiles = getAllUserFiles(userId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION));
|
||||||
|
}
|
||||||
|
|
||||||
|
return allFiles;
|
||||||
|
}
|
||||||
|
|
||||||
public List<FileEntity> getAllUserFiles(Long userId, List<FileStatus> statuses) {
|
public List<FileEntity> getAllUserFiles(Long userId, List<FileStatus> statuses) {
|
||||||
User user = userRepository.findById(userId).orElseThrow();
|
User user = userRepository.findById(userId).orElseThrow();
|
||||||
List<FileEntity> allFiles = new ArrayList<>();
|
List<FileEntity> allFiles = new ArrayList<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user