Browse Source

퀵 위시 수정

sowon4187 5 năm trước cách đây
mục cha
commit
e71bd702bf

+ 56 - 44
src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml

@@ -170,10 +170,10 @@
 	
 	<select id="getQuickWishList" parameterType="WishList" resultType="Goods">
 		/* TsfWishlist.getQuickWishList*/
-		SELECT Z.*
+SELECT Z.*
 		FROM
 		(
-		WITH TAB_PLAN_GOODS AS (
+		WITH TAB_GOODS AS (
 		    SELECT W.AF_LINK_CD 
 		          ,W.CONTENTS_LOC 
 		          ,W.CUST_NO 
@@ -207,7 +207,7 @@
 		    AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
 		    AND    B.USE_YN = 'Y'
 		    AND    BG.USE_YN = 'Y'
-		    AND    W.CUST_NO =  #{custNo}
+		    AND    W.CUST_NO =   #{custNo} /**P*/
 		    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
 		    GROUP BY W.AF_LINK_CD 
 		          ,W.CONTENTS_LOC 
@@ -227,62 +227,74 @@
 		         , G.MIN_ORD_QTY                                            /*최소주문수량*/  				
 		)
 		, TAB_GOODS_IMG AS (
-		    SELECT PG.GOODS_CD
+		    SELECT G.GOODS_CD
 		         , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
-		    FROM   TAB_PLAN_GOODS PG
+		    FROM   TAB_GOODS G
 		         , TB_GOODS_IMG GI
-		    WHERE  PG.GOODS_CD = GI.GOODS_CD
-		    AND    PG.MAIN_COLOR_CD = GI.COLOR_CD
+		    WHERE  G.GOODS_CD = GI.GOODS_CD
+		    AND    G.MAIN_COLOR_CD = GI.COLOR_CD
 		    AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
-		    GROUP  BY PG.GOODS_CD
+		    GROUP  BY G.GOODS_CD
 		)
 		, TAB_STOCK AS (
-		   SELECT PG.GOODS_CD
-		         , SUM(case WHEN S.SOLDOUT_YN = 'Y' THEN 0
+		   SELECT G.GOODS_CD
+		         , SUM(CASE WHEN S.SOLDOUT_YN = 'Y' THEN 0
 		                    ELSE S.CURR_STOCK_QTY - S.BASE_STOCK_QTY END ) AS STOCK_QTY_SUM
 		         , MIN(CASE WHEN S.SOLDOUT_YN = 'N' THEN S.OPT_CD ELSE 'XXX' END) AS OPT_CD 
-		    FROM   TAB_PLAN_GOODS PG
+		    FROM   TAB_GOODS G
 		         , VW_STOCK S
-		    WHERE  PG.GOODS_CD = S.GOODS_CD
-		    AND    PG.GOODS_TYPE = 'G056_N'
+		    WHERE  G.GOODS_CD = S.GOODS_CD
+		    AND    G.GOODS_TYPE = 'G056_N'
 		    AND    S.DISP_YN = 'Y' /*노출하는상품만*/
-		    GROUP  BY PG.GOODS_CD
+		    GROUP  BY G.GOODS_CD
 		    UNION ALL 
-		    SELECT PG.GOODS_CD
-		         , SUM(CASE WHEN S.SOLDOUT_YN = 'Y' THEN 0
-		                    ELSE S.CURR_STOCK_QTY - S.BASE_STOCK_QTY END ) AS STOCK_QTY_SUM
-		         , MIN(CASE WHEN S.SOLDOUT_YN = 'N' THEN S.OPT_CD ELSE 'XXX' END) AS OPT_CD 
-		    FROM   TAB_PLAN_GOODS PG
-		         , VW_STOCK_COMPOSE S
-		    WHERE  PG.GOODS_CD = S.GOODS_CD
-		    AND    PG.GOODS_TYPE != 'G056_N'
-		    AND    S.DISP_YN = 'Y' /*노출하는상품만*/
-		    GROUP  BY PG.GOODS_CD		
+		   		    SELECT GOODS_CD
+		         , SUM(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		              ELSE CURR_STOCK_QTY END ) AS STOCK_QTY_SUM
+		         , GROUP_CONCAT(DISTINCT OPT_CD) AS OPT_CD
+		    FROM (
+		             SELECT G.GOODS_CD
+		                  , GC.COMPS_GOODS_CD
+		                  , S.OPT_CD
+		                  , S.SOLDOUT_YN
+		                  , S.CURR_STOCK_QTY - S.BASE_STOCK_QTY     AS CURR_STOCK_QTY
+		                  , RANK()
+		                     OVER (PARTITION BY G.GOODS_CD ,GC.COMPS_GOODS_CD ORDER BY S.SOLDOUT_YN, S.CURR_STOCK_QTY DESC , S.OPT_CD) AS NUMB
+		             FROM TAB_GOODS G
+		                , TB_GOODS_COMPOSE GC
+		                , VW_STOCK S
+		             WHERE 1 = 1
+		               AND G.GOODS_CD = GC.GOODS_CD
+		               AND GC.COMPS_GOODS_CD = S.GOODS_CD
+		               AND G.GOODS_TYPE IN ('G056_D','G056_S')
+		               AND S.DISP_YN = 'Y' /*노출하는상품만*/
+		         ) Z
+		    WHERE  NUMB = 1
+		    GROUP BY GOODS_CD
 		  )
 		    SELECT 
-		           PG.BRAND_GROUP_NM
-		         , PG.GOODS_CD
-		         , PG.MIN_ORD_QTY
-		         , PG.GOODS_TYPE
-		         , FN_GET_GOODS_NM(PG.GOODS_NM,PG.GOODS_GB,PG.FOREIGN_BUY_YN,PG.PARALLEL_IMPORT_YN,PG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
-		         , PG.GOODS_NM
-		         , PG.GOODS_TNM
-		         , PG.MAIN_COLOR_CD
-		         , PG.LIST_PRICE
-		         , PG.AF_LINK_CD 
-		         , PG.CONTENTS_LOC 
-		         , PG.CUST_NO 
-		         , PG.REG_DT
-		         , FN_GET_BENEFIT_PRICE( 'P' /**P*/,PG.GOODS_CD,PG.CURR_PRICE, 'G100_10' /**P*/)                     AS CURR_PRICE    /*현재판매가*/
+		           G.BRAND_GROUP_NM
+		         , G.GOODS_CD
+		         , G.MIN_ORD_QTY
+		         , G.GOODS_TYPE
+		         , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
+		         , G.GOODS_NM
+		         , G.GOODS_TNM
+		         , G.MAIN_COLOR_CD
+		         , G.LIST_PRICE
+		         , G.AF_LINK_CD 
+		         , G.CONTENTS_LOC 
+		         , G.CUST_NO 
+		         , G.REG_DT
+		         , FN_GET_BENEFIT_PRICE( 'P' ,G.GOODS_CD,G.CURR_PRICE, 'G100_10' )                     AS CURR_PRICE    /*현재판매가*/
 		         , GI.SYS_IMG_NM
 		         , S.STOCK_QTY_SUM
 		         , S.OPT_CD 
-		    	FROM   TAB_PLAN_GOODS PG
-		    INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
-		    LEFT OUTER JOIN TAB_STOCK S ON PG.GOODS_CD = S.GOODS_CD
+		         , (SELECT GROUP_CONCAT(COMPS_GOODS_CD)  FROM TB_GOODS_COMPOSE WHERE GOODS_CD = G.GOODS_CD) AS COMPS_GOODS_CD  
+		    	FROM   TAB_GOODS G
+		    INNER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		    LEFT OUTER JOIN TAB_STOCK S ON G.GOODS_CD = S.GOODS_CD
 		    )Z
-		ORDER BY Z.STOCK_QTY_SUM ASC,Z.REG_DT DESC
+		    ORDER BY FIELD(Z.STOCK_QTY_SUM, 1, 2 ,3 ,4 ,5) DESC ,Z.REG_DT DESC
 	</select>
-	
-
 </mapper>

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

@@ -1198,7 +1198,14 @@
 								tag += '			</a>';	
 								tag += '			<div class="hover_con">';
 								if (item.stockQtySum>0) {
-									tag += '			<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardAdd(this)"><span>쇼핑백 담기</span></button>';
+									if (item.goodsType == 'G056_N') {
+										tag += '			<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardAdd(this)"><span>쇼핑백 담기</span></button>';
+									}else if(item.goodsType == 'G056_D'){ // 딜상품
+										tag += '			<button type="button" class="btn btn_sm cart_btn on" onclick="wishDealGoods()"><span>쇼핑백 담기</span></button>';
+									}else{
+										tag += '			<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" compsGoodsCd=\''+item.compsGoodsCd+'\' goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardSetAdd(this)"><span>쇼핑백 담기</span></button>';
+									}
+									
 								}
 								tag += '			</div>';	    
 								tag += '		</div>';	    
@@ -1221,6 +1228,12 @@
 			});
 	}
 	
