From c9921c6faca28597ce3f2002920ede5cb5345a24 Mon Sep 17 00:00:00 2001 From: vladp Date: Thu, 5 Mar 2026 10:05:18 +0700 Subject: [PATCH] dev add check for file check --- .../java/ru/soune/nocopy/dto/MessageCode.java | 2 ++ .../soune/nocopy/dto/cost/CostResponse.java | 6 ++++++ .../ru/soune/nocopy/handler/CostHandler.java | 21 +++++++++++++++++++ .../nocopy/service/cost/CostService.java | 4 ++-- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/dto/MessageCode.java b/src/main/java/ru/soune/nocopy/dto/MessageCode.java index af4360c..0261972 100644 --- a/src/main/java/ru/soune/nocopy/dto/MessageCode.java +++ b/src/main/java/ru/soune/nocopy/dto/MessageCode.java @@ -50,6 +50,8 @@ public enum MessageCode { USER_LIMIT_IS_OVER(2, "Over user limits"), ERROR_TARIFF_INFO(2, "Erorr with tariff info"), 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" + + "more than max valid"), USER_NOT_ACTIVE(2, "User not active"); private final Integer code; diff --git a/src/main/java/ru/soune/nocopy/dto/cost/CostResponse.java b/src/main/java/ru/soune/nocopy/dto/cost/CostResponse.java index 68b3058..7285870 100644 --- a/src/main/java/ru/soune/nocopy/dto/cost/CostResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/cost/CostResponse.java @@ -11,6 +11,12 @@ public class CostResponse { private Boolean success; + @JsonProperty("max_files_for_check") + private Integer maxFilesForCheck; + + @JsonProperty("count_file") + private Integer countFile; + @JsonProperty("tokens_count") private int needTokensCount; } diff --git a/src/main/java/ru/soune/nocopy/handler/CostHandler.java b/src/main/java/ru/soune/nocopy/handler/CostHandler.java index b6b130f..80234c6 100644 --- a/src/main/java/ru/soune/nocopy/handler/CostHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/CostHandler.java @@ -27,6 +27,8 @@ public class CostHandler implements RequestHandler { private final ObjectMapper objectMapper; + private final Integer MAX_FILES_FOR_CHECK = 1000; + @Override public BaseResponse handle(BaseRequest request) throws Exception { CostRequest costRequest = objectMapper.convertValue(request.getMessageBody(), CostRequest.class); @@ -46,6 +48,14 @@ public class CostHandler implements RequestHandler { private BaseResponse handleFileProtectCost(CostRequest costRequest, BaseRequest request) { int cost = costService.protectFileCost(costRequest.getFileType()); + if (cost == 0) { + return new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FILE_TYPE_OR_COUNT_FILE.getCode(), + MessageCode.NOT_VALID_FILE_TYPE_OR_COUNT_FILE.getDescription(), + CostResponse.builder() + .cost(cost) + .build()); + } + return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), MessageCode.SUCCESS.getDescription(), CostResponse.builder() @@ -70,6 +80,17 @@ public class CostHandler implements RequestHandler { int cost = costService.protectFileCost(costRequest.getFileType()); int count = costRequest.getCountFilesForProtect(); + + if (cost == 0 || count <= 0 || count > MAX_FILES_FOR_CHECK) { + return new BaseResponse(request.getMsgId(), MessageCode.NOT_VALID_FILE_TYPE_OR_COUNT_FILE.getCode(), + MessageCode.NOT_VALID_FILE_TYPE_OR_COUNT_FILE.getDescription(), + CostResponse.builder() + .cost(cost) + .countFile(count) + .maxFilesForCheck(MAX_FILES_FOR_CHECK) + .build()); + } + int totalCost = count * cost; boolean success = totalCost <= tokens; int needToken = success ? 0: tokens - totalCost; diff --git a/src/main/java/ru/soune/nocopy/service/cost/CostService.java b/src/main/java/ru/soune/nocopy/service/cost/CostService.java index 782f89f..536aef9 100644 --- a/src/main/java/ru/soune/nocopy/service/cost/CostService.java +++ b/src/main/java/ru/soune/nocopy/service/cost/CostService.java @@ -22,8 +22,8 @@ public class CostService { return TariffConstants.AUDIO_TOKEN_VALUE; case "document": return TariffConstants.PDF_TOKEN_VALUE; + default: + return cost; } - - return cost; } }