Browse Source

Merge branch 'develop' into jsshin

jsshin 5 years ago
parent
commit
3f10e76c23

+ 45 - 0
src/main/java/com/style24/batch/biz/dao/TsbReviewDao.java

@@ -0,0 +1,45 @@
+package com.style24.batch.biz.dao;
+
+import java.util.Collection;
+
+import org.springframework.stereotype.Repository;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.ReviewGuide;
+
+/**
+ * 상품평 Dao
+ *
+ * @author gagamel
+ * @since 2021. 5. 17
+ */
+@ShopDs
+@Repository
+public interface TsbReviewDao {
+
+	/**
+	 * 상품평등록안내발송대상건 생성
+	 * @param expireDays - 상품평만료일자
+	 * @return 생성건수
+	 * @author gagamel
+	 * @since 2021. 5. 17
+	 */
+	int createReviewGuideSendObjectList(int expireDays);
+
+	/**
+	 * 상품평등록안내발송대상 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 17
+	 */
+	Collection<ReviewGuide> getReviewGuideSendObjectList();
+
+	/**
+	 * 상품평등록안내발송완료 처리
+	 * @param reviewGuide - 상품평등록안내 정보
+	 * @author gagamel
+	 * @since 2021. 5. 17
+	 */
+	void updateReviewGuideSendComplete(ReviewGuide reviewGuide);
+
+}

+ 6 - 6
src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsGoodsStockJob.java

@@ -65,9 +65,9 @@ public class TsbGoodsWmsGoodsStockJob extends TsbAbstractJob<IfProductSku, IfPro
 			//wms상품재고이력 생성
 			goodsService.createWmsProductSkuHst(jobdate);
 
-//			// TB_IF_PRODUCTSKU 작업
-//			goodsService.deleteIfProductSku();
-//
+			// TB_IF_PRODUCTSKU 작업
+			goodsService.deleteIfProductSku();
+
 //			// TB_IF_PRODUCTSKU  생성
 //			Collection<IfProductSku> wmsIfProductSukList = wmsGoodsService.getWmsIfProductSukList();  //테스트 1000건
 //
@@ -95,9 +95,9 @@ public class TsbGoodsWmsGoodsStockJob extends TsbAbstractJob<IfProductSku, IfPro
 //				}
 //
 //			}
-
-			// TB_IF_PRODUCTSKU_HST 생성
-			//goodsService.createWmsProductSkuHst(jobdate);
+//
+//			// TB_IF_PRODUCTSKU_HST 생성
+//			goodsService.createWmsProductSkuHst(jobdate);
 
 			//온라인 상품 재고 적용
 			goodsService.saveGoodsStock();

+ 94 - 0
src/main/java/com/style24/batch/biz/job/marketing/TsbReviewGuideJob.java

@@ -0,0 +1,94 @@
+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.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbReviewService;
+import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.biz.thirdparty.SsgKakaoSender;
+import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.ReviewGuide;
+import com.style24.persistence.domain.SsgDirectMessage;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.parameter.GagaMap;
+
+/**
+ * 상품평등록안내 발송 Job
+ * 
+ * @author gagamel
+ * @since 2021. 5. 17
+ */
+@Component
+@Slf4j
+public class TsbReviewGuideJob extends TsbAbstractJob<String, String, String> {
+
+	@Autowired
+	private TscEnvsetService envsetService;
+
+	@Autowired
+	private TsbReviewService reviewService;
+
+	@Autowired
+	private SsgKakaoSender kakaoSender;
+
+	@Override
+	public String read() throws Exception {
+		return "OK";
+	}
+
+	@Override
+	public String process(String result) throws Exception {
+		// 1.상품평등록가능일수 조회
+		int expireDays = envsetService.getGoodsReviewRegisterDays(TscConstants.Site.STYLE24.value());
+		log.info("1.상품평등록가능일수(구매일로부터): {}일", expireDays);
+
+		// 2.상품평등록안내발송대상건 생성
+		int cnt = reviewService.createReviewGuideSendObjectList(expireDays);
+		log.info("2.상품평등록안내발송대상건: {}건", cnt);
+
+		if (cnt == 0) {
+			log.info("상품평등록안내발송대상건이 없습니다. 서비스를 종료합니다.");
+			return result;
+		}
+
+		// 3.상품평등록안내발송대상 목록
+		Collection<ReviewGuide> reviewGuideList = reviewService.getReviewGuideSendObjectList();
+		if (reviewGuideList != null && !reviewGuideList.isEmpty()) {
+			for (ReviewGuide reviewGuide : reviewGuideList) {
+				SsgDirectMessage dm = new SsgDirectMessage();
+				dm.setFuserid(String.valueOf(reviewGuide.getCustNo()));
+				dm.setFkkoresendtype("LMS");
+				dm.setFdestine(reviewGuide.getCellPhnno());
+
+				// 대체할 문자열 설정
+				GagaMap replaceInfo = new GagaMap();
+				replaceInfo.set("ordNo", reviewGuide.getOrdNo());
+				replaceInfo.setString("custNm", reviewGuide.getCustNm());
+
+				// 4.알림톡 발송
+				kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.ReviewWrite.value(), dm, replaceInfo);
+
+				// 5.상품평등록안내발송완료 처리
+				reviewService.updateReviewGuideSendComplete(reviewGuide);
+			}
+		}
+
+		return result;
+	}
+
+	@Override
+	public String write(String result) throws Exception {
+		return result;
+	}
+
+	@Override
+	public void notify(String result) throws Exception {
+		// Do nothing
+	}
+
+}