+	// 딜상품일 경우 alert
+	var wishDealGoods = function() {
+		mcxDialog.alert("해당 상품은 옵션 선택 후 쇼핑백 담기가 가능합니다.");
+		return;
+	}
+	
 	// 위시리스트 해제
 	let fnWishDelete = function(obj) {
 		cfnPutWishList(obj);
@@ -1250,6 +1263,36 @@
 		}
 	}
 	
+	var wishCardSetAdd = function (obj) {
+		let cartGoodsList = [];
+		var optCdArr = $(obj).attr("optCd").split(",");
+		var compsGoodsCdArr = $(obj).attr("compsGoodsCd").split(",");
+
+		let compsList = [];
+		let goodsList = {
+		cartCompsList : new Array()
+		}
+
+		for(let j = 0 ; j <  optCdArr.length ; j++) { 
+			let temp = new Object;
+			temp.goodsCd = $(obj).attr("goodsCd");
+			temp.optCd = optCdArr[j];
+			temp.goodsQty = $(obj).attr("minOrdQty");
+			temp.goodsType = "G056_S";
+			temp.itemCd =  compsGoodsCdArr[j];
+			temp.cartGb = "C";
+			temp.afLinkCd = $(obj).attr("afLinkCd");
+			temp.ithrCd = "";
+			temp.contentsLoc = "";
+			temp.planDtlSq = "";
+			compsList.push(temp);
+		}  
+
+		goodsList.cartCompsList = compsList;
+		cartGoodsList.push(goodsList);
+		cfnAddCart(cartGoodsList);
+	}
+	
 	// 쿠폰리스트
 	let issueCouponBtn = function() {
 		if (!cfCheckLogin()) {