Sfoglia il codice sorgente

Merge branch 'develop' into card007

card007 4 anni fa
parent
commit
5ed72afe8a

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

@@ -995,6 +995,15 @@ public interface TscOrderDao {
 	 * @since 2021. 07. 26
 	 */
 	int changedOrdDtlStatDelvStart(Order order);
+	
+	
+	/**
+	 * 외부몰 결제 여부 정보 체크
+	 * @param param
+	 * @author jsh77b
+	 * @since 2021. 09. 02
+	 */
+	int getExtmallOrderChk(Payment param);
 }
 
 

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

@@ -10,7 +10,6 @@ import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.dao.TscOrderChangeDao;
 import com.style24.core.biz.thirdparty.NaverShortUrl;
 import com.style24.core.biz.thirdparty.SsgKakaoSender;
@@ -30,6 +29,8 @@ import com.style24.persistence.domain.SsgDirectMessage;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+
 /**
  * 카카오알림톡 Service. 모든 카카오알림톡 발송은 여기에서 처리한다.
  * 
@@ -322,7 +323,7 @@ public class TscKakaotalkService {
 		}
 
 	}
-	
+
 	/**
 	 * 이달의 등급 안내 알림톡
 	 *
@@ -447,7 +448,6 @@ public class TscKakaotalkService {
 		}
 	}
 
-
 	/**
 	 * 상품권 기간만료 알림톡(30일)
 	 * @param giftcard - 상품권 정보
@@ -472,7 +472,7 @@ public class TscKakaotalkService {
 //		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GIFTCARD_EXTNC_EXPECT.value(), dm, replaceInfo);
 
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GIFTCARD_EXTNC_EXPECT.value(), dm, replaceInfo);
-		
+
 		try {
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
@@ -514,7 +514,7 @@ public class TscKakaotalkService {
 //		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.POINT_EXTNC_EXPECT.value(), dm, replaceInfo);
 
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.POINT_EXTNC_EXPECT.value(), dm, replaceInfo);
-		
+
 		try {
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
@@ -530,7 +530,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 *  쿠폰 기간만료 알림톡(7일)
 	 * @param coupon - 쿠폰 정보
@@ -555,7 +555,7 @@ public class TscKakaotalkService {
 		replaceInfo.setString("dcWay", coupon.getDcWay());
 //		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.COUPON_EXTNC_EXPECT.value(), dm, replaceInfo);
 
-			kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.COUPON_EXTNC_EXPECT.value(), dm, replaceInfo);
+		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.COUPON_EXTNC_EXPECT.value(), dm, replaceInfo);
 
 		try {
 			// 고객접촉이력 정보
@@ -594,64 +594,63 @@ public class TscKakaotalkService {
 		String payAmt = dc.format(order.getPayAmt());
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("ordNm"			, order.getOrdNm());
-		replaceInfo.set("ordNo"					, order.getOrdNo());
-		
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", order.getOrdNm());
+		replaceInfo.set("ordNo", order.getOrdNo());
+
 		// 2021.07.08 상품명 수정
 		if (Integer.parseInt(order.getGoodsCnt()) > 0) {
-			replaceInfo.setString("goodsNm"			, order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
+			replaceInfo.setString("goodsNm", order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
 		} else {
-			replaceInfo.setString("goodsNm"			, order.getGoodsNm());
+			replaceInfo.setString("goodsNm", order.getGoodsNm());
 		}
-		
-		replaceInfo.setString("goodsCnt"		, order.getGoodsCnt());
-		replaceInfo.setString("payAmt"			, payAmt);
-		
+
+		replaceInfo.setString("goodsCnt", order.getGoodsCnt());
+		replaceInfo.setString("payAmt", payAmt);
+
 		// 2021.07.09 선물하기시 배송지 정보 없음
 		if (order.getRecipBaseAddr() == null || "".equals(order.getRecipBaseAddr())) {
-			replaceInfo.setString("recipBaseAddr"	, "주소 입력 대기중");
+			replaceInfo.setString("recipBaseAddr", "주소 입력 대기중");
 		} else {
-			replaceInfo.setString("recipBaseAddr"	, order.getRecipBaseAddr());
+			replaceInfo.setString("recipBaseAddr", order.getRecipBaseAddr());
 		}
-		replaceInfo.setString("recipNm"			, order.getRecipNm());
+		replaceInfo.setString("recipNm", order.getRecipNm());
 
 		SimpleDateFormat sd = new SimpleDateFormat("yyyy년 MM월 dd일");
 		String todayDate = sd.format(System.currentTimeMillis());
-		
+
 		int kakaoAnswerSq = 0;
-		
+
 		// KCP
 		if ("KCP".equals(order.getPgGb())) {
 			// 무통장입금
 			if (TscConstants.PayMeans.BANK_DEPOSIT.value().equals(order.getPayMeans())) {
 				Date deadline = new SimpleDateFormat("yyyy-MM-dd").parse(order.getVaDeadline().substring(0, 10));
-				replaceInfo.setString("ordDt"			, todayDate);
-				replaceInfo.setString("vaBankNm"		, order.getCardNm());
-				replaceInfo.setString("vaNo"			, order.getVaNo());
-				replaceInfo.setString("vaDeadline"		, new SimpleDateFormat("yyyy년 MM월 dd일").format(deadline));
-				replaceInfo.setString("deadlineH"		, "17");
-				
+				replaceInfo.setString("ordDt", todayDate);
+				replaceInfo.setString("vaBankNm", order.getCardNm());
+				replaceInfo.setString("vaNo", order.getVaNo());
+				replaceInfo.setString("vaDeadline", new SimpleDateFormat("yyyy년 MM월 dd일").format(deadline));
+				replaceInfo.setString("deadlineH", "17");
+
 				kakaoAnswerSq = SsgKakaoSender.KakaoAnswerSq.VA_ORDER_COMPLETE.value();
-			} 
+			}
 			// 실시간계좌이체
 			else if (TscConstants.PayMeans.ACCOUNT_TRANSFER.value().equals(order.getPayMeans())) {
-				replaceInfo.setString("ordDt"			, todayDate);
-				replaceInfo.setString("vaBankNm"		, order.getCardNm());
-				
+				replaceInfo.setString("ordDt", todayDate);
+				replaceInfo.setString("vaBankNm", order.getCardNm());
+
 				kakaoAnswerSq = SsgKakaoSender.KakaoAnswerSq.AT_ORDER_COMPLETE.value();
 			}
 			// 신용카드, 휴대폰결제
 			else {
 				kakaoAnswerSq = SsgKakaoSender.KakaoAnswerSq.ORDER_COMPLETE.value();
 			}
-		}
-		else  {
+		} else {
 			kakaoAnswerSq = SsgKakaoSender.KakaoAnswerSq.ORDER_COMPLETE.value();
 		}
-		
+
 		kakaoSender.send(kakaoAnswerSq, dm, replaceInfo);
-		
+
 		try {
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
@@ -668,7 +667,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 * 무통장입금 확인 알림톡
 	 * @param order - 주문정보
@@ -688,21 +687,21 @@ public class TscKakaotalkService {
 		String payAmt = dc.format(order.getPayAmt());
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("custNm"			, order.getOrdNm());
-		replaceInfo.setString("ordDt"			, order.getOrdDt());
-		replaceInfo.setString("payAmt"			, payAmt);
-		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
-		replaceInfo.setString("vaNm"			, order.getVaNm());
-		replaceInfo.setString("vaNo"			, order.getVaNo());
-		
-		replaceInfo.set("ordNo"					, order.getOrdNo());
-		replaceInfo.setString("recipNm"			, order.getRecipNm());
-		replaceInfo.setString("vaBankNm"		, order.getCardNm());
-		replaceInfo.setString("recipBaseAddr"	, order.getRecipBaseAddr());
-		
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("custNm", order.getOrdNm());
+		replaceInfo.setString("ordDt", order.getOrdDt());
+		replaceInfo.setString("payAmt", payAmt);
+		replaceInfo.setString("goodsNm", order.getGoodsNm());
+		replaceInfo.setString("vaNm", order.getVaNm());
+		replaceInfo.setString("vaNo", order.getVaNo());
+
+		replaceInfo.set("ordNo", order.getOrdNo());
+		replaceInfo.setString("recipNm", order.getRecipNm());
+		replaceInfo.setString("vaBankNm", order.getCardNm());
+		replaceInfo.setString("recipBaseAddr", order.getRecipBaseAddr());
+
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.VA_DEPOSIT_CONFIRM.value(), dm, replaceInfo);
-		
+
 		try {
 			CustContactHst custContactHst = new CustContactHst();
 			// 고객접촉이력 정보
@@ -739,18 +738,18 @@ public class TscKakaotalkService {
 		String payAmt = dc.format(order.getPayAmt());
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
-		replaceInfo.setString("ordNm"			, order.getOrdNm());
-		replaceInfo.setString("payAmt"			, payAmt);
-		replaceInfo.setString("vaBankNm"		, order.getBankNm());
-		replaceInfo.setString("vaNo"			, order.getVaNo());
-		replaceInfo.setString("vaDeadline"		, order.getVaDeadline());
-
-		if(Integer.parseInt(order.getGoodsCnt()) < 1) {
-			replaceInfo.setString("goodsNm"			, order.getGoodsNm());
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
+		replaceInfo.setString("ordNm", order.getOrdNm());
+		replaceInfo.setString("payAmt", payAmt);
+		replaceInfo.setString("vaBankNm", order.getBankNm());
+		replaceInfo.setString("vaNo", order.getVaNo());
+		replaceInfo.setString("vaDeadline", order.getVaDeadline());
+
+		if (Integer.parseInt(order.getGoodsCnt()) < 1) {
+			replaceInfo.setString("goodsNm", order.getGoodsNm());
 		} else {
-			replaceInfo.setString("goodsNm"			, order.getGoodsNm() + " 외 " + order.getGoodsNm() + "건");
+			replaceInfo.setString("goodsNm", order.getGoodsNm() + " 외 " + order.getGoodsNm() + "건");
 		}
 
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.VA_DEPOSIT_REQUEST.value(), dm, replaceInfo);
@@ -788,14 +787,14 @@ public class TscKakaotalkService {
 		dm.setFkkoresendtype("LMS");
 		dm.setButtonNm("주문 취소 확인");
 
-		if(order.getGoodsCnt() > 0) {
+		if (order.getGoodsCnt() > 0) {
 			order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
 		}
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("custNm"			, order.getOrdNm());
-		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("custNm", order.getOrdNm());
+		replaceInfo.setString("goodsNm", order.getGoodsNm());
 		replaceInfo.setString("giftPackCloaseDt", order.getGiftPackCloseDt());
 
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GIFT_EXPIRATION_CANCEL.value(), dm, replaceInfo);
@@ -831,7 +830,7 @@ public class TscKakaotalkService {
 		payment.setOrdNo(order.getOrdNo());
 		payment = orderChangeDao.getPaymentInfo(payment);
 		// 네이버페이 주문형 데이터는 알림톡 송부X
-		if(TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
+		if (TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
 			return;
 		}
 
@@ -841,11 +840,13 @@ public class TscKakaotalkService {
 		dm.setFkkoresendtype("LMS");
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("ordNm"			, order.getOrdNm());
-		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
-		if(Integer.parseInt(order.getGoodsCnt()) > 0) {order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");}
-		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", order.getOrdNm());
+		replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
+		if (Integer.parseInt(order.getGoodsCnt()) > 0) {
+			order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
+		}
+		replaceInfo.setString("goodsNm", order.getGoodsNm());
 
 		dm.setBizTime("Y");
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GOODS_SEND.value(), dm, replaceInfo);
@@ -866,7 +867,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 * 선물받기 배송지입력
 	 * @param order - 주문 정보
@@ -888,19 +889,18 @@ public class TscKakaotalkService {
 		String payAmt = dc.format(order.getPayAmt());
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"				, siteNm);
-		replaceInfo.setString("recipNm"				, order.getRecipNm());
-		replaceInfo.setString("ordNm"				, order.getOrdNm());
-		replaceInfo.set("ordNo"						, order.getOrdNo());
-		replaceInfo.setString("goodsNm"				, order.getGoodsNm());
-		replaceInfo.setString("goodsCnt"			, order.getGoodsCnt());
-
-		
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("recipNm", order.getRecipNm());
+		replaceInfo.setString("ordNm", order.getOrdNm());
+		replaceInfo.set("ordNo", order.getOrdNo());
+		replaceInfo.setString("goodsNm", order.getGoodsNm());
+		replaceInfo.setString("goodsCnt", order.getGoodsCnt());
+
 		Date giftPackCloseDt = new SimpleDateFormat("yyyy-MM-dd").parse(order.getGiftPackCloseDt().substring(0, 10));
-		replaceInfo.setString("giftPackCloaseDt"	, new SimpleDateFormat("yyyy년 MM월 dd일").format(giftPackCloseDt));
-		
+		replaceInfo.setString("giftPackCloaseDt", new SimpleDateFormat("yyyy년 MM월 dd일").format(giftPackCloseDt));
+
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GIFT_ARRIVED.value(), dm, replaceInfo);
-		
+
 		try {
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
@@ -917,7 +917,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 //
 //	/**
 //	 * 주문취소안내 알림톡
@@ -1026,9 +1026,9 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	//----------------------------
-	
+
 	/**
 	 * 재입고 발송
 	 * @param customer
@@ -1053,9 +1053,9 @@ public class TscKakaotalkService {
 		replaceInfo.setString("optCd2", goods.getString("optCd2"));
 		replaceInfo.setString("goodsCd", goods.getString("goodsCd"));
 		replaceInfo.setString("colorCd", goods.getString("colorCd"));
-		
+
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GOODS_RESTOCK.value(), dm, replaceInfo);
-		
+
 		try {
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
@@ -1073,9 +1073,8 @@ public class TscKakaotalkService {
 		result = 1;
 		return result;
 	}
-	
-	//----------------------------
 
+	//----------------------------
 
 	/**
 	 * 주문취소 알림톡
@@ -1091,7 +1090,7 @@ public class TscKakaotalkService {
 		// payment.setOrdNo(orderChange.getOrdNo());
 		// payment = orderChangeDao.getPaymentInfo(payment);
 		// 네이버페이 주문형 데이터는 알림톡 송부X
-		if(TscConstants.PgGb.NAVER_ORDER.value().equals(orderChange.getPgGb())) {
+		if (TscConstants.PgGb.NAVER_ORDER.value().equals(orderChange.getPgGb())) {
 			return;
 		}
 
@@ -1104,7 +1103,7 @@ public class TscKakaotalkService {
 		// 취소금액 콤마 처리
 		DecimalFormat dc = new DecimalFormat("###,###,###,###");
 		String refundAmt = dc.format(orderChange.getRefundAmt());
-		
+
 		// 상품명 처리
 		String goodsNm = orderChange.getGoodsNm();
 		int goodsCnt = orderChange.getGoodsCnt();
@@ -1118,7 +1117,7 @@ public class TscKakaotalkService {
 		String payMeansNm = orderChange.getPayMeansNm();
 
 		// 품절 취소
-		if(StringUtils.isNotBlank(orderChange.getChgReason()) && TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value().equals(orderChange.getChgReason())) {
+		if (StringUtils.isNotBlank(orderChange.getChgReason()) && TscConstants.OrderCancelReason.SOLDOUT_CANCEL.value().equals(orderChange.getChgReason())) {
 			// KCP
 			if (TscConstants.PgGb.KCP.value().equals(pgGb)) {
 				// 신용카드
@@ -1210,16 +1209,16 @@ public class TscKakaotalkService {
 
 		// 치환데이터 설정
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"				, siteNm);
-		replaceInfo.setString("ordNm"				, orderChange.getOrdNm());
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", orderChange.getOrdNm());
 		// replaceInfo.setString("회원명"				, orderChange.getOrdNm());
-		replaceInfo.setInt("ordNo"					, orderChange.getOrdNo());
+		replaceInfo.setInt("ordNo", orderChange.getOrdNo());
 		// replaceInfo.setInt("OrderNo"				, orderChange.getOrdNo());
-		replaceInfo.setString("goodsNm"				, goodsNm);
+		replaceInfo.setString("goodsNm", goodsNm);
 		// replaceInfo.setInt("goodsCnt"				, orderChange.getGoodsCnt());
 		// replaceInfo.setInt("N"						, orderChange.getGoodsCnt());
-		replaceInfo.setString("payMeansNm"			, payMeansNm);
-		replaceInfo.setString("refundAmt"			, refundAmt);
+		replaceInfo.setString("payMeansNm", payMeansNm);
+		replaceInfo.setString("refundAmt", refundAmt);
 
 		if (orderChange.getCustNo() > 0) {
 			replaceInfo.setString("url", "/mypage/cre/list/form");
@@ -1228,7 +1227,7 @@ public class TscKakaotalkService {
 		}
 
 		if (ansSq > 0) {
-			if(senderNo < 100000) {
+			if (senderNo < 100000) {
 				dm.setBizTime("Y");
 			}
 
@@ -1270,11 +1269,11 @@ public class TscKakaotalkService {
 		String wdGb = orderChange.getWdGb();
 		String chgerBaseAddr = orderChange.getChgerBaseAddr() + " " + orderChange.getChgerDtlAddr();
 		DecimalFormat df = new DecimalFormat("###,###");
-		
+
 		if ("D".equals(wdGb)) {
 			chgerBaseAddr = "직접배송";
 		}
-		
+
 		if (addPayCost > 0) {
 			ansSq = SsgKakaoSender.KakaoAnswerSq.RETURN_ADD_COST.value();
 			contactType = TscConstants.ContactType.RETURN_ADD_PAYMENT.value();
@@ -1293,13 +1292,13 @@ public class TscKakaotalkService {
 		}
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"				, siteNm);
-		replaceInfo.setString("ordNm"				, orderChange.getOrdNm());
-		replaceInfo.setInt("ordNo"					, orderChange.getOrdNo());
-		replaceInfo.setString("goodsNm"				, goodsNm);
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", orderChange.getOrdNm());
+		replaceInfo.setInt("ordNo", orderChange.getOrdNo());
+		replaceInfo.setString("goodsNm", goodsNm);
 		// replaceInfo.setInt("goodsCnt"				, orderChange.getGoodsCnt());
-		replaceInfo.setString("chgerBaseAddr"		, chgerBaseAddr);
-		replaceInfo.setString("addPayCost"			, addPayCost == 0 ? "0" : df.format(addPayCost)+"원");
+		replaceInfo.setString("chgerBaseAddr", chgerBaseAddr);
+		replaceInfo.setString("addPayCost", addPayCost == 0 ? "0" : df.format(addPayCost) + "원");
 
 		if (ansSq > 0) {
 			SsgDirectMessage dm = new SsgDirectMessage();
@@ -1369,13 +1368,13 @@ public class TscKakaotalkService {
 		}
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"				, siteNm);
-		replaceInfo.setString("ordNm"				, orderChange.getOrdNm());
-		replaceInfo.setInt("ordNo"					, orderChange.getOrdNo());
-		replaceInfo.setString("goodsNm"				, goodsNm);
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", orderChange.getOrdNm());
+		replaceInfo.setInt("ordNo", orderChange.getOrdNo());
+		replaceInfo.setString("goodsNm", goodsNm);
 		// replaceInfo.setInt("goodsCnt"				, orderChange.getGoodsCnt());
-		replaceInfo.setString("chgerBaseAddr"		, chgerBaseAddr);
-		replaceInfo.setString("addPayCost"			, addPayCost == 0 ? "0" : df.format(addPayCost)+"원");
+		replaceInfo.setString("chgerBaseAddr", chgerBaseAddr);
+		replaceInfo.setString("addPayCost", addPayCost == 0 ? "0" : df.format(addPayCost) + "원");
 
 		if (ansSq > 0) {
 			SsgDirectMessage dm = new SsgDirectMessage();
@@ -1404,7 +1403,7 @@ public class TscKakaotalkService {
 			}
 		}
 	}
-	
+
 	/**
 	 *  1:1문의 알림톡
 	 * @param counsel
@@ -1418,12 +1417,13 @@ public class TscKakaotalkService {
 		dm.setFuserid(String.valueOf(senderNo)); // 발송자NO
 		dm.setFdestine(counsel.getCellPhnno());
 		dm.setFkkoresendtype("LMS");
+		dm.setBizTime("Y"); // 예약 발송여부
 
 		GagaMap replaceInfo = new GagaMap();
 		replaceInfo.setString("siteNm", siteNm);
 		replaceInfo.setString("custNm", counsel.getCustNm());
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.ONE_TO_ONE_ANSWER.value(), dm, replaceInfo);
-		
+
 		try {
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
@@ -1439,7 +1439,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 *  상품문의 알림톡
 	 * @param counsel
@@ -1453,13 +1453,14 @@ public class TscKakaotalkService {
 		dm.setFuserid(String.valueOf(senderNo)); // 발송자NO
 		dm.setFdestine(counsel.getCellPhnno());
 		dm.setFkkoresendtype("LMS");
+		dm.setBizTime("Y"); // 예약 발송여부
 
 		GagaMap replaceInfo = new GagaMap();
 		replaceInfo.setString("siteNm", siteNm);
 		replaceInfo.setString("custNm", counsel.getCustNm());
 		replaceInfo.setString("goodsNm", counsel.getGoodsNm());
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.GOODS_ASK_ANSWER.value(), dm, replaceInfo);
-		
+
 		try {
 			// 고객접촉이력 정보
 			CustContactHst custContactHst = new CustContactHst();
@@ -1476,7 +1477,6 @@ public class TscKakaotalkService {
 		}
 	}
 
-
 	/**
 	 * 품절알림 - 샵링커, 제휴몰주문업로드
 	 * @param extmallOrder - 고객 정보
@@ -1498,9 +1498,9 @@ public class TscKakaotalkService {
 		replaceInfo.setString("soldoutGoodsNm", extmallOrder.getSoldoutGoodsNm());
 
 		Integer ansSq = 0;
-		if( "Y".equals(extmallOrder.getCnclAllSoldoutYn())){
+		if ("Y".equals(extmallOrder.getCnclAllSoldoutYn())) {
 			ansSq = SsgKakaoSender.KakaoAnswerSq.EXTMALL_SOLDOUT.value(); // 전체품절
-		}else {
+		} else {
 			ansSq = SsgKakaoSender.KakaoAnswerSq.EXTMALL_PART_SOLDOUT.value(); // 부분품절
 		}
 		kakaoSender.send(ansSq, dm, replaceInfo);
@@ -1510,7 +1510,7 @@ public class TscKakaotalkService {
 			CustContactHst custContactHst = new CustContactHst();
 			custContactHst.setContactType(TscConstants.ContactType.SOLDOUT_INFO.value()); // 접촉유형:주문-결품안내(공통코드G054)
 			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); // 접촉방법:알림톡+문자(공통코드G055)
-			custContactHst.setContactContents("샵링커 주문수집("+extmallOrder.getUploadGb()+") 품절안내");
+			custContactHst.setContactContents("샵링커 주문수집(" + extmallOrder.getUploadGb() + ") 품절안내");
 			custContactHst.setReceiverNo(0);
 			custContactHst.setSenderNo(senderNo);
 			custContactHst.setRegNo(senderNo);
@@ -1520,7 +1520,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 * 회수시작 안내 
 	 * @param order - 주문정보
@@ -1535,7 +1535,7 @@ public class TscKakaotalkService {
 		payment.setOrdNo(order.getOrdNo());
 		payment = orderChangeDao.getPaymentInfo(payment);
 		// 네이버페이 주문형 데이터는 알림톡 송부X
-		if(TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
+		if (TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
 			return;
 		}
 
@@ -1545,14 +1545,14 @@ public class TscKakaotalkService {
 		dm.setFkkoresendtype("LMS");
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("ordNm"			, order.getOrdNm());
-		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
-		if(Integer.parseInt(order.getGoodsCnt()) > 0) {order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");}
-		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
-		replaceInfo.setString("chgerBaseAddr"   , order.getChgerBaseAddr());
-		
-		
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", order.getOrdNm());
+		replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
+		if (Integer.parseInt(order.getGoodsCnt()) > 0) {
+			order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
+		}
+		replaceInfo.setString("goodsNm", order.getGoodsNm());
+		replaceInfo.setString("chgerBaseAddr", order.getChgerBaseAddr());
 
 		dm.setBizTime("Y");
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.WHITHDRAW_START.value(), dm, replaceInfo);
@@ -1573,7 +1573,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 * 반품완료 안내 
 	 * @param order - 주문정보
@@ -1584,14 +1584,14 @@ public class TscKakaotalkService {
 	 */
 	@Transactional("shopTxnManager")
 	public void sendRefundComplete(Order order, Integer senderNo) throws Exception {
-		
+
 		DecimalFormat df = new DecimalFormat("###,###");
-		
+
 		Payment payment = new Payment();
 		payment.setOrdNo(order.getOrdNo());
 		payment = orderChangeDao.getPaymentInfo(payment);
 		// 네이버페이 주문형 데이터는 알림톡 송부X
-		if(TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
+		if (TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
 			return;
 		}
 
@@ -1601,14 +1601,14 @@ public class TscKakaotalkService {
 		dm.setFkkoresendtype("LMS");
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("ordNm"			, order.getOrdNm());
-		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
-		if(Integer.parseInt(order.getGoodsCnt()) > 0) {order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");}
-		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
-		replaceInfo.setString("refundAmt"       , df.format(order.getRefundAmt())+"원");
-		
-		
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", order.getOrdNm());
+		replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
+		if (Integer.parseInt(order.getGoodsCnt()) > 0) {
+			order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
+		}
+		replaceInfo.setString("goodsNm", order.getGoodsNm());
+		replaceInfo.setString("refundAmt", df.format(order.getRefundAmt()) + "원");
 
 		dm.setBizTime("Y");
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.RETURN_COMPLETE.value(), dm, replaceInfo);
@@ -1629,7 +1629,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 * 품절취소 안내 
 	 * @param order - 주문정보
@@ -1645,7 +1645,7 @@ public class TscKakaotalkService {
 		payment.setOrdNo(order.getOrdNo());
 		payment = orderChangeDao.getPaymentInfo(payment);
 		// 네이버페이 주문형 데이터는 알림톡 송부X
-		if(TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
+		if (TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
 			return;
 		}
 
@@ -1654,7 +1654,7 @@ public class TscKakaotalkService {
 		dm.setFdestine(order.getOrdPhnno());
 		//dm.setFdestine("01040161558");
 		//order.setOrdNm("문달호");
-		
+
 		dm.setFkkoresendtype("LMS");
 
 		Integer ansSq = 0;
@@ -1696,31 +1696,33 @@ public class TscKakaotalkService {
 
 			ansSq = SsgKakaoSender.KakaoAnswerSq.CARD_CANCEL_BY_SOLDOUT.value();
 		}
-		
+
 		// 제휴몰일경우    전체/부분 알림톡 구분 
-		if(TscConstants.MallGb.EXTMALL.value().equals(order.getMallGb())) {
-			if("Y".equals(order.getCancelAllYn())) {
+		if (TscConstants.MallGb.EXTMALL.value().equals(order.getMallGb())) {
+			if ("Y".equals(order.getCancelAllYn())) {
 				ansSq = SsgKakaoSender.KakaoAnswerSq.EXTMALL_SOLDOUT.value();
-			//	ansSq=1040;
+				//	ansSq=1040;
 			} else {
 				ansSq = SsgKakaoSender.KakaoAnswerSq.EXTMALL_PART_SOLDOUT.value();
 				//ansSq=1041;
 			}
 		}
-		
+
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		if(Integer.parseInt(order.getGoodsCnt()) > 0) {order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");}
-		
-		if(TscConstants.MallGb.SELFMALL.value().equals(order.getMallGb())) {
-			replaceInfo.setString("ordNm"			, order.getOrdNm());
-			replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
-			replaceInfo.setString("goodsNm"			, order.getGoodsNm());
+		replaceInfo.setString("siteNm", siteNm);
+		if (Integer.parseInt(order.getGoodsCnt()) > 0) {
+			order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
+		}
+
+		if (TscConstants.MallGb.SELFMALL.value().equals(order.getMallGb())) {
+			replaceInfo.setString("ordNm", order.getOrdNm());
+			replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
+			replaceInfo.setString("goodsNm", order.getGoodsNm());
 		} else {
-			replaceInfo.setString("soldoutGoodsNm"	, order.getGoodsNm());
-			replaceInfo.setString("extmallNm"	, order.getExtmallNm()+"("+order.getExtmallTell()+")");
+			replaceInfo.setString("soldoutGoodsNm", order.getGoodsNm());
+			replaceInfo.setString("extmallNm", order.getExtmallNm() + "(" + order.getExtmallTell() + ")");
 		}
-		
+
 		dm.setBizTime("Y");
 		kakaoSender.send(ansSq, dm, replaceInfo);
 
@@ -1740,7 +1742,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 * 배송완료 안내(상품평 작성하기) 
 	 * @param order - 주문정보
@@ -1751,13 +1753,12 @@ public class TscKakaotalkService {
 	 */
 	@Transactional("shopTxnManager")
 	public void sendDeliveryComplete(Order order, Integer senderNo) throws Exception {
-		
 
 		Payment payment = new Payment();
 		payment.setOrdNo(order.getOrdNo());
 		payment = orderChangeDao.getPaymentInfo(payment);
 		// 네이버페이 주문형 데이터는 알림톡 송부X
-		if(TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
+		if (TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
 			return;
 		}
 
@@ -1768,11 +1769,9 @@ public class TscKakaotalkService {
 		dm.setFkkoresendtype("LMS");
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("custNm"			, order.getOrdNm());
-		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
-		
-		
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("custNm", order.getOrdNm());
+		replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
 
 		dm.setBizTime("Y");
 		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.REVIEW_WRITE.value(), dm, replaceInfo);
@@ -1792,9 +1791,8 @@ public class TscKakaotalkService {
 			log.error("error", e);
 			// Do nothing
 		}
-	}	
-	
-	
+	}
+
 	/**
 	 * 반품,교환 철회(회수X, 잘못된 주소)
 	 * @param order - 주문정보
@@ -1805,14 +1803,14 @@ public class TscKakaotalkService {
 	 */
 	@Transactional("shopTxnManager")
 	public void sendRecallCancel(Order order, Integer senderNo, String gubun) throws Exception {
-		
+
 		Integer ansSq = 0;
-		
+
 		Payment payment = new Payment();
 		payment.setOrdNo(order.getOrdNo());
 		payment = orderChangeDao.getPaymentInfo(payment);
 		// 네이버페이 주문형 데이터는 알림톡 송부X
-		if(TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
+		if (TscConstants.PgGb.NAVER_ORDER.value().equals(payment.getPgGb())) {
 			return;
 		}
 
@@ -1822,20 +1820,22 @@ public class TscKakaotalkService {
 		dm.setFkkoresendtype("LMS");
 
 		GagaMap replaceInfo = new GagaMap();
-		replaceInfo.setString("siteNm"			, siteNm);
-		replaceInfo.setString("ordNm"			, order.getOrdNm());
-		replaceInfo.setString("ordNo"			, String.valueOf(order.getOrdNo()));
-		if(Integer.parseInt(order.getGoodsCnt()) > 0) {order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");}
-		replaceInfo.setString("goodsNm"			, order.getGoodsNm());
-		replaceInfo.setString("chgerBaseAddr"	, order.getChgerBaseAddr());
-		
-		if("RETURN_CANCEL_CUSTOMER".equals(gubun)) {
+		replaceInfo.setString("siteNm", siteNm);
+		replaceInfo.setString("ordNm", order.getOrdNm());
+		replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
+		if (Integer.parseInt(order.getGoodsCnt()) > 0) {
+			order.setGoodsNm(order.getGoodsNm() + " 외 " + order.getGoodsCnt() + "건");
+		}
+		replaceInfo.setString("goodsNm", order.getGoodsNm());
+		replaceInfo.setString("chgerBaseAddr", order.getChgerBaseAddr());
+
+		if ("RETURN_CANCEL_CUSTOMER".equals(gubun)) {
 			ansSq = SsgKakaoSender.KakaoAnswerSq.RETURN_CANCEL_CUSTOMER.value(); 	// 반품 철회 안내 - 고객부재
-		} else if("RETURN_CANCEL_ADDR".equals(gubun)) {
+		} else if ("RETURN_CANCEL_ADDR".equals(gubun)) {
 			ansSq = SsgKakaoSender.KakaoAnswerSq.RETURN_CANCEL_ADDR.value(); 		// 반품 철회 안내 - 주소불일치 
-		} else if("EXCHANGE_CANCEL_CUSTOMER".equals(gubun)) {
+		} else if ("EXCHANGE_CANCEL_CUSTOMER".equals(gubun)) {
 			ansSq = SsgKakaoSender.KakaoAnswerSq.EXCHANGE_CANCEL_CUSTOMER.value(); 	// 교환 철회 안내 - 고객부재
-		} else if("EXCHANGE_CANCEL_ADDR".equals(gubun)) {
+		} else if ("EXCHANGE_CANCEL_ADDR".equals(gubun)) {
 			ansSq = SsgKakaoSender.KakaoAnswerSq.EXCHANGE_CANCEL_ADDR.value(); 		// 교환 철회 안내 - 주소불일치
 		}
 
@@ -1858,7 +1858,7 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 	/**
 	 * 기본 LMS 발송
 	 *
@@ -1894,5 +1894,5 @@ public class TscKakaotalkService {
 			// Do nothing
 		}
 	}
-	
+
 }

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

@@ -711,6 +711,12 @@ public class TscOrderChangeService {
 
 		// 8. PG 취소 처리
 		for (Payment pg : pgList) {
+			
+			// 2021.09.02 (PAY_STAT = 'G016_30' AND PG_TID IS NULL AND PG_GB <> 'ISTYLE') 체크 후 없으면 제휴몰로 판단 로직
+			if (orderDao.getExtmallOrderChk(pg) > 0) {
+				payMeans = TscConstants.PayMeans.EXTMALL.value();
+			}
+			
 			// 네이버페이주문형, 외부몰주문, PG점프, 100%상품권 결제는 PG점프 처리
 			if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb) || TscConstants.PayMeans.EXTMALL.value().equals(payMeans) || "Y".equals(pgStat) || pg.getPartCancelAmt() == 0) {
 				pg.setPayAmt(-pg.getPartCancelAmt());
@@ -2249,7 +2255,12 @@ public class TscOrderChangeService {
 		} else {
 			pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
 		}
-
+		
+		// 2021.09.02 (PAY_STAT = 'G016_30' AND PG_TID IS NULL AND PG_GB <> 'ISTYLE') 체크 후 없으면 제휴몰로 판단 로직
+		if (orderDao.getExtmallOrderChk(pg) > 0) {
+			payMeans = TscConstants.PayMeans.EXTMALL.value();
+		}
+		
 		// PG처리
 		if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb) || TscConstants.PayMeans.EXTMALL.value().equals(payMeans) || "Y".equals(pgStat) || refundAmt == 0) {
 			// 상품권 100%, 제휴몰, PG점프처리, 네이버페이주문은 PG점프 처리
@@ -3060,6 +3071,12 @@ public class TscOrderChangeService {
 
 		// 5. PG 취소 처리
 		for (Payment pg : pgList) {
+			
+			// 2021.09.02 (PAY_STAT = 'G016_30' AND PG_TID IS NULL AND PG_GB <> 'ISTYLE') 체크 후 없으면 제휴몰로 판단 로직
+			if (orderDao.getExtmallOrderChk(pg) > 0) {
+				payMeans = TscConstants.PayMeans.EXTMALL.value();
+			}
+						
 			// 상품권 100%, 제휴몰, PG점프처리, 네이버페이주문은 PG점프 처리
 			if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb) || TscConstants.PayMeans.EXTMALL.value().equals(payMeans) || "Y".equals(pgStat) || refundAmt == 0) {
 				pg.setPayAmt(pg.getPayAmt() * -1);
@@ -3865,7 +3882,7 @@ public class TscOrderChangeService {
 		orderChangeDao.createOrderDetailItemHstForAllCancel(orderDetail);
 		
 		// 15. 배송비 환불
-		Order refundOrder = orderChangeDao.getRefundInfoForAllCancel(vo);
+		// Order refundOrder = orderChangeDao.getRefundInfoForAllCancel(vo);
 		OrderChange chgRefund = new OrderChange();
 		chgRefund.setOrdNo(ordNo);
 		chgRefund.setOrdChgSq(ordChgSq);
@@ -3948,10 +3965,15 @@ public class TscOrderChangeService {
 		pg.setPayGb("O");
 		pg.setPgTid(payment.getPgTid());
 		pg.setPayAmt(refundAmt);
-		pg.setLeftAmt(refundAmt);
+		pg.setLeftAmt(payment.getPayAmt());
 		pg.setRegNo(regNo);
 		pg.setUpdNo(updNo);
 		pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
+		
+		// 2021.09.02 (PAY_STAT = 'G016_30' AND PG_TID IS NULL AND PG_GB <> 'ISTYLE') 체크 후 없으면 제휴몰로 판단 로직
+		if (orderDao.getExtmallOrderChk(pg) > 0) {
+			payMeans = TscConstants.PayMeans.EXTMALL.value();
+		}
 
 		// 상품권 100%, 제휴몰, PG점프처리, 네이버페이주문은 PG점프 처리
 		if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb) || TscConstants.PayMeans.EXTMALL.value().equals(payMeans) || "Y".equals(pgStat) || refundAmt == 0) {
@@ -3960,6 +3982,19 @@ public class TscOrderChangeService {
 		}
 		// KCP 및 PAYCO 결제 취소 처리
 		else if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
+			// 2021.09.02 card007 전체반품일때 결제금액과 환불금액이 다르면 부분취소 처리
+			if (refundAmt != payment.getPayAmt()) {
+				// 전체취소
+				if ("STSC".equals(modType)) {
+					modType = "STPC";
+					pg.setPartCancelAmt(refundAmt);
+				}
+				// 무통장입금 입금 후 전체 취소
+				else if ("STHD".equals(modType)) {
+					modType = "STPD";
+					pg.setPartCancelAmt(refundAmt);
+				}
+			}
 			pg.setModType(modType);
 			pg.setModDesc("가맹점 취소 - 전체 취소");
 			pg.setAccountNm(accountNm);
@@ -3983,9 +4018,11 @@ public class TscOrderChangeService {
 		}
 
 		// 20. 환불 정보 수정
-		refundOrder.setPaySq(pg.getPaySq());
-		refundOrder.setOrdChgSq(ordChgSq);
-		orderChangeDao.updateRefundInfo(refundOrder);
+		Order refundUpdate = new Order();
+		refundUpdate.setOrdNo(ordNo);
+		refundUpdate.setPaySq(pg.getPaySq());
+		refundUpdate.setOrdChgSq(ordChgSq);
+		orderChangeDao.updateRefundInfo(refundUpdate);
 
 		// 21. 상품권 현금영수증 취소 처리
 		GiftCard giftCardCashReceipts = orderDao.getGiftCardReceiptInfo(ordNo);
@@ -4251,6 +4288,11 @@ public class TscOrderChangeService {
 		pg.setRegNo(regNo);
 		pg.setUpdNo(updNo);
 		pg.setPayStat(TscConstants.PaymentStat.PAYMENT_CANCEL.value());
+		
+		// 2021.09.02 (PAY_STAT = 'G016_30' AND PG_TID IS NULL AND PG_GB <> 'ISTYLE') 체크 후 없으면 제휴몰로 판단 로직
+		if (orderDao.getExtmallOrderChk(pg) > 0) {
+			payMeans = TscConstants.PayMeans.EXTMALL.value();
+		}
 
 		// 상품권으로만 결제 시 PG점프
 		if (TscConstants.PgGb.NAVER_ORDER.value().equals(pgGb) || TscConstants.PayMeans.EXTMALL.value().equals(payMeans) || "Y".equals(pgStat) || refundAmt == 0) {
@@ -4780,7 +4822,7 @@ public class TscOrderChangeService {
 			sb.append("																									<img src=\"");
 			sb.append(imgUrl);
 			sb.append(orderChange.getSysImgNm());
-			sb.append("?RS=100\" alt=\"이미지\" style=\"width: 100px;height: 150px;margin:0;padding:0\">\n");
+			sb.append("?RS=100\" alt=\"이미지\" style=\"width: 100px;height: auto;margin:0;padding:0\">\n");
 			sb.append("																								</span>\n");
 			sb.append("																							</a>\n");
 			sb.append("																						</td>\n");

+ 4 - 1
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -327,7 +327,8 @@ public class TscOrderService {
 			, "할인금액"
 			, "실결제금액"
 			, "배송비"
-			, "송장"
+			, "배송업체코드"
+			, "송장번호"
 			, "배송메모"
 		};
 
@@ -359,6 +360,7 @@ public class TscOrderService {
 			, "totDcAmt"
 			, "realOrdAmt"
 			, "realDelvAmt"
+			, "shipCompCd"
 			, "invoiceNo"
 			, "delvMemo"
 		};
@@ -392,6 +394,7 @@ public class TscOrderService {
 			, GagaExcelConstants.CellType.CHAR_CENTER.name()
 			, GagaExcelConstants.CellType.CHAR_CENTER.name()
 			, GagaExcelConstants.CellType.CHAR_CENTER.name()
+			, GagaExcelConstants.CellType.CHAR_CENTER.name()
 		};
 
 		GagaExcelResultHandler<Order> handler = new GagaExcelResultHandler<>(excelFilenameWithPath, "출고배송목록(입점)", listTitles, cellNames, cellTypes);

+ 2 - 2
src/main/java/com/style24/core/support/config/TscRedisCacheConfig.java

@@ -53,11 +53,11 @@ public class TscRedisCacheConfig {
 	public RedisConnectionFactory redisConnectionFactory() {
 		String active = env.getProperty("spring.profiles.active");
 		// 레디스 클러스터 기능 추가
-		if ("run".equals(active) || "style".equals(active) || "brdg".equals(active)) {
+		if ("run".equals(active) || "style".equals(active) || "brdg".equals(active) || "stage".equals(active)) {
 			String clusterNodes = env.getProperty("spring.redis.cluster.nodes");
 			RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
 			List<String> clusterList = Arrays.asList(clusterNodes.split(" "));
-			for (String cluster: clusterList) {
+			for (String cluster : clusterList) {
 				String[] clusterUrl = cluster.split(":");
 				String clusterHost = clusterUrl[0];
 				int clusterPort = Integer.parseInt(clusterUrl[1]);

+ 6 - 6
src/main/java/com/style24/persistence/mybatis/shop/SsgDirectMessage.xml

@@ -27,7 +27,7 @@
 		<choose>
 			<when test='bizTime != null and bizTime == "Y"'>
 		       CASE WHEN DATE_FORMAT(NOW(), '%H') <![CDATA[<=]]> 8 THEN STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
-		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 20 THEN NOW()
+		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 19 THEN NOW()
 		            ELSE STR_TO_DATE(CONCAT(DATE_FORMAT(ADDDATE(NOW(), INTERVAL 1 DAY), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
 		        END
 			</when>
@@ -67,7 +67,7 @@
 		<choose>
 			<when test='bizTime != null and bizTime == "Y"'>
 		       CASE WHEN DATE_FORMAT(NOW(), '%H') <![CDATA[<=]]> 8 THEN STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
-		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 20 THEN NOW()
+		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 19 THEN NOW()
 		            ELSE STR_TO_DATE(CONCAT(DATE_FORMAT(ADDDATE(NOW(), INTERVAL 1 DAY), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
 		        END
 			</when>
@@ -115,7 +115,7 @@
 		<choose>
 			<when test='bizTime != null and bizTime == "Y"'>
 		       CASE WHEN DATE_FORMAT(NOW(), '%H') <![CDATA[<=]]> 8 THEN STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
-		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 20 THEN NOW()
+		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 19 THEN NOW()
 		            ELSE STR_TO_DATE(CONCAT(DATE_FORMAT(ADDDATE(NOW(), INTERVAL 1 DAY), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
 		        END
 			</when>
@@ -155,7 +155,7 @@
 		<choose>
 			<when test='bizTime != null and bizTime == "Y"'>
 		       CASE WHEN DATE_FORMAT(NOW(), '%H') <![CDATA[<=]]> 8 THEN STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
-		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 20 THEN NOW()
+		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 19 THEN NOW()
 		            ELSE STR_TO_DATE(CONCAT(DATE_FORMAT(ADDDATE(NOW(), INTERVAL 1 DAY), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
 		        END
 			</when>
@@ -195,7 +195,7 @@
 		<choose>
 			<when test='bizTime != null and bizTime == "Y"'>
 		       CASE WHEN DATE_FORMAT(NOW(), '%H') <![CDATA[<=]]> 8 THEN STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
-		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 20 THEN NOW()
+		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 19 THEN NOW()
 		            ELSE STR_TO_DATE(CONCAT(DATE_FORMAT(ADDDATE(NOW(), INTERVAL 1 DAY), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
 		        END
 			</when>
@@ -243,7 +243,7 @@
 		<choose>
 			<when test='bizTime != null and bizTime == "Y"'>
 		       CASE WHEN DATE_FORMAT(NOW(), '%H') <![CDATA[<=]]> 8 THEN STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
-		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 20 THEN NOW()
+		            WHEN DATE_FORMAT(NOW(), '%H') BETWEEN 9 AND 19 THEN NOW()
 		            ELSE STR_TO_DATE(CONCAT(DATE_FORMAT(ADDDATE(NOW(), INTERVAL 1 DAY), '%Y-%M-%D'), ' 9'), '%Y-%M-%D %H')
 		        END
 			</when>

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

@@ -5395,6 +5395,19 @@
 		  AND ORD_NO = #{ordNo}
 		  AND ORD_DTL_NO = #{ordDtlNo}
 	</update>
+	
+	<!-- 2021.09.02 외부몰 결제 여부 정보 체크 -->
+	<select id="getExtmallOrderChk" parameterType="Payment" resultType="int">
+		/* order.getExtmallOrderChk */
+		SELECT COUNT(1)
+		FROM   TB_PAYMENT P
+		WHERE  1=1
+		AND    P.PAY_STAT = 'G016_30'
+		AND    P.PG_TID IS NULL
+		AND    P.PG_GB <![CDATA[<>]]> 'ISTYLE'
+		AND    P.PAY_GB = 'O'
+		AND    P.ORD_NO #{ordNo}
+	</select>
 </mapper>
 
 

+ 26 - 12
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -4745,23 +4745,37 @@
 	<!-- 환불컨펌시 배송중상태 조회 -->
 	<select id="getOrderDetailItem20Cnt" parameterType="Order" resultType="int">
 		/* TscOrderChange.getOrderDetailItem20Cnt : 환불컨펌시 배송중상태 조회 */
-		SELECT COUNT(1) AS CNT
-		FROM   TB_ORDER_DETAIL_ITEM_HST
-		WHERE  1=1
-		AND    ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
-		AND    ORD_DTL_STAT = 'G720_20'
+		SELECT SUM(CNT) AS CNT
+		FROM (
+			SELECT CASE WHEN ODIH.ORD_DTL_STAT IS NULL AND ODI.REG_DT > '2021-09-01'
+			            THEN 0
+			            ELSE 1
+			            END  CNT
+			FROM   TB_ORDER_DETAIL_ITEM ODI
+			LEFT   JOIN TB_ORDER_DETAIL_ITEM_HST ODIH
+			ON     ODIH.ORD_DTL_ITEM_SQ = ODI.ORD_DTL_ITEM_SQ
+			AND    ODIH.ORD_DTL_STAT = 'G720_20'
+			WHERE  1=1
+			AND    ODI.ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
+		) A
 	</select>
 	
 		<!-- 환불컨펌시 배송중상태 조회 전체취소 -->
 	<select id="getOrderDetailItem20CntAll" parameterType="OrderChange" resultType="int">
 		/* TscOrderChange.getOrderDetailItem20CntAll : 환불컨펌시 배송중상태 조회 전체취소 */
-		SELECT COUNT(1) AS CNT
-		FROM   TB_ORDER_DETAIL_ITEM_HST ODIH
-		INNER  JOIN TB_ORDER O
-		ON     ODIH.ORD_NO = O.ORD_NO
-		WHERE  1=1
-		AND    O.ORD_NO = #{ordNo}
-		AND    ODIH.ORD_DTL_STAT = 'G720_20'
+		SELECT SUM(CNT) AS CNT
+		FROM (
+			SELECT CASE WHEN ODIH.ORD_DTL_STAT IS NULL AND O.REG_DT > '2021-09-01'
+			            THEN 0
+			            ELSE 1
+			            END  CNT
+			FROM   TB_ORDER O
+			LEFT   JOIN TB_ORDER_DETAIL_ITEM_HST ODIH
+			ON     ODIH.ORD_NO = O.ORD_NO
+			AND    ODIH.ORD_DTL_STAT = 'G720_20'
+			WHERE  1=1
+			AND    O.ORD_NO = #{ordNo}
+		) A
 	</select>
 
 	<!-- 주문상세단품 정보 조회 -->

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

@@ -299,13 +299,13 @@
 		     , ODI.OPT_CD1
 		     , ODI.OPT_CD2
 		     , CONCAT(ODI.OPT_CD1, ',', ODI.OPT_CD2) AS OPT
-		     , DF.REAL_DELV_AMT
 		     , OD.ORD_QTY
 		     , OD.CNCL_RTN_QTY
 		     , OD.ORD_AMT
 		     , OD.CNCL_RTN_AMT
 		     , OD.CPN1_DC_AMT + OD.TMTB1_DC_AMT + OD.TMTB2_DC_AMT +  OD.GOODS_CPN_DC_AMT + OD.CART_CPN_DC_AMT + OD.PNT_DC_AMT + OD.PRE_PNT_DC_AMT AS TOT_DC_AMT
 		     , OD.REAL_ORD_AMT
+		     , OD.SHIP_COMP_CD
 		     , OD.INVOICE_NO
 		     , DA.DELV_MEMO
 		FROM   TB_ORDER O

+ 2 - 1
src/main/java/com/style24/persistence/mybatis/shop/TscShoplinker.xml

@@ -523,9 +523,10 @@
 	 	and B.AGENT_ORDER_ID IS NOT NULL
 	 	and B.ORD_DTL_STAT = 'G013_50' -- 배송중
 		and B.DELV_STDT IS NOT NULL
+		and b.EXTMALL_ID != 'TIMON' /* 티몬제외 */
 		AND NOT EXISTS(SELECT 1 FROM SHOPLINKER_SYNC_HST S
 			WHERE S.API_TYPE = 'INVOICE' AND S.ORD_DTL_NO = B.ORD_DTL_NO
-			AND API_RESULT = 'true'
+			AND API_RESULT != 'error'
 			)
 		ORDER BY ORD_NO, ORD_DTL_NO
 	</select>