Преглед изворни кода

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

card007 пре 5 година
родитељ
комит
00b62efe1d

+ 9 - 0
src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java

@@ -346,4 +346,13 @@ public interface TsaDisplayDao {
 	 */
 	void deleteContentsGoodsTemp(Contents contents);
 	void saveContentsGoodsTemp(Contents contents);
+
+	/**
+	 * 메인전시 컨텐츠 임시 상품 -> 카테고리상품 저장
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 3. 2
+	 */
+	void deleteContentsGoods(Contents contents);
+	void saveContentsGoods(Contents contents);
 }

+ 83 - 0
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Repository;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.Plan;
 
 /**
@@ -343,5 +344,87 @@ public interface TsaPlanDao {
 	 * @since 2021. 2. 25
 	 */
 	void createPlanContentsItem(Plan param);
+	
+	/**
+	 * 기획전 템플릿 조회
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	Collection<Plan> getPlanContentList(Plan param);
+	
+	/**
+	 * 기획전 템플릿 상세조회 - 리뷰
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	Collection<Plan> getPlanContentReviewList(Plan param);
+	
+	/**
+	 * 기획전 템플릿 상세조회 - 쿠폰
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	Collection<Plan> getPlanContentCouponList(Plan param);
+	
+	/**
+	 * 기획전 템플릿 상세조회 - 파일
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	Collection<Plan> getPlanContentFileList(Plan param);
+	
+	/**
+	 * 기획전 템플릿 상세조회 - html
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	Collection<Plan> getPlanContentFsrcList(Plan param);
+	
+	/**
+	 * 기획전 템플릿 상세조회 - 상품
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	Collection<Plan> getPlanContentGoodsList(Plan param);
+	
+	/**
+	 * 기획전 템플릿 상세조회 - 상품 목록조회
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	Collection<Plan> getPlanContentGoodsDetailList(Plan param);
+	
+	
+	/**
+	 * 기획전템플릿 아이템 삭제
+	 * @param 
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	void deletePlanContentItem(Integer planContSq);
+	
+	/**
+	 * 기획전템플릿 이미지파일 삭제
+	 * @param 
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	void deletePlanTemplateFile(Plan plan);
+	
+
 
 }

+ 21 - 13
src/main/java/com/style24/admin/biz/service/TsaDisplayService.java

@@ -508,7 +508,7 @@ public class TsaDisplayService {
 	 */
 	@Transactional("shopTxnManager")
 	public void saveContentsPreview(Collection<Contents> contentsList) {
-		/*for (Contents contents : contentsList) {
+		for (Contents contents : contentsList) {
 			if (contents != null && contents.getContentsLoc() != null) {
 				displayDao.deleteContentsPreview(contents);
 				break;
@@ -526,24 +526,28 @@ public class TsaDisplayService {
 				displayDao.saveContentsTitle(contentsTmp);
 				break;
 			}
-		}*/
+		}
 
 		for (Contents contents : contentsList){
 			log.info("getGoodsCdArr contents:::::{}",contents);
-			log.info("getGoodsCdArr length:::::{}",contents.getGoodsCdArr().length);
-			contents.setPreContentsSq(contents.getDispOrd());
-			contents.setRegNo(TsaSession.getInfo().getUserNo());
-			displayDao.deleteContentsGoodsTemp(contents);
-
-			if(contents.getGoodsCdArr().length>0){
-				for(int i=0; i<contents.getGoodsCdArr().length; i++){
-					contents.setGoodsCd(contents.getGoodsCdArr()[i]);
-					displayDao.saveContentsGoodsTemp(contents);
+			//log.info("getGoodsCdArr length:::::{}",contents.getGoodsCdArr().length);
+			if(contents != null && contents.getGoodsCdArr() != null){
+				contents.setPreContentsSq(contents.getDispOrd());
+				contents.setRegNo(TsaSession.getInfo().getUserNo());
+				displayDao.deleteContentsGoodsTemp(contents);
+
+				if(contents.getGoodsCdArr().length>0){
+					for(int i=0; i<contents.getGoodsCdArr().length; i++){
+						contents.setGoodsCd(contents.getGoodsCdArr()[i]);
+						contents.setGoodsNm(contents.getGoodsNmArr()[i]);
+						contents.setImgPath1(contents.getGoodsImgArr()[i]);
+						displayDao.saveContentsGoodsTemp(contents);
+					}
 				}
 			}
 		}
 
-		/*int ind = 1;
+		int ind = 1;
 		for (Contents contents : contentsList) {
 			if (contents != null && contents.getDispStdt() != null && !contents.getDispStdt().equals("")) {
 				// 브랜드 이미지 변경이 일어났을 경우
@@ -631,7 +635,7 @@ public class TsaDisplayService {
 				contents.setUpdNo(TsaSession.getInfo().getUserNo());
 				displayDao.saveContentsPreview(contents);
 			}
-		}*/
+		}
 	}
 
 	/**
@@ -649,6 +653,10 @@ public class TsaDisplayService {
 			displayDao.deleteContents(contents);
 			displayDao.saveContents(contents);
 			displayDao.updateContentsTitle(contents);
+			if("SMM007".equals(contentsLoc) || "SMM009".equals(contentsLoc)){
+				displayDao.deleteContentsGoods(contents);
+				displayDao.saveContentsGoods(contents);
+			}
 		}
 	}
 

+ 513 - 103
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -3,6 +3,7 @@ package com.style24.admin.biz.service;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Iterator;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,10 +17,7 @@ import com.gagaframework.web.util.GagaFileUtil;
 import com.gagaframework.web.util.GagaStringUtil;
 import com.style24.admin.biz.dao.TsaPlanDao;
 import com.style24.admin.support.security.session.TsaSession;
-import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.MktmailManagement;
-import com.style24.persistence.domain.MktmailManagementGoods;
-import com.style24.persistence.domain.MktmailManagementTc;
+import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.Plan;
 
 import lombok.extern.slf4j.Slf4j;
@@ -706,136 +704,548 @@ public class TsaPlanService {
 		
 		param.setRegNo(regNo);
 		
-		if (param.getMode().equals("C")) {
-			// 리뷰 등록
-			Plan rePlan = new Plan();
-			//리뷰 등록 - tb_plan_contents
-			if(param.getReTitle() != "" || param.getMultiPlanReview().length>0) {
-				rePlan.setRegNo(regNo);
-				rePlan.setUpdNo(regNo);
-				rePlan.setTmplType("G082_10");
-				rePlan.setPlanSq(param.getPlanSq());
-				rePlan.setTitle(param.getReTitle());
-				rePlan.setDispYn(param.getReDispYn());
-				rePlan.setDispOrd(param.getReDispOrd());
-				planDao.createPlanContents(rePlan);
-
-				//리뷰 아이템 등록
-				if(param.getMultiPlanReview().length>0) {
-					String[] reItemVal = param.getMultiPlanReview();
-					String[] startDate = param.getMultiPlanReviewStartD();
-					String[] startTime = param.getMultiPlanReviewStartT();
-					String[] endDate = param.getMultiPlanReviewEndD();
-					String[] endTime = param.getMultiPlanReviewEndT();
-					// 기획전 브랜드 insert
-					for (int j = 0; j < reItemVal.length; j++) {
-						rePlan.setItemVal(reItemVal[j]);
-						rePlan.setReviewDispStdt(startDate[j] + ' ' +startTime[j]);
-						rePlan.setReviewDispEddt(endDate[j] + ' ' +endTime[j]);
-						planDao.createPlanContentsItem(rePlan);
-					}
+		// 리뷰 등록
+		Plan rePlan = new Plan();
+		//리뷰 등록 - tb_plan_contents
+		if(param.getReTitle() != "" || param.getMultiPlanReview().length>0) {
+			rePlan.setRegNo(regNo);
+			rePlan.setUpdNo(regNo);
+			rePlan.setTmplType("G082_10");
+			rePlan.setPlanSq(param.getPlanSq());
+			rePlan.setTitle(param.getReTitle());
+			rePlan.setDispYn(param.getReDispYn());
+			rePlan.setDispOrd(param.getReDispOrd());
+			rePlan.setPlanContSq(param.getRePlanContSq());
+			planDao.createPlanContents(rePlan);
+
+			// 기존 리뷰아이템 삭제
+			planDao.deletePlanContentItem(param.getRePlanContSq());
+			//리뷰 아이템 등록
+			if(param.getMultiPlanReview().length>0) {
+				String[] reItemVal = param.getMultiPlanReview();
+				String[] startDate = param.getMultiPlanReviewStartD();
+				String[] startTime = param.getMultiPlanReviewStartT();
+				String[] endDate = param.getMultiPlanReviewEndD();
+				String[] endTime = param.getMultiPlanReviewEndT();
+				// 기획전 브랜드 insert
+				for (int j = 0; j < reItemVal.length; j++) {
+					rePlan.setItemVal(reItemVal[j]);
+					rePlan.setReviewDispStdt(startDate[j] + ' ' +startTime[j]);
+					rePlan.setReviewDispEddt(endDate[j] + ' ' +endTime[j]);
+					planDao.createPlanContentsItem(rePlan);
 				}
 			}
+		}
+		
+		// 쿠폰등록
+		Plan cuPlan = new Plan();
+		//쿠폰 등록 - tb_plan_contents
+		if(param.getCuTitle() != "" || param.getMultiPlanCoupon().length>0) {
+			cuPlan.setRegNo(regNo);
+			cuPlan.setUpdNo(regNo);
+			cuPlan.setTmplType("G082_20");
+			cuPlan.setPlanSq(param.getPlanSq());
+			cuPlan.setTitle(param.getCuTitle());
+			cuPlan.setDispYn(param.getCuDispYn());
+			cuPlan.setDispOrd(param.getCuDispOrd());
+			cuPlan.setPlanContSq(param.getCuPlanContSq());
+			planDao.createPlanContents(cuPlan);
 			
-			// 쿠폰등록
-			Plan cuPlan = new Plan();
-			//쿠폰 등록 - tb_plan_contents
-			if(param.getCuTitle() != "" || param.getMultiPlanCoupon().length>0) {
-				cuPlan.setRegNo(regNo);
-				cuPlan.setUpdNo(regNo);
-				cuPlan.setTmplType("G082_20");
-				cuPlan.setPlanSq(param.getPlanSq());
-				cuPlan.setTitle(param.getCuTitle());
-				cuPlan.setDispYn(param.getCuDispYn());
-				cuPlan.setDispOrd(param.getCuDispOrd());
-				planDao.createPlanContents(cuPlan);
+			// 기존 쿠폰아이템 삭제
+			planDao.deletePlanContentItem(param.getCuPlanContSq());
+						
+			//쿠폰아이템 등록
+			if(param.getMultiPlanCoupon().length>0) {
+				String[] cuItemVal = param.getMultiPlanCoupon();
 				
-				//쿠폰아이템 등록
-				if(param.getMultiPlanCoupon().length>0) {
-					String[] cuItemVal = param.getMultiPlanCoupon();
+				// 기획전 브랜드 insert
+				for (int j = 0; j < cuItemVal.length; j++) {
+					cuPlan.setItemVal(cuItemVal[j]);
+					planDao.createPlanContentsItem(cuPlan);
+				}
+			}
+		}
+		
+		//이미지등록
+		Plan filePlan = new Plan();
+		if(param.getMultiPlanFile().length>=0) {
+			filePlan.setRegNo(regNo);
+			filePlan.setUpdNo(regNo);
+			filePlan.setTmplType("G082_30");
+			filePlan.setPlanSq(param.getPlanSq());
+			filePlan.setDispYn(param.getFileDispYn());
+			filePlan.setDispOrd(param.getFileDispOrd());
+			filePlan.setPlanContSq(param.getFilePlanContSq());
+			
+			planDao.createPlanContents(filePlan);
+			
+			// 기존  파일 삭제
+			/* planDao.deletePlanContentItem(param.getFilePlanContSq()); */
+			
+			//파일아이템 등록
+			if(param.getMultiPlanFile().length>0) {
+				String[] fileItemVal = param.getMultiPlanFile();
+				
+				// 기획전 브랜드 insert
+				for (int j = 0; j < fileItemVal.length; j++) {
+					filePlan.setItemVal(fileItemVal[j]);
+					planDao.createPlanContentsItem(filePlan);
+				}
+			}
+		}
+		
+		//HTML[상단] 등록
+		Plan fsrcTop = new Plan();
+		if(param.getFsrcMobileTop() != "" || param.getFsrcPcTop() != "") {
+			//tb_plan_contents 등록
+			fsrcTop.setRegNo(regNo);
+			fsrcTop.setUpdNo(regNo);
+			fsrcTop.setTmplType("G082_40");
+			fsrcTop.setPlanSq(param.getPlanSq());
+			fsrcTop.setDispYn(param.getTopFsrcDispYn());
+			fsrcTop.setDispOrd(param.getTopFsrcDispOrd());
+			
+			planDao.createPlanContents(fsrcTop);
+			
+			// 웹용 상단PC 등록
+			if (StringUtils.isNotBlank(param.getFsrcPcTop())) {
+				createPlanFsrcPcTop(param);
+			}
+			// 웹용 상단MOBILE 등록
+			if (StringUtils.isNotBlank(param.getFsrcMobileTop())) {
+				createPlanFsrcMobileTop(param);
+			}
+		}
+		
+		//HTML[하단] 등록
+		Plan fsrcBtm = new Plan();
+		if(param.getFsrcMobileBtm() != "" || param.getFsrcPcBtm() != "") {
+			//tb_plan_contents 등록
+			fsrcBtm.setRegNo(regNo);
+			fsrcBtm.setUpdNo(regNo);
+			fsrcBtm.setTmplType("G082_41");
+			fsrcBtm.setPlanSq(param.getPlanSq());
+			fsrcBtm.setDispYn(param.getBtmFsrcDispYn());
+			fsrcBtm.setDispOrd(param.getBtmFsrcDispOrd());
+			
+			planDao.createPlanContents(fsrcBtm);
+			
+			// 웹용 상단PC 등록
+			if (StringUtils.isNotBlank(param.getFsrcPcBtm())) {
+				createPlanFsrcPcBtm(param);
+			}
+			// 웹용 상단MOBILE 등록
+			if (StringUtils.isNotBlank(param.getFsrcMobileBtm())) {
+				createPlanFsrcMobileBtm(param);
+			}
+		}
+		
+		//상품 등록 -- 1
+		for (Plan multiPlanGoodsContent1 : param.getMultiPlanGoodsContent1()) {
+			
+			if (!StringUtils.isEmpty(multiPlanGoodsContent1.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent1.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent1.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent1.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent1.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent1.getGoodsDispYn();
+				
+				Plan goods1 = new Plan();
+				goods1.setRegNo(regNo);
+				goods1.setUpdNo(regNo);
+				goods1.setTitle(goodsTitle);
+				goods1.setDispOrd(goodsDispOrd);
+				goods1.setPlanSq(param.getPlanSq());
+				goods1.setDispYn(goodsDispYn);
+				goods1.setTmplType(goodsType);
+				goods1.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods1);
+				
+				for (Plan multiPlanGoodsContentVal1 : param.getMultiPlanGoodsContentVal1()) {
+					if(param.getMultiPlanGoodsContentVal1().size()>0) {
+						goods1.setItemVal(multiPlanGoodsContentVal1.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods1);
+					}
 					
-					// 기획전 브랜드 insert
-					for (int j = 0; j < cuItemVal.length; j++) {
-						cuPlan.setItemVal(cuItemVal[j]);
-						planDao.createPlanContentsItem(cuPlan);
+				}
+			}
+		}
+		
+		//상품 등록 -- 2
+		for (Plan multiPlanGoodsContent2 : param.getMultiPlanGoodsContent2()) {
+			
+			if (!StringUtils.isEmpty(multiPlanGoodsContent2.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent2.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent2.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent2.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent2.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent2.getGoodsDispYn();
+				
+				Plan goods2 = new Plan();
+				goods2.setRegNo(regNo);
+				goods2.setUpdNo(regNo);
+				goods2.setTitle(goodsTitle);
+				goods2.setDispOrd(goodsDispOrd);
+				goods2.setPlanSq(param.getPlanSq());
+				goods2.setDispYn(goodsDispYn);
+				goods2.setTmplType(goodsType);
+				goods2.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods2);
+				
+				for (Plan multiPlanGoodsContentVal2 : param.getMultiPlanGoodsContentVal2()) {
+					if(param.getMultiPlanGoodsContentVal2().size()>0) {
+						goods2.setItemVal(multiPlanGoodsContentVal2.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods2);
 					}
+					
 				}
 			}
+		}
+		
+		//상품 등록 -- 3
+		for (Plan multiPlanGoodsContent3 : param.getMultiPlanGoodsContent3()) {
 			
-			//이미지등록
-			Plan filePlan = new Plan();
-			if(param.getMultiPlanFile().length>0) {
-				filePlan.setRegNo(regNo);
-				filePlan.setUpdNo(regNo);
-				filePlan.setTmplType("G082_30");
-				filePlan.setPlanSq(param.getPlanSq());
-				filePlan.setDispYn(param.getFileDispYn());
-				filePlan.setDispOrd(param.getFileDispOrd());
-				planDao.createPlanContents(filePlan);
+			if (!StringUtils.isEmpty(multiPlanGoodsContent3.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent3.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent3.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent3.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent3.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent3.getGoodsDispYn();
+				
+				Plan goods3 = new Plan();
+				goods3.setRegNo(regNo);
+				goods3.setUpdNo(regNo);
+				goods3.setTitle(goodsTitle);
+				goods3.setDispOrd(goodsDispOrd);
+				goods3.setPlanSq(param.getPlanSq());
+				goods3.setDispYn(goodsDispYn);
+				goods3.setTmplType(goodsType);
+				goods3.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods3);
 				
-				//파일아이템 등록
-				if(param.getMultiPlanFile().length>0) {
-					String[] fileItemVal = param.getMultiPlanFile();
+				for (Plan multiPlanGoodsContentVal3 : param.getMultiPlanGoodsContentVal3()) {
+					if(param.getMultiPlanGoodsContentVal3().size()>0) {
+						goods3.setItemVal(multiPlanGoodsContentVal3.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods3);
+					}
 					
-					// 기획전 브랜드 insert
-					for (int j = 0; j < fileItemVal.length; j++) {
-						filePlan.setItemVal(fileItemVal[j]);
-						planDao.createPlanContentsItem(filePlan);
+				}
+			}
+		}
+		
+		//상품 등록 -- 4
+		for (Plan multiPlanGoodsContent4 : param.getMultiPlanGoodsContent4()) {
+			
+			if (!StringUtils.isEmpty(multiPlanGoodsContent4.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent4.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent4.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent4.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent4.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent4.getGoodsDispYn();
+				
+				Plan goods4 = new Plan();
+				goods4.setRegNo(regNo);
+				goods4.setUpdNo(regNo);
+				goods4.setTitle(goodsTitle);
+				goods4.setDispOrd(goodsDispOrd);
+				goods4.setPlanSq(param.getPlanSq());
+				goods4.setDispYn(goodsDispYn);
+				goods4.setTmplType(goodsType);
+				goods4.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods4);
+				
+				for (Plan multiPlanGoodsContentVal4 : param.getMultiPlanGoodsContentVal4()) {
+					if(param.getMultiPlanGoodsContentVal4().size()>0) {
+						goods4.setItemVal(multiPlanGoodsContentVal4.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods4);
 					}
+					
 				}
 			}
+		}
+		
+		//상품 등록 -- 5
+		for (Plan multiPlanGoodsContent5 : param.getMultiPlanGoodsContent5()) {
 			
-			//HTML[상단] 등록
-			Plan fsrcTop = new Plan();
-			if(param.getFsrcMobileTop() != "" || param.getFsrcPcTop() != "") {
-				//tb_plan_contents 등록
-				fsrcTop.setRegNo(regNo);
-				fsrcTop.setUpdNo(regNo);
-				fsrcTop.setTmplType("G082_40");
-				fsrcTop.setPlanSq(param.getPlanSq());
-				fsrcTop.setDispYn(param.getTopFsrcDispYn());
-				fsrcTop.setDispOrd(param.getTopFsrcDispOrd());
+			if (!StringUtils.isEmpty(multiPlanGoodsContent5.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent5.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent5.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent5.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent5.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent5.getGoodsDispYn();
 				
-				planDao.createPlanContents(fsrcTop);
+				Plan goods5 = new Plan();
+				goods5.setRegNo(regNo);
+				goods5.setUpdNo(regNo);
+				goods5.setTitle(goodsTitle);
+				goods5.setDispOrd(goodsDispOrd);
+				goods5.setPlanSq(param.getPlanSq());
+				goods5.setDispYn(goodsDispYn);
+				goods5.setTmplType(goodsType);
+				goods5.setLinkUrl(goodsUrl);
 				
-				// 웹용 상단PC 등록
-				if (StringUtils.isNotBlank(param.getFsrcPcTop())) {
-					createPlanFsrcPcTop(param);
+				planDao.createPlanContents(goods5);
+				
+				for (Plan multiPlanGoodsContentVal5 : param.getMultiPlanGoodsContentVal5()) {
+					if(param.getMultiPlanGoodsContentVal5().size()>0) {
+						goods5.setItemVal(multiPlanGoodsContentVal5.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods5);
+					}
+					
 				}
-				// 웹용 상단MOBILE 등록
-				if (StringUtils.isNotBlank(param.getFsrcMobileTop())) {
-					createPlanFsrcMobileTop(param);
+			}
+		}
+		
+		//상품 등록 -- 6
+		for (Plan multiPlanGoodsContent6 : param.getMultiPlanGoodsContent6()) {
+			
+			if (!StringUtils.isEmpty(multiPlanGoodsContent6.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent6.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent6.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent6.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent6.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent6.getGoodsDispYn();
+				
+				Plan goods6 = new Plan();
+				goods6.setRegNo(regNo);
+				goods6.setUpdNo(regNo);
+				goods6.setTitle(goodsTitle);
+				goods6.setDispOrd(goodsDispOrd);
+				goods6.setPlanSq(param.getPlanSq());
+				goods6.setDispYn(goodsDispYn);
+				goods6.setTmplType(goodsType);
+				goods6.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods6);
+				
+				for (Plan multiPlanGoodsContentVal6 : param.getMultiPlanGoodsContentVal6()) {
+					if(param.getMultiPlanGoodsContentVal6().size()>0) {
+						goods6.setItemVal(multiPlanGoodsContentVal6.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods6);
+					}
+					
 				}
 			}
+		}
+		
+		//상품 등록 -- 7
+		for (Plan multiPlanGoodsContent7 : param.getMultiPlanGoodsContent7()) {
 			
-			//HTML[하단] 등록
-			Plan fsrcBtm = new Plan();
-			if(param.getFsrcMobileBtm() != "" || param.getFsrcPcBtm() != "") {
-				//tb_plan_contents 등록
-				fsrcBtm.setRegNo(regNo);
-				fsrcBtm.setUpdNo(regNo);
-				fsrcBtm.setTmplType("G082_41");
-				fsrcBtm.setPlanSq(param.getPlanSq());
-				fsrcBtm.setDispYn(param.getBtmFsrcDispYn());
-				fsrcBtm.setDispOrd(param.getBtmFsrcDispOrd());
+			if (!StringUtils.isEmpty(multiPlanGoodsContent7.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent7.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent7.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent7.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent7.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent7.getGoodsDispYn();
+				
+				Plan goods7 = new Plan();
+				goods7.setRegNo(regNo);
+				goods7.setUpdNo(regNo);
+				goods7.setTitle(goodsTitle);
+				goods7.setDispOrd(goodsDispOrd);
+				goods7.setPlanSq(param.getPlanSq());
+				goods7.setDispYn(goodsDispYn);
+				goods7.setTmplType(goodsType);
+				goods7.setLinkUrl(goodsUrl);
 				
-				planDao.createPlanContents(fsrcBtm);
+				planDao.createPlanContents(goods7);
 				
-				// 웹용 상단PC 등록
-				if (StringUtils.isNotBlank(param.getFsrcPcBtm())) {
-					createPlanFsrcPcBtm(param);
+				for (Plan multiPlanGoodsContentVal7 : param.getMultiPlanGoodsContentVal7()) {
+					if(param.getMultiPlanGoodsContentVal7().size()>0) {
+						goods7.setItemVal(multiPlanGoodsContentVal7.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods7);
+					}
+					
 				}
-				// 웹용 상단MOBILE 등록
-				if (StringUtils.isNotBlank(param.getFsrcMobileBtm())) {
-					createPlanFsrcMobileBtm(param);
+			}
+		}
+		
+		//상품 등록 -- 8
+		for (Plan multiPlanGoodsContent8 : param.getMultiPlanGoodsContent8()) {
+			
+			if (!StringUtils.isEmpty(multiPlanGoodsContent8.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent8.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent8.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent8.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent8.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent8.getGoodsDispYn();
+				
+				Plan goods8 = new Plan();
+				goods8.setRegNo(regNo);
+				goods8.setUpdNo(regNo);
+				goods8.setTitle(goodsTitle);
+				goods8.setDispOrd(goodsDispOrd);
+				goods8.setPlanSq(param.getPlanSq());
+				goods8.setDispYn(goodsDispYn);
+				goods8.setTmplType(goodsType);
+				goods8.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods8);
+				
+				for (Plan multiPlanGoodsContentVal8 : param.getMultiPlanGoodsContentVal8()) {
+					if(param.getMultiPlanGoodsContentVal8().size()>0) {
+						goods8.setItemVal(multiPlanGoodsContentVal8.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods8);
+					}
+					
 				}
 			}
+		}
+		
+		//상품 등록 -- 9
+		for (Plan multiPlanGoodsContent9 : param.getMultiPlanGoodsContent9()) {
 			
-			//상품 등록
+			if (!StringUtils.isEmpty(multiPlanGoodsContent9.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent9.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent9.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent9.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent9.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent9.getGoodsDispYn();
+				
+				Plan goods9 = new Plan();
+				goods9.setRegNo(regNo);
+				goods9.setUpdNo(regNo);
+				goods9.setTitle(goodsTitle);
+				goods9.setDispOrd(goodsDispOrd);
+				goods9.setPlanSq(param.getPlanSq());
+				goods9.setDispYn(goodsDispYn);
+				goods9.setTmplType(goodsType);
+				goods9.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods9);
+				
+				for (Plan multiPlanGoodsContentVal9 : param.getMultiPlanGoodsContentVal9()) {
+					if(param.getMultiPlanGoodsContentVal9().size()>0) {
+						goods9.setItemVal(multiPlanGoodsContentVal9.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods9);
+					}
+					
+				}
+			}
+		}
 		
+		//상품 등록 -- 10
+		for (Plan multiPlanGoodsContent10 : param.getMultiPlanGoodsContent10()) {
+			
+			if (!StringUtils.isEmpty(multiPlanGoodsContent10.getGoodsType())) {
+				String goodsTitle = multiPlanGoodsContent10.getGoodsTitle();
+				String goodsUrl = multiPlanGoodsContent10.getGoodsUrl();
+				String goodsType = multiPlanGoodsContent10.getGoodsType();
+				long goodsDispOrd = multiPlanGoodsContent10.getGoodsDispOrd();
+				String goodsDispYn = multiPlanGoodsContent10.getGoodsDispYn();
+				
+				Plan goods10 = new Plan();
+				goods10.setRegNo(regNo);
+				goods10.setUpdNo(regNo);
+				goods10.setTitle(goodsTitle);
+				goods10.setDispOrd(goodsDispOrd);
+				goods10.setPlanSq(param.getPlanSq());
+				goods10.setDispYn(goodsDispYn);
+				goods10.setTmplType(goodsType);
+				goods10.setLinkUrl(goodsUrl);
+				
+				planDao.createPlanContents(goods10);
+				
+				for (Plan multiPlanGoodsContentVal10 : param.getMultiPlanGoodsContentVal10()) {
+					if(param.getMultiPlanGoodsContentVal10().size()>0) {
+						goods10.setItemVal(multiPlanGoodsContentVal10.getGoodsItemVal());
+						planDao.createPlanContentsItem(goods10);
+					}
+					
+				}
+			}
 		}
 	}
 	
+	/**
+	 * 기획전 템플릿 상세조회 - 리뷰
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3 .2
+	 */
+	public Collection<Plan> getPlanContentReviewList(Plan param){
+		return planDao.getPlanContentReviewList(param);
+	}
+	
+	/**
+	 * 기획전 템플릿 상세조회 - 쿠폰
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3 .2
+	 */
+	public Collection<Plan> getPlanContentCouponList(Plan param){
+		return planDao.getPlanContentCouponList(param);
+	}
+	
+	
+	/**
+	 * 기획전 템플릿 상세조회 - 파일
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3 .2
+	 */
+	public Collection<Plan> getPlanContentFileList(Plan param){
+		return planDao.getPlanContentFileList(param);
+	}
+	
+	/**
+	 * 기획전 템플릿 상세조회 - html
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3 .2
+	 */
+	public Collection<Plan> getPlanContentFsrcList(Plan param){
+		return planDao.getPlanContentFsrcList(param);
+	}
+	
+	/**
+	 * 기획전 템플릿 상세조회 - goods
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3 .2
+	 */
+	public Collection<Plan> getPlanContentGoodsList(Plan param){
+		return planDao.getPlanContentGoodsList(param);
+	}
+	
+	/**
+	 * 기획전 템플릿 상세조회 - goods 목록조회
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3 .2
+	 */
+	public Collection<Plan> getPlanContentGoodsDetailList(Plan param){
+		return planDao.getPlanContentGoodsDetailList(param);
+	}
+	/**
+	 * 기획전 템플릿 이미지 첨부파일 삭제
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	@Transactional("shopTxnManager")
+	public void deletePlanTemplateFile(Plan plan) {
+		planDao.deletePlanTemplateFile(plan);
+	}
+	
+	
 	
 	/*
 	 * 기획전 템플릿 HTML[상단] PC 소스 등록

+ 1 - 1
src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -804,7 +804,7 @@ public class TsaGoodsController extends TsaBaseController {
 		int toYear = Integer.parseInt(GagaDateUtil.getToday("yyyy")) - 4;
 		mav.addObject("styleYearList", rendererService.getYearList(toYear, 0, 5));
 		// 회원등급
-		//mav.addObject("custGradeList", rendererService.getAvailCommonCodeList("G101"));
+		//mav.addObject("custGradeList", rendererService.getAvailCommonCodeList("G110"));
 
 		mav.addObject("params", goods);
 

+ 70 - 23
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -1,15 +1,18 @@
 package com.style24.admin.biz.web;
 
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
+import java.util.Iterator;
 
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.persistence.domain.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -36,30 +39,8 @@ import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.biz.service.TscPointService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.core.support.session.TscSession;
 import com.style24.persistence.TscPageRequest;
 
-import com.style24.persistence.domain.CardPromotion;
-import com.style24.persistence.domain.CardPromotionTarget;
-
-import com.style24.persistence.domain.CommonCode;
-import com.style24.persistence.domain.Coupon;
-import com.style24.persistence.domain.CouponRefval;
-import com.style24.persistence.domain.CustCoupon;
-import com.style24.persistence.domain.FreeGoodsPromotion;
-import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.MailTemplate;
-import com.style24.persistence.domain.MktmailManagement;
-import com.style24.persistence.domain.MktmailManagementGoods;
-import com.style24.persistence.domain.MktmailManagementTc;
-import com.style24.persistence.domain.MoreBetter;
-import com.style24.persistence.domain.MoreBetterBurden;
-import com.style24.persistence.domain.MoreBetterGoods;
-import com.style24.persistence.domain.MoreBetterSection;
-import com.style24.persistence.domain.Point;
-import com.style24.persistence.domain.Review;
-import com.style24.persistence.domain.User;
-
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.excel.GagaExcelUtil;
@@ -120,6 +101,9 @@ public class TsaMarketingController extends TsaBaseController {
 
 	@Autowired
 	private TscCouponService coreCouponService;
+	
+	@Value("${upload.default.target.path}")
+	private String uploadTargetPath;
 
 
 	/**
@@ -2061,14 +2045,55 @@ public class TsaMarketingController extends TsaBaseController {
 	 * @since 2021. 2. 18
 	 */
 	@GetMapping("/planning/detail/template/form")
-	public ModelAndView planTemplateForm(Plan param,@RequestParam(value = "planSq") String planSq)  {
+	public ModelAndView planTemplateForm(Plan param,@RequestParam(value = "planSq") Integer planSq)  {
 		ModelAndView mav = new ModelAndView();
 		
 		// 템플릿 등록이 최조인지 확인
 		if(planService.getPlanContentsCount(param) > 0) {
 			mav.addObject("mode","U");
+			
+			//리뷰리스트
+			param.setPlanSq(planSq);
+			param.setTmplType("G082_10");
+			mav.addObject("reviewList", planService.getPlanContentReviewList(param));
+			
+			//쿠폰리스트
+			param.setTmplType("G082_20");
+			mav.addObject("couponList", planService.getPlanContentCouponList(param));
+			
+			//파일리스트
+			param.setTmplType("G082_30");
+			mav.addObject("fileList", planService.getPlanContentFileList(param));
+			
+			//html 리스트 - 상단
+			param.setTmplType("G082_40");
+			mav.addObject("fsrcListTop", planService.getPlanContentFsrcList(param));
+			
+			//html 리스트 - 하단
+			param.setTmplType("G082_41");
+			mav.addObject("fsrcListBtm", planService.getPlanContentFsrcList(param));
+			
+			//상품 리스트
+			mav.addObject("goodsList", planService.getPlanContentGoodsList(param));
+			
+			Collection<Plan> goodsList =  planService.getPlanContentGoodsList(param);
+			Iterator<Plan> iter = goodsList.iterator();
+			int i = 1;
+			while (iter.hasNext()) {
+				
+				Integer planContSq = iter.next().getPlanContSq();
+				System.out.println("planContSq:"+planContSq);
+				param.setPlanContSq(planContSq);
+				mav.addObject("goodsDetailList" + i, planService.getPlanContentGoodsDetailList(param));
+				i++;
+			}
+			
+			
 		}else {
 			mav.addObject("mode","C");
+
+			
+			
 		}
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
@@ -2079,6 +2104,28 @@ public class TsaMarketingController extends TsaBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 첨부파일 삭제
+	 * @param plan_content - 기획전템플릿 첨부파일
+	 * @return
+	 * @throws IOException
+	 * @author sowon
+	 * @since 2021. 3. 2
+	 */
+	@PostMapping("/planning/detail/template/file/delete")
+	@ResponseBody
+	public GagaResponse deletePlanTemplateFile(@RequestBody Plan plan) throws IOException {
+		// 파일 삭제
+		String fileName = GagaFileUtil.getConcatenationPath(uploadTargetPath, "planning", plan.getFileItemVal());
+
+		GagaFileUtil.deleteFile(fileName);
+
+		// 삭제된 파일 DB 처리
+		planService.deletePlanTemplateFile(plan);
+
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
+	
 	/**
 	 * 기획전 템플릿 저장
 	 *

+ 9 - 1
src/main/java/com/style24/persistence/domain/Contents.java

@@ -51,7 +51,11 @@ public class Contents extends TscBaseDomain {
     private String multiContentsYn;
 
     private String goodsCd;
-    private String goodsArr;
+    private String goodsNm;
+    private String goodsImg;
+    private String goodsCdList;
+    private String goodsNmList;
+    private String goodsImgList;
 
     List<Contents> dataList;
 
@@ -61,4 +65,8 @@ public class Contents extends TscBaseDomain {
     private String[] newImgFileArr;
     @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
     private String[] goodsCdArr;
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] goodsNmArr;
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] goodsImgArr;
 }

+ 49 - 20
src/main/java/com/style24/persistence/domain/Plan.java

@@ -192,15 +192,20 @@ public class Plan extends TscBaseDomain{
 		private long reDispOrd;				//리뷰전시순서
 		private String reItemVal;			//리뷰아이템
 		private String reDispYn;			//리뷰전시여부
+		private String reItemNm;			//리뷰상품이름
+		private Integer rePlanContSq;		//리뷰 컨텐츠일련번호
 		
 		private String cuTitle;				//쿠폰타이틀
 		private long cuDispOrd;				//쿠폰전시순서
 		private String cuDispYn;			//쿠폰전시여부
 		private String cuItemVal;			//쿠폰 아이템
+		private String cuItemNm;			//쿠폰 아이템 이름
+		private Integer cuPlanContSq;		//쿠폰 컨텐츠일련번호
 		
 		private String fileItemVal;			//파일아이템
 		private String fileDispYn;			//파일전시여부
 		private long fileDispOrd;			//파일전시순서
+		private Integer filePlanContSq;		//파일 컨텐츠일련번호
 		
 		private String topFsrcDispYn;		//html상단 전시여부
 		private String BtmFsrcDispYn;		//html하단 전시여부
@@ -215,6 +220,9 @@ public class Plan extends TscBaseDomain{
 		private String goodsUrl;			//상품 url
 		private String goodsDispYn;			//상품전시여부
 		private long goodsDispOrd;			//상품 전시순서
+		private String goodsType;			//상품노출순서
+		private String goodsItemVal;		//상품아이템
+		private String brandEnm;			//브랜드명
 		
 		// Pagination
 		private TscPageRequest pageable;
@@ -236,24 +244,45 @@ public class Plan extends TscBaseDomain{
 	    private String[] usableCustGbArr;
 	    
 	    
-		private String[] multiPlanGoodsContent1; 
-		private String[] multiPlanGoodsContent2; 
-		private String[] multiPlanGoodsContent3; 
-		private String[] multiPlanGoodsContent4; 
-		private String[] multiPlanGoodsContent5; 
-		private String[] multiPlanGoodsContent6; 
-		private String[] multiPlanGoodsContent7; 
-		private String[] multiPlanGoodsContent8; 
-		private String[] multiPlanGoodsContent9; 
-		private String[] multiPlanGoodsContent10; 
-		private String[] multiPlanGoodsContentVal1; 
-		private String[] multiPlanGoodsContentVal2; 
-		private String[] multiPlanGoodsContentVal3; 
-		private String[] multiPlanGoodsContentVal4; 
-		private String[] multiPlanGoodsContentVal5; 
-		private String[] multiPlanGoodsContentVal6; 
-		private String[] multiPlanGoodsContentVal7; 
-		private String[] multiPlanGoodsContentVal8; 
-		private String[] multiPlanGoodsContentVal9; 
-		private String[] multiPlanGoodsContentVal10; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent1; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent2; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent3; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent4; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent5; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent6; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent7; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent8; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent9; 
+	    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContent10; 
+	    
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal1; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal2; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal3; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal4; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal5; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal6; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal7; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal8; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal9; 
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		List<Plan> multiPlanGoodsContentVal10; 
 }

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

@@ -1306,7 +1306,21 @@
 				 AND	B.CONTENTS_LOC = A.CONTENTS_LOC
 				 AND	B.PRE_CONTENTS_SQ = A.DISP_ORD
 				 AND	B.CATE_NO = #{cateNo}
-				 AND	B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_ARR
+				 AND	B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_CD_LIST
+			 ,(SELECT 	GROUP_CONCAT(B.GOODS_NM ORDER BY B.DISP_ORD SEPARATOR ',')
+			   FROM	TMP_CONTENTS_GOODS B
+			   WHERE	B.CATE_NO = A.CATE_NO
+				 AND	B.CONTENTS_LOC = A.CONTENTS_LOC
+				 AND	B.PRE_CONTENTS_SQ = A.DISP_ORD
+				 AND	B.CATE_NO = #{cateNo}
+				 AND	B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_NM_LIST
+			 ,(SELECT 	GROUP_CONCAT(B.IMG_PATH1 ORDER BY B.DISP_ORD SEPARATOR ',')
+			   FROM	TMP_CONTENTS_GOODS B
+			   WHERE	B.CATE_NO = A.CATE_NO
+				 AND	B.CONTENTS_LOC = A.CONTENTS_LOC
+				 AND	B.PRE_CONTENTS_SQ = A.DISP_ORD
+				 AND	B.CATE_NO = #{cateNo}
+				 AND	B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_IMG_LIST
 			 , A.USE_YN
 			 , A.REG_NO
 			 , A.REG_DT
@@ -1431,8 +1445,7 @@
 		</selectKey>
 		INSERT INTO TB_CONTENTS
 		(
-			CONTENTS_SQ
-		 	, CATE_NO
+			CATE_NO
 			, CONTENTS_LOC
 			, CONTENTS_TYPE
 			, DISP_STDT
@@ -1472,8 +1485,7 @@
 			, UPD_DT
 		)
 		SELECT
-		     #{contentsSq}
-			 , CATE_NO
+		     CATE_NO
 			 , CONTENTS_LOC
 			 , CONTENTS_TYPE
 			 , DISP_STDT
@@ -1611,10 +1623,13 @@
 		INSERT INTO TMP_CONTENTS_GOODS
 		(
 			CATE_NO
+			,LEAF_CATE_NO
 			,CONTENTS_LOC
 			,PRE_CONTENTS_SQ
 			,CONTENTS_SQ
 			,GOODS_CD
+			,GOODS_NM
+			,IMG_PATH1
 			,DISP_ORD
 			,REG_NO
 			,REG_DT
@@ -1622,10 +1637,16 @@
 		VALUES
 		(
 		 	#{cateNo}
-		 	,#{contentsLoc}
+		 	,(SELECT LEAF_CATE_NO FROM (SELECT	LEAF_CATE_NO
+					   					FROM	TB_CATE_4SRCH
+					   					WHERE	CATE1_NO = #{cateNo}
+						 				AND		CONTENTS_LOC = #{contentsLoc}) TMP)
+			,#{contentsLoc}
 		 	,#{preContentsSq}
 		 	,NULL
 		 	,#{goodsCd}
+		 	,#{goodsNm}
+		 	,#{imgPath1}
 		 	,(SELECT DISP_ORD FROM (SELECT IFNULL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD
 		 							FROM	TMP_CONTENTS_GOODS
 		 							WHERE CATE_NO = #{cateNo}
@@ -1636,4 +1657,40 @@
 		 	,NOW()
 		)
 	</insert>
+
+	<!-- 메인전시 컨텐츠 상품 삭제 -->
+	<delete id="deleteContentsGoods" parameterType="Contents">
+		/* TsaDisplay.deleteContentsGoods */
+		DELETE	FROM TB_CATE_GOODS
+		WHERE	CATE_NO = (SELECT LEAF_CATE_NO FROM (SELECT	LEAF_CATE_NO
+													  FROM	TB_CATE_4SRCH
+													  WHERE	CATE1_NO = #{cateNo}
+														AND		CONTENTS_LOC = #{contentsLoc}) TMP)
+		AND 	CONTENTS_LOC = #{contentsLoc}
+	</delete>
+
+	<!-- 메인전시 컨텐츠 상품 저장 -->
+	<insert id="saveContentsGoods" parameterType="Contents">
+		/* TsaDisplay.saveContentsGoods */
+		INSERT INTO TB_CATE_GOODS
+		(
+			CATE_NO
+			,GOODS_CD
+			,CONTENTS_LOC
+			,CONTENTS_SQ
+			,DISP_ORD
+			,REG_NO
+			,REG_DT
+		)
+		SELECT	LEAF_CATE_NO
+			 ,GOODS_CD
+		     ,CONTENTS_LOC
+			 ,PRE_CONTENTS_SQ
+			 ,DISP_ORD
+			 ,#{regNo}
+			 ,NOW()
+		FROM	TMP_CONTENTS_GOODS
+		WHERE	CATE_NO = #{cateNo}
+		AND 	CONTENTS_LOC = #{contentsLoc}
+	</insert>
 </mapper>

+ 121 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -984,6 +984,127 @@
 			   , REG_DT= now()
 	</insert>
 	
+	<select id="getPlanContentReviewList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanContentReviewList */
+		SELECT A.PLAN_CONT_SQ 
+			  ,A.PLAN_SQ 
+		      ,A.TMPL_TYPE 
+		      ,A.TITLE 
+		      ,A.LINK_URL 
+		      ,A.DISP_YN 
+		      ,A.DISP_ORD 
+		      ,A.REG_NO 
+		      ,B.ITEM_VAL AS reItemVal
+		      ,SUBSTRING_INDEX(B.REVIEW_DISP_STDT, ' ', 1) AS startSearchDate
+		      ,SUBSTRING_INDEX(B.REVIEW_DISP_STDT, ' ', -1) AS startSearchTime
+		      ,SUBSTRING_INDEX(B.REVIEW_DISP_EDDT , ' ', 1) AS endSearchDate
+		      ,SUBSTRING_INDEX(B.REVIEW_DISP_EDDT , ' ', -1) AS endSearchTime
+		      ,C.GOODS_NM AS reItemNm
+		FROM TB_PLAN_CONTENTS A LEFT JOIN TB_PLAN_CONTENTS_ITEM B ON A.PLAN_CONT_SQ = B.PLAN_CONT_SQ
+								LEFT JOIN TB_GOODS C ON B.ITEM_VAL = C.GOODS_CD 
+	WHERE A.PLAN_SQ = #{planSq} AND A.TMPL_TYPE = #{tmplType}
+	</select>
+	
+	<select id="getPlanContentCouponList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanContentCouponList */
+		SELECT A.PLAN_CONT_SQ 
+			  ,A.PLAN_SQ 
+		      ,A.TMPL_TYPE 
+		      ,A.TITLE 
+		      ,A.LINK_URL 
+		      ,A.DISP_YN 
+		      ,A.DISP_ORD 
+		      ,A.REG_NO 
+		      ,B.ITEM_VAL AS cuItemVal
+		      ,C.CPN_ID 
+		      ,C.CPN_NM AS cuItemNm
+		FROM TB_PLAN_CONTENTS A LEFT JOIN TB_PLAN_CONTENTS_ITEM B ON A.PLAN_CONT_SQ = B.PLAN_CONT_SQ
+								LEFT JOIN TB_COUPON C ON B.ITEM_VAL = C.CPN_ID 
+		WHERE A.PLAN_SQ = #{planSq} AND A.TMPL_TYPE = #{tmplType}
+	</select>
+	
+	<select id="getPlanContentFileList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanContentFileList */
+		SELECT A.PLAN_CONT_SQ 
+			  ,A.PLAN_SQ 
+		      ,A.TMPL_TYPE 
+		      ,A.TITLE 
+		      ,A.LINK_URL 
+		      ,A.DISP_YN 
+		      ,A.DISP_ORD 
+		      ,A.REG_NO 
+		      ,B.ITEM_VAL AS fileItemVal
+		      ,B.PLAN_CONT_ITEM_SQ 
+		FROM TB_PLAN_CONTENTS A LEFT JOIN TB_PLAN_CONTENTS_ITEM B ON A.PLAN_CONT_SQ = B.PLAN_CONT_SQ
+		WHERE A.PLAN_SQ = #{planSq} AND A.TMPL_TYPE = #{tmplType}
+	</select>
+	
+	<!-- 기획전 템플릿 이미지 파일 삭제 -->
+	<delete id="deletePlanTemplateFile" parameterType="Plan">
+		/* TsaPlan.deletePlanTemplateFile */
+		DELETE FROM TB_PLAN_CONTENTS_ITEM
+		WHERE  PLAN_CONT_ITEM_SQ = #{planContItemSq}
+	</delete>
+	
+	<select id="getPlanContentFsrcList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanContentFsrcList */
+		SELECT A.PLAN_CONT_SQ 
+		  	 ,A.PLAN_SQ 
+		     ,A.TMPL_TYPE 
+		     ,A.TITLE 
+		     ,A.LINK_URL 
+		     ,A.DISP_YN 
+		     ,A.DISP_ORD 
+		     ,A.REG_NO 
+		     ,B.FRONT_GB 
+		     ,B.FSRC_BTM 
+		     ,B.FSRC_TOP 
+		FROM TB_PLAN_CONTENTS A LEFT JOIN TB_PLAN_FSRC B ON A.PLAN_SQ = B.PLAN_SQ 
+		WHERE A.PLAN_SQ = #{planSq} AND A.TMPL_TYPE = #{tmplType} 
+		ORDER BY FRONT_GB DESC
+	</select>
+	
+	<select id="getPlanContentGoodsList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanContentGoodsList */
+		SELECT A.PLAN_CONT_SQ 
+			  ,A.PLAN_SQ 
+		      ,A.TMPL_TYPE 
+		      ,A.TITLE 
+		      ,A.LINK_URL 
+		      ,A.DISP_YN 
+		      ,A.DISP_ORD 
+		      ,A.REG_NO 
+		FROM TB_PLAN_CONTENTS A 
+		WHERE A.PLAN_SQ = #{planSq}  AND TMPL_TYPE IN ('G082_50','G082_51','G082_52')
+	</select>
+	
+	<select id="getPlanContentGoodsDetailList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanContentGoodsDetailList */	
+		SELECT  B.PLAN_CONT_SQ 
+		      ,B.ITEM_VAL as goodsItemVal
+		      ,C.GOODS_NM
+		      ,C.LIST_PRICE 
+		      ,C.CURR_PRICE
+		      ,C.GOODS_STAT 
+		      ,D.BRAND_KNM 
+		      ,D.BRAND_ENM 
+		FROM tb_plan_contents_item B LEFT JOIN TB_GOODS C ON B.ITEM_VAL = C.GOODS_CD 
+									 LEFT JOIN TB_BRAND D ON C.BRAND_CD = D.BRAND_CD
+		WHERE B.PLAN_CONT_SQ IN 
+								(
+									SELECT A.PLAN_CONT_SQ 
+									FROM TB_PLAN_CONTENTS A 
+									WHERE A.PLAN_SQ = #{planSq}  AND TMPL_TYPE IN ('G082_50','G082_51','G082_52') AND PLAN_CONT_SQ = #{planContSq}
+								)
+	</select>
+	
+	<delete id="deletePlanContentItem" parameterType="Plan">
+		/* TsaPlan.getPlanContentGoodsDetailList */	
+		DELETE 
+		FROM TB_PLAN_CONTENTS_ITEM
+		WHERE PLAN_CONT_SQ = #{planContSq}
+	</delete>
+	
 	
 </mapper>
 

+ 3 - 3
src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html

@@ -189,7 +189,7 @@
 		}
 
 		if(contentsLoc=='SMM002'||contentsLoc=='SMM003'||contentsLoc=='SMM004'||contentsLoc=='SMM006'||contentsLoc=='SMM007'
-				||contentsLoc=='SMM010' ||contentsLoc=='SMM012'||contentsLoc=='SMM013'){
+				||contentsLoc=='SMM009' ||contentsLoc=='SMM010'||contentsLoc=='SMM011'){
 			if(!gagajf.checkRequired("#contentsTitleForm")){
 				return;
 			}
@@ -332,7 +332,7 @@
 		}
 
 		if(contentsLoc=='SMM002'||contentsLoc=='SMM003'||contentsLoc=='SMM004'||contentsLoc=='SMM006'||contentsLoc=='SMM007'
-				||contentsLoc=='SMM010' ||contentsLoc=='SMM012'||contentsLoc=='SMM013'){
+				||contentsLoc=='SMM009' ||contentsLoc=='SMM010'||contentsLoc=='SMM011'){
 			var data = {
 				cateNo : cateNo
 				, contentsLoc : contentsLoc
@@ -525,7 +525,7 @@
 		$("#popTitle").text("["+contentsLoc+"] "+gagaAgGrid.lookupValue(contentsLocArr, contentsLoc));
 
 		if(contentsLoc=='SMM002'||contentsLoc=='SMM003'||contentsLoc=='SMM004'||contentsLoc=='SMM006'||contentsLoc=='SMM007'
-				||contentsLoc=='SMM010' ||contentsLoc=='SMM012'||contentsLoc=='SMM013'){
+				||contentsLoc=='SMM009' ||contentsLoc=='SMM010'||contentsLoc=='SMM011'){
 			$("#contentsTitleForm").show();
 		}else{
 			$("#contentsTitleForm").hide();

+ 5 - 4
src/main/webapp/WEB-INF/views/display/MainListForm.html

@@ -322,7 +322,6 @@
 	* 레이아웃 행추가 버튼
 	*/
 	$("#btnAddRow").on("click", function (){
-		console.log('[행추가 start]');
 		var val = $("#searchForm select[name=cate1No]").val();
 		var cate1No = val.split(',')[0];
 		//console.log('val>>'+val);
@@ -397,9 +396,9 @@
 
 			html += '" style="text-align:center; max-width:'+maxWidth+'px;">';
 			html += '<div>';
-			html += '<select name="contentsLocEdit" required="required" style="max-width:80px;" data-valid-name="컨텐츠 위치">'+contentsLocHtml+'</select>';
+			html += '<select name="contentsLocEdit" required="required" style="max-width:300px;" data-valid-name="컨텐츠 위치">'+contentsLocHtml+'</select>';
 			html += '</div>';
-			html += '<select name="contentsYn" required="required" style="max-width:80px;" data-valid-name="컨텐츠 타입"><option value="C">[C] 컨텐츠</option><option value="G">[G] 상품</option><option value="A">[A] 컨텐츠 + 상품</option></select>';
+			html += '<select name="contentsYn" required="required" style="max-width:160px;" data-valid-name="컨텐츠 타입"><option value="C">[C] 컨텐츠</option><option value="G">[G] 상품</option><option value="A">[A] 컨텐츠 + 상품</option></select>';
 			html += '<input type="hidden" name="contentsLoc" value=""/>';
 			html += '<input type="hidden" name="colCnt" value="'+colCnt+'"/>';
 			html += '<input type="hidden" name="colNo" value="'+colNo+'"/>';
@@ -486,6 +485,7 @@
 		var dataArr = [];
 		var contentLocArr = [];
 		var contentLocCheck = true;
+
 		$("#mainSortable tbody").each(function(ind){
 			var orgFileNm = $(this).find('input:hidden[name="orgFileNm"]').val();
 			var sysFileNm = $(this).find('input:hidden[name="sysFileNm"]').val();
@@ -533,6 +533,7 @@
 			mcxDialog.alert('위치코드가 중복 되었습니다.');
 			return;
 		}
+
 		if(dataArr.length==0){
 			mcxDialog.alert("저장할 데이터가 없습니다.");
 			return;
@@ -562,7 +563,7 @@
 		var contentsLoc = $(obj).closest("td").find('input:hidden[name="contentsLoc"]').val();
 
 		// 브랜드픽, MD추천 다른 팝업 사용
-		if(contentsLoc=='SMM007'||contentsLoc=='SMM010'){
+		if(contentsLoc=='SMM007'||contentsLoc=='SMM009'){
 			cfnOpenMainMultiContentsPopup(cateNo, contentsLoc);
 		}else{
 			cfnOpenMainContentsPopup(cateNo, contentsLoc);

+ 52 - 58
src/main/webapp/WEB-INF/views/display/MainMultiContentsPopupForm.html

@@ -27,7 +27,7 @@
 					</li>
 					<li class="aR">
 						<button type="button" class="btn btn btn-base btn-sm" th:if="${contentsLoc == 'SMM007'}" onclick="fnAddBrand(this);">브랜드 추가</button> <!--id="btnBrandAddRow"-->
-						<button type="button" class="btn btn btn-base btn-sm" th:if="${contentsLoc == 'SMM010'}" onclick="fnAddBrand(this);">MD 탭 추가</button>
+						<button type="button" class="btn btn btn-base btn-sm" th:if="${contentsLoc == 'SMM009'}" onclick="fnAddBrand(this);">MD 탭 추가</button>
 						<button type="button" class="btn btn btn-dark btn-sm" id="btnMultiPopSave">임시저장</button>
 						<input type="hidden" name="uploadDefaultUrlMultiPop" id="uploadDefaultUrlMultiPop" th:value="${@environment.getProperty('upload.image.view') + '/display/contents/'}"/>
 						<input type="hidden" name="uploadDefaultBrandUrlPop" id="uploadDefaultBrandUrlPop" th:value="${@environment.getProperty('upload.image.view') + '/display/contents/brand/'}"/>
@@ -110,10 +110,10 @@
 			if(contentsLoc=='SMM007') {
 				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow(\'#\',this);">기획전/배너추가</button>';
 			}
-			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this);">상품추가</button>';
+			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this,this,this);">상품추가</button>';
 			html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteBrandRow(this);">삭제</button></td>';
 			html += '</tr>';
-			if(contentsLoc=='SMM010'){
+			if(contentsLoc=='SMM009'){
 				html += '<tr>';
 				html += '<th>MD탭문구</th>';
 				html += '<td colspan="3"><input type="text" name="mdTitle" id="mdTitle" style="width:30%;" value="' + result[i].mdTitle + '"></td>';
@@ -138,8 +138,8 @@
 					}
 				}
 			}
-			if(!gagajf.isNull(result[i].goodsArr)){
-				html += fnAddGoodsRow(result[i].goodsArr);
+			if(!gagajf.isNull(result[i].goodsCdList)){
+				html += fnAddGoodsRow(result[i].goodsCdList,result[i].goodsNmList,result[i].goodsImgList);
 			}
 			html += '</tbody></table>';
 		}
@@ -226,10 +226,10 @@
 		if(contentsLoc=='SMM007') {
 			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddPlanRow(\'#\',this);">기획전/배너추가</button>';
 		}
-		html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this);">상품추가</button>';
+		html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this,this,this);">상품추가</button>';
 		html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteBrandRow(this);">삭제</button></td>';
 		html += '</tr>';
-		if(contentsLoc=='SMM010'){
+		if(contentsLoc=='SMM009'){
 			html += '<tr>';
 			html += '<th>MD탭문구</th>';
 			html += '<td colspan="3"><input type="text" name="mdTitle" id="mdTitle" style="width:30%;"></td>';
@@ -482,7 +482,9 @@
 			var subText2 = '';
 			var subText3 = '';
 			var subText4 = '';
+			var goodsImgArr = [];
 			var goodsCdArr = [];
+			var goodsNmArr = [];
 			var i = 1;
 			$(this).find('input[name=planImgPath]').each(function(){
 				eval("imgPath" + i + "='"+$(this).val()+"'");
@@ -503,10 +505,17 @@
 				i++;
 			});
 
+			$(this).find('input[name=goodsImgPath]').each(function(){
+				goodsImgArr.push($(this).val());
+			});
+
 			$(this).find('input[name=goodsCd]').each(function(){
 				goodsCdArr.push($(this).val());
 			});
-			console.log(goodsCdArr);
+
+			$(this).find('input[name=goodsNm]').each(function(){
+				goodsNmArr.push($(this).val());
+			});
 
 			var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
 			var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
@@ -554,6 +563,8 @@
 				, multiContentsYn : 'Y'
 				, contentsTitle : $("#multiContentsTitleForm input[name=contentsTitle]").val()
 				, goodsCdArr : goodsCdArr
+				, goodsNmArr : goodsNmArr
+				, goodsImgArr : goodsImgArr
 			};
 
 			dataArr.push(data);
@@ -614,14 +625,13 @@
 	 * 상품추가
 	 */
 	var goodsIdx = 0;
-	var fnAddGoodsRow = function (param){
+	var fnAddGoodsRow = function (param, param2, param3){
 		var addRow = "goodsListTd"+goodsIdx;
 		//console.log('addRow::'+addRow);
 
 		var html = '<tr name="goodsRow">';
-		html += '<th>상품추가<br><button type="button" class="btn btn-base btn-lg" onclick="fnDeleteTrRow(this);">삭제</button>';
-		html += '<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchGoods(\''+addRow+'\');">상품조회</button>';
-		html += '<input type="hidden" name="goodsArrTest" id="goodsArrTest" value="'+goodsArr+'">';
+		html += '<th>상품추가<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchGoods(\''+addRow+'\');">상품조회</button>';
+		html += '<br></br><button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteTrRow(this);">삭제</button>';
 		html += '</th>';
 		html += '<td colspan="3">';
 		//html += '<table style="border-style: solid;border-color: #ac2925; width:100%; height:20px;">';
@@ -634,16 +644,34 @@
 		html += '<div class="sortableWrap" data-unit="7" style="overflow-y:scroll;">';
 		html += '<div class="itemWrap" id="goodsListTd'+goodsIdx+'">';
 		if(typeof param!='object'){
-			var goodsArr = [];
-			goodsArr = param;
+			var goodsCdList = [];
+			var goodsNmList = [];
+			var goodsImgList = [];
+			goodsCdList = param;
+			goodsNmList = param2;
+			goodsImgList = param3;
 			// 여기서 부터 시작! 상품불러오는거 똑같이 html 추가해서 체크
 			// +) 저장할때 TMP_CONTENTS_GOODS 에 상품코드, 상품명, 상품이미지경로 추가해서 3개다 불러와서 데이터 뿌릴수 있게
-			$.each(goodsArr.split(','), function(i){
-				console.log(i+':::>>>>>>>>>>>>>'+goodsArr.split(',')[i]);
-				goodsCd = goodsArr.split(',')[i];
-				html += '<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:130px;" ';
-				html += '">';
-				html += '<li class="no" name="goodsCdLi"><span>'+goodsCd+'</span></li>';
+			$.each(goodsCdList.split(','),function (i){
+				html += '<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:130px;"> ';
+				goodsImg = goodsImgList.split(',')[i];
+				goodsCd = goodsCdList.split(',')[i];
+				goodsNm = goodsNmList.split(',')[i];
+				html += '<li class="img">';
+				var imgPath = uploadGoodsUrl;
+				html += '<img src="'+imgPath+ "/" +goodsImg+'" onerror="this.src=\'/image/no.gif\';"/>';
+				html += '</li>';
+				html += '<li class="cont">';
+				html += '<ul>';
+				html += '<li class="no" name="goodsCdLi"><span>'+goodsCd+'</span>';
+				html += '<input type="hidden" name="goodsImgPath" value="'+goodsImg+'">';
+				html += '<input type="hidden" name="goodsCd" value="'+goodsCd+'">';
+				html += '<input type="hidden" name="goodsNm" value="'+goodsNm+'">';
+				html += '<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveGoods(this,'+i+');">X</a></span>';
+				html += '</li>';
+				html += '</li>';
+				html += '<li class="title">'+goodsNm+'</li>';
+				html += '</ul>';
 				html += '</ul>';
 			});
 		}
@@ -669,42 +697,6 @@
 		fnReloadIdx();
 	}
 
-	var fnShowGoodsList = function (obj){
-		console.log('18181818');
-		var tableNm = obj;
-		var goodsCd1 = $("#"+tableNm).find("input[name=goodsArrTest]").val();
-		console.log('goodsCd1>>>'+goodsCd1);
-		//$("#"+tableNm);
-		var goodsCd = '';
-		$.each(goodsCd1.split(','), function(i){
-			console.log(i+':::>>>>>>>>>>>>>'+goodsCd1.split(',')[i]);
-			goodsCd = goodsCd1.split(',')[i];
-			html += '<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:130px;" ';
-			html += '">';
-			html += '<li class="no" name="goodsCdLi"><span>'+goodsCd+'</span></li>>';
-			html += '</ul>';
-			$("#goodsListTd0").append(html);
-			i++;
-		});
-	}
-
-	var fnShowGoodsList2 = function (param){
-		console.log('goodsArr>>>'+param);
-		var html = '';
-		var goodsCd = '';
-		$.each(param.split(','), function(i){
-			console.log(i+':::>>>>>>>>>>>>>'+param.split(',')[i]);
-			goodsCd = param.split(',')[i];
-			html += '<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:130px;" ';
-			html += '">';
-			html += '<li class="no" name="goodsCdLi"><span>'+goodsCd+'</span></li>>';
-			html += '</ul>';
-			$("#goodsListTd0").append(html);
-			i++;
-		});
-
-	}
-
 	/**
 	 * 상품조회
 	 */
@@ -733,12 +725,14 @@
 			if(result[i].imgType=='A'){
 				imgPath = uploadGoodsUrl;
 			}
-			html += '<img src="'+imgPath+ "/" +result[i].imgPath1+'" onerror="this.src=\'/image/no.gif\';"/>';
+			html += '<img src="'+imgPath+ "/" +result[i].goodsImg+'" onerror="this.src=\'/image/no.gif\';"/>';
 			html += '</li>';
 			html += '<li class="cont">';
 			html += '<ul>';
 			html += '<li class="no" name="goodsCdLi"><span>'+result[i].goodsCd+'</span>';
+			html += '<input type="hidden" name="goodsImgPath" value="'+result[i].goodsImg+'">';
 			html += '<input type="hidden" name="goodsCd" value="'+result[i].goodsCd+'">';
+			html += '<input type="hidden" name="goodsNm" value="'+result[i].goodsNm+'">';
 			html += '<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveGoods(this,'+i+');">X</a></span>';
 			html += '</li>';
 			html += '<li class="title">'+result[i].goodsNm+'</li>';
@@ -786,7 +780,7 @@
 	$(document).ready(function() {
 		$("#multiPopTitle").text("["+contentsLoc+"] "+gagaAgGrid.lookupValue(contentsLocArr, contentsLoc));
 
-		if(contentsLoc=='SMM007'||contentsLoc=='SMM010'){
+		if(contentsLoc=='SMM007'||contentsLoc=='SMM009'){
 			$("#multiContentsTitleForm").show();
 		}else{
 			$("#multiContentsTitleForm").hide();

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -2277,7 +2277,7 @@
 	
 	$(document).ready(function() {
 		
-		cfnCreateCheckbox("/renderer/avail/commonCode/list/G101", $('#goodsCustGradeList'), "goodsOrderGrade");
+		cfnCreateCheckbox("/renderer/avail/commonCode/list/G110", $('#goodsCustGradeList'), "goodsOrderGrade");
 
 		gagaAgGrid.createGrid('gridGoodsHstoryList', gridGoodsHstoryOptions);
 		gagaAgGrid.createGrid('gridGoodsComposeList', gridGoodsComposeOptions);

+ 252 - 19
src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html

@@ -26,6 +26,9 @@
 	<form id="planTemplateForm" name="planTemplateForm" action="#" th:method="post">
 			<input type="hidden" name="planSq" th:value="*{planSq}"/>
 			<input type="hidden" name="mode" th:value="*{mode}"/>
+			<input type="hidden" name="rePlanContSq">
+			<input type="hidden" name="cuPlanContSq">
+			<input type="hidden" name="filePlanContSq">
 			<div class="cardArea" style="height: 700px; margin: 3px;">
 
 				<div class="panelContent">
@@ -51,7 +54,7 @@
 											<table class="frmStyle">
 												<tr>
 													<th>리뷰 타이틀</th>
-													<td><input type="text" name="reTitle" class="w300 aR">
+													<td><input type="text" name="reTitle" class="w300 aR"/>
 													</td>
 												</tr>
 												<tr>
@@ -147,7 +150,7 @@
 										<col width="90%" />
 									</colgroup>
 									<tr>
-										<th>이미지 첨부<br/>[전시여부<label class="chkBox"><input type="checkbox" name="fileDispYn" value="Y"/></label>]</th>
+										<th>이미지 첨부<br/>[전시여부<label class="chkBox"><input type="checkbox" name="fileDispYn" value="N"/></label>]</th>
 										<td colspan="5">
 											<div id="registeredFile"></div>
 											<div style="display: block">
@@ -171,7 +174,7 @@
 										</td>
 
 										<th>전시순서</th>
-										<td><input type="text" name="fileDispYn" class="w100 aR" data-valid-type="numeric"></td>
+										<td><input type="text" name="fileDispOrd" class="w100 aR" data-valid-type="numeric"></td>
 									</tr>
 								</table>
 							</div>
@@ -912,12 +915,31 @@
 	
 	let AddgridRow;	
 	let goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
+	let reviewList = [[${reviewList}]];
+	let couponList = [[${couponList}]];
+	let fileList = [[${fileList}]];
+	let fsrcListTop = [[${fsrcListTop}]];
+	let fsrcListBtm = [[${fsrcListBtm}]];
+	let goodsList = [[${goodsList}]];
+	let goodsDetailList1 = [[${goodsDetailList1}]];
+	let goodsDetailList2 = [[${goodsDetailList2}]];
+	let goodsDetailList3 = [[${goodsDetailList3}]];
+	let goodsDetailList4 = [[${goodsDetailList4}]];
+	let goodsDetailList5 = [[${goodsDetailList5}]];
+	let goodsDetailList6 = [[${goodsDetailList6}]];
+	let goodsDetailList7 = [[${goodsDetailList7}]];
+	let goodsDetailList8 = [[${goodsDetailList8}]];
+	let goodsDetailList9 = [[${goodsDetailList9}]];
+	let goodsDetailList10 = [[${goodsDetailList10}]];
+	
+	let mode = [[${mode}]]; 
+	
 	
 	// 리뷰 리스트 설정
 	var columnReviewList = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: "상품ID", field: "reItemVal", width: 110, cellClass: 'text-center'},
-		{headerName: "상품명", field: "reItemNm", width: 120, cellClass: 'text-center'},
+		{headerName: "상품명", field: "reItemNm", width: 200, cellClass: 'text-center'},
 		{headerName: "시작일"			, field:'startSearchDate'	, width:110, cellClass: 'text-center',
 			cellEditor: 'datePicker',
 			cellEditorParams: { maxlength: 10, required: true },
@@ -1451,7 +1473,7 @@
 				mcxDialog.alert('이미지 전시순서를 입력하세요.');
 				return;
 			}
-			if(multiPlanFile.length == 0){
+			if(multiPlanFile.length == 0 && $("#dnFile").text() == null){
 				mcxDialog.alert('등록할 이미지를 등록하세요.');
 				return;
 			}
@@ -1707,7 +1729,76 @@
 		}
 	
 		
+		let goodsTemp1 = {};
+		let goodsTemp2 = {};
+		let goodsTemp3 = {};
+		let goodsTemp4 = {};
+		let goodsTemp5 = {};
+		let goodsTemp6 = {};
+		let goodsTemp7 = {};
+		let goodsTemp8 = {};
+		let goodsTemp9 = {};
+		let goodsTemp10 = {};
+		
+		goodsTemp1.goodsTitle = $('#planTemplateForm input[name=goodsTitle1]').val();
+		goodsTemp1.goodsUrl = $('#planTemplateForm input[name=goodsUrl1]').val();
+		goodsTemp1.goodsType = $('#planTemplateForm input:radio[name=goodsType1]:checked').val();
+		goodsTemp1.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd1]').val();
+		goodsTemp1.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn1]').val();
+		
+		goodsTemp2.goodsTitle = $('#planTemplateForm input[name=goodsTitle2]').val();
+		goodsTemp2.goodsUrl = $('#planTemplateForm input[name=goodsUrl2]').val();
+		goodsTemp2.goodsType = $('#planTemplateForm input:radio[name=goodsType2]:checked').val();
+		goodsTemp2.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd2]').val();
+		goodsTemp2.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn2]').val();
+		
+		goodsTemp3.goodsTitle = $('#planTemplateForm input[name=goodsTitle3]').val();
+		goodsTemp3.goodsUrl = $('#planTemplateForm input[name=goodsUrl3]').val();
+		goodsTemp3.goodsType = $('#planTemplateForm input:radio[name=goodsType3]:checked').val();
+		goodsTemp3.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd3]').val();
+		goodsTemp3.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn3]').val();
+		
+		goodsTemp4.goodsTitle = $('#planTemplateForm input[name=goodsTitle4]').val();
+		goodsTemp4.goodsUrl = $('#planTemplateForm input[name=goodsUrl4]').val();
+		goodsTemp4.goodsType = $('#planTemplateForm input:radio[name=goodsType4]:checked').val();
+		goodsTemp4.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd4]').val();
+		goodsTemp4.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn4]').val();
+		
+		goodsTemp5.goodsTitle = $('#planTemplateForm input[name=goodsTitle5]').val();
+		goodsTemp5.goodsUrl = $('#planTemplateForm input[name=goodsUrl5]').val();
+		goodsTemp5.goodsType = $('#planTemplateForm input:radio[name=goodsType5]:checked').val();
+		goodsTemp5.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd5]').val();
+		goodsTemp5.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn5]').val();
 		
+		goodsTemp6.goodsTitle = $('#planTemplateForm input[name=goodsTitle6]').val();
+		goodsTemp6.goodsUrl = $('#planTemplateForm input[name=goodsUrl6]').val();
+		goodsTemp6.goodsType = $('#planTemplateForm input:radio[name=goodsType6]:checked').val();
+		goodsTemp6.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd6]').val();
+		goodsTemp6.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn6]').val();
+		
+		goodsTemp7.goodsTitle = $('#planTemplateForm input[name=goodsTitle7]').val();
+		goodsTemp7.goodsUrl = $('#planTemplateForm input[name=goodsUrl7]').val();
+		goodsTemp7.goodsType = $('#planTemplateForm input:radio[name=goodsType7]:checked').val();
+		goodsTemp7.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd7]').val();
+		goodsTemp7.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn7]').val();
+		
+		goodsTemp8.goodsTitle = $('#planTemplateForm input[name=goodsTitle8]').val();
+		goodsTemp8.goodsUrl = $('#planTemplateForm input[name=goodsUrl8]').val();
+		goodsTemp8.goodsType = $('#planTemplateForm input:radio[name=goodsType8]:checked').val();
+		goodsTemp8.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd8]').val();
+		goodsTemp8.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn8]').val();
+		
+		goodsTemp9.goodsTitle = $('#planTemplateForm input[name=goodsTitle9]').val();
+		goodsTemp9.goodsUrl = $('#planTemplateForm input[name=goodsUrl9]').val();
+		goodsTemp9.goodsType = $('#planTemplateForm input:radio[name=goodsType9]:checked').val();
+		goodsTemp9.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd9]').val();
+		goodsTemp9.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn9]').val();
+		
+		goodsTemp10.goodsTitle = $('#planTemplateForm input[name=goodsTitle10]').val();
+		goodsTemp10.goodsUrl = $('#planTemplateForm input[name=goodsUrl10]').val();
+		goodsTemp10.goodsType = $('#planTemplateForm input:radio[name=goodsType10]:checked').val();
+		goodsTemp10.goodsDispOrd = $('#planTemplateForm input[name=goodsDispOrd10]').val();
+		goodsTemp10.goodsDispYn = $('#planTemplateForm input:checkbox[name=goodsDispYn10]').val();
 		
 		mcxDialog.confirm('기획전 템플릿을 등록 하시겠습니까?', {
 			cancelBtnText: "취소",
@@ -1723,16 +1814,19 @@
 						   ,multiPlanReviewEndT : multiPlanReviewEndT
 						   ,reTitle : $('#planTemplateForm input[name=reTitle]').val()
 						   ,reDispOrd : $('#planTemplateForm input[name=reDispOrd]').val()
+						   ,rePlanContSq : $('#planTemplateForm input[name=rePlanContSq]').val()
 						   ,reDispYn :  $('#planTemplateForm input:checkbox[name=reDispYn]').val()
 						   ,mode :  $('#planTemplateForm input[name=mode]').val()
 						   ,planSq : $('#planTemplateForm input[name=planSq]').val()
 						   ,multiPlanCoupon : multiPlanCoupon
 						   ,cuTitle : $('#planTemplateForm input[name=cuTitle]').val()              
-						   ,cuDispOrd : $('#planTemplateForm input[name=cuDispOrd]').val()          
+						   ,cuDispOrd : $('#planTemplateForm input[name=cuDispOrd]').val()        
+						   ,cuPlanContSq : $('#planTemplateForm input[name=cuPlanContSq]').val()
 						   ,cuDispYn :  $('#planTemplateForm input:checkbox[name=cuDispYn]').val()  
 						   ,multiPlanFile : multiPlanFile
 						   ,fileDispYn : $('#planTemplateForm input:checkbox[name=fileDispYn]').val() 
-						   ,filwDispOrd : $('#planTemplateForm input[name=filwDispOrd]').val()       
+						   ,fileDispOrd : $('#planTemplateForm input[name=fileDispOrd]').val()  
+						   ,filePlanContSq : $('#planTemplateForm input[name=filePlanContSq]').val()
 						   ,topFsrcDispYn : $('#planTemplateForm input:checkbox[name=topFsrcDispYn]').val() 
 						   ,btmFsrcDispYn : $('#planTemplateForm input:checkbox[name=btmFsrcDispYn]').val() 
 						   ,topFsrcDispOrd: $('#planTemplateForm input[name=topFsrcDispOrd]').val() 
@@ -1775,6 +1869,25 @@
 		uifnPopupClose('popupPlanTemplate');		
 	}
 	
+	// 첨부파일 삭제
+	var fnDeleteFile = function(obj, planSq, planContItemSq, fileItemVal) {
+		mcxDialog.confirm('정말 삭제하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var params = new Object();
+				params.planSq = planSq;
+				params.planContItemSq = planContItemSq;
+				params.fileItemVal = fileItemVal;
+
+				var jsonData = JSON.stringify(params);
+				gagajf.ajaxJsonSubmit('/marketing/planning/detail/template/file/delete', jsonData, function() {
+					$(obj).parent().remove();
+				});
+			}
+		});
+	}
+	
 	
 $(document).ready(function() {
 		// 썸머노트 그리기
@@ -1795,19 +1908,139 @@ $(document).ready(function() {
 		gagaAgGrid.createGrid("gridTempGbList8", gridOptions_p8);
 		gagaAgGrid.createGrid("gridTempGbList9", gridOptions_p9);
 		gagaAgGrid.createGrid("gridTempGbList10", gridOptions_p10);
-		/* 
-		gridOptions_c1.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c2.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c3.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c4.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c5.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c6.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c7.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c8.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c9.api.setRowData(mktmailGoodsInfo);
-		gridOptions_c10.api.setRowData(mktmailGoodsInfo);
-		 */
 		
+		if(mode == 'U'){
+			if(typeof reviewList[0] != 'undefined'){
+				// 리뷰
+				$('#planTemplateForm input[name=reTitle]').val(reviewList[0].title);
+				$('#planTemplateForm input[name=reDispOrd]').val(reviewList[0].dispOrd);
+				$('#planTemplateForm input[name=rePlanContSq]').val(reviewList[0].planContSq);
+				
+				if (reviewList[0].dispYn == 'Y') {
+					$('#planTemplateForm input:checkbox[name="reDispYn"]').prop('checked', true);
+				}
+				
+				gridOptionsPlanReviewList.api.setRowData(reviewList);
+				
+			}
+			if(typeof couponList[0] != 'undefined'){
+				//쿠폰
+				$('#planTemplateForm input[name=cuTitle]').val(couponList[0].title);
+				$('#planTemplateForm input[name=cuDispOrd]').val(couponList[0].dispOrd);
+				$('#planTemplateForm input[name=cuPlanContSq]').val(couponList[0].planContSq);
+				
+				if (couponList[0].dispYn == 'Y') {
+					$('#planTemplateForm input:checkbox[name="cuDispYn"]').prop('checked', true);
+				}
+				if(couponList.length > 0)
+				{
+					for (var i = 0; i <couponList.length; i++) {
+						var html =  '<tr>';
+						html += '<td colspan="3">';
+						html += '<input type="text" class="w300" id="cuItemNm" name="cuItemNm'+(i+1)+'" value="'+ couponList[i].cuItemNm +'"/>';
+						html += '<button type="button" class="btn icn" id="couponPlusBtn'+(i+1)+'"><i class="fa fa-search cpn" aria-hidden="true"></i></button>';
+						html += '<input id="cuItemVal" name="cuItemVal'+(i+1)+'" type="text" class="w100" maxlength="20" readonly="readonly" value="'+ couponList[i].cuItemVal +'"/>';
+						html += '<button type="button" class="btn icn" id="deleteCoupon'+(i+1)+'"><i class="fa fa-eraser" aria-hidden="true"></i></button>';
+						html += '</td>';
+						html += '</tr>';
+							
+						$("#couponTable").append(html);
+						
+						$('#couponPlusBtn'+(i+1)).attr("onclick","fnOpenCouponRetrievePopup('input[name=cuItemVal"+(i+1)+"]', 'input[name=cuItemNm"+(i+1)+"]');")
+						$('#deleteCoupon'+(i+1)).attr("onclick","deleteRowCoupon("+(i+1)+")");
+					}
+				}
+			}
+			
+			if(typeof fileList[0] != 'undefined'){
+				//파일
+				$('#planTemplateForm input[name=fileDispOrd]').val(fileList[0].dispOrd);
+				$('#planTemplateForm input[name=filePlanContSq]').val(fileList[0].planContSq);
+				
+				if (fileList[0].dispYn == 'Y') {
+					$('#planTemplateForm input:checkbox[name="fileDispYn"]').prop('checked', true);
+				}
+				
+				if(fileList.length > 0)
+				{
+					for (var i = 0; i <fileList.length; i++) {
+						var tag = '';
+						tag += '<span class="memAdd">';
+						tag += '	<a id="dnFile' + (i + 1) + '">' + fileList[i].fileItemVal + '</a>\n';
+						tag += '	<button type="button" onclick="fnDeleteFile(this, ' + fileList[i].planSq + ', ' +  fileList[i].planContItemSq + ', \'' +  fileList[i].fileItemVal + '\')">삭제</button>\n';
+						tag += '</span>';
+						$('#registeredFile').prepend(tag);
+							
+					}
+				}
+			}
+			
+			//html(하단)
+			if(typeof fsrcListBtm[0] != 'undefined'){
+				$('#planTemplateForm input[name=btmFsrcDispOrd]').val(fsrcListBtm[0].dispOrd);
+				
+				if (fsrcListBtm[0].dispYn == 'Y') {
+					$('#planTemplateForm input:checkbox[name="btmFsrcDispYn"]').prop('checked', true);
+				}
+				if(fsrcListBtm[0].frontGb == 'P')
+					$('#fsrcPcBtm').summernote('code', fsrcListBtm[0].fsrcBtm);
+				if(fsrcListBtm[1].frontGb == 'M')
+					$('#fsrcMobileBtm').summernote('code', fsrcListBtm[1].fsrcBtm);
+			}
+			
+			//html(상단)
+			if(typeof fsrcListTop[0] != 'undefined'){
+				$('#planTemplateForm input[name=topFsrcDispOrd]').val(fsrcListTop[0].dispOrd);
+				
+				if (fsrcListTop[0].dispYn == 'Y') {
+					$('#planTemplateForm input:checkbox[name="topFsrcDispYn"]').prop('checked', true);
+				}
+				if(fsrcListTop[0].frontGb == 'P')
+					$('#fsrcPcTop').summernote('code', fsrcListTop[0].fsrcTop);
+				if(fsrcListTop[1].frontGb == 'M')
+					$('#fsrcMobileTop').summernote('code', fsrcListTop[1].fsrcTop);
+			}
+			
+			//상품
+			if(typeof goodsList[0] != 'undefined'){
+				for (var i = 0; i < goodsList.length; i++) {
+					
+					
+					$('#planTemplateForm input[name=goodsTitle'+(i+1)+']').val(goodsList[i].title);						
+					$('#planTemplateForm input[name=goodsUrl'+(i+1)+']').val(goodsList[i].linkUrl);
+					$('#planTemplateForm input[name=goodsDispOrd'+(i+1)+']').val(goodsList[i].dispOrd);
+					
+					if (goodsList[0].dispYn == 'Y') {
+						$('#planTemplateForm input:checkbox[name=goodsDispYn'+(i+1)+']').prop('checked', true);
+					}
+					
+					if(goodsList[i].tmplType == "G082_50"){
+						$('#planTemplateForm input:radio[name=goodsType'+(i+1)+']:radio[value="G082_50"]').prop('checked', true);
+					}else if(goodsList[i].tmplType == "G082_51"){
+						$('#planTemplateForm input:radio[name=goodsType'+(i+1)+']:radio[value="G082_51"]').prop('checked', true);
+					}else if(goodsList[i].tmplType == "G082_52"){
+						$('#planTemplateForm input:radio[name=goodsType'+(i+1)+']:radio[value="G082_52"]').prop('checked', true);
+					}
+					
+					$('#btnAddGridNum' + (i + 1)).show();
+					
+					gridOptions_p1.api.setRowData(goodsDetailList1);
+					gridOptions_p2.api.setRowData(goodsDetailList2);
+					gridOptions_p3.api.setRowData(goodsDetailList3);
+					gridOptions_p4.api.setRowData(goodsDetailList4);
+					gridOptions_p5.api.setRowData(goodsDetailList5);
+					gridOptions_p6.api.setRowData(goodsDetailList6);
+					gridOptions_p7.api.setRowData(goodsDetailList7);
+					gridOptions_p8.api.setRowData(goodsDetailList8);
+					gridOptions_p9.api.setRowData(goodsDetailList9);
+					gridOptions_p10.api.setRowData(goodsDetailList10);
+					
+				}
+			}
+			
+		}
+		
+
 		$("#fileCnt").trigger('change');
 		
 });