From 82dd38db8dd4a2edfc8af6cc8800bca6156d4e8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=98=84=EC=84=B1=ED=95=84?= Date: Fri, 21 Nov 2025 17:47:07 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EC=88=98=EB=A3=8C=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CommissionController.java | 76 +++++++++++-------- .../apps/commission/dto/CommissionSearch.java | 4 - .../commission/service/ExternalService.java | 17 +++-- .../apim/portal/common/util/SecurityUtil.java | 8 +- 4 files changed, 60 insertions(+), 45 deletions(-) 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 c65daa1..4ca5ee7 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 @@ -6,6 +6,7 @@ import com.eactive.apim.portal.apps.commission.dto.CommissionSearch; import com.eactive.apim.portal.apps.commission.exception.ErrorUtil; import com.eactive.apim.portal.apps.commission.service.ExternalService; import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.portalproperty.service.PortalPropertyService; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; @@ -16,7 +17,6 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.collections.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.security.access.annotation.Secured; import org.springframework.stereotype.Controller; @@ -38,14 +38,7 @@ public class CommissionController { private final Logger log = LoggerFactory.getLogger(CommissionController.class); private final ExternalService externalService; - - @Value("${obm-url:http://localhost:8080}") - private String obmUrl; - - @Value("${provider-code:100001-01}") - private String providerCode; - - // ==================== View Controllers ==================== + private final PortalPropertyService portalPropertyService; @GetMapping("/manage") public String commissionManagePage(Model model) { @@ -66,11 +59,10 @@ public class CommissionController { search.setYear(year); search.setMonth(month); - search.setProvider(providerCode); - if (!StringUtils.isEmpty(search.getPartnerCode())) { try { - String url = obmUrl + Constants.COMMISSION_URL; + String obmUrl = portalPropertyService.getPortalPropertiesAsMap("Portal").getOrDefault("obp.obm.url", ""); + String url = obmUrl + Constants.COMMISSION_PRINT_URL; String result = externalService.getResponseHttpPost(url, toJson(search)); HashMap returnObj = new ObjectMapper().readValue(result, HashMap.class); @@ -85,10 +77,10 @@ public class CommissionController { search.setPartnerCode("000002-02"); String togetherResult = externalService.getResponseHttpPost(url, toJson(search)); - HashMap togetherLendingReturnObj = new ObjectMapper().readValue(togetherResult, HashMap.class); + HashMap togetherLendingReturnObj = new ObjectMapper().readValue(togetherResult, HashMap.class); log.debug("togetherLendingReturnObj : " + togetherLendingReturnObj.toString()); if (!StringUtils.isEmpty(togetherLendingReturnObj.get("error"))) { - HashMap error = (HashMap) togetherLendingReturnObj.get("error"); + HashMap error = (HashMap) togetherLendingReturnObj.get("error"); model.addAttribute("error", error.get("message").toString()); return "apps/commission/commissionPrint"; } @@ -119,11 +111,11 @@ public class CommissionController { @PostMapping() public ResponseEntity list(@RequestBody CommissionSearch search) { CommissionDTO commissionDTO = null; - search.setProvider(providerCode); search.setPartnerCode(SecurityUtil.getUserOrg().getOrgCode()); if (!StringUtils.isEmpty(search.getPartnerCode())) { try { + String obmUrl = portalPropertyService.getPortalPropertiesAsMap("Portal").getOrDefault("obp.obm.url", ""); String url = obmUrl + Constants.COMMISSION_URL; String result = externalService.getResponseHttpPost(url, toJson(search)); HashMap returnObj = new ObjectMapper().readValue(result, HashMap.class); @@ -170,6 +162,28 @@ public class CommissionController { } } + /** + * Safely parse double value from HashMap + * Handles both numeric types and string representations + */ + private double safeGetDouble(HashMap map, String key) { + Object value = map.get(key); + if (value == null) { + return 0.0; + } + try { + if (value instanceof Number) { + return ((Number) value).doubleValue(); + } else if (value instanceof String) { + return Double.parseDouble((String) value); + } + return 0.0; + } catch (NumberFormatException e) { + log.warn("Failed to parse double value for key: {} with value: {}", key, value); + return 0.0; + } + } + public HashMap mergeCommissionData(HashMap o1, HashMap o2) { HashMap mergeMap = new HashMap(); @@ -182,22 +196,22 @@ public class CommissionController { } else { resultStatus = o2Status; } - double apiTotalValueSum = MapUtils.getDouble(o1, "apiTotalValueSum") + MapUtils.getDouble(o2, "apiTotalValueSum"); - double apiSum = MapUtils.getDouble(o1, "apiSum") + MapUtils.getDouble(o2, "apiSum"); - double apiTotalValueSum2 = MapUtils.getDouble(o1, "apiTotalValueSum2") + MapUtils.getDouble(o2, "apiTotalValueSum2"); - double apiSum2 = MapUtils.getDouble(o1, "apiSum2") + MapUtils.getDouble(o2, "apiSum2"); - double productTotalValueCountSum = MapUtils.getDouble(o1, "productTotalValueCountSum") + MapUtils.getDouble(o2, "productTotalValueCountSum"); - double productTotalValueAmountSum = MapUtils.getDouble(o1, "productTotalValueAmountSum") + MapUtils.getDouble(o2, "productTotalValueAmountSum"); - double productSum = MapUtils.getDouble(o1, "productSum") + MapUtils.getDouble(o2, "productSum"); - double productTotalValueCountSum2 = MapUtils.getDouble(o1, "productTotalValueCountSum2") + MapUtils.getDouble(o2, "productTotalValueCountSum2"); - double productTotalValueAmountSum2 = MapUtils.getDouble(o1, "productTotalValueAmountSum2") + MapUtils.getDouble(o2, "productTotalValueAmountSum2"); - double productSum2 = MapUtils.getDouble(o1, "productSum2") + MapUtils.getDouble(o2, "productSum2"); - double totalValueCountSum = MapUtils.getDouble(o1, "totalValueCountSum") + MapUtils.getDouble(o2, "totalValueCountSum"); - double totalValueCountSum2 = MapUtils.getDouble(o1, "totalValueCountSum2") + MapUtils.getDouble(o2, "totalValueCountSum2"); - double totalValueAmountSum = MapUtils.getDouble(o1, "totalValueAmountSum") + MapUtils.getDouble(o2, "totalValueAmountSum"); - double totalValueAmountSum2 = MapUtils.getDouble(o1, "totalValueAmountSum2") + MapUtils.getDouble(o2, "totalValueAmountSum2"); - double sum = MapUtils.getDouble(o1, "sum") + MapUtils.getDouble(o2, "sum"); - double sum2 = MapUtils.getDouble(o1, "sum2") + MapUtils.getDouble(o2, "sum2"); + double apiTotalValueSum = safeGetDouble(o1, "apiTotalValueSum") + safeGetDouble(o2, "apiTotalValueSum"); + double apiSum = safeGetDouble(o1, "apiSum") + safeGetDouble(o2, "apiSum"); + double apiTotalValueSum2 = safeGetDouble(o1, "apiTotalValueSum2") + safeGetDouble(o2, "apiTotalValueSum2"); + double apiSum2 = safeGetDouble(o1, "apiSum2") + safeGetDouble(o2, "apiSum2"); + double productTotalValueCountSum = safeGetDouble(o1, "productTotalValueCountSum") + safeGetDouble(o2, "productTotalValueCountSum"); + double productTotalValueAmountSum = safeGetDouble(o1, "productTotalValueAmountSum") + safeGetDouble(o2, "productTotalValueAmountSum"); + double productSum = safeGetDouble(o1, "productSum") + safeGetDouble(o2, "productSum"); + double productTotalValueCountSum2 = safeGetDouble(o1, "productTotalValueCountSum2") + safeGetDouble(o2, "productTotalValueCountSum2"); + double productTotalValueAmountSum2 = safeGetDouble(o1, "productTotalValueAmountSum2") + safeGetDouble(o2, "productTotalValueAmountSum2"); + double productSum2 = safeGetDouble(o1, "productSum2") + safeGetDouble(o2, "productSum2"); + double totalValueCountSum = safeGetDouble(o1, "totalValueCountSum") + safeGetDouble(o2, "totalValueCountSum"); + double totalValueCountSum2 = safeGetDouble(o1, "totalValueCountSum2") + safeGetDouble(o2, "totalValueCountSum2"); + double totalValueAmountSum = safeGetDouble(o1, "totalValueAmountSum") + safeGetDouble(o2, "totalValueAmountSum"); + double totalValueAmountSum2 = safeGetDouble(o1, "totalValueAmountSum2") + safeGetDouble(o2, "totalValueAmountSum2"); + double sum = safeGetDouble(o1, "sum") + safeGetDouble(o2, "sum"); + double sum2 = safeGetDouble(o1, "sum2") + safeGetDouble(o2, "sum2"); List o1List = (ArrayList) o1.get("list"); List o2pList = (ArrayList) o2.get("list"); diff --git a/src/main/java/com/eactive/apim/portal/apps/commission/dto/CommissionSearch.java b/src/main/java/com/eactive/apim/portal/apps/commission/dto/CommissionSearch.java index ec8c4fe..70b1e78 100755 --- a/src/main/java/com/eactive/apim/portal/apps/commission/dto/CommissionSearch.java +++ b/src/main/java/com/eactive/apim/portal/apps/commission/dto/CommissionSearch.java @@ -1,6 +1,5 @@ package com.eactive.apim.portal.apps.commission.dto; -import com.eactive.apim.portal.portalorg.entity.PortalOrg; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,7 +14,4 @@ public class CommissionSearch { private String partnerCode; - private PortalOrg organization; - - private String provider; } 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 9087c90..561e720 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 @@ -1,7 +1,10 @@ package com.eactive.apim.portal.apps.commission.service; import com.eactive.apim.portal.apps.commission.constant.Constants; +import com.eactive.apim.portal.portalproperty.service.PortalPropertyService; +import java.util.Map; import javax.inject.Inject; +import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; @@ -22,16 +25,13 @@ import org.springframework.web.client.RestTemplate; */ @Service @Transactional +@RequiredArgsConstructor public class ExternalService { private final Logger log = LoggerFactory.getLogger(ExternalService.class); private final RestTemplate restTemplate; - - @Inject - public ExternalService(RestTemplate restTemplate) { - this.restTemplate = restTemplate; - } + private final PortalPropertyService portalPropertyService; /** * HTTP POST 요청을 통해 외부 API를 호출하고 응답을 받습니다. @@ -42,11 +42,14 @@ public class ExternalService { */ public String getResponseHttpPost(String url, String payload) { try { + + Map portalProperties = portalPropertyService.getPortalPropertiesAsMap("Portal"); + // HTTP 헤더 설정 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - headers.set(Constants.APIM_FOR_OBP_KEY, Constants.APIM_FOR_OBP_VALUE); - headers.set(Constants.APIM_CODE_FOR_OBP_KEY, Constants.APIM_CODE_FOR_OBP_VALUE); + headers.set(Constants.APIM_FOR_OBP_KEY, portalProperties.getOrDefault("obp.api_key","APIMPT-0002-QVBJTVBULTAwMDI=")); + headers.set(Constants.APIM_CODE_FOR_OBP_KEY, portalProperties.getOrDefault("obp.partner_code","100001-01")); // HTTP 요청 엔티티 생성 (헤더 + 본문) HttpEntity requestEntity = new HttpEntity<>(payload, headers); diff --git a/src/main/java/com/eactive/apim/portal/common/util/SecurityUtil.java b/src/main/java/com/eactive/apim/portal/common/util/SecurityUtil.java index f94d127..3c6520d 100644 --- a/src/main/java/com/eactive/apim/portal/common/util/SecurityUtil.java +++ b/src/main/java/com/eactive/apim/portal/common/util/SecurityUtil.java @@ -49,9 +49,11 @@ public final class SecurityUtil { public static PortalOrgDTO getUserOrg() { PortalOrgDTO portalOrgDTO = new PortalOrgDTO(); - if (Objects.requireNonNull(getPortalAuthenticatedUser()).getPortalOrg() != null) { - portalOrgDTO.setOrgName(getPortalAuthenticatedUser().getPortalOrg().getOrgName()); - portalOrgDTO.setId(getPortalAuthenticatedUser().getPortalOrg().getId()); + PortalAuthenticatedUser portalAuthenticatedUser = getPortalAuthenticatedUser(); + if (Objects.requireNonNull(portalAuthenticatedUser).getPortalOrg() != null) { + portalOrgDTO.setOrgName(portalAuthenticatedUser.getPortalOrg().getOrgName()); + portalOrgDTO.setId(portalAuthenticatedUser.getPortalOrg().getId()); + portalOrgDTO.setOrgCode(portalAuthenticatedUser.getPortalOrg().getOrgCode()); } return portalOrgDTO;