Parcourir la source

Merge branch 'develop' into order

card007 il y a 5 ans
Parent
commit
ae4ac9d081

+ 20 - 0
src/main/java/com/style24/core/biz/dao/TscCustomerDao.java

@@ -97,4 +97,24 @@ public interface TscCustomerDao {
 	 * @since 2021. 02. 15
 	 */
 	String getTemporaryPassword(int length);
+
+	/**
+	 * 휴면해제 처리
+	 *
+	 * @param customer - 고객정보
+	 * @return int - 처리결과
+	 * @author jsshin
+	 * @since 2021. 03. 08
+	 */
+	int updateDormantCustomerRelease(Customer customer);
+
+	/**
+	 * 휴면테이블 삭제 처리
+	 *
+	 * @param custNo - 고객번호
+	 * @return int - 처리결과
+	 * @author jsshin
+	 * @since 2021. 03. 08
+	 */
+	int deleteDormantCustomer(Integer custNo);
 }

+ 35 - 2
src/main/java/com/style24/core/biz/dao/TscLookbookDao.java

@@ -2,11 +2,12 @@ package com.style24.core.biz.dao;
 
 import java.util.Collection;
 
+import com.style24.persistence.domain.LookbookBanner;
 import org.springframework.stereotype.Repository;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Lookbook;
-import com.style24.persistence.domain.LookbookPicker;
+import com.style24.persistence.domain.LookbookGoods;
 
 /**
  * 룩북 Dao
@@ -49,6 +50,38 @@ public interface TscLookbookDao {
 	 */
 	void deleteLookbook(Lookbook lookbook);
 
+	/**
+	 * 룩북 배너 등록
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 8
+	 */
+	void saveLookbookBanner(LookbookBanner lookbookBanner);
+
+	/**
+	 * 룩북 마스터정보 조회
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 8
+	 */
+	Lookbook getLookbookMstInfo(Integer lookbookSq);
+
+	/**
+	 * 룩북 배너 리스트
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 8
+	 */
+	Collection<LookbookBanner> getLookbookBannerDetailList(Integer lookbookSq);
+
+	/**
+	 * 룩북 배너 삭제
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 8
+	 */
+	void deleteLookbookBanner(Integer lookbookSq);
+
 	/**
 	 *  front 영역
 	 */
@@ -71,5 +104,5 @@ public interface TscLookbookDao {
 	 * @author eskim
 	 * @date 2021. 2. 18
 	 */
-	Collection<LookbookPicker> getLookbookBannerGoodsList(Lookbook lookbook);
+	Collection<LookbookGoods> getLookbookBannerGoodsList(Lookbook lookbook);
 }

+ 22 - 0
src/main/java/com/style24/core/biz/service/TscCustomerService.java

@@ -154,4 +154,26 @@ public class TscCustomerService {
 	}
 
 
+	/**
+	 * 휴면해제 처리
+	 *
+	 * @param customer - 고객정보
+	 * @return int - 성공하면 1 이기때문에 true
+	 * @author jsshin
+	 * @since 2021. 03. 08
+	 */
+	public boolean saveDormantCustomerRelease(Customer customer) {
+		// 1. 고객정보 이력 생성
+		customerDao.createCustomerHistory(customer);
+
+		// 2. 휴면해제처리
+		int resultCnt = customerDao.updateDormantCustomerRelease(customer);
+
+		// 3. 휴면 테이블 삭제
+		customerDao.deleteDormantCustomer(customer.getCustNo());
+
+		return resultCnt > 0;
+	}
+
+
 }

+ 62 - 0
src/main/java/com/style24/core/biz/service/TscLookbookService.java

@@ -3,6 +3,7 @@ package com.style24.core.biz.service;
 import java.io.File;
 import java.util.Collection;
 
+import com.style24.persistence.domain.LookbookBanner;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
@@ -40,6 +41,10 @@ public class TscLookbookService {
 	 */
 	@Transactional("shopTxnManager")
 	public void saveLookbook(Lookbook lookbook) {
+		if("U".equals(lookbook.getMode())){
+			lookbookDao.deleteLookbookBanner(lookbook.getLookbookSq());
+		}
+
 		if (!StringUtils.isEmpty(lookbook.getNewSysTnfileNm())) {
 			String bannerUploadPath = env.getProperty("upload.default.target.path");
 			bannerUploadPath = bannerUploadPath + "/display";
@@ -58,9 +63,46 @@ public class TscLookbookService {
 
 			lookbook.setOrgTnfileNm("/lookbook/thumbnail/" + yearMonth + "/" + newFilename);
 			lookbook.setSysTnfileNm("/lookbook/thumbnail/" + yearMonth + "/" + newFilename);
+		}else{
+			lookbook.setOrgTnfileNm(lookbook.getOrgFileNm());
+			lookbook.setSysTnfileNm(lookbook.getOrgFileNm());
 		}
 
 		lookbookDao.saveLookbook(lookbook);
+
+		int ind = 1;
+		for(LookbookBanner bannerInfo : lookbook.getBannerList()){
+			if(bannerInfo.getSysFileNm() != null && !"".equals(bannerInfo.getSysFileNm())){
+				String imgInd = String.valueOf(ind);
+				if (ind < 10) {
+					imgInd = "0" + imgInd;
+				}
+				String bannerUploadPath = env.getProperty("upload.default.target.path");
+				bannerUploadPath = bannerUploadPath + "/display/";
+				String yearMonth = GagaDateUtil.getToday().substring(0, 6);
+				bannerUploadPath = GagaFileUtil.getConcatenationPath(bannerUploadPath, "lookbook/banner");
+				File newFile = new File(GagaFileUtil.getConcatenationPath(bannerUploadPath, bannerInfo.getSysFileNm()));
+				bannerUploadPath = GagaFileUtil.getConcatenationPath(bannerUploadPath, yearMonth);
+				String newFilename = "BANNER_" + GagaDateUtil.getTodayDateTime() + "_" + imgInd + "." + StringUtils.getFilenameExtension(bannerInfo.getSysFileNm());
+				File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(bannerUploadPath, newFilename)));
+				// Rename a file
+				File path = new File(bannerUploadPath);
+				if (!path.exists()) {
+					path.mkdir();
+				}
+				newFile.renameTo(uniqueFile);
+				bannerInfo.setOrgFileNm("/lookbook/banner/" + yearMonth + "/" + newFilename);
+				bannerInfo.setSysFileNm("/lookbook/banner/" + yearMonth + "/" + newFilename);
+			}else{
+				bannerInfo.setOrgFileNm(bannerInfo.getOrgFileNm());
+				bannerInfo.setSysFileNm(bannerInfo.getOrgFileNm());
+			}
+			ind++;
+			bannerInfo.setLookbookSq(lookbook.getLookbookSq());
+			bannerInfo.setRegNo(lookbook.getRegNo());
+			bannerInfo.setUpdNo(lookbook.getUpdNo());
+			lookbookDao.saveLookbookBanner(bannerInfo);
+		}
 	}
 
 	/**
@@ -97,6 +139,26 @@ public class TscLookbookService {
 		}
 	}
 
+	/**
+	 * 룩북 마스터정보 조회
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 8
+	 */
+	public Lookbook getLookbookMstInfo(Integer lookbookSq){
+		return lookbookDao.getLookbookMstInfo(lookbookSq);
+	}
+
+	/**
+	 * 룩북 배너 조회
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 8
+	 */
+	public Collection<LookbookBanner> getLookbookBannerDetailList(Integer lookbookSq){
+		return lookbookDao.getLookbookBannerDetailList(lookbookSq);
+	}
+
 	/**
 	 * front 영역
 	 */

+ 17 - 0
src/main/java/com/style24/core/support/util/MaskingUtils.java

