Quellcode durchsuchen

핫딜 중간커밋

sowon4187 vor 5 Jahren
Ursprung
Commit
ec12dae341

+ 24 - 1
src/main/java/com/style24/front/biz/dao/TsfSocialDao.java

@@ -1,6 +1,9 @@
 package com.style24.front.biz.dao;
 
+import java.util.Collection;
+
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Social;
 
 /**
  * 소셜관리(핫딜) Dao
@@ -10,5 +13,25 @@ import com.style24.core.support.annotation.ShopDs;
  */
 @ShopDs
 public interface TsfSocialDao {
-
+	/**
+	 * 소셜(핫딜) 정보
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @date 2021. 3. 11
+	 */
+	Social getSocialInfo(Social social);
+	
+	/**
+	 * 소셜(핫딜) 상품 목록
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @date 2021. 3. 11
+	 */
+	Collection<Social> getSocialGoodsList(Social social);
+	
+	
 }

+ 53 - 0
src/main/java/com/style24/front/biz/service/TsfSocialService.java

@@ -0,0 +1,53 @@
+package com.style24.front.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.style24.front.biz.dao.TsfSocialDao;
+import com.style24.persistence.domain.Social;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 소셜(핫딜) Service
+ *
+ * @author sowon
+ * @since 2021. 3. 11
+ */
+@Service
+@Slf4j
+public class TsfSocialService {
+	
+	@Autowired
+	private TsfSocialDao socialDao;
+	
+	/**
+	 * 소셜(핫딜) 정보
+	 *
+	 * @param
+	 * @return
+	 * @author sowon	
+	 * @since 2021. 3. 11
+	 */
+	public Social getSocialInfo(Social social) {
+		return socialDao.getSocialInfo(social);
+	}
+	
+	/**
+	 * 소셜(핫딜) 상품 리스트
+	 *
+	 * @param
+	 * @return
+	 * @author sowon	
+	 * @since 2021. 3. 11
+	 */
+	public Collection<Social> getSocialGoodsList(Social social) {
+		Social info = new Social();
+		info = socialDao.getSocialInfo(social);
+		social.setSocialSq(info.getSocialSq());
+		return socialDao.getSocialGoodsList(social);
+	}
+
+}

+ 54 - 0
src/main/java/com/style24/front/biz/web/TsfSocialController.java

@@ -0,0 +1,54 @@
+package com.style24.front.biz.web;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.style24.front.biz.service.TsfSocialService;
+import com.style24.front.support.controller.TsfBaseController;
+import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.domain.Social;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 소셜(핫딜) Controller
+ * 
+ * @author sowon
+ * @since 2021. 3. 11
+ */
+@Controller
+@RequestMapping("/social")
+@Slf4j
+public class TsfSocialController extends TsfBaseController {
+	
+	@Autowired
+	private TsfSocialService socialService;
+	/**
+	 * 소셜(핫딜) 메인 화면
+	 * 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 11
+	 */
+	@GetMapping("/main/form")
+	public ModelAndView socialMainForm(Social social) throws Exception {
+		ModelAndView mav = new ModelAndView();
+		
+		// 디바이스 set
+		social.setFrontGb(TsfSession.getFrontGb());
+		
+		// 소셜(핫딜) 
+		mav.addObject("socialInfo", socialService.getSocialInfo(social));
+		
+		// 소셜(핫딜)-상품목록
+		mav.addObject("socialGoods", socialService.getSocialGoodsList(social));
+	
+		mav.setViewName(super.getDeviceViewName("social/SocialMainForm"));
+		return mav;
+	}
+	
+
+}

+ 9 - 1
src/main/java/com/style24/persistence/domain/Social.java

