This commit is contained in:
@@ -12,14 +12,22 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import ru.soune.nocopy.entity.file.FileEntity;
|
||||
import ru.soune.nocopy.entity.file.ProtectionStatus;
|
||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||
import ru.soune.nocopy.util.FileUtil;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Configuration
|
||||
@EnableAutoConfiguration
|
||||
@AllArgsConstructor
|
||||
public class ApplicationConfig {
|
||||
|
||||
private final FileEntityRepository fileEntityRepository;
|
||||
|
||||
private final FileUtil fileUtil;
|
||||
|
||||
@Bean
|
||||
PasswordEncoder passwordEncoder() {
|
||||
return new BCryptPasswordEncoder();
|
||||
@@ -36,8 +44,11 @@ public class ApplicationConfig {
|
||||
AudioFilePathProvider audioFilePathProvider,
|
||||
DocumentLocalSearch documentLocalSearch) {
|
||||
|
||||
List<FileProtector.FileInfo> initialFiles = loadProcessingFile();
|
||||
|
||||
//TODO инициализация файлов при создании
|
||||
return new com.vrt.NoCopyFileService(
|
||||
Collections.emptyList(),
|
||||
initialFiles,
|
||||
fileProvider,
|
||||
processingListener,
|
||||
imageUniqueCheck,
|
||||
@@ -47,5 +58,13 @@ public class ApplicationConfig {
|
||||
documentLocalSearch
|
||||
);
|
||||
}
|
||||
|
||||
private List<FileProtector.FileInfo> loadProcessingFile() {
|
||||
List<FileEntity> byProtectionStatus =
|
||||
fileEntityRepository.findByProtectionStatus(ProtectionStatus.PROCESSING);
|
||||
|
||||
return byProtectionStatus.stream().map(fileEntity ->
|
||||
fileUtil.createFileInfo(fileEntity, null)).toList();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -87,6 +87,9 @@ public class FileEntity {
|
||||
@Column(name = "medium_path")
|
||||
private String mediumPath;
|
||||
|
||||
@Column
|
||||
private String newExtension;
|
||||
|
||||
@OneToOne(mappedBy = "file", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonIgnore
|
||||
private ImageHashEntity imageHash;
|
||||
|
||||
@@ -31,7 +31,7 @@ public interface ImageSimilarityRepository
|
||||
JOIN file_entities f
|
||||
ON f.id = h.file_id
|
||||
WHERE ref.file_id = :fileId
|
||||
AND f.status = 'ACTIVE'
|
||||
AND f.status IN ('ACTIVE', 'MODERATION')
|
||||
""",
|
||||
nativeQuery = true)
|
||||
List<SimilarImageProjection> findCandidates(
|
||||
|
||||
@@ -178,7 +178,8 @@ public class FileSimilarityService {
|
||||
imageHashEntity.getHash64Hi(),
|
||||
imageHashEntity.getHash64Lo(), userIds))
|
||||
.filter(dto -> levels.contains(dto.getSimilarityLevel()))
|
||||
.filter(dto -> dto.getFileStatus().equals(FileStatus.ACTIVE.name()))
|
||||
.filter(dto -> !dto.getOwner() &&
|
||||
dto.getFileStatus().equals(FileStatus.MODERATION.name()))
|
||||
.sorted(Comparator.comparingInt(SimilarFileDTO::getHammingDistance))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -227,6 +228,9 @@ public class FileSimilarityService {
|
||||
level = "DIFFERENT";
|
||||
}
|
||||
|
||||
boolean owner = userIds.contains(similarImageProjection.getUserId());
|
||||
|
||||
|
||||
return SimilarFileDTO.builder()
|
||||
.fileId(similarImageProjection.getId())
|
||||
.ownerId(similarImageProjection.getUserId())
|
||||
@@ -239,7 +243,7 @@ public class FileSimilarityService {
|
||||
.supportId(similarImageProjection.getSupportId())
|
||||
.uploadDate(similarImageProjection.getUploadDate())
|
||||
.status(similarImageProjection.getProtectionStatus())
|
||||
.owner(userIds.contains(similarImageProjection.getUserId()))
|
||||
.owner(owner)
|
||||
// .url(baseUrl + "/api/files/protected/" + similarImageProjection.getId())
|
||||
.url(baseUrl + "/api/files/protected/" + similarImageProjection.getId() + "/thumbnail")
|
||||
.fileStatus(similarImageProjection.getFileStatus())
|
||||
|
||||
Reference in New Issue
Block a user