浏览代码

Merge branch 'style' into jmh

jmh 4 年之前
父节点
当前提交
ccdc6d3bc5

+ 65 - 0
src/main/java/com/style24/batch/biz/dao/TsbOrderDao.java

@@ -63,4 +63,69 @@ public interface TsbOrderDao {
 	 * @since 2021. 09. 23
 	 */
 	int updateNaverPayOrderDecision(Order order);
+
+	/**
+	 * 구매확정 임시테이블 데이터 삭제
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	void deleteTempBuyConfirmData();
+
+	/**
+	 * 구매확정 템프 테이블 생성
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	void createTableBuyConfirmDataTmp();
+
+	/**
+	 * 구매확정 임시테이블 데이터 생성
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	int createTempBuyConfirmData();
+
+	/**
+	 * 주문상세 상태 구매확정
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	int updateOrderDetailStatBuyConfirm();
+
+	/**
+	 * 구매확정 주문상세이력 생성
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	int createOrderDetailHstBuyConfirm();
+
+	/**
+	 * 주문상세단품 구매확정
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	int updateOrderDetailItemStatBuyConfirm();
+
+	/**
+	 * 테이블명 DataBak -> Data 변경
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	void renameBuyConfirmDataBakToData();
+
+	/**
+	 * 테이블명 Data -> DataTmp 변경
+	 * @param Order
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	void renameBuyConfirmDataToTmp();
+
 }

+ 40 - 14
src/main/java/com/style24/batch/biz/job/marketing/TsbAutoBuyConfirmJob.java

@@ -2,16 +2,21 @@ 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.TsbOrderService;
 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.TscOrderService;
 import com.style24.core.biz.service.TscPointService;
 import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.OrderChange;
 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.ArrayList;
 import java.util.Collection;
 
 /**
@@ -33,33 +38,54 @@ public class TsbAutoBuyConfirmJob extends TsbAbstractJob<Collection<Point>, Gaga
 	@Autowired
 	private TscPointService corePointService;
 
+	@Autowired
+	private TsbOrderService orderService;
+
 	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);
+		Collection<Point> readItem = new ArrayList<>();
+		return readItem;
 	}
 
 	@Override
 	public GagaMap process(Collection<Point> readItem) throws Exception {
+		// 1. 구매확정 임시 테이블 생성 / 데이터 생성
+		int confirmCnt = orderService.createTempBuyConfirmData();
+		log.info("1. 구매확정 임시테이블 생성 건 : {}", confirmCnt);
+
+		// 대상 있는 경우 구매확정 처리 시작
+		if (confirmCnt > 0) {
+			// 2. 구매확정 상태 변경
+			orderService.cahgneStatButConfirm();
+
+			// 3. 구매확정 대상 중 포인트 지급 대상 조회
+			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);
+			Collection<Point> pointList = pointService.getAutoBuyConfirmList(point);
+			log.info("3. 구매확정 포인트 지급 대상 건 : {}", pointList.size());
+
+			for (Point pointInfo : pointList) {
+				try {
+					pointInfo.setRegNo(TsbConstants.REG_NO);
+					pointInfo.setUpdNo(TsbConstants.REG_NO);
+					corePointService.saveAutoBuyConfirm(pointInfo);
+					succCnt++;
+				} catch (Exception e) {
+					failCnt++;
+				}
 
-		for (Point point: readItem) {
-			try {
-				point.setRegNo(TsbConstants.REG_NO);
-				point.setUpdNo(TsbConstants.REG_NO);
-				corePointService.saveAutoBuyConfirm(point);
-				succCnt++;
-			} catch (Exception e) {
-				failCnt++;
 			}
 
+			// 4. 임시테이블 명 변경
+			orderService.renameTempBuyConfirmData();
 		}
+
 		return null;
 	}
 

+ 61 - 0
src/main/java/com/style24/batch/biz/service/TsbOrderService.java

@@ -9,6 +9,7 @@ import com.style24.batch.biz.dao.TsbOrderDao;
 import com.style24.persistence.domain.Order;
 
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 포인트 Service
@@ -73,4 +74,64 @@ public class TsbOrderService {
 	 * @since 2021. 09. 23
 	 */
 	public int updateNaverPayOrderDecision(Order order) { return orderDao.updateNaverPayOrderDecision(order); }
+
+	/**
+	 * 구매확정 대상 임시테이블 생성
+	 * @return Collection<Order>
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	@Transactional("shopTxnManager")
+	public int createTempBuyConfirmData() {
+		// drop 테이블
+		orderDao.deleteTempBuyConfirmData();
+
+		// create tmp 테이블
+		orderDao.createTableBuyConfirmDataTmp();
+
+		// tmp 테이블 테이터 생성
+		int result = orderDao.createTempBuyConfirmData();
+
+		return result;
+	}
+
+	/**
+	 * 구매확정 임시테이블 명 변경
+	 * @return Collection<Order>
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	@Transactional("shopTxnManager")
+	public void renameTempBuyConfirmData() {
+		// 테이블명 DataBak -> Data 변경
+		orderDao.renameBuyConfirmDataBakToData();
+
+		// 테이블명 Data -> DataTmp 변경
+		orderDao.renameBuyConfirmDataToTmp();
+	}
+
+	/**
+	 * 구매확정 상태 변경
+	 * @return Collection<Order>
+	 * @author yujung
+	 * @since 2021. 10. 01
+	 */
+	@Transactional("shopTxnManager")
+	public int cahgneStatButConfirm() {
+		log.info("2. 구매확정 상태변경");
+
+		// 주문상세 상태 변경
+		int insertDetailCnt = orderDao.updateOrderDetailStatBuyConfirm();
+		log.info("2-1. 주문상세 구매확정 상태변경 건 : {}", insertDetailCnt);
+
+		// 주문상세 이력 생성
+		int insertHstCnt = orderDao.createOrderDetailHstBuyConfirm();
+		log.info("2-2. 구매확정 상태이력 생성 건 : {}", insertHstCnt);
+
+		// 주문상세단품 상태 변경
+		int updateItemCnt = orderDao.updateOrderDetailItemStatBuyConfirm();
+		log.info("2-3. 주문상세단품 구매확정 상태변경 건 : {}", updateItemCnt);
+
+		return updateItemCnt;
+	}
 }

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

