This commit is contained in:
@@ -48,6 +48,7 @@ public enum MessageCode {
|
||||
PAYMENT_NOT_FOUND(4, "Payment not found"),
|
||||
COMPANY_ALREADY_EXISTS(2, "Company already exists"),
|
||||
USER_LIMIT_IS_OVER(2, "Over user limits"),
|
||||
MONITORING_TYPE_NOT_FOUND(4, "Monitoring type not found"),
|
||||
ERROR_TARIFF_INFO(2, "Erorr with tariff info"),
|
||||
FILE_FOR_SEARCH_NOT_VALID(2, "File for search unsupported"),
|
||||
NOT_VALID_FILE_TYPE_OR_COUNT_FILE(2, "Cost for file type not found, count is negative or files count" +
|
||||
|
||||
@@ -37,4 +37,7 @@ public class MonitoringStatusResponse {
|
||||
|
||||
@JsonProperty("new_violations_count")
|
||||
private long newViolationsCount;
|
||||
|
||||
@JsonProperty("need_add_tokens")
|
||||
private boolean needAddTokens;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ public class SetMonitoringRequest {
|
||||
private String fileId;
|
||||
|
||||
@JsonProperty("monitoring_type")
|
||||
private MonitoringType monitoringType;
|
||||
private String monitoringType;
|
||||
|
||||
@JsonProperty("auth_token")
|
||||
private String authToken;
|
||||
|
||||
@@ -10,14 +10,14 @@ import ru.soune.nocopy.dto.MessageCode;
|
||||
import ru.soune.nocopy.dto.monitoring.MonitoringStatusResponse;
|
||||
import ru.soune.nocopy.dto.monitoring.SetMonitoringRequest;
|
||||
import ru.soune.nocopy.entity.monitoring.MonitoringType;
|
||||
import ru.soune.nocopy.entity.tarif.TariffType;
|
||||
import ru.soune.nocopy.entity.user.AuthToken;
|
||||
import ru.soune.nocopy.entity.user.User;
|
||||
import ru.soune.nocopy.repository.TariffRepository;
|
||||
import ru.soune.nocopy.exception.UserNotHavePermission;
|
||||
import ru.soune.nocopy.service.monitoring.FileMonitoringService;
|
||||
import ru.soune.nocopy.service.register.AuthService;
|
||||
import ru.soune.nocopy.service.tariff.TariffService;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@@ -31,10 +31,6 @@ public class MonitoringHandler implements RequestHandler {
|
||||
|
||||
private final AuthService authService;
|
||||
|
||||
private final TariffService tariffService;
|
||||
|
||||
private final TariffRepository tariffRepository;
|
||||
|
||||
@Override
|
||||
public BaseResponse handle(BaseRequest request) throws Exception {
|
||||
SetMonitoringRequest setRequest = objectMapper.convertValue(
|
||||
@@ -51,21 +47,33 @@ public class MonitoringHandler implements RequestHandler {
|
||||
|
||||
User user = userAuthToken.getUser();
|
||||
Long userId = user.getId();
|
||||
MonitoringType monitoringType = setRequest.getMonitoringType();
|
||||
String typeStr = setRequest.getMonitoringType();
|
||||
MonitoringType monitoringType;
|
||||
|
||||
try {
|
||||
monitoringType = MonitoringType.valueOf(typeStr);
|
||||
} catch (IllegalArgumentException e) {
|
||||
return new BaseResponse(request.getMsgId(),
|
||||
MessageCode.MONITORING_TYPE_NOT_FOUND.getCode(),
|
||||
MessageCode.MONITORING_TYPE_NOT_FOUND.getDescription(),
|
||||
Map.of("monitoring", Arrays.asList(MonitoringType.values())));
|
||||
}
|
||||
|
||||
try {
|
||||
monitoringService.setMonitoring(userId, setRequest.getFileId(), monitoringType);
|
||||
} catch (UserNotHavePermission e) {
|
||||
return new BaseResponse(request.getMsgId(),
|
||||
MessageCode.USER_NOT_HAD_PERMISSION.getCode(),
|
||||
MessageCode.USER_NOT_HAD_PERMISSION.getDescription(), Map.of("token", authToken));
|
||||
} catch (FileNotFoundException e) {
|
||||
return new BaseResponse(request.getMsgId(),
|
||||
MessageCode.FILE_NOT_FOUND.getCode(),
|
||||
MessageCode.FILE_NOT_FOUND.getDescription(), Map.of("fileId", setRequest.getFileId()));
|
||||
}
|
||||
|
||||
MonitoringStatusResponse status = monitoringService.getMonitoringStatus(setRequest.getFileId(), userId);
|
||||
|
||||
return new BaseResponse(
|
||||
request.getMsgId(),
|
||||
MessageCode.SUCCESS.getCode(),
|
||||
"Monitoring settings updated",
|
||||
status);
|
||||
}
|
||||
//TODO check tokens for apply
|
||||
private boolean checkTokensForMonitoring(User user, MonitoringType monitoringType) {
|
||||
tariffService.getTariffByType(TariffType.valueOf(monitoringType.name()));
|
||||
return true;
|
||||
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
|
||||
"Monitoring settings updated", status);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user