File diff suppressed because it is too large
+ 271 - 276
src/main/java/com/style24/batch/biz/service/TsbDeliveryService.java


+ 6 - 5
src/main/java/com/style24/batch/biz/service/TsbGoodsService.java

@@ -32,6 +32,7 @@ import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaDateUtil;
 
 /**
  * 상품 Service
@@ -524,11 +525,11 @@ public class TsbGoodsService {
 
 		}
 
-//		// TB_IF_PRODUCTSKU_HST 2달 전 데이터 삭제
-//		String delYyyymmdd = GagaDateUtil.getOffsetMonth(-2, "yyyyMMdd") + "000000";  //년월일시분초
-//		goodsDao.deleteWmsProductSkuHst(delYyyymmdd);
-//		// TB_IF_PRODUCTSKU_HST 생성
-//		goodsDao.createWmsProductSkuHst(jobdate);
+		// TB_IF_PRODUCTSKU_HST 2달 전 데이터 삭제
+		String delYyyymmdd = GagaDateUtil.getOffsetMonth(-2, "yyyyMMdd") + "000000";  //년월일시분초
+		goodsDao.deleteWmsProductSkuHst(delYyyymmdd);
+		// TB_IF_PRODUCTSKU_HST 생성
+		goodsDao.createWmsProductSkuHst(jobdate);
 
 	}
 

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

@@ -5,6 +5,7 @@ import com.style24.persistence.domain.Point;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collection;
 
@@ -29,6 +30,7 @@ public class TsbPointService {
 	 * @author jsshin
 	 * @since  2021. 04. 23
 	 */
+	@Transactional("shopTxnManager")
 	public Collection<Point> getAutoBuyConfirmList(Point point) {
 		return pointDao.getAutoBuyConfirmList(point);
 	}
