Przeglądaj źródła

기획전 메인 (기획전 리스트) 전반적 수정

gagamel 5 lat temu
rodzic
commit
a7d89b8f3e

+ 0 - 10
src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java

@@ -25,16 +25,6 @@ public interface TsfPlanningDao {
 	 */
 	Collection<Plan> getPlanningCategoryList(Plan plan);
 
-//	/**
-//	 * 기획전 카테고리 1deth 조회
-//	 * 
-//	 * @param Cate4Srch
-//	 * @return Collection<Cate4Srch>
-//	 * @author sowon
-//	 * @since 2021.03.05
-//	 */
-//	Collection<Cate4Srch> getPlanCate1(Cate4Srch Cate);
-
 	/**
 	 * 기획전 갯수 조회
 	 * 

+ 76 - 71
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -1,25 +1,15 @@
 package com.style24.front.biz.service;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.style24.core.support.env.TscConstants;
 import com.style24.front.biz.dao.TsfPlanningDao;
-import com.style24.front.support.env.TsfConstants;
 import com.style24.front.support.security.session.TsfSession;
-import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Coupon;
-import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.Plan;
-import com.style24.persistence.domain.Point;
 import com.style24.persistence.domain.Review;
 
 import lombok.extern.slf4j.Slf4j;
@@ -36,21 +26,42 @@ public class TsfPlanningService {
 
 	@Autowired
 	private TsfPlanningDao planningDao;
-	
+
 	@Autowired
 	private TsfCouponService couponService;
-	
+
 	/**
-	 * 기획전 카테고리 1deth 조회
-	 *
-	 * @param Cate4Srch
-	 * @author sowon
-	 * @since 2021. 03. 05
-	 */	
-	public Collection<Cate4Srch> getPlanCate1(Cate4Srch cate) {
-		return planningDao.getPlanCate1(cate);
+	 * 기획전 카테고리 목록
+	 * @param plan - 기획전 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 29
+	 */
+	public Collection<Plan> getPlanningCategoryList(Plan plan) {
+		return planningDao.getPlanningCategoryList(plan);
 	}
-	
+
+	/**
+	 * 기획전 메인 목록
+	 * @param plan - 기획전 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 29
+	 */
+	public Collection<Plan> getPlanningMainList(Plan plan) {
+		// 기획전 목록
+		Collection<Plan> planningList = planningDao.getPlanningList(plan);
+
+		for (Plan tPlan : planningList) {
+			plan.setPlanSq(tPlan.getPlanSq());
+
+			// 기획전 상품 목록
+			tPlan.setPlanningGoodsList(planningDao.getPlanningGoodsList(plan));
+		}
+
+		return planningList;
+	}
+
 	/**
 	 * 기획전 갯수 조회
 	 * 
@@ -61,33 +72,44 @@ public class TsfPlanningService {
 	public int getPlanAllCount(Plan plan) {
 		return planningDao.getPlanAllCount(plan);
 	}
-	
+
 	/**
 	 * 기획전 목록
-	 *
-	 * @param
+	 * @param plan - 기획전 정보
 	 * @return
-	 * @author sowon
-	 * @since 2021. 3. 8
+	 * @author gagamel
+	 * @since 2021. 3. 29
 	 */
-	public Collection<Plan> getPlanList(Plan plan) {
-		//plan.setSiteCd(TsfConstants.SITE_CD);
-		return planningDao.getPlanList(plan);
+	public Collection<Plan> getPlanningList(Plan plan) {
+		return planningDao.getPlanningList(plan);
 	}
-	
-	/**
-	 * 기획전 상품 목록
-	 *
-	 * @param
-	 * @return
-	 * @author sowon
-	 * @since 2021. 3. 8
-	 */
-	public Collection<Plan> getPlanGoodsList(Plan plan) {
-		//plan.setSiteCd(TsfConstants.SITE_CD);
-		return planningDao.getPlanGoodsList(plan);
-	}
-	
+
+//	/**
+//	 * 기획전 목록
+//	 *
+//	 * @param
+//	 * @return
+//	 * @author sowon
+//	 * @since 2021. 3. 8
+//	 */
+//	public Collection<Plan> getPlanList(Plan plan) {
+//		//plan.setSiteCd(TsfConstants.SITE_CD);
+//		return planningDao.getPlanList(plan);
+//	}
+//
+//	/**
+//	 * 기획전 상품 목록
+//	 *
+//	 * @param
+//	 * @return
+//	 * @author sowon
+//	 * @since 2021. 3. 8
+//	 */
+//	public Collection<Plan> getPlanGoodsList(Plan plan) {
+//		//plan.setSiteCd(TsfConstants.SITE_CD);
+//		return planningDao.getPlanGoodsList(plan);
+//	}
+
 	/**
 	 * 기획전 고객등급 목록
 	 *
@@ -96,13 +118,13 @@ public class TsfPlanningService {
 	 * @author sowon
 	 * @since 2021. 3. 9
 	 */
-	public void accessCustGrade(Plan plan){
+	public void accessCustGrade(Plan plan) {
 		if (!TsfSession.isLogin()) {
 			throw new IllegalArgumentException("로그인 후 접근이 가능합니다.");
 		}
-		
+
 	}
-	
+
 	/**
 	 * 기획전 상세 정보
 	 *
@@ -114,7 +136,7 @@ public class TsfPlanningService {
 	public Plan getPlanDetailInfo(Plan plan) {
 		return planningDao.getPlanDetailInfo(plan);
 	}
-	
+
 	/**
 	 * 기획전 상세 프론트소스
 	 *
@@ -126,7 +148,7 @@ public class TsfPlanningService {
 	public Plan getPlanFsrcInfo(Plan plan) {
 		return planningDao.getPlanFsrcInfo(plan);
 	}
-	
+
 	/**
 	 * 기획전 템플릿 순서
 	 *
@@ -138,7 +160,7 @@ public class TsfPlanningService {
 	public Collection<Plan> templateDispOrdInfo(Plan plan) {
 		return planningDao.templateDispOrdInfo(plan);
 	}
-	
+
 	/**
 	 * 기획전 템플릿 리뷰
 	 *
@@ -150,7 +172,7 @@ public class TsfPlanningService {
 	public Collection<Plan> getPlanReviewInfo(Review review) {
 		return planningDao.getPlanReviewInfo(review);
 	}
-	
+
 	/**
 	 * 기획전 템플릿 쿠폰
 	 *
@@ -163,7 +185,7 @@ public class TsfPlanningService {
 		coupon.setCustNo(TsfSession.getInfo().getCustNo());
 		return planningDao.getPlanCouponInfo(coupon);
 	}
-	
+
 	/**
 	 * 기획전 템플릿 이미지
 	 *
@@ -175,7 +197,7 @@ public class TsfPlanningService {
 	public Collection<Plan> getPlanImageInfo(Plan plan) {
 		return planningDao.getPlanImageInfo(plan);
 	}
-	
+
 	/**
 	 * 기획전 템플릿 상품1열
 	 *
@@ -187,7 +209,7 @@ public class TsfPlanningService {
 	public Collection<Plan> getPlanGoods1Info(Plan plan) {
 		return planningDao.getPlanGoods1Info(plan);
 	}
-	
+
 	/**
 	 * 상품 쿠폰 다운 처리
 	 *
@@ -201,8 +223,6 @@ public class TsfPlanningService {
 		return couponService.getPlanCouponInfo(coupon);
 	}
 
-
-
 	/**
 	 * 이벤트 갯수 조회
 	 * 
@@ -213,7 +233,7 @@ public class TsfPlanningService {
 	public int getEvnetAllCount(Plan plan) {
 		return planningDao.getEventAllCount(plan);
 	}
-	
+
 	/**
 	 * 이벤트 목록
 	 *
@@ -226,19 +246,4 @@ public class TsfPlanningService {
 		return planningDao.getPlanEventList(plan);
 	}
 
-	/**
-	 * 기획전 목록 + 상품
-	 *
-	 * @paramLookbook
-	 * @return
-	 * @author bin2107
-	 * @since 2021. 3. 26
-	 */
-	public Collection<Plan> getPlanningListForGoods(Plan plan){
-		Collection<Plan> planningList = planningDao.getPlanningList(plan);
-		for(Plan tempPlan : planningList){
-			tempPlan.setPlanningGoodsList(planningDao.getPlanningGoodsList(tempPlan));
-		}
-		return planningList;
-	}
 }

+ 25 - 26
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -7,17 +7,6 @@ import java.util.HashMap;
 
 import javax.servlet.http.HttpServletResponse;
 
-import com.style24.core.biz.service.TscLookbookService;
-import com.style24.front.biz.service.TsfPlanningService;
-import com.style24.persistence.domain.Lookbook;
-import com.style24.persistence.domain.MainLayout;
-import com.style24.persistence.domain.Contents;
-import com.style24.persistence.domain.GnbTab;
-import com.style24.persistence.domain.Cate4Srch;
-import com.style24.persistence.domain.GoodsSearch;
-import com.style24.persistence.domain.BrandGroup;
-import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.Plan;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
@@ -29,11 +18,20 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.biz.service.TscLookbookService;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfDisplayService;
 import com.style24.front.biz.service.TsfGoodsService;
+import com.style24.front.biz.service.TsfPlanningService;
 import com.style24.front.support.controller.TsfBaseController;
-import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.domain.BrandGroup;
+import com.style24.persistence.domain.Cate4Srch;
+import com.style24.persistence.domain.Contents;
+import com.style24.persistence.domain.GnbTab;
+import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.Lookbook;
+import com.style24.persistence.domain.MainLayout;
+import com.style24.persistence.domain.Plan;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -107,16 +105,16 @@ public class TsfDisplayController extends TsfBaseController {
 				mainLayout.setContentsList(displayService.getContentsList(contents));
 			} else {
 				log.info("nullpoint contentsLoc::::{}", contentsLoc);
-				if("SMM001".equals(contentsLoc)){
+				if ("SMM001".equals(contentsLoc)) {
 					cate4Srch.setMaxRow(3);
-				}else{
+				} else {
 					cate4Srch.setMaxRow(20);
 				}
 
 				Collection<Goods> goodsList = goodsService.getContentsCategoryGoodsList(cate4Srch);
 				mainLayout.setGoodsList(goodsList);
 
-				if("A".equals(mainLayout.getContentsYn())){
+				if ("A".equals(mainLayout.getContentsYn())) {
 					mainLayout.setContentsList(displayService.getContentsList(contents));
 				}
 			}
@@ -222,39 +220,40 @@ public class TsfDisplayController extends TsfBaseController {
 			brandMain.setCate4Srch(cate4Srch);
 
 			if ("C".equals(brandMain.getContentsYn())) {
-				if(contentsLoc.equals("SBM013")){
+				if (contentsLoc.equals("SBM013")) {
 					cate4Srch.setBrandGroupNo(brandMain.getBrandGroupNo());
 					cate4Srch.setMaxRow(5);
 					Collection<Goods> goodsList = goodsService.getContentsCategoryGoodsList(cate4Srch);
 					brandMain.setGoodsList(goodsList);
 				}
 				brandMain.setContentsList(displayService.getContentsList(contents));
-			}else{
+			} else {
 				cate4Srch.setBrandGroupNo(brandMain.getBrandGroupNo());
-				if(cate4Srch.getContentsLoc().equals("SBM008")){
+				if (cate4Srch.getContentsLoc().equals("SBM008")) {
 					cate4Srch.setMaxRow(10);
-				}else if(cate4Srch.getContentsLoc().equals("SBM013")){
+				} else if (cate4Srch.getContentsLoc().equals("SBM013")) {
 					cate4Srch.setMaxRow(50);
-				}else{	// SBM007, SBM009
+				} else {	// SBM007, SBM009
 					cate4Srch.setMaxRow(20);
 				}
 				Collection<Goods> goodsList = goodsService.getContentsCategoryGoodsList(cate4Srch);
 				brandMain.setGoodsList(goodsList);
 
-				if("A".equals(brandMain.getContentsYn())){
+				if ("A".equals(brandMain.getContentsYn())) {
 					brandMain.setContentsList(displayService.getContentsList(contents));
 				}
 			}
 
 			// 기획전 컨텐츠일때
-			if("SBM011".equals(brandMain.getContentsLoc())){
+			if ("SBM011".equals(brandMain.getContentsLoc())) {
 				Plan plan = new Plan();
-				plan.setBrandGroupNo(paramMap.get("brandGroupNo"));
-				brandMain.setPlanningList(planningService.getPlanningListForGoods(plan));
+				plan.setBrandGroupNo(Integer.parseInt(paramMap.get("brandGroupNo")));
+				plan.setMaxRow(6);
+				brandMain.setPlanningList(planningService.getPlanningList(plan));
 			}
 
 			// 룩북일때
-			if("SBM010".equals(brandMain.getContentsLoc()) || "SBMM010".equals(brandMain.getContentsLoc())){
+			if ("SBM010".equals(brandMain.getContentsLoc()) || "SBMM010".equals(brandMain.getContentsLoc())) {
 				Lookbook lookbook = new Lookbook();
 				lookbook.setBrandCd(paramMap.get("brandGroupNo"));
 				lookbook.setMainDispYn("Y");
@@ -299,7 +298,7 @@ public class TsfDisplayController extends TsfBaseController {
 		// 기획전
 		Contents contents = new Contents();
 		contents.setContentsLoc("SCM001");
-		mav.addObject("planningList",displayService.getContentsList(contents));
+		mav.addObject("planningList", displayService.getContentsList(contents));
 
 		// 신상품
 		cate.setContentsLoc("SCM002");

+ 1 - 9
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -68,15 +68,6 @@ public class TsfPlanningController extends TsfBaseController {
 
 		mav.addObject("cateNo", cateNo);
 
-//		// 각 카테고리 기획전 갯수
-//		mav.addObject("planCount", planningService.getPlanAllCount(plan));
-//
-//		cate.setCate1No(plan.getCateNo());
-//		mav.addObject("cateNm", planningService.getPlanCate1(cate).iterator().next().getCate1Nm());
-//
-//		mav.addObject("planList", planningService.getPlanList(plan));
-//		mav.addObject("goodsList", planningService.getPlanGoodsList(plan));
-
 		return mav;
 	}
 
@@ -270,4 +261,5 @@ public class TsfPlanningController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("planning/PlanningEventMainForm"));
 		return mav;
 	}
+
 }

+ 198 - 220
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -14,21 +14,35 @@
 		WHERE  NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
 	</sql>
 	
-	<select id="getPlanCate1" resultType="Cate4Srch" parameterType="Cate4Srch">
-		/* TsfPlanning.getPlanCate1 */
-		SELECT CATE1_NO 
-      		  ,CATE1_NM 
-		      ,CATE_GB 
-		      ,CATE_TYPE 
-		      ,CONTENTS_LOC 
-		      ,FORMAL_GB 
-		      ,DISP_ORD 
-		      ,DISP_YN 
-	   FROM TB_CATE1
-	   WHERE 1=1
-	   	<if test="cate1No != null and cate1No != ''">
-	   	AND CATE1_NO = #{cate1No}
-	   	</if>
+	<!-- 기획전 카테고리 목록 -->
+	<select id="getPlanningCategoryList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getPlanningCategoryList */
+		SELECT PL.CATE_NO             /*카테고리번호*/
+		     , C1.CATE1_NM AS CATE_NM /*카테고리명*/
+		FROM   TB_PLAN P
+		     , TB_PLAN_CATE PL
+		     , TB_CATE1 C1
+		WHERE  P.PLAN_SQ = PL.PLAN_SQ
+		AND    PL.CATE_NO = C1.CATE1_NO
+		AND    P.PLAN_GB = 'P' /*기획전*/
+		AND    P.SITE_CD = #{siteCd}
+		<if test="frontGb != null and frontGb != ''">
+		    <if test='frontGb == "P"'> <!-- PC웹 -->
+		AND    P.FRONT_GB IN ('A','P')
+		    </if>
+		    <if test='frontGb == "A" or frontGb == "M"'> <!-- 모바일 -->
+		AND    P.FRONT_GB IN ('A','M')
+		    </if>
+		</if>
+		AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
+		AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
+		AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
+		AND    PL.DISP_YN = 'Y' /*전시하는 기획전카테고리*/
+		AND    C1.SITE_CD = #{siteCd}
+		AND    C1.CATE_GB = 'G032_101' /*BYITEM*/
+		AND    C1.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		AND    C1.DISP_YN = 'Y' /*전시하는 카테고리*/
+		ORDER  BY C1.DISP_ORD
 	</select>
 	
 	<select id="getPlanAllCount" resultType="int" parameterType="Plan">
@@ -51,137 +65,177 @@
 	</select>
 	
 	<!-- 기획전 목록 -->
-	<select id="getPlanList" parameterType="Plan" resultType="Plan">
-		/* TsfPlanning.getPlanList */
-		SELECT P1.PLAN_SQ 
-		      ,P1.PLAN_NM 
-		      ,P1.DTL_TITLE1 
-		      ,P1.PLAN_GB 
-		      ,P1.FRONT_GB 
-		      ,P1.MAIN_PIMG 
-		      ,P1.MAIN_MIMG 
-		      ,P1.DISP_ORD
-		      ,P1.NEW_PLAN
-		      ,P1.DISP_STDT
-		      ,P1.DISP_EDDT
-		      ,P1.REG_NO 
-		      ,P2.BRAND
-		      ,P2.CNT
-		FROM 
-		(
-			SELECT P.PLAN_SQ 
-			      ,P.PLAN_NM 
-			      ,P.DTL_TITLE1 
-			      ,P.PLAN_GB 
-			      ,P.FRONT_GB 
-			      ,P.MAIN_PIMG 
-			      ,P.MAIN_MIMG 
-			      ,P.DISP_ORD 
-			      ,P.REG_NO 
-			      ,CASE WHEN DATE(P.REG_DT) BETWEEN DATE_ADD(NOW(),INTERVAL -3 DAY ) AND NOW() THEN 'NEW' END AS 'NEW_PLAN'   /*등록일 기준 3일 */
-			      ,P.DISP_EDDT 
-			      ,P.DISP_STDT 
-			      ,P.DEL_YN 
-			      ,P.OPEN_YN 
-			FROM TB_PLAN P
-			GROUP BY  P.PLAN_SQ 
-			      ,P.PLAN_NM 
-			      ,P.DTL_TITLE1 
-			      ,P.PLAN_GB 
-			      ,P.FRONT_GB 
-			      ,P.MAIN_PIMG 
-			      ,P.MAIN_MIMG 
-			      ,P.DISP_ORD 
-			      ,P.REG_NO
-		)P1 LEFT JOIN (
-						SELECT  PB.PLAN_SQ 
-						      , COUNT(PLAN_SQ) AS CNT
-						      ,CASE WHEN COUNT(PLAN_SQ) = 1 THEN MAX(TBG.BRAND_GROUP_KNM) ELSE MAX(TBG.BRAND_GROUP_KNM)END AS BRAND
-						FROM TB_PLAN_BRAND PB INNER JOIN TB_BRAND_GROUP TBG  ON PB.BRAND_GROUP_NO = TBG.BRAND_GROUP_NO
-						GROUP BY PB.PLAN_SQ
-						)P2 ON P1.PLAN_SQ = P2.PLAN_SQ
-		WHERE 1=1
-		  AND P1.DEL_YN = 'N'
-		  AND P1.PLAN_GB = 'P'
-		  AND P1.OPEN_YN = 'Y'
-		  AND NOW() BETWEEN P1.DISP_STDT AND P1.DISP_EDDT
-	   	<if test="planSq != null and planSq != ''">
-			AND P1.PLAN_SQ != #{planSq}
-		</if>
-		 <!--  AND P1.FRONT_GB IN (#{frontGb}, 'A') -->
-		  <if test="cateNo != null and cateNo != ''">
-		  AND P1.PLAN_SQ IN (
-				   						SELECT PLAN_SQ 
-				   						FROM TB_PLAN_CATE 
-				   						
-				   						WHERE CATE_NO = #{cateNo}
-				   						
-				   					)
-		 </if>
-		ORDER BY P1.NEW_PLAN DESC, ABS(DATEDIFF(P1.DISP_EDDT,NOW())) 
+	<select id="getPlanningList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getPlanningList */
+		SELECT PLAN_SQ
+		     , PLAN_NM
+		     , DTL_TITLE1
+		     , MAIN_IMG
+		     , NEW_YN
+		     , END_DAYS
+		FROM   (
+		        SELECT P.PLAN_SQ                                        /*기획전번호*/
+		             , P.PLAN_NM                                        /*기획전명*/
+		             , P.DTL_TITLE1                                     /*상세제목1*/
+		             , CASE WHEN #{frontGb} IN ('A','M') THEN P.MAIN_MIMG
+		                    ELSE P.MAIN_PIMG
+		               END                                  AS MAIN_IMG /*메인이미지*/
+		             , CASE WHEN TIMESTAMPDIFF(DAY,P.REG_DT,NOW()) <![CDATA[<=]]> 3 THEN
+		                        'Y'
+		                    ELSE
+		                        'N'
+		               END                                  AS NEW_YN   /*신규여부(등록일기준3일)*/
+		             , TIMESTAMPDIFF(DAY,NOW(),P.DISP_EDDT) AS END_DAYS /*종료임박일수*/
+		        FROM   TB_PLAN P
+		        WHERE  P.PLAN_GB = 'P' /*기획전*/
+		        AND    P.SITE_CD = #{siteCd}
+		        <if test="frontGb != null and frontGb != ''">
+		            <if test='frontGb == "P"'> <!-- PC웹 -->
+		        AND    P.FRONT_GB IN ('A','P')
+		            </if>
+		            <if test='frontGb == "A" or frontGb == "M"'> <!-- 모바일 -->
+		        AND    P.FRONT_GB IN ('A','M')
+		            </if>
+		        </if>
+		        AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
+		        AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
+		        AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
+		        <if test="cateNo != null and cateNo != ''">
+		        AND    P.PLAN_SQ IN (SELECT PLAN_SQ
+		                             FROM   TB_PLAN_CATE
+		                             WHERE  CATE_NO = #{cateNo}
+		                             AND    DISP_YN = 'Y' /*전시하는 기획전카테고리*/
+		                            )
+		        </if>
+		        <if test="brandGroupNo != null and brandGroupNo != ''"> <!-- 브랜드메인에서 사용 -->
+		        AND    P.PLAN_SQ IN (SELECT PLAN_SQ
+		                             FROM   TB_PLAN_BRAND
+		                             WHERE  BRAND_GROUP_NO = #{brandGroupNo}
+		                             AND    DISP_YN = 'Y' /*전시하는브랜드기획전*/
+		                            )
+		        </if>
+		       ) Z
+		ORDER  BY NEW_YN DESC, END_DAYS
 	</select>
 	
-		<!-- 기획전 상품 목록 -->
-	<select id="getPlanGoodsList" parameterType="Plan" resultType="Plan">
-			SELECT F.*
-			FROM
-			(
-				SELECT Z.* 
-				     , (CASE WHEN Z.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Z.GOODS_CD) 
-							ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = Z.GOODS_CD) 
-							END) AS STOCK_QTY_SUM
-				     , ROW_NUMBER() OVER(PARTITION BY Z.PLAN_SQ ORDER BY Z.PLAN_SQ) AS RNUM
-				     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Z.GOODS_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
-				FROM
-				(	
-					SELECT P.PLAN_SQ 
-					      ,P.PLAN_NM 
-					      ,PD.CORNER_NM 
-					      ,PD.DISP_STDT 
-					      ,PD.DISP_EDDT 
-					      ,PD.DISP_YN 
-					      ,PD.PLAN_DTL_SQ 
-					      ,PD.DISP_ORD 
-					      ,PG.GOODS_CD 
-					      ,PG.DEL_YN 
-					      ,TG.GOODS_TYPE 
-					      ,TG.GOODS_NM 
-					      ,TG.LIST_PRICE 
-					      ,TG.CURR_PRICE                                                                 
-					      ,TG.DC_RATE
-					      ,CASE TG.FORMAL_GB WHEN 'G009_20' THEN '이월' ELSE '정상' END AS FORMAL_GB                                                                 
-						  ,TG.SEASON_CD       
-						  , (SELECT SUPPLY_COMP_NM
-						 	 FROM   TB_SUPPLY_COMPANY
-						     WHERE  SUPPLY_COMP_CD = TG.SUPPLY_COMP_CD
-							) AS SUPPLY_COMP_NM                                                           
-						  ,TG.ERP_STOCK_LINK_YN                                                          
-						  ,TG.ERP_PRICE_LINK_YN                                                                                                                  
-						  ,TG.NEW_CUST_ORD_YN                                                            
-						  ,TG.DELV_FEE_CD                                                                
-						  ,TG.FRST_CFRM_DT                  
-						  ,TG.PRICE_UPD_DT             
-					FROM TB_PLAN P INNER JOIN TB_PLAN_DETAIL PD ON P.PLAN_SQ = PD.PLAN_SQ 
-					               INNER JOIN TB_PLAN_GOODS PG ON PD.PLAN_DTL_SQ = PG.PLAN_DTL_SQ 
-					               INNER JOIN TB_GOODS TG  ON PG.GOODS_CD = TG.GOODS_CD 
-					WHERE 1=1
-					 AND NOW() BETWEEN PD.DISP_STDT AND PD.DISP_EDDT 
-					 AND PD.DISP_YN = 'Y'
-					 AND PG.DEL_YN = 'N'
-					 AND P.PLAN_GB = 'P'
-					 <if test="cateNo != null and cateNo != ''">
-				     AND P.PLAN_SQ IN (
-				   						SELECT PLAN_SQ 
-				   						FROM TB_PLAN_CATE 
-				   						 
-				   						WHERE CATE_NO = #{cateNo}
-				   						
-				   	 					)
-				   	 </if>
-				)Z
-				ORDER BY Z.DISP_ORD ASC, STOCK_QTY_SUM DESC
-			)F
-			WHERE F.RNUM IN (1,2)
+	<!-- 기획전 상품 목록 -->
+	<select id="getPlanningGoodsList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getPlanningGoodsList */
+		WITH TAB_PLAN_GOODS AS (
+		    SELECT P.PLAN_SQ                                                /*기획전번호*/
+		         , PD.CORNER_NM                                             /*코너명*/
+		         , PG.DISP_ORD                                              /*상품노출순서*/
+		         , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                    BG.BRAND_GROUP_ENM
+		                ELSE
+		                    BG.BRAND_GROUP_KNM
+		           END                                    AS BRAND_GROUP_NM /*브랜드그룹명*/
+		         , G.GOODS_CD                                               /*상품코드*/
+		         , G.GOODS_NM                                               /*상품명*/
+		         , G.GOODS_GB                                               /*상품구분*/
+		         , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		         , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		         , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		         , G.GOODS_TNM                                              /*상품타이틀명*/
+		         , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		         , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		         , G.CURR_PRICE                                             /*현재판매가*/
+		         , RANK() OVER(PARTITION BY P.PLAN_SQ
+		                       ORDER BY PG.DISP_ORD
+		                              , PG.GOODS_CD)      AS NUMB
+		    FROM   TB_PLAN P
+		         , TB_PLAN_DETAIL PD
+		         , TB_PLAN_GOODS PG
+		         , TB_GOODS G
+		         , TB_GOODS_STOCK GS
+		         , TB_BRAND B
+		         , TB_BRAND_GROUP BG
+		    WHERE  P.PLAN_SQ = PD.PLAN_SQ
+		    AND    PD.PLAN_DTL_SQ = PG.PLAN_DTL_SQ
+		    AND    PG.GOODS_CD = G.GOODS_CD
+		    AND    G.GOODS_CD = GS.GOODS_CD
+		    AND    G.BRAND_CD = B.BRAND_CD
+		    AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		    AND    P.PLAN_SQ = #{planSq}
+		    AND    P.PLAN_GB = 'P' /*기획전*/
+		    AND    P.SITE_CD = #{siteCd}
+		    <if test="frontGb != null and frontGb != ''">
+		        <if test='frontGb == "P"'> <!-- PC웹 -->
+		    AND    P.FRONT_GB IN ('A','P')
+		        </if>
+		        <if test='frontGb == "A" or frontGb == "M"'> <!-- 모바일 -->
+		    AND    P.FRONT_GB IN ('A','M')
+		        </if>
+		    </if>
+		    AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
+		    AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
+		    AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
+		    <if test="cateNo != null and cateNo != ''">
+		    AND    P.PLAN_SQ IN (SELECT PLAN_SQ
+		                         FROM   TB_PLAN_CATE
+		                         WHERE  CATE_NO = #{cateNo}
+		                         AND    DISP_YN = 'Y' /*전시하는 기획전카테고리*/
+		                        )
+		    </if>
+		    <if test="brandGroupNo != null and brandGroupNo != ''"> <!-- 브랜드메인에서 사용 -->
+		    AND    P.PLAN_SQ IN (SELECT PLAN_SQ
+		                         FROM   TB_PLAN_BRAND
+		                         WHERE  BRAND_GROUP_NO = #{brandGroupNo}
+		                         AND    DISP_YN = 'Y' /*전시하는브랜드기획전*/
+		                        )
+		    </if>
+		    AND    NOW() BETWEEN PD.DISP_STDT AND PD.DISP_EDDT
+		    AND    PD.DISP_YN = 'Y' /*전시하는코너*/
+		    AND    PG.DEL_YN = 'N' /*삭제안된상품*/
+		    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		    AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		    AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
+		    AND    B.USE_YN = 'Y'
+		    AND    BG.USE_YN = 'Y'
+		)
+		, TAB_GOODS_IMG AS (
+		    /* 상품의 이미지 */
+		    SELECT PG.GOODS_CD
+		         , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
+		         , MAX(CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END) AS SYS_IMG_NM2
+		    FROM   TAB_PLAN_GOODS PG
+		         , TB_GOODS_IMG GI
+		    WHERE  PG.GOODS_CD = GI.GOODS_CD
+		    AND    PG.MAIN_COLOR_CD = GI.COLOR_CD
+		    AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
+		    GROUP  BY PG.GOODS_CD
+		)
+		SELECT PG.PLAN_SQ
+		     , PG.CORNER_NM
+		     , PG.DISP_ORD
+		     , PG.BRAND_GROUP_NM
+		     , PG.GOODS_CD
+		     , 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
+		     , FN_GET_BENEFIT_PRICE(#{frontGb},PG.GOODS_CD,PG.CURR_PRICE,#{custGb})                              AS CURR_PRICE    /*현재판매가*/
+		     , GI.SYS_IMG_NM
+		     , GI.SYS_IMG_NM2
+		     <choose>
+		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		     , IF(W.GOODS_CD,'','','likeit')                                                                     AS LIKE_IT       /*위시리스트담긴상품*/
+		         </when>
+		         <otherwise>
+		     , ''                                                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+		         </otherwise>
+		     </choose>
+		     
+		FROM   TAB_PLAN_GOODS PG
+		INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		LEFT OUTER JOIN TB_WISHLIST W ON PG.GOODS_CD = W.GOODS_CD
+		                             AND W.CUST_NO = #{custNo}
+		</if>
+		<if test="maxRow != null and maxRow > 0">
+		WHERE  PG.NUMB <![CDATA[<=]]> #{maxRow}
+		</if>
 	</select>
 	
 	<!-- 기획전 상세정보 -->
@@ -612,80 +666,4 @@
 		 )Z
 	</select>
 
-	<select id="getPlanningList" parameterType="Plan" resultType="Plan">
-		/* TsfPlanning.getPlanningList */
-		SELECT    A.PLAN_SQ
-			 , B.BRAND_GROUP_NO
-			 , A.PLAN_NM
-			 , A.PLAN_GB
-			 , A.FRONT_GB
-			 , A.DISP_STDT
-			 , A.DISP_EDDT
-			 , A.MAIN_PIMG
-			 , A.MAIN_MIMG
-			 , A.DTL_PIMG
-			 , A.DTL_MIMG
-			 , A.DTL_TITLE1
-			 , A.DTL_TITLE2
-			 , A.DEL_YN
-			 , A.OPEN_YN
-		FROM	TB_PLAN A
-		LEFT OUTER JOIN	TB_PLAN_BRAND B
-		ON	A.PLAN_SQ = B.PLAN_SQ
-		WHERE	1=1
-		  AND A.DISP_STDT <![CDATA[<=]]> NOW()
-		  AND A.DISP_EDDT <![CDATA[>=]]> NOW()
-		  AND A.PLAN_GB = 'P'
-		  AND A.DEL_YN = 'N'
-		  AND A.OPEN_YN = 'Y'
-		  AND B.BRAND_GROUP_NO = #{brandGroupNo}
-	</select>
-
-	<select id="getPlanningGoodsList" parameterType="Plan" resultType="Plan">
-		/* TsfPlanning.getPlanningGoodsList */
-		SELECT	B.PLAN_SQ
-			 , B.PLAN_DTL_SQ
-			 , B.CORNER_NM
-			 , B.DISP_ORD
-			 , B.DISP_STDT
-			 , B.DISP_EDDT
-			 , B.DISP_YN
-			 , C.GOODS_CD
-			 , G.GOODS_NM
-			 , G.LIST_PRICE
-			 , G.CURR_PRICE
-			 , G.DC_RATE
-			 , GI.SYS_IMG_NM
-			 , GC.STOCK_QTY
-		FROM	TB_PLAN A
-		JOIN	TB_PLAN_DETAIL B
-		  ON	A.PLAN_SQ = B.PLAN_SQ
-		LEFT JOIN TB_PLAN_GOODS C
-		  ON	B.PLAN_DTL_SQ = C.PLAN_DTL_SQ
-		LEFT JOIN TB_GOODS G
-		  ON	C.GOODS_CD = G.GOODS_CD
-		LEFT JOIN TB_GOODS_IMG GI
-		  ON	G.GOODS_CD = GI.GOODS_CD
-		 AND    G.MAIN_COLOR_CD = GI.COLOR_CD
-		 AND	GI.DEFAULT_IMG_YN = 'Y'
-		LEFT JOIN TB_GOODS_STOCK GC
-		 ON	    G.GOODS_CD = GC.GOODS_CD
-		WHERE	1=1
-		  AND   A.PLAN_SQ  = #{planSq}
-		  AND	A.PLAN_GB = 'P'
-		  AND	A.FRONT_GB = 'A'
-		  AND	A.DISP_STDT <![CDATA[<=]]> NOW()
-		  AND	A.DISP_EDDT <![CDATA[>=]]> NOW()
-		  AND	A.DEL_YN = 'N'
-		  AND	A.OPEN_YN = 'Y'
-		  AND	B.DISP_STDT <![CDATA[<=]]> NOW()
-		  AND	B.DISP_EDDT <![CDATA[>=]]> NOW()
-		  AND	B.DISP_YN = 'Y'
-		  AND	C.DEL_YN = 'N'
-		  AND	G.GOODS_STAT = 'G008_90'
-		  AND	GC.STOCK_QTY > 0
-		ORDER BY B.PLAN_SQ, B.PLAN_DTL_SQ, B.DISP_ORD, C.DISP_ORD
-		LIMIT 6
-	</select>
-
 </mapper>