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

Merge remote-tracking branch 'origin/develop' into xodud1202

xodud lee 5 лет назад
Родитель
Сommit
96ad3b303b

+ 9 - 0
src/main/java/com/style24/core/biz/dao/TscCustomerDao.java

@@ -246,5 +246,14 @@ public interface TscCustomerDao {
 	 */
 	 */
 	int deleteCustDeliveryAddr(CustDeliveryAddr custDeliveryAddr);
 	int deleteCustDeliveryAddr(CustDeliveryAddr custDeliveryAddr);
 
 
+	/**
+	 * 탈퇴일시
+	 *
+	 * @param custNo - 고객번호
+	 * @author jsshin
+	 * @since 2021. 06. 07
+	 */
+	Customer getSecedeDt(Integer custNo);
+
 	void createException();
 	void createException();
 }
 }

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

@@ -37,6 +37,9 @@ public class TscCustomerService {
 	@Autowired
 	@Autowired
 	private TscOrderService coreOrderService;
 	private TscOrderService coreOrderService;
 
 
+	@Autowired
+	private TscEnvsetService envsetService;
+
 	@Autowired
 	@Autowired
 	private Environment env;
 	private Environment env;
 
 
@@ -139,6 +142,11 @@ public class TscCustomerService {
 		customerDao.deleteCustomerCart(customer.getCustNo());
 		customerDao.deleteCustomerCart(customer.getCustNo());
 
 
 		if (custSecedeCnt > 0) {
 		if (custSecedeCnt > 0) {
+			int rejoinRejectDay = envsetService.getRejoinRejectDays(TscConstants.Site.STYLE24.value());
+			Customer custSecede = customerDao.getSecedeDt(customer.getCustNo());
+			result.setInt("rejoinRejectDay", rejoinRejectDay);
+			result.setString("secedeDt", custSecede.getSecedeDt());
+			result.setString("snsType", custSecede.getSnsType());
 			result.setBoolean("isSuccess", true);
 			result.setBoolean("isSuccess", true);
 		} else {
 		} else {
 			result.setBoolean("isSuccess", false);
 			result.setBoolean("isSuccess", false);

+ 49 - 5
src/main/java/com/style24/core/biz/service/TscKakaotalkService.java

@@ -4,6 +4,8 @@ import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Date;
 
 
+import com.style24.core.biz.thirdparty.NetpathyMailSender;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -252,6 +254,47 @@ public class TscKakaotalkService {
 			// Do nothing
 			// Do nothing
 		}
 		}
 	}
 	}
+
+	/**
+	 * 휴면계정전환 안내
+	 *
+	 * @param customer - 고객 정보
+	 * @param senderNo - 보낸
+	 * @author jsshin
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendExpectedDormentCustomer(Customer customer, Integer senderNo) {
+		SsgDirectMessage dm = new SsgDirectMessage();
+		dm.setFuserid(String.valueOf(senderNo)); // 발송자NO
+		dm.setFdestine(customer.getCellPhnno());
+		dm.setFkkoresendtype("LMS");
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setInt("custNo", customer.getCustNo());
+		replaceInfo.setString("custId", customer.getCustId());
+		replaceInfo.setString("custNm", customer.getCustNm());
+		replaceInfo.setString("dormantDt", customer.getDormantDt());
+
+		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.DORMANT_EXPECT.value(), dm, replaceInfo);
+
+		try {
+			// 고객접촉이력 정보
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.DORMANT_EXPECTED.value()); // 접촉유형:회원-휴대전화인증(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("휴면계정전환안내");
+			custContactHst.setReceiverNo(customer.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setRegNo(senderNo);
+			custContactHst.setUpdNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+
+	}
 	
 	
 	/**
 	/**
 	 * 이달의 등급 안내 알림톡
 	 * 이달의 등급 안내 알림톡
@@ -343,9 +386,9 @@ public class TscKakaotalkService {
 		dm.setFuserid(String.valueOf(senderNo)); // 발송자NO
 		dm.setFuserid(String.valueOf(senderNo)); // 발송자NO
 		dm.setFdestine(customer.getCellPhnno());
 		dm.setFdestine(customer.getCellPhnno());
 		dm.setFkkoresendtype("LMS");
 		dm.setFkkoresendtype("LMS");
-		String emailAgreeYn = customer.getEmailAgreeYn().equals("Y") ? "수신":"미수신";
-		String smsAgreeYn = customer.getSmsAgreeYn().equals("Y") ? "수신":"미수신";
-		String mkAgreeYn = customer.getMkAgreeYn().equals("Y") ? "수신":"미수신";
+		String emailAgreeYn = "Y".equals(customer.getEmailAgreeYn()) ? "수신":"미수신";
+		String smsAgreeYn = "Y".equals(customer.getSmsAgreeYn()) ? "수신":"미수신";
+		String mkAgreeYn = "Y".equals(customer.getMkAgreeYn()) ? "수신":"미수신";
 
 
 		GagaMap replaceInfo = new GagaMap();
 		GagaMap replaceInfo = new GagaMap();
 		replaceInfo.setString("siteNm", siteNm);
 		replaceInfo.setString("siteNm", siteNm);
@@ -658,9 +701,10 @@ public class TscKakaotalkService {
 		try {
 		try {
 			// 고객접촉이력 정보
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
 			CustContactHst custContactHst = new CustContactHst();
-			custContactHst.setContactType(TscConstants.ContactType.ORDER_INFO.value()); 		// 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactType(TscConstants.ContactType.GIFT.value()); 		// 접촉유형:임시비밀번호발급(공통코드G054)
 			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); 		// 접촉방법:알림톡+문자(공통코드G055)
 			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); 		// 접촉방법:알림톡+문자(공통코드G055)
-			custContactHst.setContactContents("주문안내");
+			custContactHst.setContactContents("선물하기");
+			custContactHst.setContactMemo(String.valueOf(order.getOrdNo()));
 			custContactHst.setReceiverNo(order.getCustNo());
 			custContactHst.setReceiverNo(order.getCustNo());
 			custContactHst.setSenderNo(senderNo);
 			custContactHst.setSenderNo(senderNo);
 			custContactHst.setRegNo(senderNo);
 			custContactHst.setRegNo(senderNo);

+ 231 - 1
src/main/java/com/style24/core/biz/service/TscMailService.java

@@ -6,6 +6,7 @@ import com.style24.core.biz.thirdparty.NetpathyMailSender;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.env.TscConstants;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustContactHst;
 import com.style24.persistence.domain.CustContactHst;
+import com.style24.persistence.domain.CustCoupon;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.Customer;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -144,9 +145,19 @@ public class TscMailService {
 	 */
 	 */
 	@Transactional("shopTxnManager")
 	@Transactional("shopTxnManager")
 	public void sendSecedComplete(Customer customer, Integer senderNo) {
 	public void sendSecedComplete(Customer customer, Integer senderNo) {
+
+		String custId = customer.getCustId();
+		if (TscConstants.SnsType.NAVER.value().equals(customer.getSnsType())) {
+			custId = "네이버 간편가입회원";
+		} else if (TscConstants.SnsType.KAKAO.value().equals(customer.getSnsType())) {
+			custId = "카카오 간편가입회원";
+		} else if (TscConstants.SnsType.YES24.value().equals(customer.getSnsType())) {
+			custId = "YES24 간편가입회원";
+		}
+
 		GagaMap replaceInfo = new GagaMap();
 		GagaMap replaceInfo = new GagaMap();
 		replaceInfo.setInt("custNo", customer.getCustNo());
 		replaceInfo.setInt("custNo", customer.getCustNo());
-		replaceInfo.setString("custId", customer.getCustId());
+		replaceInfo.setString("custId", custId);
 		replaceInfo.setString("custNm", customer.getCustNm());
 		replaceInfo.setString("custNm", customer.getCustNm());
 		replaceInfo.setString("secedeDt", customer.getSecedeDt());
 		replaceInfo.setString("secedeDt", customer.getSecedeDt());
 		replaceInfo.setInt("rejoinRejectDay", customer.getRejoinRejectDay());
 		replaceInfo.setInt("rejoinRejectDay", customer.getRejoinRejectDay());
@@ -169,5 +180,224 @@ public class TscMailService {
 		}
 		}
 	}
 	}
 
 
