Browse Source

생일쿠폰 안내 배치 추가

jsshin 5 years ago
parent
commit
9b6c14ddfb

+ 43 - 1
src/main/java/com/style24/batch/biz/dao/TsbCustomerDao.java

@@ -39,7 +39,6 @@ public interface TsbCustomerDao {
 	 */
 	Collection<Customer> getDormentCustomerList(CustomerSearch customerSearch);
 
-
 	/**
 	 * 휴면회원보 저장
 	 *
@@ -174,6 +173,49 @@ public interface TsbCustomerDao {
 	 */
 	int updateCustomerGrade(CustGrade custGrade);
 
+	/**
+	 * 넷퍼시메일솔루션 회원정보 Truncate
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	void truncateNetpathyMailCustomer();
+
+	/**
+	 * 넷퍼시메일솔루션 회원정보 생성
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	int createNetpathyMailCustomer();
+
+	/**
+	 * 넷퍼시메일솔루션 탈퇴/휴면회원정보 Truncate
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	void truncateNetpathyMailWithdrawalCustomer();
+
+	/**
+	 * 넷퍼시메일솔루션 탈퇴/휴면회원정보 생성
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	int createNetpathyMailWithdrawalCustomer();
+
+	/**
+	 * 넷퍼시메일솔루션 회원포인트정보 Truncate
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	void truncateNetpathyMailCustomerPoint();
+
+	/**
+	 * 넷퍼시메일솔루션 회원포인트정보 생성
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	int createNetpathyMailCustomerPoint();
+
+
 	/**
 	 * 생일자대상 목록
 	 *

+ 53 - 0
src/main/java/com/style24/batch/biz/job/customer/TsbNetpathyMailJob.java

@@ -0,0 +1,53 @@
+package com.style24.batch.biz.job.customer;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbCustomerService;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 넷퍼시메일 솔루션에 회원정보 연동 처리
+ *
+ * @author gagamel
+ * @since 2021. 5. 10
+ */
+@Component
+@Slf4j
+public class TsbNetpathyMailJob extends TsbAbstractJob<String, String, String> {
+
+	@Autowired
+	private TsbCustomerService customerService;
+
+	@Override
+	public String read() throws Exception {
+		return "OK";
+	}
+
+	@Override
+	public String process(String result) throws Exception {
+		// 넷퍼시메일 회원정보 생성
+		customerService.createNetpathyMailCustomer();
+
+		// 넷퍼시메일 탈퇴/휴면회원정보 생성
+		customerService.createNetpathyMailWithdrawalCustomer();
+
+		// 넷퍼시메일 회원포인트 정보 생성
+		customerService.createNetpathyMailCustomerPoint();
+
+		return result;
+	}
+
+	@Override
+	public String write(String result) throws Exception {
+		return result;
+	}
+
+	@Override
+	public void notify(String result) throws Exception {
+		// Do nothing
+	}
+
+}

+ 56 - 8
src/main/java/com/style24/batch/biz/service/TsbCustomerService.java

@@ -2,24 +2,25 @@ package com.style24.batch.biz.service;
 
 import java.util.Collection;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.style24.batch.support.env.TsbConstants;
-import com.style24.core.biz.service.TscCustomerService;
-import com.style24.core.support.env.TscConstants;
-import com.style24.core.support.util.CryptoUtils;
-import com.style24.persistence.domain.CustContactHst;
-import com.style24.persistence.domain.CustGrade;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.batch.biz.dao.TsbCustomerDao;
+import com.style24.batch.support.env.TsbConstants;
+import com.style24.core.biz.service.TscCustomerService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.core.support.util.CryptoUtils;
+import com.style24.persistence.domain.CustContactHst;
+import com.style24.persistence.domain.CustGrade;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+
 /**
  * 회원(고객) Service
  *
@@ -36,7 +37,6 @@ public class TsbCustomerService {
 	@Autowired
 	private TscCustomerService coreCustomerService;
 
-
 	/**
 	 * 휴면전환예정 메일 발송 대상
 	 *
@@ -320,6 +320,54 @@ public class TsbCustomerService {
 		return result;
 	}
 
+	/**
+	 * 넷퍼시메일솔루션으로 회원정보 생성
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	@Transactional("shopTxnManager")
+	public void createNetpathyMailCustomer() {
+		// 회원정보 Truncate
+		customerDao.truncateNetpathyMailCustomer();
+
+		// 회원정보 생성
+		int result = customerDao.createNetpathyMailCustomer();
+
+		log.info("1.넷퍼시메일솔루션으로 회원정보 생성 ({}건) : OK", result);
+	}
+
+	/**
+	 * 넷퍼시메일솔루션으로 탈퇴/휴면회원정보 생성
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	@Transactional("shopTxnManager")
+	public void createNetpathyMailWithdrawalCustomer() {
+		// 회원정보 Truncate
+		customerDao.truncateNetpathyMailWithdrawalCustomer();
+
+		// 회원정보 생성
+		int result = customerDao.createNetpathyMailWithdrawalCustomer();
+
+		log.info("2.넷퍼시메일솔루션으로 탈퇴/휴면회원정보 생성 ({}건) : OK", result);
+	}
+
+	/**
+	 * 넷퍼시메일솔루션으로 회원포인트정보 생성
+	 * 		전일자 변경된 포인트가 있는 회원에 대해서만
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	@Transactional("shopTxnManager")
+	public void createNetpathyMailCustomerPoint() {
+		// 회원정보 Truncate
+		customerDao.truncateNetpathyMailCustomerPoint();
+
+		// 회원정보 생성
+		int result = customerDao.createNetpathyMailCustomerPoint();
+
+		log.info("3.넷퍼시메일솔루션으로 회원포인트정보 생성 ({}건) : OK", result);
+	}
 
 	/**
 	 * 생일쿠폰안내대상 목록

+ 24 - 6
src/main/java/com/style24/batch/biz/task/TsbCustomerTask.java

@@ -1,18 +1,19 @@
 package com.style24.batch.biz.task;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
 
-import com.style24.batch.biz.job.customer.TsbDormantTransformJob;
 import com.style24.batch.biz.job.customer.TsbDormantScheduleJob;
+import com.style24.batch.biz.job.customer.TsbDormantTransformJob;
 import com.style24.batch.biz.job.customer.TsbGradeChangeJob;
 import com.style24.batch.biz.job.customer.TsbMarketingAgreementNoticeJob;
+import com.style24.batch.biz.job.customer.TsbNetpathyMailJob;
 import com.style24.batch.biz.job.customer.TsbPrivacyPolicyNoticeJob;
 import com.style24.batch.biz.job.customer.TsbSecedeProcessJob;
-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;
 
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * 회원(고객) Task
@@ -41,6 +42,9 @@ public class TsbCustomerTask {
 	@Autowired
 	TsbGradeChangeJob gradeChangeJob;
 
+	@Autowired
+	TsbNetpathyMailJob netpathyJob;
+
 	/**
 	 * 휴면전환 예정 대상 메일 발송
 	 *
@@ -124,4 +128,18 @@ public class TsbCustomerTask {
 	public void gradeChangeJob() throws Exception {
 		gradeChangeJob.runById("cron.customer.grade.change");
 	}
+
+	/**
+	 * 넷퍼시메일솔루션에 회원정보 연동
+	 * @throws Exception - 예외처리
+	 * @author gagamel
+	 * @since 2021. 5. 10
+	 */
+	@Scheduled(cron = "${cron.customer.netpathy.sync}")
+//	@Scheduled(fixedDelay = 360000)
+	@Async
+	public void syncronizeNetpathyMailCustomerInfo() throws Exception {
+		netpathyJob.runById("cron.customer.netpathy.sync");
+	}
+
 }

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

