Przeglądaj źródła

이태영 - 20210503 배치 - 장바구니 만료 데이터 삭제

xodud1202 5 lat temu
rodzic
commit
c5776292b3

+ 35 - 0
src/main/java/com/style24/batch/biz/dao/TsbCartDao.java

@@ -0,0 +1,35 @@
+package com.style24.batch.biz.dao;
+
+import org.springframework.stereotype.Repository;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Order;
+
+/**
+ * 포인트 Dao
+ *
+ * @author jsshin
+ * @since 2021. 04. 22
+ */
+@ShopDs
+@Repository
+public interface TsbCartDao {
+
+	/**
+	 * 장바구니 기간 만료 데이터 삭제
+	 *
+	 * @param order
+	 * @author xodud1202
+	 * @since  2021. 05. 03
+	 */
+	int deleteCartExpriration(Order point);
+
+	/**
+	 * 장바구니 마스터 정보 없는 상세데이터 삭제
+	 *
+	 * @param order
+	 * @author xodud1202
+	 * @since  2021. 05. 03
+	 */
+	void deleteCartDetail();
+}

+ 78 - 0
src/main/java/com/style24/batch/biz/job/marketing/TsbCartExpirationJob.java

@@ -0,0 +1,78 @@
+package com.style24.batch.biz.job.marketing;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbCartService;
+import com.style24.batch.biz.service.TsbGoodsService;
+import com.style24.batch.biz.task.TsbMarketingTask;
+import com.style24.core.biz.dao.TscEnvsetDao;
+import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.Envset;
+import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.Order;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 장바구니 만료 정보 삭제
+ *
+ * @author xodud1202
+ * @since 2021. 05. 03
+ */
+@Component
+@Slf4j
+public class TsbCartExpirationJob extends TsbAbstractJob<Order, Order, Order> {
+
+	@Autowired
+	private TsbCartService cartService;
+
+	@Autowired
+	private TscEnvsetDao envsetDao;
+
+	private int succCnt = 0;
+	private int failCnt = 0;
+
+	@Override
+	public Order read() throws Exception {
+		Order order = new Order();
+		return order;
+	}
+
+	@Override
+	public Order process(Order param) throws Exception {
+		Envset env = new Envset();
+		int limitDays;
+
+		// 장바구니 보관 기간 조회
+		env.setEnvsetType("G11");
+		env.setSiteCd(TscConstants.Site.STYLE24.value());
+		env = envsetDao.getEnvset(env);
+
+		// 값이 없을 경우 삭제되어야함
+		if(!StringUtils.isEmpty(env.getStrSetVal1())) {
+			limitDays = Integer.parseInt(env.getStrSetVal1());
+		} else {
+			throw new IllegalArgumentException("장바구니 보관 기간이 존재하지 않습니다.");
+		}
+
+		param.setSaveLimitDay(limitDays);
+
+		return param;
+	}
+
+	@Override
+	public Order write(Order param) throws Exception {
+		succCnt = cartService.deleteCartExpriration(param);		// 장바구니 마스터 정보 삭제
+		cartService.deleteCartDetail();							// 장바구니 상세 정보 삭제
+		return param;
+	}
+
+	@Override
+	public void notify(Order param) throws Exception {
+		super.printResult(succCnt, failCnt);
+	}
+
+}

+ 48 - 0
src/main/java/com/style24/batch/biz/service/TsbCartService.java

@@ -0,0 +1,48 @@
+package com.style24.batch.biz.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.style24.batch.biz.dao.TsbCartDao;
+import com.style24.persistence.domain.Order;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 쇼핑백 Service
+ *
+ * @author xodud1202
+ * @since 2021. 05. 03
+ */
+@Service
+@Slf4j
+public class TsbCartService {
+
+	@Autowired
+	private TsbCartDao cartDao;
+
+	/**
+	 * 장바구니 만료 데이터 삭제
+	 *
+	 * @param param
+	 * @author xodud1202
+	 * @since  2021. 05. 03
+	 */
+	@Transactional("shopTxnManager")
+	public int deleteCartExpriration(Order param) {
+		return cartDao.deleteCartExpriration(param);
+	}
+
+	/**
+	 * 장바구니 마스터 정보 없는 상세데이터 삭제
+	 *
+	 * @param order
+	 * @author xodud1202
+	 * @since  2021. 05. 03
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteCartDetail() {
+		cartDao.deleteCartDetail();
+	}
+}

+ 17 - 0
src/main/java/com/style24/batch/biz/task/TsbMarketingTask.java

@@ -6,6 +6,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import com.style24.batch.biz.job.marketing.TsbAutoBuyConfirmJob;
+import com.style24.batch.biz.job.marketing.TsbCartExpirationJob;
 import com.style24.batch.biz.job.marketing.TsbExpirePointJob;
 
 import lombok.extern.slf4j.Slf4j;
@@ -22,6 +23,9 @@ public class TsbMarketingTask {
 
 	@Autowired
 	private TsbAutoBuyConfirmJob autoBuyConfirmJob;
+
+	@Autowired
+	private TsbCartExpirationJob cartExpirationJob;
 	
 	@Autowired
 	private TsbExpirePointJob expirePointJob;
@@ -53,4 +57,17 @@ public class TsbMarketingTask {
 		expirePointJob.runById("cron.marketing.expire.point");
 	}
 
+	/**
+	 * 장바구니 30일 초과 만료 데이터 삭제
+	 *
+	 * @throws Exception - 예외처리
+	 * @author xodud1202
+	 * @since 2021. 05. 03
+	 */
+	@Scheduled(cron = "${cron.marketing.cart.expiration}")
+	//@Scheduled(fixedDelay=360000)
+	@Async
+	public void expireCartExpirationJob() throws Exception {
+		cartExpirationJob.runById("cron.marketing.cart.expiration");
+	}
 }

+ 20 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsbCart.xml

@@ -0,0 +1,20 @@
+<?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.batch.biz.dao.TsbCartDao">
+
+	<!-- 자동구매확정 포인트 전환 대상 -->
+	<delete id="deleteCartExpriration" parameterType="Order">
+		/* TsbCart.deleteCartExpriration : 자동구매확정 포인트 전환 대상 */
+		DELETE FROM TB_CART CA
+		WHERE  1=1
+		AND    CA.REG_DT <![CDATA[ < ]]> CAST(ADDDATE(NOW(), INTERVAL -${saveLimitDay} DAY) AS DATE)
+	</delete>
+
+	<!-- 장바구니 마스터 정보 없는 상세데이터 삭제 -->
+	<delete id="deleteCartDetail">
+		/* TsbCart.deleteCartDetail : 장바구니 마스터 정보 없는 상세데이터 삭제 */
+		DELETE FROM TB_CART_DETAIL CD
+		WHERE  CD.CART_SQ NOT IN (SELECT CA.CART_SQ
+		                          FROM   TB_CART CA);
+	</delete>
+</mapper>

+ 40 - 39
src/main/resources/config/application-locd.yml

@@ -54,70 +54,71 @@ sweet:
 cron:
     #모니터링
     monitoring:
-        dayJob: 2 22 2 29 2 ? #일별 모니터링
-        hourJob: 2 22 2 29 2 ? #시간별 모니터링
+        dayJob: 2 22 2 29 2 ?       #일별 모니터링
+        hourJob: 2 22 2 29 2 ?      #시간별 모니터링
         
     #상품
     goods:
-        benefit: 2 22 2 29 2 ? #상품혜택 생성
-        benefit.price: 2 22 2 29 2 ? #상품 즉시할인가 생성
-        ep.naver.goods: 2 22 2 29 2 ? #네이버 EP 생성
+        benefit: 2 22 2 29 2 ?              #상품혜택 생성
+        benefit.price: 2 22 2 29 2 ?        #상품 즉시할인가 생성
+        ep.naver.goods: 2 22 2 29 2 ?       #네이버 EP 생성
         #infants.safe: 2 22 2 29 2 ?
-        price.reserve: 2 22 2 29 2 ? #상품가격 예약건 적용
-        relate.score: 2 22 2 29 2 ? #연관상품보기 스코어링
-        search.keyword: 2 22 2 29 2 ? #상품 검색어 생성
-        summary: 2 22 2 29 2 ? #상품 요약정보 생성
-        titlename.reserve: 2 22 2 29 2 ? #상품타이틀명(=세일링문구) 예약건 적용
+        price.reserve: 2 22 2 29 2 ?        #상품가격 예약건 적용
+        relate.score: 2 22 2 29 2 ?         #연관상품보기 스코어링
+        search.keyword: 2 22 2 29 2 ?       #상품 검색어 생성
+        summary: 2 22 2 29 2 ?              #상품 요약정보 생성
+        titlename.reserve: 2 22 2 29 2 ?    #상품타이틀명(=세일링문구) 예약건 적용
         wms:
-            measurement: 2 22 2 29 2 ? #WMS 실측사이즈 연동
-            incomelot: 2 22 2 29 2 ? #WMS 입고상품 연동
-            brandprovider: 2 22 2 29 2 ? #WMS 업체/브랜드 송신
-            goods: 2 22 2 29 2 ? #WMS 상품정보 송신
-            goods.stock: 2 22 2 29 2 ? #WMS 상품재고 수신
+            measurement: 2 22 2 29 2 ?      #WMS 실측사이즈 연동
+            incomelot: 2 22 2 29 2 ?        #WMS 입고상품 연동
+            brandprovider: 2 22 2 29 2 ?    #WMS 업체/브랜드 송신
+            goods: 2 22 2 29 2 ?            #WMS 상품정보 송신
+            goods.stock: 2 22 2 29 2 ?      #WMS 상품재고 수신
         
     #소셜
     social:
-         socialGoodsJob : 2 22 2 29 2 ? #소셜 상품 적용
+         socialGoodsJob : 2 22 2 29 2 ?     #소셜 상품 적용
     
     #통계
     statistics:
-        inflow: 2 22 2 29 2 ? #유입통계
-        inflow.yesterday: 2 22 2 29 2 ? #어제일자유입통계
+        inflow: 2 22 2 29 2 ?               #유입통계
+        inflow.yesterday: 2 22 2 29 2 ?     #어제일자유입통계
 
     #물류/배송
     delivery:
