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

마이페이지 전체취소 임시 커밋

card007 5 лет назад
Родитель
Сommit
97f5481ec1

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

@@ -6,6 +6,7 @@ import java.util.List;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
+import com.style24.persistence.domain.Payment;
 
 /**
  * 취소관리 Dao
@@ -325,4 +326,124 @@ public interface TscOrderChangeDao {
 	 * @since 2021. 02. 02
 	 */
 	int createOrderDetailItemHstForExchangeCancel(Order order);
+
+	/**
+	 * 전체취소 주문상세단품정보 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int updateOrderDetailItemForAllCancel(Order order);
+
+	/**
+	 * 전체취소 주문상세단품이력정보 등록
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int createOrderDetailItemHstForAllCancel(Order order);
+
+	/**
+	 * 마이페이지 포인트 원복 사용포인트 조회
+	 *
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	Collection<Order> getCustPointHst(Order order);
+
+	/**
+	 * 마이페이지 사용포인트 원복 이력 생성
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int createCustPointHstRollback(Order order);
+
+	/**
+	 * 마이페이지 사용포인트 원복 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int updateCustPointRollback(Order order);
+
+	/**
+	 * 마이페이지 상품쿠폰 원복 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int updateGoodsCpnRollback(Order order);
+
+	/**
+	 * 마이페이지 장바구니쿠폰 원복 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int updateCartCpnRollback(Order order);
+
+	/**
+	 * 마이페이지 배송비쿠폰 원복 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int updateDeliveryCpnRollback(Order order);
+
+	/**
+	 * 마이페이지 상품권 원복 사용상품권 조회
+	 *
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	Collection<Order> getCustGiftCardHst(Order order);
+
+	/**
+	 * 마이페이지 사용상품권 원복 이력 생성
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int createCustGiftCardHstRollback(Order order);
+
+	/**
+	 * 마이페이지 사용상품권 원복 수정
+	 *
+	 * @param Order
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	int updateCustGiftCardRollback(Order order);
+
+	/**
+	 * 결제정보 조회
+	 *
+	 * @param Payment
+	 * @return Payment
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	Payment getPaymentInfo(Payment payment);
 }

+ 7 - 0
src/main/java/com/style24/core/biz/service/TscKakaoPayService.java

@@ -125,6 +125,12 @@ public class TscKakaoPayService {
 				payment.setCardMips(kakaoPay.getCard_info().getInstall_month());
 			}
 			
+			// TODO
+			// payMeans 처리 해야됨
+			// "CARD".equals(kakaoPay.getPayment_method_type())
+			// "MONEY".equals(kakaoPay.getPayment_method_type())
+			// kakaoPay.getAmount().getPoint() == kakaoPay.getAmount().getTotal() 포인트결제
+			
 			payment.setResCd(String.valueOf(statusCode));
 			payment.setResMsg(message.getMessage("SUCC_0004"));
 		} else {
@@ -218,6 +224,7 @@ public class TscKakaoPayService {
 			payment.setNpayPntAmt(kakaoPay.getApproved_cancel_amount().getPoint());
 			payment.setResCd(String.valueOf(statusCode));
 			payment.setResMsg(message.getMessage("SUCC_0004"));
+			// 
 
 			orderDao.insertPayment(payment);
 		} else {

+ 6 - 0
src/main/java/com/style24/core/biz/service/TscNaverPayService.java

@@ -117,6 +117,12 @@ public class TscNaverPayService {
 				payment.setCardType("N");	// 신용카드 결제
 				payment.setCardMips(String.valueOf(naverPay.getBody().getDetail().getCardInstCount()));
 			}
+
+			// TODO
+			// payMeans 처리 해야됨
+			// "CARD".equals(naverPay.getBody().getDetail().getPrimaryPayMeans())
+			// "BANK".equals(naverPay.getBody().getDetail().getPrimaryPayMeans())
+			// naverPay.getBody().getDetail().getTotalPayAmount() == naverPay.getBody().getDetail().getNpointPayAmount() 포인트결제
 		}
 
 		payment.setResCd(naverPay.getCode());

+ 273 - 2
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -16,6 +16,7 @@ import com.style24.core.support.env.TscConstants;
 import com.style24.persistence.domain.DeliveryFee;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
+import com.style24.persistence.domain.Payment;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -31,9 +32,18 @@ public class TscOrderChangeService {
 
 	@Autowired
 	private TscOrderChangeDao orderChangeDao;
-	
+
 	@Autowired
 	private TscOrderDao orderDao;
+
+	@Autowired
+	private TscKcpService kcpService;
+
+	@Autowired
+	private TscKakaoPayService kakaoPayService;
+
+	@Autowired
+	private TscNaverPayService naverPayService;
 	
 	/**
 	 * 주문변경정보 (상세번호배열, 취소수량배열) 취소 목록으로 변환 (사용안함)
@@ -182,7 +192,7 @@ public class TscOrderChangeService {
 		}
 		
 		// 4. 주문상세단품정보등록,변경 (단품단위)
-		List<Order> cancelOrderDetailList = new ArrayList<Order>();
+		List<Order> cancelOrderDetailList = new ArrayList<>();
 		
 		for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
 			Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
@@ -420,6 +430,7 @@ public class TscOrderChangeService {
 		
 		// TODO
 		// 9. 포인트원복 (사용포인트, 주문상세단위)
+		// 예정적립포인트 취소처리
 		
 		// TODO
 		// 10. 쿠폰원복 (상품쿠폰, 주문상세단위) (전체취소시 장바구니쿠폰, 배송비쿠폰)
@@ -1248,4 +1259,264 @@ public class TscOrderChangeService {
 	public Collection<Order> getExchangeInfo(Order order) {
 		return orderChangeDao.getExchangeInfo(order);
 	}
+
+	/**
+	 * 전체취소 요청
+	 * 
+	 * @param GagaMap, int
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 04. 15
+	 */
+	@SuppressWarnings("unchecked")
+	@Transactional("shopTxnManager")
+	public GagaMap allCnclComplete(GagaMap map, int userNo) {
+		// 1. 취소요청정보목록
+		List<Order> cancelOrderRefundList 	= (List<Order>) map.get("cancelOrderRefundList");	// 취소환불금액 목록 (주문상세단품 단위)
+		List<Order> cancelDelvRefundList 	= (List<Order>) map.get("cancelDelvRefundList");	// 취소환불배송금액 목록 (DELV_FEE_CD 단위)
+		
+		// 2. 취소신청정보
+		int ordNo 							= Integer.parseInt(map.getString("ordNo"));			// 주문번호
+		String chgReason 					= map.getString("chgReason");						// 변경사유
+		String chgMemo 						= map.getString("chgMemo");							// 변경메모
+		String allCanYnBeforePayment		= map.getString("allCanYnBeforePayment");			// 무통장입금전 전체취소 여부
+		String chgGb						= TscConstants.OrderChangeGb.CANCEL.value(); 		// 취소요청 (공톹코드:G680)
+		String accountNo 					= map.getString("accountNo");						// 환불계좌번호
+		String accountNm 					= map.getString("accountNm");						// 환불계좌주명
+		String bankCd 						= map.getString("bankCd");							// 환불은행
+		String ipAddress					= map.getString("ipAddress");						// IP주소
+		String isCustomer					= map.getString("isCustomer");						// 귀책사유 (고객, 회사)
+		String reqGbn						= map.getString("reqGbn");							// 신청구분
+		// String chgerNm 						= map.getString("chgerNm");							// 변경자
+		// String chgerPhnno 					= map.getString("chgerPhnno");						// 변경핸드폰번호
+		// String chgerTelno 					= map.getString("chgerTelno");						// 변경전화번호
+		// String chgerEmail 					= map.getString("chgerEmail");						// 변경이메일
+		String ordDtlStat;																		// 주문상세상태
+		String chgStat;																			// 주문변경상태
+
+		if ("Y".equals(allCanYnBeforePayment)) {
+			ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value();
+			chgStat = TscConstants.OrderChangeStat.PAYMENT_BEFORE_CANCEL.value();
+		} else {
+			ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value();
+			chgStat = TscConstants.OrderChangeStat.PAYMENT_AFTER_CANCEL.value();
+		}
+
+		// 3. 주문상세단품정보등록, 변경 (단품단위)
+		Order orderDetailItem = new Order();
+		orderDetailItem.setOrdNo(ordNo);
+		orderDetailItem.setOrdDtlStat(ordDtlStat);
+		orderDetailItem.setRegNo(userNo);
+		orderDetailItem.setUpdNo(userNo);
+
+		orderChangeDao.updateOrderDetailItemForAllCancel(orderDetailItem);
+		orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetailItem);
+
+		// 4. 주문변경정보, 주문정보, 환불정보 (배송정책코드별)
+		int pgCancelAmt = 0;
+		for (Order obj : cancelDelvRefundList) {
+			if (obj.getCnclRtnAmt() > 0) {
+				// 4-1. 주문변경 기본정보 설정
+				OrderChange orderChange = new OrderChange();
+				orderChange.setOrdNo(ordNo);
+				orderChange.setChgGb(chgGb);
+				orderChange.setChgReason(chgReason);
+				orderChange.setChgMemo(chgMemo);
+				orderChange.setAddPayCost(0);
+				orderChange.setAddPayAmt(0);
+				// 취소에 필요한 값인지 확인 필요
+				// orderChange.setChgerNm(chgerNm);
+				// orderChange.setChgerPhnno(chgerPhnno);
+				// orderChange.setChgerTelno(chgerTelno);
+				// orderChange.setChgerEmail(chgerEmail);
+				// orderChange.setChgerRtnMemo("");
+				orderChange.setRegNo(userNo);
+				orderChange.setUpdNo(userNo);
+
+				// 4-2. 주문변경 생성
+				orderChangeDao.createOrderChange(orderChange);
+				
+				// 4-3. 주문상세단위 취소정보
+				for (Order vo : cancelOrderRefundList) {
+					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
+						vo.setOrdDtlStat(ordDtlStat);
+						vo.setRegNo(userNo);
+						vo.setUpdNo(userNo);
+						
+						// 4-3-1. 주문상세정보 수정 및 주문상세이력정보 등록
+						orderChangeDao.updateOrderDetail(vo);
+						orderChangeDao.createOrderDetailHstCnclRtn(vo);
+						
+						// 4-3-3. 주문변경상세 및 이력정보 등록
+						OrderChange changeDetailPo = new OrderChange();
+						changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
+						changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
+						changeDetailPo.setChgQty(vo.getOrdCanChgQty());
+						changeDetailPo.setChgStat(chgStat);
+						changeDetailPo.setRegNo(userNo);
+						changeDetailPo.setUpdNo(userNo);
+
+						orderChangeDao.createOrderChangeDetail(changeDetailPo);
+						orderChangeDao.createOrderChangeDetailHst(changeDetailPo);
+
+						// 4-3-4. 사용포인트원복
+						int pntDcAmt = vo.getPntDcAmt();
+						vo.setOccurGb(TscConstants.PointOccurGb.USE_POINT.value());
+
+						for (Order point : orderChangeDao.getCustPointHst(vo)) {
+							while (pntDcAmt > 0) {
+								if (pntDcAmt < point.getPntAmt()) {
+									point.setPntAmt(pntDcAmt);
+									pntDcAmt -= pntDcAmt;
+								} else {
+									pntDcAmt -= point.getPntAmt();
+								}
+
+								point.setOccurGb(TscConstants.PointOccurGb.USE_POINT_CANCEL.value());
+								point.setOccurDtlDesc("포인트사용취소");
+								point.setRegNo(userNo);
+								point.setUpdNo(userNo);
+
+								// 포인트 사용 취소 이력 생성 및 포인트 수정
+								orderChangeDao.createCustPointHstRollback(point);
+								orderChangeDao.updateCustPointRollback(point);
+							}
+						}
+						
+						// 4-3-5. 적립예정포인트 수정
+						int savePntAmt = vo.getSavePntAmt();
+						vo.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT.value());
+
+						for (Order point : orderChangeDao.getCustPointHst(vo)) {
+							point.setOccurGb(TscConstants.PointOccurGb.EXPECT_POINT_CANCEL.value());
+							point.setOccurDtlDesc("예정포인트적립취소");
+							point.setPayAmt(savePntAmt * -1);
+							point.setRegNo(userNo);
+							point.setUpdNo(userNo);
+
+							// 적립예정포인트 취소 이력 생성
+							orderChangeDao.createCustPointHstRollback(point);
+						}
+
+						// 4-3-6. 상품쿠폰원복
+						orderChangeDao.updateGoodsCpnRollback(vo);
+
+						// 4-3-7. 사용상품권 원복
+						int gfcdUseAmt = vo.getGfcdUseAmt();
+
+						for (Order giftCard : orderChangeDao.getCustGiftCardHst(vo)) {
+							while (gfcdUseAmt > 0) {
+								if (gfcdUseAmt < giftCard.getGfcdAmt()) {
+									giftCard.setGfcdAmt(gfcdUseAmt);
+									gfcdUseAmt -= gfcdUseAmt;
+								} else {
+									gfcdUseAmt -= giftCard.getGfcdAmt();
+								}
+
+								giftCard.setOccurGb(TscConstants.GiftCardOccurGb.USE_GIFTCARD_CANCEL.value());
+								giftCard.setOccurDtlDesc("상품권사용취소");
+								giftCard.setRegNo(userNo);
+								giftCard.setUpdNo(userNo);
+
+								// 포인트 사용 취소 이력 생성 및 포인트 수정
+								orderChangeDao.createCustGiftCardHstRollback(giftCard);
+								orderChangeDao.updateCustGiftCardRollback(giftCard);
+							}
+						}
+					}
+				}
+				
+				// 4-4. 상품재고원복
+				orderChange.setSellGb("11");
+				orderChangeDao.createSellQty(orderChange);
+				
+				// 4-5. 환불결제정보 등록 (배송정책별)
+				int spanRefundAmt = obj.getRealOrdAmt() + obj.getDelvFee();
+				
+				Order paymentOrder = new Order();
+				paymentOrder.setOrdNo(ordNo);
+				paymentOrder.setPayAmt(spanRefundAmt * -1);
+				paymentOrder.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
+				paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
+				paymentOrder.setRegNo(userNo);
+				paymentOrder.setUpdNo(userNo);
+
+				orderChangeDao.createPayment(paymentOrder);
+				
+				// 4-6. 환불금액 등록
+				Order refundOrder = new Order();
+				refundOrder.setOrdNo(ordNo);
+				refundOrder.setPaySq(paymentOrder.getPaySq());
+				refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
+				refundOrder.setRefundAmt(spanRefundAmt);
+				refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
+				refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
+				refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
+				refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
+				refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
+				refundOrder.setRfPntAmt(obj.getPntAmt());
+				refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
+				refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
+				refundOrder.setRfDeliveryFee(obj.getRfDeliveryFee());
+				refundOrder.setRfCnclAmt(obj.getRfCnclAmt());
+				refundOrder.setRfRealCnclAmt(obj.getRfRealCnclAmt());
+				refundOrder.setRaNo(accountNo);
+				refundOrder.setRaNm(accountNm);
+				refundOrder.setRaBank(bankCd);
+				refundOrder.setRegNo(userNo);
+
+				orderChangeDao.createRefund(refundOrder);
+
+				pgCancelAmt += spanRefundAmt;
+			}
+		}
+
+		// 장바구니, 배송비 쿠폰 원복처리
+		Order coupon = new Order();
+		coupon.setOrdNo(ordNo);
+		coupon.setUpdNo(userNo);
+		orderChangeDao.updateCartCpnRollback(coupon);
+		orderChangeDao.updateDeliveryCpnRollback(coupon);
+		
+		// 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
+		Order freegiftOrder = new Order();
+		freegiftOrder.setOrdNo(ordNo);
+		freegiftOrder.setUpdNo(userNo);
+		orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
+
+		// TODO
+		// 13. PG 연동
+		// 네이버페이, 카카오페이 취소 시 취소 포인트 금액 TB_PAYMENT에 업데이트 처야함
+		// 상품권 100% 결제 시 PG 점프 해야 됨
+
+		// 원주문 결제 정보 조회
+		Payment payment = new Payment();
+		payment.setOrdNo(ordNo);
+		payment = orderChangeDao.getPaymentInfo(payment);
+
+		// PG 별 취소 처리
+		String pgGb = payment.getPgGb();
+		if (TscConstants.PgGb.KCP.value().equals(pgGb)) {
+			Payment kcp = new Payment();
+			kcp.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
+			kcp.setPayGb("O");
+			kcp.setModType("STSC");
+			kcp.setModDesc("가맹점 취소 - 전체 취소");
+			kcp.setIpAddress(ipAddress);
+			kcp.setPgTid("TODO");
+			kcp.setPayAmt(pgCancelAmt);
+			kcp.setRegNo(userNo);
+			kcp.setUpdNo(userNo);
+			kcpService.kcpCancel(kcp);
+			
+		}
+		
+		
+		
+
+		// TODO
+		// 14. 취소 완료 알림톡 발송 에정
+		
+		return map;
+	}
 }

+ 4 - 0
src/main/java/com/style24/core/biz/service/TscOrderRefundService.java

@@ -125,6 +125,10 @@ public class TscOrderRefundService {
 			orderObj.setPrePntDcAmt((int)(oneData.getPrePntDcAmt() 			* _appQty));
 			orderObj.setSavePntAmt((int)(oneData.getSavePntAmt() 			* _appQty));
 			orderObj.setGfcdUseAmt((int)(oneData.getGfcdUseAmt() 			* _appQty));
+			// TODO
+			// RF_CNCL_AMT 상품취소금액
+			// RF_DELIVERY_FEE (환불배송비 - 추가배송비)
+			// RF_REAL_CNCL_AMT (배송비 제외 환불금액)
 			
 			// 3.4 취소할인합계금액 적용
 			int dcTotAmt		= 0;

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

@@ -325,11 +325,11 @@ public class TscConstants {
 	public enum PayMeans {
 		ACCOUNT_TRANSFER("G014_10"),		// 실시간계좌이체
 		BANK_DEPOSIT("G014_20"),			// 무통장입금
-		CREDIT_CARD("G014_30"),			// 신용카드
-		POINT("G014_40"),				// 포인트
-		COUPON("G014_50"),				// 쿠폰
-		CELL_PHONE("G014_60"),			// 휴대전화
-		EXTMALL("G014_90");				// 외부몰입금
+		CREDIT_CARD("G014_30"),				// 신용카드
+		POINT("G014_40"),					// 포인트
+		COUPON("G014_50"),					// 쿠폰
+		CELL_PHONE("G014_60"),				// 휴대전화
+		EXTMALL("G014_90");					// 외부몰입금
 
 		private String value;
 
@@ -344,12 +344,12 @@ public class TscConstants {
 
 	// PG 구분
 	public enum PgGb {
-		INICIS("INICIS"),	// 이니시스
-		KAKAO("KAKAO"),		// 카카오페이
-		KCP("KCP"),			// KCP
-		NAVER("NAVER"),		// NAVERPAY
-		NICE("NICE"),		// NICEPAY
-		PAYCO("PAYCO");		// PAYCO
+		INICIS("INICIS"),					// 이니시스
+		KAKAO("KAKAO"),						// 카카오페이
+		KCP("KCP"),							// KCP
+		NAVER("NAVER"),						// NAVERPAY
+		NICE("NICE"),						// NICEPAY
+		PAYCO("PAYCO");						// PAYCO
 
 		private String value;
 
@@ -382,12 +382,12 @@ public class TscConstants {
 	
 	// 판매구분
 	public enum SellGb {
-		ORDER("10"),				// 주문(-)
-		ORDER_CANCEL("11"),			// 주문취소(+)
-		SHIP_CANCEL("12"),			// 미출고(+)
-		EXCHANGE("20"),				// 교환신청(-)
-		EXCHANGE_CANCEL("21"),		// 교환취소(+)
-		SALE("30");					// 판매매출반영(+)
+		ORDER("10"),						// 주문(-)
+		ORDER_CANCEL("11"),					// 주문취소(+)
+		SHIP_CANCEL("12"),					// 미출고(+)
+		EXCHANGE("20"),						// 교환신청(-)
+		EXCHANGE_CANCEL("21"),				// 교환취소(+)
+		SALE("30");							// 판매매출반영(+)
 		
 
 		private String value;
@@ -536,6 +536,29 @@ public class TscConstants {
 			return value;
 		}
 	}
+
+	// 상품권발생구분
+	public enum GiftCardOccurGb {
+		REGISTER_GIFTCARD("G074_11"),			// 상품권등록
+		USE_GIFTCARD("G074_12"),				// 상품권사용
+		USE_GIFTCARD_CANCEL("G074_13"),			// 상품권사용취소
+		EXPIRE_GIFTCARD("G074_14"),				// 유효기간만료
+		DESTROY_GIFTCARD("G074_15"),			// 상품권파기
+		EXCHANGE_CASH("G074_16"),				// 전액현금전환
+		EXTEND_PERIOD("G074_17"),				// 결품으로인한 기간연장
+		ADD_GIFTCARD("G074_18"),				// 오환불로인한 금액추가
+		SUB_GIFTCARD("G074_19");				// 오환불로인한 금액차감
+
+		private String value;
+
+		private GiftCardOccurGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
 //
 //	public enum StoreCode {
 //		GWANGJU("MZ0134"),				//광주물류

+ 3 - 0
src/main/java/com/style24/persistence/domain/Order.java

@@ -377,6 +377,9 @@ public class Order extends TscBaseDomain {
 	private int rfPntAmt;
 	private int rfPrePntAmt;
 	private int rfGfcdUseAmt;
+	private int rfDeliveryFee;
+	private int rfCnclAmt;
+	private int rfRealCnclAmt;
 
 	private int pgCpnAmt;
 	private int npayPntAmt;

+ 317 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -1824,6 +1824,323 @@
 		 WHERE OCD.ORD_CHG_SQ = #{ordChgSq}
 		   AND ODI.ORD_NO = #{ordNo}
 	</insert>
+
+	<!-- 전체취소 주문상세단품정보 수정 -->
+	<update id="updateOrderDetailItemForAllCancel" parameterType="Order">
+		/* TscOrderChange.updateOrderDetailItemForAllCancel */
+		UPDATE TB_ORDER_DETAIL_ITEM 
+		   SET ORD_DTL_STAT = #{ordDtlStat}
+			 , CNCL_RTN_AMT = ORD_AMT
+			 , CPN1_DC_AMT = 0
+			 , TMTB1_DC_AMT = 0
+			 , TMTB2_DC_AMT = 0
+			 , GOODS_CPN_DC_AMT = 0
+			 , CART_CPN_DC_AMT = 0
+			 , PNT_DC_AMT = 0
+			 , PRE_PNT_DC_AMT = 0
+			 , SAVE_PNT_AMT = 0
+			 , REAL_ORD_AMT = 0
+			 , GFCD_USE_AMT = 0
+			 , UPD_NO = #{updNo}
+			 , UPD_DT = NOW()
+		 WHERE ORD_NO = #{ordNo}
+	</update>
+
+	<!-- 전체취소 주문상세단품이력정보 등록 -->
+	<insert id="createOrderDetailItemHstForAllCancel" parameterType="Order">
+		/* TscOrderChange.createOrderDetailItemHstForAllCancel */
+		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 ORD_DTL_ITEM_SQ
+			 , ORD_DTL_NO
+			 , ORD_NO
+			 , #{ordDtlStat}
+			 , 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
+			 , ORD_AMT
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , #{regNo}
+			 , NOW()
+			 , #{updNo}
+			 , NOW()
+		  FROM TB_ORDER_DETAIL_ITEM
+		 WHERE ORD_NO = #{ordNo}
+	</insert>
+
+	<!-- 마이페이지 포인트 원복 사용포인트 조회 -->
+	<select id="getCustPointHst" parameterType="Order" resultType="Order">
+		/* TscOrderChange.getCustPointHst */
+		SELECT PNT_HST_SQ
+		     , CUST_NO
+		     , OCCUR_GB
+		     , OCCUR_DTL_DESC
+		     , PNT_AMT
+		     , CUST_PNT_SQ
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REVIEW_SQ
+		     , SWITCH_DUE_DT
+		     , PNT_UPLOAD_STAT
+		     , PNT_UPLOAD_DT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		  FROM TB_CUST_POINT_HST
+		 WHERE ORD_NO = #{ordNo}
+		   AND ORD_DTL_NO = #{ordDtlNo}
+		   AND OCCUR_GB = #{occurGb}
+		 ORDER BY CUST_PNT_SQ
+	</select>
+
+	<!-- 마이페이지 사용포인트 원복 이력 생성 -->
+	<insert id="createCustPointHstRollback" parameterType="Order">
+		/* TscOrderChange.createCustPointHstRollback */
+		INSERT INTO TB_CUST_POINT_HST (
+		       CUST_NO
+		     , OCCUR_GB
+		     , OCCUR_DTL_DESC
+		     , PNT_AMT
+		     , CUST_PNT_SQ
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REVIEW_SQ
+		     , SWITCH_DUE_DT
+		     , PNT_UPLOAD_STAT
+		     , PNT_UPLOAD_DT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT CUST_NO
+		     , #{occurGb}
+		     , #{occurDtlDesc}
+		     , #{pntAmt}
+		     , CUST_PNT_SQ
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REVIEW_SQ
+		     , SWITCH_DUE_DT
+		     , PNT_UPLOAD_STAT
+		     , PNT_UPLOAD_DT
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		  FROM TB_CUST_POINT_HST
+		 WHERE PNT_HST_SQ = #{pntHstSq}
+	</insert>
+	
+	<!-- 마이페이지 전체취소 사용포인트 원복 수정  -->
+	<update id="updateCustPointRollback" parameterType="Order">
+		/* TscOrderChange.createCustPointHstRollback */
+		UPDATE TB_CUST_POINT
+		   SET US_PNT_AMT = US_PNT_AMT - #{pntAmt}
+		     , RM_PNT_AMT = RM_PNT_AMT + #{pntAmt}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		 WHERE CUST_PNT_SQ = #{CUST_PNT_SQ}
+	</update>
+
+	<!-- 마이페이지 상품쿠폰 원복 수정 -->
+	<update id="updateGoodsCpnRollback" parameterType="Order">
+		/* TscOrderChange.updateGoodsCpnRollback */
+		UPDATE TB_CUST_COUPON CC
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON CC.CUST_CPN_SQ = OD.GOODS_CPN_SQ
+		   SET CC.USED_DT = NULL
+		     , CC.UPD_NO = #{updNo}
+		     , CC.UPD_DT = NOW()
+		 WHERE OD.ORD_NO = #{ordNo}
+		   AND OD.ORD_DTL_NO = #{ordDtlNo}
+	</update>
+
+	<!-- 마이페이지 장바구니쿠폰 원복 수정 -->
+	<update id="updateCartCpnRollback" parameterType="Order">
+		/* TscOrderChange.updateCartCpnRollback */
+		UPDATE TB_CUST_COUPON CC
+		 INNER JOIN (SELECT ORD_NO
+		                  , CART_CPN_SQ
+		               FROM TB_ORDER_DETAIL
+		              GROUP BY ORD_NO) OD
+		    ON CC.CUST_CPN_SQ = OD.CART_CPN_SQ
+		   SET CC.USED_DT = NULL
+		     , CC.UPD_NO = #{updNo}
+		     , CC.UPD_DT = NOW()
+		 WHERE OD.ORD_NO = #{ordNo}
+	</update>
+
+	<!-- 마이페이지 배송비쿠폰 원복 수정 -->
+	<update id="updateDeliveryCpnRollback" parameterType="Order">
+		/* TscOrderChange.updateDeliveryCpnRollback */
+		UPDATE TB_CUST_COUPON CC
+		 INNER JOIN (SELECT ORD_NO
+		                  , DELV_CPN_SQ
+		               FROM TB_DELIVERY_FEE
+		              WHERE DELV_FEE_GB = 'G018_10'
+		              GROUP BY ORD_NO) DF
+		    ON CC.CUST_CPN_SQ = DF.DELV_CPN_SQ
+		   SET CC.USED_DT = NULL
+		     , CC.UPD_NO = #{updNo}
+		     , CC.UPD_DT = NOW()
+		 WHERE DF.ORD_NO = #{ordNo}
+	</update>
+
+	<!-- 마이페이지 상품권 원복 사용상품권 조회 -->
+	<select id="getCustGiftCardHst" parameterType="Order" resultType="Order">
+		/* TscOrderChange.getCustGiftCardHst */
+		SELECT GFCD_HST_SQ
+		     , CUST_NO
+		     , OCCUR_GB
+		     , OCCUR_DTL_DESC
+		     , GFCD_AMT
+		     , CUST_GFCD_SQ
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		  FROM TB_CUST_GIFTCARD_HST
+		 WHERE ORD_NO = #{ordNo}
+		   AND ORD_DTL_NO = #{ordDtlNo}
+		 ORDER BY CUST_GFCD_SQ
+	</select>
+
+	<!-- 마이페이지 사용상품권 원복 이력 생성 -->
+	<insert id="createCustGiftCardHstRollback" parameterType="Order">
+		/* TscOrderChange.createCustGiftCardHstRollback */
+		INSERT INTO TB_CUST_GIFTCARD_HST (
+		       CUST_NO
+		     , OCCUR_GB
+		     , OCCUR_DTL_DESC
+		     , GFCD_AMT
+		     , CUST_GFCD_SQ
+		     , ORD_NO
+		     , ORD_DTL_NO
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT CUST_NO
+			 , #{occurGb}
+			 , #{occurDtlDesc}
+			 , #{gfcdAmt}
+			 , CUST_GFCD_SQ
+			 , ORD_NO
+			 , ORD_DTL_NO
+			 , #{regNo}
+			 , NOW()
+			 , #{updNo}
+			 , NOW()
+		  FROM TB_CUST_GIFTCARD_HST
+		 WHERE GFCD_HST_SQ = #{gfcdHstSq}
+	</insert>
+
+	<!-- 마이페이지 전체취소 사용상품권 원복 수정  -->
+	<update id="updateCustGiftCardRollback" parameterType="Order">
+		/* TscOrderChange.updateCustGiftCardRollback */
+		UPDATE TB_CUST_GIFTCARD
+		   SET US_GFCD_AMT = US_GFCD_AMT - #{gfcdAmt}
+			 , RM_GFCD_AMT = RM_GFCD_AMT + #{gfcdAmt}
+			 , UPD_NO = #{updNo}
+			 , UPD_DT = NOW()
+		 WHERE CUST_GFCD_SQ = #{custGfcdSq}
+	</update>
+
+	<!-- 결제정보 조회 -->
+	<select id="getPaymentInfo" parameterType="Payment" resultType="Payment">
+		/* TscOrder.getPaymentInfo */
+		SELECT PAY_SQ
+			 , 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_CD
+			 , CARD_NM
+			 , CARD_MIPS
+			 , CARD_PCABLE_YN
+			 , VA_NO
+			 , VA_NM
+			 , VA_BANK
+			 , VA_DEADLINE
+			 , TELECOM
+			 , ESCROW_YN
+			 , CASH_AUTH_NO
+			 , CASH_TRADE_NO
+			 , ORD_CHG_SQ
+			 , REG_NO
+			 , REG_DT
+			 , UPD_NO
+			 , UPD_DT
+		  FROM TB_PAYMENT
+		 WHERE ORD_NO = #{ordNo}
+		   AND PAY_GB = 'O'
+		   AND PAY_STAT IN ('G016_30', 'G016_00')
+	</select>
 </mapper>