Bladeren bron

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.core into develop

LMC 4 jaren geleden
bovenliggende
commit
8c9d32c361

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

@@ -340,5 +340,15 @@ public interface TscOrderOcmDao {
 	 * @since 2021. 06. 17
 	 */
 	ExtmallOrder getExtmallOrderUploadResultInfo(ExtmallOrder extmallOrder);
+	
+	/**
+	 * 제휴몰 주문 등록 실패 내용-관리자메모 등록
+	 *
+	 * @param extmallOrder - 외부몰주문업로드 정보
+	 * @return Collection<ExtmallOrder>
+	 * @author jmh
+	 * @since 2021. 09. 09
+	 */
+	void createOrderMemo(ExtmallOrder extmallOrder);
 
 }

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

@@ -1911,9 +1911,13 @@ public class TscKakaotalkService {
 		GagaMap replaceInfo = new GagaMap();
 		replaceInfo.setString("siteNm", siteNm);
 		replaceInfo.setString("content", customer.getContent());
-		replaceInfo.setString("callcenterTelNo", TscConstants.CALLCENTER_TEL_NO);
-		
-		kakaoSender.sendLms(SsgKakaoSender.KakaoAnswerSq.BASIC_INFO_LMS.value(), dm, replaceInfo);
-
+		replaceInfo.setString("callcenterTelNo", customer.getCallcenterTelNo());
+		Integer kakaoSq = SsgKakaoSender.KakaoAnswerSq.BASIC_INFO_LMS.value();
+		if("Y".equals(customer.getSelfYn())){
+			kakaoSq = SsgKakaoSender.KakaoAnswerSq.BASIC_INFO_LMS.value();
+		} else {
+			kakaoSq = SsgKakaoSender.KakaoAnswerSq.BASIC_INFO_EXT_LMS.value();
+		}
+		kakaoSender.sendLms3(kakaoSq, dm, replaceInfo);
 	}	
 }