-        tsbDailyDeliveryZoneJob: 2 22 2 29 2 ? # 총알배송 권역정보 갱신 (매일 11시)
-        tsbDeliveryOrderJob: 2 22 2 29 2 ? # 출고처 지정 및 배송(출고)지시
-        tsbWithdrawExcRcvJob: 2 22 2 29 2 ? # WMS 회수입고예외 수신
-        tsbWithdrawExcRsltJob: 2 22 2 29 2 ? # WMS 회수입고예외 결과
-        tsbDeliveryExcRcvJob: 2 22 2 29 2 ? # WMS 출고예외 수신
-        tsbDeliveryOrderRsltJob: 2 22 2 29 2 ? # WMS 출고결과 수신
-        tsbWithdrawRsltJob: 2 22 2 29 2 ? # WMS 회수입고결과 수신
-        tsbInvoiceNoRcvJob: 2 22 2 29 2 ? # WMS 운송장번호 수신
-        tsbShopGoodsStockJob: 2 22 2 29 2 ? # ERP 매장재고 수신
-        tsbWithdrawRequestJob: 2 22 2 29 2 ? # WMS 회수요청
-        tsbCjWithdrawInvoiceJob: 2 22 2 29 2 ? # CJ 회수송장번호 수신
-        tsbCjWithdrawInvoiceStatJob: 2 22 2 29 2 ? # CJ 회수상태 수신
-        tsbSweetTrackerJob: 2 22 2 29 2 ? # 스윗트래커 송장상태조회 
+        tsbDailyDeliveryZoneJob: 2 22 2 29 2 ?      # 총알배송 권역정보 갱신 (매일 11시)
+        tsbDeliveryOrderJob: 2 22 2 29 2 ?          # 출고처 지정 및 배송(출고)지시
+        tsbWithdrawExcRcvJob: 2 22 2 29 2 ?         # WMS 회수입고예외 수신
+        tsbWithdrawExcRsltJob: 2 22 2 29 2 ?        # WMS 회수입고예외 결과
+        tsbDeliveryExcRcvJob: 2 22 2 29 2 ?         # WMS 출고예외 수신
+        tsbDeliveryOrderRsltJob: 2 22 2 29 2 ?      # WMS 출고결과 수신
+        tsbWithdrawRsltJob: 2 22 2 29 2 ?           # WMS 회수입고결과 수신
+        tsbInvoiceNoRcvJob: 2 22 2 29 2 ?           # WMS 운송장번호 수신
+        tsbShopGoodsStockJob: 2 22 2 29 2 ?         # ERP 매장재고 수신
+        tsbWithdrawRequestJob: 2 22 2 29 2 ?        # WMS 회수요청
+        tsbCjWithdrawInvoiceJob: 2 22 2 29 2 ?      # CJ 회수송장번호 수신
+        tsbCjWithdrawInvoiceStatJob: 2 22 2 29 2 ?  # CJ 회수상태 수신
+        tsbSweetTrackerJob: 2 22 2 29 2 ?           # 스윗트래커 송장상태조회
 
     #회원(고객)
     customer:
         dormant.schedule : 2 22 2 29 2 ?            # 휴면예정 고객 메일발송
         dormant.transform : 2 22 2 29 2 ?           # 휴면처리
         secede.process : 2 22 2 29 2 ?              # 탈퇴처리
-        privacy.policy.notice : 2 22 2 29 2 ?      # 개인정보 이용내역 안내(해야함)
+        privacy.policy.notice : 2 22 2 29 2 ?       # 개인정보 이용내역 안내(해야함)
         marketing.agreement.notice : 2 22 2 29 2 ?  # 마케팅 정보 수신동의 내역 안내(해야함)
 
 
     #전시
     display:
-        category.refresh: 2 22 2 29 2 ? #카테고리 갱신
-        category.stock : 2 22 2 29 2 ? #카테고리별 재고 생성
-        category.filter: 2 22 2 29 2 ? #카테고리별 검색필터 생성
+        category.refresh: 2 22 2 29 2 ?         #카테고리 갱신
+        category.stock : 2 22 2 29 2 ?          #카테고리별 재고 생성
+        category.filter: 2 22 2 29 2 ?          #카테고리별 검색필터 생성
 
     # 마케팅
     marketing:
-        auto.buy.confirm : 2 22 2 29 2 ? # 자동구매확정 예정포인트 지급
-        birthday.coupon.notice : 2 22 2 29 2 ? # 생일쿠폰 다운로드 안내 (해야함)
-        comback.coupon.notice : 2 22 2 29 2 ? # 복귀할인쿠폰발급안내 (해야함)
-        expire.point : 2 22 2 29 2 ? # 포인트 소멸
+        auto.buy.confirm : 2 22 2 29 2 ?        # 자동구매확정 예정포인트 지급
+        birthday.coupon.notice : 2 22 2 29 2 ?  # 생일쿠폰 다운로드 안내 (해야함)
+        comback.coupon.notice : 2 22 2 29 2 ?   # 복귀할인쿠폰발급안내 (해야함)
+        expire.point : 2 22 2 29 2 ?            # 포인트 소멸
+        cart.expiration : 0 03 14 ? * MON-FRI   # 만료기간 지난 장바구니 삭제