From 305d5d226c3563866cf82d7becfc392c01fb2b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=98=84=EC=9A=B1?= Date: Thu, 12 Feb 2026 15:15:07 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=B0=EC=86=A1=EB=B9=84=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=20=EC=88=98=EC=A0=95(4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mtng/controller/BOMaMtngController.java | 111 +++- .../mtng/service/BOMaMtngService.java | 2 + .../goods/purchs/service/BOOrderService.java | 610 ++++++++++++++---- .../goods/purchs/service/BOPurchsService.java | 8 +- .../ordr/ordr/service/BOOrdrService.java | 21 +- .../ordr/controller/OrdrController.java | 72 +++ .../WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp | 28 + .../WEB-INF/views/sopmal/ordr/SpbkPtinR.jsp | 2 +- 8 files changed, 688 insertions(+), 166 deletions(-) diff --git a/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/controller/BOMaMtngController.java b/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/controller/BOMaMtngController.java index 66400034..94bb819a 100644 --- a/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/controller/BOMaMtngController.java +++ b/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/controller/BOMaMtngController.java @@ -286,6 +286,13 @@ public class BOMaMtngController { return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.NOT_FOUND); } } else { +// if (CollectionUtils.isEmpty(multiOrdrDlvylc)) { +// log.info("배송지 정보를 찾을 수 없습니다."); +// content.put("result","Y"); +// content.put("message", "배송지 정보를 찾을 수 없습니다."); +// // throw new WnbtRestException("주문유형 정보를 찾을 수 없습니다."); +// return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.NOT_FOUND); +// } if (CollectionUtils.isEmpty(shipping)) { log.info("배송지 정보를 찾을 수 없습니다."); content.put("result","Y"); @@ -322,27 +329,91 @@ public class BOMaMtngController { String[] receptMbtlnbArray = null; // 배송지 받는이 휴대폰번호 if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원개인결제, 정기배송 - if ( - StringUtil.isEmpty((String) shipping.get("dlvylcZip")) || - StringUtil.isEmpty((String) shipping.get("dlvylcAdresDvCd")) || - ( "01".equals(shipping.get("dlvylcAdresDvCd")) && StringUtil.isEmpty((String) shipping.get("dlvylcRnmAdres")) ) || - ( "02".equals(shipping.get("dlvylcAdresDvCd")) && StringUtil.isEmpty((String) shipping.get("dlvylcLnbAdres")) ) || - StringUtil.isEmpty((String) shipping.get("dlvylcAdresDtl")) - ) { - content.put("result","Y"); - content.put("message", "배송지 정보를 찾을 수 없습니다. 다시 시도해 주세요."); - return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.NOT_FOUND); + if (!CollectionUtils.isEmpty(multiOrdrDlvylc)) { + + // 배송지 리스트 + List> dlvylcListMulti = (List>) multiOrdrDlvylc.get("dlvylc"); + + /** ----------------------------------------------- 배송지별 주문 상품 수량 검사 START ----------------------------------------------- */ + content = checkDistributedQyMatchesOrder(goodsList, dlvylcListMulti); + if (!"0".equals(content.get("status"))) { + return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.NOT_FOUND); + } + /** ----------------------------------------------- 배송지별 주문 상품 수량 검사 END ----------------------------------------------- */ + + // 부정판매 체크를 위한 배송지 정렬 + if (!CollectionUtils.isEmpty(dlvylcListMulti)) { + + boolean hasInvalidAddress = dlvylcListMulti.stream().anyMatch(map -> { + String dlvylcZip = StringUtil.isNullToString(map.get("dlvylcZip")); + String adresDvCd = StringUtil.isNullToString(map.get("dlvylcAdresDvCd")); + String dlvylcLnbAdres = StringUtil.isNullToString(map.get("dlvylcLnbAdres")); + String dlvylcRnmAdres = StringUtil.isNullToString(map.get("dlvylcRnmAdres")); + String adresDtl = StringUtil.isNullToString(map.get("dlvylcAdresDtl")); + + return StringUtil.isEmpty(dlvylcZip) + || StringUtil.isEmpty(adresDvCd) + || ("01".equals(adresDvCd) && StringUtil.isEmpty(dlvylcRnmAdres)) + || ("02".equals(adresDvCd) && StringUtil.isEmpty(dlvylcLnbAdres)) + || StringUtil.isEmpty(adresDtl); + }); + + if (hasInvalidAddress) { + content.put("result","Y"); + content.put("message", "배송지 정보를 찾을 수 없습니다. 다시 시도해 주세요."); + return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.NOT_FOUND); + } + + List adresList = dlvylcListMulti.stream() + .map(map -> { + String adresDvCd = StringUtil.isNullToString(map.get("dlvylcAdresDvCd")); + String adresDtl = StringUtil.isNullToString(map.get("dlvylcAdresDtl")); + String dlvylcLnbAdres = StringUtil.isNullToString(map.get("dlvylcLnbAdres")); + String dlvylcRnmAdres = StringUtil.isNullToString(map.get("dlvylcRnmAdres")); + String adresMulti; + if ("01".equals(adresDvCd)) { + adresMulti = dlvylcRnmAdres + " " + adresDtl; + } else { + adresMulti = dlvylcLnbAdres + " " + adresDtl; + } + + return adresMulti; + }) + .collect(Collectors.toList()); + + adresArray = adresList.toArray(new String[0]); + + List receptMbtlnbList = dlvylcListMulti.stream() + .map(map -> { + return StringUtil.isNullToString(map.get("recpntMbtlnb")); + }) + .collect(Collectors.toList()); + + receptMbtlnbArray = receptMbtlnbList.toArray(new String[0]); + + } } - - String dlvylcAdresDvCd = (String) shipping.get("dlvylcAdresDvCd"); - String dlvylcLnbAdres = (String) shipping.get("dlvylcLnbAdres"); - String dlvylcRnmAdres = (String) shipping.get("dlvylcRnmAdres"); - String dlvylcAdresDtl = (String) shipping.get("dlvylcAdresDtl"); - - adres = "01".equals(dlvylcAdresDvCd) ? dlvylcRnmAdres + " " + dlvylcAdresDtl : dlvylcLnbAdres + " " + dlvylcAdresDtl; - - String recpntMbtlnb = StringUtil.isNullToString(shipping.get("recpntMbtlnb")); - receptMbtlnbArray = new String[]{recpntMbtlnb}; +// if ( +// StringUtil.isEmpty((String) shipping.get("dlvylcZip")) || +// StringUtil.isEmpty((String) shipping.get("dlvylcAdresDvCd")) || +// ( "01".equals(shipping.get("dlvylcAdresDvCd")) && StringUtil.isEmpty((String) shipping.get("dlvylcRnmAdres")) ) || +// ( "02".equals(shipping.get("dlvylcAdresDvCd")) && StringUtil.isEmpty((String) shipping.get("dlvylcLnbAdres")) ) || +// StringUtil.isEmpty((String) shipping.get("dlvylcAdresDtl")) +// ) { +// content.put("result","Y"); +// content.put("message", "배송지 정보를 찾을 수 없습니다. 다시 시도해 주세요."); +// return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.NOT_FOUND); +// } +// +// String dlvylcAdresDvCd = (String) shipping.get("dlvylcAdresDvCd"); +// String dlvylcLnbAdres = (String) shipping.get("dlvylcLnbAdres"); +// String dlvylcRnmAdres = (String) shipping.get("dlvylcRnmAdres"); +// String dlvylcAdresDtl = (String) shipping.get("dlvylcAdresDtl"); +// +// adres = "01".equals(dlvylcAdresDvCd) ? dlvylcRnmAdres + " " + dlvylcAdresDtl : dlvylcLnbAdres + " " + dlvylcAdresDtl; +// +// String recpntMbtlnb = StringUtil.isNullToString(shipping.get("recpntMbtlnb")); +// receptMbtlnbArray = new String[]{recpntMbtlnb}; } else if ("05".equals(ordrTyCd)) { // 여러곳 배송 if (!CollectionUtils.isEmpty(multiOrdrDlvylc)) { diff --git a/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/service/BOMaMtngService.java b/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/service/BOMaMtngService.java index 252746f9..e4654da1 100644 --- a/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/service/BOMaMtngService.java +++ b/src/main/java/com/wb/domainserver/domain/admin/instcSle/mtng/service/BOMaMtngService.java @@ -406,6 +406,8 @@ public class BOMaMtngService { List goodsList = (List) param.get("goodsList"); // 상품정보 LinkedHashMap enuri = (LinkedHashMap) param.get("enuri"); // 할인정보 + log.debug("selectBOPreOrderValidationList-goodsList: {}",goodsList); + //사용한 장바구니 쿠폰 //비회원의 경우 enuri 자체가 없어서 isEmpty 확인 List usedCartCouponList = new ArrayList<>(); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java index 73d42a8a..06aebd80 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOOrderService.java @@ -81,19 +81,6 @@ public class BOOrderService { log.debug("결제정보 => {} ", new Gson().toJson(setle)); log.debug("사은품 => {} ", new Gson().toJson(prsntList)); - /** 여러곳 배송 배송지 세팅 시작 */ - LinkedHashMap multiOrdrDlvylcMap = new LinkedHashMap<>(); - List> dlvylcListMulti = new ArrayList<>(); - - multiOrdrDlvylcMap = (LinkedHashMap) param.get("multiOrdrDlvylc"); - log.debug("multiOrdrDlvylcMap : {}", multiOrdrDlvylcMap); - if (!CollectionUtils.isEmpty(multiOrdrDlvylcMap)) { - // 배송지 리스트 - dlvylcListMulti = (List>) multiOrdrDlvylcMap.get("dlvylc"); - log.debug("dlvylcListMulti : {}", dlvylcListMulti); - } - /** 여러곳 배송 배송지 세팅 종료 */ - String sopmalCd = ""; if("01".equals(user.getSysDvCd())){ sopmalCd = user.getSopmalCd(); @@ -103,6 +90,85 @@ public class BOOrderService { String ordrTyCd = (String) param.get("ordrTyCd"); + log.debug("insertMngrOrdrRegist-param : {}", param); + + /* ***************************** + 0. 여러곳 배송 배송지 세팅 + ***************************** */ + /** 여러곳 배송 배송지 세팅 시작 */ + LinkedHashMap multiOrdrDlvylcMap = new LinkedHashMap<>(); + List> dlvylcListMulti = new ArrayList<>(); + multiOrdrDlvylcMap = (LinkedHashMap) param.get("multiOrdrDlvylc"); + log.debug("multiOrdrDlvylcMap : {}", multiOrdrDlvylcMap); + + if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "04".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원 개인결제, 정기배송 + + for(int i=0;i itemGoodsList = new ArrayList<>(); + itemGoodsList.add(goodsList.get(i)); + for (LinkedHashMap itemGoodsMap : itemGoodsList) { + itemGoodsMap.put("qy", 1); + } + List itempPrsntList = new ArrayList<>(); + if(!prsntList.isEmpty()){ + itempPrsntList.add(prsntList.get(i)); + for (LinkedHashMap itemPrsntMap : itempPrsntList) { + itemPrsntMap.put("qy", 1); + } + } + + for(int j=0;j dlvyMap = new LinkedHashMap<>(); + + dlvyMap.put("dftDlvyAmt", itemDftDlvyAmt.intValue()); + dlvyMap.put("dlvyAmt", itemDlvyAmt.intValue()); + dlvyMap.put("couponInnb", 0); + dlvyMap.put("dwldCouponInnb", 0); + dlvyMap.put("dplctDscntAt", ""); + dlvyMap.put("otrCouponSmtmUseAt", ""); + dlvyMap.put("mngrFreeDlvyUseAt", "N"); + dlvyMap.put("dlvylcZip", shipping.get("dlvylcZip")); + dlvyMap.put("recpntNm", shipping.get("recpntNm")); + dlvyMap.put("recpntMbtlnb", shipping.get("recpntMbtlnb")); + dlvyMap.put("dlvylcAdresDvCd", shipping.get("dlvylcAdresDvCd")); + dlvyMap.put("dlvylcLnbAdres", shipping.get("dlvylcLnbAdres")); + dlvyMap.put("dlvylcRnmAdres", shipping.get("dlvylcRnmAdres")); + dlvyMap.put("dlvylcAdresDtl", shipping.get("dlvylcAdresDtl")); + dlvyMap.put("dlvyMssageCn", shipping.get("dlvyMssageCn")); + dlvyMap.put("goodsList", itemGoodsList); + dlvyMap.put("prsntList", itempPrsntList); //prsntList.get(i)); + + dlvylcListMulti.add(dlvyMap); + } + } + + + + } else if ("05".equals(ordrTyCd)) { // 여러곳 배송, 선물하기 + if (!CollectionUtils.isEmpty(multiOrdrDlvylcMap)) { + // 배송지 리스트 + dlvylcListMulti = (List>) multiOrdrDlvylcMap.get("dlvylc"); + log.debug("dlvylcListMulti : {}", dlvylcListMulti); + } + } + /** 여러곳 배송 배송지 세팅 종료 */ + /* ***************************** 1. 주문등록(GC_ORDER) ***************************** */ @@ -128,122 +194,387 @@ public class BOOrderService { BOOrderShippingVO shippingEscrowVO = new BOOrderShippingVO(); if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "04".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원 개인결제, 정기배송 - BOOrderShippingVO shippingVO = new BOOrderShippingVO(); + log.debug("여러곳 배송 > 배송지별 배송정보 => {} ", new Gson().toJson(dlvylcListMulti)); - shippingVO.setSopmalCd(sopmalCd); - shippingVO.setOrdrInnb(ordrInnb); - shippingVO.setMngrInnb(orderVO.getMngrInnb()); - shippingVO.setMbrInnb(orderVO.getMbrInnb()); - shippingVO.setOrdrSttusCd(orderVO.getOrdrSttusCd()); - shippingVO.setMngrFreeDlvyUseAt(StringUtil.isNullToString(shipping.get("mngrFreeDlvyUseAt")) != "" ? StringUtil.isNullToString(shipping.get("mngrFreeDlvyUseAt")) : "N"); + // 짜투리 계산을 위해 상품별 수량 체크 + List goodsSetList = new ArrayList<>(); + for (LinkedHashMap multiGoods : goodsList) { + int multiGoodsInnb = (int) multiGoods.get("goodsInnb"); + int multiGoodsOptnInnb = (int) multiGoods.get("goodsOptnInnb"); - /* ***************************************** - 5. 주문배송 정보 등록(GC_ORDER_SHIPPING) - ***************************************** */ + LinkedHashMap baseGoods = goodsList.stream() + .filter(goods -> + Objects.equals((int) goods.get("goodsInnb"), multiGoodsInnb) && + Objects.equals((int) goods.get("goodsOptnInnb"), multiGoodsOptnInnb) + ) + .findFirst() + .orElse(null); - insertShipping(ordrTyCd, shipping, shippingVO); - shippingEscrowVO = shippingVO; //에스크로에 보낼 배송정보 - - BigInteger ordrDlvyInnb = shippingVO.getOrdrDlvyInnb(); - - String mngrFreeDlvyUseAt = (String) shipping.get("mngrFreeDlvyUseAt"); - - if ("Y".equals(mngrFreeDlvyUseAt)) { // TODO : cjh : 2025-02-28 무료 배송비 : 'Y' 일 경우 애누리에 할인 금액 세팅 -> 배송비 0원에 여부 데이터만 세팅으로 변경 됌. -// BigDecimal dscntAmt = new BigDecimal(StringUtils.hasText((String) enuri.get("enuriAmt")) ? (String) enuri.get("enuriAmt") : "0"); -// BigDecimal mngrFreeDlvyUseAmt = new BigDecimal((String) shipping.get("mngrFreeDlvyUseAmt")); - - // enuri.put("enuriAmt", dscntAmt.add(mngrFreeDlvyUseAmt).toString()); - } - - // 분배된 할인 금액 누적 - BOOrderRestAmtVO discountInfo = new BOOrderRestAmtVO(); - - int optionSeqIndex = 1; - BOOrderNoVO optionNoVO = new BOOrderNoVO(); - optionNoVO.setOrdrInnb(ordrInnb); - for (int i = 0; i < goodsList.size(); i++) { - LinkedHashMap goods = goodsList.get(i); - - boolean isLast = i == goodsList.size() - 1; - - if (!CollectionUtils.isEmpty(goods)) { - int goodsInnb = (int) goods.get("goodsInnb"); - int goodsOptnInnb = (int) goods.get("goodsOptnInnb"); - int ordrQy = (int) goods.get("qy"); - - BOOrderItemVO orderItemVO = insertedGoodsList.stream().filter(obj-> Objects.equals(ordrInnb, obj.getOrdrInnb()) && - Objects.equals(BigInteger.valueOf(goodsInnb), obj.getGoodsInnb())).findAny().orElse(null); - - /* *********************************************** - 6. 주문 상품 옵션 정보 등록(GC_ORDER_ITEM_OPTION) - 주문 상품 입력 옵션 정보 등록 - *********************************************** */ - if (orderItemVO != null) { - BOOrderItemOptnVO itemOptnVO = new BOOrderItemOptnVO(); - - itemOptnVO.setSopmalCd(sopmalCd); - itemOptnVO.setOrdrGoodsInnb(orderItemVO.getOrdrGoodsInnb()); - itemOptnVO.setOrdrDlvyInnb(ordrDlvyInnb); - itemOptnVO.setOrdrInnb(ordrInnb); - itemOptnVO.setOrdrSttusCd("0"); // 주문상태(99:결제실패) - - setGoodsOptn(sopmalCd, goodsInnb, goodsOptnInnb, ordrQy, itemOptnVO); // 상품 옵션정보 세팅 - - setDscntDtls(goodsInnb, goodsOptnInnb, null, goodsList, shipping, enuri, itemOptnVO, isLast, isLast, discountInfo); // 상품 할인내역 세팅 - - if (StringUtils.hasText((String) purchsr.get("mbrId"))) { // 회원 - setMlgAmt(ordrTyCd, goodsInnb, goodsOptnInnb, ordrQy, goodsList, itemOptnVO); // 상품 마일리지 정보 세팅 - } else { - itemOptnVO.setMlgAccmlUnit(new BigDecimal(0)); // 마일리지적립금액(개당) - itemOptnVO.setMlgAccmlRest(new BigDecimal(0)); // 마일리지적립금액(짜투리) - } - - itemOptnVO.setOrdrGoodsOptnInnb(orderNoService.generateOrderItemOptnNo()); - mapper.insertOrdrGoodsOption(itemOptnVO); // 주문 상품 옵션 정보 등록 - - String inputOptn = (String) goods.get("inputOptn"); - - if (StringUtils.hasText(inputOptn)) { - String[] inputOptns = inputOptn.split("/"); - - for (int j = 0; j < inputOptns.length; j++) { - String optn = inputOptns[j]; - String[] optns = optn.split(","); - - BOOrderItemOptnVO inputOptnVO = new BOOrderItemOptnVO(); - - inputOptnVO.setSopmalCd(sopmalCd); // 쇼핑몰 코드 - inputOptnVO.setOrdrGoodsInnb(orderItemVO.getOrdrGoodsInnb()); // 주문상품 고유번호 - inputOptnVO.setOrdrDlvyInnb(ordrDlvyInnb); // 주문배송 고유번호 - inputOptnVO.setOrdrSttusCd(orderVO.getOrdrSttusCd()); - inputOptnVO.setRelateOrdrGoodsOptnInnb(itemOptnVO.getOrdrGoodsOptnInnb()); - - setGoodsOptn(optns[0], Integer.parseInt(optns[1]), Integer.parseInt(optns[2]), 0, inputOptnVO); - - if (i == 0) { - inputOptnVO.setOptnVal1(optns[3]); - } else if (i == 1) { - inputOptnVO.setOptnVal2(optns[3]); - } else if (i == 2) { - inputOptnVO.setOptnVal3(optns[3]); - } else if (i == 3) { - inputOptnVO.setOptnVal4(optns[3]); - } - - itemOptnVO.setOrdrGoodsOptnInnb(orderNoService.generateOrderItemOptnNo()); - mapper.insertOrdrGoodsOption(inputOptnVO); // 주문 상품 입력 옵션 정보 등록 - } - } - } + if (baseGoods != null) { + LinkedHashMap merged = new LinkedHashMap<>(baseGoods); + merged.put("setQy", 0); + goodsSetList.add(merged); } } - /* *********************************************************** - 7. 주문 상품 옵션(사은품) 정보 등록(GC_ORDER_ITEM_OPTION) - *********************************************************** */ - if (!CollectionUtils.isEmpty(prsntList)) { - insertPrsnt(sopmalCd, ordrInnb, shippingVO.getOrdrDlvyInnb(), prsntList); + log.debug("상품별 수량 체크 : {}", goodsSetList); + + + if (!CollectionUtils.isEmpty(dlvylcListMulti)) { + + // 배송지별 상품 수량 합산 - isLast 찾기 위함. + List> allMergedGoodsList = new ArrayList<>(); + + for (LinkedHashMap dlvylcMapMulti : dlvylcListMulti) { + List goodsListMulti = (List) dlvylcMapMulti.get("goodsList"); + + for (LinkedHashMap multiGoods : goodsListMulti) { + int multiGoodsInnb = (int) multiGoods.get("goodsInnb"); + int multiGoodsOptnInnb = (int) multiGoods.get("goodsOptnInnb"); + + LinkedHashMap baseGoods = goodsList.stream() + .filter(goods -> + Objects.equals((int) goods.get("goodsInnb"), multiGoodsInnb) && + Objects.equals((int) goods.get("goodsOptnInnb"), multiGoodsOptnInnb) + ) + .findFirst() + .orElse(null); + + if (baseGoods != null) { + LinkedHashMap merged = new LinkedHashMap<>(baseGoods); + allMergedGoodsList.add(merged); + } + } + } + + // 분배된 할인 금액 누적 + BOOrderRestAmtVO discountInfo = new BOOrderRestAmtVO(); + int allGoodsCount = 0; // 전체 상품 순번 + + for (LinkedHashMap dlvylcMapMulti : dlvylcListMulti) { + log.debug("dlvylcMapMulti : {}", dlvylcMapMulti); + + BOOrderShippingVO shippingVO = new BOOrderShippingVO(); + + shippingVO.setSopmalCd(sopmalCd); + shippingVO.setOrdrInnb(ordrInnb); + shippingVO.setMngrInnb(orderVO.getMngrInnb()); + shippingVO.setMbrInnb(orderVO.getMbrInnb()); + shippingVO.setOrdrSttusCd(orderVO.getOrdrSttusCd()); + shippingVO.setMngrFreeDlvyUseAt(StringUtil.isNullToString(dlvylcMapMulti.get("mngrFreeDlvyUseAt")) != "" ? StringUtil.isNullToString(dlvylcMapMulti.get("mngrFreeDlvyUseAt")) : "N"); + + /* ***************************************** + 5. 주문배송 정보 등록(GC_ORDER_SHIPPING) + ***************************************** */ + insertShipping(ordrTyCd, dlvylcMapMulti, shippingVO); + shippingEscrowVO = shippingVO; //에스크로에 보낼 배송정보 + + BigInteger ordrDlvyInnb = shippingVO.getOrdrDlvyInnb(); + + String mngrFreeDlvyUseAt = (String) dlvylcMapMulti.get("mngrFreeDlvyUseAt"); + + if ("Y".equals(mngrFreeDlvyUseAt)) { // TODO : cjh : 2025-02-28 무료 배송비 : 'Y' 일 경우 애누리에 할인 금액 세팅 -> 배송비 0원에 여부 데이터만 세팅으로 변경 됌. +// BigDecimal dscntAmt = new BigDecimal(StringUtils.hasText((String) enuri.get("enuriAmt")) ? (String) enuri.get("enuriAmt") : "0"); +// BigDecimal mngrFreeDlvyUseAmt = new BigDecimal((String) dlvylcMapMulti.get("mngrFreeDlvyUseAmt")); + + // enuri.put("enuriAmt", dscntAmt.add(mngrFreeDlvyUseAmt).toString()); + } + + + List goodsListMulti = (List) dlvylcMapMulti.get("goodsList"); + + List mergedGoodsList = new ArrayList<>(); + + /** CJH + * 배송지별 상품 정보 머지 + * 여러곳 배송일 경우 서버에서 계산해온 상품 정보를 배송지별 수량에 맞게 분배하다보니 + * 상품 정보와 배송지별 수량정보를 합쳐주는 작업이 필요함 + * * 일반 주분에서 이벤트 할인 금액, 쿠폰 적용 처리, 적립 마일리지 계산을 배송지별로 계속해서 계산하는데에 어려움이 있어 상품은 유지하고 배송지별로 분배하는 방법을 채택함. + */ + for (LinkedHashMap multiGoods : goodsListMulti) { + int multiGoodsInnb = (int) multiGoods.get("goodsInnb"); + int multiGoodsOptnInnb = (int) multiGoods.get("goodsOptnInnb"); + + // 머지대상 + int qy = (int) multiGoods.get("qy"); // 주문 수량 + + // goodsList에서 상세 정보 찾기 + LinkedHashMap baseGoods = goodsList.stream() + .filter(goods -> + Objects.equals((int) goods.get("goodsInnb"), multiGoodsInnb) && + Objects.equals((int) goods.get("goodsOptnInnb"), multiGoodsOptnInnb) + ) + .findFirst() + .orElse(null); + + if (baseGoods != null) { + // 병합 + LinkedHashMap merged = new LinkedHashMap<>(baseGoods); + merged.put("baseQy", merged.get("qy")); // 총 상품별 주문 수량 유지 + merged.put("qy", qy); // 수량은 배송지별 정보 우선 + mergedGoodsList.add(merged); + } + } + + log.debug("머지 작업 후 mergedGoodsList : {}", mergedGoodsList); + log.debug("머지 작업 후 goodsList : {}", goodsList); + + + /** ------------------------------------------- 사은품 세팅 시작 ------------------------------------------- */ + List prsntListMulti = (List) dlvylcMapMulti.get("prsntList"); + + List mergedPrsntList = new ArrayList<>(); + + /** CJH + * 배송지별 상품 정보 머지 + * 여러곳 배송일 경우 서버에서 계산해온 상품 정보를 배송지별 수량에 맞게 분배하다보니 + * 상품 정보와 배송지별 수량정보를 합쳐주는 작업이 필요함 + * * 일반 주분에서 이벤트 할인 금액, 쿠폰 적용 처리, 적립 마일리지 계산을 배송지별로 계속해서 계산하는데에 어려움이 있어 상품은 유지하고 배송지별로 분배하는 방법을 채택함. + */ + for (LinkedHashMap multiGoods : prsntListMulti) { + int multiGoodsInnb = (int) multiGoods.get("goodsInnb"); + int multiGoodsOptnInnb = (int) multiGoods.get("goodsOptnInnb"); + + // 머지대상 + int qy = (int) multiGoods.get("provdCnt"); // 주문 수량 + + // goodsList에서 상세 정보 찾기 + LinkedHashMap baseGoods = prsntList.stream() + .filter(goods -> + Objects.equals((int) goods.get("goodsInnb"), multiGoodsInnb) && + Objects.equals((int) goods.get("goodsOptnInnb"), multiGoodsOptnInnb) + ) + .findFirst() + .orElse(null); + + if (baseGoods != null) { + // 병합 + LinkedHashMap merged = new LinkedHashMap<>(baseGoods); + merged.put("baseQy", merged.get("provdCnt")); // 총 상품별 주문 수량 유지 + merged.put("provdCnt", qy); // 수량은 배송지별 정보 우선 + mergedPrsntList.add(merged); + } + } + + log.debug("머지 작업 후 mergedPrsntList : {}", mergedPrsntList); + log.debug("머지 작업 후 prsntList : {}", prsntList); + /** ------------------------------------------- 사은품 세팅 끝 ------------------------------------------- */ + + + + for (int i = 0; i < mergedGoodsList.size(); i++) { + LinkedHashMap goods = mergedGoodsList.get(i); + + boolean isLast = allGoodsCount == allMergedGoodsList.size() - 1; + + if (!CollectionUtils.isEmpty(goods)) { + int goodsInnb = (int) goods.get("goodsInnb"); + int goodsOptnInnb = (int) goods.get("goodsOptnInnb"); + int ordrQy = (int) goods.get("qy"); + + BOOrderItemVO orderItemVO = insertedGoodsList.stream().filter(obj-> Objects.equals(ordrInnb, obj.getOrdrInnb()) && + Objects.equals(BigInteger.valueOf(goodsInnb), obj.getGoodsInnb())).findAny().orElse(null); + + /* *********************************************** + 6. 주문 상품 옵션 정보 등록(GC_ORDER_ITEM_OPTION) + 주문 상품 입력 옵션 정보 등록 + *********************************************** */ + if (orderItemVO != null) { + BOOrderItemOptnVO itemOptnVO = new BOOrderItemOptnVO(); + + itemOptnVO.setSopmalCd(sopmalCd); + itemOptnVO.setOrdrGoodsInnb(orderItemVO.getOrdrGoodsInnb()); + itemOptnVO.setOrdrDlvyInnb(ordrDlvyInnb); + itemOptnVO.setOrdrInnb(ordrInnb); + itemOptnVO.setOrdrSttusCd("0"); // 주문상태(99:결제실패) + + setGoodsOptn(sopmalCd, goodsInnb, goodsOptnInnb, ordrQy, itemOptnVO); // 상품 옵션정보 세팅 + + LinkedHashMap goodsSet = goodsSetList.stream().filter(obj-> Objects.equals(goodsInnb, obj.get("goodsInnb")) && Objects.equals(goodsOptnInnb, obj.get("goodsOptnInnb"))).findAny().orElse(null); + + setDscntDtlsMulti(goodsInnb, goodsOptnInnb, null, mergedGoodsList, dlvylcMapMulti, enuri, itemOptnVO, isLast, isLast, discountInfo, goodsList, goodsSet); // 상품 할인내역 세팅 - 여러곳 배송 + + if (StringUtils.hasText((String) purchsr.get("mbrId"))) { // 회원 + setMlgAmtMulti(ordrTyCd, goodsInnb, goodsOptnInnb, ordrQy, mergedGoodsList, itemOptnVO, goodsSet); // 상품 마일리지 정보 세팅 - 여러곳 배송 + } else { + itemOptnVO.setMlgAccmlUnit(new BigDecimal(0)); // 마일리지적립금액(개당) + itemOptnVO.setMlgAccmlRest(new BigDecimal(0)); // 마일리지적립금액(짜투리) + } + + itemOptnVO.setOrdrGoodsOptnInnb(orderNoService.generateOrderItemOptnNo()); + mapper.insertOrdrGoodsOption(itemOptnVO); // 주문 상품 옵션 정보 등록 + + // 상품별 수량 체크 + goodsSet.put("setQy", (int) goodsSet.get("setQy") + ordrQy); + + String inputOptn = (String) goods.get("inputOptn"); + + if (StringUtils.hasText(inputOptn)) { + String[] inputOptns = inputOptn.split("/"); + + for (int j = 0; j < inputOptns.length; j++) { + String optn = inputOptns[j]; + String[] optns = optn.split(","); + + BOOrderItemOptnVO inputOptnVO = new BOOrderItemOptnVO(); + + inputOptnVO.setSopmalCd(sopmalCd); // 쇼핑몰 코드 + inputOptnVO.setOrdrGoodsInnb(orderItemVO.getOrdrGoodsInnb()); // 주문상품 고유번호 + inputOptnVO.setOrdrDlvyInnb(ordrDlvyInnb); // 주문배송 고유번호 + inputOptnVO.setOrdrSttusCd(orderVO.getOrdrSttusCd()); + inputOptnVO.setRelateOrdrGoodsOptnInnb(itemOptnVO.getOrdrGoodsOptnInnb()); + + setGoodsOptn(optns[0], Integer.parseInt(optns[1]), Integer.parseInt(optns[2]), 0, inputOptnVO); + + if (i == 0) { + inputOptnVO.setOptnVal1(optns[3]); + } else if (i == 1) { + inputOptnVO.setOptnVal2(optns[3]); + } else if (i == 2) { + inputOptnVO.setOptnVal3(optns[3]); + } else if (i == 3) { + inputOptnVO.setOptnVal4(optns[3]); + } + + itemOptnVO.setOrdrGoodsOptnInnb(orderNoService.generateOrderItemOptnNo()); + mapper.insertOrdrGoodsOption(inputOptnVO); // 주문 상품 입력 옵션 정보 등록 + } + } + } + } + + // 전체 수량의 마지막 체크 + allGoodsCount = allGoodsCount + 1; + } + + /* *********************************************************** + 7. 주문 상품 옵션(사은품) 정보 등록(GC_ORDER_ITEM_OPTION) + *********************************************************** */ + if (!CollectionUtils.isEmpty(prsntList)) { + insertPrsnt(sopmalCd, ordrInnb, ordrDlvyInnb, mergedPrsntList); + } + + } + } + + +// BOOrderShippingVO shippingVO = new BOOrderShippingVO(); +// +// shippingVO.setSopmalCd(sopmalCd); +// shippingVO.setOrdrInnb(ordrInnb); +// shippingVO.setMngrInnb(orderVO.getMngrInnb()); +// shippingVO.setMbrInnb(orderVO.getMbrInnb()); +// shippingVO.setOrdrSttusCd(orderVO.getOrdrSttusCd()); +// shippingVO.setMngrFreeDlvyUseAt(StringUtil.isNullToString(shipping.get("mngrFreeDlvyUseAt")) != "" ? StringUtil.isNullToString(shipping.get("mngrFreeDlvyUseAt")) : "N"); +// +// /* ***************************************** +// 5. 주문배송 정보 등록(GC_ORDER_SHIPPING) +// ***************************************** */ +// +// insertShipping(ordrTyCd, shipping, shippingVO); +// shippingEscrowVO = shippingVO; //에스크로에 보낼 배송정보 +// +// BigInteger ordrDlvyInnb = shippingVO.getOrdrDlvyInnb(); +// +// String mngrFreeDlvyUseAt = (String) shipping.get("mngrFreeDlvyUseAt"); +// +// if ("Y".equals(mngrFreeDlvyUseAt)) { // TODO : cjh : 2025-02-28 무료 배송비 : 'Y' 일 경우 애누리에 할인 금액 세팅 -> 배송비 0원에 여부 데이터만 세팅으로 변경 됌. +//// BigDecimal dscntAmt = new BigDecimal(StringUtils.hasText((String) enuri.get("enuriAmt")) ? (String) enuri.get("enuriAmt") : "0"); +//// BigDecimal mngrFreeDlvyUseAmt = new BigDecimal((String) shipping.get("mngrFreeDlvyUseAmt")); +// +// // enuri.put("enuriAmt", dscntAmt.add(mngrFreeDlvyUseAmt).toString()); +// } +// +// // 분배된 할인 금액 누적 +// BOOrderRestAmtVO discountInfo = new BOOrderRestAmtVO(); +// +// int optionSeqIndex = 1; +// BOOrderNoVO optionNoVO = new BOOrderNoVO(); +// optionNoVO.setOrdrInnb(ordrInnb); +// for (int i = 0; i < goodsList.size(); i++) { +// LinkedHashMap goods = goodsList.get(i); +// +// boolean isLast = i == goodsList.size() - 1; +// +// if (!CollectionUtils.isEmpty(goods)) { +// int goodsInnb = (int) goods.get("goodsInnb"); +// int goodsOptnInnb = (int) goods.get("goodsOptnInnb"); +// int ordrQy = (int) goods.get("qy"); +// +// BOOrderItemVO orderItemVO = insertedGoodsList.stream().filter(obj-> Objects.equals(ordrInnb, obj.getOrdrInnb()) && +// Objects.equals(BigInteger.valueOf(goodsInnb), obj.getGoodsInnb())).findAny().orElse(null); +// +// /* *********************************************** +// 6. 주문 상품 옵션 정보 등록(GC_ORDER_ITEM_OPTION) +// 주문 상품 입력 옵션 정보 등록 +// *********************************************** */ +// if (orderItemVO != null) { +// BOOrderItemOptnVO itemOptnVO = new BOOrderItemOptnVO(); +// +// itemOptnVO.setSopmalCd(sopmalCd); +// itemOptnVO.setOrdrGoodsInnb(orderItemVO.getOrdrGoodsInnb()); +// itemOptnVO.setOrdrDlvyInnb(ordrDlvyInnb); +// itemOptnVO.setOrdrInnb(ordrInnb); +// itemOptnVO.setOrdrSttusCd("0"); // 주문상태(99:결제실패) +// +// setGoodsOptn(sopmalCd, goodsInnb, goodsOptnInnb, ordrQy, itemOptnVO); // 상품 옵션정보 세팅 +// +// setDscntDtls(goodsInnb, goodsOptnInnb, null, goodsList, shipping, enuri, itemOptnVO, isLast, isLast, discountInfo); // 상품 할인내역 세팅 +// +// if (StringUtils.hasText((String) purchsr.get("mbrId"))) { // 회원 +// setMlgAmt(ordrTyCd, goodsInnb, goodsOptnInnb, ordrQy, goodsList, itemOptnVO); // 상품 마일리지 정보 세팅 +// } else { +// itemOptnVO.setMlgAccmlUnit(new BigDecimal(0)); // 마일리지적립금액(개당) +// itemOptnVO.setMlgAccmlRest(new BigDecimal(0)); // 마일리지적립금액(짜투리) +// } +// +// itemOptnVO.setOrdrGoodsOptnInnb(orderNoService.generateOrderItemOptnNo()); +// mapper.insertOrdrGoodsOption(itemOptnVO); // 주문 상품 옵션 정보 등록 +// +// String inputOptn = (String) goods.get("inputOptn"); +// +// if (StringUtils.hasText(inputOptn)) { +// String[] inputOptns = inputOptn.split("/"); +// +// for (int j = 0; j < inputOptns.length; j++) { +// String optn = inputOptns[j]; +// String[] optns = optn.split(","); +// +// BOOrderItemOptnVO inputOptnVO = new BOOrderItemOptnVO(); +// +// inputOptnVO.setSopmalCd(sopmalCd); // 쇼핑몰 코드 +// inputOptnVO.setOrdrGoodsInnb(orderItemVO.getOrdrGoodsInnb()); // 주문상품 고유번호 +// inputOptnVO.setOrdrDlvyInnb(ordrDlvyInnb); // 주문배송 고유번호 +// inputOptnVO.setOrdrSttusCd(orderVO.getOrdrSttusCd()); +// inputOptnVO.setRelateOrdrGoodsOptnInnb(itemOptnVO.getOrdrGoodsOptnInnb()); +// +// setGoodsOptn(optns[0], Integer.parseInt(optns[1]), Integer.parseInt(optns[2]), 0, inputOptnVO); +// +// if (i == 0) { +// inputOptnVO.setOptnVal1(optns[3]); +// } else if (i == 1) { +// inputOptnVO.setOptnVal2(optns[3]); +// } else if (i == 2) { +// inputOptnVO.setOptnVal3(optns[3]); +// } else if (i == 3) { +// inputOptnVO.setOptnVal4(optns[3]); +// } +// +// itemOptnVO.setOrdrGoodsOptnInnb(orderNoService.generateOrderItemOptnNo()); +// mapper.insertOrdrGoodsOption(inputOptnVO); // 주문 상품 입력 옵션 정보 등록 +// } +// } +// } +// } +// } +// +// /* *********************************************************** +// 7. 주문 상품 옵션(사은품) 정보 등록(GC_ORDER_ITEM_OPTION) +// *********************************************************** */ +// if (!CollectionUtils.isEmpty(prsntList)) { +// insertPrsnt(sopmalCd, ordrInnb, shippingVO.getOrdrDlvyInnb(), prsntList); +// } } else if ("05".equals(ordrTyCd)) { // 여러곳 배송, 선물하기 log.debug("여러곳 배송 > 배송지별 배송정보 => {} ", new Gson().toJson(dlvylcListMulti)); @@ -1219,18 +1550,30 @@ public class BOOrderService { shippingVO.setDlvyMthCd("01"); // 택배 if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원개인결제, 정기배송 - shippingVO.setRecpntNm((String) shipping.get("recpntNm")); - shippingVO.setRecpntTelnb((String) shipping.get("recpntTelnb")); - shippingVO.setRecpntMbtlnb((String) shipping.get("recpntMbtlnb")); + shippingVO.setRecpntNm(StringUtil.isNullToString(shipping.get("recpntNm"))); + shippingVO.setRecpntTelnb(StringUtil.isNullToString(shipping.get("recpntTelnb"))); + shippingVO.setRecpntMbtlnb(StringUtil.isNullToString(shipping.get("recpntMbtlnb"))); - shippingVO.setDlvylcZip((String) shipping.get("dlvylcZip")); - shippingVO.setDlvylcAdresDvCd((String) shipping.get("dlvylcAdresDvCd")); - shippingVO.setDlvylcLnbAdres((String) shipping.get("dlvylcLnbAdres")); - shippingVO.setDlvylcRnmAdres((String) shipping.get("dlvylcRnmAdres")); - shippingVO.setDlvylcAdresDtl((String) shipping.get("dlvylcAdresDtl")); + shippingVO.setDlvylcZip(StringUtil.isNullToString(shipping.get("dlvylcZip"))); + shippingVO.setDlvylcAdresDvCd(StringUtil.isNullToString(shipping.get("dlvylcAdresDvCd"))); + shippingVO.setDlvylcLnbAdres(StringUtil.isNullToString(shipping.get("dlvylcLnbAdres"))); + shippingVO.setDlvylcRnmAdres(StringUtil.isNullToString(shipping.get("dlvylcRnmAdres"))); + shippingVO.setDlvylcAdresDtl(StringUtil.isNullToString(shipping.get("dlvylcAdresDtl"))); - shippingVO.setDlvyMssageCn((String) shipping.get("dlvyMssageCn")); - shippingVO.setDlvyCycleCd((String) shipping.get("dlvyCycleCd")); + shippingVO.setDlvyMssageCn(StringUtil.isNullToString(shipping.get("dlvyMssageCn"))); + shippingVO.setDlvyCycleCd(StringUtil.isNullToString(shipping.get("dlvyCycleCd"))); +// shippingVO.setRecpntNm((String) shipping.get("recpntNm")); +// shippingVO.setRecpntTelnb((String) shipping.get("recpntTelnb")); +// shippingVO.setRecpntMbtlnb((String) shipping.get("recpntMbtlnb")); +// +// shippingVO.setDlvylcZip((String) shipping.get("dlvylcZip")); +// shippingVO.setDlvylcAdresDvCd((String) shipping.get("dlvylcAdresDvCd")); +// shippingVO.setDlvylcLnbAdres((String) shipping.get("dlvylcLnbAdres")); +// shippingVO.setDlvylcRnmAdres((String) shipping.get("dlvylcRnmAdres")); +// shippingVO.setDlvylcAdresDtl((String) shipping.get("dlvylcAdresDtl")); +// +// shippingVO.setDlvyMssageCn((String) shipping.get("dlvyMssageCn")); +// shippingVO.setDlvyCycleCd((String) shipping.get("dlvyCycleCd")); } if ("05".equals(ordrTyCd)) { // 여러곳 배송 @@ -2194,6 +2537,9 @@ public class BOOrderService { throw new WnbtRestException("주문배송 정보를 찾을 수 없습니다."); } } else { +// if (CollectionUtils.isEmpty(multiOrdrDlvylc)) { +// throw new WnbtRestException("주문배송 정보를 찾을 수 없습니다."); +// } if (CollectionUtils.isEmpty(shipping)) { throw new WnbtRestException("주문배송 정보를 찾을 수 없습니다."); } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOPurchsService.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOPurchsService.java index 529601b5..a92e3cd3 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOPurchsService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/purchs/service/BOPurchsService.java @@ -1925,7 +1925,7 @@ public class BOPurchsService { if (dlvylc.get("dlvyAmt") != null) { dlvyAmtBydlvylc = dlvyAmtBydlvylc + castAmt(dlvylc, "dlvyAmt"); } else { - dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd); if (!CollectionUtils.isEmpty(dlvyAmtMap)) { dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue(); @@ -1950,7 +1950,7 @@ public class BOPurchsService { if (dlvylcMap.get("dlvyAmt") != null) { dlvyAmtBydlvylc = dlvyAmtBydlvylc + castAmt(dlvylcMap, "dlvyAmt"); } else { - dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd); if (!CollectionUtils.isEmpty(dlvyAmtMap)) { dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue(); @@ -1961,7 +1961,7 @@ public class BOPurchsService { dlvyAmt = new BigDecimal(dlvyAmtBydlvylc); } } else { - dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMap = getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd); if (!CollectionUtils.isEmpty(dlvyAmtMap)) { dlvyAmt = (BigDecimal) dlvyAmtMap.get("dlvyAmt"); @@ -2107,7 +2107,7 @@ public class BOPurchsService { * @param goodsList * @return List */ - public DataMap getDlvyAmt(List goodsList, String sopmalCd, String defaultAdressAt, String dlvylcAreaCd, String prefcd) { + public DataMap getDlvyAmt(List goodsList, String sopmalCd, String defaultAdressAt, String dlvylcAreaCd) { DataMap dlvyAmtMap = null; log.debug("우편번호 확인 : {}", defaultAdressAt); log.debug("getDlvyAmt-goodsList : {}", goodsList); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index dbfc1f07..450347ab 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -3378,9 +3378,12 @@ public class BOOrdrService{ // ############################################## 배송지별 배송비 계산 START ############################################## - String ordrAdressZip = StringUtil.isNullToString(param.get("dlvylcZip")); - String dlvylcAreaCd = (String) param.get("dlvylcAreaCd"); - String prefcd = (String) param.get("prefcd"); + LinkedHashMap shippingMap = (LinkedHashMap) param.get("shipping"); + +// String ordrAdressZip = StringUtil.isNullToString(param.get("dlvylcZip")); + String ordrAdressZip = StringUtil.isNullToString(shippingMap.get("dlvylcZip")); + String dlvylcAreaCd = (String) shippingMap.get("dlvylcAreaCd"); + String prefcd = (String) shippingMap.get("prefcd"); DataMap defaultAdressVO = new DataMap() {{ // put("sopmalCd", sopmalCd); // 쇼핑몰 코드 put("zip", ordrAdressZip); // 우편번호 @@ -3430,7 +3433,7 @@ public class BOOrdrService{ List goodsListMulti = (List) dlvylcMapMulti.get("goodsList"); log.debug("goodsListMulti : {}", goodsListMulti); if (!CollectionUtils.isEmpty(goodsListMulti)) { - dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd); if (!CollectionUtils.isEmpty(dlvyAmtMapMulti)) { if (dlvylcMapMulti.get("mngrFreeDlvyUseAt") != null && "Y".equals(dlvylcMapMulti.get("mngrFreeDlvyUseAt").toString())) { @@ -3485,7 +3488,7 @@ public class BOOrdrService{ // List goodsListMulti = (List) dlvylcMapMulti.get("goodsList"); // log.debug("goodsListMulti : {}", goodsListMulti); // if (!CollectionUtils.isEmpty(goodsListMulti)) { -// dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); +// dlvyAmtMapMulti = purchsService.getDlvyAmt(goodsListMulti, sopmalCd, defaultAdressAt, dlvylcAreaCd); // // if (!CollectionUtils.isEmpty(dlvyAmtMapMulti)) { // if (dlvylcMapMulti.get("mngrFreeDlvyUseAt") != null && "Y".equals(dlvylcMapMulti.get("mngrFreeDlvyUseAt").toString())) { @@ -3543,18 +3546,18 @@ public class BOOrdrService{ if (dlvylcMap.get("dlvyAmt") != null) { log.debug("배송비 객체 : {}", dlvylcMap); if (dlvylcMap.get("mngrFreeDlvyUseAt") != null && "N".equals(dlvylcMap.get("mngrFreeDlvyUseAt").toString())) { - dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd); } else if (dlvylcMap.get("mngrFreeDlvyUseAt") != null && "Y".equals(dlvylcMap.get("mngrFreeDlvyUseAt").toString())) { log.debug("관리자 무료배송 체크 'Y'"); } else { - dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd); } if (!CollectionUtils.isEmpty(dlvyAmtMap)) { dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue(); } } else { - dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd); if (!CollectionUtils.isEmpty(dlvyAmtMap)) { dlvyAmtBydlvylc = ((BigDecimal) dlvyAmtMap.get("dlvyAmt")).intValue(); @@ -3563,7 +3566,7 @@ public class BOOrdrService{ dlvyAmt = new BigDecimal(dlvyAmtBydlvylc); } else { - dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd, prefcd); + dlvyAmtMap = purchsService.getDlvyAmt(goodsList, sopmalCd, defaultAdressAt, dlvylcAreaCd); if (!CollectionUtils.isEmpty(dlvyAmtMap)) { dlvyAmt = (BigDecimal) dlvyAmtMap.get("dlvyAmt"); diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java index 307775bd..7c920e4e 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java @@ -362,6 +362,7 @@ public class OrdrController { param.put("mbrDvCd", user.getMbrDvCd()); param.put("mbrInnb", user.getUserInnb()); } + log.debug("CONselectSetleExpectAmt-param : {}", param); Map content = new HashMap<>(); try { DataMap datamap = new DataMap(); @@ -3008,6 +3009,13 @@ public class OrdrController { return content; } } else { +// if (CollectionUtils.isEmpty(multiOrdrDlvylc)) { +// log.info("배송지 정보를 찾을 수 없습니다."); +// content.put("result","Y"); +// content.put("message", "배송지 정보를 찾을 수 없습니다."); +// // throw new WnbtRestException("주문유형 정보를 찾을 수 없습니다."); +// return content; +// } if (CollectionUtils.isEmpty(shipping)) { log.info("배송지 정보를 찾을 수 없습니다."); content.put("result","Y"); @@ -3044,6 +3052,70 @@ public class OrdrController { String[] receptMbtlnbArray = null; // 배송지 받는이 휴대폰번호 if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원개인결제, 정기배송 +// if (!CollectionUtils.isEmpty(multiOrdrDlvylc)) { +// +// // 배송지 리스트 +// List> dlvylcListMulti = (List>) multiOrdrDlvylc.get("dlvylc"); +// +// /** ----------------------------------------------- 배송지별 주문 상품 수량 검사 START ----------------------------------------------- */ +// content = checkDistributedQyMatchesOrder(goodsList, dlvylcListMulti); +// if (!"0".equals(content.get("status"))) { +// return content; +// } +// /** ----------------------------------------------- 배송지별 주문 상품 수량 검사 END ----------------------------------------------- */ +// +// // 부정판매 체크를 위한 배송지 정렬 +// if (!CollectionUtils.isEmpty(dlvylcListMulti)) { +// +// boolean hasInvalidAddress = dlvylcListMulti.stream().anyMatch(map -> { +// String dlvylcZip = StringUtil.isNullToString(map.get("dlvylcZip")); +// String adresDvCd = StringUtil.isNullToString(map.get("dlvylcAdresDvCd")); +// String dlvylcLnbAdres = StringUtil.isNullToString(map.get("dlvylcLnbAdres")); +// String dlvylcRnmAdres = StringUtil.isNullToString(map.get("dlvylcRnmAdres")); +// String adresDtl = StringUtil.isNullToString(map.get("dlvylcAdresDtl")); +// +// return StringUtil.isEmpty(dlvylcZip) +// || StringUtil.isEmpty(adresDvCd) +// || ("01".equals(adresDvCd) && StringUtil.isEmpty(dlvylcRnmAdres)) +// || ("02".equals(adresDvCd) && StringUtil.isEmpty(dlvylcLnbAdres)) +// || StringUtil.isEmpty(adresDtl); +// }); +// +// if (hasInvalidAddress) { +// content.put("result","Y"); +// content.put("message", "배송지 정보를 찾을 수 없습니다. 다시 시도해 주세요."); +// return content; +// } +// +// List adresList = dlvylcListMulti.stream() +// .map(map -> { +// String adresDvCd = StringUtil.isNullToString(map.get("dlvylcAdresDvCd")); +// String adresDtl = StringUtil.isNullToString(map.get("dlvylcAdresDtl")); +// String dlvylcLnbAdres = StringUtil.isNullToString(map.get("dlvylcLnbAdres")); +// String dlvylcRnmAdres = StringUtil.isNullToString(map.get("dlvylcRnmAdres")); +// String adresMulti; +// if ("01".equals(adresDvCd)) { +// adresMulti = dlvylcRnmAdres + " " + adresDtl; +// } else { +// adresMulti = dlvylcLnbAdres + " " + adresDtl; +// } +// +// return adresMulti; +// }) +// .collect(Collectors.toList()); +// +// adresArray = adresList.toArray(new String[0]); +// +// List receptMbtlnbList = dlvylcListMulti.stream() +// .map(map -> { +// return StringUtil.isNullToString(map.get("recpntMbtlnb")); +// }) +// .collect(Collectors.toList()); +// +// receptMbtlnbArray = receptMbtlnbList.toArray(new String[0]); +// +// } +// } if ( StringUtil.isEmpty((String) shipping.get("dlvylcZip")) || StringUtil.isEmpty((String) shipping.get("dlvylcAdresDvCd")) || diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp index 401f5e19..8eb0b81f 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrPurchsC.jsp @@ -1833,6 +1833,25 @@ $(form).find('input[name="dlvylcAdresDtl"]').val(data.dtlAdres); $(form).find('input[name="dlvylcAdres"]').val('01' === $(form).find('input[name="dlvylcAdresDvCd"]').val() ? $(form).find('input[name="dlvylcRnmAdres"]').val() : $(form).find('input[name="dlvylcLnbAdres"]').val()); + // localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd); + // localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd); + // localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd); + // localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd); + // localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd); + // localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd); + // localStorage.setItem("dlvylcAreaCd", dlvylcAreaCd); + // + // + // setle['sopmalCd'] = $('#sopmalCd').val(); + // setle['dlvylc'] = JSON.parse(localStorage.getItem('dlvylc')); + // setle['goodsList'] = JSON.parse(localStorage.getItem('goodsList')); + // setle['enuri'] = JSON.parse(localStorage.getItem('enuri')); + // setle['dlvylcZip'] = localStorage.getItem('dlvylcZip'); + // setle['dlvylcAreaCd'] = localStorage.getItem('dlvylcAreaCd'); + // setle['prefcd'] = localStorage.getItem('prefcd'); + // setle['multiOrdrDlvylc'] = JSON.parse(localStorage.getItem('multiOrdrDlvylc')); + // setle['ordrTyCd'] = $('input[name="ordrTy"]:checked').val(); + // 배송지 정보 세팅 이후 결제예정금액 재계산 fn_get_setle_amt(); } @@ -2458,6 +2477,15 @@ const fn_get_setle_amt = function() { let setle = {}; + let dlvylc = JSON.parse(localStorage.getItem('dlvylc')); + + if (!fn_is_empty(dlvylc)) { + dlvylc = Object.assign({}, fn_get_dlvylc_data(), dlvylc); + } else { + dlvylc = fn_get_dlvylc_data(); + } + setle['shipping'] = dlvylc; + setle['sopmalCd'] = $('#sopmalCd').val(); setle['dlvylc'] = JSON.parse(localStorage.getItem('dlvylc')); setle['goodsList'] = JSON.parse(localStorage.getItem('goodsList')); diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/SpbkPtinR.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/SpbkPtinR.jsp index d5b633bf..a2f292cf 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/SpbkPtinR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/SpbkPtinR.jsp @@ -1466,7 +1466,7 @@
  • 배송비 <%-- 0${curUnit}--%> - Calculated at next step + 0Calculated at next step
  • 총 할인금액