Jelajahi Sumber

Merge remote-tracking branch 'origin/xodud1202' into order

card007 5 tahun lalu
induk
melakukan
7d37c5266e

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

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

+ 83 - 73
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.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 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.TsfOrderDao;
 import com.style24.front.biz.dao.TsfRendererDao;
 import com.style24.front.biz.dao.TsfRendererDao;
 import com.style24.front.support.security.session.TsfSession;
 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.InsuranceInfo;
 import com.usafe.guarantee.InsuranceManager;
 import com.usafe.guarantee.InsuranceManager;
 
 
@@ -87,6 +82,9 @@ public class TsfOrderService {
 	@Autowired
 	@Autowired
 	private TsfCartDao cartDao;
 	private TsfCartDao cartDao;
 
 
+	@Autowired
+	private TsfGoodsDao goodsDao;
+
 	/**
 	/**
 	 * 마이페이지 주문 정보 조회
 	 * 마이페이지 주문 정보 조회
 	 *
 	 *
@@ -1067,17 +1065,18 @@ public class TsfOrderService {
 			for(Order item : param.getOrderDetailList()) {
 			for(Order item : param.getOrderDetailList()) {
 				//<!-- 상품정보 -->
 				//<!-- 상품정보 -->
 				sb.append("\t<product>\n");
 				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<ecMallProductId>").append(item.getGoodsCd()).append("</ecMallProductId>\n");	//<!-- 상품코드 -->
 				sb.append("\t\t<name>").append(item.getGoodsNm()).append("</name>\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<imageUrl>").append("http:" + goodsImgUrl + "/" + item.getSysImgNm()).append("</imageUrl>\n");	//<!-- 상품원본이미지 URL -->
 
 
 				// 옵션 정보
 				// 옵션 정보
 				sb.append("\t\t<option>\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<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");	//<!-- 옵션관리코드 -->
 				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
 		// product[0][id]=G2019070300016&product[0][optionManageCodes]=010_5|55|&supplementSearch=true&optionSearch=true
 
 
 		try {
 		try {
-			sb.append("<?xml version='1.0' encoding='utf-8'?>");
-			sb.append("<products>");
-
 			String goodsCdStr 				= "";
 			String goodsCdStr 				= "";
 			String optionManageCodesStr 	= "";
 			String optionManageCodesStr 	= "";
 			String queryStr 				= request.getQueryString();
 			String queryStr 				= request.getQueryString();
@@ -1267,13 +1263,13 @@ public class TsfOrderService {
 					String[] arr3 = arr2[j].split("=");
 					String[] arr3 = arr2[j].split("=");
 
 
 					if (arr3.length > 1) {
 					if (arr3.length > 1) {
-						if (arr3[0].indexOf("id") > -1) {
+						if (arr3[0].contains("id")) {
 							if ("".equals(goodsCdStr)) {
 							if ("".equals(goodsCdStr)) {
 								goodsCdStr = goodsCdStr + arr3[1];
 								goodsCdStr = goodsCdStr + arr3[1];
 							} else {
 							} else {
 								goodsCdStr = goodsCdStr + "," + arr3[1];
 								goodsCdStr = goodsCdStr + "," + arr3[1];
 							}
 							}
-						} else if (arr3[0].indexOf("optionManageCodes") > -1) {
+						} else if (arr3[0].contains("optionManageCodes")) {
 							if ("".equals(optionManageCodesStr)) {
 							if ("".equals(optionManageCodesStr)) {
 								optionManageCodesStr = optionManageCodesStr + arr3[1];
 								optionManageCodesStr = optionManageCodesStr + arr3[1];
 							} else {
 							} else {
@@ -1298,7 +1294,10 @@ public class TsfOrderService {
 			String goodsImgUrl		= env.getProperty("upload.goods.view");				// 상품 이미지 경로
 			String goodsImgUrl		= env.getProperty("upload.goods.view");				// 상품 이미지 경로
 			int totPrice			= 0;												// 전체 주문 금액
 			int totPrice			= 0;												// 전체 주문 금액
 
 
-			/*for (int i=0; i<goodsCdArr.length; i++) {
+			sb.append("<?xml version='1.0' encoding='utf-8'?>");
+			sb.append("<products>");
+
+			for (int i=0; i<goodsCdArr.length; i++) {
 				Order item = new Order();
 				Order item = new Order();
 
 
 				item.setGoodsCd(goodsCdArr[i]);
 				item.setGoodsCd(goodsCdArr[i]);
@@ -1306,80 +1305,91 @@ public class TsfOrderService {
 				//shopInfo.setDevice(CommonCodeConstant.DEIVCE_WEB);		//WEB
 				//shopInfo.setDevice(CommonCodeConstant.DEIVCE_WEB);		//WEB
 
 
 				// 9.상품 옵션
 				// 9.상품 옵션
-				String optionManageCodesArrStr = CryptoManager.simpleDecode(optionManageCodesArr[i]);
-				String [] arr = optionManageCodesArrStr.split("_");
-				item.setOptCd1(arr[0]);
-
-				arr[1] = CryptoManager.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();
+				String optionManageCodesArrStr = coreOrderService.simpleDecode(optionManageCodesArr[i]);
+				String [] arr = optionManageCodesArrStr.split(",");
+				item.setOptCd(arr[0]);
+
+				arr[1] = coreOrderService.simpleDecode(arr[1]);
+
+				// 주문 상품 옵션 정보 조회
+				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 {
 				} else {
-					goodsNm = shopInfo.getBrand_nm() + " " + shopInfo.getGoods_nm_eng();
+					goodsStat = "NOT_SALE";		// 주매불가
 				}
 				}
 
 
+				// 반송지 정보
+				Delivery rtnInfo = goodsDao.getGoodsDeliveryInfo(goods.getGoodsCd());
+
 				sb.append("<product>");
 				sb.append("<product>");
 				sb.append("<id>").append(goodsCdArr[i]).append("</id>");
 				sb.append("<id>").append(goodsCdArr[i]).append("</id>");
 				sb.append("<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>");
 				sb.append("<merchantProductId>").append(goodsCdArr[i]).append("</merchantProductId>");
 				sb.append("<ecMallProductId>").append(goodsCdArr[i]).append("</ecMallProductId>");
 				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.반품주소
 				// 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 반품정보
 						// 2.1 반품정보
 						sb.append("<returnInfo>");
 						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("</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
 				// 옵션정보 지원여부 true
 				sb.append("<optionSupport>true</optionSupport>");
 				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>");
 				sb.append("<option>");
 
 
 				// 9.1 옵션 아이템정보 색상
 				// 9.1 옵션 아이템정보 색상
-				sb.append("<optionItem>");
+				/*sb.append("<optionItem>");
 				sb.append("<type>SELECT</type>");
 				sb.append("<type>SELECT</type>");
 				sb.append("<name>칼라</name>");
 				sb.append("<name>칼라</name>");
 				sb.append("<value>");
 				sb.append("<value>");
@@ -1388,7 +1398,7 @@ public class TsfOrderService {
 				sb.append("</value>");
 				sb.append("</value>");
 				sb.append("</optionItem>");
 				sb.append("</optionItem>");
 
 
-				String goodsSizeStr = CryptoManager.decodeStr(arr[1]);
+				String goodsSizeStr = coreOrderService.decodeStr(arr[1]);
 
 
 				// 9.1 옵션 아이템정보 사이즈
 				// 9.1 옵션 아이템정보 사이즈
 				sb.append("<optionItem>");
 				sb.append("<optionItem>");
@@ -1445,8 +1455,8 @@ public class TsfOrderService {
 
 
 				sb.append("</shippingPolicy>");
 				sb.append("</shippingPolicy>");
 
 
-				sb.append("</product>");
-			}*/
+				sb.append("</product>");*/
+			}
 			sb.append("</products>");
 			sb.append("</products>");
 			//for end
 			//for end
 
 

+ 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 rtnLocBaseAddr;	// 반품처기본주소
 	private String rtnLocDtlAddr;	// 반품처상세주소
 	private String rtnLocDtlAddr;	// 반품처상세주소
 	private String rtnLocTelno;		// 반품처전화번호
 	private String rtnLocTelno;		// 반품처전화번호
+	private String rtnLocNm;		// 수취인
 	private String note;			// 배송안내정보
 	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 ageGrpCd;		//상품연령대(공통코드 G023)
 	private String delvFeeCd;	//배송비정책코드
 	private String delvFeeCd;	//배송비정책코드
 	private int delvFee;		//배송비
 	private int delvFee;		//배송비
+	private int rtnDelvFee;		//반품배송비
 	private int minOrdAmt;		//무료배송비최소구매금액
 	private int minOrdAmt;		//무료배송비최소구매금액
 	private float pntPrate;		//포인트적립율(PC)
 	private float pntPrate;		//포인트적립율(PC)
 	private float pntMrate;		//포인트적립율(모바일)
 	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 currStockQty;		// 가용재고
 	private int addPrice;			// 추가금액
 	private int addPrice;			// 추가금액
 	private int dispOrd;			// 표시순서
 	private int dispOrd;			// 표시순서
-
+	private String colorNm;			// 컬러명
 	private String itemCd;			// 구성상품코드
 	private String itemCd;			// 구성상품코드
 	private String goodsType;		// 상품구분
 	private String goodsType;		// 상품구분
 	private String sysImgNm;		// 상품이미지 명
 	private String sysImgNm;		// 상품이미지 명

