Переглянути джерело

Merge remote-tracking branch 'origin/order' into jsh77b

jsh77b 5 роки тому
батько
коміт
26ae394ab0

+ 39 - 2
src/main/java/com/style24/core/biz/dao/TscCustomerDao.java

@@ -21,7 +21,7 @@ public interface TscCustomerDao {
 	 *
 	 * @param custContactHst - 고객접촉이력
 	 * @author jsshin
-	 * @since 2020. 01. 20
+	 * @since 2020. 1. 20
 	 */
 	void createCustomerContactHistory(CustContactHst custContactHst);
 
@@ -39,9 +39,46 @@ public interface TscCustomerDao {
 	 * 회원 비밀번호 수정
 	 * @param customer - 고객정보
 	 * @author jsshin
-	 * @since 2020. 01. 20
+	 * @since 2021. 1. 20
 	 */
 	void updateCustomerPassword(Customer customer);
 
+	/**
+	 * 고객정보 조회
+	 *
+	 * @param customer - 고객
+	 * @return TsfCustomer
+	 * @author jsshin
+	 * @since 2021. 1. 26
+	 */
+	Customer getCustomerInfo(Customer customer);
+
+	/**
+	 * 탈퇴 정보 생성
+	 *
+	 * @param customer - 고객정보
+	 * @return int
+	 * @author jsshin
+	 * @since 2021. 1. 26
+	 */
+	int createCustomerSecede(Customer customer);
+
+	/**
+	 * 회원정보 탈퇴처리
+	 *
+	 * @param customer- 고객정보
+	 * @return int
+	 * @author jsshin
+	 * @since 2021. 1. 26
+	 */
+	int updateCustomerSecedeInfo(Customer customer);
 
+	/**
+	 * 회원정보 마케팅수신동의이력
+	 *
+	 * @param customer- 고객정보
+	 * @author jsshin
+	 * @since 2021. 1. 26
+	 */
+	void createCustomerMarketHst(Customer customer);
 }

+ 10 - 0
src/main/java/com/style24/core/biz/dao/TscOrderDao.java

@@ -55,4 +55,14 @@ public interface TscOrderDao {
 	 */
 	int createOrderDetailItemHstForExchange(Order order);
 
+	/**
+	 * 주문배송주소 등록
+	 *
+	 * @param Order - 주문 정보
+	 * @return int
+	 * @author card007
+	 * @since 2021. 01. 26
+	 */
+	int createDeliveryAddr(Order order);
+
 }

+ 71 - 0
src/main/java/com/style24/core/biz/service/TscCustomerService.java

@@ -1,5 +1,6 @@
 package com.style24.core.biz.service;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.dao.TscCustomerDao;
 import com.style24.persistence.domain.CustContactHst;
 import com.style24.persistence.domain.Customer;
@@ -49,6 +50,7 @@ public class TscCustomerService {
 
 	/**
 	 * 회원 비밀번호 수정
+	 *
 	 * @param customer - 고객정보
 	 * @author jsshin
 	 * @since 2020. 01. 20
@@ -58,4 +60,73 @@ public class TscCustomerService {
 		customerDao.updateCustomerPassword(customer);
 	}
 
+	/**
+	 * 회원 탈퇴처리
+	 *
+	 * @param customer - 고객정보
+	 * @author jsshin
+	 * @since 2020. 01. 26
+	 */
+	@Transactional("shopTxnManager")
+	public GagaMap saveCustomerSecede(Customer customer) {
+		GagaMap result = new GagaMap();
+
+		// 1. 이미 탈퇴처리 되었는지 확인
+//		Customer customerInfo = customerDao.getCustomerInfo(customer);
+//		if (customerInfo == null) {
+//			result.setBoolean("isSuccess", false);
+//			result.setString("resultMessage", "이미 탈퇴 처리되었습니다.");
+//			return result;
+//		}
+
+		// TODO: 2021.1.26 주문 서비스 붙으면 - jsshin
+		// 2. 진행중인 주문건 있는지 확인
+		boolean progressOrder = false;
+		//boolean progressOrder = orderService.getOrderProgress(custNo);
+
+		if (progressOrder) {
+			result.setBoolean("isSuccess", false);
+			result.setString("resultMessage", "진행중인 거래가 있습니다. 진행중인 거래를 완료 후 탈퇴 신청을 해주세요.");
+			return result;
+		}
+
+		// 3.고객정보 이력 생성
+		customerDao.createCustomerHistory(customer);
+
+		// 4.탈퇴정보생성
+		int custSecedeCnt = customerDao.createCustomerSecede(customer);
+
+		// 5.고객테이블 탈퇴처리
+		customerDao.updateCustomerSecedeInfo(customer);
+
+		// TODO: 2021.1.26 프론트 개발 시에 나머지 작업
+		// 6.위시테이블 삭제
+
+		// TODO: 2021.1.26 프론트 개발 시에 나머지 작업
+		// 7. 장바구니테이블 삭제
+
+		if (custSecedeCnt > 0) {
+			result.setBoolean("isSuccess", true);
+			result.setString("resultMessage", "정상적으로 탈퇴되었습니다.");
+		} else {
+			result.setBoolean("isSuccess", false);
+			result.setString("resultMessage", "탈퇴가 정상적으로 처리되지 않았습니다. 다시 시도해 주세요.");
+		}
+
+		return result;
+	}
+
+	/**
+	 * 회원정보 마케팅수신동의이력
+	 *
+	 * @param customer - 고객정보
+	 * @author jsshin
+	 * @since 2020. 01. 26
+	 */
+	@Transactional("shopTxnManager")
+	public void createCustomerMarketHst(Customer customer) {
+		customerDao.createCustomerMarketHst(customer);
+	}
+
+
 }

+ 125 - 73
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -657,114 +657,166 @@ public class TscOrderChangeService {
 	 * @author jsh77b
 	 * @since 2021. 01. 19
 	 */
+	@Transactional("shopTxnManager")
 	public GagaMap exchReq(OrderChange excReq) {
 		GagaMap result = new GagaMap();
 		result.set("status", GagaResponseStatus.FAIL.getCode());
 		
 		// 교환 기본 정보
-		int ordNo = excReq.getOrdNo();						// 주문번호
-		String isCustomer = excReq.getIsCustomer();			// 귀책사유
-		String wdGb = excReq.getWdGb();						// 회수구분 (D:직접배송, W:회수요청)
-		String chgMemo = excReq.getChgMemo();				// 교환메모
 		int addPayCost = excReq.getAddPayCost();			// 추가배송비
+		String wdGb = excReq.getWdGb();						// 회수구분
 		Integer regNo = excReq.getRegNo();					// 등록자번호
 		Integer updNo = excReq.getUpdNo();					// 수정자번호
 		
-		// 회수지 정보
-		String chgerNm = excReq.getChgerNm();
-		String chgerTelno = excReq.getChgerTelno();
-		String chgerPhnno = excReq.getChgerPhnno();
-		String chgerEmail = excReq.getChgerEmail();
-		String chgerZipcode = excReq.getChgerZipcode();
-		String chgerBaseAddr = excReq.getChgerBaseAddr();
-		String chgerDtlAddr = excReq.getChgerDtlAddr();
-		
-		// 교환지 정보
-		String recipNm = excReq.getRecipNm();
-		String recipTelno = excReq.getRecipTelno();
-		String recipPhnno = excReq.getRecipPhnno();
-		String recipEmail = excReq.getRecipEmail();
-		String recipZipcode = excReq.getRecipZipcode();
-		String recipBaseAddr = excReq.getRecipBaseAddr();
-		String recipDtlAddr = excReq.getRecipDtlAddr();
-		
-		// 
+		// 교환신청 목록 설정
 		Collection<Order> excReqList = excReq.getCancelReqList();
+
+		// 추가배송비 관련 상태값 설정
+		String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
+		String ordDtlStat = TscConstants.OrderDetailStat.REFUND_CONFIRM_WAIT.value();
+
+		if (addPayCost > 0) {
+			orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
+			ordDtlStat = TscConstants.OrderDetailStat.PAYMENT_WAIT.value();
+		}
 		
 		// 1. 재고 체크 (세트아이템 포함)
-		
 
-		// 2. 교환상품 주문 상세 등록
+
+		// 2. TB_DELIVERY_ADDR 등록
+		Order deliveryAddr = new Order();
+		deliveryAddr.setRecipNm(excReq.getRecipNm());
+		deliveryAddr.setRecipPhnno(excReq.getRecipPhnno());
+		deliveryAddr.setRecipTelno(excReq.getRecipTelno());
+		deliveryAddr.setRecipZipcode(excReq.getRecipZipcode());
+		deliveryAddr.setRecipBaseAddr(excReq.getRecipBaseAddr());
+		deliveryAddr.setRecipDtlAddr(excReq.getRecipDtlAddr());
+		deliveryAddr.setDelvMemo(excReq.getDelvMemo());
+		deliveryAddr.setRegNo(regNo);
+		deliveryAddr.setUpdNo(updNo);
+		
+		orderDao.createDeliveryAddr(deliveryAddr);
+		
+		// 생성된 delvAddrSq 등록
+		int delvAddrSq = deliveryAddr.getDelvAddrSq();
+		
+		// 교환대상 정보 등록
 		int preOrdDtlNo = 0;
+		String preDelvFeeCd = "";
+		int ordChgSq = 0;
+		
 		for (Order order : excReqList) {
+			String delvFeeCd = order.getDelvFeeCd();
+			int chgQty = order.getChgQty();
+			String ordChgOpt = order.getOrdChgOpt();
 			int ordDtlNo = order.getOrdDtlNo();
+			int exchangeOrdDtlNo = 0;
+			
+			if (!preDelvFeeCd.equals(delvFeeCd)) {
+				// 3. TB_ORDER_CHANGE 등록
+				OrderChange orderChange = new OrderChange();
+				orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
+				orderChange.setChgReason(excReq.getChgReason());
+				orderChange.setChgMemo(excReq.getChgMemo());
+				// orderChange.setWdGb(wdGb);
+				orderChange.setChgerNm(excReq.getChgerNm());
+				orderChange.setChgerPhnno(excReq.getChgerPhnno());
+				orderChange.setChgerTelno(excReq.getChgerTelno());
+				orderChange.setChgerEmail(excReq.getChgerEmail());
+				orderChange.setChgerZipcode(excReq.getChgerZipcode());
+				orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
+				orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
+				orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
+				orderChange.setAddPayCost(addPayCost);
+				orderChange.setAddPayAmt(excReq.getAddPayAmt());
+				orderChange.setRegNo(regNo);
+				orderChange.setUpdNo(updNo);
+
+				orderChangeDao.createOrderChange(orderChange);
+				
+				preDelvFeeCd = delvFeeCd;
+				
+				// 생성된 ordChgSq 설정
+				ordChgSq = orderChange.getOrdChgSq();
 
+				// 4. TB_DELIVERY_FEE 추가배송비 등록
+				int delvFee = 0;
+
+				if ("true".equals(excReq.getIsCustomer())) {
+					delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
+				}
+				
+				Order deliveryFee = new Order();
+				deliveryFee.setOrdNo(excReq.getOrdNo());
+				deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
+				deliveryFee.setDelvFeeCd(delvFeeCd);
+				deliveryFee.setDelvFee(delvFee);
+				deliveryFee.setRealDelvAmt(delvFee);
+				deliveryFee.setOrdChgSq(ordChgSq);
+				deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
+				deliveryFee.setRegNo(regNo);
+				deliveryFee.setUpdNo(updNo);
+				
+				orderChangeDao.createDeliveryFee(deliveryFee);
+			}
+			
 			if (preOrdDtlNo != ordDtlNo) {
-				// 2. TB_ORDER_DETAIL 등록
+				// 5. TB_ORDER_DETAIL 등록
 				Order ordDtl = new Order();
-				ordDtl.setOrdDtlNo(order.getOrdDtlNo());
-				ordDtl.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
-				ordDtl.setChgQty(order.getChgQty());
-				ordDtl.setRegNo(order.getRegNo());
-				ordDtl.setUpdNo(order.getUpdNo());
+				ordDtl.setOrdDtlNo(ordDtlNo);
+				ordDtl.setOrdDtlStat(ordDtlStat);
+				ordDtl.setOptCd2(ordChgOpt);
+				ordDtl.setChgQty(chgQty);
+				ordDtl.setDelvAddrSq(delvAddrSq);
+				ordDtl.setRegNo(regNo);
+				ordDtl.setUpdNo(updNo);
+				
 				orderDao.createOrderDetailForExchange(ordDtl);
 
-				// 3. TB_ORDER_DETAIL_HST 등록
+				// 생성된 ordDtlNo 설정
+				exchangeOrdDtlNo = ordDtl.getExchangeOrdDtlNo();
+
+				// 6. TB_ORDER_DETAIL_HST 등록
 				orderDao.createOrderDetailHstForExchange(ordDtl);
+
+				// 7. TB_ORDER_CHANGE_DETAIL 등록
+				OrderChange orderChangeDetail = new OrderChange();
+				orderChangeDetail.setOrdChgSq(ordChgSq);
+				orderChangeDetail.setOrdDtlNo(ordDtlNo);
+				orderChangeDetail.setChgQty(chgQty);
+				orderChangeDetail.setChgStat(orderChangeStat);
+				orderChangeDetail.setChgOrdDtlNo(exchangeOrdDtlNo);
+				orderChangeDetail.setRegNo(regNo);
+				orderChangeDetail.setUpdNo(updNo);
 				
+				orderChangeDao.createOrderChangeDetail(orderChangeDetail);
+
 				preOrdDtlNo = ordDtlNo;
 			}
 
-			// 4. TB_ORDER_DETAIL_ITEM 등록
+			// 8. TB_ORDER_DETAIL_ITEM 등록
 			Order ordDtlItem = new Order();
 			ordDtlItem.setOrdDtlItemSq(order.getOrdDtlItemSq());
-			ordDtlItem.setOrdDtlNo(order.getOrdDtlNo());
-			ordDtlItem.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
-			ordDtlItem.setOrdChgOpt(order.getOrdChgOpt());
-			ordDtlItem.setRegNo(order.getRegNo());
-			ordDtlItem.setUpdNo(order.getUpdNo());
+			ordDtlItem.setOrdDtlNo(ordDtlNo);
+			ordDtlItem.setOrdDtlStat(ordDtlStat);
+			ordDtlItem.setOrdChgOpt(ordChgOpt);
+			ordDtlItem.setRegNo(regNo);
+			ordDtlItem.setUpdNo(updNo);
 			
 			orderDao.createOrderDetailItemForExchange(ordDtlItem);
 
-			// 5. TB_ORDER_DETAIL_ITEM_HST 등록
+			// 9. TB_ORDER_DETAIL_ITEM_HST 등록
 			orderDao.createOrderDetailItemHstForExchange(ordDtlItem);
 		}
-		
-		// 6. TB_ORDER_CHANGE 등록
-		OrderChange orderChange = new OrderChange();
-		orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
-		orderChange.setChgReason(excReq.getChgReason());
-		orderChange.setChgMemo(excReq.getChgMemo());
-		orderChange.setChgerNm(excReq.getChgerNm());
-		orderChange.setChgerPhnno(excReq.getChgerPhnno());
-		orderChange.setChgerTelno(excReq.getChgerTelno());
-		orderChange.setChgerEmail(excReq.getChgerEmail());
-		orderChange.setChgerZipcode(excReq.getChgerZipcode());
-		orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
-		orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
-		orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
-		orderChange.setAddPayCost(excReq.getAddPayCost());
-		orderChange.setAddPayAmt(excReq.getAddPayAmt());
-		orderChange.setRegNo(excReq.getRegNo());
-		orderChange.setUpdNo(excReq.getUpdNo());
-		
-		orderChangeDao.createOrderChange(orderChange);
-		
-		// 생성된 ordChgSq 설정
-		excReq.setOrdChgSq(orderChange.getOrdChgSq());
-
-		// 7. TB_ORDER_CHANGE_DETAIL 등록
-		String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
 
-		if (addPayCost > 0) {
-			orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
-		}
-
-		// 8. TB_DELIVERY_FEE 추가배송비 등록
+		// 10. TB_SELL_QTY 등록
+		OrderChange sellQty = new OrderChange();
+		sellQty.setSellGb(TscConstants.SellGb.EXCHANGE.value());
+		sellQty.setRegNo(regNo);
+		sellQty.setOrdChgSq(ordChgSq);
+		
+		orderChangeDao.createSellQty(sellQty);
 		
-		// 9. TB_SELL_QTY 등록
-
-
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 		
 		return result;

+ 95 - 1
src/main/java/com/style24/core/support/env/TscConstants.java

@@ -90,7 +90,8 @@ public class TscConstants {
 	// 주문상세상태
 	public enum OrderDetailStat {
 		DEPOSIT_WAIT("G013_10"),			// 입금대기
-		WITHDRAW_CONFIRM_WAIT("G013_17"),	// 회수컨펌대기
+		PAYMENT_WAIT("G013_11"),			// 추가결제대기
+		REFUND_CONFIRM_WAIT("G013_17"),		// 발주대기-환불컨펌
 		ORDER_WAIT_PRICE("G013_18"),		// 발주대기-가격차이
 		ORDER_WAIT_POST("G013_19"),			// 발주대기-우편번호상이
 		PAYMENT_COMPLETE("G013_20"),		// 결제완료
@@ -100,6 +101,7 @@ public class TscConstants {
 		SHIP_COMPLETE("G013_55"),			// 출고완료
 		DELIVERY_COMPLETE("G013_60"),		// 배송완료
 		PURCHASE_CONFIRM("G013_70"),		// 구매확정
+		EXCHANGE_CANCEL("G013_97"),			// 교환취소
 		PAYMENT_BEFORE_CANCEL("G013_98"),	// 결제전주문취소
 		PAYMENT_AFTER_CANCEL("G013_99");	// 결제후주문취소
 
@@ -327,6 +329,27 @@ public class TscConstants {
 			return value;
 		}
 	}
+	
+	// 판매구분
+	public enum SellGb {
+		ORDER("10"),				// 주문(-)
+		ORDER_CANCEL("11"),			// 주문취소(+)
+		SHIP_CANCEL("12"),			// 미출고(+)
+		EXCHANGE("20"),				// 교환신청(-)
+		EXCHANGE_CANCEL("21"),		// 교환취소(+)
+		SALE("30");					// 판매매출반영(+)
+		
+
+		private String value;
+
+		private SellGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
 //
 //	// 정산구분
 //	public enum UsacGb {
@@ -530,4 +553,75 @@ public class TscConstants {
 		}
 	}
 
+	// 성별
+	public enum Gender {
+		FEMALE("G007_F"),	// 여성
+		MALE("G007_M"),		// 남성
+		COMMON ("G007_Z");	// 공통
+
+		private String value;
+
+		Gender (String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+
+	}
+	// 고객상태값
+	public enum CustStat {
+		ACTIVE("G104_10"),
+		DORMANT("G104_20"),
+		SECEDE("G104_30");
+
+		private String value;
+
+		CustStat(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+	// 고객구분
+	public enum CustGb {
+		ALL("G100_00"),
+		NORMAL("G100_10"),
+		EMPLOYEE("G100_20"),
+		NOMEMBER("G100_99");
+
+		private String value;
+
+		CustGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+	// 고객등급코드값
+	public enum CustGrade {
+		VIP("G110_10"),
+		GOLD("G110_20"),
+		SILVER("G110_30"),
+		BRONZE("G110_40"),
+		WELCOME("G110_50");
+
+		private String value;
+
+		CustGrade(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
 }

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

@@ -373,6 +373,6 @@ public class Order extends TscBaseDomain {
 	private String rtnLocDtlAddr;
 	private String rtnLocTelno;
 	private String rtnLocNm;
-	private String exchangeOrdDtlNo;
-	private String exchangeOrdDtlItemSq;
+	private int exchangeOrdDtlNo;
+	private int exchangeOrdDtlItemSq;
 }

+ 1 - 0
src/main/java/com/style24/persistence/domain/OrderChange.java

@@ -66,6 +66,7 @@ public class OrderChange extends TscBaseDomain {
 	private String recipDtlAddr;
 	private String recipPhnno;
 	private String recipTelno;
+	private String delvMemo;
 
 	private int chgOrdDtlNo;
 	private String completeDt;

+ 165 - 2
src/main/java/com/style24/persistence/mybatis/shop/TscCustomer.xml

@@ -136,15 +136,178 @@
 		WHERE  CUST_NO = #{custNo}
 	</insert>
 
-	<!-- 회원 비밀번호 수정 -->
+	<!-- 회원 비밀번호 수정(임시비밀번호)-->
 	<update id="updateCustomerPassword" parameterType="Customer">
 		/* TscCustomer.updateCustomerPassword */
 		UPDATE TB_CUSTOMER
 		SET    PASSWD = #{encodedPasswd}
 		     , PASSWD_CHG_DT = NOW()
+		<if test="tempPasswdYn == 'Y'">
+		     , TEMP_PASSWD_YN = #{tempPasswdYn}
+		</if>
 		     , UPD_NO = #{updNo}
 		     , UPD_DT = NOW()
-		WHERE CUST_NO = #{custNo}
+		WHERE  CUST_NO = #{custNo}
 	</update>
 
+	<!--탈퇴회원 정보 생성-->
+	<insert id="createCustomerSecede" parameterType="Customer">
+		/* TscCustomer.createCustomerSecede */
+		INSERT INTO TB_SECEDE_CUST (
+		       CUST_NO
+		     , CUST_ID
+		     , CUST_NM
+		     , PASSWD
+		     , BIRTH_YMD
+		     , BIRTH_SM
+		     , SEX_GB
+		     , CELL_PHNNO
+		     , APP_AGREE_YN
+		     , APP_AGREE_DT
+		     , SMS_AGREE_YN
+		     , SMS_AGREE_DT
+		     , EMAIL
+		     , EMAIL_AGREE_YN
+		     , EMAIL_AGREE_DT
+		     , HOME_ZIPCODE
+		     , HOME_BASE_ADDR
+		     , HOME_DTL_ADDR
+		     , SITE_CD
+		     , FRONT_GB
+		     , AF_LINK_CD
+		     , CUST_GB
+		     , CUST_GRADE
+		     , JOIN_DT
+		     , FOREIGNER_YN
+		     , CUST_STAT
+		     , PASSWD_CHG_DT
+		     , TEMP_PASSWD_YN
+		     , LOGIN_LDT
+		     , NV_JOIN_ID
+		     , NV_ACCESS_TOKEN
+		     , NV_JOIN_DT
+		     , KK_JOIN_ID
+		     , KK_ACCESS_TOKEN
+		     , KK_JOIN_DT
+		     , YS_JOIN_ID
+		     , YS_ACCESS_TOKEN
+		     , YS_JOIN_DT
+		     , CI
+		     , AUTH_DT
+		     , MANAGED_RSN
+		     , MANAGED_DTL_RSN
+		     , MANAGED_DT
+		     , SECEDE_RSN
+		     , SECEDE_DTL_RSN
+		     , SECEDE_DT
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT CUST_NO
+		     , CUST_ID
+		     , CUST_NM
+		     , PASSWD
+		     , BIRTH_YMD
+		     , BIRTH_SM
+		     , SEX_GB
+		     , CELL_PHNNO
+		     , APP_AGREE_YN
+		     , APP_AGREE_DT
+		     , SMS_AGREE_YN
+		     , SMS_AGREE_DT
+		     , EMAIL
+		     , EMAIL_AGREE_YN
+		     , EMAIL_AGREE_DT
+		     , HOME_ZIPCODE
+		     , HOME_BASE_ADDR
+		     , HOME_DTL_ADDR
+		     , SITE_CD
+		     , FRONT_GB
+		     , AF_LINK_CD
+		     , CUST_GB
+		     , CUST_GRADE
+		     , JOIN_DT
+		     , FOREIGNER_YN
+		     , #{custStat}         AS CUST_STAT -- G104_30
+		     , PASSWD_CHG_DT
+		     , TEMP_PASSWD_YN
+		     , LOGIN_LDT
+		     , NV_JOIN_ID
+		     , NV_ACCESS_TOKEN
+		     , NV_JOIN_DT
+		     , KK_JOIN_ID
+		     , KK_ACCESS_TOKEN
+		     , KK_JOIN_DT
+		     , YS_JOIN_ID
+		     , YS_ACCESS_TOKEN
+		     , YS_JOIN_DT
+		     , CI
+		     , AUTH_DT
+		     , MANAGED_RSN
+		     , MANAGED_DTL_RSN
+		     , MANAGED_DT
+		     , #{secedeRsn}        AS SECEDE_RSN
+		     , #{secedeDtlRsn}     AS SECEDE_DTL_RSN
+		     , NOW()               AS SECEDE_DT
+		     , #{regNo}            AS REG_NO
+		     , NOW()               AS REG_DT
+		     , #{updNo}            AS UPD_NO
+		     , NOW()               AS UPD_DT
+		FROM   TB_CUSTOMER
+		WHERE  CUST_NO = #{custNo}
+	</insert>
+
+	<!-- 회원 탈퇴 개인정보 공백 처리 -->
+	<update id="updateCustomerSecedeInfo" parameterType="Customer">
+		/* TscCustomer.updateCustomerSecedeInfo */
+		UPDATE TB_CUSTOMER
+		SET    CUST_ID = 'secede_cust'
+		     , CUST_STAT = #{custStat}
+		     , SECEDE_RSN = #{secedeRsn}
+		     , SECEDE_DTL_RSN = #{secedeDtlRsn}
+		     , SECEDE_DT = NOW()
+		     , BIRTH_YMD = NULL
+		     , BIRTH_SM = NULL
+		     , SEX_GB = NULL
+		     , CELL_PHNNO = NULL
+		     , EMAIL = NULL
+		     , HOME_ZIPCODE = NULL
+		     , HOME_BASE_ADDR = NULL
+		     , HOME_DTL_ADDR = NULL
+		     , NV_JOIN_ID = NULL
+		     , NV_ACCESS_TOKEN = NULL
+		     , NV_JOIN_DT = NULL
+		     , KK_JOIN_ID = NULL
+		     , KK_ACCESS_TOKEN = NULL
+		     , KK_JOIN_DT = NULL
+		     , YS_JOIN_ID = NULL
+		     , YS_ACCESS_TOKEN = NULL
+		     , YS_JOIN_DT = NULL
+		WHERE  CUST_NO = #{custNo}
+	</update>
+
+	<!--회원 마케팅수신동의 이력-->
+	<insert id="createCustomerMarketHst" parameterType="Customer">
+		/* TscCustomer.createCustomerMarketHst */
+		INSERT INTO TB_CUST_MARKET_HST (
+		       CUST_NO
+		     , APP_AGREE_YN
+		     , SMS_AGREE_YN
+		     , EMAIL_AGREE_YN
+		     , REG_NO
+		     , REG_DT
+		)
+		SELECT CUST_NO
+		     , IFNULL(#{appAgreeYn}, APP_AGREE_YN)     AS APP_AGREE_YN
+		     , IFNULL(#{smsAgreeYn}, SMS_AGREE_YN)     AS SMS_AGREE_YN
+		     , IFNULL(#{emailAgreeYn}, EMAIL_AGREE_YN) AS EMAIL_AGREE_YN
+		     , #{regNo}                                AS REG_NO
+		     , NOW()                                   AS REG_DT
+		FROM   TB_CUSTOMER
+		WHERE  CUST_NO = #{custNo}
+	</insert>
+
+
 </mapper>

+ 54 - 26
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -3,12 +3,8 @@
 <mapper namespace="com.style24.core.biz.dao.TscOrderDao">
 
 	<!-- 주문상세정보 생성 -->
-	<insert id="createOrderDetailForExchange" parameterType="Order">
+	<insert id="createOrderDetailForExchange" parameterType="Order" keyProperty="exchangeOrdDtlNo">
 		/* order.createOrderDetailForExchange */
-		<selectKey keyProperty="exchangeOrdDtlNo" resultType="int" order="AFTER">
-			SELECT LAST_INSERT_ID()
-		</selectKey>
-
 		INSERT INTO TB_ORDER_DETAIL (
 			ORD_NO
 		  , ORD_EXCH_GB
@@ -89,8 +85,8 @@
 			 , ORD_DTL_NO
 			 , SUPPLY_COMP_CD
 			 , GOODS_CD
-			 , PRODUCT_NO
-			 , PRODUCT_CODE
+			 , PRODUCT_NO -- X
+			 , PRODUCT_CODE -- X
 			 , FORMAL_GB
 			 , GOODS_TYPE
 			 , LIST_PRICE
@@ -129,7 +125,7 @@
 			 , SOLDOUT_MEMO
 			 , SOLDOUT_REG_NO
 			 , SOLDOUT_REG_DT
-			 , DELV_ADDR_SQ
+			 , #{delvAddrSq}
 			 , DELV_FEE_CD
 			 , SHOT_DELV_YN
 			 , GIFT_PACK_YN
@@ -315,12 +311,8 @@
 	</insert>
 
 	<!-- 주문상세단품정보 생성 -->
-	<insert id="createOrderDetailItemForExchange" parameterType="Order">
+	<insert id="createOrderDetailItemForExchange" parameterType="Order" keyProperty="exchangeOrdDtlItemSq">
 		/* order.createOrderDetailItemForExchange */
-		<selectKey keyProperty="exchangeOrdDtlItemSq" resultType="int" order="AFTER">
-			SELECT LAST_INSERT_ID()
-		</selectKey>
-		
 		INSERT INTO TB_ORDER_DETAIL_ITEM (
 			ORD_DTL_NO
 		  , ORD_NO
@@ -354,19 +346,19 @@
 		  , UPD_DT
 		)
 		SELECT #{ordDtlNo}
-			 , ORD_NO
+			 , ODI.ORD_NO
 			 , #{ordDtlStat}
-			 , ITEM_CD
-			 , OPT_CD
-			 , OPT_CD1
-			 , #{ordChgOpt}
-			 , SKU_MODEL_NO
-			 , PRODUCT_NO
-			 , PRODUCT_CODE
-			 , ITEM_QTY
-			 , ITEM_PRICE
-			 , OPT_ADD_PRICE
-			 , DISP_ORD
+			 , ODI.ITEM_CD
+			 , OP.OPT_CD
+			 , OP.OPT_CD1
+			 , OP.OPT_CD2
+			 , OP.SKU_MODEL_NO
+			 , OP.PRODUCT_NO
+			 , OP.PRODUCT_CODE
+			 , ODI.ITEM_QTY
+			 , ODI.ITEM_PRICE
+			 , ODI.OPT_ADD_PRICE
+			 , ODI.DISP_ORD
 			 , 0
 			 , 0
 			 , 0
@@ -383,7 +375,13 @@
 			 , NOW()
 			 , #{updNo}
 			 , NOW()
-		  FROM TB_ORDER_DETAIL_ITEM
+		  FROM TB_ORDER_DETAIL_ITEM ODI
+		 INNER JOIN TB_GOODS G
+		    ON ODI.ITEM_CD = G.GOODS_CD
+		 INNER JOIN TB_OPTION OP
+		    ON G.GOODS_CD = OP.GOODS_CD
+		   AND ODI.OPT_CD1 = OP.OPT_CD1
+		   AND OP.OPT_CD2 = #{ordChgOpt}
 		 WHERE ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
 	</insert>
 
@@ -457,6 +455,36 @@
 		  FROM TB_ORDER_DETAIL_ITEM
 		 WHERE ORD_DTL_ITEM_SQ = #{exchangeOrdDtlItemSq} 
 	</insert>
+	
+	<!-- 주문배송주소 등록 -->
+	<insert id="createDeliveryAddr" parameterType="Order" keyProperty="delvAddrSq">
+		/* order.createDeliveryAddr */
+		INSERT INTO TB_DELIVERY_ADDR (
+			RECIP_NM
+		  , RECIP_PHNNO
+		  , RECIP_TELNO
+		  , RECIP_ZIPCODE
+		  , RECIP_BASE_ADDR
+		  , RECIP_DTL_ADDR
+		  , DELV_MEMO
+		  , REG_NO
+		  , REG_DT
+		  , UPD_NO
+		  , UPD_DT
+		) VALUES (
+			#{recipNm}
+		  , #{recipPhnno}
+		  , #{recipTelno}
+		  , #{recipZipcode}
+		  , #{recipBaseAddr}
+		  , #{recipDtlAddr}
+		  , #{delvMemo}
+		  , #{regNo}
+		  , NOW()
+		  , #{updNo}
+		  , NOW()
+		)
+	</insert>
 
 </mapper>