|
|
@@ -6,17 +6,14 @@ import java.io.InputStreamReader;
|
|
|
import java.io.OutputStreamWriter;
|
|
|
import java.io.Writer;
|
|
|
import java.net.URL;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Collection;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
import javax.net.ssl.HttpsURLConnection;
|
|
|
import javax.servlet.http.Cookie;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import com.style24.persistence.domain.*;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.core.env.Environment;
|
|
|
@@ -38,16 +35,6 @@ import com.style24.front.biz.dao.TsfGoodsDao;
|
|
|
import com.style24.front.biz.dao.TsfOrderDao;
|
|
|
import com.style24.front.biz.dao.TsfRendererDao;
|
|
|
import com.style24.front.support.security.session.TsfSession;
|
|
|
-import com.style24.persistence.domain.Cart;
|
|
|
-import com.style24.persistence.domain.Coupon;
|
|
|
-import com.style24.persistence.domain.Delivery;
|
|
|
-import com.style24.persistence.domain.GiftCard;
|
|
|
-import com.style24.persistence.domain.Goods;
|
|
|
-import com.style24.persistence.domain.GoodsStock;
|
|
|
-import com.style24.persistence.domain.KakaoPay;
|
|
|
-import com.style24.persistence.domain.NaverPay;
|
|
|
-import com.style24.persistence.domain.Order;
|
|
|
-import com.style24.persistence.domain.Payment;
|
|
|
import com.usafe.guarantee.InsuranceInfo;
|
|
|
import com.usafe.guarantee.InsuranceManager;
|
|
|
|
|
|
@@ -1170,64 +1157,51 @@ public class TsfOrderService {
|
|
|
sb.append("\t\t<id>").append(item.getGoodsCd()).append("</id>\n"); //<!-- 상품코드 -->
|
|
|
sb.append("\t\t<ecMallProductId>").append(item.getGoodsCd()).append("</ecMallProductId>\n"); //<!-- 상품코드 -->
|
|
|
sb.append("\t\t<name>").append("<![CDATA[").append(item.getGoodsNm()).append("]]>").append("</name>\n"); //<!-- 상품명 -->
|
|
|
- sb.append("\t\t<basePrice>").append(item.getCurrPrice() + item.getOptAddPrice()).append("</basePrice>\n"); //<!-- 상품금액 -->
|
|
|
+ sb.append("\t\t<basePrice>").append(item.getCurrPrice()).append("</basePrice>\n"); //<!-- 상품금액 -->
|
|
|
// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
|
|
|
- sb.append("\t\t<infoUrl>").append("<![CDATA[https:").append(param.getGoodsUrl()).append(item.getGoodsCd()).append("]]>").append("</infoUrl>\n"); //<!-- 상품상세페이지 URL -->
|
|
|
+ sb.append("\t\t<infoUrl>").append("<![CDATA[https:").append(param.getGoodsUrl()).append(item.getGoodsCd()).append("]]>").append("</infoUrl>\n"); //<!-- 상품상세페이지 URL -->
|
|
|
sb.append("\t\t<imageUrl>").append("<![CDATA[https:").append(goodsImgUrl).append("/").append(item.getSysImgNm()).append("]]>").append("</imageUrl>\n"); //<!-- 상품원본이미지 URL -->
|
|
|
+
|
|
|
if(TscConstants.GoodsType.SET.value().equals(item.getGoodsType())) { // 세트상품
|
|
|
- // 구성상품 옵션정보 split
|
|
|
- String[] itemNms = item.getItemNm().split("!@!"); // 구성상품명
|
|
|
- String[] optCds = item.getOptCd().split(","); // 옵션코드
|
|
|
- String[] colorNms = item.getColorNm().split(","); // 컬러명
|
|
|
- String[] optCd1s = item.getOptCd1().split(","); // 칼라코드
|
|
|
- String[] optCd2s = item.getOptCd2().split(","); // 사이즈
|
|
|
- String[] itemCds = item.getItemCd().split(","); // 상품코드
|
|
|
-
|
|
|
- // 상품명, 컬러, 사이즈 확인 ==> 20200517 정지혜과장님 확인 :: 상품명=25,OPT1=13,OPT2=12 글자. 넘어갈경우 뒤에 ".." 붙여서 글자수 맞출것.
|
|
|
- // 상품명/컬러/사이즈 이므로 가운데 / 를 위해 24, 12, 12로 진행
|
|
|
- for(int i = 0 ; i < itemNms.length ; i++) {
|
|
|
- if(itemNms[i].length() > 50) {itemNms[i] = itemNms[i].substring(0, 47) + "..";}
|
|
|
- /*if(optCd2s[i].length() > 12) {optCd2s[i] = optCd2s[i].substring(0, 9) + "..";}
|
|
|
- if(colorNms[i].length() > 12) {colorNms[i] = colorNms[i].substring(0, 9) + "..";}*/
|
|
|
-
|
|
|
- // 옵션 정보
|
|
|
- sb.append("\t\t<option>\n");
|
|
|
- sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n"); //<!-- 옵션수량-->
|
|
|
- sb.append("\t\t\t<price>").append(item.getOptAddPrice()).append("</price>\n"); //<!-- 옵션금액 -->
|
|
|
- sb.append("\t\t\t<manageCode>").append(itemCds[i]).append("_").append(optCds[i]).append("</manageCode>\n"); //<!-- 옵션관리코드 -->
|
|
|
-
|
|
|
- // 구성상품코드
|
|
|
- sb.append("\t\t\t<selectedItem>\n");
|
|
|
- sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
|
|
|
- sb.append("\t\t\t\t<name>상품</name>\n");//<!-- 옵션명 -->
|
|
|
- sb.append("\t\t\t\t<value>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(itemCds[i]).append("</id>\n");//<!-- 옵션 -->
|
|
|
- sb.append("\t\t\t\t\t<text>").append(itemNms[i]).append("</text>\n");//<!-- 옵션명 -->
|
|
|
- sb.append("\t\t\t\t</value>\n");
|
|
|
- sb.append("\t\t\t</selectedItem>\n");
|
|
|
+ // 세트상품 manageCode 정렬 (optCd ASC)
|
|
|
+ Goods option = new Goods();
|
|
|
+ option.setArrGoodsCd(item.getItemCd().split(","));
|
|
|
+ option.setSizeArr(item.getOptCd().split(","));
|
|
|
+ List<Goods> optionList = (ArrayList<Goods>) goodsDao.getOrderGoodsOptionList(option);
|
|
|
+
|
|
|
+ StringBuilder manageCode = new StringBuilder();
|
|
|
+ int k = 0;
|
|
|
+ for(Goods opt : optionList) {
|
|
|
+ if(k++ > 0) manageCode.append("/");
|
|
|
+ manageCode.append(opt.getOptCd());
|
|
|
+ }
|
|
|
|
|
|
- // 칼라코드
|
|
|
- sb.append("\t\t\t<selectedItem>\n");
|
|
|
- sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
|
|
|
- sb.append("\t\t\t\t<name>색상</name>\n");//<!-- 옵션명 -->
|
|
|
- sb.append("\t\t\t\t<value>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(optCd1s[i]).append("</id>\n");//<!-- 옵션 -->
|
|
|
- sb.append("\t\t\t\t\t<text>").append(colorNms[i]).append("</text>\n");//<!-- 옵션명 -->
|
|
|
- sb.append("\t\t\t\t</value>\n");
|
|
|
- sb.append("\t\t\t</selectedItem>\n");
|
|
|
+ // 옵션 정보
|
|
|
+ sb.append("\t\t<option>\n");
|
|
|
+ sb.append("\t\t\t<quantity>").append(item.getGoodsQty()).append("</quantity>\n"); //<!-- 옵션수량-->
|
|
|
+ sb.append("\t\t\t<price>").append(item.getOptAddPrice()).append("</price>\n"); //<!-- 옵션금액 -->
|
|
|
+ sb.append("\t\t\t<manageCode>").append(manageCode).append("</manageCode>\n"); //<!-- 옵션관리코드 -->
|
|
|
+
|
|
|
+ // 구성상품별 옵션 세팅
|
|
|
+ int i = 1;
|
|
|
+ for(Goods opt : optionList) {
|
|
|
+ // 상품명, 컬러, 사이즈 확인(최대 50자) ==> 20200517 정지혜과장님 확인 :: 상품명=25,OPT1=13,OPT2=12 글자. 넘어갈경우 뒤에 ".." 붙여서 글자수 맞출것.
|
|
|
+ // 상품명/컬러/사이즈 이므로 가운데 / 를 위해 24, 12, 12로 진행
|
|
|
+ if(opt.getGoodsNm().length() > 24) {opt.setGoodsNm(opt.getGoodsNm().substring(0, 21) + "..");}
|
|
|
+ if(opt.getOptCd2().length() > 12) {opt.setOptCd2(opt.getOptCd2().substring(0, 9) + "..");}
|
|
|
+ if(opt.getColorNm().length() > 12) {opt.setColorNm(opt.getColorNm().substring(0, 9) + "..");}
|
|
|
|
|
|
- // 사이즈
|
|
|
sb.append("\t\t\t<selectedItem>\n");
|
|
|
- sb.append("\t\t\t\t<type>SELECT</type>\n");//<!-- 옵션유형 -->
|
|
|
- sb.append("\t\t\t\t<name>사이즈</name>\n");//<!-- 옵션명 -->
|
|
|
+ sb.append("\t\t\t\t<type>SELECT</type>\n"); //<!-- 옵션유형 -->
|
|
|
+ sb.append("\t\t\t\t<name>구성상품").append(i++).append("</name>\n"); //<!-- 옵션명 -->
|
|
|
sb.append("\t\t\t\t<value>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(optCd2s[i]).append("</id>\n");//<!-- 옵션 -->
|
|
|
- sb.append("\t\t\t\t\t<text>").append(optCd2s[i]).append("</text>\n");//<!-- 옵션명 -->
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(opt.getOptCd()).append("</id>\n"); //<!-- 옵션 -->
|
|
|
+ sb.append("\t\t\t\t\t<text>").append(opt.getGoodsNm()).append("/").append(opt.getColorNm()).append("/").append(opt.getOptCd2()).append("</text>\n");//<!-- 옵션명 -->
|
|
|
sb.append("\t\t\t\t</value>\n");
|
|
|
sb.append("\t\t\t</selectedItem>\n");
|
|
|
-
|
|
|
- sb.append("\t\t</option>\n");
|
|
|
}
|
|
|
+
|
|
|
+ sb.append("\t\t</option>\n");
|
|
|
} else if("Y".equals(item.getSelfGoodsYn())) { // 세트상품 제외 자사상품
|
|
|
// 옵션 정보
|
|
|
sb.append("\t\t<option>\n");
|
|
|
@@ -1336,6 +1310,28 @@ public class TsfOrderService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ private String getCombinationXml(String manageCode, int addPrice, int stockQty, int size) {
|
|
|
+ String[] optCd = manageCode.split("/");
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ sb.append("\t\t\t<combination>\n");
|
|
|
+ sb.append("\t\t\t\t<manageCode>").append(manageCode).append("</manageCode>\n");
|
|
|
+ sb.append("\t\t\t\t<price>").append(addPrice).append("</price>\n");
|
|
|
+ sb.append("\t\t\t\t<stockQuantity>").append(stockQty).append("</stockQuantity>\n");
|
|
|
+ sb.append("\t\t\t\t<status>true</status>\n");
|
|
|
+
|
|
|
+ // 옵션 옵션조합정보 색상
|
|
|
+ for(int i = 0 ; i < size ; i++) {
|
|
|
+ sb.append("\t\t\t\t<options>\n");
|
|
|
+ sb.append("\t\t\t\t\t<name>구성상품").append(i + 1).append("</name>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(optCd[i]).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t</options>\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ sb.append("\t\t\t</combination>\n");
|
|
|
+
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 네이버페이 주문 정보 송부
|
|
|
* @param sb
|
|
|
@@ -1472,213 +1468,455 @@ public class TsfOrderService {
|
|
|
|
|
|
for (int i=0; i<goodsCdArr.length; i++) {
|
|
|
Order item = new Order();
|
|
|
+ item.setGoodsCd(goodsCdArr[i]); // 상품코드
|
|
|
+ String optionManageCode = coreOrderService.simpleDecode(optionManageCodesArr[i]);
|
|
|
+ item.setOptCd(optionManageCode); // 상품 옵션
|
|
|
+
|
|
|
+ // 이 포인트에서 세트상품, 일반 상품 분리 조회 필요 (재고 파악 로직이 다름)
|
|
|
+ Goods simpleInfo = new Goods();
|
|
|
+ simpleInfo.setGoodsCd(item.getGoodsCd());
|
|
|
+ simpleInfo = goodsDao.getGoodsSimpleInfo(simpleInfo);
|
|
|
+
|
|
|
+ // 세트상품일 경우
|
|
|
+ if(TscConstants.GoodsType.SET.value().equals(simpleInfo.getGoodsType())) {
|
|
|
+ // 주문 상품 정보 조회
|
|
|
+ Goods goods = new Goods();
|
|
|
+ goods.setGoodsCd(item.getGoodsCd());
|
|
|
+ goods.setOptCd(item.getOptCd());
|
|
|
+ goods.setFrontGb(TsfSession.getFrontGb());
|
|
|
+ goods.setSiteCd(TscConstants.Site.STYLE24.value());
|
|
|
+ goods.setAdminYn("Y"); // 상품 상태에 관계 없이 조회하기 위함
|
|
|
+ goods = goodsDao.getGoodsInfo(goods);
|
|
|
+
|
|
|
+ // 상품 상태 확인
|
|
|
+ String goodsStat = "";
|
|
|
+ if(TscConstants.GoodsStat.APPR.value().equals(goods.getGoodsStat())) {
|
|
|
+ goodsStat = "ON_SALE"; // 판매중
|
|
|
+ } else if (TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat())) {
|
|
|
+ goodsStat = "SOLD_OUT"; // 품절
|
|
|
+ } else {
|
|
|
+ goodsStat = "NOT_SALE"; // 구매불가
|
|
|
+ }
|
|
|
|
|
|
- item.setGoodsCd(goodsCdArr[i]);
|
|
|
+ // 반송지 정보
|
|
|
+ Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
|
|
|
+
|
|
|
+ sb.append("\t<product>\n");
|
|
|
+ sb.append("\t\t<id>").append(item.getGoodsCd()).append("</id>\n");
|
|
|
+ sb.append("\t\t<merchantProductId>").append(item.getGoodsCd()).append("</merchantProductId>\n");
|
|
|
+ sb.append("\t\t<ecMallProductId>").append(item.getGoodsCd()).append("</ecMallProductId>\n");
|
|
|
+ sb.append("\t\t<name>").append(goods.getGoodsNm()).append("</name>\n");
|
|
|
+ sb.append("\t\t<status>").append(goodsStat).append("</status>\n");
|
|
|
+ sb.append("\t\t<basePrice>").append(goods.getCurrPrice()).append("</basePrice>\n");
|
|
|
+ // TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
|
|
|
+ sb.append("\t\t<infoUrl>").append("http:" + domain + "/goods/detail/form?goodsCd=" + goods.getGoodsCd()).append("</infoUrl>\n");
|
|
|
+ sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + goods.getSysImgNm()).append("</imageUrl>\n");
|
|
|
+
|
|
|
+ // 12.반품주소
|
|
|
+ if (rtnInfo != null && rtnInfo.getRtnLocZipcode() != null && !"".equals(rtnInfo.getRtnLocZipcode())) {
|
|
|
+ // 2.1 반품정보
|
|
|
+ sb.append("\t\t<returnInfo>\n");
|
|
|
+ sb.append("\t\t\t<zipcode>").append(rtnInfo.getRtnLocZipcode()).append("</zipcode>\n");
|
|
|
+ sb.append("\t\t\t<address1>").append(rtnInfo.getRtnLocBaseAddr()).append("</address1>\n");
|
|
|
+ sb.append("\t\t\t<address2>").append(rtnInfo.getRtnLocDtlAddr()).append("</address2>\n");
|
|
|
+ sb.append("\t\t\t<sellername>").append(rtnInfo.getRtnLocNm()).append("</sellername>\n");
|
|
|
+ sb.append("\t\t\t<contact1>").append(rtnInfo.getRtnLocTelno()).append("</contact1>\n");
|
|
|
+ sb.append("\t\t</returnInfo>\n");
|
|
|
+
|
|
|
+ // 반품배송비, 교환배송비
|
|
|
+ sb.append("\t\t<returnShippingFee>").append(goods.getRtnDelvFee()).append("</returnShippingFee>\n");
|
|
|
+ sb.append("\t\t<exchangeShippingFee>").append(goods.getDelvFee() + goods.getRtnDelvFee()).append("</exchangeShippingFee>\n");
|
|
|
+ }
|
|
|
|
|
|
- // 9.상품 옵션
|
|
|
- String optionManageCode = coreOrderService.simpleDecode(optionManageCodesArr[i]);
|
|
|
- item.setOptCd(optionManageCode);
|
|
|
-
|
|
|
- // 주문 상품 옵션 정보 조회
|
|
|
- GoodsStock opt = new GoodsStock();
|
|
|
- opt.setGoodsCd(item.getGoodsCd());
|
|
|
- opt.setOptCd(item.getOptCd());
|
|
|
- opt = goodsDao.getGoodsStockInfo(opt);
|
|
|
-
|
|
|
- // 주문 상품 정보 조회
|
|
|
- Goods goods = new Goods();
|
|
|
- goods.setGoodsCd(item.getGoodsCd());
|
|
|
- goods.setOptCd(item.getOptCd());
|
|
|
- goods.setColorCd(opt.getOptCd1());
|
|
|
- goods.setFrontGb(TsfSession.getFrontGb());
|
|
|
- goods.setSiteCd(TscConstants.Site.STYLE24.value());
|
|
|
- goods.setAdminYn("Y"); // 상품 상태에 관계 없이 조회하기 위함
|
|
|
- goods = goodsDao.getGoodsInfo(goods);
|
|
|
-
|
|
|
- // 상품 상태 확인
|
|
|
- String goodsStat = "";
|
|
|
- if(TscConstants.GoodsStat.APPR.value().equals(goods.getGoodsStat())) {
|
|
|
- goodsStat = "ON_SALE"; // 판매중
|
|
|
- } else if (TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat())) {
|
|
|
- goodsStat = "SOLD_OUT"; // 품절
|
|
|
- } else {
|
|
|
- goodsStat = "NOT_SALE"; // 주매불가
|
|
|
- }
|
|
|
+ // 옵션정보 지원여부 true
|
|
|
+ sb.append("\t\t<optionSupport>true</optionSupport>\n");
|
|
|
|
|
|
- // 반송지 정보
|
|
|
- Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
|
|
|
+ // 세트상품 정보 getGoodsSetComposeList
|
|
|
+ goods.setSiteCd(TscConstants.Site.STYLE24.value());
|
|
|
+ Collection<Goods> compsInfoList = goodsDao.getCompsGoodsList(goods);
|
|
|
|
|
|
- sb.append("\t<product>\n");
|
|
|
- sb.append("\t\t<id>").append(goodsCdArr[i]).append("</id>\n");
|
|
|
- sb.append("\t\t<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>\n");
|
|
|
- sb.append("\t\t<ecMallProductId>").append(goodsCdArr[i]).append("</ecMallProductId>\n");
|
|
|
- sb.append("\t\t<name>").append(goods.getGoodsNm()).append("</name>\n");
|
|
|
- sb.append("\t\t<status>").append(goodsStat).append("</status>\n");
|
|
|
- sb.append("\t\t<basePrice>").append(goods.getCurrPrice() + opt.getAddPrice()).append("</basePrice>\n");
|
|
|
- // TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
|
|
|
- sb.append("\t\t<infoUrl>").append("http:" + domain + "/goods/detail/form?goodsCd=" + goods.getGoodsCd()).append("</infoUrl>\n");
|
|
|
- sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + goods.getSysImgNm()).append("</imageUrl>\n");
|
|
|
-
|
|
|
- // 12.반품주소
|
|
|
- if (rtnInfo != null && rtnInfo.getRtnLocZipcode() != null && !"".equals(rtnInfo.getRtnLocZipcode())) {
|
|
|
- // 2.1 반품정보
|
|
|
- sb.append("\t\t<returnInfo>\n");
|
|
|
- sb.append("\t\t\t<zipcode>").append(rtnInfo.getRtnLocZipcode()).append("</zipcode>\n");
|
|
|
- sb.append("\t\t\t<address1>").append(rtnInfo.getRtnLocBaseAddr()).append("</address1>\n");
|
|
|
- sb.append("\t\t\t<address2>").append(rtnInfo.getRtnLocDtlAddr()).append("</address2>\n");
|
|
|
- sb.append("\t\t\t<sellername>").append(rtnInfo.getRtnLocNm()).append("</sellername>\n");
|
|
|
- sb.append("\t\t\t<contact1>").append(rtnInfo.getRtnLocTelno()).append("</contact1>\n");
|
|
|
- sb.append("\t\t</returnInfo>\n");
|
|
|
-
|
|
|
- // 반품배송비, 교환배송비
|
|
|
- sb.append("\t\t<returnShippingFee>").append(goods.getRtnDelvFee()).append("</returnShippingFee>\n");
|
|
|
- sb.append("\t\t<exchangeShippingFee>").append(goods.getDelvFee() + goods.getRtnDelvFee()).append("</exchangeShippingFee>\n");
|
|
|
- }
|
|
|
+ // 옵션 정보
|
|
|
+ sb.append("\t\t<option>\n");
|
|
|
+ int combCnt = 0; // 옵션 조합 총 수량
|
|
|
+ // 옵션 아이템정보 구성상품
|
|
|
+ for (Goods comps : compsInfoList) {
|
|
|
+ sb.append("\t\t\t<optionItem>\n");
|
|
|
+ sb.append("\t\t\t\t<type>SELECT</type>\n");
|
|
|
+ sb.append("\t\t\t\t<name>구성상품").append(comps.getRnum()).append("</name>\n");
|
|
|
+
|
|
|
+ // 구성상품별 옵션 정보
|
|
|
+ String[] optCds = comps.getOptCd().split(",");
|
|
|
+ String[] optCd2s = comps.getOptCd2().split(",");
|
|
|
+ String[] colorNms = comps.getColorNm().split(",");
|
|
|
+ combCnt *= optCds.length;
|
|
|
+
|
|
|
+ for(int j = 0 ; j < optCds.length ; i++) {
|
|
|
+ if(comps.getGoodsNm().length() > 24) {comps.setGoodsNm(comps.getGoodsNm().substring(0, 21) + "..");}
|
|
|
+ if(optCd2s[j].length() > 12) {optCd2s[j] = optCd2s[j].substring(0, 9) + "..";}
|
|
|
+ if(colorNms[j].length() > 12) {colorNms[j] = colorNms[j].substring(0, 9) + "..";}
|
|
|
+
|
|
|
+ sb.append("\t\t\t\t<value>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(optCds[j]).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t\t<text>").append(comps.getGoodsNm()).append("/").append(colorNms[j]).append("/").append(optCd2s[j]).append("</text>\n");//<!-- 옵션명 -->
|
|
|
+ sb.append("\t\t\t\t</value>\n");
|
|
|
+ }
|
|
|
|
|
|
- // 옵션정보 지원여부 true
|
|
|
- sb.append("\t\t<optionSupport>true</optionSupport>\n");
|
|
|
-
|
|
|
- // 상품 옵션 전체 정보 조회
|
|
|
- Collection<GoodsStock> optList = goodsDao.getGoodsOptionInfoList(opt);
|
|
|
-
|
|
|
- String[] colorNmList = new String[optList.size()];
|
|
|
- String[] colorList = new String[optList.size()];
|
|
|
- String[] sizeList = new String[optList.size()];
|
|
|
- int count = 0;
|
|
|
- for(GoodsStock optInfo : optList) {
|
|
|
- colorNmList[count] = optInfo.getColorNm();
|
|
|
- colorList[count] = optInfo.getOptCd1();
|
|
|
- sizeList[count] = optInfo.getOptCd2();
|
|
|
- count++;
|
|
|
- }
|
|
|
+ sb.append("\t\t\t</optionItem>\n");
|
|
|
+ }
|
|
|
|
|
|
- colorNmList = new HashSet<String>(Arrays.asList(colorNmList)).toArray(new String[0]);
|
|
|
- colorList = new HashSet<String>(Arrays.asList(colorList)).toArray(new String[0]);
|
|
|
- sizeList = new HashSet<String>(Arrays.asList(sizeList)).toArray(new String[0]);
|
|
|
-
|
|
|
- // 옵션 정보
|
|
|
- sb.append("\t\t<option>\n");
|
|
|
-
|
|
|
- if(TscConstants.GoodsType.SET.value().equals(goods.getGoodsType())) {
|
|
|
- // 세트상품 정보
|
|
|
- // 세트 구성 상품 조회 후 로직 작성 예정.
|
|
|
- } else if("Y".equals(goods.getSelfGoodsYn())) {
|
|
|
- // 자사 일반 상품 정보
|
|
|
- // 9.1 옵션 아이템정보 색상
|
|
|
- sb.append("\t\t\t<optionItem>\n");
|
|
|
- sb.append("\t\t\t\t<type>SELECT</type>\n");
|
|
|
- sb.append("\t\t\t\t<name>색상</name>\n");
|
|
|
- int j = 0;
|
|
|
- for (String color : colorList) {
|
|
|
- sb.append("\t\t\t\t<value>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(color).append("</id>\n");
|
|
|
- sb.append("\t\t\t\t\t<text>").append(colorNmList[j++]).append("</text>\n");
|
|
|
- sb.append("\t\t\t\t</value>\n");
|
|
|
+ sb.append("\t\t</option>\n");
|
|
|
+
|
|
|
+ // 세트 구성상품 모든 옵션 경우의 수 조회 > 상품코드 오름차순, OPTCD 오름차순으로 정확히 보낼것 > 주문요청된 manageCode가 같아야함.
|
|
|
+ for (Goods comps1 : compsInfoList) {
|
|
|
+ if(comps1.getRnum() == 1) {
|
|
|
+ // 구성상품별 옵션 정보
|
|
|
+ String[] goods1optCds = comps1.getOptCd().split(",");
|
|
|
+ String[] goods1addPrices = comps1.getItemStockQty().split(",");
|
|
|
+ String[] goods1stockQty = comps1.getItemStockQty().split(",");
|
|
|
+
|
|
|
+ for(int g1 = 0 ; g1 < goods1optCds.length ; g1++) {
|
|
|
+ StringBuilder manageCode = new StringBuilder(goods1optCds[g1]); // 옵션코드 조합
|
|
|
+ int addPrice = Integer.parseInt(goods1addPrices[g1]); // 추가금액 합계
|
|
|
+ int stockQty = Integer.parseInt(goods1stockQty[g1]); // 상품 주문 최소 재고(구성상품 최소)
|
|
|
+
|
|
|
+ if(compsInfoList.size() == 2) { // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
|
|
|
+ for (Goods comps2 : compsInfoList) {
|
|
|
+ if(comps2.getRnum() == 2) {
|
|
|
+ // 구성상품별 옵션 정보
|
|
|
+ String[] goods2optCds = comps2.getOptCd().split(",");
|
|
|
+ String[] goods2addPrices = comps2.getItemStockQty().split(",");
|
|
|
+ String[] goods2stockQty = comps2.getItemStockQty().split(",");
|
|
|
+
|
|
|
+ // 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
|
|
|
+ String manageCodeSave2 = goods1optCds[g1];
|
|
|
+ int addPriceSave2 = Integer.parseInt(goods1addPrices[g1]);
|
|
|
+ int stockQtySave2 = Integer.parseInt(goods1stockQty[g1]);
|
|
|
+
|
|
|
+ for(int g2 = 0 ; g2 < goods2optCds.length ; g2++) {
|
|
|
+ manageCode = new StringBuilder(manageCodeSave2); // String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
|
|
|
+ manageCode.append("/").append(goods2optCds[g2]);
|
|
|
+ addPrice = addPriceSave2 + Integer.parseInt(goods2addPrices[g2]);
|
|
|
+ if(stockQtySave2 < Integer.parseInt(goods2stockQty[g2])) stockQty = Integer.parseInt(goods2stockQty[g2]);
|
|
|
+
|
|
|
+ if(compsInfoList.size() == 3) { // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
|
|
|
+ for (Goods comps3 : compsInfoList) {
|
|
|
+ if (comps3.getRnum() == 3) {
|
|
|
+ // 구성상품별 옵션 정보
|
|
|
+ String[] goods3optCds = comps3.getOptCd().split(",");
|
|
|
+ String[] goods3addPrices = comps3.getItemStockQty().split(",");
|
|
|
+ String[] goods3stockQty = comps3.getItemStockQty().split(",");
|
|
|
+
|
|
|
+ // 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
|
|
|
+ String manageCodeSave3 = manageCodeSave2;
|
|
|
+ int addPriceSave3 = addPriceSave2;
|
|
|
+ int stockQtySave3 = stockQtySave2;
|
|
|
+
|
|
|
+ for(int g3 = 0 ; g3 < goods3optCds.length ; g3++) {
|
|
|
+ manageCode = new StringBuilder(manageCodeSave3); // String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
|
|
|
+ manageCode.append("/").append(goods3optCds[g3]);
|
|
|
+ addPrice = addPriceSave3 + Integer.parseInt(goods3addPrices[g3]);
|
|
|
+ if(stockQtySave3 < Integer.parseInt(goods3stockQty[g3])) stockQty = Integer.parseInt(goods3stockQty[g3]);
|
|
|
+
|
|
|
+ if(compsInfoList.size() == 4) { // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
|
|
|
+ for (Goods comps4 : compsInfoList) {
|
|
|
+ if (comps4.getRnum() == 4) {
|
|
|
+ // 구성상품별 옵션 정보
|
|
|
+ String[] goods4optCds = comps4.getOptCd().split(",");
|
|
|
+ String[] goods4addPrices = comps4.getItemStockQty().split(",");
|
|
|
+ String[] goods4stockQty = comps4.getItemStockQty().split(",");
|
|
|
+
|
|
|
+ // 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
|
|
|
+ String manageCodeSave4 = manageCodeSave3;
|
|
|
+ int addPriceSave4 = addPriceSave3;
|
|
|
+ int stockQtySave4 = stockQtySave3;
|
|
|
+
|
|
|
+ for(int g4 = 0 ; g4 < goods4optCds.length ; g4++) {
|
|
|
+ manageCode = new StringBuilder(manageCodeSave4); // String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
|
|
|
+ manageCode.append("/").append(goods4optCds[g4]);
|
|
|
+ addPrice = addPriceSave4 + Integer.parseInt(goods4addPrices[g4]);
|
|
|
+ if(stockQtySave4 < Integer.parseInt(goods4stockQty[g4])) stockQty = Integer.parseInt(goods4stockQty[g4]);
|
|
|
+
|
|
|
+ if(compsInfoList.size() == 5) { // 조합 상품 최대치 계산 (세트상품은 최대 5개까지 등록 가능)
|
|
|
+ for (Goods comps5 : compsInfoList) {
|
|
|
+ if (comps5.getRnum() == 5) {
|
|
|
+ // 구성상품별 옵션 정보
|
|
|
+ String[] goods5optCds = comps5.getOptCd().split(",");
|
|
|
+ String[] goods5addPrices = comps5.getItemStockQty().split(",");
|
|
|
+ String[] goods5stockQty = comps5.getItemStockQty().split(",");
|
|
|
+
|
|
|
+ // 기존 정보 저장 (다시 돌아올 경우 이전 번호까지의 정보로 리셋하기 위함)
|
|
|
+ String manageCodeSave5 = manageCodeSave4;
|
|
|
+ int addPriceSave5 = addPriceSave4;
|
|
|
+ int stockQtySave5 = stockQtySave4;
|
|
|
+
|
|
|
+ for(int g5 = 0 ; g5 < goods5optCds.length ; g5++) {
|
|
|
+ manageCode = new StringBuilder(manageCodeSave5); // String 참조변수 인식 방지(사라지지 않음)를 위한 객체 재생성
|
|
|
+ manageCode.append("/").append(goods5optCds[g5]);
|
|
|
+ addPrice = addPriceSave5 + Integer.parseInt(goods5addPrices[g5]);
|
|
|
+ if (stockQtySave5 < Integer.parseInt(goods5stockQty[g5])) stockQty = Integer.parseInt(goods5stockQty[g5]);
|
|
|
+
|
|
|
+ // 세트상품은 최대 5개이므로 마무리.
|
|
|
+ sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sb.append(getCombinationXml(manageCode.toString(), addPrice, stockQty, compsInfoList.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- sb.append("\t\t\t</optionItem>\n");
|
|
|
|
|
|
- // 9.1 옵션 아이템정보 사이즈
|
|
|
- sb.append("\t\t\t<optionItem>\n");
|
|
|
- sb.append("\t\t\t\t<type>SELECT</type>\n");
|
|
|
- sb.append("\t\t\t\t<name>사이즈</name>\n");
|
|
|
- for (String size : sizeList) {
|
|
|
- sb.append("\t\t\t\t<value>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(size).append("</id>\n");
|
|
|
- sb.append("\t\t\t\t\t<text>").append(size).append("</text>\n");
|
|
|
- sb.append("\t\t\t\t</value>\n");
|
|
|
+ // 10. 배송정보조회
|
|
|
+ // 5.2.1 업체별 기본배송비, 무료배송비
|
|
|
+ String delvFeeCd = "";
|
|
|
+ if("Y".equals(goods.getSelfGoodsYn())) {
|
|
|
+ delvFeeCd = "WMS";
|
|
|
+ } else {
|
|
|
+ delvFeeCd = goods.getDelvFeeCd();
|
|
|
+ }
|
|
|
+ String delvFeeCrite = "CHARGE";
|
|
|
+ int delvFee = goods.getDelvFee();
|
|
|
+ String feePayType = "PREPAYED";
|
|
|
+ // 배송비 조건
|
|
|
+ if(TscConstants.DelvFeeCrite.NORMAL.value().equals(goods.getDelvFeeCrite())) {
|
|
|
+ delvFeeCrite = "CONDITIONAL_FREE"; // 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
|
|
|
+ } else if(TscConstants.DelvFeeCrite.FREE.value().equals(goods.getDelvFeeCrite())) {
|
|
|
+ delvFeeCrite = "FREE";
|
|
|
+ feePayType = "FREE";
|
|
|
+ delvFee = 0;
|
|
|
}
|
|
|
- sb.append("\t\t\t</optionItem>\n");
|
|
|
|
|
|
- // 9.3 옵션 옵션조합정보
|
|
|
- for(GoodsStock optInfo : optList) {
|
|
|
- sb.append("\t\t\t<combination>\n");
|
|
|
- sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
|
|
|
- sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
|
|
|
- sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
|
|
|
- sb.append("\t\t\t\t<status>true</status>\n");
|
|
|
-
|
|
|
- // 9.3.1 옵션 옵션조합정보 색상
|
|
|
- sb.append("\t\t\t\t<options>\n");
|
|
|
- sb.append("\t\t\t\t\t<name>색상</name>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd1()).append("</id>\n");
|
|
|
- sb.append("\t\t\t\t</options>\n");
|
|
|
-
|
|
|
- // 9.3.2 옵션 옵션조합정보 사이즈
|
|
|
- sb.append("\t\t\t\t<options>\n");
|
|
|
- sb.append("\t\t\t\t\t<name>사이즈</name>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd2()).append("</id>\n");
|
|
|
- sb.append("\t\t\t\t</options>\n");
|
|
|
-
|
|
|
- sb.append("\t\t\t</combination>\n");
|
|
|
+ sb.append("\t\t<shippingPolicy>\n");
|
|
|
+ sb.append("\t\t\t<groupId>").append(delvFeeCd).append("</groupId>\n");
|
|
|
+ sb.append("\t\t\t<method>").append("DELIVERY").append("</method>\n");
|
|
|
+ sb.append("\t\t\t<feeType>").append(delvFeeCrite).append("</feeType>\n");
|
|
|
+ sb.append("\t\t\t<feePayType>").append(feePayType).append("</feePayType>\n");
|
|
|
+ sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");
|
|
|
+ if(!"FREE".equals(delvFeeCrite)) {
|
|
|
+ sb.append("\t\t\t<conditionalFree>\n");
|
|
|
+ sb.append("\t\t\t\t<basePrice>").append(goods.getMinOrdAmt()).append("</basePrice>\n");
|
|
|
+ sb.append("\t\t\t</conditionalFree>\n");
|
|
|
}
|
|
|
+
|
|
|
+ sb.append("\t\t</shippingPolicy>\n");
|
|
|
+
|
|
|
+ sb.append("\t</product>\n");
|
|
|
} else {
|
|
|
- // 입점업체 상품 정보
|
|
|
- // 9.1 옵션 아이템정보 색상
|
|
|
- sb.append("\t\t\t<optionItem>\n");
|
|
|
- sb.append("\t\t\t\t<type>SELECT</type>\n");
|
|
|
- sb.append("\t\t\t\t<name>옵션</name>\n");
|
|
|
- for(GoodsStock optInfo : optList) {
|
|
|
- sb.append("\t\t\t\t<value>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
|
|
|
- sb.append("\t\t\t\t\t<text>").append(optInfo.getOptCd1()).append("/").append(optInfo.getOptCd2()).append("</text>\n");
|
|
|
- sb.append("\t\t\t\t</value>\n");
|
|
|
+ // 주문 상품 옵션 정보 조회
|
|
|
+ GoodsStock opt = new GoodsStock();
|
|
|
+ opt.setGoodsCd(item.getGoodsCd());
|
|
|
+ opt.setOptCd(item.getOptCd());
|
|
|
+ opt = goodsDao.getGoodsStockInfo(opt);
|
|
|
+
|
|
|
+ // 주문 상품 정보 조회
|
|
|
+ Goods goods = new Goods();
|
|
|
+ goods.setGoodsCd(item.getGoodsCd());
|
|
|
+ goods.setOptCd(item.getOptCd());
|
|
|
+ goods.setColorCd(opt.getOptCd1());
|
|
|
+ goods.setFrontGb(TsfSession.getFrontGb());
|
|
|
+ goods.setSiteCd(TscConstants.Site.STYLE24.value());
|
|
|
+ goods.setAdminYn("Y"); // 상품 상태에 관계 없이 조회하기 위함
|
|
|
+ goods = goodsDao.getGoodsInfo(goods);
|
|
|
+
|
|
|
+ // 상품 상태 확인
|
|
|
+ String goodsStat = "";
|
|
|
+ if(TscConstants.GoodsStat.APPR.value().equals(goods.getGoodsStat())) {
|
|
|
+ goodsStat = "ON_SALE"; // 판매중
|
|
|
+ } else if (TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat())) {
|
|
|
+ goodsStat = "SOLD_OUT"; // 품절
|
|
|
+ } else {
|
|
|
+ goodsStat = "NOT_SALE"; // 구매불가
|
|
|
}
|
|
|
- sb.append("\t\t\t</optionItem>\n");
|
|
|
|
|
|
- // 9.3 옵션 옵션조합정보
|
|
|
+ // 반송지 정보
|
|
|
+ Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
|
|
|
+
|
|
|
+ sb.append("\t<product>\n");
|
|
|
+ sb.append("\t\t<id>").append(goodsCdArr[i]).append("</id>\n");
|
|
|
+ sb.append("\t\t<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>\n");
|
|
|
+ sb.append("\t\t<ecMallProductId>").append(goodsCdArr[i]).append("</ecMallProductId>\n");
|
|
|
+ sb.append("\t\t<name>").append(goods.getGoodsNm()).append("</name>\n");
|
|
|
+ sb.append("\t\t<status>").append(goodsStat).append("</status>\n");
|
|
|
+ sb.append("\t\t<basePrice>").append(goods.getCurrPrice()).append("</basePrice>\n");
|
|
|
+ // TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
|
|
|
+ sb.append("\t\t<infoUrl>").append("http:" + domain + "/goods/detail/form?goodsCd=" + goods.getGoodsCd()).append("</infoUrl>\n");
|
|
|
+ sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + goods.getSysImgNm()).append("</imageUrl>\n");
|
|
|
+
|
|
|
+ // 12.반품주소
|
|
|
+ if (rtnInfo != null && rtnInfo.getRtnLocZipcode() != null && !"".equals(rtnInfo.getRtnLocZipcode())) {
|
|
|
+ // 2.1 반품정보
|
|
|
+ sb.append("\t\t<returnInfo>\n");
|
|
|
+ sb.append("\t\t\t<zipcode>").append(rtnInfo.getRtnLocZipcode()).append("</zipcode>\n");
|
|
|
+ sb.append("\t\t\t<address1>").append(rtnInfo.getRtnLocBaseAddr()).append("</address1>\n");
|
|
|
+ sb.append("\t\t\t<address2>").append(rtnInfo.getRtnLocDtlAddr()).append("</address2>\n");
|
|
|
+ sb.append("\t\t\t<sellername>").append(rtnInfo.getRtnLocNm()).append("</sellername>\n");
|
|
|
+ sb.append("\t\t\t<contact1>").append(rtnInfo.getRtnLocTelno()).append("</contact1>\n");
|
|
|
+ sb.append("\t\t</returnInfo>\n");
|
|
|
+
|
|
|
+ // 반품배송비, 교환배송비
|
|
|
+ sb.append("\t\t<returnShippingFee>").append(goods.getRtnDelvFee()).append("</returnShippingFee>\n");
|
|
|
+ sb.append("\t\t<exchangeShippingFee>").append(goods.getDelvFee() + goods.getRtnDelvFee()).append("</exchangeShippingFee>\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 옵션정보 지원여부 true
|
|
|
+ sb.append("\t\t<optionSupport>true</optionSupport>\n");
|
|
|
+
|
|
|
+ // 옵션 정보
|
|
|
+ sb.append("\t\t<option>\n");
|
|
|
+
|
|
|
+ // 상품 옵션 전체 정보 조회
|
|
|
+ Collection<GoodsStock> optList = goodsDao.getGoodsOptionInfoList(opt);
|
|
|
+
|
|
|
+ String[] colorNmList = new String[optList.size()];
|
|
|
+ String[] colorList = new String[optList.size()];
|
|
|
+ String[] sizeList = new String[optList.size()];
|
|
|
+ int count = 0;
|
|
|
+
|
|
|
+ // 중복제거
|
|
|
for(GoodsStock optInfo : optList) {
|
|
|
- sb.append("\t\t\t<combination>\n");
|
|
|
- sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
|
|
|
- sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
|
|
|
- sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
|
|
|
- sb.append("\t\t\t\t<status>true</status>\n");
|
|
|
-
|
|
|
- // 9.3.1 옵션 옵션조합정보 색상
|
|
|
- sb.append("\t\t\t\t<options>\n");
|
|
|
- sb.append("\t\t\t\t\t<name>옵션</name>\n");
|
|
|
- sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
|
|
|
- sb.append("\t\t\t\t</options>\n");
|
|
|
- sb.append("\t\t\t</combination>\n");
|
|
|
+ colorNmList[count] = optInfo.getColorNm();
|
|
|
+ colorList[count] = optInfo.getOptCd1();
|
|
|
+ sizeList[count] = optInfo.getOptCd2();
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ colorNmList = new HashSet<String>(Arrays.asList(colorNmList)).toArray(new String[0]);
|
|
|
+ colorList = new HashSet<String>(Arrays.asList(colorList)).toArray(new String[0]);
|
|
|
+ sizeList = new HashSet<String>(Arrays.asList(sizeList)).toArray(new String[0]);
|
|
|
+
|
|
|
+ if("Y".equals(goods.getSelfGoodsYn())) {
|
|
|
+ // 자사 일반 상품 정보
|
|
|
+ // 옵션 아이템정보 색상
|
|
|
+ sb.append("\t\t\t<optionItem>\n");
|
|
|
+ sb.append("\t\t\t\t<type>SELECT</type>\n");
|
|
|
+ sb.append("\t\t\t\t<name>색상</name>\n");
|
|
|
+ int j = 0;
|
|
|
+ for (String color : colorList) {
|
|
|
+ sb.append("\t\t\t\t<value>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(color).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t\t<text>").append(colorNmList[j++]).append("</text>\n");
|
|
|
+ sb.append("\t\t\t\t</value>\n");
|
|
|
+ }
|
|
|
+ sb.append("\t\t\t</optionItem>\n");
|
|
|
+
|
|
|
+ // 옵션 아이템정보 사이즈
|
|
|
+ sb.append("\t\t\t<optionItem>\n");
|
|
|
+ sb.append("\t\t\t\t<type>SELECT</type>\n");
|
|
|
+ sb.append("\t\t\t\t<name>사이즈</name>\n");
|
|
|
+ for (String size : sizeList) {
|
|
|
+ sb.append("\t\t\t\t<value>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(size).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t\t<text>").append(size).append("</text>\n");
|
|
|
+ sb.append("\t\t\t\t</value>\n");
|
|
|
+ }
|
|
|
+ sb.append("\t\t\t</optionItem>\n");
|
|
|
+
|
|
|
+ // 옵션 옵션조합정보
|
|
|
+ for(GoodsStock optInfo : optList) {
|
|
|
+ sb.append("\t\t\t<combination>\n");
|
|
|
+ sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
|
|
|
+ sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
|
|
|
+ sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
|
|
|
+ sb.append("\t\t\t\t<status>true</status>\n");
|
|
|
+
|
|
|
+ // 옵션 옵션조합정보 색상
|
|
|
+ sb.append("\t\t\t\t<options>\n");
|
|
|
+ sb.append("\t\t\t\t\t<name>색상</name>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd1()).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t</options>\n");
|
|
|
+
|
|
|
+ // 옵션 옵션조합정보 사이즈
|
|
|
+ sb.append("\t\t\t\t<options>\n");
|
|
|
+ sb.append("\t\t\t\t\t<name>사이즈</name>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd2()).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t</options>\n");
|
|
|
+
|
|
|
+ sb.append("\t\t\t</combination>\n");
|
|
|
+ }
|
|
|
+ } else {// 입점업체 상품 정보
|
|
|
+ // 옵션 아이템정보 색상
|
|
|
+ sb.append("\t\t\t<optionItem>\n");
|
|
|
+ sb.append("\t\t\t\t<type>SELECT</type>\n");
|
|
|
+ sb.append("\t\t\t\t<name>옵션</name>\n");
|
|
|
+ for(GoodsStock optInfo : optList) {
|
|
|
+ sb.append("\t\t\t\t<value>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t\t<text>").append(optInfo.getOptCd1()).append("/").append(optInfo.getOptCd2()).append("</text>\n");
|
|
|
+ sb.append("\t\t\t\t</value>\n");
|
|
|
+ }
|
|
|
+ sb.append("\t\t\t</optionItem>\n");
|
|
|
+
|
|
|
+ // 옵션 옵션조합정보
|
|
|
+ for(GoodsStock optInfo : optList) {
|
|
|
+ sb.append("\t\t\t<combination>\n");
|
|
|
+ sb.append("\t\t\t\t<manageCode>").append(optInfo.getOptCd()).append("</manageCode>\n");
|
|
|
+ sb.append("\t\t\t\t<price>").append(optInfo.getAddPrice()).append("</price>\n");
|
|
|
+ sb.append("\t\t\t\t<stockQuantity>").append(optInfo.getStockQty()).append("</stockQuantity>\n");
|
|
|
+ sb.append("\t\t\t\t<status>true</status>\n");
|
|
|
+ sb.append("\t\t\t\t<options>\n");
|
|
|
+ sb.append("\t\t\t\t\t<name>옵션</name>\n");
|
|
|
+ sb.append("\t\t\t\t\t<id>").append(optInfo.getOptCd()).append("</id>\n");
|
|
|
+ sb.append("\t\t\t\t</options>\n");
|
|
|
+ sb.append("\t\t\t</combination>\n");
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- sb.append("\t\t</option>\n");
|
|
|
+ sb.append("\t\t</option>\n");
|
|
|
|
|
|
- // 10. 배송정보조회
|
|
|
- // 5.2.1 업체별 기본배송비, 무료배송비
|
|
|
- String delvFeeCd = "";
|
|
|
- if("Y".equals(goods.getSelfGoodsYn())) {
|
|
|
- delvFeeCd = "WMS";
|
|
|
- } else {
|
|
|
- delvFeeCd = goods.getDelvFeeCd();
|
|
|
- }
|
|
|
- String delvFeeCrite = "CHARGE";
|
|
|
- int delvFee = goods.getDelvFee();
|
|
|
- String feePayType = "PREPAYED";
|
|
|
- // 배송비 조건
|
|
|
- if(TscConstants.DelvFeeCrite.NORMAL.value().equals(goods.getDelvFeeCrite())) {
|
|
|
- delvFeeCrite = "CONDITIONAL_FREE"; // 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
|
|
|
- } else if(TscConstants.DelvFeeCrite.FREE.value().equals(goods.getDelvFeeCrite())) {
|
|
|
- delvFeeCrite = "FREE";
|
|
|
- feePayType = "FREE";
|
|
|
- delvFee = 0;
|
|
|
- }
|
|
|
+ // 10. 배송정보조회
|
|
|
+ // 5.2.1 업체별 기본배송비, 무료배송비
|
|
|
+ String delvFeeCd = "";
|
|
|
+ if("Y".equals(goods.getSelfGoodsYn())) {
|
|
|
+ delvFeeCd = "WMS";
|
|
|
+ } else {
|
|
|
+ delvFeeCd = goods.getDelvFeeCd();
|
|
|
+ }
|
|
|
+ String delvFeeCrite = "CHARGE";
|
|
|
+ int delvFee = goods.getDelvFee();
|
|
|
+ String feePayType = "PREPAYED";
|
|
|
+ // 배송비 조건
|
|
|
+ if(TscConstants.DelvFeeCrite.NORMAL.value().equals(goods.getDelvFeeCrite())) {
|
|
|
+ delvFeeCrite = "CONDITIONAL_FREE"; // 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
|
|
|
+ } else if(TscConstants.DelvFeeCrite.FREE.value().equals(goods.getDelvFeeCrite())) {
|
|
|
+ delvFeeCrite = "FREE";
|
|
|
+ feePayType = "FREE";
|
|
|
+ delvFee = 0;
|
|
|
+ }
|
|
|
|
|
|
- sb.append("\t\t<shippingPolicy>\n");
|
|
|
- sb.append("\t\t\t<groupId>").append(delvFeeCd).append("</groupId>\n");
|
|
|
- sb.append("\t\t\t<method>").append("DELIVERY").append("</method>\n");
|
|
|
- sb.append("\t\t\t<feeType>").append(delvFeeCrite).append("</feeType>\n");
|
|
|
- sb.append("\t\t\t<feePayType>").append(feePayType).append("</feePayType>\n");
|
|
|
- sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");
|
|
|
- if(!"FREE".equals(delvFeeCrite)) {
|
|
|
- sb.append("\t\t\t<conditionalFree>\n");
|
|
|
- sb.append("\t\t\t\t<basePrice>").append(goods.getMinOrdAmt()).append("</basePrice>\n");
|
|
|
- sb.append("\t\t\t</conditionalFree>\n");
|
|
|
- }
|
|
|
+ sb.append("\t\t<shippingPolicy>\n");
|
|
|
+ sb.append("\t\t\t<groupId>").append(delvFeeCd).append("</groupId>\n");
|
|
|
+ sb.append("\t\t\t<method>").append("DELIVERY").append("</method>\n");
|
|
|
+ sb.append("\t\t\t<feeType>").append(delvFeeCrite).append("</feeType>\n");
|
|
|
+ sb.append("\t\t\t<feePayType>").append(feePayType).append("</feePayType>\n");
|
|
|
+ sb.append("\t\t\t<feePrice>").append(delvFee).append("</feePrice>\n");
|
|
|
+ if(!"FREE".equals(delvFeeCrite)) {
|
|
|
+ sb.append("\t\t\t<conditionalFree>\n");
|
|
|
+ sb.append("\t\t\t\t<basePrice>").append(goods.getMinOrdAmt()).append("</basePrice>\n");
|
|
|
+ sb.append("\t\t\t</conditionalFree>\n");
|
|
|
+ }
|
|
|
|
|
|
- sb.append("\t\t</shippingPolicy>\n");
|
|
|
+ sb.append("\t\t</shippingPolicy>\n");
|
|
|
|
|
|
- sb.append("\t</product>\n");
|
|
|
+ sb.append("\t</product>\n");
|
|
|
+ }
|
|
|
}
|
|
|
sb.append("</products>\n");
|
|
|
//for end
|