Просмотр исходного кода

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.front.git into develop

eskim 5 лет назад
Родитель
Сommit
032891f5d8

+ 7 - 6
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
 import com.style24.core.biz.service.TscKakaotalkService;
+import com.style24.core.biz.service.TscMailService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -66,10 +67,10 @@ public class TsfCustomerService {
 	private TscKakaotalkService kakaotalkService;
 
 	@Autowired
-	private ObjectMapper objectMapper;
+	private TscMailService mailService;
 
 	@Autowired
-	private Environment env;
+	private ObjectMapper objectMapper;
 
 	/**
 	 * 고객아이디 찾기
@@ -296,7 +297,7 @@ public class TsfCustomerService {
 			// 이메일 발송
 			try {
 				if (StringUtils.isNotBlank(customer.getEmail())) {
-					// TODO : 2021.02.23 이메일 모듈 개발 필요 jsshin
+					mailService.sendJoinCongrat(customer, coupon, customer.getCustNo());
 				}
 			} catch (Exception e) {
 				log.error("error", e);
@@ -351,16 +352,16 @@ public class TsfCustomerService {
 					kakaotalkService.sendJoinCongrat(customer, coupon, customer.getCustNo());
 				}
 			} catch (Exception e) {
-				//log.error("error", e);
+				log.error("error", e);
 			}
 
 			// 이메일 발송
 			try {
 				if (StringUtils.isNotBlank(customer.getEmail())) {
-					// TODO : 2021.02.23 이메일 모듈 개발 필요 jsshin
+					mailService.sendJoinCongrat(customer, coupon, customer.getCustNo());
 				}
 			} catch (Exception e) {
-				//log.error("error", e);
+				log.error("error", e);
 			}
 		}
 

+ 11 - 2
src/main/java/com/style24/front/biz/web/TsfCustomerController.java

@@ -3,6 +3,7 @@ package com.style24.front.biz.web;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
+import com.style24.core.biz.service.TscMailService;
 import com.style24.front.biz.service.TsfCouponService;
 import com.style24.persistence.domain.Coupon;
 import org.apache.commons.lang3.StringUtils;
@@ -57,6 +58,9 @@ public class TsfCustomerController extends TsfBaseController {
 	@Autowired
 	private TscKakaotalkService kakaotalkService;
 
+	@Autowired
+	private TscMailService mailService;
+
 	@Autowired
 	private NiceCertify niceCertify;
 
@@ -187,8 +191,13 @@ public class TsfCustomerController extends TsfBaseController {
 			// 비밀번호 수정
 			customerService.saveCustomerPassword(customer);
 
-			if (StringUtils.isNotBlank(customer.getCellPhnno())) {
-				kakaotalkService.sendCustomerTempPassword(customer, customer.getCustNo());
+			if (StringUtils.isNotBlank(customer.getEmail())) {
+				try {
+					mailService.sendCustomerTempPassword(customer, customer.getCustNo());
+				} catch (Exception e) {
+					log.error(e.getMessage());
+				}
+
 			}
 		}
 

+ 71 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -160,23 +160,92 @@
 	<!--회원가입 쿠폰-->
 	<select id="getJoinCoupon" parameterType="Coupon" resultType="Coupon">
 		/* TsfCoupon.getJoinCoupon */
+		WITH TAB_COUPON_REFVAL1 AS (
+		    SELECT CR.CPN_ID
+		         , CR.CPN_TARGET
+		         , CASE WHEN CR.CPN_TARGET = 'G260_10' /*상품*/ THEN (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = CR.REF_VAL AND GOODS_STAT = 'G008_90')
+		                WHEN CR.CPN_TARGET = 'G260_11' /*카테고리*/ THEN
+		                    CASE WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL),0) > 0
+		                              THEN (SELECT CATE1_NM FROM TB_CATE_4SRCH WHERE CATE1_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL),0) > 0
+		                              THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE2_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE3_NO = CR.REF_VAL LIMIT 1)
+		                         WHEN IFNULL((SELECT COUNT(1) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL),0) > 0 THEN (SELECT CONCAT(CATE1_NM,' > ',CATE2_NM) FROM TB_CATE_4SRCH WHERE CATE4_NO = CR.REF_VAL LIMIT 1)
+		                    END
+		                WHEN CR.CPN_TARGET = 'G260_12' /*브랜드*/ THEN (SELECT BRAND_KNM FROM TB_BRAND WHERE BRAND_CD = CR.REF_VAL AND USE_YN = 'Y')
+		                WHEN CR.CPN_TARGET = 'G260_13' /*업체*/ THEN (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY WHERE SUPPLY_COMP_CD = CR.REF_VAL AND USE_YN = 'Y' AND SUPPLY_STAT = 'G010_30')
+		           END AS REF_VAL
+		         , RANK() OVER(PARTITION BY CR.CPN_ID, CR.CPN_TARGET ORDER BY REF_VAL) AS RK
+		    FROM   TB_COUPON_REFVAL CR
+		    WHERE  CR.CPN_TARGET != 'G260_14' /*제외상품아닌넘*/
+		    AND    CR.CPN_ID = (
+		                        SELECT GRADE_CPN_ID1
+		                        FROM   TB_CUST_GRADE_POLICY
+		                        WHERE  GRADE_CD = #{custGrade}
+		                        AND    USE_YN = 'Y'
+                                )
+		)
+		, TAB_COUPON_REFVAL2 AS (
+		    SELECT CPN_ID
+		         , CPN_TARGET
+		         , GROUP_CONCAT(REF_VAL ORDER BY RK ASC SEPARATOR '/' ) AS REF_VAL
+		         , (SELECT COUNT(*)
+		            FROM   TAB_COUPON_REFVAL1
+		            WHERE  CPN_ID = CR.CPN_ID
+		            AND    CPN_TARGET = CR.CPN_TARGET)                  AS CNT
+		    FROM   TAB_COUPON_REFVAL1 CR
+		    WHERE  1 = 1
+		    AND    (
+		            (CPN_TARGET != 'G260_12' AND RK = 1) /*브랜드 외는 1개만 노출*/
+		            OR
+		            (CPN_TARGET = 'G260_12' AND RK <![CDATA[<=]]> 2) /*브랜드만 2개 노출*/
+		           )
+		    GROUP  BY CPN_ID, CPN_TARGET
+		)
 		SELECT CP.CPN_ID
 		     , CP.END_ALIM_YN
 		     , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
 		            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
 		            WHEN #{frontGb} = 'A' THEN CP.DC_AVAL
 		            ELSE CP.DC_AVAL                                              END AS DC_VAL