@@ -486,6 +486,105 @@
 		     , UPD_NO = #{updNo}
 		WHERE  CGH.APPLY_YMD = DATE_FORMAT(NOW(), '%Y%m%d')
 	</update>
+	
+	<!-- 넷퍼시메일솔루션 회원정보 Truncate -->
+	<delete id="truncateNetpathyMailCustomer">
+		/* TsbCustomerDao.truncateNetpathyMailCustomer */
+		TRUNCATE TABLE NETPATHY_MEMBER
+	</delete>
+	
+	<!-- 넷퍼시메일솔루션 회원정보 생성 -->
+	<insert id="createNetpathyMailCustomer" timeout="600">
+		/* TsbCustomerDao.createNetpathyMailCustomer */
+		INSERT INTO NETPATHY_MEMBER (
+		       CUST_NO
+		     , CUST_ID
+		     , CUST_NM
+		     , BIRTH_YMD
+		     , EMAIL
+		     , EMAIL_AGREE_YN
+		     , SEX_GB
+		     , ZIPCODE
+		     , JOIN_DT
+		     , UPD_DT
+		)
+		SELECT C.CUST_NO                                 /*회원GUID(=회원번호)*/
+		     , C.CUST_ID                                 /*로그인ID(=회원ID)*/
+		     , C.CUST_NM                                 /*회원명(암호화된값)*/
+		     , C.BIRTH_YMD                               /*생년월일(암호화된값)*/
+		     , C.EMAIL                                   /*이메일(암호화된값)*/
+		     , C.EMAIL_AGREE_YN                          /*메일수신여부*/
+		     , C.SEX_GB                                  /*성별(암호화된값)*/
+		     , CDA.RECIP_ZIPCODE              AS ZIPCODE /*우편번호*/
+		     , IFNULL(C.JOIN_DT,'1900-01-01') AS JOIN_DT /*가입일시*/
+		     , C.UPD_DT                                  /*수정일시*/
+		FROM   TB_CUSTOMER C
+		LEFT OUTER JOIN TB_CUST_DELIVERY_ADDR CDA ON C.CUST_NO = CDA.CUST_NO
+		                                         AND CDA.DEL_YN = 'N' /*삭제안된넘*/
+		                                         AND CDA.DEFAULT_YN = 'Y' /*기본배송지*/
+		WHERE  CUST_STAT = 'G104_10' /*활동회원*/
+	</insert>
+	
+	<!-- 넷퍼시메일솔루션 탈퇴/휴면회원정보 Truncate -->
+	<delete id="truncateNetpathyMailWithdrawalCustomer">
+		/* TsbCustomerDao.truncateNetpathyMailWithdrawalCustomer */
+		TRUNCATE TABLE NETPATHY_WITHDRAWAL
+	</delete>
+	
+	<!-- 넷퍼시메일솔루션 탈퇴/휴면회원정보 생성 -->
+	<insert id="createNetpathyMailWithdrawalCustomer" timeout="600">
+		/* TsbCustomerDao.createNetpathyMailWithdrawalCustomer */
+		INSERT INTO NETPATHY_WITHDRAWAL (
+		       CUST_NO
+		     , CUST_ID
+		     , CUST_NM
+		     , JOIN_DT
+		     , REG_DT
+		)
+		SELECT CUST_NO                              /*회원GUID(=회원번호)*/
+		     , CUST_ID                              /*로그인ID(=회원ID)*/
+		     , CUST_NM                              /*회원명(암호화된값)*/
+		     , IFNULL(JOIN_DT,SECEDE_DT) AS JOIN_DT /*가입일시*/
+		     , SECEDE_DT                 AS REG_DT  /*등록일시*/
+		FROM   TB_SECEDE_CUST
+		UNION ALL
+		SELECT CUST_NO              /*회원GUID(=회원번호)*/
+		     , CUST_ID              /*로그인ID(=회원ID)*/
+		     , CUST_NM              /*회원명(암호화된값)*/
+		     , JOIN_DT              /*가입일시*/
+		     , DORMANT_DT AS REG_DT /*등록일시*/
+		FROM   TB_DORMANT_CUST
+	</insert>
+	
+	<!-- 넷퍼시메일솔루션 회원포인트정보 Truncate -->
+	<delete id="truncateNetpathyMailCustomerPoint">
+		/* TsbCustomerDao.truncateNetpathyMailCustomerPoint */
+		TRUNCATE TABLE NETPATHY_POINT
+	</delete>
+	
+	<!-- 넷퍼시메일솔루션 회원포인트정보 생성 -->
+	<insert id="createNetpathyMailCustomerPoint" timeout="600">
+		/* TsbCustomerDao.createNetpathyMailCustomerPoint */
+		INSERT INTO NETPATHY_POINT (
+		       CUST_NO
+		     , CUST_ID
+		     , RM_PNT_AMT
+		     , PREV_DT
+		)
+		SELECT CP.CUST_NO                                                                       /*회원번호*/
+		     , C.CUST_ID                                                                        /*회원ID*/
+		     , SUM(CASE WHEN CP.EXP_CMP_DT IS NULL THEN CP.RM_PNT_AMT ELSE 0 END) AS RM_PNT_AMT /*남은포인트금액*/
+		     , DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)                          AS PREV_DT    /*전일*/
+		FROM   TB_CUST_POINT CP
+		     , TB_CUSTOMER C
+		WHERE  CP.CUST_NO = C.CUST_NO
+		AND    CP.CUST_NO IN (SELECT CUST_NO
+		                      FROM   TB_CUST_POINT
+		                      WHERE  UPD_DT <![CDATA[>=]]> DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
+		                      AND    UPD_DT <![CDATA[<]]> CURRENT_DATE()
+		                     )
+		GROUP  BY CP.CUST_NO
+	</insert>
 
 	<!--생일쿠폰 다운로드 안내 대상자-->
 	<select id="getBirthDayTargetList" parameterType="CustomerSearch" resultType="Customer">

