add document
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-02-06 22:21:51 +07:00
parent 682c21ba73
commit daadc82bbb
6 changed files with 54 additions and 13 deletions
@@ -59,6 +59,21 @@ public class FileInfoUserResponse {
@JsonProperty("audios_violations") @JsonProperty("audios_violations")
private Integer audiosViolations; private Integer audiosViolations;
@JsonProperty("document_size")
private Long documentSize;
@JsonProperty("document_quantity")
private Integer documentCount;
@JsonProperty("document_check")
private Integer documentCheck;
@JsonProperty("document_violations")
private Integer documentViolations;
@JsonProperty("protected_document_files_count")
private Long protectedDocumentFilesCount;
@JsonProperty("protected_files_count") @JsonProperty("protected_files_count")
private Long protectedFilesCount; private Long protectedFilesCount;
@@ -7,11 +7,12 @@ import java.util.List;
@Getter @Getter
public enum FileType { public enum FileType {
// IMAGE("image", Arrays.asList("jpg", "jpeg", "png", "gif", "bmp", "webp", "jfif")),
IMAGE("image", Arrays.asList("jpg", "jpeg", "png", "gif", "bmp")), IMAGE("image", Arrays.asList("jpg", "jpeg", "png", "gif", "bmp")),
VIDEO("video", Arrays.asList("mp4", "avi", "mov", "wmv", "flv", "mkv", "webm", "m4v", "mpg", "mpeg", VIDEO("video", Arrays.asList("mp4", "avi", "mov", "wmv", "flv", "mkv", "webm", "m4v", "mpg", "mpeg",
"3gp", "3g2", "f4v", "m2ts", "mts", "vob", "ogv", "divx")), "3gp", "3g2", "f4v", "m2ts", "mts", "vob", "ogv", "divx")),
AUDIO("audio", List.of("wav")); AUDIO("audio", List.of("wav")),
DOCUMENT("document", Arrays.asList("pdf", "txt", "doc", "docx"));
private final String displayName; private final String displayName;
private final List<String> allowedExtensions; private final List<String> allowedExtensions;
@@ -0,0 +1,7 @@
package ru.soune.nocopy.exception;
public class MaxUserCountIsOver extends RuntimeException {
public MaxUserCountIsOver(String message) {
super(message);
}
}
@@ -55,6 +55,12 @@ public class FileStatsService {
.audiosCheck(calculateMediaByStatus(files, FileType.AUDIO, FileStatus.CHECKED)) .audiosCheck(calculateMediaByStatus(files, FileType.AUDIO, FileStatus.CHECKED))
.audiosViolations(calculateMediaByStatus(files, FileType.AUDIO, FileStatus.VIOLATION)) .audiosViolations(calculateMediaByStatus(files, FileType.AUDIO, FileStatus.VIOLATION))
.protectedAudioFilesCount(protectedUserFiles(files, FileType.AUDIO)) .protectedAudioFilesCount(protectedUserFiles(files, FileType.AUDIO))
.documentSize(calculateMediaSize(files, FileType.DOCUMENT))
.documentCount(calculateMediaCount(files, FileType.DOCUMENT))
.documentCheck(calculateMediaByStatus(files, FileType.DOCUMENT, FileStatus.CHECKED))
.documentViolations(calculateMediaByStatus(files, FileType.DOCUMENT, FileStatus.VIOLATION))
.protectedDocumentFilesCount(protectedUserFiles(files, FileType.DOCUMENT))
.build(); .build();
} }
@@ -382,7 +382,7 @@ public class FileUploadServiceImpl implements FileUploadService {
return TariffConstants.IMAGE_TOKEN_VALUE; return TariffConstants.IMAGE_TOKEN_VALUE;
case "audio": case "audio":
return TariffConstants.AUDIO_TOKEN_VALUE; return TariffConstants.AUDIO_TOKEN_VALUE;
case "pdf": case "document":
return TariffConstants.PDF_TOKEN_VALUE; return TariffConstants.PDF_TOKEN_VALUE;
} }
@@ -1,5 +1,6 @@
package ru.soune.nocopy.service.register; package ru.soune.nocopy.service.register;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -10,11 +11,13 @@ import ru.soune.nocopy.dto.register.LoginAnswer;
import ru.soune.nocopy.dto.register.LoginRequest; import ru.soune.nocopy.dto.register.LoginRequest;
import ru.soune.nocopy.dto.register.RegRequest; import ru.soune.nocopy.dto.register.RegRequest;
import ru.soune.nocopy.entity.company.Company; import ru.soune.nocopy.entity.company.Company;
import ru.soune.nocopy.entity.tarif.Tariff;
import ru.soune.nocopy.entity.tarif.TariffInfo; import ru.soune.nocopy.entity.tarif.TariffInfo;
import ru.soune.nocopy.entity.tarif.TariffType; 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.Permission; import ru.soune.nocopy.entity.user.Permission;
import ru.soune.nocopy.entity.user.User; import ru.soune.nocopy.entity.user.User;
import ru.soune.nocopy.exception.MaxUserCountIsOver;
import ru.soune.nocopy.exception.NotFoundAuthToken; import ru.soune.nocopy.exception.NotFoundAuthToken;
import ru.soune.nocopy.exception.NotValidFieldException; import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.repository.AuthTokenRepository; import ru.soune.nocopy.repository.AuthTokenRepository;
@@ -176,20 +179,29 @@ public class AuthService {
private void createIndividualCompanyAccount(RegRequest request, User user) { private void createIndividualCompanyAccount(RegRequest request, User user) {
String authToken = request.getAuthToken(); String authToken = request.getAuthToken();
Long userIdByToken = authTokenRepository.findUserIdByToken(authToken); Long userIdByToken = authTokenRepository.findUserIdByToken(authToken);
User companyUser = userRepository.findById(userIdByToken).orElseThrow(); User companyUser = userRepository.findById(userIdByToken)
.orElseThrow(() -> new EntityNotFoundException("Not found token: " + authToken));
Company company = companyUser.getCompany(); Company company = companyUser.getCompany();
TariffInfo tariffInfo = company.getTariffInfo(); if (company == null) {
throw new IllegalStateException("Not have company");
Long maxUsers = tariffInfo.getTariff().getMaxUsers();
long currentCountUsers = userRepository.countByCompanyId(company.getId());
//TODO add exception
if (currentCountUsers < maxUsers) {
throw new RuntimeException();
} }
user.setCompany(companyUser.getCompany()); TariffInfo tariffInfo = company.getTariffInfo();
if (tariffInfo == null) {
throw new IllegalStateException("Company not have tariff");
}
Tariff tariff = tariffInfo.getTariff();
Long maxUsers = tariff.getMaxUsers();
long currentCountUsers = userRepository.countByCompanyId(company.getId());
if (currentCountUsers >= maxUsers) {
throw new MaxUserCountIsOver(
String.format("Max user is over. " + "Has: %d, current count: %d", maxUsers, currentCountUsers));
}
user.setCompany(company);
user.grantPermission(Permission.DEFAULT_USER_PERMISSIONS); user.grantPermission(Permission.DEFAULT_USER_PERMISSIONS);
} }
} }