Просмотр исходного кода

Merge branch 'sowon' into develop

sowon4187 5 лет назад
Родитель
Сommit
029853435b

+ 10 - 2
src/main/java/com/style24/batch/biz/dao/TsbPointDao.java

@@ -2,9 +2,7 @@ package com.style24.batch.biz.dao;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Point;
-import com.style24.persistence.domain.Social;
 
-import org.springframework.dao.DataAccessException;
 import org.springframework.stereotype.Repository;
 
 import java.util.Collection;
@@ -58,5 +56,15 @@ public interface TsbPointDao {
 	 * @since  2021. 04. 26
 	 */
 	void updateCustPointExpire(Point point);
+	
+	/**
+	 * 포인트 기간만료 알림톡(30일) 리스트
+	 *
+	 * @param point
+	 * @return Collection<Point>
+	 * @author sowon
+	 * @since  2021. 05. 28
+	 */
+	Collection<Point> getSendPointExpectList(Point point);
 
 }

+ 60 - 0
src/main/java/com/style24/batch/biz/job/marketing/TsbExpectPointJob.java

@@ -0,0 +1,60 @@
+package com.style24.batch.biz.job.marketing;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.gagaframework.web.parameter.GagaMap;
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbPointService;
+import com.style24.core.biz.service.TscKakaotalkService;
+import com.style24.persistence.domain.Point;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class TsbExpectPointJob  extends TsbAbstractJob<Collection<Point>, GagaMap, GagaMap>{
+	
+	@Autowired
+	TsbPointService pointService;
+	
+	@Autowired
+	TscKakaotalkService kakaoService;
+	
+	private int succCnt = 0;
+	private int failCnt = 0;
+
+	
+	@Override
+	public Collection<Point> read() throws Exception {
+		Point point = new Point(); 
+		return pointService.getSendPointExpectList(point);
+	}
+
+	@Override
+	public GagaMap process(Collection<Point> readItem) throws Exception {
+		for (Point point : readItem) {
+			try {
+				kakaoService.sendPointExpectNotify(point, point.getCustNo());
+				succCnt++;
+			} catch (Exception e) {
+				failCnt++;
+				log.error(e.getMessage());
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public GagaMap write(GagaMap convertedItem) throws Exception {
+		return null;
+	}
+
+	@Override
+	public void notify(GagaMap resultItem) throws Exception {
+		super.printResult(succCnt, failCnt);
+	}
+
+}

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

@@ -74,4 +74,17 @@ public class TsbPointService {
 	public void updateCustPointExpire(Point point) {
 		pointDao.updateCustPointExpire(point);
 	}
+	
+	/**
+	 * 상품권 기간만료 알림톡(30일) 리스트
+	 *
+	 * @param point
+	 * @return Collection<Point>
+	 * @author sowon
+	 * @since  2021. 05. 28
+	 */
+	@Transactional("shopTxnManager")
+	public Collection<Point> getSendPointExpectList(Point point){
+		return pointDao.getSendPointExpectList(point);
+	}
 }

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

@@ -15,6 +15,7 @@ import com.style24.batch.biz.job.customer.TsbSecedeProcessJob;
 import com.style24.batch.biz.job.marketing.TsbAutoBuyConfirmJob;
 import com.style24.batch.biz.job.marketing.TsbBirthdayCouponNoticeJob;
 import com.style24.batch.biz.job.marketing.TsbExpectGiftcardJob;
+import com.style24.batch.biz.job.marketing.TsbExpectPointJob;
 import com.style24.batch.biz.job.marketing.TsbExpireGiftcardJob;
 import com.style24.batch.biz.job.marketing.TsbExpirePointJob;
 import com.style24.batch.biz.job.marketing.TsbReviewGuideJob;
@@ -59,6 +60,9 @@ public class TsbCustomerTask {
 
 	@Autowired
 	private TsbExpirePointJob expirePointJob;
+	
+	@Autowired
+	private TsbExpectPointJob expectPointJob;
 
 	@Autowired
 	private TsbExpireGiftcardJob expireGiftcardJob;
@@ -197,6 +201,19 @@ public class TsbCustomerTask {
 	public void pointExpireJob() throws Exception {
 		expirePointJob.runById("cron.customer.point.expire");
 	}
+	
+	/**
+	 * 포인트 기간만료 알림톡(30일)
+	 *
+	 * @throws Exception - 예외처리
+	 * @author sowon
+	 * @since 2021. 05. 28
+	 */
+	@Scheduled(cron = "${cron.customer.point.expect.notify}")
+	@Async
+	public void pointExpectJob() throws Exception {
+		expectPointJob.runById("cron.customer.point.expect.notify");
+	}
 
 	/**
 	 * 상품권 소멸처리

+ 14 - 0
src/main/java/com/style24/batch/biz/web/TsbCustomerController.java

@@ -211,6 +211,20 @@ public class TsbCustomerController extends TscBaseController {
 		expirePointJob.runById("cron.customer.point.expire");
 		return "OK";
 	}
+	
+	/**
+	 * 포인트 소멸예정 알림톡
+	 *
+	 * @throws Exception - 예외처리
+	 * @author sowon
+	 * @since 2021. 05. 28
+	 */
+	@GetMapping("/point/expect/notify")
+	@ResponseBody
+	public String expectpoint() throws Exception {
+		expectGiftcardJob.runById("cron.customer.point.expect.notify");
+		return "OK";
+	}
 
 	/**
 	 * 상품권 소멸처리

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

@@ -88,4 +88,19 @@
 		WHERE  CUST_PNT_SQ = #{custPntSq}
 	</update>
 	
+	<select id="getSendPointExpectList" parameterType="Point" resultType="Point">
+		/*TsbPointDao.getSendPointExpectList*/
+		SELECT  C.CUST_NO 
+		      , C.CUST_NM 
+		      , C.CELL_PHNNO 
+		      , DATE_FORMAT(CP.EXP_BE_DT, '%Y.%m.%d') AS EXP_BE_DT
+		      , CP.RM_PNT_AMT 
+		FROM TB_CUST_POINT CP INNER JOIN TB_CUSTOMER C 
+		                  ON CP.CUST_NO = C.CUST_NO 
+		WHERE CP.EXP_BE_DT BETWEEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 30 DAY),'%Y-%m-%d'), ' 00:00:00') AND CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 30 DAY),'%Y-%m-%d'), ' 23:59:59')
+		AND CP.RM_PNT_AMT > 0
+		AND CP.EXP_CMP_DT IS NULL
+		AND C.CUST_STAT = 'G104_10' /*활동회원 만 */
+	</select>
+	
 </mapper>