瀏覽代碼

Merge branch 'sowon' into develop

sowon4187 5 年之前
父節點
當前提交
3db6389bfb

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

@@ -442,4 +442,24 @@ public interface TsfPlanningDao {
 	 */
 	Collection<Plan> getCustomerGradeAccessibleList(Plan plan);
 	
+	/**
+	 * 기획전/이벤트 비회원 접근 조회
+	 *
+	 * @param Plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 5. 4
+	 */
+	int getNonmemberGradeAccessible(Plan plan);
+	
+	/**
+	 * 기획전/이벤트 접근 프론트 구분
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 22
+	 */
+	String getFrontAccessibleList(Plan plan);
+	
 }

+ 1 - 1
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -495,7 +495,7 @@ public class TsfCouponService {
 	 *
 	 * @param coupon
 	 * @return Collection<Coupon>
-	 * @author card007
+	 * @author sowon
 	 * @since 2021.02.25
 	 */
 	@Transactional("shopTxnManager")

+ 20 - 8
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -124,20 +124,16 @@ public class TsfPlanningService {
 
 		Plan plan = new Plan();
 		plan.setPlanSq(planSq);
-		
-		// 비회원일 때
-		if (!TsfSession.isLogin()) {
-			msg = "로그인 후 접근 가능합니다.";
-		}
 
 		// 디바이스접근가능여부 조회
 		plan.setFrontGb(TsfSession.getFrontGb());
 		if ("N".equals(planningDao.getDeviceAccessibleYn(plan))) {
-			msg = "PC웹에서만 접근이 가능합니다.";
+			String frontGb = planningDao.getFrontAccessibleList(plan);
+			msg = frontGb + "에서만 접근이 가능합니다.";
 			if ("M".equals(TsfSession.getFrontGb())) {
-				msg = "모바일웹에서만 접근이 가능합니다.";
+				msg =  frontGb + "에서만 접근이 가능합니다.";
 			} else if ("A".equals(TsfSession.getFrontGb())) {
-				msg = "에서만 접근이 가능합니다.";
+				msg =  frontGb + "에서만 접근이 가능합니다.";
 			}
 		}
 
@@ -146,6 +142,12 @@ public class TsfPlanningService {
 			msg = "신규회원만 접근 가능합니다.";
 		}
 		
+		if (!TsfSession.isLogin()) {
+			if (planningDao.getNonmemberGradeAccessible(plan) > 0) {
+				msg = "로그인 후 이용 가능합니다.";
+			}
+		}
+		
 		if (TsfSession.isLogin()) {
 			// 고객구분접근가능여부 조회
 			plan.setCustGb(TsfSession.getCustGb());
@@ -637,4 +639,14 @@ public class TsfPlanningService {
 	public Collection<Plan> getEntryReplyAttachList(Plan plan){
 		return planningDao.getEntryReplyAttachList(plan);
 	}
+	
+	/**
+	 * 기획전/이벤트 비회원 접근 조회
+	 *
+	 * @param Plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 5. 4
+	 */
+	
 }

+ 4 - 0
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -166,6 +166,8 @@ public class TsfPlanningController extends TsfBaseController {
 		plan.setPlanSq(plan.getPlanSq());
 		review.setPlanSq(plan.getPlanSq());
 		coupon.setPlanSq(plan.getPlanSq());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		coupon.setFrontGb(TsfSession.getFrontGb());
 		plan.setFrontGb(TsfSession.getFrontGb());
 
 		Plan planInfo = planningService.getPlanDetailInfo(plan);
@@ -374,8 +376,10 @@ public class TsfPlanningController extends TsfBaseController {
 
 		if (count == 0) {
 			result.set("message", message.getMessage("COUPON_0002"));
+			result.set("cpnId", coupon.getCpnId());
 		} else {
 			result.set("message", message.getMessage("COUPON_0001", new Object[] {count}));
+			result.set("cpnId", coupon.getCpnId());
 		}
 
 		return result;

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

@@ -1327,7 +1327,7 @@
 		AND (CASE WHEN 'P' = 'P' THEN C.DC_PVAL
 		         WHEN 'M' = 'P' THEN C.DC_MVAL
 		     ELSE C.DC_AVAL END) > 0                  -- PC, MOBILE,APP 별로 0 보다 큰 쿠폰
-		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO= #{custNo}) -- 총발행제한수
+		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID) -- 총발행제한수
 		AND IF (C.CUST_PUB_LIMIT_QTY = 0, 9999999999,C.CUST_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO= #{custNo}) -- 고객당발행제한수량
 		AND (SELECT COUNT(1)
 		     FROM TB_COUPON_CUST_GBN

+ 80 - 60
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -399,6 +399,29 @@
 		WHERE PLAN_SQ = #{planSq}
 	</select>
 	
+		<!-- 고객등급접근가능리스트 -->
+	<select id="getFrontAccessibleList" parameterType="Plan" resultType="String">
+		/* TsfPlanning.getFrontAccessibleList */
+		SELECT CASE FRONT_GB WHEN 'P'     THEN 'PC웹'
+		                     WHEN 'P|M'   THEN 'PC웹, 모바일웹'
+		                     WHEN 'P|M|A' THEN 'PC웹, 모바일웹, 모바일앱'
+		                     WHEN 'M'     THEN '모바일웹'
+		                     WHEN 'M|A'   THEN '모바일웹, 모바일앱'
+		                     WHEN 'A'     THEN '모바일앱'
+		                     WHEN 'P|A'   THEN 'PC웹, 모바일앱'
+		                     END AS FRONT_GB 
+		FROM tb_plan  
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
+		<!-- 비회원 접근 조회 -->
+	<select id="getNonmemberGradeAccessible" parameterType="Plan" resultType="int">
+		/* TsfPlanning.getCustomerGubunAccessibleYn */
+		SELECT count(*)
+		FROM TB_PLAN_CUST_GRADE 
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
 	<!-- 고객등급접근가능여부 조회 -->
 	<select id="getCustomerGradeAccessibleYn" parameterType="Plan" resultType="String">
 		/* TsfPlanning.getCustomerGradeAccessibleYn */
@@ -729,67 +752,64 @@
 	
 	<select id="getPlanCouponInfo" parameterType="Coupon" resultType="Coupon">
 		/* TsfPlanning.getPlanCouponInfo*/
-		SELECT F.*
-		<if test="planSq != null and planSq != ''">
-		      ,(CASE F.CPN_ID WHEN (SELECT CPN_ID FROM TB_CUST_COUPON C WHERE C.CPN_ID = F.CPN_ID AND CUST_NO = #{custNo})THEN '받기완료'
-		        ELSE '쿠폰받기' END ) AS COUPON_STAT
+		SELECT C.CPN_ID 
+		      ,C.CPN_NM 
+		      ,C.CPN_DESC       
+		      ,C.CPN_TYPE 
+		      ,C.BUY_LIMIT_AMT 
+		      ,C.CUST_PUB_LIMIT_QTY 
+		      ,C.TOT_PUB_LIMIT_QTY
+		      ,C.MAX_DC_AMT 
+		      ,PC.NOTE 
+		      ,PC.TITLE
+		      , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		              END
+		             ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                   ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		              END)     AS USE_CONDITION  /*사용조건*/
+		     , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		            ELSE CONCAT('1인 최대 ',C.CUST_PUB_LIMIT_QTY,'매')
+		       END             AS ISSUE_CONDITION /*발급수량*/
+		      ,CASE WHEN  #{frontGb} = 'P' THEN C.DC_PVAL
+		            WHEN  #{frontGb} = 'M' THEN C.DC_MVAL
+		            WHEN  #{frontGb} = 'A' THEN C.DC_AVAL
+		            ELSE C.DC_AVAL
+		            END                                       AS DC_VAL
+		      ,CASE WHEN C.DC_WAY = 'G240_10' THEN '원'
+		                    ELSE '%'
+		                    END                                      AS DC_WAY    /*할인방법*/
+		      ,C.PD_GB 
+		      ,IF (C.PD_GB = 'D', NOW(), C.AVAIL_STDT) AS AVAIL_STDT
+		      ,IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT) AS AVAIL_EDDT
+		      ,(CASE WHEN CC.CPN_ID IS NULL THEN '쿠폰받기' ELSE '받기완료' END ) AS COUPON_STAT
+		FROM TB_PLAN_CONTENTS PC 
+		                 INNER JOIN TB_PLAN_CONTENTS_ITEM PCI ON PC.PLAN_CONT_SQ = PCI.PLAN_CONT_SQ 
+		                 INNER JOIN TB_COUPON C ON PCI.ITEM_VAL = C.CPN_ID 
+		                 LEFT JOIN TB_CUST_COUPON CC ON C.CPN_ID = CC.CPN_ID 
+		WHERE 1=1
+		AND C.CPN_STAT = 'G232_11'
+		AND C.SITE_CD = #{siteCd}
+		AND C.DOWN_ABL_YN  = 'N'
+		AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
+		AND NOW()   <![CDATA[<=]]>  IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
+		AND (CASE WHEN 'P' = 'P' THEN C.DC_PVAL
+		         WHEN 'M' = 'P' THEN C.DC_MVAL
+		     ELSE C.DC_AVAL END) > 0                  -- PC, MOBILE,APP 별로 0 보다 큰 쿠폰
+		AND PC.PLAN_SQ = #{planSq}
+		AND PC.DISP_YN ='Y'
+		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID) -- 총발행제한수
+		<if test="custNo != null and custNo > 0">
+		AND IF (C.CUST_PUB_LIMIT_QTY = 0, 9999999999,C.CUST_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO=  #{custNo}) -- 고객당발행제한수량
 		</if>
-		FROM
-		(
-			SELECT  PC.PLAN_CONT_SQ 
-				  , PC.PLAN_SQ 
-				  , PC.TMPL_TYPE 
-				  , PC.TITLE 
-				  , PC.LINK_URL
-				  , PC.NOTE 
-				  , PCI.ITEM_VAL
-				  , PCI.DISP_ORD
-				  , TC.CPN_ID
-				  , TC.CPN_NM
-				  , TC.CPN_DESC
-				  , TC.SITE_CD
-				  , TC.AF_LINK_CD
-				  , TC.CPN_TYPE
-				  , TC.APPLY_SCOPE
-				  ,(CASE TC.DC_WAY WHEN 'G240_10' THEN '할인금액' 
-				 				   WHEN 'G240_11' THEN '할인율' END) AS DC_WAY 
-				  , TC.DC_PVAL
-				  , TC.DC_MVAL
-				  , TC.DC_AVAL
-				  , TC.MAX_DC_AMT
-				  , TC.PD_GB, AVAIL_STDT
-				  , TC.AVAIL_EDDT
-				  , TC.AVAIL_DAYS
-				  , TC.CUST_PUB_LIMIT_QTY
-				  , TC.TOT_PUB_LIMIT_QTY
-				  , TC.ONE_PUB_QTY
-				  , TC.DN_GB
-				  , TC.DOWN_STDT
-				  , TC.DOWN_EDDT
-				  , TC.BUY_LIMIT_AMT
-				  , TC.REISSUANCE
-				  , TC.CPN_STAT
-				  , TC.END_ALIM_YN
-				  , TC.FIRST_ORD_YN
-				  , TC.DOWN_ABL_YN
-				  , TC.DC_CD_GB
-				  , TC.CUST_JOIN_STDT
-				  , TC.CUST_JOIN_EDDT
-				  , TC.BUY_STDT
-				  , TC.BUY_EDDT
-				  , TC.NEW_CUST_YN
-			FROM TB_PLAN_CONTENTS PC INNER JOIN TB_PLAN_CONTENTS_ITEM PCI ON PC.PLAN_CONT_SQ = PCI.PLAN_CONT_SQ 
-			  						 INNER JOIN TB_COUPON TC ON PCI.ITEM_VAL = TC.CPN_ID 
-			WHERE 1=1 
-			<if test="planSq != null and planSq != ''">
-				AND PC.PLAN_SQ = #{planSq}
-			</if>
-				AND PC.TMPL_TYPE = 'G082_20'
-				AND PC.DISP_YN ='Y'
-				AND NOW() BETWEEN TC.AVAIL_STDT AND TC.AVAIL_EDDT
-				AND NOW() BETWEEN TC.DOWN_STDT AND TC.DOWN_EDDT 
-		)F
- 
+		GROUP BY    C.CPN_ID 
+		           ,C.CPN_NM 
+		           ,C.CPN_DESC       
+		           ,C.CPN_TYPE 
+		           ,C.BUY_LIMIT_AMT 
+		           ,C.CUST_PUB_LIMIT_QTY 
+		           ,C.TOT_PUB_LIMIT_QTY
+		           ,C.MAX_DC_AMT
 	</select>
 	
 	<select id="getPlanImageInfo" parameterType="Plan" resultType="Plan">

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -170,7 +170,7 @@
 				html += '							<span class="title sr-only">주문 옵션</span>                                                      ';
 				if (item.goodsType =='G056_S') {
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option + ' / ' + item.optCd2Arr[index2] + '</span>\n';
+						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option + '</span>\n';
 					})
 				}else{
 					html += '							<span class="option">'+item.colorNm+'</span>     ';
@@ -234,7 +234,7 @@
 				html+='								<span class="title sr-only">주문 옵션</span>';
 				if (item.goodsType =='G056_S') {
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option + ' / ' + item.optCd2Arr[index2] + '</span>\n';
+						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option +'</span>\n';
 					})
 				}else{
 					html += '							<span class="option">'+item.colorNm+'</span>     ';

+ 13 - 27
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -674,36 +674,22 @@ if(coupon.length>0){
 		html += '					<div>';
 		html += '						<p class="cp_name">'+item.cpnNm+'</p>';
 		html += '						<p class="cp_cont">';
-		if (item.dcWay == '할인율') {
-			html += '							<span> <span><em>'+item.dcPval+'%</em></span>';
-		}else{
-			html += '							<span><em>'+item.dcPval.addComma()+'</em>원</span>'; 
-		}
+		html += '							<span><em>'+item.dcVal+'</em>'+item.dcWay+'</span>';
 		html += '						</p>';
-		html += '						<p class="cp_condition">'+item.buyLimitAmt.addComma()+'원 이상 구매 시 최대 ' +item.maxDcAmt.addComma()+'원 할인';
-
-		if (item.custPubLimitQty != 0) {
-			html += '								<span>1인 최대 '+item.custPubLimitQty+'장</span>';	
-		}
+		html += '						<p class="cp_condition">'+item.useCondition;
+		html += '								<span>'+item.issueCondition+'</span>';	
 		html += '						</p>';
 		html += '					</div>';
-		if(typeof item.couponStat != 'undefined'){
-			if (item.couponStat == '쿠폰받기') {
-				html += '					<button type="button" id="coupon_" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">';  /* btn_coupon_done */
-				html += '						<span>쿠폰받기</span>';								/* 받기완료  */
-				html += '					</button>';			
-			}else{
-				html += '					<button type="button"';
-				html += '						class="btn btn_dark btn_block btn_coupon_done" disabled>';  
-				html += '						<span>받기완료</span>';								
-				html += '					</button>';			
-			}
-		}else{
-			html += '					<button type="button" id="coupon_" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">';  /* btn_coupon_done */
+		if (item.couponStat == '쿠폰받기') {
+			html += '					<button type="button" id="coupon_'+item.cpnId+'" class="btn btn_dark btn_block btn_coupon_down" onclick="fnPlanCouponDown('+item.cpnId+')">';  /* btn_coupon_done */
 			html += '						<span>쿠폰받기</span>';								/* 받기완료  */
-			html += '					</button>';		
+			html += '					</button>';			
+		}else{
+			html += '					<button type="button"';
+			html += '						class="btn btn_dark btn_block btn_coupon_done" disabled>';  
+			html += '						<span>받기완료</span>';								
+			html += '					</button>';			
 		}
-		
 		html += '				</div>';
 		html += '				<button type="button" class="btn_underline"	id="btn_couponInfo_pop" onclick="useInfoCoupon('+item.cpnId+')">';
 		html += '					<span>사용안내</span>';
@@ -771,8 +757,8 @@ var fnPlanCouponDown = function(obj){
 
 // 쿠폰다운로드 콜백
 var fnPlanCouponCallBack = function(result){
-	
-	// 화면 전환 필요		
+	$('#coupon_'+ result.cpnId).html('<span>받기완료</span>');
+	$('#coupon_'+ result.cpnId).attr('disabled', true);
 }
 
 // 설문조사 참여 버튼 클릭