@@ -181,6 +181,7 @@ public class TsbCustomerTask {
 	 * @since 2021. 04. 23
 	 */
 	@Scheduled(cron = "${cron.customer.auto.buy.confirm}")
+//	@Scheduled(fixedDelay = 3500000)
 	@Async
 	public void autoBuyConfirmJob() throws Exception {
 		autoBuyConfirmJob.runById("cron.customer.auto.buy.confirm");

+ 237 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsbOrder.xml

@@ -102,4 +102,241 @@
 		   AND PAY_GB = 'O'
 		   AND PAY_AMT <![CDATA[>]]> 0
 	</update>
+
+	<!-- 구매확정 임시테이블 데이터 삭제 -->
+	<delete id="deleteTempBuyConfirmData">
+		/* TsbOrder.deleteTempBuyConfirmData : 구매확정 임시테이블 테이터 삭제 */
+		DROP TABLE IF EXISTS TEMP_BUY_CONFIRM_DATA_BAK
+	</delete>
+
+	<!-- 구매확정 템프 테이블 생성 -->
+	<update id="createTableBuyConfirmDataTmp">
+		/* TsbOrder.deleteTempBuyConfirmData : 구매확정 템프 테이블 생성 */
+		CREATE TABLE TEMP_BUY_CONFIRM_DATA_TMP LIKE TEMP_BUY_CONFIRM_DATA
+	</update>
+
+	<!-- 구매확정 임시테이블 데이터 생성 -->
+	<insert id="createTempBuyConfirmData">
+		/* TsbOrder.createTempBuyConfirmData : 구매확정 임시테이블 데이터 생성 */
+		INSERT INTO TEMP_BUY_CONFIRM_DATA_TMP
+		SELECT OD.ORD_DTL_NO
+		FROM   TB_ORDER_DETAIL OD
+		WHERE  OD.ORD_DTL_STAT = 'G013_60'
+		AND    DATEDIFF(NOW(), OD.DELV_EDDT) > (
+		                                        SELECT STR_SET_VAL2 -- 자동 구매확정처리일수(배송완료일 기준)
+			                                    FROM   TB_ENVSET
+			                                   WHERE  ENVSET_SQ = (
+			                                                        SELECT MAX(ENVSET_SQ)
+			                                                        FROM   TB_ENVSET
+			                                                        WHERE  SITE_CD = 'G000_10'
+			                                                        AND    ENVSET_TYPE = 'D10'
+			                                                       )
+			                                   )
+		AND    NOT EXISTS (
+				           SELECT 1
+				           FROM  TB_ORDER_CHANGE OC
+						   INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+						   ON    OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+				           WHERE OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+				           AND   OCD.CHG_STAT IN ('G685_20', 'G685_21', 'G685_30', 'G685_31', 'G685_32', 'G685_33', 'G685_34', 'G685_50', 'G685_51') -- 교환접수, 교환대기, 회수요청, 상품검수중, 결제대기, 반품진행중, 교환진행중, 반품접수, 반품대기
+				           AND   OCD.DEL_YN = 'N'
+			              )
+	</insert>
+
+	<!-- 테이블명 DataBak -> Data 변경 -->
+	<update id="renameBuyConfirmDataBakToData">
+		/* TsbOrder.renameBuyConfirmDataBakToData : 테이블명 DataBak -> Data 변경 */
+		RENAME TABLE TEMP_BUY_CONFIRM_DATA TO TEMP_BUY_CONFIRM_DATA_BAK
+	</update>
+
+	<!-- 테이블명 Data -> DataTmp 변경 -->
+	<update id="renameBuyConfirmDataToTmp">
+		/* TsbOrder.renameBuyConfirmDataToTmp : 테이블명 Data -> DataTmp 변경 */
+		RENAME TABLE TEMP_BUY_CONFIRM_DATA_TMP TO TEMP_BUY_CONFIRM_DATA
+	</update>
+
+	<!-- 주문상세 상태 구매확정 변경 -->
+	<update id="updateOrderDetailStatBuyConfirm">
+		/* TsbOrder.updateOrderDetailStatBuyConfirm : 주문상세 상태 구매확정 변경 */
+		UPDATE TB_ORDER_DETAIL
+		SET    ORD_DTL_STAT = 'G013_70' -- 구매확정
+		     , UPD_NO = '99999' -- 배치 : 99999
+		     , UPD_DT = NOW()
+		WHERE  ORD_DTL_NO IN (
+		                      SELECT ORD_DTL_NO
+		                      FROM   TEMP_BUY_CONFIRM_DATA_TMP
+		                     )
+	</update>
+
+	<!-- 구매확정 주문상세이력 생성-->
+	<insert id="createOrderDetailHstBuyConfirm">
+		/* Order.createOrderDetailHstBuyConfirm : 구매확정 주문상세이력 생성 */
+		INSERT INTO TB_ORDER_DETAIL_HST (
+										  ORD_DTL_NO
+										, ORD_NO
+										, ORD_EXCH_GB
+										, ORD_DTL_STAT
+										, ORG_ORD_DTL_NO
+										, SUPPLY_COMP_CD
+										, GOODS_CD
+										, DEAL_GOODS_CD
+										, FORMAL_GB
+										, GOODS_TYPE
+										, LIST_PRICE
+										, CURR_PRICE
+										, DC_RATE
+										, OPT_ADD_PRICE
+										, ORD_QTY
+										, ORD_AMT
+										, CNCL_RTN_QTY
+										, CNCL_RTN_AMT
+										, CPN1_CPN_SQ
+										, CPN1_DC_AMT
+										, TMTB1_SQ
+										, TMTB1_DC_AMT
+										, TMTB2_SQ
+										, TMTB2_DC_AMT
+										, GOODS_CPN_SQ
+										, GOODS_CPN_DC_AMT
+										, CART_CPN_SQ
+										, CART_CPN_DC_AMT
+										, BURDEN_RATE
+										, PNT_DC_AMT
+										, PRE_PNT_DC_AMT
+										, SAVE_PNT_AMT
+										, REAL_ORD_AMT
+										, GFCD_USE_AMT
+										, VENDOR_ID
+										, EXTMALL_ID
+										, AGENT_ORDER_ID
+										, EXTMALL_ORDER_ID
+										, CHANGEABLE_YN
+										, CHANGE_FEE_FREE_YN
+										, RETURNABLE_YN
+										, RETURN_FEE_FREE_YN
+										, SOLDOUT_YN
+										, SOLDOUT_MEMO
+										, SOLDOUT_REG_NO
+										, SOLDOUT_REG_DT
+										, DELV_ADDR_SQ
+										, DELV_FEE_CD
+										, SHOT_DELV_YN
+										, GIFT_PACK_YN
+										, GIFT_ADDR_INP_YN
+										, MAKE_GOODS_YN
+										, ENTRY_NO
+										, DELV_LOC_CD
+										, DELV_ASSIGN_DT
+										, DELV_ASSIGN_STAT
+										, DSTRBT_NOTE
+										, DELV_STDT
+										, DELV_EDDT
+										, SHIP_COMP_CD
+										, INVOICE_NO
+										, INVOICE_SEND_YN
+										, SELL_STORE_CD
+										, SELL_FEE_RATE
+										, AF_LINK_CD
+										, ITHR_CD
+										, CONTENTS_LOC
+										, PLAN_DTL_SQ
+										, SOCIAL_SQ
+										, REG_NO
+										, REG_DT
+										, UPD_NO
+										, UPD_DT
+		)
+		SELECT ORD_DTL_NO
+			 , ORD_NO
+			 , ORD_EXCH_GB
+			 , ORD_DTL_STAT
+			 , ORG_ORD_DTL_NO
+			 , SUPPLY_COMP_CD
+			 , GOODS_CD
+			 , DEAL_GOODS_CD
+			 , FORMAL_GB
+			 , GOODS_TYPE
+			 , LIST_PRICE
+			 , CURR_PRICE
+			 , DC_RATE
+			 , OPT_ADD_PRICE
+			 , ORD_QTY
+			 , ORD_AMT
+			 , CNCL_RTN_QTY
+			 , CNCL_RTN_AMT
+			 , CPN1_CPN_SQ
+			 , CPN1_DC_AMT
+			 , TMTB1_SQ
+			 , TMTB1_DC_AMT
+			 , TMTB2_SQ
+			 , TMTB2_DC_AMT
+			 , GOODS_CPN_SQ
+			 , GOODS_CPN_DC_AMT
+			 , CART_CPN_SQ
+			 , CART_CPN_DC_AMT
+			 , BURDEN_RATE
+			 , PNT_DC_AMT
+			 , PRE_PNT_DC_AMT
+			 , SAVE_PNT_AMT
+			 , REAL_ORD_AMT
+			 , GFCD_USE_AMT
+			 , VENDOR_ID
+			 , EXTMALL_ID
+			 , AGENT_ORDER_ID
+			 , EXTMALL_ORDER_ID
+			 , CHANGEABLE_YN
+			 , CHANGE_FEE_FREE_YN
+			 , RETURNABLE_YN
+			 , RETURN_FEE_FREE_YN
+			 , SOLDOUT_YN
+			 , SOLDOUT_MEMO
+			 , SOLDOUT_REG_NO
+			 , SOLDOUT_REG_DT
+			 , DELV_ADDR_SQ
+			 , DELV_FEE_CD
+			 , SHOT_DELV_YN
+			 , GIFT_PACK_YN
+			 , GIFT_ADDR_INP_YN
+			 , MAKE_GOODS_YN
+			 , ENTRY_NO
+			 , DELV_LOC_CD
+			 , DELV_ASSIGN_DT
+			 , DELV_ASSIGN_STAT
+			 , DSTRBT_NOTE
+			 , DELV_STDT
+			 , DELV_EDDT
+			 , SHIP_COMP_CD
+			 , INVOICE_NO
+			 , INVOICE_SEND_YN
+			 , SELL_STORE_CD
+			 , SELL_FEE_RATE
+			 , AF_LINK_CD
+			 , ITHR_CD
+			 , CONTENTS_LOC
+			 , PLAN_DTL_SQ
+			 , SOCIAL_SQ
+			 , '99999' -- 배치 : 99999
+			 , NOW()
+			 , '99999' -- 배치 : 99999
+			 , NOW()
+		FROM   TB_ORDER_DETAIL
+		WHERE  ORD_DTL_NO IN (
+			                  SELECT ORD_DTL_NO
+			                  FROM   TEMP_BUY_CONFIRM_DATA_TMP
+		                     )
+	</insert>
+
+	<!-- 주문상세단품 구매확정 -->
+	<update id="updateOrderDetailItemStatBuyConfirm">
+		/* Order.updateOrderDetailItemStatBuyConfirm : 주문상세단품 구매확정 */
+		UPDATE TB_ORDER_DETAIL_ITEM
+		SET    ORD_DTL_STAT = 'G013_70' -- 구매확정
+		     , UPD_NO = '99999' -- 배치 : 99999
+		     , UPD_DT = NOW()
+		WHERE  ORD_DTL_NO IN (
+			                  SELECT ORD_DTL_NO
+			                  FROM   TEMP_BUY_CONFIRM_DATA_TMP
+		                     )
+	</update>
+
 </mapper>

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

@@ -11,30 +11,17 @@
 		     , 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
+		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 OD.ORD_DTL_NO
-		                         FROM   TB_ORDER_DETAIL OD
-		                         WHERE  OD.ORD_DTL_STAT = 'G013_60'
-		                         AND    DATEDIFF(NOW(), OD.DELV_EDDT) > #{autoBuyConfirmDays}
-		                         AND    NOT EXISTS (
-		                                            SELECT 1
-		                                            FROM  TB_ORDER_CHANGE OC
-		                                            INNER JOIN
-		                                                  TB_ORDER_CHANGE_DETAIL OCD
-		                                            ON    OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
-		                                            WHERE OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-		                                            AND   OCD.CHG_STAT IN ('G685_20', 'G685_21', 'G685_30', 'G685_31', 'G685_32', 'G685_33', 'G685_34', 'G685_50', 'G685_51')
-		                                            AND   OCD.DEL_YN = 'N'
-			                                       )
+		                         SELECT ORD_DTL_NO
+		                         FROM   TEMP_BUY_CONFIRM_DATA_TMP
 		                         )
 		GROUP BY CPH.ORD_NO, CPH.ORD_DTL_NO , CPH.CUST_NO
-		HAVING SUM(PNT_AMT) >= 0
+		HAVING SUM(PNT_AMT) > 0
 	</select>
 	
 	<select id="getExpirePointList" parameterType="Point" resultType="Point">