Procházet zdrojové kódy

Merge branch 'sowon' into develop

sowon4187 před 5 roky
rodič
revize
675a925c9c

+ 9 - 1
src/main/java/com/style24/front/biz/dao/TsfCouponDao.java

@@ -156,7 +156,15 @@ public interface TsfCouponDao {
 	 */
 	CustCoupon getAttendCouponInfo(CustCoupon coupon);
 	
-	
+	/**
+	 * 퀵메뉴 다운가능 쿠폰 리스트
+	 * 
+	 * @param coupon
+	 * @return Collection<Coupon>
+	 * @author sowon
+	 * @since 2021.04.23
+	 */
+	Collection<Coupon> getQuickCouponDownList(Coupon coupon);
 	
 	
 }

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

@@ -720,5 +720,70 @@ public class TsfCouponService {
 		return couponDao.getAttendCouponInfo(coupon);
 	}
 	
+	
+	/**
+	 * 퀵메뉴 다운가능 쿠폰 리스트
+	 * 
+	 * @param coupon
+	 * @return Collection<Coupon>
+	 * @author sowon
+	 * @since 2021.04.23
+	 */
+	public Collection<Coupon> getQuickCouponDownList(Coupon coupon){
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setCustGb(TsfSession.getCustGb());
+		coupon.setCustNo(TsfSession.getInfo().getCustNo());
+		coupon.setCustGrade(TsfSession.getInfo().getCustGrade());
+		return couponDao.getQuickCouponDownList(coupon);
+	}
+	
+	/**
+	 * 퀵메뉴 쿠폰 다운
+	 *
+	 * @param coupon - 쿠폰 아이디, 고객번호
+	 * @return int - 결과
+	 * @author sowon
+	 * @since 2021.04.23
+	 */
+	@Transactional("shopTxnManager")
+	public String saveQuickCoupon(Coupon coupon) {
+		//String result = "SUCESS";
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		coupon.setCustGb(TsfSession.getCustGb());
+		coupon.setCustNo(TsfSession.getInfo().getCustNo());
+		coupon.setCustGrade(TsfSession.getInfo().getCustGrade());
+		Collection<Coupon> quickCouponList = couponDao.getQuickCouponDownList(coupon);
+		
+		String result = "SUCESS";
+
+		if (quickCouponList == null || quickCouponList.isEmpty()) {
+			result = "ERROR_10";
+			return result;
+		}
+		
+		int count = 0;
+		if (coupon.getCpnId() > 0) {
+			for (Coupon quickCoupon : quickCouponList) {
+				if (quickCoupon != null) {
+					CustCoupon custCoupon = new CustCoupon();
+					custCoupon.setCustNo(coupon.getCustNo());
+					custCoupon.setCpnId(quickCoupon.getCpnId());
+					custCoupon.setAvailStdt(quickCoupon.getAvailStdt());
+					custCoupon.setAvailEddt(quickCoupon.getAvailEddt());
+					custCoupon.setPubReason(TscConstants.PubReason.DOWNLOAD.value());
+					custCoupon.setEndAlimSendYn("N");		// 알림 발송 여부(발송되면 Y)
+					custCoupon.setUpdNo(coupon.getCustNo());
+					custCoupon.setRegNo(coupon.getCustNo());
+					coreCouponDao.saveCouponCustPub(custCoupon);
+					count++;
+				}
+			}
+		}
+		//result = Integer.toString(count);	// 다운받은 쿠폰수
+
+		return result;
+	}
 
 }

+ 35 - 0
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1423,6 +1423,41 @@ public class TsfMypageController extends TsfBaseController {
 		ownCouponList  = couponService.getMypageCouponList(coupon);
 		return ownCouponList;
 	}
+	
+	/**
+	 * 퀵메뉴 다운가능한 쿠폰리스트
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 23
+	 */
+	@GetMapping("/quick/down/coupon/list")
+	@ResponseBody
+	public Collection<Coupon> getQuickDownCouponList() {
+		Coupon coupon = new Coupon();
+		Collection<Coupon> ownCouponList = couponService.getQuickCouponDownList(coupon);
+		return ownCouponList;
+	}
+	
+	/**
+	 * 퀵메뉴 쿠폰 다운
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 23
+	 */
+	@PostMapping("/quick/coupon/download")
+	@ResponseBody
+	public GagaMap downQuickCoupon(@RequestBody Coupon coupon) {
+		GagaMap result = new GagaMap();
+		String couponResult = couponService.saveQuickCoupon(coupon);
+		if ("ERROR_10".equals(couponResult)) {
+			result.set("message", "발급가능 쿠폰이 없습니다.");
+		}else {
+			result.set("message", "쿠폰이 발급되었습니다.");
+		}
+		result.set("status", "200");
+		return result;
+	}
+
 
 	/**
 	 * 마이페이지 쿠폰 상세보기 팝업

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

@@ -775,7 +775,7 @@
 		     , Z.AVAIL_EDDT                            /*유효종료일자*/
 		     , Z.CPN_CNT                               /*보유쿠폰수*/
 		     , Z.EXPIRE_YN                             /*만료여부*/
