dev add check tokens for monitoring
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-03-05 12:11:09 +07:00
parent 5c27fd52ba
commit 88e7121213
5 changed files with 51 additions and 21 deletions
@@ -5,13 +5,19 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ru.soune.nocopy.dto.monitoring.MonitoringStatusResponse;
import ru.soune.nocopy.dto.tarriff.TariffDTO;
import ru.soune.nocopy.entity.file.*;
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
import ru.soune.nocopy.entity.monitoring.MonitoringType;
import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.tarif.TariffType;
import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.UserNotHavePermission;
import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.repository.FileMonitoringRepository;
import ru.soune.nocopy.repository.FoundViolationRepository;
import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.tariff.TariffService;
import java.io.FileNotFoundException;
import java.time.LocalDateTime;
@@ -27,6 +33,10 @@ public class FileMonitoringService {
private final FoundViolationRepository violationRepository;
private final TariffService tariffService;
private final UserRepository userRepository;
@Transactional
public FileMonitoringEntity setMonitoring(Long userId, String fileId, MonitoringType type) throws FileNotFoundException {
FileEntity file = fileRepository.findById(fileId)
@@ -82,7 +92,7 @@ public class FileMonitoringService {
public MonitoringStatusResponse getMonitoringStatus(String fileId, Long userId) {
FileMonitoringEntity monitoring = monitoringRepository.findByFileId(fileId).orElse(null);
FileEntity file = fileRepository.findById(fileId).orElseThrow();
User user = userRepository.findById(userId).orElseThrow();
long newViolations = violationRepository.countNewByUserId(userId);
return MonitoringStatusResponse.builder()
@@ -94,7 +104,15 @@ public class FileMonitoringService {
.lastRunStatus(monitoring != null ? monitoring.getLastRunStatus() : null)
.isActive(monitoring != null && monitoring.isActive())
.newViolationsCount(newViolations)
.needAddTokens(checkTokensForMonitoring(user, monitoring.getMonitoringType()))
.build();
}
public boolean checkTokensForMonitoring(User user, MonitoringType monitoringType) {
TariffDTO tariff = tariffService.getTariffByType(TariffType.valueOf(monitoringType.name()));
TariffInfo activeTariffInfo = user.getActiveTariffInfo();
int currentUserCountTokens = activeTariffInfo.getTokens() + activeTariffInfo.getBoughtTokens();
return currentUserCountTokens > tariff.getTokens();
}
}