Преглед изворни кода

Merge branch 'jsshin' into develop

jsshin пре 5 година
родитељ
комит
66aa66d670

+ 9 - 0
src/main/java/com/style24/batch/biz/dao/TsbCustomerDao.java

@@ -165,6 +165,15 @@ public interface TsbCustomerDao {
 	 */
 	int createChangeCustomerHst(CustGrade custGrade);
 
+	/**
+	 * 변경된등급 회원 목록
+	 *
+	 * @return Collection<Customer> - 목록
+	 * @author jsshin
+	 * @since  2021. 05. 07
+	 */
+	Collection<Customer> getCustGradeChangeTargetList(CustomerSearch customerSearch);
+
 	/**
 	 * 회원등급 변경 처리
 	 *

+ 29 - 8
src/main/java/com/style24/batch/biz/job/customer/TsbGradeChangeJob.java

@@ -4,12 +4,18 @@ import com.gagaframework.web.parameter.GagaMap;
 import com.style24.batch.biz.job.TsbAbstractJob;
 import com.style24.batch.biz.service.TsbCustomerService;
 import com.style24.batch.support.env.TsbConstants;
+import com.style24.core.biz.service.TscKakaotalkService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.persistence.domain.CustGrade;
+import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.CustomerSearch;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Collection;
+
 /**
  * 회원(고객)등급 산정
  *
@@ -18,35 +24,50 @@ import org.springframework.stereotype.Component;
 */
 @Component
 @Slf4j
-public class TsbGradeChangeJob extends TsbAbstractJob<CustGrade, GagaMap, GagaMap> {
+public class TsbGradeChangeJob extends TsbAbstractJob<GagaMap, GagaMap, GagaMap> {
 
 	@Autowired
 	private TsbCustomerService customerService;
 
+	@Autowired
+	private TscKakaotalkService kakaotalkService;
+
 	private int custGradeHstCnt = 0;
 	private int custHstCnt = 0;
 	private int custGradeCnt = 0;
 
 	@Override
-	public CustGrade read() throws Exception {
+	public GagaMap read() throws Exception {
 		CustGrade custGrade = new CustGrade();
 		custGrade.setSiteCd(TscConstants.Site.STYLE24.value());
 		custGrade.setRegNo(TsbConstants.REG_NO);
 		custGrade.setUpdNo(TsbConstants.REG_NO);
-		return custGrade;
-	}
-
-	@Override
-	public GagaMap process(CustGrade custGrade) throws Exception {
 		GagaMap result = customerService.saveCustomerGrade(custGrade);
 		return result;
 	}
 
 	@Override
-	public GagaMap write(GagaMap result) throws Exception {
+	public GagaMap process(GagaMap result) throws Exception {
 		custGradeHstCnt = result.getInt("custGradeHstCnt");
 		custHstCnt = result.getInt("custHstCnt");
 		custGradeCnt = result.getInt("custGradeCnt");
+
+		CustomerSearch customerSearch = new CustomerSearch();
+		customerSearch.setSiteCd(TscConstants.Site.STYLE24.value());
+		Collection<Customer> customerCollection = customerService.getCustGradeChangeTargetList(customerSearch);
+
+		for (Customer customer: customerCollection) {
+			if (StringUtils.isNotBlank(customer.getCellPhnno()) && "Y".equals(customer.getSmsAgreeYn())) {
+				kakaotalkService.sendGradeNotice(customer, TsbConstants.REG_NO);
+			}
+		}
+
+		return result;
+	}
+
+	@Override
+	public GagaMap write(GagaMap result) throws Exception {
+
 		return null;
 	}
 

+ 1 - 0
src/main/java/com/style24/batch/biz/job/marketing/TsbBirthdayCouponNoticeJob.java

@@ -47,6 +47,7 @@ public class TsbBirthdayCouponNoticeJob extends TsbAbstractJob<Collection<CustCo
 				customerService.sendBirthDayCouponNotice(CustCoupon);
 				succCnt++;
 			} catch (Exception e) {
+				log.error(e.getMessage());
 				failCnt++;
 			}
 

+ 24 - 29
src/main/java/com/style24/batch/biz/service/TsbCustomerService.java

@@ -210,21 +210,16 @@ public class TsbCustomerService {
 		int failCnt = 0;
 		for (Customer customer : customerCollection) {
 			try {
+				Integer senderNo = TsbConstants.REG_NO;
 				// TODO: 이메일 발송 모듈 붙어야 함 2021.05.06 jsshin
 				// 이메일 발송
 				if (StringUtils.isNotBlank(customer.getEmail())) {
 
 				}
 
-				CustContactHst custContactHst = new CustContactHst();
-				custContactHst.setContactType(TscConstants.ContactType.PRIVACY_POLICY.value());
-				custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value());
-				custContactHst.setContactContents("개인정보 이용내역 안내 발송");
-				custContactHst.setSenderNo(TsbConstants.REG_NO);
-				custContactHst.setReceiverNo(customer.getCustNo());
-				custContactHst.setRegNo(TsbConstants.REG_NO);
-				//접촉 이력 저장
-				coreCustomerService.createCustomerContactHistory(custContactHst);
+				if (StringUtils.isNotBlank(customer.getCellPhnno())) {
+					kakaotalkService.sendPrivacyPolicyNotice(customer, senderNo);
+				}
 
 				succCnt++;
 
@@ -264,25 +259,21 @@ public class TsbCustomerService {
 		int failCnt = 0;
 		for (Customer customer : customerCollection) {
 			try {
+				Integer senderNo = TsbConstants.REG_NO;
 				// TODO: 이메일 발송 모듈 붙어야 함 2021.05.06 jsshin
 				// 이메일 발송
 				if (StringUtils.isNotBlank(customer.getEmail())) {
 
 				}
 
-				CustContactHst custContactHst = new CustContactHst();
-				custContactHst.setContactType(TscConstants.ContactType.MARKETING_AGREE.value());
-				custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value());
-				custContactHst.setContactContents("마케팅 정보 수신동의 내역 안내");
-				custContactHst.setSenderNo(TsbConstants.REG_NO);
-				custContactHst.setReceiverNo(customer.getCustNo());
-				custContactHst.setRegNo(TsbConstants.REG_NO);
-				//접촉 이력 저장
-				coreCustomerService.createCustomerContactHistory(custContactHst);
+				if (StringUtils.isNotBlank(customer.getCellPhnno())) {
+					kakaotalkService.sendMarketingAgreeNotice(customer, senderNo);
+				}
 
 				succCnt++;
 
 			} catch (Exception e) {
+				log.error(e.getMessage());
 				failCnt++;
 			}
 		}
@@ -325,6 +316,18 @@ public class TsbCustomerService {
 		return result;
 	}
 
+	/**
+	 * 회원등급 변경
+	 *
+	 * @param customerSearch - 정보
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2021. 05. 06
+	 */
+	public Collection<Customer> getCustGradeChangeTargetList(CustomerSearch customerSearch) {
+		return customerDao.getCustGradeChangeTargetList(customerSearch);
+	}
+
 	/**
 	 * 넷퍼시메일솔루션으로 회원정보 생성
 	 * @author gagamel
@@ -397,24 +400,16 @@ public class TsbCustomerService {
 	@Transactional("shopTxnManager")
 	public void sendBirthDayCouponNotice(CustCoupon custCoupon) {
 		// TODO: 이메일 발송 모듈 붙어야 함 2021.05.10 jsshin
-
+		Integer senderNo = TsbConstants.REG_NO;
 		// 이메일 발송
 		if (StringUtils.isNotBlank(custCoupon.getEmail()) && "Y".equals(custCoupon.getEmailAgreeYn())) {
 
 		}
 		// 카카오 알림톡
 		if (StringUtils.isNotBlank(custCoupon.getCellPhnno()) && "Y".equals(custCoupon.getSmsAgreeYn())) {
-			kakaotalkService.sendBirthDayCouponNotice(custCoupon, TsbConstants.REG_NO);
+			kakaotalkService.sendBirthDayCouponNotice(custCoupon, senderNo);
 		}
-		CustContactHst custContactHst = new CustContactHst();
-		custContactHst.setContactType(TscConstants.ContactType.BIRTH_COUPON_NOTICE.value());
-		custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value());
-		custContactHst.setContactContents("생일쿠폰 다운로드 안내");
-		custContactHst.setSenderNo(TsbConstants.REG_NO);
-		custContactHst.setReceiverNo(custCoupon.getCustNo());
-		custContactHst.setRegNo(TsbConstants.REG_NO);
-		//접촉 이력 저장
-		coreCustomerService.createCustomerContactHistory(custContactHst);
+
 	}
 
 	/**

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

@@ -35,25 +35,25 @@ import lombok.extern.slf4j.Slf4j;
 public class TsbCustomerTask {
 
 	@Autowired
-	TsbDormantScheduleJob dormantScheduleJob;
+	private TsbDormantScheduleJob dormantScheduleJob;
 
 	@Autowired
-	TsbDormantTransformJob dormantTransformJob;
+	private TsbDormantTransformJob dormantTransformJob;
 
 	@Autowired
-	TsbSecedeProcessJob secedeProcessJob;
+	private TsbSecedeProcessJob secedeProcessJob;
 
 	@Autowired
-	TsbPrivacyPolicyNoticeJob privacyPolicyNoticeJob;
+	private TsbPrivacyPolicyNoticeJob privacyPolicyNoticeJob;
 
 	@Autowired
-	TsbMarketingAgreementNoticeJob marketingAgreementNoticeJob;
+	private TsbMarketingAgreementNoticeJob marketingAgreementNoticeJob;
 
 	@Autowired
-	TsbGradeChangeJob gradeChangeJob;
+	private TsbGradeChangeJob gradeChangeJob;
 
 	@Autowired
-	TsbNetpathyMailJob netpathyJob;
+	private TsbNetpathyMailJob netpathyJob;
 
 	@Autowired
 	private TsbAutoBuyConfirmJob autoBuyConfirmJob;

+ 1 - 1
src/main/java/com/style24/batch/biz/task/TsbGoodsTask.java

@@ -233,7 +233,7 @@ public class TsbGoodsTask {
 	 * @throws Exception
 	 */
 	@Scheduled(cron = "${cron.goods.wms.stock.receive}")
-	@Scheduled(fixedDelay = 3500000)
+//	@Scheduled(fixedDelay = 3500000)
 	@Async
 	public void wmsStockReceiveJob() throws Exception {
 		goodsWmsGoodsStockJob.runById("cron.goods.wms.stock.receive");

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

@@ -57,7 +57,7 @@
 	</select>
 
 	<!-- 휴면회원 테이블 휴면회원정보 저장 -->
-	<insert id="createDormantCustomer" parameterType="CustomerSearch">
+	<insert id="createDormantCustomer" parameterType="CustomerSearch" timeout="360">
 		/*TsbCustomerDao.createDormantCustomer*/
 		INSERT INTO TB_DORMANT_CUST (
 		       CUST_NO
@@ -157,7 +157,7 @@
 	</insert>
 
 	<!--회원정보 휴면처리-->
-	<update id="updateDormantCustomer" parameterType="CustomerSearch">
+	<update id="updateDormantCustomer" parameterType="CustomerSearch" timeout="360">
 		/*TsbCustomerDao.updateDormantCustomer*/
 		UPDATE TB_CUSTOMER
 		SET    CUST_NM = #{encodedCustNm}
@@ -290,14 +290,27 @@
 		      , C.CELL_PHNNO
 		      , C.EMAIL
 		      , DATEDIFF(NOW(), C.JOIN_DT) AS DIFF_JOIN_DT
-		      , C.APP_AGREE_DT
-		      , C.SMS_AGREE_DT
-		      , C.EMAIL_AGREE_DT
-		      , C.MK_AGREE_DT
+		      , C.SMS_AGREE_YN
+		      , C.EMAIL_AGREE_YN
+		      , C.APP_AGREE_YN
+		      , C.MK_AGREE_YN
+		      , DATE_FORMAT(C.APP_AGREE_DT, '%Y.%m.%d') AS APP_AGREE_DT
+		      , DATE_FORMAT(C.SMS_AGREE_DT, '%Y.%m.%d') AS SMS_AGREE_DT
+		      , DATE_FORMAT(C.EMAIL_AGREE_DT, '%Y.%m.%d') AS EMAIL_AGREE_DT
+		      , DATE_FORMAT(C.MK_AGREE_DT, '%Y.%m.%d') AS MK_AGREE_DT
 		FROM    TB_CUSTOMER C
 		WHERE   C.CUST_STAT = 'G104_10' -- 활동회원
 		AND    (C.SMS_AGREE_YN = 'Y' OR C.EMAIL_AGREE_YN = 'Y' OR C.MK_AGREE_YN = 'Y')
+		AND     TIMESTAMPDIFF(YEAR,JOIN_DT, NOW()) >= 2
+		AND     TIMESTAMPDIFF(YEAR,JOIN_DT, NOW()) MOD 2 = 0
 		AND     C.SITE_CD = #{siteCd}
+		AND     NOT EXISTS (
+		                    SELECT 1
+		                    FROM  TB_CUST_CONTACT_HST CCH
+		                    WHERE CCH.RECEIVER_NO = C.CUST_NO
+		                    AND   CCH.CONTACT_TYPE = 'G054_209'
+		                    AND   CCH.SEND_DT <![CDATA[<]]> NOW()
+		                    )
 	</select>
 
 	<!--회원등급정책 목록-->
@@ -315,7 +328,7 @@
 	</select>
 
 	<!--변경된 회원등급 이력 생성-->
-	<insert id="createChangeCustGradeHst" parameterType="CustGrade" timeout="100">
+	<insert id="createChangeCustGradeHst" parameterType="CustGrade" timeout="600">
 		/*TsbCustomerDao.createChangeCustGradeHst*/
 		INSERT INTO TB_CUST_GRADE_HST (
 		       CUST_NO
@@ -370,7 +383,7 @@
 	</insert>
 
 	<!--변경된등급 회원 이력 생성-->
-	<insert id="createChangeCustomerHst" parameterType="CustGrade" timeout="100">
+	<insert id="createChangeCustomerHst" parameterType="CustGrade" timeout="600">
 		/*TsbCustomerDao.createChangeCustomerHst*/
 		INSERT INTO TB_CUSTOMER_HST (
 		       CUST_NO
@@ -471,7 +484,7 @@
 	</insert>
 
 	<!--회원등급 변경 처리-->
-	<update id="updateCustomerGrade" parameterType="CustGrade" timeout="100">
+	<update id="updateCustomerGrade" parameterType="CustGrade" timeout="600">
 		/*TsbCustomerDao.updateCustomerGrade*/
 		UPDATE TB_CUSTOMER C
 		INNER JOIN
@@ -482,6 +495,26 @@
 		     , UPD_NO = #{updNo}
 		WHERE  CGH.APPLY_YMD = DATE_FORMAT(NOW(), '%Y%m%d')
 	</update>
+
+	<!--회원등급 대상 목록-->
+	<select id="getCustGradeChangeTargetList" parameterType="CustomerSearch" resultType="Customer">
+		/*TsbCustomerDao.getCustGradeChangeTargetList*/
+		SELECT C.CUST_NO
+		     , C.CUST_NM
+		     , C.CELL_PHNNO
+		     , C.EMAIL
+		     , C.SMS_AGREE_YN
+		     , C.EMAIL_AGREE_YN
+		     , FN_GET_CODE_NM('G110', CGH.GRADE_ACD) AS CUST_GRADE_NM
+		     , SUBSTR(CGH.APPLY_YMD, 5, 2) AS MM
+		FROM   TB_CUSTOMER C
+		INNER JOIN
+		       TB_CUST_GRADE_HST CGH
+		ON     C.CUST_NO = CGH.CUST_NO
+		WHERE  C.CUST_STAT = 'G104_10'
+		AND    C.SITE_CD = #{siteCd}
+		AND    CGH.APPLY_YMD = DATE_FORMAT(NOW(), '%Y%m%d')
+	</select>
 	
 	<!-- 넷퍼시메일솔루션 회원정보 Truncate -->
 	<delete id="truncateNetpathyMailCustomer">
@@ -603,6 +636,11 @@
 		         , RANK() OVER(PARTITION BY CR.CPN_ID, CR.CPN_TARGET ORDER BY REF_VAL) AS RK
 		    FROM   TB_COUPON_REFVAL CR
 		    WHERE  CR.CPN_TARGET != 'G260_14' /*제외상품아닌넘*/
+		    AND    CR.CPN_ID IN (
+		                         SELECT GRADE_CPN_ID3
+		                         FROM   TB_CUST_GRADE_POLICY
+		                         WHERE  USE_YN = 'Y'
+		                         )
 		)
 		, TAB_COUPON_REFVAL2 AS (
 		    SELECT CPN_ID
@@ -622,6 +660,7 @@
 		    GROUP  BY CPN_ID, CPN_TARGET
 		)
 		SELECT C.CUST_NO
+		     , C.CUST_NM
 		     , C.EMAIL
 		     , C.CELL_PHNNO
 		     , C.SMS_AGREE_YN
@@ -653,6 +692,12 @@
 		        WHERE  CCP.CUST_NO = C.CUST_NO
 		        AND    CCP.CPN_ID = CO.CPN_ID
 		       )                                                                            AS CPN_CNT
+		     , CONCAT(CR.REF_VAL, CASE WHEN CR.CPN_TARGET = 'G260_10' AND CR.CNT > 1 THEN ' 외'
+		                               WHEN CR.CPN_TARGET = 'G260_11' AND CR.CNT > 1 THEN ' 외'
+		                               WHEN CR.CPN_TARGET = 'G260_12' AND CR.CNT > 2 THEN ' 외'
+		                               WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
+		                               ELSE ''
+		                          END) AS TGT_CONDITION /*대상조건*/
 		FROM   TB_CUSTOMER C
 		INNER JOIN
 		       TB_BATCH_BIRTH BB
@@ -671,8 +716,8 @@
 		WHERE  C.CUST_STAT = 'G104_10'
 		AND    C.SITE_CD = #{siteCd}
 		AND    (C.SMS_AGREE_YN = 'Y' OR C.EMAIL_AGREE_YN = 'Y')
-		AND    SUBSTR(BB.BIRTH_YMD, 5,8) > DATE_FORMAT(DATE_ADD(LAST_DAY(NOW()), INTERVAL -1 MONTH ), '%m%d')
-		AND    SUBSTR(BB.BIRTH_YMD, 5,8) <![CDATA[<]]> DATE_FORMAT(DATE_ADD(LAST_DAY(NOW()), INTERVAL 1 DAY), '%m%d')
+		AND    SUBSTR(BB.BIRTH_YMD, 5, 4) > DATE_FORMAT(DATE_ADD(LAST_DAY(NOW()), INTERVAL -1 MONTH ), '%m%d')
+		AND    SUBSTR(BB.BIRTH_YMD, 5, 4) <![CDATA[<]]> DATE_FORMAT(DATE_ADD(LAST_DAY(NOW()), INTERVAL 1 DAY), '%m%d')
 		AND    NOT EXISTS (
 		                   SELECT 1
 		                   FROM   TB_CUST_CONTACT_HST CCH