bin2107 5 anni fa
parent
commit
f9f6026528

+ 18 - 9
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -4,15 +4,7 @@ import java.util.Collection;
 import java.util.List;
 
 import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.BrandGroup;
-import com.style24.persistence.domain.Cate1;
-import com.style24.persistence.domain.Cate2;
-import com.style24.persistence.domain.Cate3;
-import com.style24.persistence.domain.Cate4;
-import com.style24.persistence.domain.Cate4Srch;
-import com.style24.persistence.domain.Cate5;
-import com.style24.persistence.domain.Contents;
-import com.style24.persistence.domain.GnbTab;
+import com.style24.persistence.domain.*;
 
 /**
  * 전시 Dao
@@ -95,4 +87,21 @@ public interface TsfDisplayDao {
 	 */
 	List<Cate5> getCategory5List(Cate4Srch cate);
 
+	/**
+	 * 메인 레이아웃 목록
+	 * @param cateNo - 카테고리No
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 3. 16
+	 */
+	Collection<MainLayout> getMainLayout(String cateNo);
+
+	/**
+	 * 카테고리 4srch 조회
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 3. 16
+	 */
+	Cate4Srch getCate4srch(Cate4Srch cate4Srch);
 }

+ 23 - 8
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -2,6 +2,7 @@ package com.style24.front.biz.service;
 
 import java.util.Collection;
 
+import com.style24.persistence.domain.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
@@ -10,16 +11,9 @@ import com.style24.core.biz.service.TscEnvsetService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.front.biz.dao.TsfDisplayDao;
 import com.style24.front.support.env.TsfConstants;
-import com.style24.persistence.domain.BrandGroup;
-import com.style24.persistence.domain.Cate1;
-import com.style24.persistence.domain.Cate2;
-import com.style24.persistence.domain.Cate3;
-import com.style24.persistence.domain.Cate4;
-import com.style24.persistence.domain.Cate4Srch;
-import com.style24.persistence.domain.Contents;
-import com.style24.persistence.domain.GnbTab;
 
 import lombok.extern.slf4j.Slf4j;
+import sun.applet.Main;
 
 /**
  * 전시 Service
@@ -243,4 +237,25 @@ public class TsfDisplayService {
 		return cate1List;
 	}
 
+	/**
+	 * 메인 레이아웃 목록
+	 * @param cateNo - 카테고리No
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 3. 16
+	 */
+	public Collection<MainLayout> getMainLayout(String cateNo){
+		return displayDao.getMainLayout(cateNo);
+	}
+
+	/**
+	 * 카테고리 4srch 조회
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 3. 16
+	 */
+	public Cate4Srch getCate4srch(Cate4Srch cate4Srch){
+		return displayDao.getCate4srch(cate4Srch);
+	}
 }

+ 60 - 4
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -1,8 +1,13 @@
 package com.style24.front.biz.web;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.Locale;
 