@@ -54,7 +54,15 @@ public class Social extends TscBaseDomain{
 		private float dcRate;			// 할인율
 		private float pntPrate;		// PC 포인트 적립율
 		private float pntMrate;		// MOBILE 포인트 적립율
-
+		private int listPrice;		//정상가
+		private String goodsNm;		// 상품이름
+		private String sysImgNm;	//시스템이미지
+		private String goodsTnm;	//상품타이틀
+		private int stockQtySum;	//상품 재고
+		
+		// 브랜드
+		private String brandKnm;	//브랜드이름(한글)
+		private String brandEnm;	//브랜드이름(영어)
 		
 
 		private String excelFileNm;		// 엑셀파일명

+ 74 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.front.biz.dao.TsfSocialDao">
+	<select id="getSocialInfo" resultType="Social" parameterType="Social">
+		<!-- TsfSocial.getSocialInfo -->
+		SELECT A.SOCIAL_SQ
+		     , A.SOCIAL_NM
+		     , A.SOCIAL_TYPE
+		     , A.SITE_CD
+		     , A.FRONT_GB
+		     , A.SOCIAL_STDT
+		     , A.SOCIAL_EDDT
+		     , A.SOCIAL_TNM
+		     , A.USE_YN
+		     , A.APPLY_GB
+		FROM TB_SOCIAL A 
+		WHERE 1=1
+		  AND NOW() BETWEEN A.SOCIAL_STDT AND A.SOCIAL_EDDT 
+		  AND A.USE_YN = 'Y'			     		/*사용여부*/
+		  AND A.APPLY_GB = 'A'						 /*적용구분(P:대기,A:적용,F:종료)*/
+		  AND A.FRONT_GB IN ('A',#{frontGb}) 		 /*프론트 구분*/
+		ORDER BY A.REG_DT DESC LIMIT 1
+	</select>
+	
+	<select id="getSocialGoodsList" resultType="Social" parameterType="Social">
+		SELECT F.* 
+			 ,  (CASE WHEN F.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = F.GOODS_CD) 
+			    ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = F.GOODS_CD) 
+			    END) AS STOCK_QTY_SUM
+			 , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
+			 , CASE IFNULL((SELECT COUNT(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ),0) 
+			            WHEN 0 THEN 'N'
+			            ELSE 'Y' END AS GOODS_IMAGE_YN
+			FROM
+			(   
+				 SELECT A.SOCIAL_SQ
+				     , A.SOCIAL_NM
+				     , A.SOCIAL_TYPE
+				     , A.SITE_CD
+				     , A.FRONT_GB
+				     , A.SOCIAL_STDT
+				     , A.SOCIAL_EDDT
+				     , A.SOCIAL_TNM
+				     , A.USE_YN
+				     , A.APPLY_GB
+				     , A.REG_DT 
+				     , B.GOODS_CD 
+				     , B.CURR_BPRICE 
+				     , B.CURR_APRICE 
+				     , B.DC_BRATE 
+				     , B.DC_ARATE 
+				     , B.DEL_YN 
+				     , B.DISP_ORD 
+				     , C.GOODS_NM 
+				     , C.GOODS_TYPE 
+				     , C.GOODS_TNM 
+				     , C.LIST_PRICE
+				     , C.MAIN_COLOR_CD 
+				     , D.BRAND_KNM 
+				     , D.BRAND_ENM 
+				FROM TB_SOCIAL A INNER JOIN tb_social_goods B ON A.SOCIAL_SQ = B.SOCIAL_SQ 
+				                 INNER JOIN TB_GOODS C ON B.GOODS_CD = C.GOODS_CD 
+				                 INNER JOIN TB_BRAND D ON C.BRAND_CD = D.BRAND_CD
+				WHERE 1=1
+				  AND NOW() BETWEEN A.SOCIAL_STDT AND A.SOCIAL_EDDT 
+				  AND A.USE_YN = 'Y'		    		 /*사용여부*/
+				  AND A.APPLY_GB = 'A'					 /*적용구분(P:대기,A:적용,F:종료)*/
+				  AND A.FRONT_GB IN ('A',#{frontGb})	 /*프론트 구분*/
+				  AND B.DEL_YN = 'N'
+				ORDER BY B.DISP_ORD 
+			)F
+			WHERE F.SOCIAL_SQ = #{socialSq}
+	</select>
+</mapper>

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

@@ -96,7 +96,7 @@
 				</ul>
 				<ul class="bundle" id="nav3">
 					<li class="active" ><a href="#">베스트</a></li>
-					<li><a href="#">핫딜</a></li>
+					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_SOCIAL_MAIN);" title="핫딜 바로가기">핫딜</a></li>
 					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_PLANNING_MAIN);" title="기획전 바로가기">기획전</a></li>
 					<li><a href="#">총알배송</a></li>
 					<li><a href="#">아울렛</a></li>

+ 120 - 0
src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html

