This commit is contained in:
@@ -48,6 +48,7 @@ public enum MessageCode {
|
|||||||
PAYMENT_NOT_FOUND(4, "Payment not found"),
|
PAYMENT_NOT_FOUND(4, "Payment not found"),
|
||||||
COMPANY_ALREADY_EXISTS(2, "Company already exists"),
|
COMPANY_ALREADY_EXISTS(2, "Company already exists"),
|
||||||
USER_LIMIT_IS_OVER(2, "Over user limits"),
|
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"),
|
ERROR_TARIFF_INFO(2, "Erorr with tariff info"),
|
||||||
FILE_FOR_SEARCH_NOT_VALID(2, "File for search unsupported"),
|
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" +
|
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")
|
@JsonProperty("new_violations_count")
|
||||||
private long newViolationsCount;
|
private long newViolationsCount;
|
||||||
|
|
||||||
|
@JsonProperty("need_add_tokens")
|
||||||
|
private boolean needAddTokens;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public class SetMonitoringRequest {
|
|||||||
private String fileId;
|
private String fileId;
|
||||||
|
|
||||||
@JsonProperty("monitoring_type")
|
@JsonProperty("monitoring_type")
|
||||||
private MonitoringType monitoringType;
|
private String monitoringType;
|
||||||
|
|
||||||
@JsonProperty("auth_token")
|
@JsonProperty("auth_token")
|
||||||
private String authToken;
|
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.MonitoringStatusResponse;
|
||||||
import ru.soune.nocopy.dto.monitoring.SetMonitoringRequest;
|
import ru.soune.nocopy.dto.monitoring.SetMonitoringRequest;
|
||||||
import ru.soune.nocopy.entity.monitoring.MonitoringType;
|
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.AuthToken;
|
||||||
import ru.soune.nocopy.entity.user.User;
|
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.monitoring.FileMonitoringService;
|
||||||
import ru.soune.nocopy.service.register.AuthService;
|
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;
|
import java.util.Map;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -31,10 +31,6 @@ public class MonitoringHandler implements RequestHandler {
|
|||||||
|
|
||||||
private final AuthService authService;
|
private final AuthService authService;
|
||||||
|
|
||||||
private final TariffService tariffService;
|
|
||||||
|
|
||||||
private final TariffRepository tariffRepository;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse handle(BaseRequest request) throws Exception {
|
public BaseResponse handle(BaseRequest request) throws Exception {
|
||||||
SetMonitoringRequest setRequest = objectMapper.convertValue(
|
SetMonitoringRequest setRequest = objectMapper.convertValue(
|
||||||
@@ -51,21 +47,33 @@ public class MonitoringHandler implements RequestHandler {
|
|||||||
|
|
||||||
User user = userAuthToken.getUser();
|
User user = userAuthToken.getUser();
|
||||||
Long userId = user.getId();
|
Long userId = user.getId();
|
||||||
MonitoringType monitoringType = setRequest.getMonitoringType();
|
String typeStr = setRequest.getMonitoringType();
|
||||||
|
MonitoringType monitoringType;
|
||||||
|
|
||||||
monitoringService.setMonitoring(userId, setRequest.getFileId(), 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);
|
MonitoringStatusResponse status = monitoringService.getMonitoringStatus(setRequest.getFileId(), userId);
|
||||||
|
|
||||||
return new BaseResponse(
|
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
|
||||||
request.getMsgId(),
|
"Monitoring settings updated", status);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,13 +5,19 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import ru.soune.nocopy.dto.monitoring.MonitoringStatusResponse;
|
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.file.*;
|
||||||
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
|
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
|
||||||
import ru.soune.nocopy.entity.monitoring.MonitoringType;
|
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.exception.UserNotHavePermission;
|
||||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||||
import ru.soune.nocopy.repository.FileMonitoringRepository;
|
import ru.soune.nocopy.repository.FileMonitoringRepository;
|
||||||
import ru.soune.nocopy.repository.FoundViolationRepository;
|
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.io.FileNotFoundException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -27,6 +33,10 @@ public class FileMonitoringService {
|
|||||||
|
|
||||||
private final FoundViolationRepository violationRepository;
|
private final FoundViolationRepository violationRepository;
|
||||||
|
|
||||||
|
private final TariffService tariffService;
|
||||||
|
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public FileMonitoringEntity setMonitoring(Long userId, String fileId, MonitoringType type) throws FileNotFoundException {
|
public FileMonitoringEntity setMonitoring(Long userId, String fileId, MonitoringType type) throws FileNotFoundException {
|
||||||
FileEntity file = fileRepository.findById(fileId)
|
FileEntity file = fileRepository.findById(fileId)
|
||||||
@@ -82,7 +92,7 @@ public class FileMonitoringService {
|
|||||||
public MonitoringStatusResponse getMonitoringStatus(String fileId, Long userId) {
|
public MonitoringStatusResponse getMonitoringStatus(String fileId, Long userId) {
|
||||||
FileMonitoringEntity monitoring = monitoringRepository.findByFileId(fileId).orElse(null);
|
FileMonitoringEntity monitoring = monitoringRepository.findByFileId(fileId).orElse(null);
|
||||||
FileEntity file = fileRepository.findById(fileId).orElseThrow();
|
FileEntity file = fileRepository.findById(fileId).orElseThrow();
|
||||||
|
User user = userRepository.findById(userId).orElseThrow();
|
||||||
long newViolations = violationRepository.countNewByUserId(userId);
|
long newViolations = violationRepository.countNewByUserId(userId);
|
||||||
|
|
||||||
return MonitoringStatusResponse.builder()
|
return MonitoringStatusResponse.builder()
|
||||||
@@ -94,7 +104,15 @@ public class FileMonitoringService {
|
|||||||
.lastRunStatus(monitoring != null ? monitoring.getLastRunStatus() : null)
|
.lastRunStatus(monitoring != null ? monitoring.getLastRunStatus() : null)
|
||||||
.isActive(monitoring != null && monitoring.isActive())
|
.isActive(monitoring != null && monitoring.isActive())
|
||||||
.newViolationsCount(newViolations)
|
.newViolationsCount(newViolations)
|
||||||
|
.needAddTokens(checkTokensForMonitoring(user, monitoring.getMonitoringType()))
|
||||||
.build();
|
.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