+import com.style24.core.support.env.TscConstants;
+import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.domain.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
@@ -17,10 +22,6 @@ import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfDisplayService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.env.TsfConstants;
-import com.style24.persistence.domain.BrandGroup;
-import com.style24.persistence.domain.Cate1;
-import com.style24.persistence.domain.Contents;
-import com.style24.persistence.domain.GnbTab;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -53,7 +54,62 @@ public class TsfDisplayController extends TsfBaseController {
 	@GetMapping("/mall/main/form")
 	public ModelAndView mallMain(Device device, @RequestParam HashMap<String, String> paramMap) {
 		ModelAndView mav = new ModelAndView();
+		String mainCateNo = "";
+		if(device.isMobile() || "Y".equals(paramMap.get("mobileYn"))){
+			mainCateNo = "1720";
+		}else{
+			mainCateNo = "1700";
+		}
+		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mainCateNo);
+		Collection<MainLayout> mainLayoutList = new ArrayList<MainLayout>();
+		//mav.addObject("preview", paramMap.get("preview"));
+		//mav.addObject("viewDt", paramMap.get("viewDt"));
+		//mav.addObject("viewPage", "20");
+		for(MainLayout mainLayout : mainLayoutCollection){
+			String contentsLoc = mainLayout.getContentsLoc();
+			Contents contents = new Contents();
+			log.info("mallMain contentsLoc:::{}",contentsLoc);
+			contents.setContentsLoc(contentsLoc);
+			contents.setPreview(paramMap.get("preview"));
+			contents.setViewDt(paramMap.get("viewDt"));
+			contents.setCateNo(Integer.parseInt(mainCateNo));
 
+			Cate4Srch cate4Srch = new Cate4Srch();
+			cate4Srch.setContentsLoc(contentsLoc);
+			cate4Srch = displayService.getCate4srch(cate4Srch);
+			mainLayout.setCate4Srch(cate4Srch);
+
+			if("C".equals(mainLayout.getContentsYn())){
+				mainLayout.setContentsList(displayService.getContentsList(contents));
+			}else{
+				log.info("nullpoint contentsLoc::::{}",contentsLoc);
+				GoodsSearch goodsSearch = new GoodsSearch();
+				goodsSearch.setCateType("G031_20");
+				goodsSearch.setSoldoutGoodsDisplayYn("N");
+				//goodsSearch.setSoldoutGoodsDisplayYn(envsetService.getSoldoutGoodsDisplayYn(TscConstants.Site.STYLE24.value()));
+				goodsSearch.setCateNo(cate4Srch.getLeafCateNo());
+				goodsSearch.setFrontGb(getSession().getFrontGb());
+				//int floorUnit = envsetService.getPayUnit(TscConstants.Site.STYLE24.value()); // 가격 원단위 관리
+				//goodsSearch.setFloorUnit(floorUnit);
+				if(TsfSession.getInfo() != null){
+					goodsSearch.setCustGb(TsfSession.getInfo().getCustGb());
+					goodsSearch.setCustNo(TsfSession.getInfo().getCustNo());
+					goodsSearch.setCustGrade(TsfSession.getInfo().getCustGrade());
+				}else{
+					goodsSearch.setCustGb("00");
+				}
+
+				/*if("SMM001".equals(contentsLoc)){
+					goodsSearch.setMaxRownum(3);
+				}else{
+					goodsSearch.setMaxRownum(24);
+				}*/
+				//mainLayout.setGoodsList(displayService.getCategoryGoodsList(goodsSearch));
+			}
+			mainLayoutList.add(mainLayout);
+		}
+
+		mav.addObject("mainLayoutList", mainLayoutList);
 		mav.setViewName(super.getDeviceViewName("display/MallMainForm"));
 
 		return mav;

+ 5 - 0
src/main/java/com/style24/persistence/domain/Contents.java

@@ -55,6 +55,11 @@ public class Contents extends TscBaseDomain {
 	private String preview;			// 미리보기여부
 	private int maxRow;				// 최대ROW
 
+	// 몰메인 SMM001에서 사용
+	private int planBrandCnt;
+	private int planBrandGroupNo;
+	private String planBrandGroupNm;
+
 	private Collection<Cate1> cateList;	// 카테고리목록
 
 }

+ 28 - 0
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -0,0 +1,28 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+import lombok.Data;
+
+/**
+ * 상품검색 Domain
+ *
+ * @author bin2107
+ * @since 2021. 3. 16
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsSearch extends TscBaseDomain {
+
+    // 몰메인 추가
+    private String cateType;                    // 카테고리유형
+    private Integer cateNo;                     // 카테고리번호
+    private String soldoutGoodsDisplayYn = "N";	//품절노출여부
+    private String frontGb;		                //프론트구분
+    private int floorUnit;                      // 절사단위(1:일원단위절사, 10:십원단위절사, 100:백원단위절사)
+    private String custGb;		                //고객구분
+    private String custGrade;	                //고객등급
+    private Integer custNo;		                //고객번호
+
+    private int maxRownum;			            // 조회건수
+
+}

+ 30 - 0
src/main/java/com/style24/persistence/domain/MainLayout.java

@@ -0,0 +1,30 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+import lombok.Data;
+
+import java.util.Collection;
+
+/**
+ * 메인레이아웃 Domain
+ *
+ * @author bin2107
+ * @since 2021. 3. 16
+ */
+@SuppressWarnings("serial")
+@Data
+public class MainLayout extends TscBaseDomain {
+    private Integer contentsSq;
+    private Integer cateNo;
+    private String contentsLoc;
+    private String contentsYn;
+    private int dispOrd;
+    private int colCnt;
+    private int colNo;
+    private String orgFileNm;
+    private String sysFileNm;
+
+    private Cate4Srch cate4Srch;
+    private Collection<Contents> contentsList;
+    private Collection<Goods> goodsList;
+}

+ 112 - 43
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -125,63 +125,86 @@
 		     , BRAND_GROUP_NO  /*브랜드그룹번호*/
 		     , BRAND_GROUP_IMG /*브랜드그룹이미지경로*/
 		     , MD_TITLE        /*MD타이틀*/
+			<if test='contentsLoc != null and contentsLoc =="SMM001"'>
+				,PLAN_BRAND_CNT
+				,PLAN_BRAND_GROUP_NO
+				,PLAN_BRAND_GROUP_NM
+			</if>
 		FROM   (
-		        SELECT CATE_NO                                            /*카테고리번호*/
-		             , CONTENTS_LOC                                       /*컨텐츠위치*/
-		             , CONTENTS_TYPE                                      /*컨텐츠유형*/
-		             , DATE_FORMAT(DISP_STDT,'%Y%m%d%H%i%S') AS DISP_STDT /*전시시작일시*/
-		             , DATE_FORMAT(DISP_EDDT,'%Y%m%d%H%i%S') AS DISP_EDDT /*전시종료일시*/
-		             , DISP_ORD                                           /*표시순서*/
-		             , IMG_PATH1                                          /*이미지경로1*/
-		             , IMG_PATH2                                          /*이미지경로2*/
-		             , IMG_PATH3                                          /*이미지경로3*/
-		             , IMG_PATH4                                          /*이미지경로4*/
-		             , IMG_PATH5                                          /*이미지경로5*/
-		             , IMG_PATH6                                          /*이미지경로6*/
-		             , IMG_PATH7                                          /*이미지경로7*/
-		             , IMG_PATH8                                          /*이미지경로8*/
-		             , STR_VAR1                                           /*링크필드1*/
-		             , STR_VAR2                                           /*링크필드2*/
-		             , STR_VAR3                                           /*링크필드3*/
-		             , STR_VAR4                                           /*링크필드4*/
-		             , STR_VAR5                                           /*링크필드5*/
-		             , STR_VAR6                                           /*링크필드6*/
-		             , STR_VAR7                                           /*링크필드7*/
-		             , STR_VAR8                                           /*링크필드8*/
-		             , STR_TITLE1                                         /*제목필드1*/
-		             , STR_TITLE2                                         /*제목필드2*/
-		             , STR_TITLE3                                         /*제목필드3*/
-		             , STR_TITLE4                                         /*제목필드4*/
-		             , SUB_TEXT1                                          /*서브텍스트1*/
-		             , SUB_TEXT2                                          /*서브텍스트2*/
-		             , SUB_TEXT3                                          /*서브텍스트3*/
-		             , SUB_TEXT4                                          /*서브텍스트4*/
-		             , BRAND_GROUP_NO                                     /*브랜드그룹번호*/
-		             , BRAND_GROUP_IMG                                    /*브랜드그룹이미지경로*/
-		             , MD_TITLE                                           /*MD타이틀*/
+		        SELECT A.CATE_NO                                            /*카테고리번호*/
+		             , A.CONTENTS_LOC                                       /*컨텐츠위치*/
+		             , A.CONTENTS_TYPE                                      /*컨텐츠유형*/
+		             , DATE_FORMAT(A.DISP_STDT,'%Y%m%d%H%i%S') AS DISP_STDT /*전시시작일시*/
+		             , DATE_FORMAT(A.DISP_EDDT,'%Y%m%d%H%i%S') AS DISP_EDDT /*전시종료일시*/
+		             , A.DISP_ORD                                           /*표시순서*/
+		             , A.IMG_PATH1                                          /*이미지경로1*/
+		             , A.IMG_PATH2                                          /*이미지경로2*/
+		             , A.IMG_PATH3                                          /*이미지경로3*/
+		             , A.IMG_PATH4                                          /*이미지경로4*/
+		             , A.IMG_PATH5                                          /*이미지경로5*/
+		             , A.IMG_PATH6                                          /*이미지경로6*/
+		             , A.IMG_PATH7                                          /*이미지경로7*/
+		             , A.IMG_PATH8                                          /*이미지경로8*/
+		             , A.STR_VAR1                                           /*링크필드1*/
+		             , A.STR_VAR2                                           /*링크필드2*/
+		             , A.STR_VAR3                                           /*링크필드3*/
+		             , A.STR_VAR4                                           /*링크필드4*/
+		             , A.STR_VAR5                                           /*링크필드5*/
+		             , A.STR_VAR6                                           /*링크필드6*/
+		             , A.STR_VAR7                                           /*링크필드7*/
+		             , A.STR_VAR8                                           /*링크필드8*/
+		             , A.STR_TITLE1                                         /*제목필드1*/
+		             , A.STR_TITLE2                                         /*제목필드2*/
+		             , A.STR_TITLE3                                         /*제목필드3*/
+		             , A.STR_TITLE4                                         /*제목필드4*/
+		             , A.SUB_TEXT1                                          /*서브텍스트1*/
+		             , A.SUB_TEXT2                                          /*서브텍스트2*/
+		             , A.SUB_TEXT3                                          /*서브텍스트3*/
+		             , A.SUB_TEXT4                                          /*서브텍스트4*/
+		             , A.BRAND_GROUP_NO                                     /*브랜드그룹번호*/
+		             , A.BRAND_GROUP_IMG                                    /*브랜드그룹이미지경로*/
+		             , A.MD_TITLE                                           /*MD타이틀*/
+					<if test='contentsLoc != null and contentsLoc =="SMM001"'>
+						, (SELECT count(C.BRAND_GROUP_NO) AS CNT
+							FROM TB_PLAN_BRAND C
+							WHERE B.PLAN_SQ = C.PLAN_SQ
+							) AS PLAN_BRAND_CNT
+						, (SELECT min(C.BRAND_GROUP_NO) AS BRAND_GROUP_NO
+							FROM TB_PLAN_BRAND C
+							WHERE B.PLAN_SQ = C.PLAN_SQ
+							) AS PLAN_BRAND_GROUP_NO
+						, (SELECT FN_GET_BRAND_GROUP_NM(min(C.BRAND_GROUP_NO)) AS BRAND_GROUP_NM
+							FROM TB_PLAN_BRAND C
+							WHERE B.PLAN_SQ = C.PLAN_SQ
+							) AS PLAN_BRAND_GROUP_NM
+					</if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
-		             , PRE_CONTENTS_SQ                       AS CONTENTS_SQ /*컨텐츠일련번호*/
+		             , A.PRE_CONTENTS_SQ                       AS CONTENTS_SQ /*컨텐츠일련번호*/
 		             -- , RANK() OVER(PARTITION BY CATE_NO, CONTENTS_LOC
 		             --               ORDER BY CATE_NO, DISP_ORD, PRE_CONTENTS_SQ) AS NUMB
 		        FROM   TB_CONTENTS_PREVIEW A
 		            </when>
 		            <otherwise>
-		             , CONTENTS_SQ
+		             , A.CONTENTS_SQ
 		             -- , RANK() OVER (PARTITION BY CATE_NO, CONTENTS_LOC
 		             --               ORDER BY CATE_NO, DISP_ORD, CONTENTS_SQ) AS NUMB
 		        FROM   TB_CONTENTS A
 		            </otherwise>
 		        </choose>
-		        WHERE  CONTENTS_LOC = #{contentsLoc}
-		        AND    USE_YN = 'Y'
+				<if test='contentsLoc != null and contentsLoc =="SMM001"'>
+					LEFT OUTER JOIN		TB_PLAN B
+		        	ON A.STR_VAR6 = B.PLAN_SQ
+				</if>
+		        WHERE  A.CONTENTS_LOC = #{contentsLoc}
+		        AND    A.USE_YN = 'Y'
 		        <if test="cateNo != null and cateNo != ''">
-		        AND    CATE_NO = #{cateNo}
+		        AND    A.CATE_NO = #{cateNo}
 		        </if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
-		        AND    DISP_STDT <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
-		        AND    DISP_EDDT <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		        AND    A.DISP_STDT <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		        AND    A.DISP_EDDT <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
 		        AND    IFNULL((SELECT DISP_EDDT
 		                       FROM   TB_PLAN
 		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
@@ -203,8 +226,8 @@
 		        ORDER  BY CONTENTS_LOC, DISP_ORD, PRE_CONTENTS_SQ
 		            </when>
 		            <otherwise>
-		        AND    DISP_STDT <![CDATA[<=]]> NOW()
-		        AND    DISP_EDDT <![CDATA[>=]]> NOW()
+		        AND    A.DISP_STDT <![CDATA[<=]]> NOW()
+		        AND    A.DISP_EDDT <![CDATA[>=]]> NOW()
 		        AND    IFNULL((SELECT DISP_EDDT
 		                       FROM   TB_PLAN
 		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
@@ -226,7 +249,7 @@
 		        ORDER  BY CONTENTS_LOC, DISP_ORD, CONTENTS_SQ
 		            </otherwise>
 		        </choose>
-		       )
+		       ) A
 		<if test="maxRow != null and maxRow > 0">
 		LIMIT #{maxRow}
 		</if>
@@ -410,4 +433,50 @@
 		ORDER  BY DISP_ORD
 	</select>
 
+	<!-- 메인 레이아웃 목록 -->
+	<select id="getMainLayout" parameterType="String" resultType="MainLayout">
+		/* TsfDisplay.getMainLayout */
+		SELECT CATE_NO
+			 , CONTENTS_LOC
+			 , DISP_ORD
+			 , CONTENTS_YN
+			 , COL_CNT
+			 , COL_NO
+		FROM TB_MAIN_LAYOUT
+		WHERE CATE_NO = #{cateNo}
+		AND 	CONTENTS_LOC in ('SMM001','SMM002')
+		ORDER BY DISP_ORD, COL_NO
+	</select>
+
+	<!-- 카테고리4srch 조회-->
+	<select id="getCate4srch" parameterType="Cate4Srch" resultType="Cate4Srch">
+		/* TsfDisplay.getCate4srch */
+		SELECT SITE_CD
+			, LEAF_CATE_NO
+			, CATE_TYPE
+			, CATE1_NO
+			, CATE1_NM
+			, CATE2_NO
+			, CATE2_NM
+			, CATE3_NO
+			, CATE3_NM
+			, CATE4_NO
+			, CATE4_NM
+			, FULL_CATE_NO
+			, FULL_CATE_NM
+			, DISP_ORD
+			, FORMAL_GB
+			, CONTENTS_LOC
+		FROM TB_CATE_4SRCH
+		WHERE 1 = 1
+		<if test='leafCateNo != null and leafCateNo != ""'>
+			AND LEAF_CATE_NO = #{leafCateNo}
+		</if>
+		<if test='cate1No != null and cate1No != ""'>
+			AND CATE1_NO = #{cate1No}
+		</if>
+		<if test='contentsLoc != null and contentsLoc != ""'>
+			AND CONTENTS_LOC = #{contentsLoc}
+		</if>
+	</select>
 </mapper>

File diff suppressed because it is too large
+ 255 - 248
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html


Some files were not shown because too many files changed in this diff