Quellcode durchsuchen

[ST24PRJ-557] [MD개선] 제휴몰 기술서 생성시 html or 보스 미리보기화면

jmh vor 4 Jahren
Ursprung
Commit
bcb89209ce

+ 10 - 0
src/main/java/com/style24/admin/biz/dao/TsaShoplinkerDao.java

@@ -119,6 +119,16 @@ public interface TsaShoplinkerDao {
 	 */
 	Collection<GagaMap> getGoodsSendExcelPlanning(ShoplinkerSearch shoplinkerSearch);
 
+	/**
+	 * 상품등록-미리보기
+	 *
+	 * @param shoplinkerGoods
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 20
+	 */
+	ShoplinkerGoods getGoodsSendPreviewInfo(ShoplinkerGoods shoplinkerGoods);
+	
 	/**
 	 * 재고-단품 등록
 	 *

+ 13 - 2
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -347,7 +347,7 @@ public class TsaShoplinkerService {
 			}
 
 			// 제대로된 정보 없을 경우, 기존 상세내용으로 보냄
-			if( "".equals(dImgFront)) {
+			if( "".equals(dImgFront) && dImgModelList.size() < 1 && dImgDetailList.size() < 1) {
 				htmlDesc = descStr;
 
 			}else {
@@ -971,7 +971,18 @@ public class TsaShoplinkerService {
 			throw new IllegalStateException(e);
 		}
 	}
-
+	
+	/**
+	 * 상품등록-미리보기
+	 *
+	 * @param shoplinkerGoods
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 20
+	 */
+	public ShoplinkerGoods getGoodsSendPreviewInfo(ShoplinkerGoods shoplinkerGoods) {
+		return admShoplinkerDao.getGoodsSendPreviewInfo(shoplinkerGoods);
+	}
 
 	/**
 	 * 재고전송-목록 건수

+ 33 - 0
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -315,7 +315,40 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 
 		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
 	}
+	
+	/**
+	 * 샵링커상품등록 - 상세화면보기
+	 * @param logSq - 로그일련번호
+	 * @return
+	 * @author jmh
+	 * @since 2021. 12. 20
+	 */
+	@GetMapping("/goods/preview/form/{logSq}")
+	@ResponseBody
+	public ModelAndView shoplinkerGoodsSendPreviewForm(@PathVariable long logSq) {
+		ModelAndView mav = new ModelAndView("shoplinker/ShoplinkerGoodsSendPreviewForm");
+		ShoplinkerGoods map = new ShoplinkerGoods();
+		map.setLogSq(logSq);
+		
+		ShoplinkerGoods result = admShoplinkerService.getGoodsSendPreviewInfo(map);
+		String detail = result.getXmlTxt();
+		int startIdx = detail.indexOf("<detail_desc>");
+		int endIdx = detail.indexOf("</detail_desc>");
+		
+		String html = "";
+		if( "Y".equals(result.getTobeFormYn())) {
+			html = detail.substring(startIdx+13, endIdx);
+		}else {
+			html = "<div style=\"max-width:1200px; margin:auto;\">" + detail.substring(startIdx+13, endIdx) + "</div>";
+		}
+		
+		result.setXmlTxt(html);
+		
+		// 미리보기 정보
+		mav.addObject("goodsInfo", result);
 
+		return mav;
+	}
 
 	/**
 	 * 재고이력-화면

+ 11 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml

@@ -289,6 +289,17 @@
 		ORDER BY A.API_PRODUCT_ID, OP.DISP_ORD, OP.OPT_CD1, OP.OPT_CD2
 	</select>
 	
+	<!-- 상품등록-미리보기 -->
+	<select id="getGoodsSendPreviewInfo" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
+		/* TsaShoplinker.getGoodsSendPreviewInfo */
+		SELECT
+			SH.*
+			, G.TOBE_FORM_YN
+		FROM SHOPLINKER_SYNC_HST SH
+		INNER JOIN TB_GOODS G ON SH.GOODS_CD = G.GOODS_CD 
+		WHERE SH.LOG_SQ = #{logSq}
+	</select>
+	
 	<!-- 재고-단품 등록 -->
 	<insert id="insertStockOption" parameterType="ShoplinkerGoods">
 		/* TsaShoplinker.insertStockOption */

+ 21 - 37
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html

@@ -170,37 +170,14 @@
 				return '<a href="javascript:void(0);">' + params.value + '</a>';
 			}
 		},
