Compare commits
1 Commits
b00534af6b
...
master_ord
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
305d5d226c |
@@ -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<LinkedHashMap<String, Object>> dlvylcListMulti = (List<LinkedHashMap<String, Object>>) 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<String> 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<String> 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)) {
|
||||
|
||||
|
||||
@@ -406,6 +406,8 @@ public class BOMaMtngService {
|
||||
List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList"); // 상품정보
|
||||
LinkedHashMap enuri = (LinkedHashMap) param.get("enuri"); // 할인정보
|
||||
|
||||
log.debug("selectBOPreOrderValidationList-goodsList: {}",goodsList);
|
||||
|
||||
//사용한 장바구니 쿠폰
|
||||
//비회원의 경우 enuri 자체가 없어서 isEmpty 확인
|
||||
List<LinkedHashMap> usedCartCouponList = new ArrayList<>();
|
||||
|
||||
@@ -81,19 +81,6 @@ public class BOOrderService {
|
||||
log.debug("결제정보 => {} ", new Gson().toJson(setle));
|
||||
log.debug("사은품 => {} ", new Gson().toJson(prsntList));
|
||||
|
||||
/** 여러곳 배송 배송지 세팅 시작 */
|
||||
LinkedHashMap<String, Object> multiOrdrDlvylcMap = new LinkedHashMap<>();
|
||||
List<LinkedHashMap<String, Object>> dlvylcListMulti = new ArrayList<>();
|
||||
|
||||
multiOrdrDlvylcMap = (LinkedHashMap) param.get("multiOrdrDlvylc");
|
||||
log.debug("multiOrdrDlvylcMap : {}", multiOrdrDlvylcMap);
|
||||
if (!CollectionUtils.isEmpty(multiOrdrDlvylcMap)) {
|
||||
// 배송지 리스트
|
||||
dlvylcListMulti = (List<LinkedHashMap<String, Object>>) 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<String, Object> multiOrdrDlvylcMap = new LinkedHashMap<>();
|
||||
List<LinkedHashMap<String, Object>> 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<goodsList.size();i++) {
|
||||
int goodsQy = (int) goodsList.get(i).get("qy");
|
||||
int dlvyGroupInnb = (int) goodsList.get(i).get("dlvyGroupInnb");
|
||||
String sopmalCode = sopmalCd;
|
||||
|
||||
DataMap shippingParam = new DataMap() {{
|
||||
put("dlvyGroupInnb", dlvyGroupInnb);
|
||||
put("sopmalCd", sopmalCode);
|
||||
}};
|
||||
|
||||
DataMap shippingGrouping = mapper.selectShippingGrouping(shippingParam);
|
||||
|
||||
BigDecimal itemDftDlvyAmt = (BigDecimal) shippingGrouping.get("dftDlvyAmt"); // 기본배송비
|
||||
BigDecimal itemDlvyAmt = itemDftDlvyAmt; // 배송비
|
||||
// String dlvyAreaAditAt = (String) shippingGrouping.get("dlvyAreaAditAt"); // 도서산간 추가 배송비 조건
|
||||
// BigDecimal areaAditDlvyAmt = (BigDecimal) shippingGrouping.get("areaAditDlvyAmt"); // 도서산간 추가 배송비
|
||||
|
||||
List<LinkedHashMap> itemGoodsList = new ArrayList<>();
|
||||
itemGoodsList.add(goodsList.get(i));
|
||||
for (LinkedHashMap<String, Object> itemGoodsMap : itemGoodsList) {
|
||||
itemGoodsMap.put("qy", 1);
|
||||
}
|
||||
List<LinkedHashMap> itempPrsntList = new ArrayList<>();
|
||||
if(!prsntList.isEmpty()){
|
||||
itempPrsntList.add(prsntList.get(i));
|
||||
for (LinkedHashMap<String, Object> itemPrsntMap : itempPrsntList) {
|
||||
itemPrsntMap.put("qy", 1);
|
||||
}
|
||||
}
|
||||
|
||||
for(int j=0;j<goodsQy;j++) {
|
||||
LinkedHashMap<String, Object> 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<LinkedHashMap<String, Object>>) 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<LinkedHashMap> 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<LinkedHashMap<String, Object>> allMergedGoodsList = new ArrayList<>();
|
||||
|
||||
for (LinkedHashMap<String, Object> dlvylcMapMulti : dlvylcListMulti) {
|
||||
List<LinkedHashMap> goodsListMulti = (List<LinkedHashMap>) 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<String, Object> merged = new LinkedHashMap<>(baseGoods);
|
||||
allMergedGoodsList.add(merged);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 분배된 할인 금액 누적
|
||||
BOOrderRestAmtVO discountInfo = new BOOrderRestAmtVO();
|
||||
int allGoodsCount = 0; // 전체 상품 순번
|
||||
|
||||
for (LinkedHashMap<String, Object> 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<LinkedHashMap> goodsListMulti = (List<LinkedHashMap>) dlvylcMapMulti.get("goodsList");
|
||||
|
||||
List<LinkedHashMap> 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<String, Object> 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<LinkedHashMap> prsntListMulti = (List<LinkedHashMap>) dlvylcMapMulti.get("prsntList");
|
||||
|
||||
List<LinkedHashMap> 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<String, Object> 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("주문배송 정보를 찾을 수 없습니다.");
|
||||
}
|
||||
|
||||
@@ -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<DataMap>
|
||||
*/
|
||||
public DataMap getDlvyAmt(List<LinkedHashMap> goodsList, String sopmalCd, String defaultAdressAt, String dlvylcAreaCd, String prefcd) {
|
||||
public DataMap getDlvyAmt(List<LinkedHashMap> goodsList, String sopmalCd, String defaultAdressAt, String dlvylcAreaCd) {
|
||||
DataMap dlvyAmtMap = null;
|
||||
log.debug("우편번호 확인 : {}", defaultAdressAt);
|
||||
log.debug("getDlvyAmt-goodsList : {}", goodsList);
|
||||
|
||||
@@ -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<String, Object> 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<LinkedHashMap> goodsListMulti = (List<LinkedHashMap>) 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<LinkedHashMap> goodsListMulti = (List<LinkedHashMap>) 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");
|
||||
|
||||
@@ -362,6 +362,7 @@ public class OrdrController {
|
||||
param.put("mbrDvCd", user.getMbrDvCd());
|
||||
param.put("mbrInnb", user.getUserInnb());
|
||||
}
|
||||
log.debug("CONselectSetleExpectAmt-param : {}", param);
|
||||
Map<String, Object> 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<LinkedHashMap<String, Object>> dlvylcListMulti = (List<LinkedHashMap<String, Object>>) 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<String> 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<String> 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")) ||
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -1466,7 +1466,7 @@
|
||||
<li>
|
||||
<span class="cartOrderBox__th">배송비</span>
|
||||
<%-- <span class="cartOrderBox__td"><span class="comma" id="dlvyAmtSapn">0</span><span class="priceUnit">${curUnit}</span></span>--%>
|
||||
<span class="cartOrderBox__td"><span class="priceUnit">Calculated at next step</span></span>
|
||||
<span class="cartOrderBox__td"><span class="comma" id="dlvyAmtSapn">0</span><span class="priceUnit">Calculated at next step</span></span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="cartOrderBox__th">총 할인금액</span>
|
||||
|
||||
Reference in New Issue
Block a user