+ 8 - 3
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -184,7 +184,8 @@ public class TscOrderChangeService {
 		int updNo				= userNo;														// 수정자번호
 
 		// 2. 무통장입금 결제 주문 전체취소 상태값 처리
-		if (TscConstants.PgGb.KCP.value().equals(pgGb)) {
+		// 2021.09.09 페이코 조건 누락 추가
+		if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
 			if (TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payMeans)) {
 				modType = "STPD";																			// KCP 무통장입금 부분취소
 			} else {
@@ -722,6 +723,8 @@ public class TscOrderChangeService {
 				pg.setPayAmt(-pg.getPartCancelAmt());
 				orderDao.insertPaymentCancel(pg);
 			} else if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
+				log.info("modType ::: {}", modType);
+				
 				pg.setModType(modType);
 				pg.setModDesc("가맹점 취소 - 부분 취소");
 				pg.setIpAddress(ipAddress);
@@ -2662,7 +2665,8 @@ public class TscOrderChangeService {
 		
 		// 2. 무통장입금 결제 주문 전체취소 상태값 처리
 		String modType			= "";
-		if (TscConstants.PgGb.KCP.value().equals(pgGb)) {
+		// 2021.09.09 페이코 조건 누락 추가
+		if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
 			if (TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payMeans)) {
 				modType = "STPD";																// KCP 무통장입금 부분취소
 			} else {
@@ -3257,7 +3261,8 @@ public class TscOrderChangeService {
 		int addPayCost			= map.getInt("addPayCost");										// 추갸배송비
 
 		// 무통장입금 결제 주문 전체취소 상태값 처리
-		if (TscConstants.PgGb.KCP.value().equals(pgGb)) {
+		// 2021.09.09 페이코 조건 누락 추가
+		if (TscConstants.PgGb.KCP.value().equals(pgGb) || TscConstants.PgGb.PAYCO.value().equals(pgGb)) {
 			if (TscConstants.PayMeans.BANK_DEPOSIT.value().equals(payMeans)) {
 				modType = "STPD";																				// KCP 무통장입금 부분취소
 			} else {

+ 28 - 3
src/main/java/com/style24/core/biz/service/TscOrderOcmService.java

@@ -300,7 +300,22 @@ public class TscOrderOcmService {
 			}
 		}
 
-		// 8. 알림톡발송
+		// 8. 부분품절상품 - 관리자메모 등록
+		if ("SUCCESS".equals(result.get("message").toString())) {
+			if( "PART_SUCCESS".equals(result.getString("sendNotiType"))) {
+				if( !"".equals(result.getString("failGoods"))) {
+					// 부분성공 (실패내용 관리자메모)
+					ExtmallOrder adminMemo = new ExtmallOrder();
+					adminMemo.setOrdNo(order.getOrdNo());
+					adminMemo.setMemo("[품절/재고관련 주문 미등록건] :"+result.getString("failGoodsAdmMsg"));
+					adminMemo.setRegNo(0);
+					
+					orderOcmDao.createOrderMemo(adminMemo);
+				}
+			}
+		}
+		
+		// 9. 알림톡발송
 		try {
 			if( "N".equals(order.getCnclsmsSendYn())) {		// Y:제휴몰에서발송, N:자사몰에서발송
 
@@ -430,7 +445,8 @@ public class TscOrderOcmService {
 	 */
 	public GagaMap orderValidationCheck(ExtmallOrder order) {
 		GagaMap result = new GagaMap();
-		String failGoods = "";
+		String failGoods = "";			// 고객발송 상품내용
+		String failGoodsAdmMsg = "";	// 주문관리자 메모
 
 		// 1. 주문상세체크
 		Collection<ExtmallOrder> orderDetailList = order.getOrderDetailList();
@@ -451,6 +467,7 @@ public class TscOrderOcmService {
 				// 알림톡 발송 할 목록
 				if("Y".equals(resultMap.get("sendNotiYn"))){
 					failGoods += resultMap.get("goodsNm") + ",";
+					failGoodsAdmMsg += "\n"+resultMap.get("goodsNm")+"("+resultMap.get("optCd")+ "),";
 					stockFailCnt ++;
 				}
 			}
@@ -488,10 +505,13 @@ public class TscOrderOcmService {
 
 		// 실패상품목록
 		if( 0 < failGoods.length()) failGoods = failGoods.substring(0, failGoods.length()-1);
+		if( 0 < failGoodsAdmMsg.length()) failGoodsAdmMsg = failGoodsAdmMsg.substring(0, failGoodsAdmMsg.length()-1);
+		
 		result.put("failGoods", failGoods);			// 실패상품목록
 		result.put("failCnt", dtlCnt - succCnt );	// 총 실패건수
 		result.put("stockFailCnt", stockFailCnt );	// 재고로인한 실패건수
-
+		result.put("failGoodsAdmMsg", failGoodsAdmMsg);			// 관리자메모 내용
+		
 		return result;
 	}
 
@@ -550,6 +570,7 @@ public class TscOrderOcmService {
 
 		} else if (TscConstants.GoodsStat.SOLDOUT.value().equals(dtlOrd.getGoodsStat())) {
 			result.put("goodsNm", dtlOrd.getGoodsNm());
+			result.put("optCd", dtlOrd.getOptCd());
 			result.put("sendNotiYn", "Y");	// 알림톡발송 o
 			result.put("uploadFailCd", TscConstants.ExtmallUploadFailStat.STOCK.value());
 			result.put("message", "품절입니다.");
@@ -557,6 +578,7 @@ public class TscOrderOcmService {
 
 		} else if (!TscConstants.GoodsStat.SOLDOUT.value().equals(dtlOrd.getGoodsStat()) && !TscConstants.GoodsStat.APPR.value().equals(dtlOrd.getGoodsStat())) {
 			result.put("goodsNm", dtlOrd.getGoodsNm());
+			result.put("optCd", dtlOrd.getOptCd());
 			result.put("sendNotiYn", "Y");	// 알림톡발송 o
 			result.put("uploadFailCd", TscConstants.ExtmallUploadFailStat.STOCK.value());
 			result.put("message", "판매중인 상품이 아닙니다.");
@@ -566,6 +588,7 @@ public class TscOrderOcmService {
 		//상품 재고 확인
 		if (null == dtlOrd.getSoldoutYn()) {
 			result.put("goodsNm", dtlOrd.getGoodsNm());
+			result.put("optCd", dtlOrd.getOptCd());
 			result.put("sendNotiYn", "Y");	// 알림톡발송 o
 			result.put("uploadFailCd", TscConstants.ExtmallUploadFailStat.STOCK.value());
 			result.put("message", "재고체크 실패했습니다. 새로고침 후 다시 시도해주세요.");
@@ -574,6 +597,7 @@ public class TscOrderOcmService {
 
 		if ("Y".equals(dtlOrd.getSoldoutYn())) {
 			result.put("goodsNm", dtlOrd.getGoodsNm());
+			result.put("optCd", dtlOrd.getOptCd());
 			result.put("sendNotiYn", "Y");	// 알림톡발송 o
 			result.put("uploadFailCd", TscConstants.ExtmallUploadFailStat.STOCK.value());
 			result.put("message", dtlOrd.getOptCd2() + " 옵션은 품절입니다.");
@@ -582,6 +606,7 @@ public class TscOrderOcmService {
 
 		if (param.getOrdQty() > dtlOrd.getCurrStockQty()) {
 			result.put("goodsNm", dtlOrd.getGoodsNm());
+			result.put("optCd", dtlOrd.getOptCd());
 			result.put("sendNotiYn", "Y");	// 알림톡발송 o
 			result.put("uploadFailCd", TscConstants.ExtmallUploadFailStat.STOCK.value());
 			result.put("message", "옵션의 재고가 충분하지 않습니다.");

+ 0 - 17
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -1465,23 +1465,6 @@ public class TscOrderService {
 			throw new IllegalStateException(message.getMessage("FAIL_1003"));
 		}
 		
-		// 2021.09.08 구매확정시 상품평쓰기 알림톡 전송
-		try {
-			GagaMap replaceInfo = new GagaMap();
-			replaceInfo.setString("siteNm", siteNm);
-			replaceInfo.setString("custNm", order.getOrdNm());
-			replaceInfo.setString("ordNo", String.valueOf(order.getOrdNo()));
-			
-			SsgDirectMessage dm = new SsgDirectMessage();
-			dm.setFuserid(String.valueOf(order.getOrdPhnno())); // 발송자NO
-			dm.setFdestine(order.getOrdPhnno());
-			dm.setFkkoresendtype("LMS");
-			
-			kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.REVIEW_WRITE.value(), dm, replaceInfo);
-		} catch (Exception e) {
-			
-		}
-
 		return result;
 	}
 

+ 24 - 1
src/main/java/com/style24/core/biz/thirdparty/SsgKakaoSender.java

@@ -129,7 +129,8 @@ public class SsgKakaoSender {
 		GOODS_RESTOCK(1054),						// 재입고 안내
 		APP_DOWNLOAD(1055),							// APP 다운
 		BASIC_LMS(1056),
-		BASIC_INFO_LMS(1080);						// [스타일24] 안내
+		BASIC_INFO_LMS(1080),						// [스타일24] 안내
+		BASIC_INFO_EXT_LMS(1081);					// 제휴몰 - 대외용
 		
 		private Integer value;
 
@@ -268,6 +269,28 @@ public class SsgKakaoSender {
 		}
 	}
 
+	/**
+	 * LMS 발송
+	 * @param ansSq - 답변일련번호
+	 * @param dm - 메시지 정보
+	 * @param replaceInfo - 메시지내용 중 대체할 정보
+	 * @author gagamel
+	 * @since 2020. 11. 9
+	 */
+	@Transactional("shopTxnManager")
+	public void sendLms3(Integer ansSq, SsgDirectMessage dm, GagaMap replaceInfo) {
+		// 답변문구 조회
+		AnswerPhase ansPhase = this.getAnswerPhase(ansSq, replaceInfo);
+		dm.setFsubject(ansPhase.getAnsTitle());
+		dm.setFmessage(ansPhase.getAnsContent());
+		dm.setFcallback(replaceInfo.getString("callcenterTelNo"));
+		if ("run".equals(active) || "style".equals(active)) {
+			dmDao.createLms(dm);
+		} else {
+			dmDao.createLmsDev(dm);
+		}
+	}
+	
 	/**
 	 * 답변문구 조회
 	 * 		어드민의 "운영관리 > 사이트설정 > 답변문구관리" 화면에서 등록/수정 시 answerPhase 캐시를 삭제

+ 57 - 49
src/main/java/com/style24/core/support/controller/TscBaseController.java

@@ -1,5 +1,8 @@
 package com.style24.core.support.controller;
 
+import java.lang.reflect.UndeclaredThrowableException;
+import java.sql.SQLException;
+import java.sql.SQLRecoverableException;
 import java.util.Set;
 
 import javax.validation.ConstraintViolation;
@@ -7,15 +10,20 @@ import javax.validation.Validation;
 import javax.validation.Validator;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.ibatis.binding.BindingException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.propertyeditors.StringTrimmerEditor;
 import org.springframework.core.env.Environment;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
 import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.InitBinder;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import com.fasterxml.jackson.databind.JsonMappingException;
 import com.style24.core.biz.thirdparty.KollusApi;
 import com.style24.core.support.message.TscMessageByLocale;
 
@@ -98,55 +106,55 @@ public class TscBaseController {
 //		errorLogging(ex);
 //		return GagaResponse.error(GagaResponseStatus.BAD_REQUEST.getCode(), ex.getMessage());
 //	}
-//
-//	/**
-//	 * HttpRequestMethodNotSupportedException Handler
-//	 * 
-//	 * @param e - HttpRequestMethodNotSupportedException, SQLRecoverableException
-//	 * @return forwarding URI
-//	 */
-//	@ExceptionHandler({HttpRequestMethodNotSupportedException.class, SQLRecoverableException.class})
-//	public String handleException(HttpRequestMethodNotSupportedException ex) {
-//		return "forward:/error/500";
-//	}
-//
-//	@ExceptionHandler(Throwable.class)
-//	@ResponseBody
-//	public GagaResponse handleException(Throwable throwable) {
-//		errorLogging(throwable);
-//
-//		Throwable rootCause = ExceptionUtils.getRootCause(throwable);
-//
-//		if (rootCause != null) {
-//			throwable = rootCause;
-//		}
-//
-//		if (throwable instanceof SQLException || throwable instanceof BindingException
-//			|| throwable instanceof JsonMappingException
-//			|| throwable instanceof UndeclaredThrowableException) {
-//			String message = String.format("데이터 처리중 에러가 발생하였습니다. 시스템 관리자에게 문의하세요.");
-//			return GagaResponse.error(GagaResponseStatus.INTERNAL_SERVER_ERROR.getCode(), message);
-//		}
-//
-//		return GagaResponse.error(GagaResponseStatus.INTERNAL_SERVER_ERROR.getCode(), throwable.getMessage());
-//	}
-//
-//	private void errorLogging(Throwable throwable) {
-//		if (log.isErrorEnabled()) {
-//			Throwable rootCause = ExceptionUtils.getRootCause(throwable);
-//
-//			if (rootCause != null) {
-//				throwable = rootCause;
-//			}
-//
-//			if (throwable.getMessage() != null) {
-//				log.error(throwable.getMessage(), throwable);
-//			} else {
-//				log.error("ERROR", throwable);
-//			}
-//		}
-//	}
-//
+
+	/**
+	 * HttpRequestMethodNotSupportedException Handler
+	 * 
+	 * @param e - HttpRequestMethodNotSupportedException, SQLRecoverableException
+	 * @return forwarding URI
+	 */
+	@ExceptionHandler({HttpRequestMethodNotSupportedException.class, SQLRecoverableException.class})
+	public String handleException(HttpRequestMethodNotSupportedException ex) {
+		return "forward:/error";
+	}
+
+	@ExceptionHandler(Throwable.class)
+	@ResponseBody
+	public GagaResponse handleException(Throwable throwable) {
+		errorLogging(throwable);
+
+		Throwable rootCause = ExceptionUtils.getRootCause(throwable);
+
+		if (rootCause != null) {
+			throwable = rootCause;
+		}
+
+		if (throwable instanceof SQLException || throwable instanceof BindingException
+			|| throwable instanceof JsonMappingException
+			|| throwable instanceof UndeclaredThrowableException) {
+			String message = String.format("데이터 처리중 에러가 발생하였습니다. 시스템 관리자에게 문의하세요.");
+			return GagaResponse.error(GagaResponseStatus.INTERNAL_SERVER_ERROR.getCode(), message);
+		}
+
+		return GagaResponse.error(GagaResponseStatus.INTERNAL_SERVER_ERROR.getCode(), throwable.getMessage());
+	}
+
+	private void errorLogging(Throwable throwable) {
+		if (log.isErrorEnabled()) {
+			Throwable rootCause = ExceptionUtils.getRootCause(throwable);
+
+			if (rootCause != null) {
+				throwable = rootCause;
+			}
+
+			if (throwable.getMessage() != null) {
+				log.error(throwable.getMessage(), throwable);
+			} else {
+				log.error("ERROR", throwable);
+			}
+		}
+	}
+
 //	@ExceptionHandler(MethodArgumentNotValidException.class)
 //	@ResponseBody
 //	public Object processValidationError(MethodArgumentNotValidException ex) {

+ 3 - 1
src/main/java/com/style24/persistence/domain/Customer.java

@@ -83,7 +83,9 @@ public class Customer extends TscBaseDomain {
 	private String snsType;				// SNS 타입(NV:네이버, KK:카카오, YS:YES24)
 	private String snsId;				// SNS 아이디
 	private String memNo;				// YES24 가입시 사용
-
+	private String callcenterTelNo;
+	private String selfYn;
+	
 	// LMS
 	private String content;			// 내용
 	private String certNo;			// 인증번호

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

@@ -104,8 +104,11 @@ public class ShoplinkerOrder extends TscBaseDomain {
 	private String uploadFailReason;			// 외부몰 주문등록 업로드 실패사유 msg
 	private Integer ordNo;						// 주문번호(주문)
 	private Integer delvAddrSq;					// 배송지일련번호(배송지)
-	private String goodsCd;
-	private String optCd;
+	private String goodsCd;						// 상품코드
+	private String optCd;						// 옵션코드
+	private String optCd1;						// 옵션1
+	private String optCd2;						// 옵션2
+	private String regNm;						// 등록자
 
 	// 검색
 	private int startRow;

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

@@ -438,6 +438,7 @@
 		               , A.SYS_IMG_NM
 		               , A.BRAND_CD
 		               , A.BRAND_ENM
+		               , A.SKU_MODEL_NO
 		               , GROUP_CONCAT(A.ITEM_NM ORDER BY A.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		               , GROUP_CONCAT(A.ITEM_CD ORDER BY A.ORD_DTL_ITEM_SQ) AS ITEM_CD
 		               , GROUP_CONCAT(A.OPT_CD ORDER BY A.ORD_DTL_ITEM_SQ) AS OPT_CD
@@ -499,6 +500,7 @@
 		                  , (SELECT Z.BRAND_ENM
 		                     FROM   TB_BRAND Z
 		                     WHERE  Z.BRAND_CD = G1.BRAND_CD) AS BRAND_ENM
+		                  , ODI.SKU_MODEL_NO
 		                  , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = ODI.ITEM_CD) AS ITEM_NM
 		                  , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
 		                  , ODI.ITEM_CD
@@ -584,6 +586,7 @@
 		               , A.SYS_IMG_NM
 		               , A.BRAND_CD
 		               , A.BRAND_ENM
+		               , A.SKU_MODEL_NO
 		               , A.EXTMALL_ORDER_ID
 		               , A.AGENT_ORDER_ID
 		               , A.ORD_QTY
@@ -1234,6 +1237,7 @@
 		     , A.GOODS_TYPE_NM
 		     , A.SYS_IMG_NM
 		     , A.BRAND_ENM
+		     , A.SKU_MODEL_NO
 		     , GROUP_CONCAT(A.ITEM_NM ORDER BY A.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		     , GROUP_CONCAT(A.ITEM_CD ORDER BY A.ORD_DTL_ITEM_SQ) AS ITEM_CD
 		     , GROUP_CONCAT(A.OPT_CD ORDER BY A.ORD_DTL_ITEM_SQ) AS OPT_CD
@@ -1299,6 +1303,7 @@
 		         , (SELECT Z.BRAND_ENM
 		            FROM   TB_BRAND Z
 		            WHERE  Z.BRAND_CD = G1.BRAND_CD) AS BRAND_ENM
+		         , ODI.SKU_MODEL_NO
 		         , G2.GOODS_CD                             AS ITEM_CD
 		         , G2.GOODS_NM                             AS ITEM_NM
 		         , IFNULL((SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
@@ -1442,6 +1447,7 @@
 		     , A.GOODS_TYPE_NM
 		     , A.SYS_IMG_NM
 		     , A.BRAND_ENM
+		     , A.SKU_MODEL_NO
 		     , A.LIST_PRICE
 		     , A.CURR_PRICE
 		     , A.ORD_QTY
@@ -1585,6 +1591,7 @@
 		            ELSE P.CARD_NM
 		        END		                    CARD_NM
 		     , P.PG_TRADE_NO
+		     , P.PG_TID
 		     , P.VA_NO
 		     , DATE_FORMAT(P.PAY_DT, '%Y%m%d%H%i%S')      AS PAY_DT
 		     , P.PAY_STAT

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

@@ -4661,7 +4661,14 @@
 		    ON     DDF.ORD_CHG_SQ = ODIH.ORD_CHG_SQ
 		    WHERE  1=1
 		    AND    ODIH.ORD_CHG_SQ = #{ordChgSq}
+		<choose>
+			<when test="chgStat == 'G720_30'">
+		    AND    ODIH.ORD_DTL_STAT IN ('G720_30', 'G720_40')
+			</when>
+			<otherwise>
 		    AND    ODIH.ORD_DTL_STAT = #{chgStat}
+			</otherwise>
+		</choose>
 		) A
 		WHERE  1=1
 		GROUP  BY A.ORD_NO
@@ -5188,6 +5195,7 @@
 		  ON O.ORD_NO = DF.ORD_NO
 		  INNER JOIN TB_DELV_FEE_POLICY DFP
 		  ON OD.DELV_FEE_CD = DFP.DELV_FEE_CD
+		 AND OD.SUPPLY_COMP_CD = DFP.SUPPLY_COMP_CD
 		 WHERE O.ORD_NO = #{ordNo}
 		   AND OD.DELV_FEE_CD = #{delvFeeCd}
 	</select>

+ 60 - 37
src/main/java/com/style24/persistence/mybatis/shop/TscOrderOcm.xml

@@ -1494,46 +1494,47 @@
 				, REG_DT
 		)
 		SELECT
-			   VENDOR_ID
-				, EXTMALL_ID
-				, EXTMALL_NM
-				, AGENT_ORDER_ID
-				, EXTMALL_ORDER_ID
-				, EXTMALL_PROD_ID
-				, EXTMALL_PROD_NM
-				, GOODS_CD
-				, SKU
-				, CURR_PRICE
-				, ORD_QTY
-				, ORD_AMT
-				, CPN_DC_AMT
-				, PNT_DC_AMT
-				, DELV_FEE
-				, ORD_RECV_DT
-				, ORD_DT
-				, ORD_NM
-				, ORD_PHNNO
-				, ORD_TELNO
-				, ORD_EMAIL
-				, RECIP_NM
-				, RECIP_PHNNO
-				, RECIP_TELNO
-				, RECIP_ZIPCODE
-				, RECIP_BASE_ADDR
-				, RECIP_DTL_ADDR
-				, DELV_MEMO
-				, UPLOAD_STAT
-				, UPLOAD_FAIL_CD
-				, UPLOAD_FAIL_REASON
-				, ORD_NO
-				, DELV_ADDR_SQ
-				, OPT_CD
-				, UPLOAD_GB
-				, REG_NO
+			   A.VENDOR_ID
+				, A.EXTMALL_ID
+				, A.EXTMALL_NM
+				, A.AGENT_ORDER_ID
+				, A.EXTMALL_ORDER_ID
+				, A.EXTMALL_PROD_ID
+				, B.GOODS_NM AS EXTMALL_PROD_NM
+				, A.GOODS_CD
+				, A.SKU
+				, A.CURR_PRICE
+				, A.ORD_QTY
+				, A.ORD_AMT
+				, A.CPN_DC_AMT
+				, A.PNT_DC_AMT
+				, A.DELV_FEE
+				, A.ORD_RECV_DT
+				, A.ORD_DT
+				, A.ORD_NM
+				, A.ORD_PHNNO
+				, A.ORD_TELNO
+				, A.ORD_EMAIL
+				, A.RECIP_NM
+				, A.RECIP_PHNNO
+				, A.RECIP_TELNO
+				, A.RECIP_ZIPCODE
+				, A.RECIP_BASE_ADDR
+				, A.RECIP_DTL_ADDR
+				, A.DELV_MEMO
+				, A.UPLOAD_STAT
+				, A.UPLOAD_FAIL_CD
+				, A.UPLOAD_FAIL_REASON
+				, A.ORD_NO
+				, A.DELV_ADDR_SQ
+				, A.OPT_CD
+				, A.UPLOAD_GB
+				, A.REG_NO
 				, NOW()
 		 FROM   TB_EXTMALL_ORDER_UPLOAD_TMP A
+		 		INNER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
 		 WHERE 	A.REG_NO = #{regNo}
-		 AND 	DATE(REG_DT) = DATE(NOW())
+		 AND 	DATE(A.REG_DT) = DATE(NOW())
 
 	</insert>
 
@@ -1624,5 +1625,27 @@
 			AND    B.REG_NO = #{regNo}
 		) A  WHERE A.RANKING = 1
 	</select>
+	
+	<!-- 주문상세 > 주문요청 관리자 메모 > 메모등록 -->
+	<insert id="createOrderMemo" parameterType="ExtmallOrder">
+		/* TscOrderOcm.createOrderMemo */
+		INSERT INTO TB_ORDER_MEMO (
+		    ORD_NO
+		  , MEMO
+		  , DEL_YN
+		  , REG_NO
+		  , REG_DT
+		  , UPD_NO
+		  , UPD_DT
+		) VALUES (
+		    #{ordNo}
+		  , #{memo}
+		  , 'N'
+		  , #{regNo}
+		  , NOW()
+		  , #{regNo}
+		  , NOW()
+		)
+	</insert>
 
 </mapper>

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

@@ -490,6 +490,7 @@
 		WHERE A.EXTMALL_REG_YN = 'N'
 		AND A.SKU_MATCH_CODE IS NOT NULL
 		AND A.SKU_MATCH_CODE != ''
+		AND A.EXCHANGE_ORDER_YN != 'Y'
 		ORDER BY A.MALL_ID, A.MALL_ORDER_ID, A.SHOPLINKER_ORDER_ID
 	</select>