+ 10 - 7
src/main/resources/config/application-locd.yml

@@ -88,16 +88,16 @@ cron:
             goods: 2 22 2 29 2 ?            #WMS 상품정보 송신
             goods.stock: 2 22 2 29 2 ?      #WMS 상품재고 수신
         
-    #소셜
+    # 소셜
     social:
          socialGoodsJob : 2 22 2 29 2 ?     #소셜 상품 적용
     
-    #통계
+    # 통계
     statistics:
         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 ?          # 출고처 지정 및 배송(출고)지시
@@ -112,8 +112,9 @@ cron:
         tsbCjWithdrawInvoiceJob: 2 22 2 29 2 ?      # CJ 회수송장번호 수신
         tsbCjWithdrawInvoiceStatJob: 2 22 2 29 2 ?  # CJ 회수상태 수신
         tsbSweetTrackerJob: 2 22 2 29 2 ?           # 스윗트래커 송장상태조회
-        tsbSoldoutCancelJob: 2 22 2 29 2 ? # 품절취소
-    #회원(고객)
+        tsbSoldoutCancelJob: 2 22 2 29 2 ?          # 품절취소
+
+    # 회원(고객)
     customer:
         dormant.schedule : 2 22 2 29 2 ?            # 휴면예정 고객 메일발송
         dormant.transform : 2 22 2 29 2 ?           # 휴면처리