+	/**
+	 * 휴면계정전환 안내
+	 *
+	 * @param customer - 고객 정보
+	 * @param senderNo - 보낸
+	 * @author jsshin
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendExpectedDormentCustomer(Customer customer, Integer senderNo) {
+		String year  = "";
+		String month = "";
+		String day = "";
+		if (StringUtils.isNotBlank(customer.getFewDt()) && customer.getFewDt().length() > 7) {
+			String fewDt = customer.getFewDt();
+			year = fewDt.substring(0, 4);
+			month = fewDt.substring(4, 6);
+			day = fewDt.substring(6, 8);
+		}
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setInt("custNo", customer.getCustNo());
+		replaceInfo.setString("custId", customer.getCustId());
+		replaceInfo.setString("custNm", customer.getCustNm());
+		replaceInfo.setString("dormantDt", customer.getDormantDt());
+		replaceInfo.setString("year", year);
+		replaceInfo.setString("month", month);
+		replaceInfo.setString("day", day);
+
+		netpathyMailSender.send(NetpathyMailSender.MailAnswerSq.DORMANT_EXPECT.value(), customer.getEmail(), replaceInfo);
+
+		try {
+			// 고객접촉이력 정보
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.DORMANT_EXPECTED.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("휴면계정전환안내");
+			custContactHst.setReceiverNo(customer.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setRegNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
+
+	/**
+	 * 개인정보이용내역 안내
+	 *
+	 * @param customer - 고객 정보
+	 * @param senderNo - 보낸
+	 * @author jsshin
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendPrivacyPolicyNotice(Customer customer, Integer senderNo) {
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setInt("custNo", customer.getCustNo());
+
+		netpathyMailSender.send(NetpathyMailSender.MailAnswerSq.PRIVACY_POLICY.value(), customer.getEmail(), replaceInfo);
+
+		try {
+			// 고객접촉이력 정보
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.PRIVACY_POLICY.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("개인정보이용내역안내");
+			custContactHst.setReceiverNo(customer.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setRegNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
+
+	/**
+	 * 마케팅정보수신동의내역안내
+	 *
+	 * @param customer - 고객 정보
+	 * @param senderNo - 보낸
+	 * @author jsshin
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendMarketingAgreeNotice(Customer customer, Integer senderNo) {
+
+		String emailAgreeYn = "Y".equals(customer.getEmailAgreeYn()) ? "수신동의" : "미동의";		// 이메일수신동의여부
+		String smsAgreeYn = "Y".equals(customer.getSmsAgreeYn()) ? "수신동의" : "미동의";			// SMS수신동의여부
+		String mkAgreeYn = "Y".equals(customer.getMkAgreeYn()) ? "수신동의" : "미동의";				// 마케팅수신동의여부
+
+		String emailAgreeDt = "Y".equals(customer.getEmailAgreeYn()) ? customer.getEmailAgreeDt() : "";
+		String smsAgreeDt = "Y".equals(customer.getSmsAgreeYn()) ? customer.getSmsAgreeDt() : "";
+		String mkAgreeDt = "Y".equals(customer.getMkAgreeYn()) ? customer.getMkAgreeDt() : "";
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setInt("custNo", customer.getCustNo());
+		replaceInfo.setString("emailAgreeYn", emailAgreeYn);
+		replaceInfo.setString("emailAgreeDt", emailAgreeDt);
+		replaceInfo.setString("smsAgreeYn", smsAgreeYn);
+		replaceInfo.setString("smsAgreeDt", smsAgreeDt);
+		replaceInfo.setString("mkAgreeYn", mkAgreeYn);
+		replaceInfo.setString("mkAgreeDt", mkAgreeDt);
+
+		netpathyMailSender.send(NetpathyMailSender.MailAnswerSq.MARKETING_AGREE.value(), customer.getEmail(), replaceInfo);
+
+		try {
+			// 고객접촉이력 정보
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.MARKETING_AGREE.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("마케팅정보수신동의내역안내");
+			custContactHst.setReceiverNo(customer.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setRegNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
+
+	/**
+	 * 생일쿠폰다운로드안내
+	 *
+	 * @param custCoupon - 고객, 쿠폰정보
+	 * @param senderNo - 보낸
+	 * @author jsshin
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendBirthDayCouponNotice(CustCoupon custCoupon, Integer senderNo) {
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setInt("custNo", custCoupon.getCustNo());
+		replaceInfo.setString("custId", custCoupon.getCustId());
+		replaceInfo.setString("custNm", custCoupon.getCustNm());
+		replaceInfo.setInt("dcVal", custCoupon.getDcVal());
+		replaceInfo.setString("dcWay", custCoupon.getDcWay());
+		replaceInfo.setString("availStdtTime", custCoupon.getAvailStdtTime());
+		replaceInfo.setString("availEddtTime", custCoupon.getAvailEddtTime());
+		if (StringUtils.isNotBlank(custCoupon.getAvailStdtTime())) {
+			String[] availStdt = custCoupon.getAvailStdtTime().split(" ");
+			replaceInfo.setString("availStdt", availStdt[0]);
+		}
+		if (StringUtils.isNotBlank(custCoupon.getAvailEddtTime())) {
+			String[] availEddt = custCoupon.getAvailEddtTime().split(" ");
+			replaceInfo.setString("availEddt", availEddt[0]);
+		}
+		replaceInfo.setString("tgtCondition",custCoupon.getTgtCondition());
+		replaceInfo.setString("useCondition",custCoupon.getUseCondition());
+		netpathyMailSender.send(NetpathyMailSender.MailAnswerSq.BIRTH_COUPON_NOTICE.value(), custCoupon.getEmail(), replaceInfo);
+
+		try {
+			// 고객접촉이력 정보
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.BIRTH_COUPON_NOTICE.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("생일쿠폰다운로드안내");
+			custContactHst.setReceiverNo(custCoupon.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setRegNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
+
+	/**
+	 * 생일쿠폰다운로드안내
+	 *
+	 * @param customer - 고객 정보
+	 * @param coupon - 쿠폰정보
+	 * @param senderNo - 발송자NO
+	 * @author jsshin
+	 * @since 2021. 06. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void sendCombackCoupon(Customer customer, CustCoupon coupon,Integer senderNo){
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setInt("custNo", customer.getCustNo());
+		replaceInfo.setString("custId", customer.getCustId());
+		replaceInfo.setString("custNm", customer.getCustNm());
+		replaceInfo.setInt("dcVal", coupon.getDcVal());
+		replaceInfo.setString("dcWay", coupon.getDcWay());
+		replaceInfo.setString("availStdtTime", coupon.getAvailStdtTime());
+		replaceInfo.setString("availEddtTime", coupon.getAvailEddtTime());
+		if (StringUtils.isNotBlank(coupon.getAvailStdtTime())) {
+			String[] availStdt = coupon.getAvailStdtTime().split(" ");
+			replaceInfo.setString("availStdt", availStdt[0]);
+		}
+		if (StringUtils.isNotBlank(coupon.getAvailEddtTime())) {
+			String[] availEddt = coupon.getAvailEddtTime().split(" ");
+			replaceInfo.setString("availEddt", availEddt[0]);
+		}
+		replaceInfo.setString("tgtCondition",coupon.getTgtCondition());
+		replaceInfo.setString("useCondition",coupon.getUseCondition());
+
+		netpathyMailSender.send(NetpathyMailSender.MailAnswerSq.DORMANT_EXPECT_COMBACK.value(), customer.getEmail(), replaceInfo);
+
+		try {
+			// 고객접촉이력 정보
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.DORMANT_EXPECT_COMBACK.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.EMAIL.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("휴면/미접속자 방어쿠폰안내");
+			custContactHst.setReceiverNo(customer.getCustNo());
+			custContactHst.setSenderNo(senderNo);
+			custContactHst.setRegNo(senderNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
+
+
 
 
 }
 }

+ 7 - 5
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -681,7 +681,7 @@ public class TscOrderChangeService {
 					vo.setOrdDtlStat(ordDtlStat);
 					vo.setOrdDtlStat(ordDtlStat);
 					
 					
 					// 배송정책코드 별 주문상세 처리
 					// 배송정책코드 별 주문상세 처리
-					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
+					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd()) && vo.getOrdCanChgQty() > 0) {
 						// 주문상세 별 전체취소여부 설정
 						// 주문상세 별 전체취소여부 설정
 						int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
 						int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
 
 
@@ -945,6 +945,7 @@ public class TscOrderChangeService {
 
 
 				Payment pg = new Payment();
 				Payment pg = new Payment();
 				pg.setOrdNo(ordNo);
 				pg.setOrdNo(ordNo);
+				pg.setOrdChgSq(ordChgSq);
 				pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
 				pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
 				pg.setPayGb("O");
 				pg.setPayGb("O");
 				pg.setPgTid(pgTid);
 				pg.setPgTid(pgTid);
@@ -1589,7 +1590,7 @@ public class TscOrderChangeService {
 				orderChange.setChgerBaseAddr(chgerBaseAddr);
 				orderChange.setChgerBaseAddr(chgerBaseAddr);
 				orderChange.setChgerDtlAddr(chgerDtlAddr);
 				orderChange.setChgerDtlAddr(chgerDtlAddr);
 				orderChange.setWdGb(wdGb);
 				orderChange.setWdGb(wdGb);
-				orderChange.setWdTargetYn("D".equals(wdGb) ? "N" : "Y");
+				// orderChange.setWdTargetYn("D".equals(wdGb) ? "N" : "Y");
 				orderChange.setWdInvoiceNo(wdInvoiceNo);
 				orderChange.setWdInvoiceNo(wdInvoiceNo);
 				orderChange.setAddPayCost(addDelvFee);
 				orderChange.setAddPayCost(addDelvFee);
 				orderChange.setAddPayAmt(0);
 				orderChange.setAddPayAmt(0);
@@ -1618,7 +1619,7 @@ public class TscOrderChangeService {
 				for (Order vo : cancelOrderDetailList) {
 				for (Order vo : cancelOrderDetailList) {
 					
 					
 					// 배송정책코드 별 주문상세 처리
 					// 배송정책코드 별 주문상세 처리
-					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
+					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd()) && vo.getOrdCanChgQty() > 0) {
 						// 3-2-2. 주문변경상세정보 및 이력 등록
 						// 3-2-2. 주문변경상세정보 및 이력 등록
 						OrderChange changeDetailPo = new OrderChange();
 						OrderChange changeDetailPo = new OrderChange();
 						changeDetailPo.setOrdChgSq(ordChgSq);
 						changeDetailPo.setOrdChgSq(ordChgSq);
@@ -1818,7 +1819,7 @@ public class TscOrderChangeService {
 				orderChange.setChgReason(excReq.getChgReason());
 				orderChange.setChgReason(excReq.getChgReason());
 				orderChange.setChgMemo(excReq.getChgMemo());
 				orderChange.setChgMemo(excReq.getChgMemo());
 				orderChange.setWdGb(wdGb);
 				orderChange.setWdGb(wdGb);
-				orderChange.setWdTargetYn("D".equals(wdGb) ? "N" : "Y");
+				// orderChange.setWdTargetYn("D".equals(wdGb) ? "N" : "Y");
 				orderChange.setWdInvoiceNo(wdInvoiceNo);
 				orderChange.setWdInvoiceNo(wdInvoiceNo);
 				orderChange.setChgerNm(excReq.getChgerNm());
 				orderChange.setChgerNm(excReq.getChgerNm());
 				orderChange.setChgerPhnno(excReq.getChgerPhnno());
 				orderChange.setChgerPhnno(excReq.getChgerPhnno());
@@ -2687,6 +2688,7 @@ public class TscOrderChangeService {
 		// 11. PG 연동
 		// 11. PG 연동
 		Payment pg = new Payment();
 		Payment pg = new Payment();
 		pg.setOrdNo(ordNo);
 		pg.setOrdNo(ordNo);
+		pg.setOrdChgSq(ordChgSq);
 		pg.setPayGb("O");
 		pg.setPayGb("O");
 		pg.setPgTid(payment.getPgTid());
 		pg.setPgTid(payment.getPgTid());
 		pg.setPayAmt(refundAmt);
 		pg.setPayAmt(refundAmt);
@@ -3232,7 +3234,7 @@ public class TscOrderChangeService {
 					vo.setOrdDtlStat(ordDtlStat);
 					vo.setOrdDtlStat(ordDtlStat);
 					
 					
 					// 배송정책코드 별 주문상세 처리
 					// 배송정책코드 별 주문상세 처리
-					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
+					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd()) && vo.getOrdCanChgQty() > 0) {
 						// 주문상세 별 전체취소여부 설정
 						// 주문상세 별 전체취소여부 설정
 						int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
 						int leftQty = vo.getOrdQty() - vo.getCnclRtnQty() - vo.getOrdCanChgQty();
 
 

+ 7 - 6
src/main/java/com/style24/core/support/env/TscConstants.java

@@ -69,24 +69,25 @@ public class TscConstants {
 		CERT_NO_SEND("G054_202"),				// 회원/마케팅 -휴대전화인증
 		CERT_NO_SEND("G054_202"),				// 회원/마케팅 -휴대전화인증
 		TEMP_PASSWD("G054_203"), 				// 회원/마케팅 -고객비밀번호발송
 		TEMP_PASSWD("G054_203"), 				// 회원/마케팅 -고객비밀번호발송
 		ONE_TO_ONE_ANSWER("G054_204"),			// 회원/마케팅 -1:1문의답변
 		ONE_TO_ONE_ANSWER("G054_204"),			// 회원/마케팅 -1:1문의답변
-		SECEDE_CUST("G054_205"),					// 회원/마케팅 -가입탈퇴안내
+		SECEDE_CUST("G054_205"),				// 회원/마케팅 -가입탈퇴안내
 		BASIC_LMS("G054_206"),					// 회원/마케팅 -기본LMS안내발송
 		BASIC_LMS("G054_206"),					// 회원/마케팅 -기본LMS안내발송
 		DORMANT_EXPECTED("G054_207"),			// 회원/마케팅 -휴면계정전환예정
 		DORMANT_EXPECTED("G054_207"),			// 회원/마케팅 -휴면계정전환예정
 		PRIVACY_POLICY("G054_208"),				// 회원/마케팅 -개인정보 이용내역
 		PRIVACY_POLICY("G054_208"),				// 회원/마케팅 -개인정보 이용내역
-		MARKETING_AGREE("G054_209"),				// 회원/마케팅 -마케팅 정보 수신동의 내역
-		BIRTH_COUPON_NOTICE("G054_210"),			// 회원/마케팅 -생일쿠폰다운로드안내
+		MARKETING_AGREE("G054_209"),			// 회원/마케팅 -마케팅 정보 수신동의 내역
+		BIRTH_COUPON_NOTICE("G054_210"),		// 회원/마케팅 -생일쿠폰다운로드안내
 		GRADE_NOTICE("G054_211"),				// 회원/마케팅 -이달의 등급 혜택 안내
 		GRADE_NOTICE("G054_211"),				// 회원/마케팅 -이달의 등급 혜택 안내
 		DORMANT_EXPECT_COMBACK("G054_212"),		// 회원/마케팅 -휴면/미접속자 방어쿠폰
 		DORMANT_EXPECT_COMBACK("G054_212"),		// 회원/마케팅 -휴면/미접속자 방어쿠폰
 		GIFTCARD_EXTNC_EXPECT("G054_213"),		// 회원/마케팅 - 상품권 소멸 예정 안내
 		GIFTCARD_EXTNC_EXPECT("G054_213"),		// 회원/마케팅 - 상품권 소멸 예정 안내
-		COUPON_EXTNC_EXPECT("G054_214"),			// 회원/마케팅 - 쿠폰 소멸 예정안내
+		COUPON_EXTNC_EXPECT("G054_214"),		// 회원/마케팅 - 쿠폰 소멸 예정안내
 		POINT_EXTNC_EXPECT("G054_215"),			// 회원/마케팅 - 포인트 소멸 예정안내
 		POINT_EXTNC_EXPECT("G054_215"),			// 회원/마케팅 - 포인트 소멸 예정안내
 		ORDER_INFO("G054_301"),					// 주문-주문안내
 		ORDER_INFO("G054_301"),					// 주문-주문안내
 		BANK_DEPOSIT_INFO("G054_302"),			// 주문-무통장입금안내
 		BANK_DEPOSIT_INFO("G054_302"),			// 주문-무통장입금안내
 		SOLDOUT_EXPECTED_INFO("G054_303"),		// 주문-결품예정안내
 		SOLDOUT_EXPECTED_INFO("G054_303"),		// 주문-결품예정안내
 		SOLDOUT_INFO("G054_304"),				// 주문-결품안내
 		SOLDOUT_INFO("G054_304"),				// 주문-결품안내
-		CANCEL_INFO("G054_305"),					// 주문-취소안내
+		CANCEL_INFO("G054_305"),				// 주문-취소안내
 		REPAYMENT_INFO("G054_306"),				// 주문-재결제안내
 		REPAYMENT_INFO("G054_306"),				// 주문-재결제안내
-		BUY_CONFIRM("G054_307"),					// 주문-구매확정
+		BUY_CONFIRM("G054_307"),				// 주문-구매확정
+		GIFT("G054_308"),						// 주문-선물하기
 		SHIPPING_INFO("G054_401"),				// 배송-주문상품배송안내
 		SHIPPING_INFO("G054_401"),				// 배송-주문상품배송안내
 		EXCHANGE_SHIPPING_INFO("G054_402"),		// 배송-교환상품배송안내
 		EXCHANGE_SHIPPING_INFO("G054_402"),		// 배송-교환상품배송안내
 		RETURN_RECEIPT("G054_501"),				// 반품-반품접수완료
 		RETURN_RECEIPT("G054_501"),				// 반품-반품접수완료

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

@@ -19,6 +19,7 @@ public class CustContactHst extends TscBaseDomain {
 	private String contactType;		// 접촉유형(공통코드G054)
 	private String contactType;		// 접촉유형(공통코드G054)
 	private String contactMethod;	// 접촉방법(공통코드G055)
 	private String contactMethod;	// 접촉방법(공통코드G055)
 	private String contactContents;	// 접촉내용
 	private String contactContents;	// 접촉내용
+	private String contactMemo;		// 접촉메모
 	private Integer senderNo;		// 발송자NO(고객, 사용자)
 	private Integer senderNo;		// 발송자NO(고객, 사용자)
 	private String senderNm;		// 발송자명
 	private String senderNm;		// 발송자명
 	private String sendDt;			// 발송일시
 	private String sendDt;			// 발송일시

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

@@ -50,6 +50,8 @@ public class CustCoupon extends TscBaseDomain {
     private String custGrade;
     private String custGrade;
     private String useCondition;
     private String useCondition;
     private String tgtCondition;
     private String tgtCondition;
+    private String availStdtTime;
+    private String availEddtTime;
 
 
 
 
     public String getCustNm() {
     public String getCustNm() {

+ 9 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscCustomer.xml

@@ -99,6 +99,7 @@
 		      CONTACT_TYPE
 		      CONTACT_TYPE
 		    , CONTACT_METHOD
 		    , CONTACT_METHOD
 		    , CONTACT_CONTENTS
 		    , CONTACT_CONTENTS
+		    , CONTACT_MEMO
 		    , SENDER_NO
 		    , SENDER_NO
 		    , SEND_DT
 		    , SEND_DT
 		    , RECEIVER_NO
 		    , RECEIVER_NO
@@ -109,6 +110,7 @@
 		      #{contactType}
 		      #{contactType}
 		    , #{contactMethod}
 		    , #{contactMethod}
 		    , #{contactContents}
 		    , #{contactContents}
+		    , #{contactMemo}
 		    , IFNULL(#{senderNo}, 0)
 		    , IFNULL(#{senderNo}, 0)
 		    , NOW()
 		    , NOW()
 		    , #{receiverNo}
 		    , #{receiverNo}
@@ -685,4 +687,11 @@
 		VALUES (NULL)
 		VALUES (NULL)
 	</insert>
 	</insert>
 
 
+	<select id="getSecedeDt" parameterType="Integer" resultType="Customer">
+		SELECT DATE_FORMAT(SECEDE_DT, '%Y.%m.%d %H:%i') AS SECEDE_DT
+		     , SNS_TYPE
+		FROM   TB_SECEDE_CUST
+		WHERE  CUST_NO = #{custNo}
+	</select>
+
 </mapper>
 </mapper>

+ 3 - 1
src/main/java/com/style24/persistence/mybatis/shop/TscScm.xml

@@ -367,6 +367,7 @@
 		     , OD.ORD_NO
 		     , OD.ORD_NO
 		     , OCD.ORD_DTL_NO
 		     , OCD.ORD_DTL_NO
 		     , OC.CHG_GB
 		     , OC.CHG_GB
+		     , FN_GET_CODE_NM('G680', OC.CHG_GB) AS CHG_GB_NM
 		     , OCD.CHG_STAT
 		     , OCD.CHG_STAT
 		     , FN_GET_CODE_NM('G685', OCD.CHG_STAT) AS CHG_STAT_NM
 		     , FN_GET_CODE_NM('G685', OCD.CHG_STAT) AS CHG_STAT_NM
 		     , OC.REG_DT
 		     , OC.REG_DT
@@ -434,7 +435,7 @@
 		AND    O.ORD_NO = #{ordNo}
 		AND    O.ORD_NO = #{ordNo}
 		</if>
 		</if>
 		<if test="chgerNm != null and chgerNm != ''">
 		<if test="chgerNm != null and chgerNm != ''">
-		AND    OC.ORD_NM = #{chgerNm}
+		AND    OC.CHGER_NM = #{chgerNm}
 		</if>
 		</if>
 		<if test='goodsCd != null and goodsCd != ""'>
 		<if test='goodsCd != null and goodsCd != ""'>
 		AND    G.GOODS_CD = #{goodsCd}
 		AND    G.GOODS_CD = #{goodsCd}
@@ -448,6 +449,7 @@
 		AND    OC.REG_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
 		AND    OC.REG_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
 			</if>
 			</if>
 		</if>
 		</if>
+		AND    OCD.CHG_STAT NOT IN ('G685_19', 'G685_49', 'G685_69')
 		ORDER  BY OC.REG_DT ASC
 		ORDER  BY OC.REG_DT ASC
 	</select>
 	</select>