From 2fa1cefb75edb8d4e1460b1b0b9ac1c72d86f6ed Mon Sep 17 00:00:00 2001 From: JAEWOO HONG Date: Thu, 6 Nov 2025 14:13:17 +0900 Subject: [PATCH] =?UTF-8?q?ApiAdapterController.java=20=ED=8E=B8=EC=A7=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApiAdapterController.java | 54 ++++++++++++++++++- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java b/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java index 0b60677..ec24133 100644 --- a/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java +++ b/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java @@ -33,6 +33,14 @@ import com.eactive.eai.common.util.Logger; import com.eactive.eai.common.util.MessageUtil; import com.eactive.eai.common.util.UUIDGenerator; import com.eactive.eai.inbound.error.InboundErrorInfoVO; +import com.kjbank.encrypt.exchange.crypto.AES256Cipher; +import com.kjbank.encrypt.exchange.crypto.AES256GCMCipher; +import com.kjbank.encrypt.exchange.crypto.AESCipher; + +// jwhong +import org.json.simple.JSONObject; +import java.util.HashMap; +import java.util.Map; @RestController public class ApiAdapterController implements HttpAdapterServiceKey { @@ -87,8 +95,20 @@ public class ApiAdapterController implements HttpAdapterServiceKey { Properties transactionProp = new Properties(); try { String responseData = service.callApi(servletRequest, servletResponse, httpProp, adapterGroupVO, adapterVO, transactionProp); - if (RESPONSE_TYPE_ASYNC.equals(responseType)) { - responseEntity = ResponseEntity.ok("dummy"); + // if (RESPONSE_TYPE_ASYNC.equals(responseType)) { // table의 값이 ASYNC 로 들어가 있는데 response_type_async는 ASYN 로 되어 있어 아래처럼 비교함 jwhong 2025 + if ("ASYNC".equals(responseType)) { + //responseEntity = ResponseEntity.ok("dummy"); // comment by jwhong + servletResponse.addHeader("traceId", responseData); // uuid를 response header에 + int httpStatus = servletResponse.getStatus(); + if (httpStatus == 200) { + // 업체별 aync response message 가 다르다. + String asyncMsgStyle = httpProp.getProperty("ASYNC_RTNMSG_TYPE", "").toUpperCase(); + String responseBody = makeResponseBodyMsg(asyncMsgStyle); + responseEntity = ResponseEntity.status(httpStatus).contentType(mediaType).body(responseBody); + // jwhong + } else { + responseEntity = ResponseEntity.status(httpStatus).contentType(mediaType).body(responseData); + } } else { // responseEntity = ResponseEntity.ok().contentType(mediaType).body(responseData); // 버즈빌 포인트 적립 처리하기 위하여 정상응답이더라도 응답코드(apiRsltCd) 값이 200이 아닌 경우 처리를 위하여 수정 @@ -186,5 +206,35 @@ public class ApiAdapterController implements HttpAdapterServiceKey { InboundErrorLogger.error(errorInfoVO); } + + private String makeResponseBodyMsg(String asyncMsgStyle) { + + Map dataMap = new HashMap<>(); + dataMap.put("result", 1); + Map map = new HashMap<>(); + + switch (asyncMsgStyle) { + case "TB_SUC": + map.put("rspCode", "TB_SUC_000"); + map.put("rspMsg", "정상"); + map.put("data", dataMap); + break; + case "ONLYDATA": + map.put("data", dataMap); + map.put("success", "true"); + break; + default: + map.put("code", "200"); + map.put("data", dataMap); + map.put("message", "정상 처리 되었습니다."); + break; + } + + JSONObject json = new JSONObject(); + json.putAll(map); + + return json.toJSONString(); + } + } \ No newline at end of file