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

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.batch into develop

swkim 4 лет назад
Родитель
Сommit
e764c4a789

+ 19 - 1
src/main/java/com/style24/batch/biz/dao/TsbOrderDao.java

@@ -6,7 +6,6 @@ import org.springframework.stereotype.Repository;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.Point;
 
 /**
  * 주문 Dao
@@ -45,4 +44,23 @@ public interface TsbOrderDao {
 	 * @since  2021. 07. 13
 	 */
 	Collection<Order> getOrderDepositWaitingCustomerList();
+
+	/**
+	 * 네이버페이 결제형 구매확정 대상 리스트 조회
+	 * 
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 09. 20
+	 */
+	Collection<Order> getNaverPayOrderDecisionList();
+
+	/**
+	 * 네이버페이 결제형 구매확정 여부 수정
+	 * 
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	int updateNaverPayOrderDecision(Order order);
 }

+ 83 - 0
src/main/java/com/style24/batch/biz/job/naverpay/TsbNaverPayOrderDecisionJob.java

@@ -0,0 +1,83 @@
+package com.style24.batch.biz.job.naverpay;
+
+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.TsbOrderService;
+import com.style24.core.biz.service.TscNaverPayService;
+import com.style24.persistence.domain.Order;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 네이버페이 결제형 구매확정 처리 
+ *
+ * @author card007
+ * @since 2021. 09. 23
+ */
+@Component
+@Slf4j
+public class TsbNaverPayOrderDecisionJob extends TsbAbstractJob<Collection<Order>, Collection<Order> , Collection<Order>> {
+
+	@Autowired
+	private TsbOrderService orderService;
+	
+	@Autowired
+	private TscNaverPayService coreNaverPayService;
+
+	private int succCnt = 0;
+	private int failCnt = 0;
+
+	@Override
+	public Collection<Order> read() throws Exception {
+		// 네이버페이 결제형 구매확정 대상 리스트 조회
+		return orderService.getNaverPayOrderDecisionList();
+	}
+
+	@Override
+	public Collection<Order> process(Collection<Order> dataList) throws Exception {
+		succCnt = 0;
+		failCnt = 0;
+
+		for(Order order: dataList) {
+			try {
+				Order result = coreNaverPayService.decideNaverPayOrder(order);
+
+				// 성공
+				if ("200".equals(result.getResultCd())) {
+					if ("Success".equals(result.getResultMsg()) || "AlreadyConfirm".equals(result.getResultMsg())) {
+						// 네이버페이 결제형 구매확정 여부 수정
+						orderService.updateNaverPayOrderDecision(result);
+
+						succCnt++;
+					} else {
+						failCnt++;
+					}
+				}
+				// 실패
+				else {
+					failCnt++;
+				}
+			}catch(Exception e) {
+				e.printStackTrace();
+
+				failCnt++;
+			}
+		}
+		return dataList;
+	}
+
+	@Override
+	public Collection<Order> write(Collection<Order> dataList) throws Exception {
+		return dataList;
+	}
+
+	@Override
+	public void notify(Collection<Order> invoiceList) throws Exception {
+		super.printResult(succCnt, failCnt);
+	}
+
+}

+ 19 - 2
src/main/java/com/style24/batch/biz/service/TsbOrderService.java