-		{headerName: "xml", field: "xmlTxt", width: 100, cellClass: 'text-center', editable: true,
-			cellEditor: 'agLargeTextCellEditor',
-			cellRenderer: function(params) {
-				params.value = '<button type="button"class="btn btn-success">보기</button>';
-				return params.value;
-			}
-		},
-		{headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
 		{
-			headerName: "전송일자", field: "regDt", width: 150, cellClass: 'text-center',
-			cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }
-		}
-	];
-
-	let columnDefs2 = [
-		{headerName: "No", width: 60, cellClass: 'text-center',
-			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
-		},
-		{headerName: "샵링커 상품코드", field: "apiProductId", width: 130, cellClass: 'text-center'},
-		{
-			headerName: "API구분", field: "apiType", width: 100, cellClass: 'text-center',
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(apiTypeValue, params.value); }
-		},
-		{headerName: "IF결과", field: "apiResult", width: 100, cellClass: 'text-center',
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(procGbValue, params.value); }
-		},
-		{headerName: "IF결과메세지", field: "apiMessage", width: 300, cellClass: 'text-left'},
-		{headerName: "자사 상품코드", field: "goodsCd", width: 150, cellClass: 'text-center'},
-		{headerName: "상품명", field: "goodsNm", width: 300, cellClass: 'text-left'
-			,cellRenderer: function(params) {
-				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			headerName: "미리보기", field:"preview", width: 100, cellClass: 'text-center',
+			cellRenderer: function(params) { 
+				if("PRODUCT" == params.data.apiType){
+					return '<button="javascript:void(0);" class="btn btn-info btn-sm">미리보기</button>';
+				}else{
+					return "";
+				}
 			}
 		},
 		{headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
@@ -209,13 +186,8 @@
 			cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }
 		}
 	];
-
-	let gridOptions;
-	if (sessRoleCd == "G001_0000") { // SUPER관리자
-		gridOptions = gagaAgGrid.getGridOptions(columnDefs1);
-	} else {
-		gridOptions = gagaAgGrid.getGridOptions(columnDefs2);
-	}
+	
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs1);
 
 	// Row Click
 	gridOptions.onCellClicked = function(event) {
@@ -225,6 +197,11 @@
 		}else if (event.colDef.field == "goodsCd"){
 
 			//cfnOpenFrontGoodsPopup(goodsCd, event.data.siteCd);
+		}else if (event.colDef.field == 'preview') {
+			// 미리보기 팝업
+			if( "PRODUCT" ==  event.data.apiType){
+				fnOpenPreviewPopup(event.data.logSq);
+			}
 		}
 	}
 
@@ -429,6 +406,13 @@
 	});
 	/**************** 샵링커기획전생성엑셀 // *****************************************************/
 	
+	/**************** 미리보기 *****************************************************/
+	var fnOpenPreviewPopup = function(logSq) {
+		var actionUrl = '/shoplinker/goods/preview/form/' + logSq;
+		cfOpenWindowPopup(actionUrl, 'popupShoplinkerTemplatePreview', 1200, 700);
+	}
+	/**************** 미리보기 // *****************************************************/
+	
 	/**************** 테스트용  *******************************************************/
     // 테스트- 실제 샵링커 호출
 	var fnTest = function(){

+ 59 - 0
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendPreviewForm.html

@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="ko"
+	xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : ShoplinkerGoodsSendPreviewForm.html
+ * @desc    : 샵링커 상품전송관리 미리보기 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021. 12. 20   jmh     최초 작성
+ *******************************************************************************
+ -->
+<head>
+	<title>::샵링커 상품상세 미리보기::</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+
+<body>
+
+	<!-- 엑셀다운버튼 -->
+	<div style="text-align: right; margin: 20px;">
+		<button type="button" class="" onclick="fnDownloadHtml();">html 파일다운</button>
+	</div>
+	
+	<!-- 컨텐츠 -->
+	<th:block th:utext="${goodsInfo.xmlTxt}"></th:block>
+	
+
+	<!-- html 파일생성 -->
+	<script th:inline="javascript">
+	/*<![CDATA[*/
+		function fnDownloadHtml() {
+			var filename = [[${goodsInfo.goodsCd}]]+".html";
+			var text = "<!DOCTYPE html><html><body>"+ [[${goodsInfo.xmlTxt}]] + "</body></html>";
+			
+		    var pom = document.createElement('a');
+		    pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
+		    pom.setAttribute('download', filename);
+		 
+		    if (document.createEvent) {
+		        var event = document.createEvent('MouseEvents');
+		        event.initEvent('click', true, true);
+		        pom.dispatchEvent(event);
+		    }
+		    else {
+		        pom.click();
+		    }
+		}
+	/*]]>*/
+	</script>
+</body>
+</html>
+