From 71d4b4d772325df390e1b2e562339988d9843bf1 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Mon, 22 Dec 2025 16:31:56 +0900 Subject: [PATCH] =?UTF-8?q?OBP=20=EC=88=98=EC=88=98=EB=A3=8C=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99=EC=8B=9C=20=EC=97=90=EB=9F=AC=20=EB=A9=94=EC=84=B8?= =?UTF-8?q?=EC=A7=80=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CommissionController.java | 14 ++++++++++++++ .../apps/commission/service/ExternalService.java | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/src/main/java/com/eactive/apim/portal/apps/commission/controller/CommissionController.java b/src/main/java/com/eactive/apim/portal/apps/commission/controller/CommissionController.java index 4ca5ee7..2781e8a 100755 --- a/src/main/java/com/eactive/apim/portal/apps/commission/controller/CommissionController.java +++ b/src/main/java/com/eactive/apim/portal/apps/commission/controller/CommissionController.java @@ -64,6 +64,10 @@ public class CommissionController { String obmUrl = portalPropertyService.getPortalPropertiesAsMap("Portal").getOrDefault("obp.obm.url", ""); String url = obmUrl + Constants.COMMISSION_PRINT_URL; String result = externalService.getResponseHttpPost(url, toJson(search)); + if (StringUtils.isEmpty(result)) { + model.addAttribute("error", "외부 서버 연결에 실패하였습니다."); + return "apps/commission/commissionPrint"; + } HashMap returnObj = new ObjectMapper().readValue(result, HashMap.class); if (!StringUtils.isEmpty(returnObj.get("error"))) { @@ -76,6 +80,10 @@ public class CommissionController { log.debug("Found Together : " + search.getPartnerCode()); search.setPartnerCode("000002-02"); String togetherResult = externalService.getResponseHttpPost(url, toJson(search)); + if (StringUtils.isEmpty(togetherResult)) { + model.addAttribute("error", "외부 서버 연결에 실패하였습니다."); + return "apps/commission/commissionPrint"; + } HashMap togetherLendingReturnObj = new ObjectMapper().readValue(togetherResult, HashMap.class); log.debug("togetherLendingReturnObj : " + togetherLendingReturnObj.toString()); @@ -118,6 +126,9 @@ public class CommissionController { String obmUrl = portalPropertyService.getPortalPropertiesAsMap("Portal").getOrDefault("obp.obm.url", ""); String url = obmUrl + Constants.COMMISSION_URL; String result = externalService.getResponseHttpPost(url, toJson(search)); + if (StringUtils.isEmpty(result)) { + return ErrorUtil.create("fail.commission.serverError", "외부 서버 연결에 실패하였습니다."); + } HashMap returnObj = new ObjectMapper().readValue(result, HashMap.class); if (!StringUtils.isEmpty(returnObj.get("error"))) { HashMap error = (HashMap) returnObj.get("error"); @@ -128,6 +139,9 @@ public class CommissionController { log.debug("Found Together : " + search.getPartnerCode()); search.setPartnerCode("000002-02"); String togetherResult = externalService.getResponseHttpPost(url, toJson(search)); + if (StringUtils.isEmpty(togetherResult)) { + return ErrorUtil.create("fail.commission.serverError", "외부 서버 연결에 실패하였습니다."); + } HashMap togetherLendingReturnObj = new ObjectMapper().readValue(togetherResult, HashMap.class); log.debug("togetherLendingReturnObj : " + togetherLendingReturnObj.toString()); diff --git a/src/main/java/com/eactive/apim/portal/apps/commission/service/ExternalService.java b/src/main/java/com/eactive/apim/portal/apps/commission/service/ExternalService.java index 561e720..e55e506 100755 --- a/src/main/java/com/eactive/apim/portal/apps/commission/service/ExternalService.java +++ b/src/main/java/com/eactive/apim/portal/apps/commission/service/ExternalService.java @@ -13,6 +13,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; @@ -60,6 +61,14 @@ public class ExternalService { // 응답 본문 반환 return response.getBody(); + } catch (HttpStatusCodeException e) { + // 4xx, 5xx 에러더라도 응답 본문이 있으면 반환 (에러 메시지 포함) + String responseBody = e.getResponseBodyAsString(); + log.warn("HTTP error from external API: url={}, status={}, body={}", url, e.getStatusCode(), responseBody); + if (responseBody != null && !responseBody.isEmpty()) { + return responseBody; + } + return null; } catch (RestClientException e) { log.error("Failed to call external API: url={}, error={}", url, e.getMessage(), e); return null;