+ 6 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -513,6 +513,7 @@
 		     , Z.SOLDOUT_YN
 		     , Z.SOLDOUT_YN
 		     , CASE WHEN #{frontGb} = 'P' THEN Z.PNT_PRATE ELSE Z.PNT_MRATE END AS PNT_RATE
 		     , CASE WHEN #{frontGb} = 'P' THEN Z.PNT_PRATE ELSE Z.PNT_MRATE END AS PNT_RATE
 		     , SYS_IMG_NM
 		     , SYS_IMG_NM
+		     , Z.BRAND_GROUP_NM
 		FROM   (SELECT C.CART_SQ
 		FROM   (SELECT C.CART_SQ
 		             , C.GOODS_CD
 		             , C.GOODS_CD
 		             , C.GOODS_QTY
 		             , C.GOODS_QTY
@@ -573,6 +574,7 @@
 		             , CASE WHEN C.CUST_NO = 0 AND C.GOODS_QTY > G.DAY_MAX_ORD_QTY THEN 1 ELSE 0 END AS NOCUST_TODAY_ORD
 		             , CASE WHEN C.CUST_NO = 0 AND C.GOODS_QTY > G.DAY_MAX_ORD_QTY THEN 1 ELSE 0 END AS NOCUST_TODAY_ORD
 		             , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = CD.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
 		             , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = CD.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
 		            		ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END AS SYS_IMG_NM
 		            		ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END AS SYS_IMG_NM
+		             , (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
 		        FROM   TB_CART C
 		        FROM   TB_CART C
 		        INNER  JOIN TB_CART_DETAIL CD
 		        INNER  JOIN TB_CART_DETAIL CD
 		        ON     C.CART_SQ = CD.CART_SQ
 		        ON     C.CART_SQ = CD.CART_SQ
@@ -582,6 +584,9 @@
 		        AND    G.GOODS_STAT <![CDATA[ <> ]]> 'G008_99'
 		        AND    G.GOODS_STAT <![CDATA[ <> ]]> 'G008_99'
 		        INNER  JOIN TB_BRAND BR
 		        INNER  JOIN TB_BRAND BR
 		        ON     G.BRAND_CD = BR.BRAND_CD
 		        ON     G.BRAND_CD = BR.BRAND_CD
+		        INNER  JOIN TB_BRAND_GROUP D
+		        ON     BR.BRAND_GROUP_NO = D.BRAND_GROUP_NO
+		        AND    D.USE_YN = 'Y'
 		        INNER  JOIN TB_DELV_FEE_POLICY DFP
 		        INNER  JOIN TB_DELV_FEE_POLICY DFP
 		        ON     G.DELV_FEE_CD = DFP.DELV_FEE_CD
 		        ON     G.DELV_FEE_CD = DFP.DELV_FEE_CD
 		        INNER  JOIN TB_OPTION O
 		        INNER  JOIN TB_OPTION O
@@ -700,6 +705,7 @@
 		     , Z.SOLDOUT_YN
 		     , Z.SOLDOUT_YN
 		     , PNT_RATE
 		     , PNT_RATE
 		     , SYS_IMG_NM
 		     , SYS_IMG_NM
+		     , Z.BRAND_GROUP_NM
 		ORDER  BY Z.DELV_FEE_CD DESC
 		ORDER  BY Z.DELV_FEE_CD DESC
 		     , Z.GOODS_CD DESC
 		     , Z.GOODS_CD DESC
 	</select>
 	</select>

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -59,7 +59,7 @@
 		                                                             WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
 		                                                             WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
 		                                                             WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
 		                                                             WHEN (SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL) > 0 THEN (SELECT CONCAT(CATE1_NM, ' > ', CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
 		                                                             END    <!-- 카테고리명은 대 > 중 카테고리까지만 노출 20210330 정지혜과장님 확인 -->
 		                                                             END    <!-- 카테고리명은 대 > 중 카테고리까지만 노출 20210330 정지혜과장님 확인 -->
-		                    WHEN CR.CPN_TARGET = 'G260_12' THEN (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = CR.REF_VAL AND USE_YN = 'Y')
+		                    WHEN CR.CPN_TARGET = 'G260_12' THEN (SELECT (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) FROM TB_BRAND BR INNER JOIN TB_BRAND_GROUP D ON BR.BRAND_GROUP_NO = D.BRAND_GROUP_NO AND D.USE_YN = 'Y' WHERE BR.BRAND_CD = CR.REF_VAL AND BR.USE_YN = 'Y')
 		                    WHEN CR.CPN_TARGET = 'G260_13' THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
 		                    WHEN CR.CPN_TARGET = 'G260_13' THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
 		               END AS REF_VAL
 		               END AS REF_VAL
 		        FROM   TB_COUPON_REFVAL CR
 		        FROM   TB_COUPON_REFVAL CR

+ 23 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -109,6 +109,7 @@
 		     , G.SEX_GB
 		     , G.SEX_GB
 		     , FN_GET_CODE_NM('G007',G.SEX_GB) AS SEX_NM
 		     , FN_GET_CODE_NM('G007',G.SEX_GB) AS SEX_NM
 		     , E.DELV_FEE
 		     , E.DELV_FEE
+		     , E.RTN_DELV_FEE
 		     , E.MIN_ORD_AMT
 		     , E.MIN_ORD_AMT
 		     , E.DELV_FEE_CRITE
 		     , E.DELV_FEE_CRITE
 		     , FN_GET_CODE_NM('G073',G.GOODS_GB) AS GOODS_GB_NM
 		     , FN_GET_CODE_NM('G073',G.GOODS_GB) AS GOODS_GB_NM
@@ -208,6 +209,23 @@
 		AND DESC_GB = #{descGb}
 		AND DESC_GB = #{descGb}
 		ORDER BY SEQ
 		ORDER BY SEQ
 	</select>
 	</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">
 	<select id="getSocialGoods" parameterType="Goods" resultType="Goods">
@@ -522,6 +540,7 @@
 			 , VS.OPT_CD2
 			 , VS.OPT_CD2
 			 , VS.SOLDOUT_YN
 			 , VS.SOLDOUT_YN
 			 , VS.CURR_STOCK_QTY
 			 , VS.CURR_STOCK_QTY
+		     , VS.ADD_PRICE
 			 , O.SKU_MODEL_NO
 			 , O.SKU_MODEL_NO
 		  FROM VW_STOCK VS
 		  FROM VW_STOCK VS
 		 INNER JOIN TB_OPTION O
 		 INNER JOIN TB_OPTION O
@@ -1827,10 +1846,13 @@
 		FROM   TB_GOODS G
 		FROM   TB_GOODS G
 		INNER  JOIN (SELECT G.GOODS_CD
 		INNER  JOIN (SELECT G.GOODS_CD
 		                  , MIN(VS.OPT_CD) AS OPT_CD
 		                  , MIN(VS.OPT_CD) AS OPT_CD
-		                  , MIN(BR.BRAND_ENM) AS BRAND_NM
+		                  , MIN(CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_NM
 		             FROM   TB_GOODS G
 		             FROM   TB_GOODS G
 		             INNER  JOIN TB_BRAND BR
 		             INNER  JOIN TB_BRAND BR
 		             ON     G.BRAND_CD = BR.BRAND_CD
 		             ON     G.BRAND_CD = BR.BRAND_CD
+		             INNER  JOIN TB_BRAND_GROUP D
+		             ON     BR.BRAND_GROUP_NO = D.BRAND_GROUP_NO
+		             AND    D.USE_YN = 'Y'
 		             INNER  JOIN TB_SUPPLY_COMPANY CM
 		             INNER  JOIN TB_SUPPLY_COMPANY CM
 		             ON     G.SUPPLY_COMP_CD = CM.SUPPLY_COMP_CD
 		             ON     G.SUPPLY_COMP_CD = CM.SUPPLY_COMP_CD
 		             INNER  JOIN VW_STOCK VS
 		             INNER  JOIN VW_STOCK VS

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -896,7 +896,7 @@
 						if(shotList[i].cartSq == $(this).val()) {
 						if(shotList[i].cartSq == $(this).val()) {
 							let shot = shotList[i];
 							let shot = shotList[i];
 							$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
 							$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
-							$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyAmtSectionYn);
 							$(this).parent().find(".info_box .point>span").text(Number(shot.savePntAmt).toLocaleString());
 							$(this).parent().find(".info_box .point>span").text(Number(shot.savePntAmt).toLocaleString());
 
 
 							// 다다익선 적용 정보 생성성
 							// 다다익선 적용 정보 생성성
@@ -926,7 +926,7 @@
 						if(wmsList[i].cartSq == $(this).val()) {
 						if(wmsList[i].cartSq == $(this).val()) {
 							let wms = wmsList[i];
 							let wms = wmsList[i];
 							$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
 							$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
-							$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyAmtSectionYn);
 							$(this).parent().find(".info_box .point>span").text(Number(wms.savePntAmt).toLocaleString());
 							$(this).parent().find(".info_box .point>span").text(Number(wms.savePntAmt).toLocaleString());
 
 
 							// 다다익선 적용 정보 생성성
 							// 다다익선 적용 정보 생성성
@@ -966,7 +966,7 @@
 						if(delvList[i].cartSq == $(this).val()) {
 						if(delvList[i].cartSq == $(this).val()) {
 							let delv = delvList[i];
 							let delv = delvList[i];
 							$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
 							$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
-							$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
+							$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyAmtSectionYn);
 							$(this).parent().find(".info_box .point>span").text(Number(delv.savePntAmt).toLocaleString());
 							$(this).parent().find(".info_box .point>span").text(Number(delv.savePntAmt).toLocaleString());
 
 
 							// 다다익선 적용 정보 생성성
 							// 다다익선 적용 정보 생성성

+ 6 - 6
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -121,7 +121,7 @@
 															<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${cart.sysImgNm}" alt="">
 															<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${cart.sysImgNm}" alt="">
 														</span>
 														</span>
 														<p>
 														<p>
-															<span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+															<span class="brand" th:text="${cart.brandGroupNm}"></span>
 														</p>
 														</p>
 														<p>
 														<p>
 															<span class="name" th:text="${cart.goodsNm}"></span>
 															<span class="name" th:text="${cart.goodsNm}"></span>
@@ -235,7 +235,7 @@
 												<div class="gd_item">
 												<div class="gd_item">
 													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
 														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
-														<p><span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span></p>
+														<p><span class="brand" th:text="${cart.brandGroupNm}"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
 													</a>
 													</a>
 												</div>
 												</div>
@@ -356,7 +356,7 @@
 												<div class="gd_item">
 												<div class="gd_item">
 													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}', '${cart.ordCanYn}')|">
 														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
 														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
-														<p><span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span></p>
+														<p><span class="brand" th:text="${cart.brandGroupNm}"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
 													</a>
 													</a>
 												</div>
 												</div>
@@ -887,7 +887,7 @@
 					if(shotList[i].cartSq == $(this).val()) {
 					if(shotList[i].cartSq == $(this).val()) {
 						let shot = shotList[i];
 						let shot = shotList[i];
 						$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
 						$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
-						$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyAmtSectionYn);
 						$(this).parent().find(".calc_box .point>em").text(Number(shot.savePntAmt).toLocaleString());
 						$(this).parent().find(".calc_box .point>em").text(Number(shot.savePntAmt).toLocaleString());
 
 
 						// 다다익선 적용 정보 생성성
 						// 다다익선 적용 정보 생성성
@@ -923,7 +923,7 @@
 					if(wmsList[i].cartSq == $(this).val()) {
 					if(wmsList[i].cartSq == $(this).val()) {
 						let wms = wmsList[i];
 						let wms = wmsList[i];
 						$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
 						$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
-						$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyAmtSectionYn);
 						$(this).parent().find(".calc_box .point>em").text(Number(wms.savePntAmt).toLocaleString());
 						$(this).parent().find(".calc_box .point>em").text(Number(wms.savePntAmt).toLocaleString());
 
 
 						// 다다익선 적용 정보 생성성
 						// 다다익선 적용 정보 생성성
@@ -949,7 +949,7 @@
 					if(delvList[i].cartSq == $(this).val()) {
 					if(delvList[i].cartSq == $(this).val()) {
 						let delv = delvList[i];
 						let delv = delvList[i];
 						$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
 						$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
-						$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
+						$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyAmtSectionYn);
 						$(this).parent().find(".calc_box .point>em").text(Number(delv.savePntAmt).toLocaleString());
 						$(this).parent().find(".calc_box .point>em").text(Number(delv.savePntAmt).toLocaleString());
 
 
 						// 다다익선 적용 정보 생성성
 						// 다다익선 적용 정보 생성성

+ 1 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1075,7 +1075,7 @@
 							quickShoppingBagHtml += '				<div class="itemPic">';
 							quickShoppingBagHtml += '				<div class="itemPic">';
 							quickShoppingBagHtml += '					<img alt="BLACK-a" class="vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + info.sysImgNm + '?RS=120"/>';
 							quickShoppingBagHtml += '					<img alt="BLACK-a" class="vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + info.sysImgNm + '?RS=120"/>';
 							quickShoppingBagHtml += '				</div>';
 							quickShoppingBagHtml += '				</div>';
-							quickShoppingBagHtml += '				<p class="itemBrand">' + info.brandEnm + ' ' + info.brandKnm + '</p>';
+							quickShoppingBagHtml += '				<p class="itemBrand">' + info.brandGroupNm + '</p>';
 							quickShoppingBagHtml += '				<div class="itemName">' + info.goodsNm + '</div>';
 							quickShoppingBagHtml += '				<div class="itemName">' + info.goodsNm + '</div>';
 							for(let i = 0 ; i < info.itemNmArr.length ; i++) {
 							for(let i = 0 ; i < info.itemNmArr.length ; i++) {
 								if(info.goodsType == "G056_S") {
 								if(info.goodsType == "G056_S") {