@@ -41,6 +43,7 @@ public class TsbPointService {
 	 * @author sowon
 	 * @since  2021. 04. 26
 	 */
+	@Transactional("shopTxnManager")
 	public Collection<Point> getExpirePointList(Point point){
 		return pointDao.getExpirePointList(point);
 	}
@@ -53,6 +56,7 @@ public class TsbPointService {
 	 * @author sowon
 	 * @since  2021. 04. 26
 	 */
+	@Transactional("shopTxnManager")
 	public void saveExpirePointHst(Point point) {
 		pointDao.saveExpirePointHst(point);
 	}
@@ -66,6 +70,7 @@ public class TsbPointService {
 	 * @author sowon
 	 * @since  2021. 04. 26
 	 */
+	@Transactional("shopTxnManager")
 	public void updateCustPointExpire(Point point) {
 		pointDao.updateCustPointExpire(point);
 	}

+ 60 - 0
src/main/java/com/style24/batch/biz/service/TsbReviewService.java

@@ -0,0 +1,60 @@
+package com.style24.batch.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.style24.batch.biz.dao.TsbReviewDao;
+import com.style24.persistence.domain.ReviewGuide;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 상품평 Service
+ *
+ * @author gagamel
+ * @since 2021. 5. 17
+ */
+@Service
+@Slf4j
+public class TsbReviewService {
+
+	@Autowired
+	private TsbReviewDao reviewDao;
+
+	/**
+	 * 상품평등록안내발송대상건 생성
+	 * @param expireDays - 상품평만료일자
+	 * @return 생성건수
+	 * @author gagamel
+	 * @since 2021. 5. 17
+	 */
+	@Transactional("shopTxnManager")
+	public int createReviewGuideSendObjectList(int expireDays) {
+		return reviewDao.createReviewGuideSendObjectList(expireDays);
+	}
+
+	/**
+	 * 상품평등록안내발송대상 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 5. 17
+	 */
+	public Collection<ReviewGuide> getReviewGuideSendObjectList() {
+		return reviewDao.getReviewGuideSendObjectList();
+	}
+
+	/**
+	 * 상품평등록안내발송완료 처리
+	 * @param reviewGuide - 상품평등록안내 정보
+	 * @author gagamel
+	 * @since 2021. 5. 17
+	 */
+	@Transactional("shopTxnManager")
+	public void updateReviewGuideSendComplete(ReviewGuide reviewGuide) {
+		reviewDao.updateReviewGuideSendComplete(reviewGuide);
+	}
+
+}

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

@@ -1,14 +1,15 @@
 package com.style24.batch.biz.task;
 
-import com.style24.batch.biz.job.marketing.TsbBirthdayCouponNoticeJob;
 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.marketing.TsbAutoBuyConfirmJob;
+import com.style24.batch.biz.job.marketing.TsbBirthdayCouponNoticeJob;
 import com.style24.batch.biz.job.marketing.TsbCartExpirationJob;
 import com.style24.batch.biz.job.marketing.TsbExpirePointJob;
+import com.style24.batch.biz.job.marketing.TsbReviewGuideJob;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -27,13 +28,15 @@ public class TsbMarketingTask {
 
 	@Autowired
 	private TsbCartExpirationJob cartExpirationJob;
-	
+
 	@Autowired
 	private TsbExpirePointJob expirePointJob;
 
 	@Autowired
 	private TsbBirthdayCouponNoticeJob birthdayCouponNoticeJob;
 
+	@Autowired
+	private TsbReviewGuideJob reviewGuideJob;
 
 	/**
 	 * 자동구매확정 포인트 지급
@@ -49,7 +52,6 @@ public class TsbMarketingTask {
 		autoBuyConfirmJob.runById("cron.marketing.auto.buy.confirm");
 	}
 
-
 	/**
 	 * 생일쿠폰 다운로드 안내
 	 *
@@ -63,7 +65,7 @@ public class TsbMarketingTask {
 	public void birthdayCouponNoticeJob() throws Exception {
 		birthdayCouponNoticeJob.runById("cron.marketing.birthday.coupon.notice");
 	}
-	
+
 	/**
 	 * 포인트 소멸처리
 	 *
@@ -92,5 +94,16 @@ public class TsbMarketingTask {
 		cartExpirationJob.runById("cron.marketing.cart.expiration");
 	}
 
+	/**
+	 * 상품평등록안내발송 처리
+	 * @throws Exception - 예외처리
+	 * @author gagamel
+	 * @since 2021. 5. 17
+	 */
+	@Scheduled(cron = "${cron.marketing.review.guide}")
+	@Async
+	public void sendReviewRegisterGuide() throws Exception {
+		reviewGuideJob.runById("cron.marketing.review.guide");
+	}
 
 }

+ 36 - 0
src/main/java/com/style24/persistence/domain/ReviewGuide.java

@@ -0,0 +1,36 @@
+package com.style24.persistence.domain;
+
+import com.style24.core.support.util.CryptoUtils;
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품평등록안내 Domain
+ *
+ * @author gagamel
+ * @since 2021. 5. 17
+ */
+@SuppressWarnings("serial")
+@Data
+public class ReviewGuide extends TscBaseDomain {
+
+	private Integer custNo;		// 고객번호
+	private Integer ordNo;		// 주문번호
+	private Integer ordDtlNo;	// 주문상세번호
+	private String goodsCd;		// 상품코드
+	private String custNm;		// 고객명
+	private String cellPhnno;	// 휴대전화번호
+
+	// 암호화 대상 복호화 처리
+	public String getCustNm() {
+		this.custNm = CryptoUtils.decryptAES(this.custNm);
+		return this.custNm;
+	}
+
+	public String getCellPhnno() {
+		this.cellPhnno = CryptoUtils.decryptAES(this.cellPhnno);
+		return this.cellPhnno;
+	}
+
+}

+ 4 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -1440,9 +1440,9 @@
 		     , A.SUPPLY_COMP_CD                      /*온라인업체코드*/
 		FROM  TB_SUPPLY_COMPANY A
 		WHERE  A.DISTRIBUTION_GB  IN ('G065_10', 'G065_11', 'G065_12')  /* 자사 유통구분*/
-		AND UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S') 
+		-- AND UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S') 
 		<![CDATA[
-		AND UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
+		-- AND UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
 		]]>
 	</select>
 	
@@ -1458,9 +1458,9 @@
 		     , A.BRAND_CD
 		FROM   TB_BRAND A
 		WHERE  A.SELF_YN  = 'Y'  /* 자사 */
-		AND A.UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S') 
+		-- AND A.UPD_DT >= DATE_FORMAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 DAY), '%Y%m%d'), '%Y%m%d%H%i%S')  -- eskim 
 		<![CDATA[
-		AND A.UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
+		-- AND A.UPD_DT < DATE_FORMAT(DATE_FORMAT(NOW(), '%Y%m%d'), '%Y%m%d%H%i%S')
 		]]>
 	</select>
 	

