diff --git a/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java b/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java index b7441d8..1a542d4 100644 --- a/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java @@ -11,9 +11,11 @@ import ru.soune.nocopy.dto.MessageCode; import ru.soune.nocopy.dto.file.ImageSearchRequest; import ru.soune.nocopy.dto.file.YandexSearchResponse; import ru.soune.nocopy.entity.file.FileEntity; +import ru.soune.nocopy.entity.file.ImageHashEntity; import ru.soune.nocopy.entity.tokenoperation.OperationType; import ru.soune.nocopy.exception.NotValidFieldException; import ru.soune.nocopy.repository.FileEntityRepository; +import ru.soune.nocopy.repository.ImageHashRepository; import ru.soune.nocopy.repository.SimilarImageProjection; import ru.soune.nocopy.service.FileSimilarityService; import ru.soune.nocopy.service.ImageHashService; @@ -51,6 +53,8 @@ public class ImageFoundRequestHandler implements RequestHandler { private final ImageHashService imageHashService; + private final ImageHashRepository imageHashRepository; + private final FileSimilarityService fileSimilarityService; @Override @@ -137,6 +141,7 @@ public class ImageFoundRequestHandler implements RequestHandler { int page = imageSearchRequest.getPage() != null ? imageSearchRequest.getPage() : 1; int pageSize = 5; + boolean checkSimilar = imageSearchRequest.getCheckSimilarFirst() == null ? true: imageSearchRequest.getCheckSimilarFirst(); @@ -151,10 +156,10 @@ public class ImageFoundRequestHandler implements RequestHandler { Map hashSearchApiFile = imageHashService.calculateHash(Paths.get(filePath)); - Map hashCheckFile = imageHashService.calculateHash(Paths.get(fileEntity.getFilePath())); + ImageHashEntity checkFileHash = imageHashRepository.findByFileId(fileId); - boolean hashesAreEqual = hashSearchApiFile.get("hi").equals(hashCheckFile.get("hi")) - && hashSearchApiFile.get("low").equals(hashCheckFile.get("low")); + boolean hashesAreEqual = hashSearchApiFile.get("hi").equals(checkFileHash.getHash64Hi()) + && hashSearchApiFile.get("low").equals(checkFileHash.getHash64Lo()); if (!hashesAreEqual) { return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), diff --git a/src/main/java/ru/soune/nocopy/repository/ImageHashRepository.java b/src/main/java/ru/soune/nocopy/repository/ImageHashRepository.java index e67b15d..524d03a 100644 --- a/src/main/java/ru/soune/nocopy/repository/ImageHashRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/ImageHashRepository.java @@ -13,7 +13,7 @@ import java.util.List; @Repository public interface ImageHashRepository extends JpaRepository { void deleteByFileId(String fileId); - List findByFileId(String fileId); + ImageHashEntity findByFileId(String fileId); ImageHashEntity findByHash64HiAndHash64Lo(Long hash64Hi, Long hash64Lo); @Modifying @Transactional