-		     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
+		 --     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
 		FROM
 		(
 		WITH TAB_COUPON AS (
@@ -813,9 +813,9 @@
 		                       END)                              AS EXPIRE_YN /*만료여부*/
 		            FROM   TB_CUST_COUPON CC
 		            WHERE  1 = 1
-		            <if test="planCouponStat == null and planCouponStat == ''">
+		          <!--   <if test="planCouponStat == null and planCouponStat == ''"> -->
 		            AND    CC.CUST_NO = #{custNo}
-		            </if>
+		            <!-- </if> -->
 		            AND    CC.USED_DT IS NULL /*사용하지않은쿠폰만*/
 		            AND    CC.AVAIL_EDDT >= DATE_ADD(NOW(), INTERVAL -3 MONTH) /*최근3개월쿠폰만*/
 		            GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
@@ -1099,5 +1099,64 @@
 		AND   CP.SITE_CD = #{siteCd}
 		AND   CP.CPN_STAT = 'G232_11'
 	</select>
+	
+	<select id="getQuickCouponDownList"  parameterType="Coupon" resultType="Coupon">
+		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 
+		      , 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
+		FROM TB_COUPON C
+		WHERE 1=1
+		AND C.CPN_STAT = 'G232_11'
+		<if test="cpnId != null and cpnId != ''">
+		AND    C.CPN_ID = #{cpnId}
+		</if>
+		AND C.SITE_CD = #{siteCd}
+		AND C.CPN_TYPE IN ('G230_20','G230_30')
+		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 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.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
+		     WHERE CPN_ID = C.CPN_ID
+		     AND USABLE_CUST_GB IN (#{custGb})              -- 사용가능고객구분
+		     ) <![CDATA[>=]]> 1
+		AND (SELECT COUNT(1)
+		     FROM TB_COUPON_CUST_GRADE
+		     WHERE CPN_ID = C.CPN_ID
+		     AND USABLE_CUST_GRADE IN (#{custGrade})              -- 사용가능고객구분
+		     ) <![CDATA[>=]]> 1
+		ORDER BY  C.AVAIL_EDDT,
+		CASE WHEN DC_WAY LIKE '%' THEN DC_VAL END DESC LIMIT 10
+	</select>
 
 </mapper>

+ 69 - 4
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1248,7 +1248,48 @@
 			$('#couponList').addClass('need_login');
 			return false;
 		}else{
-			
+			$.getJSON('/mypage/quick/down/coupon/list'
+					, function(result, status) {
+						if (status == 'success'){ 
+							let tag = '';
+							if(result.length>0){
+								tag += '<ul class="coupon_list">';
+								$.each(result, function (idx, item) {
+									tag += '	<li>';
+									tag += '		<div class="coupon">';
+									tag += '			<div>';
+									tag += '				<p class="cp_name">'+item.cpnNm+'</p>';
+									tag += '				<p class="cp_cont">';
+									if (item.dcWay == '%') {
+										tag += '					<span><em>'+item.dcVal.addComma()+'</em>%</span>';
+									}else{
+										tag += '					<span><em>'+item.dcVal.addComma()+'</em>원</span>';
+									}
+									
+									
+									tag += '				</p>';
+									if(item.custPubLimitQty == 0){
+										tag += '				<p class="cp_condition">'+item.useCondition+'<span></span>';
+									}else{
+										tag += '				<p class="cp_condition">'+item.useCondition+'<span>1인 최대'+item.custPubLimitQty.addComma()+'장</span>';
+									}
+									
+									tag += '				</p>';
+									tag += '			</div>';
+									tag += '			<button type="button" class="btn btn_dark btn_block btn_coupon_down" onclick="fnQuickCouponDown('+item.cpnId+')"><span>쿠폰받기</span></button>';
+									tag += '		</div>';
+									tag += '	</li>';
+								});
+								tag += '</ul>';
+							}else{
+								tag += '<div class="no_item">';
+								tag += 	'다운 가능한 쿠폰이 없습니다.';
+								tag += '</div>';
+								
+							}
+							$('#issueCoupon').html(tag);
+						}
+				});
 		}
 	}
 	
@@ -1257,8 +1298,8 @@
 		$.getJSON('/mypage/quick/own/coupon/list'
 				, function(result, status) {
 					if (status == 'success') {
+						let tag = '';
 						if (result.length > 0) {
-							let tag = '';
 							tag += '<ul class="clear">';
 							$.each(result, function (idx, item) {
 								tag += '	<li>';
@@ -1286,14 +1327,38 @@
 							});
 							tag += '<ul>';
 							
-							$('#ownCoupon').html(tag);
 						} else {
-							$('#ownCoupon').addClass('nodata');
+							tag += '<div class="no_item">';
+							tag += 	'보유한 쿠폰이 없습니다.';
+							tag += '</div>';
 						}
+						
+						$('#ownCoupon').html(tag);
 					}
 			});
 	}
 	
+	//쿠폰 다운로드
+	var fnQuickCouponDown = function(obj){
+
+		if (!cfCheckLogin()) {
+			cfnGoToPage(_PAGE_LOGIN);
+			return false;
+		}
+		let cpnId = obj;
+		gagajf.ajaxJsonSubmit('/mypage/quick/coupon/download', JSON.stringify({cpnId: cpnId}), fnQuickCouponCallBack);
+	}
+
+	// 쿠폰다운로드 콜백
+	var fnQuickCouponCallBack = function(result){
+		if (result.status == "200"){
+			mcxDialog.alert(result.message);
+		}			
+		issueCouponBtn();
+		
+	}
+
+	
 	// 소유한 쿠폰 사용안내 모달
 	var useInfoCoupon = function (id) {
 		var data = {cpnId : id};