dev write off for search
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-02-05 17:25:50 +07:00
parent 7bb48f3944
commit adc978bea8
4 changed files with 11 additions and 6 deletions
@@ -3,13 +3,11 @@ package ru.soune.nocopy.handler;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import okhttp3.Response;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.soune.nocopy.dto.BaseRequest; import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse; import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode; import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.file.ImageSearchRequest; 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.FileEntity;
import ru.soune.nocopy.exception.NotValidFieldException; import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.repository.FileEntityRepository;
@@ -17,8 +15,9 @@ import ru.soune.nocopy.service.file.CheckCounterService;
import ru.soune.nocopy.service.search.SearchApiToYandexResponseMapper; import ru.soune.nocopy.service.search.SearchApiToYandexResponseMapper;
import ru.soune.nocopy.service.search.YandexSearchService; import ru.soune.nocopy.service.search.YandexSearchService;
import ru.soune.nocopy.service.search.GoogleVisionSearchService; import ru.soune.nocopy.service.search.GoogleVisionSearchService;
import ru.soune.nocopy.service.tariff.TariffConstants;
import ru.soune.nocopy.service.tariff.TariffInfoService;
import java.io.IOException;
import java.util.Map; import java.util.Map;
@Slf4j @Slf4j
@@ -36,6 +35,8 @@ public class ImageFoundRequestHandler implements RequestHandler {
private final FileEntityRepository fileEntityRepository; private final FileEntityRepository fileEntityRepository;
private final TariffInfoService tariffInfoService;
private final SearchApiToYandexResponseMapper mapper = new SearchApiToYandexResponseMapper(); private final SearchApiToYandexResponseMapper mapper = new SearchApiToYandexResponseMapper();
@Override @Override
@@ -61,6 +62,8 @@ public class ImageFoundRequestHandler implements RequestHandler {
String yandexReverseSearchResponse = yandexSearchService.searchReverseByPublicUrl(fileEntity); String yandexReverseSearchResponse = yandexSearchService.searchReverseByPublicUrl(fileEntity);
tariffInfoService.writeOffTokens(fileEntity.getUserId(), TariffConstants.TOKEN_VALUE_FOR_SEARCH);
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), mapper.mapToYandexResponse(yandexReverseSearchResponse)); MessageCode.SUCCESS.getDescription(), mapper.mapToYandexResponse(yandexReverseSearchResponse));
} }
@@ -24,6 +24,7 @@ import ru.soune.nocopy.service.FileSimilarityService;
import ru.soune.nocopy.service.ImageHashService; import ru.soune.nocopy.service.ImageHashService;
import ru.soune.nocopy.service.file.FileEntityService; import ru.soune.nocopy.service.file.FileEntityService;
import ru.soune.nocopy.service.file.FileUploadService; import ru.soune.nocopy.service.file.FileUploadService;
import ru.soune.nocopy.service.tariff.TariffConstants;
import ru.soune.nocopy.service.tariff.TariffInfoService; import ru.soune.nocopy.service.tariff.TariffInfoService;
import ru.soune.nocopy.util.FileUtil; import ru.soune.nocopy.util.FileUtil;
@@ -331,7 +332,7 @@ public class FileUploadServiceImpl implements FileUploadService {
completeFileProcessingAsync(session, status); completeFileProcessingAsync(session, status);
if (status != FileStatus.TEMP) { if (status != FileStatus.TEMP) {
tariffInfoService.writeOffTokens(session.getUserId()); tariffInfoService.writeOffTokens(session.getUserId(), TariffConstants.TOKEN_VALUE);
} }
} else { } else {
sessionRepository.save(session); sessionRepository.save(session);
@@ -14,4 +14,5 @@ public class TariffConstants {
public static final Integer ENTERPRISE_TOKENS = 400; public static final Integer ENTERPRISE_TOKENS = 400;
public static final Integer TOKEN_VALUE = 3; public static final Integer TOKEN_VALUE = 3;
public static final Integer TOKEN_VALUE_FOR_SEARCH = 5;
} }
@@ -40,7 +40,7 @@ public class TariffInfoService {
} }
@Transactional @Transactional
public void writeOffTokens(long userId) { public void writeOffTokens(long userId, Integer value) {
User user = userRepository.findById(userId).orElseThrow(); User user = userRepository.findById(userId).orElseThrow();
TariffInfo activeTariffInfo; TariffInfo activeTariffInfo;
@@ -53,7 +53,7 @@ public class TariffInfoService {
Integer tokens = activeTariffInfo.getTokens(); Integer tokens = activeTariffInfo.getTokens();
if (tokens - TariffConstants.TOKEN_VALUE > 0) { if (tokens - value > 0) {
activeTariffInfo.setTokens(activeTariffInfo.getTokens() - TariffConstants.TOKEN_VALUE); activeTariffInfo.setTokens(activeTariffInfo.getTokens() - TariffConstants.TOKEN_VALUE);
tariffInfoRepository.save(activeTariffInfo); tariffInfoRepository.save(activeTariffInfo);