@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="web/common/layout/DefaultLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : SocialMainFormWeb.html
+ * @desc    : 소셜메인(핫딜메인) Page
+ *============================================================================
+ * Pastelmall
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.3.11     sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+	<!--  container -->
+	<div id="container" class="container dp">
+		<div class="breadcrumb"> 
+			<ul>
+				<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
+				<li class="bread_2depth">핫딜</li>
+			</ul> 
+		</div>
+		<div class="wrap">
+			<div class="content dp_hotdeal"> <!-- 페이지특정 클래스 = dp_hotdeal -->
+				<div class="cont_head">
+					<div>
+                        <h3>[[${socialInfo.socialNm}]]</h3>
+                    </div>
+				</div>
+				<div class="cont_body">
+                    <div class="hotdeal">
+                        <div id="countdown">
+                            <span id="h-hours"></span>
+                            <span id="h-minutes"></span>
+                            <span id="h-seconds"></span>
+                        </div>
+                    </div>  
+                    <div class="list_content">
+                        <div class="itemsGrp rowtype"> <!-- itemsGrp rank hot deal --> <!-- rowtype 추가시 가로형태로 출력 -->
+                        <th:block th:each="SocialData, SocialStat : ${socialGoods}">
+                            <div th:class="${SocialData.stockQtySum == 0 ? 'item_prod sold_out' : 'item_prod'}" > 
+                                <div class="item_state"> <!-- item_state AD soldout -->
+                                    <a href="#none" class="itemLink">
+                                        <div class="itemPic">
+                                            <div class="shape ranker"><span>특가</span></div>
+                                            <img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + SocialData.sysImgNm}">
+                                            <button type="button" class="itemLike active">관심상품 추가</button>
+                                        </div>
+                                        <p class="itemBrand" th:text="${SocialData.brandKnm}"></p>
+                                        <div class="itemName" th:text="${SocialData.goodsNm}" style="font-size: 18px;"></div>
+                                        <p class="itemPrice" >
+                                         [[${#numbers.formatInteger(SocialData.currAprice,0,'COMMA')} + 원]]
+                                            <!-- [[${SocialData.currAprice}]]원 -->
+                                            <span class="itemPrice_original" th:text="${#numbers.formatInteger(SocialData.listPrice,0,'COMMA')} + '원'"></span>
+											<span class=" itemPercent" th:text="${#numbers.formatDecimal(SocialData.dcArate,1,0)} + '%'"></span>
+                                        </p>
+                                        <p class="itemBadge">
+                                            <span class="badge13">베스트 </span>
+                                        </p>
+                                        <!-- <div class="itemcolorchip">
+                                            <span class="chip_color35" value="ABM">BEIGE</span>
+                                            <span class="chip_color54" value="BDS">BLACK</span>
+                                            <span class="chip_color40" value="YBR">WHITE</span>
+                                        </div> -->
+                                        <div class="itemComment" th:text="${SocialData.goodsTnm}"></div>
+                                    </a>
+                                </div>
+                            </div>
+                              </th:block>
+                        </div>
+                    </div>
+                </div>
+		    </div>
+        </div>
+    </div>   
+
+<script th:inline="javascript">
+var socialInfo = [[${socialInfo}]];
+console.log(socialInfo);
+
+$(function(){
+       /* 핫딜 countDown */
+       function hotdealTimer() {
+           var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
+
+               endTime = (Date.parse(endTime) / 1000);
+
+               var now = new Date();
+               now = (Date.parse(now) / 1000);
+
+               var timeLeft = endTime - now;
+
+               var days = Math.floor(timeLeft / 86400); 
+               var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
+               var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
+               var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
+
+               if (hours < '10') { hours = '0' + hours; }
+               if (minutes < '10') { minutes = '0' + minutes; }
+               if (seconds < '10') { seconds = '0' + seconds; }
+
+               //$('#d-days').html(days);
+               $('#h-hours').html(hours);
+               $('#h-minutes').html(minutes);
+               $('#h-seconds').html(seconds);		
+       }
+       setInterval(function() { hotdealTimer(); }, 1000);
+       /* countDown */
+});
+</script>
+</th:block>
+
+</body>
+</html>

BIN
src/main/webapp/images/pc/thumb/hotdeal_bg.png


+ 2 - 0
src/main/webapp/ux/style24_link.js

@@ -62,6 +62,8 @@ const _PAGE_WISHLIST_DEL = _frontUrl + "/mypage/wish/list/delete";				// 위시
 const _PAGE_PLANNING_MAIN = _frontUrl + "/planning/main/form"; 					// 기획전 메인
 const _PAGE_PLANNING_DETAIL = _frontUrl + "/planning/detail/form";				// 기획전 상세
 
+//== 핫딜==/
+const _PAGE_SOCIAL_MAIN = _frontUrl + "/social/main/form";						// 소설(핫딜) 메인
 
 //== 이벤트 ==/
 const _PAGE_EVENT_MAIN = _frontUrl + "/planning/event/main/form"; 					// 이벤트 메인