jsshin 5 лет назад
Родитель
Сommit
13a43cde47

+ 29 - 0
src/main/java/com/style24/batch/biz/dao/TsbPointDao.java

@@ -0,0 +1,29 @@
+package com.style24.batch.biz.dao;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Point;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+
+/**
+ * 포인트 Dao
+ *
+ * @author jsshin
+ * @since 2021. 04. 22
+ */
+@ShopDs
+@Repository
+public interface TsbPointDao {
+
+	/**
+	 * 자동구매확정 대상 리스트
+	 *
+	 * @param point - 자동구매확정 기준일, 구매확정 포인트 만료일
+	 * @return Collection<Point>
+	 * @author jsshin
+	 * @since  2021. 04. 23
+	 */
+	Collection<Point> getAutoBuyConfirmList(Point point);
+
+}

+ 5 - 1
src/main/java/com/style24/batch/biz/job/customer/TsbDormantScheduleJob.java

@@ -18,7 +18,7 @@ import java.util.Collection;
  * 휴면전환 예정 알림
  *
  * @author jsshin
- * @since 2020.03.08
+ * @since 2021.03.08
  */
 @Component
 @Slf4j
@@ -35,9 +35,13 @@ public class TsbDormantScheduleJob extends TsbAbstractJob<Collection<Customer>,
 
 	@Override
 	public Collection<Customer> read() throws Exception {
+		// 휴면회원선정일수 가져오기
 		int selectDays = coreEnvsetService.getDormantMemberSelectDays(TscConstants.Site.STYLE24.value());
+		// 휴면회원전환일수
+		int dormantConversionDay = coreEnvsetService.getDormantMemberConvertDays(TscConstants.Site.STYLE24.value());
 		CustomerSearch customerSearch = new CustomerSearch();
 		customerSearch.setDormantSelectDays(selectDays);
+		customerSearch.setDormantConversionDay(dormantConversionDay);
 		customerSearch.setSiteCd(TscConstants.Site.STYLE24.value());
 		customerSearch.setRegNo(TsbConstants.REG_NO);
 		customerSearch.setUpdNo(TsbConstants.REG_NO);

+ 1 - 1
src/main/java/com/style24/batch/biz/job/customer/TsbDormantTransformJob.java

@@ -16,7 +16,7 @@ import org.springframework.stereotype.Component;
  * 휴면회원 전환
  *
  * @author jsshin
- * @since 2020.03.08
+ * @since 2021.03.08
 */
 @Component
 @Slf4j

+ 1 - 1
src/main/java/com/style24/batch/biz/job/customer/TsbSecedeProcessJob.java

@@ -18,7 +18,7 @@ import java.util.Collection;
  * 1년지난 회원 탈퇴정보 삭제
  *
  * @author jsshin
- * @since 2020.03.08
+ * @since 2021.03.08
  */
 @Component
 @Slf4j

+ 75 - 0
src/main/java/com/style24/batch/biz/job/marketing/TsbAutoBuyConfirmJob.java

@@ -0,0 +1,75 @@
+package com.style24.batch.biz.job.marketing;
+
+import com.gagaframework.web.parameter.GagaMap;
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbPointService;
+import com.style24.batch.support.env.TsbConstants;
+import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.biz.service.TscPointService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.Point;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+
+/**
+ * 자동구매확정 포인트 지급
+ *
+ * @author jsshin
+ * @since 2021.04.23
+ */
+@Component
+@Slf4j
+public class TsbAutoBuyConfirmJob extends TsbAbstractJob<Collection<Point>, GagaMap, GagaMap> {
+
+	@Autowired
+	private TsbPointService pointService;
+
+	@Autowired
+	private TscEnvsetService envsetService;
+
+	@Autowired
+	private TscPointService corePointService;
+
+	private int succCnt = 0;
+	private int failCnt = 0;
+
+	@Override
+	public Collection<Point> read() throws Exception {
+		int expireDays = envsetService.getBuyPointExpireDays(TscConstants.Site.STYLE24.value());
+		int confirmDays = envsetService.getAutoBuyConfirmDays(TscConstants.Site.STYLE24.value());
+		Point point = new Point();
+		point.setBuyPointExpireDays(expireDays);
+		point.setAutoBuyConfirmDays(confirmDays);
+		return pointService.getAutoBuyConfirmList(point);
+	}
+
+	@Override
+	public GagaMap process(Collection<Point> readItem) throws Exception {
+
+		for (Point point: readItem) {
+			try {
+				point.setRegNo(TsbConstants.REG_NO);
+				point.setUpdNo(TsbConstants.REG_NO);
+				corePointService.saveAutoBuyConfirm(point);
+				succCnt++;
+			} catch (Exception e) {
+				failCnt++;
+			}
+
+		}
+		return null;
+	}
+
+	@Override
+	public GagaMap write(GagaMap convertedItem) throws Exception {
+		return null;
+	}
+
+	@Override
+	public void notify(GagaMap resultItem) throws Exception {
+		super.printResult(succCnt, failCnt);
+	}
+}

+ 36 - 0
src/main/java/com/style24/batch/biz/service/TsbPointService.java

@@ -0,0 +1,36 @@
+package com.style24.batch.biz.service;
+
+import com.style24.batch.biz.dao.TsbPointDao;
+import com.style24.persistence.domain.Point;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+
+/**
+ * 포인트 Service
+ *
+ * @author jsshin
+ * @since 2021. 03. 05
+ */
+@Service
+@Slf4j
+public class TsbPointService {
+
+	@Autowired
+	private TsbPointDao pointDao;
+
+	/**
+	 * 자동구매확정 대상 리스트
+	 *
+	 * @param point - 자동구매확정 기준일, 구매확정 포인트 만료일
+	 * @return Collection<Point>
+	 * @author jsshin
+	 * @since  2021. 04. 23
+	 */
+	public Collection<Point> getAutoBuyConfirmList(Point point) {
+		return pointDao.getAutoBuyConfirmList(point);
+	}
+
+}

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

@@ -1,6 +1,10 @@
 package com.style24.batch.biz.task;
 
+import com.style24.batch.biz.job.marketing.TsbAutoBuyConfirmJob;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 /**
@@ -13,4 +17,20 @@ import org.springframework.stereotype.Component;
 @Slf4j
 public class TsbMarketingTask {
 
+	@Autowired
+	private TsbAutoBuyConfirmJob autoBuyConfirmJob;
+	/**
+	 * 자동구매확정 포인트 지급
+	 *
+	 * @throws Exception - 예외처리
+	 * @author jsshin
+	 * @since 2021. 04. 23
+	 */
+	//@Scheduled(cron = "${cron.marketing.auto.buy.confirm}")
+	@Scheduled(fixedDelay=360000)
+	@Async
+	public void autoBuyConfirmJob() throws Exception {
+		autoBuyConfirmJob.runById("cron.marketing.auto.buy.confirm");
+	}
+
 }

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