+		     , CASE WHEN CP.DC_WAY = 'G240_10' THEN '원'
+		            ELSE '%'
+		       END                                                                   AS DC_WAY
 		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S')
-		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%m%d%H%i%S')              END AS AVAIL_STDT
+		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%m%d%H%i%S')                END AS AVAIL_STDT
 		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(CONCAT(CURRENT_DATE + INTERVAL CP.AVAIL_DAYS DAY, ' 23:59:59'), '%Y%m%d%H%i%S')
-		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%m%d%H%i%S')             END AS AVAIL_EDDT
+		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%m%d%H%i%S')               END AS AVAIL_EDDT
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y.%m.%d %H:%i')
+		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y.%m.%d %H:%i')              END AS AVAIL_STDT_TIME
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(CONCAT(CURRENT_DATE + INTERVAL CP.AVAIL_DAYS DAY, ' 23:59:59'), '%Y.%m.%d %H:%i')
+		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y.%m.%d %H:%i')             END AS AVAIL_EDDT_TIME
 		     , CP.CPN_NM
+		     , CONCAT(CASE WHEN CP.BUY_LIMIT_AMT = 0 THEN ''
+		                    ELSE CONCAT(FORMAT(CP.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		              END
+		             ,CASE WHEN CP.MAX_DC_AMT = 0 THEN ''
+		                   ELSE CONCAT('최대 ',FORMAT(CP.MAX_DC_AMT , 0),'원 할인')
+		              END
+		             )                                                                     AS USE_CONDITION
+		     , CASE WHEN CP.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		            ELSE CONCAT('1인당 최대',CP.CUST_PUB_LIMIT_QTY,'매')
+		       END                                                                         AS ISSUE_CONDITION
+		     , CONCAT(CR.REF_VAL, CASE WHEN CR.CPN_TARGET = 'G260_10' AND CR.CNT > 1 THEN ' 외'
+		                               WHEN CR.CPN_TARGET = 'G260_11' AND CR.CNT > 1 THEN ' 외'
+		                               WHEN CR.CPN_TARGET = 'G260_12' AND CR.CNT > 2 THEN ' 외'
+		                               WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
+		                               ELSE ''
+		                          END)                                                     AS TGT_CONDITION
 		FROM  TB_CUST_GRADE_POLICY CGP
 		INNER JOIN
 		      TB_COUPON CP
 		ON    CGP.GRADE_CPN_ID1 = CP.CPN_ID
+		INNER JOIN
+		      TAB_COUPON_REFVAL2 CR
+		ON    CP.CPN_ID = CR.CPN_ID
 		WHERE CGP.GRADE_CD = #{custGrade}
 		AND   CP.SITE_CD = #{siteCd}
+		AND   CGP.USE_YN = 'Y'
 	</select>
 	
 	<!--상품 쿠폰 조회-->

+ 1 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1538,14 +1538,7 @@
 		    </otherwise>
 		</choose>
 		<if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
-		    <choose>
-		        <when test="pageGb == 'BEST' and pageable.endRow >= 100">
-		    LIMIT 100
-		        </when>
-		        <otherwise>
-		    LIMIT #{pageable.limitStartRow} , #{pageable.pageSize}
-		        </otherwise>
-		    </choose>
+			LIMIT #{pageable.limitStartRow} , #{pageable.pageSize}
 		</if>
 		<if test="maxRow != null and maxRow !=''">
 		    LIMIT #{maxRow}

+ 3 - 2
src/main/webapp/WEB-INF/views/mob/SigninFormMob.html

@@ -201,13 +201,14 @@
 		}
 		// 비밀번호 틀린 경우
 		if (!gagajf.isNull(result.message)) {
-			grecaptcha.reset(); // 리캡챠 리셋
 			let loginFailCnt = Number(result.loginFailInfo.loginFailCnt);
 			$("#err_msg").html(result.message);
 			$("#login_fail_cnt").html(loginFailCnt);
 			$("#login_remain_cnt").html(10 - loginFailCnt);
 			$(".t_err_login_fail").show();
-
+			if (loginFailCnt >= 5) {
+				grecaptcha.reset();
+			}
 			// 비밀번호 5회 이상 틀린 경우 캡챠 노출
 			if (loginFailCnt >= 5 && loginFailCnt < 10) {
 				$('#recaptcha').show();

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html

@@ -61,7 +61,7 @@
 	</div>
 
 	<!-- 210510_추가 : 띠배너 추가. -->
-	<div class="bnrtype_banner" id="divTopbanner">
+	<div class="bnrtype_banner" id="divTopbanner" style="display:none;">
 <!--		<a href="javascript:;" target="">-->
 <!--			&lt;!&ndash; 텍스트 영역 &ndash;&gt;-->
 <!--			<div>-->

+ 1 - 0
src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html

@@ -241,6 +241,7 @@
 		let goodsIdx = 0;
 
 		$target.each(function(){
+			params = [];
 			goodsIdx ++;
 			if ($(this).hasClass('unable')) {
 

+ 3 - 0
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -791,6 +791,9 @@
 		}
 		// 컨텐츠 호출
 		$(document).ready(function() {
+			// 몰메인 띠배너 표출
+			$("#divTopbanner").show();
+
 			setHtop();
 			let randomNum = Math.floor( ( Math.random() * 4 ) );
 			$(".it_nav .btn").eq(randomNum).trigger('click');

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

@@ -928,12 +928,16 @@
 						
 						let allCate = [[${allCateList}]];
 						$.each(result, function(idx, item) {
-							if (item.contentsType == 'C' || item.contentsType == 'O') { // 컨텐츠유형:카테고리, 아울렛
+							if (item.contentsType == 'C' ) { // 컨텐츠유형:카테고리, 아울렛
 								$.each(allCate, function(allCateIdx, allCateItem) {
 									if (item.cate1No == allCateItem.cate1No) {
 										$('#ulQuickMenuCate').append(fnGetQuickMenuCategory(allCateItem));
 									}
 								});
+							}else if(item.contentsType == 'O'){
+								// $('#ulQuickMenuCate').append('<li><a href="' + item.linkUrl + '"><span>' + item.gtabNm + '</span></a></li>');
+								let outletCate = fnGetQuickOutletCategory(item.gtabNm);
+								$('#ulQuickMenuCate').append(outletCate);
 							} else if (item.contentsType == 'L') { // 컨텐츠유형:링크
 								$('#ulQuickMenuCate').append('<li><a href="' + item.linkUrl + '"><span>' + item.gtabNm + '</span></a></li>');
 							}
@@ -942,6 +946,27 @@
 				}
 			});
 	}
+
+	// 퀵 아울렛
+	let fnGetQuickOutletCategory = function (outletNm){
+		let formalGb = 'G009_20';
+		let cateGb = 'G032_101';
+		var tag = '';
+
+		tag += '<li class="has_children">\n';
+		tag += '<a href="javascript:void(0);"><span>'+outletNm+'</span></a>\n';
+		tag += '<ul class="quick_depth">\n';
+		tag += '<li><a href="javascript:void(0);" onclick="cfnGoToOutletMain(\'G032_103\');"><span>메인</span></a></li>\n';
+		tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cateGb + '\',\'\',\'\',\'\',\'\',\'\',\'' + formalGb + '\');"><span>전체</span></a></li>\n';
+		let allCate = [[${allCateList}]];
+		$.each(allCate, function(allCateIdx, allCateItem) {
+			tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + allCateItem.cateGb + '\',' + allCateItem.cate1No + ',\'\',\'\',\'\',\'\',\'' + formalGb + '\');"><span>' + allCateItem.cate1Nm + '</span></a></li>\n';
+		});
+		tag += '</ul>\n';
+		tag += '</li>\n';
+
+		return tag;
+	}
 	
 	// 최근본상품
 	let fnGetRecentlyGoods = function() {

+ 3 - 2
src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html

@@ -24,7 +24,7 @@
 	<div class="breadcrumb"> 
 		<ul>
 			<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
-			<li class="bread_2depth cate1Nm">여성1</li>
+			<li class="bread_2depth cateMainNm">여성1</li>
 		</ul> 
 	</div>
 
@@ -241,7 +241,8 @@
 					});
 				}
 				$('.dp_cate_list').html(tag);
-				$('.cate1Nm').html(cate1.cate1Nm+'메인');
+				$('.cateMainNm').html(cate1.cate1Nm+'메인');
+				$('.cate1Nm').html(cate1.cate1Nm);
 			}
 		});
 	}

+ 1 - 0
src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html

@@ -248,6 +248,7 @@
 		let goodsIdx = 0;
 		
 		$target.each(function(){
+			params = [];
 			goodsIdx ++;
 			if ($(this).find('.item_state').hasClass('soldout')) {
 				

+ 12 - 7
src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html

@@ -36,7 +36,7 @@
 								<fieldset>
 									<legend>결과 내 재검색</legend>
 									<input type="text" id="search" name="search" value="티비제이 제기장 스웨터" placeholder="" class="search_input" title="검색어 입력" maxlength="100">
-									<button type="button" class="sch_btn"><span>검색</span></button>
+									<button type="button" class="sch_btn" onclick="fnSearchData();"><span>검색</span></button>
 								</fieldset>
 							</form>
 							<div class="autokeyword">
@@ -77,7 +77,7 @@
 						</div>
 					</div>
 					<!-- 결과내 재검색 결과 없을 시 노출 -->
-					<div class="nodata">
+					<div class="nodata" style="display: none;">
 						<div class="txt_box">
 							<p>
 								<span>‘티비제이 제기장 스웨터’</span>대한<br>
@@ -103,7 +103,7 @@
 					<!-- 검색결과 : 상품 -->
 					<div class="sch_result_cont" style="display:block;">
 						<!-- 통합 상품 검색결과 없을 시 노출 -->
-						<div class="nodata">
+						<div class="nodata" style="display:none;">
 							<div class="txt_box">
 								<p>
 									<span>‘티비제이 제기장 스웨터’</span> 에 대한 상품 검색결과가 없습니다.
@@ -112,7 +112,7 @@
 						</div>
 						<!-- //통합 상품 검색결과 없을 시 노출 -->
 						<!-- 추천상품 노출 -->
-						<div class="sch_recommend">
+						<div class="sch_recommend" style="display:none;">
 							<h3>이런 상품은 어떤가요?</h3>
 							<div class="itemsGrp">
 								<div class="item_prod">
@@ -921,7 +921,7 @@
 								</div>
 								<div class="area_list">
 									<!-- 검색필터 결과 없을 시 노출 -->
-									<div class="nodata">
+									<div class="nodata" style="display:none;">
 										<div class="txt_box">
 											<p>
 												선택하신 조건에 맞는 상품이 없습니다. <br>
@@ -1300,7 +1300,7 @@
 					<!-- 검색결과 : 기획전 -->
 					<div class="sch_result_cont">
 						<!-- 기획전 검색결과 없을 시 노출 -->
-						<div class="nodata">
+						<div class="nodata" style="display:none;">
 							<div class="txt_box">
 								<p>
 									<span>‘티비제이 제기장 스웨터’</span> 에 대한 기획전 검색결과가 없습니다.
@@ -1539,7 +1539,7 @@
 					<!-- 검색결과 : 이벤트 -->
 					<div class="sch_result_cont">
 						<!-- 이벤트 검색결과 없을 시 노출 -->
-						<div class="nodata">
+						<div class="nodata" style="display:none;">
 							<div class="txt_box">
 								<p>
 									<span>‘티비제이 제기장 스웨터’</span> 에 대한 이벤트 검색결과가 없습니다.
@@ -1779,6 +1779,11 @@
 				});
 			}
 		}
+
+		// 검색
+		let fnSearchData = function (){
+
+		}
 	</script>
 
 </th:block>