From b251439461c224be31fe123c4676ddbdbd356a59 Mon Sep 17 00:00:00 2001 From: Eduard Tihomiorv Date: Wed, 5 Nov 2025 15:11:13 +0300 Subject: [PATCH] SUPPORT-9536: Fix --- .../EmployeeInfoFileUploadService.java | 3 +++ .../security/esia/service/MchdService.java | 21 ++++++++++++++++--- .../common_errors_messages.properties | 3 ++- .../common_errors_messages_ru_RU.properties | 3 ++- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java b/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java index dffdbd32..92ad10fd 100644 --- a/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java +++ b/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java @@ -558,6 +558,9 @@ public class EmployeeInfoFileUploadService { throw new LocalizedException("mchd_cant_parse", MESSAGE_SOURCE); } MchdInfoModel mchdInfoModel = mchdService.getMchdInfoModel(mchdGuid); + if (mchdInfoModel == null) { + throw new LocalizedException("mchd_esia_error", MESSAGE_SOURCE); + } LocalDate now = LocalDate.now(); if (!mchdInfoModel.getStatus().equals("A")) { throw new LocalizedException("mchd_status_invalid", MESSAGE_SOURCE); diff --git a/backend/src/main/java/ru/micord/ervu/security/esia/service/MchdService.java b/backend/src/main/java/ru/micord/ervu/security/esia/service/MchdService.java index e9b4f6cb..612730fc 100644 --- a/backend/src/main/java/ru/micord/ervu/security/esia/service/MchdService.java +++ b/backend/src/main/java/ru/micord/ervu/security/esia/service/MchdService.java @@ -6,6 +6,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; @@ -37,19 +38,22 @@ public class MchdService { } try { HttpResponse response = executeRequest(accessToken, guid); - + if (isEsiaMchdNotFoundError(response)) { + return null; + } if (response.statusCode() != 200) { if (isNewToken) { throw new EsiaException(response.statusCode() + " " + response.body()); } accessToken = esiaAuthService.getSystemAccessToken(); response = executeRequest(accessToken, guid); - + if (isEsiaMchdNotFoundError(response)) { + return null; + } if (response.statusCode() != 200) { throw new EsiaException(response.statusCode() + " " + response.body()); } } - return objectMapper.readValue(response.body(), MchdInfoModel.class); } catch (Exception e) { @@ -70,4 +74,15 @@ public class MchdService { .build() .send(getReq, HttpResponse.BodyHandlers.ofString()); } + + private boolean isEsiaMchdNotFoundError(HttpResponse response) + throws JsonProcessingException { + if (response.statusCode() == 400) { + String errorCode = objectMapper.readTree(response.body()) + .get("code") + .asText(); + return errorCode.equals("ESIA-044009"); + } + return false; + } } diff --git a/backend/src/main/resources/messages/common_errors_messages.properties b/backend/src/main/resources/messages/common_errors_messages.properties index 95b211ea..59b110cf 100644 --- a/backend/src/main/resources/messages/common_errors_messages.properties +++ b/backend/src/main/resources/messages/common_errors_messages.properties @@ -18,4 +18,5 @@ mchd_tree_issued_on_invalid=У одной из родительских дове mchd_tree_expired=У одной из родительских доверенностей не наступил срок действия. Номер доверенности: {0} mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов. av_file_infected=Файлы заражены вирусом -mchd_cant_parse=Некорректный формат машиночитаемой доверенности \ No newline at end of file +mchd_cant_parse=Некорректный формат машиночитаемой доверенности +mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена. \ No newline at end of file diff --git a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties index ac7fbb91..da376823 100644 --- a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties +++ b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties @@ -18,4 +18,5 @@ mchd_tree_issued_on_invalid=У одной из родительских дове mchd_tree_expired=У одной из родительских доверенностей не наступил срок действия. Номер доверенности: {0} mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов. av_file_infected=Файлы заражены вирусом -mchd_cant_parse=Некорректный формат машиночитаемой доверенности \ No newline at end of file +mchd_cant_parse=Некорректный формат машиночитаемой доверенности +mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена. \ No newline at end of file