@@ -4,6 +4,8 @@ import java.util.Arrays;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang3.StringUtils;
+
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -26,6 +28,9 @@ public class MaskingUtils {
 	 * @return
 	 */
 	public static String id(String str) {
+		if (StringUtils.isBlank(str))
+			return "";
+
 		String replaceString = str;
 
 		Matcher matcher = Pattern.compile("^(...)(.*)$").matcher(str);
@@ -62,6 +67,9 @@ public class MaskingUtils {
 	 * @return
 	 */
 	public static String name(String str) {
+		if (StringUtils.isBlank(str))
+			return "";
+
 		String regex = "^(.)(.+)(.)$";
 		if (str.length() == 2) {
 			regex = "^(.)(.+)$";
@@ -103,6 +111,9 @@ public class MaskingUtils {
 	 * @return
 	 */
 	public static String phoneNo(String str) {
+		if (StringUtils.isBlank(str))
+			return "";
+
 		Matcher matcher = Pattern.compile("^(\\d{3})-?(\\d{3,4})-?(\\d{4})$").matcher(str);
 
 		if (matcher.find()) {
@@ -124,6 +135,9 @@ public class MaskingUtils {
 	 * @return
 	 */
 	public static String email(String str) {
+		if (StringUtils.isBlank(str))
+			return "";
+
 		Matcher matcher = Pattern.compile("^(...)(.*)([@]{1})(.*)$").matcher(str);
 
 		if (matcher.find()) {
@@ -159,6 +173,9 @@ public class MaskingUtils {
 	 * @return
 	 */
 	public static String all(String str) {
+		if (StringUtils.isBlank(str))
+			return "";
+
 		Matcher matcher = Pattern.compile("^(.*)$").matcher(str);
 
 		if (matcher.find()) {

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

@@ -32,6 +32,7 @@ public class Lookbook extends TscBaseDomain {
 	private String dispYn;         //표시여부
 	private Integer dispOrd;        //표시순서
 	private String mainDispYn;     //메인노출여부
+	private String mode;			//신규,수정
 
 	private Integer lookbookbSq;	// 룩북배너일련번호
 	private String orgFileNm;		// 원본파일명
@@ -39,7 +40,7 @@ public class Lookbook extends TscBaseDomain {
 	private String xlim;			// X좌표
 	private String ylim;			// Y좌표
 
-	Collection<LookbookPicker> lookbookGoodsList;	//베너별 상품목록
+	Collection<LookbookGoods> lookbookGoodsList;	//베너별 상품목록
 
 	private String goodsCd; 		// 상품상세검색용
 	private String frontGb; 		// 상품상세검색용
@@ -48,6 +49,8 @@ public class Lookbook extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] selectDataArr;
 
+	Collection<LookbookBanner> bannerList;	//베너 리스트
+
 	// Pagination
 	private TscPageRequest pageable;
 	private int pageNo = 1;

+ 25 - 0
src/main/java/com/style24/persistence/domain/LookbookGoods.java

@@ -1,6 +1,7 @@
 package com.style24.persistence.domain;
 
 import com.style24.persistence.TscBaseDomain;
+
 import lombok.Data;
 
 /**
@@ -12,7 +13,31 @@ import lombok.Data;
 @Data
 public class LookbookGoods extends TscBaseDomain {
     private Integer lookbookbSq;    //룩북배너일련번호
+    private Integer lbPickerSq;     //룩북피커일련번호
+    private float   xlim;           //X좌표
+    private float   ylim;           //Y좌표
     private String  goodsCd;        //상품코드
     private int     dispOrd;        //표시순서
     private String  delYn;          //삭제여부
+    
+    
+    private String goodsNm;
+	private String goodsFullNm;
+	private String goodsStat;
+	private String goodsType;
+	private String brandGroupNm;
+	private int listPrice;
+	private int currPrice;
+	private String sysImgNm;
+	private String sysImgNm2;
+	private int stockQty;
+	private String soldoutYn;
+	private float dcRate;
+	private String videoGbM;
+	private String videoValM;
+	private String videoGbS;
+	private String videoValS;
+	private String mainColorCd;
+	private String minOrdQty;
+	private String optCd;
 }

+ 0 - 40
src/main/java/com/style24/persistence/domain/LookbookPicker.java

@@ -1,40 +0,0 @@
-package com.style24.persistence.domain;
-
-import com.style24.persistence.TscBaseDomain;
-
-import lombok.Data;
-
-/**
- * 룩북 피커 도메인
- * @author bin2107
- * @since 2021-03-05
- */
-@SuppressWarnings("serial")
-@Data
-public class LookbookPicker extends TscBaseDomain {
-	private Integer lbPickerSq;     //룩북피커일련번호
-	private Integer lookbookbSq;    //룩북배너일련번호
-	private Integer lookbookSq;     //룩북일련번호
-	private float xlim;           //X좌표
-	private float ylim;           //Y좌표
-	private String goodsCd;        //상품코드
-	private int dispOrd;        //표시순서
-	private String useYn;          //사용여부
-
-	private String goodsNm;
-	private String goodsFullNm;
-	private String goodsStat;
-	private String brandGroupNm;
-	private int listPrice;
-	private int currPrice;
-	private String sysImgNm;
-	private String sysImgNm2;
-	private int stockQty;
-	private String soldoutYn;
-	private float dcRate;
-	private String videoGbM;
-	private String videoValM;
-	private String videoGbS;
-	private String videoValS;
-	private String mainColorCd;
-}

+ 35 - 6
src/main/java/com/style24/persistence/mybatis/shop/TscCustomer.xml

@@ -10,7 +10,6 @@
 		     , C.CUST_NM
 		     , C.PASSWD
 		     , C.BIRTH_YMD
-		     , C.BIRTH_SM
 		     , C.SEX_GB
 		     , C.CELL_PHNNO
 		     , C.APP_AGREE_YN
@@ -124,7 +123,6 @@
 		     , CUST_NM
 		     , PASSWD
 		     , BIRTH_YMD
-		     , BIRTH_SM
 		     , SEX_GB
 		     , CELL_PHNNO
 		     , APP_AGREE_YN
@@ -166,7 +164,6 @@
 		     , CUST_NM
 		     , PASSWD
 		     , BIRTH_YMD
-		     , BIRTH_SM
 		     , SEX_GB
 		     , CELL_PHNNO
 		     , APP_AGREE_YN
@@ -227,7 +224,6 @@
 		     , CUST_NM
 		     , PASSWD
 		     , BIRTH_YMD
-		     , BIRTH_SM
 		     , SEX_GB
 		     , CELL_PHNNO
 		     , APP_AGREE_YN
@@ -269,7 +265,6 @@
 		     , CUST_NM
 		     , PASSWD
 		     , BIRTH_YMD
-		     , BIRTH_SM
 		     , SEX_GB
 		     , CELL_PHNNO
 		     , APP_AGREE_YN
@@ -319,7 +314,6 @@
 		     , SECEDE_DTL_RSN = #{secedeDtlRsn}
 		     , SECEDE_DT = NOW()
 		     , BIRTH_YMD = NULL
-		     , BIRTH_SM = NULL
 		     , SEX_GB = NULL
 		     , CELL_PHNNO = NULL
 		     , EMAIL = NULL
@@ -365,4 +359,39 @@
 		SELECT CONVERT(TRUNCATE(RAND() * CAST(CONCAT(1,LPAD(0,(#{length} - 1),'0')) AS UNSIGNED),0),CHAR) AS PASSWD FROM DUAL
 	</select>
 
+	<!--휴면 해제처리-->
+	<insert id="updateDormantCustomerRelease" parameterType="Customer">
+		/* TscCustomer.updateDormantCustomerRelease */
+		UPDATE TB_CUSTOMER C
+		INNER JOIN
+		       TB_DORMANT_CUST DC
+		ON     C.CUST_NO = DC.CUST_NO
+		AND    DC.CUST_NO = #{custNo}
+		SET    C.CUST_NM = DC.CUST_NM
+		     , C.BIRTH_YMD = DC.BIRTH_YMD
+		     , C.SEX_GB = DC.SEX_GB
+		     , C.CELL_PHNNO = DC.CELL_PHNNO
+		     , C.SMS_AGREE_YN = DC.SMS_AGREE_YN
+		     , C.SMS_AGREE_DT= DC.SMS_AGREE_DT
+		     , C.EMAIL = DC.EMAIL
+		     , C.EMAIL_AGREE_YN = DC.EMAIL_AGREE_YN
+		     , C.EMAIL_AGREE_DT = DC.EMAIL_AGREE_DT
+		     , C.APP_AGREE_YN = DC.APP_AGREE_YN
+		     , C.APP_AGREE_DT = DC.APP_AGREE_DT
+		     , C.HOME_ZIPCODE = DC.HOME_ZIPCODE
+		     , C.HOME_BASE_ADDR = DC.HOME_BASE_ADDR
+		     , C.HOME_DTL_ADDR = DC.HOME_DTL_ADDR
+		     , C.CUST_STAT = 'G104_10'
+		     , C.UPD_NO = NOW()
+		     , C.UPD_NO = #{updNo}
+	</insert>
+
+	<!--휴면 테이블 삭제-->
+	<delete id="deleteDormantCustomer" parameterType="Integer">
+		/* TscCustomer.deleteDormantCustomer */
+		DELETE
+		FROM  TB_DORMANT_CUST
+		WHERE CUST_NO = #{custNo}
+	</delete>
+
 </mapper>

+ 100 - 11
src/main/java/com/style24/persistence/mybatis/shop/TscLookbook.xml

@@ -35,7 +35,18 @@
 			,NOW()
 			,#{updNo}
 			,NOW()
-		)
+		) ON DUPLICATE KEY UPDATE
+			BRAND_CD = #{brandCd}
+			,TITLE = #{title}
+			,ORG_TNFILE_NM = #{orgTnfileNm}
+			,SYS_TNFILE_NM = #{sysTnfileNm}
+			,DISP_STDT = #{dispStdt}
+			,DISP_EDDT = #{dispEddt}
+			,DISP_YN = #{dispYn}
+			,DISP_ORD = #{dispOrd}
+			,MAIN_DISP_YN = #{mainDispYn}
+			,UPD_NO = #{updNo}
+			,UPD_DT = NOW()
 	</insert>
 	
 	<!-- 룩북 리스트 카운트 -->
@@ -104,8 +115,83 @@
 		SET 	DISP_YN = 'N'
 		WHERE	LOOKBOOK_SQ = #{lookbookSq}
 	</update>
-	
-	
+
+	<!-- 룩북 배너 저장 -->
+	<insert id="saveLookbookBanner" parameterType="LookbookBanner" keyProperty="lookbookbSq">
+		/* TscLookbook.saveLookbookBanner */
+		INSERT INTO TB_LOOKBOOK_BANNER (
+			LOOKBOOKB_SQ
+			,LOOKBOOK_SQ
+			,ORG_FILE_NM
+			,SYS_FILE_NM
+			,IMG_DESC
+			,DISP_YN
+			,DISP_ORD
+			,REG_NO
+			,REG_DT
+			,UPD_NO
+			,UPD_DT
+		) VALUES (
+		    #{lookbookbSq}
+		    ,#{lookbookSq}
+		    ,#{orgFileNm}
+			,#{sysFileNm}
+			,#{imgDesc}
+			,'Y'
+			,#{dispOrd}
+			,#{regNo}
+			,NOW()
+			,#{updNo}
+			,NOW()
+		)
+	</insert>
+
+	<!-- 룩북 마스터 정보 조회 -->
+	<select id="getLookbookMstInfo" parameterType="Integer" resultType="Lookbook">
+		/* TscLookbook.getLookbookMstInfo */
+		SELECT	  LOOKBOOK_SQ
+				 ,BRAND_CD
+				 ,TITLE
+				 ,ORG_TNFILE_NM
+				 ,SYS_TNFILE_NM
+				 ,DISP_STDT
+				 ,DISP_EDDT
+				 ,DISP_YN
+				 ,DISP_ORD
+				 ,MAIN_DISP_YN
+				 ,REG_NO
+				 , FN_GET_USER_NM(REG_NO) AS REG_NM
+				 ,REG_DT
+				 ,UPD_NO
+				 , FN_GET_USER_NM(UPD_NO) AS UPD_NM
+				 ,UPD_DT
+		FROM	TB_LOOKBOOK
+		WHERE	1=1
+		AND 	LOOKBOOK_SQ = #{lookbookSq}
+	</select>
+
+	<!-- 룩북 배너 리스트 -->
+	<select id="getLookbookBannerDetailList" parameterType="Integer" resultType="LookbookBanner">
+		/* TscLookbook.getLookbookBannerDetailList */
+		SELECT	LOOKBOOKB_SQ
+				,LOOKBOOK_SQ
+				,ORG_FILE_NM
+				,SYS_FILE_NM
+				,IMG_DESC
+				,DISP_YN
+				,DISP_ORD
+		FROM	TB_LOOKBOOK_BANNER
+		WHERE	1=1
+		AND 	LOOKBOOK_SQ = #{lookbookSq}
+	</select>
+
+	<!-- 룩북 배너 삭제 -->
+	<delete id="deleteLookbookBanner" parameterType="Integer">
+		/* TscLookbook.deleteLookbookBanner */
+		DELETE	FROM	TB_LOOKBOOK_BANNER
+		WHERE	LOOKBOOK_SQ = #{lookbookSq}
+	</delete>
+
 	<!-- front 영역-->
 	
 	<!-- 룩북 베너 목록 조회 -->
@@ -126,7 +212,7 @@
 	</select>
 	
 	<!-- 룩북 베너 상품 목록 조회 -->
-	<select id="getLookbookBannerGoodsList" parameterType="Lookbook" resultType="LookbookPicker">
+	<select id="getLookbookBannerGoodsList" parameterType="Lookbook" resultType="LookbookGoods">
 		/* TsfGoods.getLookbookBannerGoodsList */
 		SELECT Z.*
 		     , 100 - ROUND((CURR_PRICE / LIST_PRICE) * 100 ,0) AS DC_RATE
@@ -140,20 +226,22 @@
 		           , P.YLIM
 		           , G.GOODS_NM
 		           , CONCAT(IF(IFNULL(G.GOODS_GB,'') IN ('G073_11','G073_15', ''), '',IFNULL(CONCAT('[',FN_GET_CODE_NM('G073',G.GOODS_GB),']'),'') )
-		                   ,IF(G.FOREIGN_BUY_YN='N','[해외구매대행]','' )
+		                   ,IF(G.FOREIGN_BUY_YN='Y','[해외구매대행]','' )
 		                   ,IF(G.PARALLEL_IMPORT_YN = 'Y','[병행수입]','')
 		                   ,IF(G.ORDER_MADE_YN='Y','[주문제작]','')
 		                   ,G.GOODS_NM ) AS GOODS_FULL_NM
 		          , G.GOODS_STAT
+		          , G.GOODS_TYPE
 		          , G.MIN_ORD_QTY 
 		          , (CASE WHEN E.DISP_NM_LANG = 'EN' THEN E.BRAND_GROUP_ENM ELSE E.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
 		          , G.LIST_PRICE
 		          , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD, G.CURR_PRICE,#{custGb}) AS CURR_PRICE
 		          , G.MAIN_COLOR_CD
-		          , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'00') AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
-		          , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'00') AND MOUSEOVER_IMG_YN = 'Y') AS SYS_IMG_NM2
+		          , (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') AS SYS_IMG_NM
+		          , (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 MOUSEOVER_IMG_YN = 'Y') AS SYS_IMG_NM2
 		          , S.STOCK_QTY
 		          , S.SOLDOUT_YN
+		          , S.OPT_CD
 		          , V.VIDEO_GB_M
 		          , V.VIDEO_VAL_M
 		          , V.VIDEO_GB_S
@@ -162,8 +250,8 @@
 		      INNER JOIN TB_LOOKBOOK_BANNER B ON A.LOOKBOOK_SQ = B.LOOKBOOK_SQ 
 		                                      AND B.DISP_YN = 'Y'
 		                                      AND B.LOOKBOOKB_SQ = #{lookbookbSq}
-		      INNER JOIN TB_LOOKBOOK_PICKER P ON B.LOOKBOOKB_SQ  = P.LOOKBOOKB_SQ
-		                                      AND P.USE_YN = 'Y'
+		      INNER JOIN TB_LOOKBOOK_GOODS P ON B.LOOKBOOKB_SQ  = P.LOOKBOOKB_SQ
+		                                      AND P.DEL_YN = 'N'
 		      INNER JOIN TB_GOODS G ON P.GOODS_CD = G.GOODS_CD
 		                            AND G.GOODS_STAT = 'G008_90'
 		                            AND G.SELF_MALL_YN = 'Y'
@@ -173,9 +261,10 @@
 		                            AND E.USE_YN = 'Y'
 		      LEFT OUTER JOIN (SELECT GOODS_CD
 		                            , SUM(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
-		                                       ELSE CURR_STOCK_QTY
-		                                       END) AS STOCK_QTY
+		                                       ELSE CURR_STOCK_QTY END) AS STOCK_QTY
 		                            , MIN(SOLDOUT_YN) AS SOLDOUT_YN
+		                            , MIN(CASE WHEN SOLDOUT_YN = 'N' THEN OPT_CD 
+		                                       ELSE 'XXX' END) AS OPT_CD 
 		                       FROM VW_STOCK
 		                       WHERE DISP_YN = 'Y'
 		                       GROUP BY GOODS_CD) S ON G.GOODS_CD = S.GOODS_CD