Просмотр исходного кода

이태영 - 20210512 네이버페이 개발중

xodud lee 5 лет назад
Родитель
Сommit
eedde6e592

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -419,4 +419,13 @@ public interface TsfGoodsDao {
 	 * @date 2021. 5. 12
 	 */
 	Collection<Goods> getBrandNewGoodsList(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품 옵션 정보 조회
+	 * @param params
+	 * @return
+	 * @author xodud1202
+	 * @date 2021. 05. 12
+	 */
+	Collection<GoodsStock> getGoodsOptionInfoList(GoodsStock param);
 }

+ 73 - 63
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -12,6 +12,8 @@ import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.style24.front.biz.dao.TsfGoodsDao;
+import com.style24.persistence.domain.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -32,13 +34,6 @@ import com.style24.front.biz.dao.TsfCartDao;
 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.GiftCard;
-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;
 
@@ -87,6 +82,9 @@ public class TsfOrderService {
 	@Autowired
 	private TsfCartDao cartDao;
 
+	@Autowired
+	private TsfGoodsDao goodsDao;
+
 	/**
 	 * 마이페이지 주문 정보 조회
 	 *
@@ -1067,17 +1065,18 @@ public class TsfOrderService {
 			for(Order item : param.getOrderDetailList()) {
 				//<!-- 상품정보 -->
 				sb.append("\t<product>\n");
-				sb.append("\t\t<id>").append(item.getGoodsCd()).append("</id>\n");							//<!-- 상품코드 -->
+				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(item.getGoodsNm()).append("</name>\n");	//<!-- 상품명 -->
-				sb.append("\t\t<basePrice>").append(item.getCurrPrice() + item.getOptAddPrice()).append("</basePrice>\n");						//<!-- 상품금액 -->
-				sb.append("\t\t<infoUrl>").append("http:" + param.getGoodsUrl() + item.getGoodsCd()).append("</infoUrl>\n");		//<!-- 상품상세페이지 URL -->
+				sb.append("\t\t<basePrice>").append(item.getCurrPrice() + item.getOptAddPrice()).append("</basePrice>\n");		//<!-- 상품금액 -->
+				// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
+				sb.append("\t\t<infoUrl>").append("http:" + param.getGoodsUrl() + item.getGoodsCd()).append("</infoUrl>\n");	//<!-- 상품상세페이지 URL -->
 				sb.append("\t\t<imageUrl>").append("http:" + goodsImgUrl + "/" + item.getSysImgNm()).append("</imageUrl>\n");	//<!-- 상품원본이미지 URL -->
 
 				// 옵션 정보
 				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<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(item.getOptCd()).append("</manageCode>\n");	//<!-- 옵션관리코드 -->
 
 				// 칼라코드
@@ -1252,9 +1251,6 @@ public class TsfOrderService {
 		// product[0][id]=G2019070300016&product[0][optionManageCodes]=010_5|55|&supplementSearch=true&optionSearch=true
 
 		try {
-			sb.append("<?xml version='1.0' encoding='utf-8'?>");
-			sb.append("<products>");
-
 			String goodsCdStr 				= "";
 			String optionManageCodesStr 	= "";
 			String queryStr 				= request.getQueryString();
@@ -1298,6 +1294,9 @@ public class TsfOrderService {
 			String goodsImgUrl		= env.getProperty("upload.goods.view");				// 상품 이미지 경로
 			int totPrice			= 0;												// 전체 주문 금액
 
+			sb.append("<?xml version='1.0' encoding='utf-8'?>");
+			sb.append("<products>");
+
 			for (int i=0; i<goodsCdArr.length; i++) {
 				Order item = new Order();
 
@@ -1307,79 +1306,90 @@ public class TsfOrderService {
 
 				// 9.상품 옵션
 				String optionManageCodesArrStr = coreOrderService.simpleDecode(optionManageCodesArr[i]);
-				String [] arr = optionManageCodesArrStr.split("_");
-				item.setOptCd1(arr[0]);
+				String [] arr = optionManageCodesArrStr.split(",");
+				item.setOptCd(arr[0]);
 
 				arr[1] = coreOrderService.simpleDecode(arr[1]);
 
-				/*shopInfo = shopService.shopData(shopInfo);
-
-				Ship shipInfoVo = new Ship();
-				shipInfoVo.setCompany_mng_idx(shopInfo.getCompany_mng_idx());
-
-				// 2018.10.17 전석훈추가 (반품정보연동)
-				shipInfoVo = shipService.companyShipInfoView(shipInfoVo);
-
-				// 1.상품정보
-				// 사이트별 상품명 칼럼이 다름
-				String goodsNm = "";
-
-				if ("99999".equals(shopInfo.getBrand_mng_idx())) {
-					goodsNm = shopInfo.getBrand_nm() + " " + shopInfo.getGoods_nm_kor();
+				// 주문 상품 옵션 정보 조회
+				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 {
-					goodsNm = shopInfo.getBrand_nm() + " " + shopInfo.getGoods_nm_eng();
+					goodsStat = "NOT_SALE";		// 주매불가
 				}
 
+				// 반송지 정보
+				Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
+
 				sb.append("<product>");
 				sb.append("<id>").append(goodsCdArr[i]).append("</id>");
 				sb.append("<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>");
 				sb.append("<ecMallProductId>").append(goodsCdArr[i]).append("</ecMallProductId>");
-				sb.append("<name>").append("<![CDATA[" + goodsNm + "]]>").append("</name>");
-				sb.append("<basePrice>").append(String.valueOf(shopInfo.getSale_amt())).append("</basePrice>");
-				sb.append("<infoUrl>").append("<![CDATA[" + domain + "/shop/shopView?goods_code=" + shopInfo.getGoods_code() + "]]>").append("</infoUrl>");
-
-				// 1.2 상품 이미지
-				List<Shop> shopImgList 	= shopDao.shopImgList(shopInfo);
-				Shop img 				= null;
-				String prodImg 			= null;
-
-				if (shopImgList.size() > 0) {
-					img = shopImgList.get(0);
-					prodImg = goodsImgUrl + "/" + img.getSys_img_nm();
-
-					if (prodImg.indexOf("http:") < 0) {
-						prodImg = "http:" + prodImg;
-					}
-				} else {
-					prodImg = "http:" + staticUrl + "/images/common/default_gy.jpg";
-				}
-
-				sb.append("<imageUrl>").append("<![CDATA[" + prodImg + "]]>").append("</imageUrl>");
+				sb.append("<name>").append(goods.getGoodsNm()).append("</name>");
+				sb.append("<status>").append(goodsStat).append("</status>");
+				sb.append("<basePrice>").append(goods.getCurrPrice() + opt.getAddPrice()).append("</basePrice>");
+				// TODO http: 부분 운영 프로토콜 확인 후 수정 필요(운영 상품상세가 HTTPS일 경우 분기처리 필요(개발서버, 운영 구분))
+				sb.append("<infoUrl>").append("http:" + domain + goods.getGoodsCd()).append("</infoUrl>");
+				sb.append("<imageUrl>").append("http:" + goodsImgUrl + "/" + goods.getSysImgNm()).append("</imageUrl>");
 
 				// 12.반품주소
-				if (shipInfoVo != null) {
-					if (shipInfoVo.getReturn_addr_zip() != null && !"".equals(shipInfoVo.getReturn_addr_zip())) {
+				if (rtnInfo != null) {
+					if (rtnInfo.getRtnLocZipcode() != null && !"".equals(rtnInfo.getRtnLocZipcode())) {
 						// 2.1 반품정보
 						sb.append("<returnInfo>");
-						sb.append("<zipcode>").append("<![CDATA[" + String.valueOf(shipInfoVo.getReturn_addr_zip()) + "]]>").append("</zipcode>");
-						sb.append("<address1>").append("<![CDATA[" + String.valueOf(shipInfoVo.getReturn_addr_base()) + "]]>").append("</address1>");
-						sb.append("<address2>").append("<![CDATA[" + String.valueOf(shipInfoVo.getReturn_addr_detail()) + "]]>").append("</address2>");
-						sb.append("<sellername>").append("<![CDATA[" + String.valueOf(shipInfoVo.getResp_nm()) + "]]>").append("</sellername>");
-						sb.append("<contact1>").append("<![CDATA[" + String.valueOf(shipInfoVo.getCntct_no()) + "]]>").append("</contact1>");
+						sb.append("<zipcode>").append(rtnInfo.getRtnLocZipcode()).append("</zipcode>");
+						sb.append("<address1>").append(rtnInfo.getRtnLocBaseAddr()).append("</address1>");
+						sb.append("<address2>").append(rtnInfo.getRtnLocDtlAddr()).append("</address2>");
+						sb.append("<sellername>").append(rtnInfo.getRtnLocNm()).append("</sellername>");
+						sb.append("<contact1>").append(rtnInfo.getRtnLocTelno()).append("</contact1>");
 						sb.append("</returnInfo>");
 
 						// 반품배송비, 교환배송비
-						sb.append("<returnShippingFee>" + shipInfoVo.getReturn_amt() + "</returnShippingFee>");
-						sb.append("<exchangeShippingFee>" + shipInfoVo.getExch_amt() + "</exchangeShippingFee>");
+						sb.append("<returnShippingFee>").append(goods.getRtnDelvFee()).append("</returnShippingFee>");
+						sb.append("<exchangeShippingFee>").append(goods.getDelvFee() + goods.getRtnDelvFee()).append("</exchangeShippingFee>");
 					}
 				}
 
 				// 옵션정보 지원여부 true
 				sb.append("<optionSupport>true</optionSupport>");
+
+				// 상품 옵션 전체 정보 조회
+				Collection<GoodsStock> optList = goodsDao.getGoodsOptionInfoList(opt);
+
+				String[] colorList = new String[optList.size()];
+				String[] colorNmList = 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();
+				}
+
+				// 옵션 정보
 				sb.append("<option>");
 
 				// 9.1 옵션 아이템정보 색상
-				sb.append("<optionItem>");
+				/*sb.append("<optionItem>");
 				sb.append("<type>SELECT</type>");
 				sb.append("<name>칼라</name>");
 				sb.append("<value>");

+ 3 - 3
src/main/java/com/style24/persistence/domain/Delivery.java

@@ -23,8 +23,8 @@ public class Delivery extends TscBaseDomain {
 	private String rtnLocBaseAddr;	// 반품처기본주소
 	private String rtnLocDtlAddr;	// 반품처상세주소
 	private String rtnLocTelno;		// 반품처전화번호
+	private String rtnLocNm;		// 수취인
 	private String note;			// 배송안내정보
-	private String shipCompCd;			// 배송안내정보
-	private String shipCompNm;			// 배송안내정보
-
+	private String shipCompCd;		// 배송안내정보
+	private String shipCompNm;		// 배송안내정보
 }

+ 1 - 0
src/main/java/com/style24/persistence/domain/Goods.java

@@ -48,6 +48,7 @@ public class Goods extends TscBaseDomain {
 	private String ageGrpCd;		//상품연령대(공통코드 G023)
 	private String delvFeeCd;	//배송비정책코드
 	private int delvFee;		//배송비
+	private int rtnDelvFee;		//반품배송비
 	private int minOrdAmt;		//무료배송비최소구매금액
 	private float pntPrate;		//포인트적립율(PC)
 	private float pntMrate;		//포인트적립율(모바일)

+ 1 - 1
src/main/java/com/style24/persistence/domain/GoodsStock.java

@@ -26,7 +26,7 @@ public class GoodsStock extends TscBaseDomain {
 	private int currStockQty;		// 가용재고
 	private int addPrice;			// 추가금액
 	private int dispOrd;			// 표시순서
-
+	private String colorNm;			// 컬러명
 	private String itemCd;			// 구성상품코드
 	private String goodsType;		// 상품구분
 	private String sysImgNm;		// 상품이미지 명

+ 19 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -109,6 +109,7 @@
 		     , G.SEX_GB
 		     , FN_GET_CODE_NM('G007',G.SEX_GB) AS SEX_NM
 		     , E.DELV_FEE
+		     , E.RTN_DELV_FEE
 		     , E.MIN_ORD_AMT
 		     , E.DELV_FEE_CRITE
 		     , FN_GET_CODE_NM('G073',G.GOODS_GB) AS GOODS_GB_NM
@@ -208,6 +209,23 @@
 		AND DESC_GB = #{descGb}
 		ORDER BY SEQ
 	</select>
+
+	<!-- 상품 옵션 정보 조회 -->
+	<select id="getGoodsOptionInfoList" parameterType="GoodsStock" resultType="GoodsStock">
+		/* TsfGoods.getGoodsOptionInfoList : 상품 옵션 정보 조회 */
+		SELECT VS.GOODS_CD
+		     , VS.CURR_STOCK_QTY
+		     , VS.SOLDOUT_YN
+		     , VS.OPT_CD
+		     , VS.OPT_CD1
+		     , VS.OPT_CD2
+		     , VS.DISP_YN
+		     , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = NULLIF(VS.OPT_CD1,'') AND USE_YN  = 'Y'), VS.OPT_CD1) AS COLOR_NM
+		     , CASE WHEN VS.DISP_YN = 'Y' AND VS.SOLDOUT_YN = 'N' THEN VS.CURR_STOCK_QTY ELSE 0 END AS STOCK_QTY
+		FROM   VW_STOCK VS
+		WHERE  VS.GOODS_CD = #{goodsCd}
+		ORDER  BY VS.DISP_ORD
+	</select>
 	
 	<!-- 핫딜 상품 조회 -->
 	<select id="getSocialGoods" parameterType="Goods" resultType="Goods">
@@ -522,6 +540,7 @@
 			 , VS.OPT_CD2
 			 , VS.SOLDOUT_YN
 			 , VS.CURR_STOCK_QTY
+		     , VS.ADD_PRICE
 			 , O.SKU_MODEL_NO
 		  FROM VW_STOCK VS
 		 INNER JOIN TB_OPTION O