+ 62 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsbReview.xml

@@ -0,0 +1,62 @@
+<?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.TsbReviewDao">
+
+	<!-- 상품평등록안내발송대상건 생성 -->
+	<insert id="createReviewGuideSendObjectList" parameterType="int">
+		/* TsbReviewDao.createReviewGuideSendObjectList */
+		INSERT INTO TB_REVIEW_GUIDE (
+		       CUST_NO
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , GOODS_CD
+		     , SEND_YN
+		     , REG_DT
+		)
+		SELECT O.CUST_NO
+		     , OD.ORD_NO
+		     , OD.ORD_DTL_NO
+		     , OD.GOODS_CD
+		     , 'N'           AS SEND_YN
+		     , NOW()         AS REG_DT
+		FROM   TB_ORDER O
+		     , TB_ORDER_DETAIL OD
+		WHERE  O.ORD_NO = OD.ORD_NO
+		AND    O.ORD_DT <![CDATA[>=]]> DATE_ADD(NOW(), INTERVAL -1 * #{expireDays} DAY) /*구매일로부터 90일 이내*/
+		AND    OD.ORD_DTL_STAT IN ('G013_50','G013_60','G013_70') /*배송중,배송완료,구매확정*/
+		AND    NOT EXISTS (SELECT 1
+		                   FROM   TB_REVIEW_GUIDE
+		                   WHERE  CUST_NO = O.CUST_NO
+		                   AND    ORD_NO = OD.ORD_NO
+		                   AND    ORD_DTL_NO = OD.ORD_DTL_NO
+		                   AND    GOODS_CD = OD.GOODS_CD
+		                  )
+	</insert>
+	
+	<!-- 상품평등록안내발송대상 목록 -->
+	<select id="getReviewGuideSendObjectList" resultType="ReviewGuide">
+		/* TsbReviewDao.getReviewGuideSendObjectList */
+		SELECT RG.CUST_NO
+		     , RG.ORD_NO
+		     , RG.ORD_DTL_NO
+		     , RG.GOODS_CD
+		     , C.CUST_NM
+		     , C.CELL_PHNNO
+		FROM   TB_REVIEW_GUIDE RG
+		     , TB_CUSTOMER C
+		WHERE  RG.CUST_NO = C.CUST_NO
+		AND    RG.SEND_YN = 'N' /*미발송건*/
+	</select>
+	
+	<!-- 상품평등록안내발송완료 처리 -->
+	<update id="updateReviewGuideSendComplete" parameterType="ReviewGuide">
+		/* TsbReviewDao.updateReviewGuideSendComplete */
+		UPDATE TB_REVIEW_GUIDE
+		SET    SEND_YN = 'Y'
+		WHERE  CUST_NO = #{custNo}
+		AND    ORD_NO = #{ordNo}
+		AND    ORD_DTL_NO = #{ordDtlNo}
+		AND    GOODS_CD = #{goodsCd}
+	</update>
+	
+</mapper>

+ 7 - 5
src/main/java/com/style24/persistence/mybatis/wms/TsbWmsGoods.xml

@@ -86,7 +86,7 @@
 	<!--WMS 업체정보 송신-->
 	<insert id="saveWmsProvider" parameterType="IfProvider" >
 		/* TsbWmsGoods.saveWmsProvider */
-		MERGE iSTYLE24_WmsIf.dbo.TB_IF_PROVIDER_TEMP      -- 나중에 _TEMP 삭제 
+		MERGE iSTYLE24_WmsIf.dbo.TB_IF_PROVIDER 
 		      USING (SELECT 'AA' AS DUAL) AS B
 		         ON (PROVIDERNO = #{providerno})
 		      WHEN MATCHED THEN
@@ -134,7 +134,7 @@
 	<!--WMS 브랜드정보 송신-->
 	<insert id="saveWmsBrand" parameterType="IfBrand" >
 		/* TsbWmsGoods.saveWmsBrand */
-		MERGE iSTYLE24_WmsIf.dbo.TB_IF_BRAND_TEMP 
+		MERGE iSTYLE24_WmsIf.dbo.TB_IF_BRAND
 		      USING (SELECT 'AA' AS DUAL) AS B
 		         ON (BRANDNO = #{brandno})
 		      WHEN MATCHED THEN
@@ -162,7 +162,7 @@
 	<!--WMS 브랜드업체관계정보 송신-->
 	<insert id="saveWmsBrandProviderXref" parameterType="IfBrand" >
 		/* TsbWmsGoods.saveWmsBrandProviderXref */
-		MERGE INTO iSTYLE24_WmsIf.dbo.TB_IF_BRANDPROVIDERXREF_TEMP      -- 나중에 _TEMP 삭제  
+		MERGE INTO iSTYLE24_WmsIf.dbo.TB_IF_BRANDPROVIDERXREF
 		      USING (SELECT 'AA' AS DUAL) AS B
 		         ON (BRANDNO = #{brandno} AND PROVIDERNO = #{providerno})
 		      WHEN MATCHED THEN
@@ -193,7 +193,7 @@
 	<!--WMS 상품정보 송신-->
 	<update id="saveWmsProduct" parameterType="IfProduct" >
 		/* TsbWmsGoods.saveWmsProduct */
-		UPDATE iSTYLE24_WmsIf.dbo.TB_IF_PRODUCT_TEMP      -- 나중에 _TEMP 삭제 
+		UPDATE iSTYLE24_WmsIf.dbo.TB_IF_PRODUCT
 		SET PRODUCTNAME = #{productname}
 		  , BRANDNO = #{brandno}
 		  , BRANDNAME = #{brandname}
@@ -226,9 +226,11 @@
 		     , C.ISVIRTUALSTOCK
 		     , C.DATEVIRTUALSTOCK
 		     , C.SKUCODE88
-		FROM iSTYLE24_WMSIF.DBO.TB_IF_BRANDPROVIDERXREF_TEMP A
+		FROM iSTYLE24_WMSIF.DBO.TB_IF_PROVIDER P
+		INNER JOIN iSTYLE24_WMSIF.DBO.TB_IF_BRANDPROVIDERXREF A ON P.PROVIDERNO = A.PROVIDERNO
 		INNER JOIN iSTYLE24_WmsIf.dbo.TB_IF_PRODUCT B ON A.BRANDNO  = B.BRANDNO 
 		INNER JOIN iSTYLE24_WmsIf.dbo.TB_IF_PRODUCTSKU C ON B.PRODUCTNO  = C.PRODUCTNO 
+		WHERE P.DISTRIBUTIONCD = '자사'
 	</select>
 	
 </mapper>

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

@@ -137,6 +137,7 @@ cron:
         comback.coupon.notice : 2 22 2 29 2 ?   # 복귀할인쿠폰발급안내(매월 5일)
         expire.point : 2 22 2 29 2 ?            # 포인트 소멸
         cart.expiration : 2 22 2 29 2 ?         # 만료기간 지난 장바구니 삭제
+        review.guide: 2 22 2 29 2 ?             # 상품평등록안내 발송 (일배치)
 
     # 주문
     order:

Some files were not shown because too many files changed in this diff