@@ -11,7 +11,7 @@
 		      , C.CELL_PHNNO
 		      , C.EMAIL
 		      , DATE_FORMAT(C.LOGIN_LDT, '%Y-%m-%d') AS LOGIN_LDT
-		      , DATE_FORMAT(DATE_ADD(C.LOGIN_LDT, INTERVAL 366 DAY), '%Y-%m-%d') AS DORMANT_DT
+		      , DATE_FORMAT(DATE_ADD(C.LOGIN_LDT, INTERVAL #{dormantConversionDay} +1 DAY), '%Y-%m-%d') AS DORMANT_DT
 		FROM    TB_CUSTOMER C
 		WHERE   C.CUST_STAT = 'G104_10' -- 활동회원
 		AND     C.SITE_CD = #{siteCd}

+ 30 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsbPoint.xml

@@ -0,0 +1,30 @@
+<?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.TsbPointDao">
+
+	<!--자동구매확정 포인트 전환 대상-->
+	<select id="getAutoBuyConfirmList" parameterType="Point" resultType="Point">
+		/*TsbPointDao.getAutoBuyConfirmList*/
+		SELECT ORD_NO
+		     , ORD_DTL_NO
+		     , CPH.CUST_NO
+		     , SUM(PNT_AMT)                                                           AS PNT_AMT
+		     , CONCAT(CURRENT_DATE + INTERVAL #{buyPointExpireDays} DAY, ' 23:59:59') AS EXP_BE_DT
+		FROM  TB_CUST_POINT_HST CPH
+		INNER JOIN
+		      TB_CUSTOMER C
+		ON    CPH.CUST_NO = C.CUST_NO
+		AND   C.CUST_STAT = 'G104_10'
+		WHERE CPH.OCCUR_GB IN ('G069_12', 'G069_13')
+		AND   CPH.PNT_UPLOAD_STAT = 'G070_10'
+		AND   CPH.ORD_DTL_NO IN (
+		                         SELECT ORD_DTL_NO
+		                         FROM   TB_ORDER_DETAIL
+		                         WHERE  ORD_DTL_STAT = 'G013_60'
+		                         AND    DELV_EDDT >= DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL - #{autoBuyConfirmedDays} -1 DAY), '%Y%m%d%H%i%S')
+		                         )
+		GROUP BY CPH.ORD_NO, CPH.ORD_DTL_NO ,CPH.CUST_NO
+		HAVING SUM(PNT_AMT) > 0
+	</select>
+
+</mapper>

+ 9 - 4
src/main/resources/config/application-locd.yml

@@ -102,9 +102,12 @@ cron:
 
     #회원(고객)
     customer:
-        dormant.schedule : 2 22 2 29 2 ? # 휴면예정 고객 메일발송
-        dormant.transform : 2 22 2 29 2 ? # 휴면처리
-        secede.process : 2 22 2 29 2 ?    # 탈퇴처리
+        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 ?      # 개인정보 이용내역 안내(해야함)
+        marketing.agreement.notice : 2 22 2 29 2 ?  # 마케팅 정보 수신동의 내역 안내(해야함)
+
 
     #전시
     display:
@@ -114,4 +117,6 @@ cron:
 
     # 마케팅
     marketing:
-        auto.buy.confirmed:
+        auto.buy.confirm : 2 22 2 29 2 ? # 자동구매확정 예정포인트 지급
+        birthday.coupon.notice : 2 22 2 29 2 ? # 생일쿠폰 다운로드 안내 (해야함)
+        comback.coupon.notice : 2 22 2 29 2 ? # 복귀할인쿠폰발급안내 (해야함)