@@ -6,9 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.batch.biz.dao.TsbOrderDao;
-import com.style24.batch.biz.dao.TsbPointDao;
 import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.Point;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -56,4 +54,23 @@ public class TsbOrderService {
 	public Collection<Order> getOrderDepositWaitingCustomerList() {
 		return orderDao.getOrderDepositWaitingCustomerList();
 	}
+
+	/**
+	 * 네이버페이 결제형 구매확정 대상 리스트 조회
+	 * 
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	public Collection<Order> getNaverPayOrderDecisionList() { return orderDao.getNaverPayOrderDecisionList(); }
+
+	/**
+	 * 네이버페이 결제형 구매확정 여부 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	public int updateNaverPayOrderDecision(Order order) { return orderDao.updateNaverPayOrderDecision(order); }
 }

+ 30 - 2
src/main/java/com/style24/batch/biz/task/TsbNaverPayTask.java

@@ -1,11 +1,22 @@
 package com.style24.batch.biz.task;
 
-import com.style24.batch.biz.job.naverpay.*;
-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 com.style24.batch.biz.job.naverpay.TsbNaverPayOrderDecisionJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderCancelCompleteJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderCancelReqJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderCompleteJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderConfirmJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderExchangeReqJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvOrderReturnReqJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPayRecvWdInvoiceNoJob;
+import com.style24.batch.biz.job.naverpay.TsbNaverPaySendReadyDeliveryJob;
+
+import lombok.extern.slf4j.Slf4j;
+
 /**
  *
  * 네이버페이 주문형 Task
@@ -40,6 +51,9 @@ public class TsbNaverPayTask {
 	@Autowired
 	private TsbNaverPayRecvWdInvoiceNoJob recvWdInvoiceNoJob;
 
+	@Autowired
+	private TsbNaverPayOrderDecisionJob naverPayOrderDecisionJob;
+
 	/**
 	 * 네이버페이 주문형 배치 실행
 	 *
@@ -92,4 +106,18 @@ public class TsbNaverPayTask {
 
 		// // 교환 반려 주문 정보 송신 > 관리자 교환반려 버튼 클릭시 송부로 변경 (완료)
 	}
+
+	/**
+	 * 네이버페이 결제형 구매확정
+	 *
+	 * @throws Exception
+	 * @author card007
+	 * @since 2021. 09. 23
+	 */
+	@Scheduled(cron = "${cron.naverPay.order.decision}")
+	// @Scheduled(fixedDelay = 3500000)
+	@Async
+	public void orderDecision() throws Exception {
+		naverPayOrderDecisionJob.runById("cron.naverPay.order.decision");
+	}
 }

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

@@ -1,11 +1,18 @@
 package com.style24.batch.biz.task;
 
-import com.style24.batch.biz.job.order.*;
 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.order.TsbCartAddCouponPushJob;
+import com.style24.batch.biz.job.order.TsbCartExpirationJob;
+import com.style24.batch.biz.job.order.TsbCartUnpurchasePushJob;
+import com.style24.batch.biz.job.order.TsbOrderDepositExpirationJob;
+import com.style24.batch.biz.job.order.TsbOrderDepositWaitingNotifyJob;
+import com.style24.batch.biz.job.order.TsbOrderGiftExpirationJob;
+import com.style24.batch.biz.job.order.TsbWishAddCouponPushJob;
+
 import lombok.extern.slf4j.Slf4j;
 
 /**

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

@@ -620,6 +620,7 @@
 			   AND NOT EXISTS (SELECT '1' FROM TB_GOODS_RES_SELL WHERE GOODS_CD = B.GOODS_CD AND USE_YN ='Y') 
 			   AND 'Y' = CASE WHEN B.GIFT_PACK_YN ='Y' AND B.GIFT_ADDR_INP_YN = 'N' THEN 'N' ELSE 'Y' END 
 			   AND A.ORD_DT <= DATE_ADD(NOW(), INTERVAL -30 SECOND) -- 30초 DELAY
+			   AND 'Y' = (SELECT BI.BIZDAY_YN FROM TB_BIZDAY BI WHERE BIZDAY  = DATE_FORMAT(NOW(),'%Y%m%d'))
 			   AND NOT EXISTS (
 			                SELECT 1
 			                  FROM TB_DELIVERY_ASSIGN
@@ -647,6 +648,7 @@
 			   AND 1 >= FN_GET_BIZDAYS(DATE_FORMAT(CASE WHEN E.WD_BF_SEND_YN = 'Y' THEN B.REG_DT ELSE D.COMPLETE_DT END, '%Y%m%d') , DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY ), '%Y%m%d'))
 			   AND CASE WHEN E.WD_BF_SEND_YN = 'Y' THEN B.REG_DT ELSE D.COMPLETE_DT END <= DATE_ADD(NOW(), INTERVAL -30 SECOND)
 			   AND NOT EXISTS (SELECT 1 FROM TB_EXCHANGE_DELV_FAIL WHERE ORD_NO = A.ORD_NO AND ORD_DTL_NO= D.CHG_ORD_DTL_NO AND ORD_CHG_SQ = D.ORD_CHG_SQ AND DELV_CNCL_YN ='N')
+			   AND 'Y' = (SELECT BI.BIZDAY_YN FROM TB_BIZDAY BI WHERE BIZDAY  = DATE_FORMAT(NOW(),'%Y%m%d'))
 			   AND NOT EXISTS (
 			                SELECT 1
 			                  FROM TB_DELIVERY_ASSIGN
@@ -671,6 +673,7 @@
 			   AND B.ORD_EXCH_GB   = 'O'       -- 주문 
 			   AND 1 >= FN_GET_BIZDAYS(DATE_FORMAT(CASE WHEN  A.ORD_DT < D.DELV_RES_DT THEN D.DELV_RES_DT ELSE A.ORD_DT END, '%Y%m%d') , DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY ), '%Y%m%d'))
 			   AND 'Y' = CASE WHEN B.GIFT_PACK_YN ='Y' AND B.GIFT_ADDR_INP_YN = 'N' THEN 'N' ELSE 'Y' END 
+			   AND 'Y' = (SELECT BI.BIZDAY_YN FROM TB_BIZDAY BI WHERE BIZDAY  = DATE_FORMAT(NOW(),'%Y%m%d'))
 			   AND NOT EXISTS (
 			                SELECT 1
 			                  FROM TB_DELIVERY_ASSIGN
@@ -1595,6 +1598,7 @@
 		 WHERE B.REASON_CODE IN ('08','10')
 		   AND A.RECALL_STAT ='P'
 		   AND NOT EXISTS (SELECT 1 FROM TB_EXCHANGE_DELV_FAIL WHERE ORD_NO = A.ORDER_NO AND ORD_DTL_NO= B.ORDER_DTL_NO) 
+		   AND  EXISTS (SELECT 1 FROM TB_ORDER_DETAIL OD WHERE OD.ORD_DTL_NO = B.ORDER_DTL_NO AND OD.ORD_DTL_STAT != 'G013_99')
 		 GROUP BY A.ORDER_NO 
 	</select>
 		

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

@@ -69,4 +69,37 @@
 		AND    P.PAY_STAT = 'G016_10'
 		AND    CAST(P.VA_DEADLINE AS DATE) = CAST(NOW() AS DATE)
 	</select>
+	
+	<!-- 네이버페이 결제형 구매확정 대상 리스트 조회 -->
+	<select id="getNaverPayOrderDecisionList" resultType="Order">
+		/* TsbOrder.getNaverPayOrderDecisionList */
+		SELECT P.ORD_NO
+		     , P.PG_TID
+		  FROM TB_PAYMENT P
+		  INNER JOIN TB_ORDER_DETAIL OD
+		  ON P.ORD_NO = OD.ORD_NO
+		 WHERE P.PG_GB = 'NAVER'
+		   AND P.PAY_GB = 'O'
+		   AND P.PAY_STAT = 'G016_30'
+		   AND P.PAY_AMT <![CDATA[>]]> 0
+		   AND OD.ORD_EXCH_GB = 'O'
+		   AND OD.ORD_DTL_STAT IN ('G013_50', 'G013_60', 'G013_70')
+		   AND P.NPAY_DECISION_YN = 'N'
+		   AND P.PAY_DT <![CDATA[>]]> DATE_ADD(CURRENT_DATE, INTERVAL -15 DAY)
+		 GROUP BY P.ORD_NO, P.PG_TID
+	</select>
+	
+	<!-- 네이버페이 결제형 구매확정 여부 수정 -->
+	<update id="updateNaverPayOrderDecision" parameterType="Order">
+		/* TsbOrder.updateNaverPayOrderDecision */
+		UPDATE TB_PAYMENT
+		   SET NPAY_DECISION_YN = 'Y'
+		     , UPD_NO = 99999
+		     , UPD_DT = NOW()
+		 WHERE ORD_NO = #{ordNo}
+		   AND NPAY_DECISION_YN = 'N'
+		   AND PAY_STAT = 'G016_30'
+		   AND PAY_GB = 'O'
+		   AND PAY_AMT <![CDATA[>]]> 0
+	</update>
 </mapper>

+ 3 - 3
src/main/java/com/style24/persistence/mybatis/wms/TsbWmsDelivery.xml

@@ -50,7 +50,7 @@
 		  FROM iSTYLE24_WmsIf.DBO.TB_IF_RecallException
 		WHERE 1=1
 		  AND IfStat = '0'
-		  AND StatusCd = '대기'
+		--   AND StatusCd = '대기'
 	</select>
 	
 	<!-- WMS_IF 회수예외 목록 -D -->	
@@ -78,7 +78,7 @@
 		   AND A.DeliveryOrderItemNo = C.DeliveryOrderItemNo 
 		   AND A.SKUCode  = C.SKUCode 
 		   AND A.IfStat = 0
-		   AND B.StatusCd = '대기'
+		--   AND B.StatusCd = '대기'
 	</select>
 	
 	
@@ -98,7 +98,7 @@
 		  FROM iSTYLE24_WmsIf.DBO.TB_IF_RecallExceptionMemo A, iSTYLE24_WmsIf.DBO.TB_IF_RecallException B
 		 WHERE A.RecallExceptionNo = B.RecallExceptionNo
 		   AND A.IfStat = 0
-		   AND B.StatusCd = '대기'
+		 --  AND B.StatusCd = '대기'
 	</select>
 	
 	

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

@@ -138,6 +138,7 @@ cron:
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                  #네이버페이 배치 실행 (20분배치)
     #naverPay.order.batch: 0 0/20 * 1/1 * *               #네이버페이 배치 실행 (20분배치). 네이버페이 검증 완료 후 access.license와 secret.key 설정 후 주석 해제
+    naverPay.order.decision: 2 22 2 29 2 ?              #네이버페이 결제형 구매확정
 
     #통계
     statistics:

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

@@ -145,6 +145,7 @@ cron:
 
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                 #네이버페이 배치 실행 (20분배치)
+    naverPay.order.decision: 2 22 2 29 2 ?              #네이버페이 결제형 구매확정
 
     #통계
     statistics:

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

@@ -145,6 +145,7 @@ cron:
 
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                 #네이버페이 배치 실행 (20분배치)
+    naverPay.order.decision: 2 22 2 29 2 ?              #네이버페이 결제형 구매확정
 
     #통계
     statistics:

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

@@ -138,6 +138,7 @@ cron:
 
     #네이버페이
     naverPay.order.batch: 2 22 2 29 2 ?                  #네이버페이 배치 실행
+    naverPay.order.decision: 0 46 11 * * *               #네이버페이 결제형 구매확정 (1일 1회)
 
     #통계
     statistics:

+ 2 - 0
src/main/resources/config/application.yml

@@ -33,6 +33,7 @@ naver:
         approvePaymentUrl: /naverpay/payments/v2/apply/payment
         paymentOrderUrl: /naverpay/payments/v2/list/history
         cancelPaymentUrl: /naverpay/payments/v1/cancel
+        decideOrderUrl: /naverpay/payments/v1/purchase-confirm
 
 # 네이버페이 API
 naverPay:
@@ -44,6 +45,7 @@ naverPay:
     approvePaymentUrl: /naverpay/payments/v2/apply/payment
     paymentOrderUrl: /naverpay/payments/v2/list/history
     cancelPaymentUrl: /naverpay/payments/v1/cancel
+    decideOrderUrl: /naverpay/payments/v1/purchase-confirm
 
 # 핑거푸시
 fingerPush: