Parcourir la source

1. 어드민 교환철회 개발

card007 il y a 5 ans
Parent
commit
4454ae0cf6

+ 39 - 0
src/main/java/com/style24/core/biz/dao/TscOrderChangeDao.java

@@ -276,4 +276,43 @@ public interface TscOrderChangeDao {
 	 */
 	Order getAddDeliveryFeePayment(OrderChange orderChange);
 
+	/**
+	 * 추가배송비 결제 취소 정보 생성
+	 *
+	 * @param Order - 주문 정보
+	 * @return 
+	 * @author card007
+	 * @since 2021. 02. 02
+	 */
+	int createAddDeliveryFeeCancelPayment(Order order);
+
+	/**
+	 * 교환철회 주문상세 상태코드 변경
+	 *
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 02
+	 */
+	int updateOrderDetailForExchangeCancel(Order order);
+
+	/**
+	 * 교환철회 주문단품상세 상태코드 변경
+	 *
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 02
+	 */
+	int updateOrderDetailItemForExchangeCancel(Order order);
+
+	/**
+	 * 교환철회 주문상세단품정보 이력 생성
+	 *
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 02
+	 */
+	int createOrderDetailItemHstForExchangeCancel(Order order);
 }

+ 45 - 15
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -126,7 +126,7 @@ public class TscOrderChangeService {
 		Order order = new Order();
 		order.setOrdNo(mav.getInt("ordNo"));
 		order.setOrdChgSq(mav.getInt("ordChgSq"));
-		order.setOrdDtlStat(TscConstants.OrderChangeStat.CANCEL_CANCEL.value());
+		order.setChgStat(TscConstants.OrderChangeStat.CANCEL_CANCEL.value());
 		order.setRegNo(userNo);
 		order.setUpdNo(userNo);
 		order.setDelYn("Y");
@@ -306,7 +306,7 @@ public class TscOrderChangeService {
 							Order order = new Order();
 							order.setOrdNo(mav.getInt("ordNo"));
 							order.setOrdChgSq(mav.getInt("ordChgSq"));
-							order.setOrdDtlStat(TscConstants.OrderChangeStat.CANCEL_COMPLETE.value());
+							order.setChgStat(TscConstants.OrderChangeStat.CANCEL_COMPLETE.value());
 							order.setUpdNo(userNo);
 							order.setDelYn("N");
 							orderChangeDao.updateOrderChangeDtlCancel(order);
@@ -619,7 +619,7 @@ public class TscOrderChangeService {
 		Order order = new Order();
 		order.setOrdNo(mav.getInt("ordNo"));
 		order.setOrdChgSq(mav.getInt("ordChgSq"));
-		order.setOrdDtlStat(TscConstants.OrderChangeStat.RETURN_CANCEL.value());
+		order.setChgStat(TscConstants.OrderChangeStat.RETURN_CANCEL.value());
 		order.setRegNo(userNo);
 		order.setUpdNo(userNo);
 		order.setDelYn("Y");
@@ -882,31 +882,61 @@ public class TscOrderChangeService {
 	 * @author card007
 	 * @since 2021. 02. 01
 	 */
+	@Transactional("shopTxnManager")
 	public GagaMap exchangeCancel(OrderChange orderChange) {
 		GagaMap result = new GagaMap();
 
-		int ordNo = orderChange.getOrdNo();
-		int ordChgSq = orderChange.getOrdChgSq();
+		int ordNo = orderChange.getOrdNo();					// 주문번호
+		int ordChgSq = orderChange.getOrdChgSq();			// 주문변경번호
+		int regNo = orderChange.getRegNo();					// 등록자번호
+		int updNo = orderChange.getUpdNo();					// 수정자번호
 
 		// 추가배송비 조회
 		Order payment = orderChangeDao.getAddDeliveryFeePayment(orderChange);
 
 		// 추가배송비 결제취소 처리
-		if (payment != null) {
+		if (payment != null && payment.getPayAmt() > 0) {
+			payment.setOrdNo(ordNo);
+			payment.setOrdChgSq(ordChgSq);
+			payment.setPayAmt(payment.getPayAmt() * -1);
+			payment.setPayStat(TscConstants.PaymentStat.PAYMENT_WAIT.value());
+			payment.setPayGb(TscConstants.PaymentGb.DELIVERY.value());
+			payment.setRegNo(regNo);
+			payment.setUpdNo(updNo);
+			orderChangeDao.createAddDeliveryFeeCancelPayment(payment);
 			
+			// TODO
+			// PG취소처리
 		}
 
-		
-		// TB_ORDER_CHANGE.addPayCost > 0
-		// TB_DELIVERY_FEE.paySq <> 0
-		// TB_PAYMENT ORD_NO, ORD_CHG_SQ 조회조건 걸어서 sum(pay_amt > 0) 취소 안한놈임 
-		// PG 취소 떤짐
-		
+		// 교환철회 처리
+		Order exchangeCancel = new Order();
+		exchangeCancel.setOrdNo(ordNo);
+		exchangeCancel.setOrdChgSq(ordChgSq);
+		exchangeCancel.setOrdDtlStat(TscConstants.OrderDetailStat.EXCHANGE_CANCEL.value());
+		exchangeCancel.setChgStat(TscConstants.OrderChangeStat.EXCHANGE_CANCEL.value());
+		exchangeCancel.setDelYn("Y");
+		exchangeCancel.setRegNo(regNo);
+		exchangeCancel.setUpdNo(updNo);
+
 		// TB_ORDER_DETAIL 상태값 변경
+		orderChangeDao.updateOrderDetailForExchangeCancel(exchangeCancel);
+
+		// TB_ORDER_DETAIL_HST 생성
+		orderChangeDao.createOrderDtlHstCancel(exchangeCancel);
+
 		// TB_ORDER_DETAIL_ITEM 상태값 변경
-		// TB_ORDER_CHANGE 상태값 변경
-		// TB_ORDER_CHANGE_DETAIL DEL_YN Y로 업데이트
-		// 
+		orderChangeDao.updateOrderDetailItemForExchangeCancel(exchangeCancel);
+
+		// TB_ORDER_DETAIL_ITEM_HST 생성
+		orderChangeDao.createOrderDetailItemHstForExchangeCancel(exchangeCancel);
+
+		// TB_ORDER_CHANGE_DETAIL 상태값 변경 및 DEL_YN Y로 업데이트
+		orderChangeDao.updateOrderChangeDtlCancel(exchangeCancel);
+
+		// 결과값 처리
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+
 		return result;
 	}
 

+ 17 - 0
src/main/java/com/style24/core/support/env/TscConstants.java

@@ -271,6 +271,23 @@ public class TscConstants {
 			return value;
 		}
 	}
+	
+	// 결제구분
+	public enum PaymentGb {
+		ORDER("O"),							// 주문시결제
+		DELIVERY("D"),						// 배송시결제
+		ERROR("E");							// 에러(강제 결제 태울 때 또는 에러일 때)
+
+		private String value;
+
+		private PaymentGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
 
 	// 결제상태
 	public enum PaymentStat {

+ 11 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -220,6 +220,7 @@
 						  FROM TB_ORDER O
 						 INNER JOIN TB_ORDER_DETAIL OD
 							ON O.ORD_NO = OD.ORD_NO
+						   AND OD.ORD_DTL_STAT <![CDATA[<>]]> 'G013_97'			-- 교환철회 상품 제외
 						 INNER JOIN TB_GOODS G1
 							ON OD.GOODS_CD = G1.GOODS_CD
 						 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
@@ -514,6 +515,7 @@
 		  FROM TB_ORDER O
 		 INNER JOIN TB_ORDER_DETAIL OD
 		    ON O.ORD_NO = OD.ORD_NO
+		   AND OD.ORD_DTL_STAT <![CDATA[<>]]> 'G013_97'			-- 교환철회 상품 제외
 		 INNER JOIN TB_GOODS G1
 		    ON OD.GOODS_CD = G1.GOODS_CD
 		 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
@@ -633,6 +635,7 @@
 				    ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
 				 WHERE 1 = 1
 				   AND OD.ORD_NO = #{ordNo}
+				   AND OD.ORD_DTL_STAT <![CDATA[<>]]> 'G013_97'			-- 교환철회 상품 제외
 			   ) Z
 		 ORDER BY Z.DELV_ADDR_SQ
 	</select>
@@ -659,6 +662,10 @@
 		 WHERE 1 = 1
 		   AND P.ORD_NO = #{ordNo}
 		   AND P.PAY_STAT = 'G016_30'
+		   AND NOT EXISTS (SELECT 1
+							 FROM TB_ORDER_CHANGE_DETAIL OCD
+							WHERE P.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+							  AND OCD.CHG_STAT = 'G685_31')
 		 ORDER BY P.REG_DT DESC
 	</select>
 
@@ -676,6 +683,10 @@
 				  FROM TB_DELIVERY_FEE DF
 				 WHERE 1 = 1
 				   AND DF.ORD_NO = #{ordNo}
+				   AND NOT EXISTS (SELECT 1
+									 FROM TB_ORDER_CHANGE_DETAIL OCD
+									WHERE DF.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+									  AND OCD.CHG_STAT = 'G685_31')
 		  ) Z
 		 GROUP BY Z.DELV_FEE_GB
 				, Z.DELV_FEE_GB_NM

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

@@ -152,7 +152,7 @@
 	
 	<!-- 주문변경신청목록 조회 (취소, 반품, 교환) -->
 	<select id="getOrderChangeDetailList" parameterType="Order" resultType="Order">
-		/* order.getOrderChangeList */
+		/* order.getOrderChangeDetailList */
 		SELECT OCD.ORD_CHG_SQ
 			 , OCD.ORD_DTL_NO
 			 , OC.CHG_GB
@@ -877,7 +877,7 @@
 	<update id="updateOrderChangeDtlCancel" parameterType="Order">
 		/* OrderChange.updateOrderChangeDtlCancel */
 		UPDATE TB_ORDER_CHANGE_DETAIL
-		   SET CHG_STAT = #{ordDtlStat}
+		   SET CHG_STAT = #{chgStat}
 			 , DEL_YN   = #{delYn}
 			 , UPD_NO   = #{updNo}
 			 , UPD_DT   = NOW()
@@ -1611,7 +1611,7 @@
 	<select id="getAddDeliveryFeePayment" parameterType="OrderChange" resultType="Order">
 		/* OrderChange.getAddDeliveryFeePayment */
 		SELECT OC.ORD_CHG_SQ
-			 , SUM(P.PAY_AMT) AS PAY_AMT
+			 , P.PAY_AMT
 		  FROM TB_ORDER_CHANGE OC
 		 INNER JOIN TB_DELIVERY_FEE DF
 		    ON DF.ORD_CHG_SQ = OC.ORD_CHG_SQ
@@ -1620,9 +1620,174 @@
 		    ON P.ORD_CHG_SQ = OC.ORD_CHG_SQ
 		 WHERE OC.ORD_CHG_SQ = #{ordChgSq}
 		   AND OC.ADD_PAY_COST > 0
-		 GROUP BY OC.ORD_CHG_SQ
 	</select>
+	
+	<!-- 추가배송비 결제 취소 정보 생성 -->
+	<insert id="createAddDeliveryFeeCancelPayment" parameterType="Order" keyProperty="paySq">
+		/* OrderChange.createAddDeliveryFeeCancelPayment */
+		INSERT INTO TB_PAYMENT (
+			ORD_NO
+		  , PAY_DT
+		  , PAY_MEANS
+		  , PAY_AMT
+		  , PG_CPN_AMT
+		  , NPAY_PNT_AMT
+		  , PAY_GB
+		  , PAY_STAT
+		  , PG_GB
+		  , PG_TID
+		  , PG_TRADE_NO
+		  , PG_SHOP_ID
+		  , CARD_TYPE
+		  , CARD_KIND
+		  , CARD_BANK
+		  , CARD_NM
+		  , CARD_MIPS
+		  , CARD_PCABLE_YN
+		  , VA_NO
+		  , VA_NM
+		  , VA_BANK
+		  , VA_DEADLINE
+		  , TELECOM
+		  , ESCROW_YN
+		  , ORD_CHG_SQ
+		  , REG_NO
+		  , REG_DT
+		  , UPD_NO
+		  , UPD_DT
+		) 
+		SELECT ORD_NO
+		     , NULL
+		     , PAY_MEANS
+		     , #{payAmt}
+		     , #{pgCpnAmt}
+		     , #{npayPntAmt}
+			 , #{payGb}
+			 , #{payStat}
+		     , PG_GB
+		     , NULL
+		     , NULL
+		     , NULL
+		     , CARD_TYPE
+		     , CARD_KIND
+		     , CARD_BANK
+		     , CARD_NM
+		     , CARD_MIPS
+		     , CARD_PCABLE_YN
+		     , VA_NO
+		     , VA_NM
+		     , VA_BANK
+		     , VA_DEADLINE
+		     , TELECOM
+		     , ESCROW_YN
+		     , #{ordChgSq}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		  FROM TB_PAYMENT
+		 WHERE PAY_SQ = #{paySq}
+	</insert>
+
+	<!-- 교환철회 주문상세 상태코드 변경 -->
+	<update id="updateOrderDetailForExchangeCancel" parameterType="Order">
+		/* OrderChange.updateOrderDetailForExchangeCancel */
+		UPDATE TB_ORDER_DETAIL OD
+		 INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		    ON OD.ORD_DTL_NO = OCD.CHG_ORD_DTL_NO
+		   SET OD.ORD_DTL_STAT = #{ordDtlStat}
+		     , OD.UPD_NO = #{updNo}
+		     , OD.UPD_DT = NOW()
+		 WHERE OCD.ORD_CHG_SQ = #{ordChgSq}
+		   AND OD.ORD_NO = #{ordNo}
+	</update>
+
+	<!-- 교환철회 주문단품상세 상태코드 변경 -->
+	<update id="updateOrderDetailItemForExchangeCancel" parameterType="Order">
+		/* OrderChange.updateOrderDetailItemForExchangeCancel */
+		UPDATE TB_ORDER_DETAIL_ITEM ODI
+			INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+			ON ODI.ORD_DTL_NO = OCD.CHG_ORD_DTL_NO
+		   SET ODI.ORD_DTL_STAT = #{ordDtlStat}
+			 , ODI.UPD_NO = #{updNo}
+			 , ODI.UPD_DT = NOW()
+		 WHERE OCD.ORD_CHG_SQ = #{ordChgSq}
+		   AND ODI.ORD_NO = #{ordNo}
+	</update>
 
+	<!-- 교환철회 주문상세단품정보 이력 생성 -->
+	<insert id="createOrderDetailItemHstForExchangeCancel" parameterType="Order">
+		/* order.createOrderDetailItemHstForExchangeCancel */
+		INSERT INTO TB_ORDER_DETAIL_ITEM_HST (
+			ORD_DTL_ITEM_SQ
+		  , ORD_DTL_NO
+		  , ORD_NO
+		  , ORD_DTL_STAT
+		  , ITEM_CD
+		  , OPT_CD
+		  , OPT_CD1
+		  , OPT_CD2
+		  , SKU_MODEL_NO
+		  , PRODUCT_NO
+		  , PRODUCT_CODE
+		  , ITEM_QTY
+		  , ITEM_PRICE
+		  , OPT_ADD_PRICE
+		  , DISP_ORD
+		  , ORD_AMT
+		  , CNCL_RTN_AMT
+		  , CPN1_DC_AMT
+		  , TMTB1_DC_AMT
+		  , TMTB2_DC_AMT
+		  , GOODS_CPN_DC_AMT
+		  , CART_CPN_DC_AMT
+		  , PNT_DC_AMT
+		  , PRE_PNT_DC_AMT
+		  , SAVE_PNT_AMT
+		  , REAL_ORD_AMT
+		  , GFCD_USE_AMT
+		  , REG_NO
+		  , REG_DT
+		  , UPD_NO
+		  , UPD_DT
+		)
+		SELECT ODI.ORD_DTL_ITEM_SQ
+			 , ODI.ORD_DTL_NO
+			 , ODI.ORD_NO
+			 , ODI.ORD_DTL_STAT
+			 , ODI.ITEM_CD
+			 , ODI.OPT_CD
+			 , ODI.OPT_CD1
+			 , ODI.OPT_CD2
+			 , ODI.SKU_MODEL_NO
+			 , ODI.PRODUCT_NO
+			 , ODI.PRODUCT_CODE
+			 , ODI.ITEM_QTY
+			 , ODI.ITEM_PRICE
+			 , ODI.OPT_ADD_PRICE
+			 , ODI.DISP_ORD
+			 , ODI.ORD_AMT
+			 , ODI.CNCL_RTN_AMT
+			 , ODI.CPN1_DC_AMT
+			 , ODI.TMTB1_DC_AMT
+			 , ODI.TMTB2_DC_AMT
+			 , ODI.GOODS_CPN_DC_AMT
+			 , ODI.CART_CPN_DC_AMT
+			 , ODI.PNT_DC_AMT
+			 , ODI.PRE_PNT_DC_AMT
+			 , ODI.SAVE_PNT_AMT
+			 , ODI.REAL_ORD_AMT
+			 , ODI.GFCD_USE_AMT
+			 , ODI.REG_NO
+			 , ODI.REG_DT
+			 , ODI.UPD_NO
+			 , ODI.UPD_DT
+		  FROM TB_ORDER_DETAIL_ITEM ODI
+		 INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		    ON ODI.ORD_DTL_NO = OCD.CHG_ORD_DTL_NO
+		 WHERE OCD.ORD_CHG_SQ = #{ordChgSq}
+		   AND ODI.ORD_NO = #{ordNo}
+	</insert>
 </mapper>