@@ -121,8 +122,9 @@ cron:
         privacy.policy.notice : 2 22 2 29 2 ?       # 개인정보 이용내역 안내(가입일로부터 1년 시점에 발송)
         marketing.agreement.notice : 2 22 2 29 2 ?  # 마케팅 정보 수신동의 내역 안내(마케팅 정보 수신자에 한해 발송. 가입일로부터 2년 시점에 발송)
         grade.change : 2 22 2 29 2                  # 등급변경(매월1일)
+        netpathy.sync : 2 22 2 29 2 ?               # 넷퍼시메일솔루션에 회원정보 연동 (매일 1회)
 
-    #전시
+    # 전시
     display:
         category.refresh: 2 22 2 29 2 ?         #카테고리 갱신
         category.stock : 2 22 2 29 2 ?          #카테고리별 재고 생성
@@ -136,6 +138,7 @@ cron:
         expire.point : 2 22 2 29 2 ?            # 포인트 소멸
         cart.expiration : 2 22 2 29 2 ?         # 만료기간 지난 장바구니 삭제
 
+    # 주문
     order:
         deposit.expiration : 2 22 2 29 2 ?      # 무통장입금 입금기한 만료 주문 취소
-        gift.expiration : 2 22 2 29 2 ?         # 선물하기 배송지 등록 기간 만료 주문 취소
+        gift.expiration : 2 22 2 29 2 ?         # 선물하기 배송지 등록 기간 만료 주문 취소

+ 1 - 0
src/main/resources/config/application-style.yml

@@ -131,6 +131,7 @@ cron:
         privacy.policy.notice : 2 22 2 29 2 ?       # 개인정보 이용내역 안내(가입일로부터 1년 시점에 발송)
         marketing.agreement.notice : 2 22 2 29 2 ?  # 마케팅 정보 수신동의 내역 안내(마케팅 정보 수신자에 한해 발송. 가입일로부터 2년 시점에 발송)
         grade.change : 2 22 2 29 2                  # 등급변경(매월1일)
+        netpathy.sync : 2 22 2 29 2 ?               # 넷퍼시메일솔루션에 회원정보 연동 (매일 1회)
 
     #전시
     display: