Ver Fonte

Merge branch 'csh9191' into develop

# Conflicts:
#	src/main/java/com/style24/admin/biz/service/TsaMailTemplateService.java
ChoiSooHwan há 5 anos atrás
pai
commit
9134e3be27

+ 29 - 5
src/main/java/com/style24/admin/biz/dao/TsaMailTemplateDao.java

@@ -62,12 +62,12 @@ public interface TsaMailTemplateDao {
 	 */
 	MktmailManagement getMktmailManagementDetail(Integer mailtSq);
 	Collection<MktmailManagementTc> getMktmailManagementTCList(MktmailManagementTc mktmailManagementTc);
-	Collection<MktmailManagementGoods> getMktmailManagementGoodsList(MktmailManagementGoods mktmailManagementGoods);
+	Collection<MktmailManagementGoods> getMktmailManagementGoodsList(MktmailManagementTc mktmailManagementTc);
 	/**
 	 * MKT메일 등록수정
 	 * @param  mailtemplate - 메일관련 정보
 	 * @author csh9191
-	 * @since 2021. 02. 03
+	 * @since 2021. 02. 13
 	 */
 	void saveMktMailDetail(MktmailManagement mktMailManagement);
 	
@@ -87,7 +87,7 @@ public interface TsaMailTemplateDao {
 	Collection<Goods> getMailGoodsInfo(Goods goods);
 	
 	/**
-	 * 메일헤더푸터 관리 목록
+	 * MKT메일 관리 목록
 	 * @param mailtemplate - 메일관련 정보
 	 * @return
 	 * @author csh9191
@@ -95,11 +95,35 @@ public interface TsaMailTemplateDao {
 	 */
 	Collection<MktmailManagement> getMktMailList(MktmailManagement mktMailManagement);
 	/**
-	 * 메일헤더푸터 리스트 삭제
-	 * @param  mailtemplate - 메일관련 정보
+	 * MKT메일 리스트 삭제
+	 * @param  mktmailManagement - 메일관련 정보
 	 * @author csh9191
 	 * @since 2021. 02. 15
 	 */
 	void deleteMktmailList(MktmailManagement mktMailManagement);
+	/**
+	 * MKT메일 구분자 삭제
+	 * @param  mktmailManagement - 메일관련 정보
+	 * @author csh9191
+	 * @since 2021. 02. 22
+	 */
+	void deleteMktCorner(MktmailManagementTc mktmailManagementTc);
+	/**
+	 * MKT메일 상품 삭제
+	 * @param  mktmailManagement - 메일관련 정보
+	 * @author csh9191
+	 * @since 2021. 02. 22
+	 */
+	void deleteMktGoodsList(MktmailManagementGoods mktmailManagementGoods);
+	/**
+	 * MKT 메일 미리보기
+	 * @param mktmailManagement - 메일관련 정보
+	 * @return
+	 * @author csh9191
+	 * @since 2021. 02. 19
+	 */
+	MktmailManagement getMktmailPreviewHeader(Integer mktMailManagement);
+	MktmailManagement getMktmailPreviewFooter(Integer mktMailManagement);
+	MktmailManagement getMktmailPreviewContent(Integer mktMailManagement);
 
 }

+ 109 - 38
src/main/java/com/style24/admin/biz/service/TsaMailTemplateService.java

@@ -101,8 +101,8 @@ public class TsaMailTemplateService {
 		return mailtempletDao.getMktmailManagementDetail(mailtSq);
 	}
 	/**
-	 * MKT메일관리 상세화면
-	 * @param mktmailManagement
+	 * MKT메일관리 구분자 상세화면
+	 * @param mktmailManagementTc
 	 * @return
 	 * @author csh9191
 	 * @since 2021. 02. 16
@@ -110,27 +110,32 @@ public class TsaMailTemplateService {
 	public Collection<MktmailManagementTc> getMktmailManagementTCList(Integer mailtSq) {
 		MktmailManagementTc mktmailManagementTc = new MktmailManagementTc();
 		mktmailManagementTc.setMailtSq(mailtSq);
+		
 		return mailtempletDao.getMktmailManagementTCList(mktmailManagementTc);
 	}
 	/**
-	 * MKT메일관리 상세화면
-	 * @param mktmailManagement
+	 * MKT메일관리 상품 상세화면
+	 * @param mktmailManagementTc
 	 * @return
 	 * @author csh9191
 	 * @since 2021. 02. 16
 	 */
 	public Collection<MktmailManagementGoods> getMktmailManagementGoodsList(Integer mailtcSq) {
-		MktmailManagementGoods mktmailManagementGoods = new MktmailManagementGoods();
-		mktmailManagementGoods.setMailtcSq(mailtcSq);
-		return mailtempletDao.getMktmailManagementGoodsList(mktmailManagementGoods);
+		MktmailManagementTc mktmailManagementTc = new MktmailManagementTc();
+		mktmailManagementTc.setMailtcSq(mailtcSq);
+		
+		log.info("mktmailManagementTc {}",mktmailManagementTc);
+		
+		return mailtempletDao.getMktmailManagementGoodsList(mktmailManagementTc);
 	}
 	
 	/**
 	 * MKT 상세 등록/수정
-	 * @param mailtemplate - 메일관련 정보
+	 * @param mktmailManagement - 메일관련 정보
 	 * @author csh9191
 	 * @since 2021. 02. 13
 	 */
+	@Transactional("shopTxnManager")
 	public GagaMap saveMktMailTemplate (MktmailManagement mktMailManagement) {
 		GagaMap result = new GagaMap();
 		
@@ -139,22 +144,27 @@ public class TsaMailTemplateService {
 		String mailtNm = mktMailManagement.getMailtNm();
 		String mailtGb = mktMailManagement.getMailtGb();
 		String mailContent = mktMailManagement.getMailContent();
-		
+		log.info("mailtSq {}",mktMailManagement.getMailtSq());
 		MktmailManagement mktmail = new MktmailManagement();
+
 		mktmail.setMktHeader(mailHsq);
 		mktmail.setMktFooter(mailFsq);
 		mktmail.setMailtNm(mailtNm);
 		mktmail.setMailtGb(mailtGb);
 		mktmail.setMailContent(mailContent);
+		mktmail.setRegNo(TsaSession.getInfo().getUserNo());
+		mktmail.setUpdNo(TsaSession.getInfo().getUserNo());
+		mktmail.setMailtSq(mktMailManagement.getMailtSq());
 		
-		//메일 헤더 푸터 타이틀 내용 등록
-		mailtempletDao.saveMktmailform(mktMailManagement); 
-		mktMailManagement.getMailtSq();
-		mktMailManagement.getMailtcSq();
+		log.info("mktmail : {}", mktMailManagement.getMailtSq());
 		
+		//메일 헤더 푸터 타이틀 내용 등록
+		mailtempletDao.saveMktmailform(mktmail); 
+
 		//구분자1 등록
 		for(MktmailManagementTc mktmailManagementTc : mktMailManagement.getMktmailManagementTc()) {
 			if(!StringUtils.isEmpty(mktmailManagementTc.getMailtcNm())) {
+				
 				String mailtcNm = mktmailManagementTc.getMailtcNm();
 				String mailtcLink = mktmailManagementTc.getMailtcLink();
 				int goodsCpr = mktmailManagementTc.getGoodsCpr();
@@ -166,13 +176,15 @@ public class TsaMailTemplateService {
 				mktmailtc.setMailtcNm(mailtcNm);
 				mktmailtc.setMailtcLink(mailtcLink);
 				mktmailtc.setGoodsCpr(goodsCpr);
-				mktmailtc.setMailtSq(mktMailManagement.getMailtSq());
+				mktmailtc.setMailtSq(mktmail.getMailtSq());
+				mktmailtc.setMailtcSq(mktmailManagementTc.getMailtcSq());	
+				
+				log.info("구분자1.getMailtcSq() : {}", mktmailManagementTc.getMailtcSq());
 				
 				mailtempletDao.saveMailTc(mktmailtc);
 				//grid1
 				for (MktmailManagementGoods mktmailManagementGoods : mktMailManagement.getMktmailManagementGoods()) {
 					
-					
 					String goodsCd = mktmailManagementGoods.getGoodsCd();
 					int dispOrd = mktmailManagementGoods.getDispOrd();
 	
@@ -183,6 +195,8 @@ public class TsaMailTemplateService {
 					mktmailGoods.setDispOrd(dispOrd);
 					mktmailGoods.setGoodsCd(goodsCd);
 					mktmailGoods.setMailtcSq(mktmailtc.getMailtcSq());
+					
+					log.info("그리드1.getMailtcSq() : {}", mktmailManagementTc.getMailtcSq());
 					//grid 데이터 등록
 					mailtempletDao.saveMailGoods(mktmailGoods);
 				}
@@ -196,7 +210,7 @@ public class TsaMailTemplateService {
 				String mailtcNm = mktmailManagementTc.getMailtcNm();
 				String mailtcLink = mktmailManagementTc.getMailtcLink();
 				int goodsCpr = mktmailManagementTc.getGoodsCpr();
-	
+
 				MktmailManagement mktmailtc = new MktmailManagement();
 	
 				mktmailtc.setRegNo(TsaSession.getInfo().getUserNo());
@@ -204,8 +218,11 @@ public class TsaMailTemplateService {
 				mktmailtc.setMailtcNm(mailtcNm);
 				mktmailtc.setMailtcLink(mailtcLink);
 				mktmailtc.setGoodsCpr(goodsCpr);
-				mktmailtc.setMailtSq(mktMailManagement.getMailtSq());
-	
+				mktmailtc.setMailtSq(mktmail.getMailtSq());
+				mktmailtc.setMailtcSq(mktmailManagementTc.getMailtcSq());	
+				
+				log.info("구분자2.getMailtcSq() : {}", mktmailManagementTc.getMailtcSq());
+				
 				mailtempletDao.saveMailTc(mktmailtc);
 				//grid2
 				for (MktmailManagementGoods mktmailManagementGoods : mktMailManagement.getMktmailManagementGoods2()) {
@@ -220,6 +237,8 @@ public class TsaMailTemplateService {
 					mktmailGoods.setDispOrd(dispOrd);
 					mktmailGoods.setGoodsCd(goodsCd);
 					mktmailGoods.setMailtcSq(mktmailtc.getMailtcSq());
+					
+					log.info("그리드2.getMailtcSq() : {}", mktmailtc.getMailtcSq());
 					//grid 데이터 등록
 					mailtempletDao.saveMailGoods(mktmailGoods);
 				}
@@ -232,7 +251,7 @@ public class TsaMailTemplateService {
 			String mailtcNm = mktmailManagementTc.getMailtcNm();
 			String mailtcLink = mktmailManagementTc.getMailtcLink();
 			int goodsCpr = mktmailManagementTc.getGoodsCpr();
-
+			
 			MktmailManagement mktmailtc = new MktmailManagement();
 
 			mktmailtc.setRegNo(TsaSession.getInfo().getUserNo());
@@ -240,8 +259,11 @@ public class TsaMailTemplateService {
 			mktmailtc.setMailtcNm(mailtcNm);
 			mktmailtc.setMailtcLink(mailtcLink);
 			mktmailtc.setGoodsCpr(goodsCpr);
-			mktmailtc.setMailtSq(mktMailManagement.getMailtSq());
-
+			mktmailtc.setMailtSq(mktmail.getMailtSq());
+			mktmailtc.setMailtcSq(mktmailManagementTc.getMailtcSq());	
+							
+			log.info("mktmailManagementTc : {}",mktmailManagementTc.getMailtcSq());
+			
 			mailtempletDao.saveMailTc(mktmailtc);
 			//grid3
 			for (MktmailManagementGoods mktmailManagementGoods : mktMailManagement.getMktmailManagementGoods3()) {
@@ -256,7 +278,8 @@ public class TsaMailTemplateService {
 				mktmailGoods.setDispOrd(dispOrd);
 				mktmailGoods.setGoodsCd(goodsCd);
 				mktmailGoods.setMailtcSq(mktmailtc.getMailtcSq());
-				//grid 데이터 등록
+				
+				log.info("그리드3.getMailtcSq() : {}", mktmailManagementTc.getMailtcSq());//grid 데이터 등록
 				mailtempletDao.saveMailGoods(mktmailGoods);
 			}
 			}
@@ -276,7 +299,11 @@ public class TsaMailTemplateService {
 			mktmailtc.setMailtcNm(mailtcNm);
 			mktmailtc.setMailtcLink(mailtcLink);
 			mktmailtc.setGoodsCpr(goodsCpr);
-			mktmailtc.setMailtSq(mktMailManagement.getMailtSq());
+			mktmailtc.setMailtSq(mktmail.getMailtSq());
+			mktmailtc.setMailtcSq(mktmailManagementTc.getMailtcSq());	
+							
+			log.info("mktmailManagementTc : {}",mktmailManagementTc.getMailtcSq());
+			
 			
 			mailtempletDao.saveMailTc(mktmailtc);
 			//grid4
@@ -284,19 +311,16 @@ public class TsaMailTemplateService {
 				
 				String goodsCd = mktmailManagementGoods.getGoodsCd();
 				int dispOrd = mktmailManagementGoods.getDispOrd();
-				
-				MktmailManagementTc mailTc = new MktmailManagementTc();
-				
-				int mailtcSq = mailTc.getMailtcSq();
-				log.info("mailtcSq={}", mailtcSq);
+
 				MktmailManagement mktmailGoods = new MktmailManagement();
 				
-				mktmailGoods.setMailtcSq(mailtcSq);
 				mktmailGoods.setRegNo(TsaSession.getInfo().getUserNo());
 				mktmailGoods.setUpdNo(TsaSession.getInfo().getUserNo());
 				mktmailGoods.setDispOrd(dispOrd);
 				mktmailGoods.setGoodsCd(goodsCd);
 				mktmailGoods.setMailtcSq(mktmailtc.getMailtcSq());
+				
+				log.info("그리드4.getMailtcSq() : {}", mktmailManagementTc.getMailtcSq());
 				//grid 데이터 등록
 				mailtempletDao.saveMailGoods(mktmailGoods);
 			}
@@ -309,7 +333,7 @@ public class TsaMailTemplateService {
 			String mailtcNm = mktmailManagementTc.getMailtcNm();
 			String mailtcLink = mktmailManagementTc.getMailtcLink();
 			int goodsCpr = mktmailManagementTc.getGoodsCpr();
-
+			
 			MktmailManagement mktmailtc = new MktmailManagement();
 
 			mktmailtc.setRegNo(TsaSession.getInfo().getUserNo());
@@ -317,8 +341,12 @@ public class TsaMailTemplateService {
 			mktmailtc.setMailtcNm(mailtcNm);
 			mktmailtc.setMailtcLink(mailtcLink);
 			mktmailtc.setGoodsCpr(goodsCpr);
-			mktmailtc.setMailtSq(mktMailManagement.getMailtSq());
-
+			mktmailtc.setMailtSq(mktmail.getMailtSq());
+			mktmailtc.setMailtcSq(mktmailManagementTc.getMailtcSq());	
+							
+			log.info("mktmailManagementTc : {}",mktmailManagementTc.getMailtcSq());
+			
+			
 			mailtempletDao.saveMailTc(mktmailtc);
 			
 			//grid5
@@ -334,6 +362,8 @@ public class TsaMailTemplateService {
 				mktmailGoods.setDispOrd(dispOrd);
 				mktmailGoods.setGoodsCd(goodsCd);
 				mktmailGoods.setMailtcSq(mktmailtc.getMailtcSq());
+				
+				log.info("그리드5.getMailtcSq() : {}", mktmailManagementTc.getMailtcSq());
 				//grid 데이터 등록
 				mailtempletDao.saveMailGoods(mktmailGoods);
 			}
@@ -346,14 +376,14 @@ public class TsaMailTemplateService {
 		return result;
 	}
 	
-	/* MKT 메일 전시 */
+	/* MKT 메일 상품전시 */
 	public Collection<Goods> getMailGoodsInfo(Goods goods) {
 		return mailtempletDao.getMailGoodsInfo(goods);
 	}
 	
 	/**
 	 * MKT메일관리 목록
-	 * @param mailtemplate - 메일관련 정보
+	 * @param mktmailManagement - 메일관련 정보
 	 * @return
 	 * @author csh9191
 	 * @since 2021. 02. 13
@@ -363,8 +393,8 @@ public class TsaMailTemplateService {
 	}
 	
 	/**
-	 * 메일헤더푸터 리스트 삭제
-	 * @param mailtemplate - 메일관련 정보
+	 * MKT메일 목록 삭제
+	 * @param mktmailManagement - 메일관련 정보
 	 * @author csh9191
 	 * @since 2021. 02. 15
 	 */
@@ -378,6 +408,47 @@ public class TsaMailTemplateService {
 			mailtempletDao.deleteMktmailList(mktmailManagement);
 		}
 	}
+	/**
+	 * MKT메일 구분자 삭제
+	 * @param mktmailManagementGoods 메일전시상품
+	 * @author csh9191
+	 * @since 2021. 02. 22
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteMktCorner(Collection<MktmailManagementTc> mktmailManagementTcList) {
+		for(MktmailManagementTc mktmailManagementTc : mktmailManagementTcList) {
+			mailtempletDao.deleteMktCorner(mktmailManagementTc);
+		}
+	}
 	
-
-}
+	/**
+	 * MKT메일 상품 삭제
+	 * @param mktmailManagementGoods 메일전시상품
+	 * @author csh9191
+	 * @since 2021. 02. 22
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteMktGoodsList(Collection<MktmailManagementGoods> mktmailManagementGoodsList) {
+		for(MktmailManagementGoods mktmailManagementGoods : mktmailManagementGoodsList) {
+			mailtempletDao.deleteMktGoodsList(mktmailManagementGoods);
+		}
+	}
+	
+	/**
+	 * MKT메일 미리보기
+	 * @param mktmailManagement - 메일관련 정보
+	 * @return
+	 * @author csh9191
+	 * @since 2021. 02. 19
+	 */
+	public MktmailManagement getMktmailPreviewHeader(Integer mktMailManagement) {
+		return mailtempletDao.getMktmailPreviewHeader(mktMailManagement);
+	}
+	public MktmailManagement getMktmailPreviewFooter(Integer mktMailManagement) {
+		return mailtempletDao.getMktmailPreviewFooter(mktMailManagement);
+	}
+	public MktmailManagement getMktmailPreviewContent(Integer mktMailManagement) {
+		return mailtempletDao.getMktmailPreviewContent(mktMailManagement);
+	}
+	
+}

+ 106 - 24
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -1095,20 +1095,9 @@ public class TsaMarketingController extends TsaBaseController {
 	 * @since 2021. 02. 08
 	 */
 	@GetMapping("/mktmailmanagement/detail/form")
-	public ModelAndView mktmailManagementDetailForm(MktmailManagement mktmailManagement) {
-		
-		ModelAndView mav = new ModelAndView();
-		
-		MktmailManagementTc mktmailManagementTc = new MktmailManagementTc();
-		
-		Integer mailtSq = mktmailManagement.getMailtSq();
-		Integer mailtcSq = mktmailManagementTc.getMailtcSq();
-		
-		log.info("mailtcSq : {}",mailtcSq);
-		log.info("mailtSq : {}",mailtSq);
-		
-		String mode = mktmailManagement.getMode();
+	public ModelAndView mktmailManagementDetailForm(@RequestParam(value = "mode") String mode, @RequestParam(value = "mailtSq", required = false) Integer mailtSq, @RequestParam(value = "mailtcSq", required = false) Integer mailtcSq) {
 		
+		ModelAndView mav = new ModelAndView();		
 		MailTemplate param = new MailTemplate();
 		
 		param.setMailhfGb("H");
@@ -1117,16 +1106,32 @@ public class TsaMarketingController extends TsaBaseController {
 		param.setMailhfGb("F");
 		mav.addObject("mailFsqList", mailTemplateService.getmailHFList(param));
 		
+		// 판매상태
+		String[] mailCds = {"G008_00"};		
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", mailCds));
+		
 		mav.addObject("mode", mode);
 		
 		if ("U".equals(mode)) {
 			
 			mav.addObject("mktmailInfo", mailTemplateService.getMktmailManagementDetail(mailtSq));
-			mav.addObject("mktmailTCInfo", mailTemplateService.getMktmailManagementTCList(mailtSq));
-			mav.addObject("mktmailGoodsInfo", mailTemplateService.getMktmailManagementGoodsList(mailtcSq));
 			
-			log.info("mktmailTCInfo : {}",mailTemplateService.getMktmailManagementTCList(mailtSq));
-			log.info("mktmailGoodsInfo : {}",mailTemplateService.getMktmailManagementGoodsList(mailtcSq));
+			Collection<GagaMap> mapList = new ArrayList();
+			Collection<MktmailManagementTc> tcList = mailTemplateService.getMktmailManagementTCList(mailtSq);
+			log.info("tcList {}",tcList);
+			for (MktmailManagementTc tmp : tcList) {
+				Collection<MktmailManagementGoods> goodsList = mailTemplateService.getMktmailManagementGoodsList(tmp.getMailtcSq());
+				
+				GagaMap map = new GagaMap();
+				map.set("goodsList", goodsList);
+				map.set("tc", tmp);
+				
+				log.info("goodsList {}",goodsList);
+				log.info("tc {}",tmp);
+				mapList.add(map);
+			}
+			
+			mav.addObject("mktmailTCInfo", mapList);
 		}
 		
 		mav.setViewName("marketing/MktmailmanagementDetailForm");
@@ -1144,7 +1149,7 @@ public class TsaMarketingController extends TsaBaseController {
 	
 	@PostMapping("/mktMailManagement/goods/info")
 	@ResponseBody
-	public Collection<Goods> getOrderSampleGoodsInfo(@RequestBody String[] arrGoodsCd) {
+	public Collection<Goods> getMailGoodsInfo(@RequestBody String[] arrGoodsCd) {
 		Goods goods = new Goods();
 		goods.setArrGoodsCd(arrGoodsCd);
 		
@@ -1160,13 +1165,13 @@ public class TsaMarketingController extends TsaBaseController {
 	 */
 	@PostMapping("/mktMailManagement/save")
 	@ResponseBody
-	public GagaMap saveMktMailTemplate(@RequestBody MktmailManagement mktmailManagement){
+	public GagaMap saveMktMailTemplate(@RequestBody MktmailManagement mktMailManagement){
 		GagaMap result = new GagaMap();
-		mktmailManagement.setRegNo(TsaSession.getInfo().getUserNo());
-		mktmailManagement.setUpdNo(TsaSession.getInfo().getUserNo());
+		
 		result.set("status", GagaResponseStatus.FAIL.getCode());
+		log.info("mailtSq {}",mktMailManagement.getMailtSq());
+		result = mailTemplateService.saveMktMailTemplate(mktMailManagement);
 
-		result = mailTemplateService.saveMktMailTemplate(mktmailManagement);
 		result.set("message", message.getMessage("SUCC_0001"));
 		return result;
 	}
@@ -1184,8 +1189,8 @@ public class TsaMarketingController extends TsaBaseController {
 		return mailTemplateService.getMktMailList(mktmailManagement);
 	}
 	/**
-	 * 메일헤더푸터 리스트 삭제
-	 * @param 메일헤더푸터관리 - 메일헤더푸더 정보
+	 * MKT메일관리 목록 삭제
+	 * @param 
 	 * @return
 	 * @author csh9191	
 	 * @since 2021. 02. 15
@@ -1197,6 +1202,83 @@ public class TsaMarketingController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
 	
+	/**
+	 * MKT메일관리 코너(구분) 삭제
+	 * @param 
+	 * @return
+	 * @author csh9191	
+	 * @since 2021. 02. 22
+	 */
+	@PostMapping("/mktmailManagement/corner/delete")
+	@ResponseBody
+	public GagaMap deleteMktCorner(@RequestBody Collection<MktmailManagementTc> mktmailManagementTcList) {
+		GagaMap result = new GagaMap();
+		mailTemplateService.deleteMktCorner(mktmailManagementTcList);
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		return result;
+
+	}
+
+	/**
+	 * MKT메일관리 상품 삭제
+	 * @param 
+	 * @return
+	 * @author csh9191	
+	 * @since 2021. 02. 22
+	 */
+	@PostMapping("/mktmailManagement/goods/delete")
+	@ResponseBody
+	public GagaResponse deleteMktGoods(@RequestBody Collection<MktmailManagementGoods> mktmailManagementGoodsList) {		
+		mailTemplateService.deleteMktGoodsList(mktmailManagementGoodsList);
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
+
+	
+	/**
+	 * MKT메일관리 미리보기
+	 * @param 
+	 * @return
+	 * @author csh9191	
+	 * @since 2021. 02. 19
+	 */
+	@GetMapping("/mktmailmanagement/preview")
+	@ResponseBody
+	public ModelAndView MktmailmanagementPreview(@RequestParam(value = "mailtSq", required = false) Integer mailtSq) {
+
+		ModelAndView mav = new ModelAndView();
+		
+		//헤더
+		mav.addObject("mktmailPreviewHeader", mailTemplateService.getMktmailPreviewHeader(mailtSq));
+		//푸터
+		mav.addObject("mktmailPreviewFooter", mailTemplateService.getMktmailPreviewFooter(mailtSq));
+		//내용
+		mav.addObject("mktmailPreviewContent", mailTemplateService.getMktmailPreviewContent(mailtSq));
+		
+		// 판매상태
+		String[] mailCds = {"G008_00"};		
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", mailCds));		
+		
+		Collection<GagaMap> mapList = new ArrayList();
+		Collection<MktmailManagementTc> tcList = mailTemplateService.getMktmailManagementTCList(mailtSq);
+		log.info("tcList 1263LINE {}",tcList);
+			for (MktmailManagementTc tmp : tcList) {
+				Collection<MktmailManagementGoods> goodsList = mailTemplateService.getMktmailManagementGoodsList(tmp.getMailtcSq());
+				
+				GagaMap map = new GagaMap();
+				map.set("goodsList", goodsList);
+				map.set("tc", tmp);
+				
+				log.info("goodsList {}",goodsList);
+				log.info("tc {}",tmp);
+				mapList.add(map);
+			}
+		
+		mav.addObject("mktmailPreviewGoods", mapList);
+		
+		mav.setViewName("marketing/MktmailmanagementPreviewForm");
+
+		return mav;
+	}
 	/* // CSB 진행 */
 
 	/**

+ 10 - 4
src/main/java/com/style24/persistence/domain/MktmailManagement.java

@@ -1,6 +1,5 @@
 package com.style24.persistence.domain;
 
-import java.util.Collection;
 import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -23,6 +22,8 @@ public class MktmailManagement extends TscBaseDomain{
 	private Integer mailtSq; 				// 메일템플릿 번호
 	private String mailtNm;					// 메일템플릿 명
 	private String mailtGb;					// 메일템플릿 구분
+	private Integer mailHsq;
+	private Integer mailFsq;	
 	private Integer mktHeader;				// 메일헤더 일련번호
 	private Integer mktFooter;				// 메일푸터 일련번호
 	private String mailContent;				// 메일 내용
@@ -55,6 +56,7 @@ public class MktmailManagement extends TscBaseDomain{
 	List<MktmailManagementTc> mktmailManagementTc4; 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	List<MktmailManagementTc> mktmailManagementTc5; 
+	
 	// 메일 템플릿 코너 
 	private Integer mailtcSq;				// 메일템플릿 코너번호
 	private String mailtcNm;				// 메일템플릿 코너명
@@ -62,13 +64,17 @@ public class MktmailManagement extends TscBaseDomain{
 	private String mailtcLink;				// 메일템플릿 코너 링크
 	
 	//상품정보
-	private String brandKnm;				// 브랜드명
-	private String goodNms;					// 상품명
-	private String cdNm;					// 판매상태
+	private String brandEnm;				// 브랜드명
+	private String goodsNm;					// 상품명
+	private String goodsStat;				// 판매상태
 	private String listPrice;				// 정상가
 	private String currPrice;				// 판매가
 	private String goodsCd;					// 상품코드(상품)
 	private Integer dispOrd;				// 표시순서
+	
+	//미리보기
+	private String mailhfContent;			//메잃 헤더 푸터 정보
+	
 
 
 	

+ 3 - 2
src/main/java/com/style24/persistence/domain/MktmailManagementGoods.java

@@ -16,6 +16,7 @@ public class MktmailManagementGoods extends TscBaseDomain{
 	
 	// 메일 템플릿 코너 상품
 	private Integer mailtcSq;				// 메일템플릿코너 일련번호
+	private Integer mailtSq;				// 메일템플릿 일련번호
 	private String goodsCd;					// 상품코드(상품)
 	private Integer dispOrd;				// 표시순서
 	private String regDt;					// 등록일시
@@ -23,8 +24,8 @@ public class MktmailManagementGoods extends TscBaseDomain{
 	
 	//상품정보
 	private String brandEnm;				// 브랜드명
-	private String goodNms;					// 상품명
-	private String cdNm;					// 판매상태
+	private String goodsNm;					// 상품명
+	private String goodsStat;				// 판매상태
 	private String listPrice;				// 정상가
 	private String currPrice;				// 판매가
 

+ 85 - 43
src/main/java/com/style24/persistence/mybatis/shop/TsaMailTemplate.xml

@@ -52,7 +52,7 @@
 		     , NOW()
 		)
 		ON DUPLICATE KEY UPDATE
-		        MAILHF_SQ = #{mailhfSq}
+		       MAILHF_SQ = #{mailhfSq}
 		     , MAILHF_NM = #{mailhfNm}
 		     , MAILHF_GB = #{mailhfGb}
 		     , MAILHF_CONTENT = #{mailhfContent}
@@ -80,24 +80,12 @@
 		<select id="getMailGoodsInfo" parameterType="Goods" resultType="Goods">
 		/*메일 템플릿 상품 전시*/
 		SELECT GOODS_CD
-		     , GOODS_NM
 		     , BRAND_ENM 
-		     , STOCK_QTY_SUM
+		     , GOODS_NM
 	         , GOODS_STAT
-	         , STYLE_YEAR
-		     , SEASON_CD
 	         , LIST_PRICE
 	         , CURR_PRICE
-	         , PRICE_UPD_DT
-	         , ERP_STOCK_LINK_YN
-	         , FORMAL_GB
-	         , RETURNABLE_YN
-	         , REG_DT
-	         , REG_NM
-		     , UPD_DT
-	         , UPD_NM
-	         , REP_GOODS_CD
-		     , GROUP_CONCAT(OPT_CD2 ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',')        AS SITE_CD
+		     , GROUP_CONCAT(OPT_CD2 ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',')  AS SITE_CD
 	      FROM (
 		SELECT   GI.SYS_IMG_NM
 			   , G.GOODS_CD
@@ -141,8 +129,7 @@
 				   , UPD_DT, UPD_NM, REP_GOODS_CD
 		</select>
 	
-	
-		<insert id="saveMktmailform" parameterType="MktmailManagement" keyProperty="mailtSq">
+		<insert id="saveMktmailform" parameterType="mktMailManagement" keyProperty="mailtSq">
 		/* TsaMailTemplate.saveMktmailform   mkt메일 등록/수정 */
 		INSERT INTO TB_MAILT (
 				    MAILT_SQ
@@ -247,27 +234,27 @@
 		
 		<select id="getMktMailList" parameterType="MktmailManagement" resultType="MktmailManagement">
 		/* TsaMailTemplate.getMktMailList mkt메일 조회*/
-		SELECT MAILT_SQ
-			 , MAILT_GB
-			 , MAILT_NM
-			 , FN_GET_USER_NM(REG_NO)             AS REG_NM
-			 , DATE_FORMAT(REG_DT,'%Y%m%d%H%i%S') AS REG_DT
-			 , FN_GET_USER_NM(UPD_NO)             AS UPD_NM
-			 , DATE_FORMAT(UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
-		FROM   TB_MAILT 
-		WHERE  USE_YN = 'Y'
+		SELECT 		   TM.MAILT_SQ
+					 , TM.MAILT_GB
+					 , TM.MAILT_NM
+					 , FN_GET_USER_NM(TM.REG_NO)             AS REG_NM
+					 , DATE_FORMAT(TM.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
+					 , FN_GET_USER_NM(TM.UPD_NO)             AS UPD_NM
+					 , DATE_FORMAT(TM.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
+		FROM    	   TB_MAILT TM
+		WHERE  		   TM.USE_YN = 'Y'
 		<if test="mktmailStdt != null and mktmailStdt != '' and mktmailEddt != null and mktmailEddt != ''">
-		AND  REG_DT BETWEEN STR_TO_DATE(#{mktmailStdt}, '%Y-%m-%d%H%i%S') AND STR_TO_DATE(CONCAT(#{mktmailEddt}, '235959'),'%Y-%m-%d%H%i%S')
+		AND  TM.REG_DT BETWEEN STR_TO_DATE(#{mktmailStdt}, '%Y-%m-%d%H%i%S') AND STR_TO_DATE(CONCAT(#{mktmailEddt}, '235959'),'%Y-%m-%d%H%i%S')
 		</if> 
 		<if test="searchTxt != null and searchTxt != ''">
 			<if test="searchGb != null and searchGb == 'mailtSq'">
-				AND MAILT_SQ = #{searchTxt}
+				AND TM.MAILT_SQ = #{searchTxt}
 			</if>
 			<if test="searchGb != null and searchGb == 'mailtNm'">
-				AND MAILT_NM LIKE CONCAT('%',LOWER(#{searchTxt}), '%')
+				AND TM.MAILT_NM LIKE CONCAT('%',LOWER(#{searchTxt}), '%')
 			</if>
 		</if>
-		ORDER BY MAILT_SQ
+		ORDER BY TM.MAILT_SQ
 		</select>
 		
 		<select id="getMktmailManagementDetail" parameterType="Integer" resultType="MktmailManagement">
@@ -282,26 +269,39 @@
 		WHERE  MAILT_SQ = #{mailtSq}
 		</select>
 		
-		<select id="getMktmailManagementTCList" parameterType="Integer" resultType="MktmailManagement">
+		<select id="getMktmailManagementTCList" parameterType="MktmailManagementTc" resultType="MktmailManagementTc">
 		/* TsaMailTemplate.getMktmailManagementTCDetail */
-		SELECT MAILTC_SQ
-			 , MAILT_SQ	
-			 , MAILTC_NM
-			 , GOODS_CPR	
-			 , MAILTC_LINK
-		FROM   TB_MAILTC
-		WHERE  MAILT_SQ = #{mailtSq}
+		SELECT 		TC.MAILTC_SQ
+			 	  , TC.MAILT_SQ	
+			 	  , TC.MAILTC_NM
+			  	  , TC.GOODS_CPR	
+			 	  , TC.MAILTC_LINK
+		FROM   		TB_MAILTC TC
+		INNER JOIN 	TB_MAILT TM
+		ON 			TM.MAILT_SQ = TC.MAILT_SQ 
+		WHERE  		TC.MAILT_SQ = #{mailtSq}
+		AND	  		TC.USE_YN = "Y"
 		</select>
 		
-		<select id="getMktmailManagementGoodsList" parameterType="Integer" resultType="MktmailManagement">
+		<select id="getMktmailManagementGoodsList" parameterType="MktmailManagementTc" resultType="MktmailManagementGoods">
 		/* TsaMailTemplate.getMktmailManagementGoodsList */
-		SELECT  	TG.MAILTC_SQ,
-					TG.GOODS_CD,
-					TG.DISP_ORD
+		 SELECT		TG.MAILTC_SQ
+				  , TG.GOODS_CD
+			      , TBRAND.BRAND_ENM 
+			      , tbg.GOODS_NM 
+			      , TBG.GOODS_STAT
+			      , TBG.LIST_PRICE 
+			      , TBG.CURR_PRICE
+			      , TG.DISP_ORD
 		FROM 		TB_MAILTC_GOODS TG
 		INNER JOIN  TB_MAILTC TC
-		ON 			TG.MAILTC_SQ = TC.MAILTC_SQ 
+		ON 			TC.MAILTC_SQ = TG.MAILTC_SQ 
+		INNER JOIN  tb_goods TBG
+		ON 			TBG.GOODS_CD = TG.GOODS_CD 
+		INNER JOIN 	tb_brand TBRAND
+		ON		    TBRAND.BRAND_CD = TBG.BRAND_CD
 		WHERE 		TC.MAILTC_SQ = #{mailtcSq}
+		ORDER  BY 	TG.DISP_ORD
 		</select>
 		
 		<update id='deleteMktmailList' parameterType='MktmailManagement'>
@@ -310,5 +310,47 @@
 	  	SET     USE_YN = 'N'
 		WHERE   MAILT_SQ = #{mailtSq}
 		</update>
+		
+		<delete id="deleteMktCorner" parameterType='MktmailManagementTc'>
+		/* TsaMailTemplate.deleteMktCorner 코너 삭제*/
+		UPDATE  TB_MAILTC
+		SET		USE_YN = 'N'
+		WHERE	MAILTC_SQ = #{mailtcSq}
+		</delete>
+		
+		<delete id="deleteMktGoodsList" parameterType='MktmailManagementGoods'>
+		/* TsaMailTemplate.deleteMktGoods 상품 삭제*/
+		DELETE 	
+		FROM	TB_MAILTC_GOODS
+		WHERE	MAILTC_SQ = #{mailtcSq}
+		</delete>
+		
+		<select id="getMktmailPreviewHeader" parameterType="Integer" resultType="MktmailManagement">
+		/* TsaMailTemplate.getMktmailPreviewHeader */
+		SELECT 		HF.MAILHF_CONTENT
+		FROM   		TB_MAILT TM
+		INNER JOIN  TB_MAILHF HF
+		ON 	  		TM.MAILH_SQ = HF.MAILHF_SQ
+		WHERE 		HF.MAILHF_GB = 'H'
+		AND 		TM.MAILT_SQ = #{mailtSq}
+		</select>
+		
+		<select id="getMktmailPreviewFooter" parameterType="Integer" resultType="MktmailManagement">
+		/* TsaMailTemplate.getMktmailPreviewFooter */
+		SELECT 		HF.MAILHF_CONTENT
+		FROM   		TB_MAILT TM
+		INNER JOIN  TB_MAILHF HF
+		ON 	  		TM.MAILF_SQ = HF.MAILHF_SQ
+		WHERE 		HF.MAILHF_GB = 'F'
+		AND 		TM.MAILT_SQ = #{mailtSq}
+		</select>
+		
+		<select id="getMktmailPreviewContent" parameterType="MktmailManagement" resultType="MktmailManagement">
+		/* TsaMailTemplate.getMktmailPreviewContent */
+		SELECT 		MAILT_NM
+				  , MAIL_CONTENT
+		FROM		TB_MAILT
+		WHERE 		MAILT_SQ =   #{mailtSq}
+		</select>
 	
 </mapper>

+ 378 - 157
src/main/webapp/WEB-INF/views/marketing/MktmailmanagementDetailForm.html

@@ -36,9 +36,13 @@
 					<tbody>
 						<tr>
 							<th>메일번호</th>
-							<td>
+							<td class="left"  th:if="${mode  == 'N' }">
+								<input type="text" name="mailtSq" maxlength="20" placeholder="자동생성" readonly="readonly"/>
+							</td>
+							<td class="left"  th:if="${mode  == 'U' }">
 								<input type="text" name="mailtSq" maxlength="20" placeholder="자동생성" readonly="readonly"/>
 							</td>
+							
 						</tr>
 						<tr>
 							<th>메일구분</th>
@@ -51,8 +55,8 @@
 							<th>헤더</th>
 							<td>
 								<select name="mailHsq">
-									<option>선택하기 ▼</option>
-									<option th:if="${mailHsqList}" th:each="oneData, status : ${mailHsqList}" th:value="|${oneData.mailhfSq}|" th:text="|${oneData.mailhfNm}|" selected="selected"></option>
+									<option value="0">선택하기 ▼</option>
+									<option th:if="${mailHsqList}" th:each="oneData, status : ${mailHsqList}" th:value="|${oneData.mailhfSq}|" th:text="|${oneData.mailhfNm}|"></option>
 								</select>
 							</td>
 						</tr>
@@ -60,8 +64,8 @@
 							<th>푸터</th>
 							<td>
 								<select name="mailFsq">
-										<option>선택하기 ▼</option>
-										<option th:if="${mailFsqList}" th:each="oneData, status : ${mailFsqList}" th:value="|${oneData.mailhfSq}|" th:text="|${oneData.mailhfNm}|" selected="selected"></option>
+										<option value="0">선택하기 ▼</option>
+										<option th:if="${mailFsqList}" th:each="oneData, status : ${mailFsqList}" th:value="|${oneData.mailhfSq}|" th:text="|${oneData.mailhfNm}|"></option>
 								</select>
 							</td>
 						</tr>
@@ -100,13 +104,13 @@
 							<p>상품은 구분자 당 최대 40 개 까지만 등록하실 수 있습니다.</p>
 						</li>
 						<li class="right">
-							<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddGrid" onclick="btnAddGrid();">구분추가하기</button>
+							<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddGrid">구분추가하기</button>
 						</li>
 					</ul>
 						<!-- 구분 1 -->
 						<div class="inner-panelContent" id="btnAddGridNum" style="display:none;">
-							<input type="hidden" name="btnAddGridNumUseYn"  value ="Y">
-							<input type="hidden" name="mailtcSq">
+							<input type="hidden" name="mailtcSq" th:value="${mailtcSq}">
+							<input type="hidden" name="mailtSq" th:value="${mailtSq}">
 							<div class="panelContent">
 								<table class="frmStyle">
 									<colgroup>
@@ -115,7 +119,7 @@
 									</colgroup>
 									<tr>
 										<th>상품 구분 1<br>
-											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum();">구분 삭제</button>
+											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum('');">구분 삭제</button>
 										</th>
 										<td>
 											<div class="">
@@ -123,13 +127,13 @@
 													<tr>
 														<th class="w100">구분자 명</th>
 														<td>
-															<input type="text" name="mailtcNm"/>								
+															<input type="text" name="mailtcNm" maxlength="50"/>
 														</td>
 													</tr>
 													<tr>
 														<th>링크</th>
 														<td>
-															<input type="text" name="mailtcLink"/>								
+															<input type="text" name="mailtcLink"/>
 														</td>
 													</tr>
 													<tr>
@@ -170,7 +174,8 @@
 						
 						<!-- 구분2 -->
 						<div class="inner-panelContent" id="btnAddGridNum2" style="display:none;">
-							<input type="hidden" name="btnAddGridNum2UseYn" value="Y">
+							<input type="hidden" name="mailtSq" th:value="${mailtSq}">
+							<input type="hidden" name="mailtcSq2" th:value="${mailtcSq}">
 							<div class="panelContent">
 								<table class="frmStyle">
 									<colgroup>
@@ -187,7 +192,7 @@
 													<tr>
 														<th class="w100">구분자 명</th>
 														<td>
-															<input type="text" name="mailtcNm2"/>
+															<input type="text" name="mailtcNm2" maxlength="50"/>
 														</td>
 													</tr>
 													<tr>
@@ -227,7 +232,7 @@
 						
 						<!-- 구분3 -->
 						<div class="inner-panelContent" id="btnAddGridNum3" style="display:none;">
-							<input type="hidden" name="btnAddGridNum3UseYn" value="Y">
+							<input type="hidden" name="mailtcSq3" th:value="${mailtcSq}">
 							<div class="panelContent">
 								<table class="frmStyle">
 									<colgroup>
@@ -236,7 +241,7 @@
 									</colgroup>
 									<tr>
 										<th>상품 구분 3<br><br>
-											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum3('gridOptions_c3');">구분 삭제</button>
+											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum3();">구분 삭제</button>
 										</th>
 										<td>
 											<div class="">
@@ -244,7 +249,7 @@
 													<tr>
 														<th class="w100">구분자 명</th>
 														<td>
-															<input type="text" name="mailtcNm3"/>								
+															<input type="text" name="mailtcNm3" maxlength="50"/>								
 														</td>
 													</tr>
 													<tr>
@@ -284,7 +289,7 @@
 						
 						<!-- 구분4 -->
 						<div class="inner-panelContent" id="btnAddGridNum4" style="display:none;">
-							<input type="hidden" name="btnAddGridNum4UseYn" value="Y">
+							<input type="hidden" name="mailtcSq4" th:value="${mailtcSq}">
 							<div class="panelContent">
 								<table class="frmStyle">
 									<colgroup>
@@ -293,7 +298,7 @@
 									</colgroup>
 									<tr>
 										<th>상품 구분 4<br><br>
-											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum4('gridOptions_c4');">구분 삭제</button>
+											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum4();">구분 삭제</button>
 										</th>
 										<td>
 											<div class="">
@@ -301,7 +306,7 @@
 													<tr>
 														<th class="w100">번호</th>
 														<td>
-															<input type="text" name="mailtcNm4"/>								
+															<input type="text" name="mailtcNm4" maxlength="50"/>								
 														</td>
 													</tr>
 													<tr>
@@ -341,7 +346,7 @@
 						
 						<!-- 구분5 -->
 						<div class="inner-panelContent" id="btnAddGridNum5" style="display:none;">
-							<input type="hidden" name="btnAddGridNum5UseYn" value="Y">
+						<input type="hidden" name="mailtcSq5" th:value="${mailtcSq}">
 							<div class="panelContent">
 								<table class="frmStyle">
 									<colgroup>
@@ -350,7 +355,7 @@
 									</colgroup>
 									<tr>
 										<th>상품 구분 5<br><br>
-											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum5('gridOptions_c5');">구분 삭제</button>
+											<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum5();">구분 삭제</button>
 										</th>
 										<td>
 											<div class="">
@@ -358,7 +363,7 @@
 													<tr>
 														<th class="w100">구분자 명</th>
 														<td>
-															<input type="text" name="mailtcNm5"/>								
+															<input type="text" name="mailtcNm5" maxlength="50"/>								
 														</td>
 													</tr>
 													<tr>
@@ -414,7 +419,7 @@
 		<!-- //버튼 배치 영역 -->
 				</form>
 		</div>
-	</div>//
+	</div>
 </div>
 
 <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020102902"></script>
@@ -425,7 +430,7 @@
 		let mode = [[${mode}]]; 
 		let mktmailInfo = [[${mktmailInfo}]];
 		let mktmailTCInfo = [[${mktmailTCInfo}]];
-		let mktmailGoodsInfo = [[${mktmailGoodsInfo}]];
+		let goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
 		
 		//팝업창 삭제버튼
 		$('#btndeleteMktmail').on('click', function() {
@@ -438,17 +443,22 @@
 			});
 		});
 		
-		//상품 전시 그리드 그리기
+		//그리드 그리기
 		var columnDefs = [
 			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 			{headerName: "Product ID", field: "goodsCd" , width: 120, cellClass: 'text-center'},
 			{headerName: "브랜드명", field: "brandEnm" , width: 200, cellClass: 'text-center'},
-			{headerName: "상품명", field: "goodNms" , width: 200, cellClass: 'text-center'},
-			{headerName: "판매상태", field: "cdNm" , width: 100, cellClass: 'text-center'	},
+			{headerName: "상품명", field: "goodsNm" , width: 200, cellClass: 'text-center'},
+			{headerName: "판매상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
+				cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
+				valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
+				valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
+			},
 			{headerName: "정상가", field: "listPrice" , width: 120, cellClass: 'text-center'},
 			{headerName: "판매가", field: "listPrice" , width: 120, cellClass: 'text-center'},
 			{headerName: "순번", field: "dispOrd" , width: 120, cellClass: 'text-center'}
-		]
+		];
+		
 		
 		// Add on options
 		var gridOptions_c1 = gagaAgGrid.getGridOptions(columnDefs);
@@ -463,6 +473,13 @@
 		gridOptions_c3.defaultColDef.editable = true;
 		gridOptions_c4.defaultColDef.editable = true;
 		gridOptions_c5.defaultColDef.editable = true;
+		//중복선택
+		gridOptions_c1.rowSelection = 'multiple';
+		gridOptions_c2.rowSelection = 'multiple';
+		gridOptions_c3.rowSelection = 'multiple';
+		gridOptions_c4.rowSelection = 'multiple';
+		gridOptions_c5.rowSelection = 'multiple';
+		
 		gridOptions_c1.suppressRowClickSelection = true;
 		gridOptions_c2.suppressRowClickSelection = true;
 		gridOptions_c3.suppressRowClickSelection = true;
@@ -471,7 +488,7 @@
 		
 		///저장
 		$('#btnSaveMktMail').on('click', function() {
-		
+			
 			//타이틀 길이 제한 2자 이상 50자미만
 			var check = $('#mailManagementForm input[name=mailtNm]').val();
 
@@ -486,35 +503,74 @@
 			let arrayData4 = gagaAgGrid.getAllRowData(gridOptions_c4)
 			let arrayData5 = gagaAgGrid.getAllRowData(gridOptions_c5)
 			
-			let mailTc = {};
-	
-			mailTc.mailtcNm = $('#mailManagementForm input[name=mailtcNm]').val();
-			mailTc.mailtcLink = $('#mailManagementForm input[name=mailtcLink]').val();
-			mailTc.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr]:checked').val();
-			
- 			let mailTc2 = {};
-			
-			mailTc2.mailtcNm = $('#mailManagementForm input[name=mailtcNm2]').val();
-			mailTc2.mailtcLink = $('#mailManagementForm input[name=mailtcLink2]').val();
-			mailTc2.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr2]:checked').val();
+
+			//상품 등록 CHECK
+			if(arrayData.length == 0 && $('#btnAddGridNum').css('display') != 'none'){
+				mcxDialog.alert('구분자1의 상품을 등록해주세요.');
+				return false;
+			}
+			if(arrayData2.length == 0 && $('#btnAddGridNum2').css('display') != 'none'){
+				mcxDialog.alert('구분자2의 상품을 등록해주세요.');
+				return false;
+			}
+			if(arrayData3.length == 0 && $('#btnAddGridNum3').css('display') != 'none'){
+				mcxDialog.alert('구분자3의 상품을 등록해주세요.');
+				return false;
+			}
+			if(arrayData4.length == 0 && $('#btnAddGridNum4').css('display') != 'none'){
+				mcxDialog.alert('구분자4의 상품을 등록해주세요.');
+				return false;
+			}
+			if(arrayData5.length == 0 && $('#btnAddGridNum5').css('display') != 'none'){
+				mcxDialog.alert('구분자5의 상품을 등록해주세요.');
+				return false;
+			}
 			
+			let check1 = $('#mailManagementForm input[name=mailtcNm]').val();
+			let check2 = $('#mailManagementForm input[name=mailtcNm2]').val();
+			let check3 = $('#mailManagementForm input[name=mailtcNm3]').val();
+			let check4 = $('#mailManagementForm input[name=mailtcNm4]').val();
+			let check5 = $('#mailManagementForm input[name=mailtcNm5]').val();
+
+			let mailTc = {};
+			let mailTc2 = {};
 			let mailTc3 = {};
-			
-			mailTc3.mailtcNm = $('#mailManagementForm input[name=mailtcNm3]').val();
-			mailTc3.mailtcLink = $('#mailManagementForm input[name=mailtcLink3]').val();
-			mailTc3.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr3]:checked').val();
-			
 			let mailTc4 = {};
-			
-			mailTc4.mailtcNm = $('#mailManagementForm input[name=mailtcNm4]').val();
-			mailTc4.mailtcLink = $('#mailManagementForm input[name=mailtcLink4]').val();
-			mailTc4.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr4]:checked').val();
-			
 			let mailTc5 = {};
 			
-			mailTc5.mailtcNm = $('#mailManagementForm input[name=mailtcNm5]').val();
-			mailTc5.mailtcLink = $('#mailManagementForm input[name=mailtcLink5]').val();
-			mailTc5.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr5]:checked').val();
+			if(check1 != null && check1 != '') {
+				mailTc.mailtcNm = $('#mailManagementForm input[name=mailtcNm]').val();
+				mailTc.mailtcLink = $('#mailManagementForm input[name=mailtcLink]').val();
+				mailTc.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr]:checked').val();
+				mailTc.mailtSq = $('#mailManagementForm input[name=mailtSq]').val();
+				mailTc.mailtcSq = $('#mailManagementForm input[name=mailtcSq]').val();
+			} if(check2 != null && check2 != '') {
+				mailTc2.mailtcNm = $('#mailManagementForm input[name=mailtcNm2]').val();
+				mailTc2.mailtcLink = $('#mailManagementForm input[name=mailtcLink2]').val();
+				mailTc2.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr2]:checked').val();
+				mailTc2.mailtcSq = $('#mailManagementForm input[name=mailtcSq2]').val();
+
+			} if(check3 != null && check3 != '') {
+				mailTc3.mailtcNm = $('#mailManagementForm input[name=mailtcNm3]').val();
+				mailTc3.mailtcLink = $('#mailManagementForm input[name=mailtcLink3]').val();
+				mailTc3.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr3]:checked').val();
+				mailTc3.mailtcSq = $('#mailManagementForm input[name=mailtcSq3]').val();
+
+			} if(check4 != null && check4 != '') {
+				mailTc4.mailtcNm = $('#mailManagementForm input[name=mailtcNm4]').val();
+				mailTc4.mailtcLink = $('#mailManagementForm input[name=mailtcLink4]').val();
+				mailTc4.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr4]:checked').val();
+				mailTc4.mailtcSq = $('#mailManagementForm input[name=mailtcSq4]').val();
+
+				
+			} if(check5!= null && check5 != '') {
+				mailTc5.mailtcNm = $('#mailManagementForm input[name=mailtcNm5]').val();
+				mailTc5.mailtcLink = $('#mailManagementForm input[name=mailtcLink5]').val();
+				mailTc5.goodsCpr = $('#mailManagementForm input:radio[name=goodsCpr5]:checked').val();
+				mailTc5.mailtcSq = $('#mailManagementForm input[name=mailtcSq5]').val();
+
+			}
+		 	
 			
 			//헤더 선택체크 내용 체크
 			if(!gagajf.validation('#mailManagementForm'))
@@ -524,39 +580,35 @@
 				mcxDialog.alert('내용을 입력해 주세요.');
 				return false;
 			}
-			
-			if($('#btnAddGridNum').css('display') != 'none'){
-				if(gagajf.isNull($('#mailManagementForm input[name=mailtcNm]').val())){
-					mcxDialog.alert('구분자명을 입력해 주세요.');
-					return false;
-				}
-				var check = $('#mailManagementForm input[name=mailtcNm]').val();
-				
-				if(check.length < 2){
-					mcxDialog.alert('구분자명은 2자 이상 50자 미만으로 입력하세요.');
-					return false;
-				}
-				
-			}else if($('#btnAddGridNum2').css('display') != 'none'){
-				if(gagajf.isNull($('#mailManagementForm input[name=mailtcNm2]').val())){
-					mcxDialog.alert('구분자명을 입력해 주세요.');
-					return false;
-				}
-				var check = $('#mailManagementForm input[name=mailtcNm2]').val();
-				
-				if(check.length < 2){
-					mcxDialog.alert('구분자명은 2자 이상 50자 미만으로 입력하세요.');
-					return false;
-				}
-			}
 						
+			//구분자명 CHECK
+			if($('#btnAddGridNum').css('display') != 'none' && check1.length < 2){
+				mcxDialog.alert('구분자1명은 2자 이상 50자 미만으로 입력하세요.');
+				return false;
+			}
+			if($('#btnAddGridNum2').css('display') != 'none' && check2.length < 2){
+				mcxDialog.alert('구분자2명은 2자 이상 50자 미만으로 입력하세요.');
+				return false;
+			}
+			if($('#btnAddGridNum3').css('display') != 'none' && check3.length < 2){
+				mcxDialog.alert('구분자3명은 2자 이상 50자 미만으로 입력하세요.');
+				return false;
+			}
+			if($('#btnAddGridNum4').css('display') != 'none' && check4.length < 2){
+				mcxDialog.alert('구분자4명은 2자 이상 50자 미만으로 입력하세요.');
+				return false;
+			}
+			if($('#btnAddGridNum5').css('display') != 'none' && check5.length < 2){
+				mcxDialog.alert('구분자5명은 2자 이상 50자 미만으로 입력하세요.');
+				return false;
+			}
+			
+			
 			mcxDialog.confirm("내용을 등록 하시겠습니까?", {
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					
-					let data = {
-					};
+					let data = {};
 					
 					data.mktmailManagementTc = mailTc;
 					data.mktmailManagementTc2 = mailTc2;
@@ -570,6 +622,11 @@
 					data.mktmailManagementGoods4 = arrayData4;
 					data.mktmailManagementGoods5 = arrayData5;
 					
+					//업데이트 일 경우 처리
+					if($('#mailManagementForm input[name=mailtSq]').val() != null && $('#mailManagementForm input[name=mailtSq]').val() != ''){
+						data.mailtSq = mktmailInfo.mailtSq;
+					}
+					
 					data.mktHeader = $('#mailManagementForm select[name=mailHsq]').val();
 					data.mktFooter = $('#mailManagementForm select[name=mailFsq]').val();
 					data.mailtNm = $('#mailManagementForm input[name=mailtNm]').val();
@@ -577,10 +634,10 @@
 					data.mailContent = $('#mailManagementForm textarea[name=mailContent]').val();
 					
 					let jsonData = JSON.stringify(data);
-					console.log(jsonData);
 					
 					gagajf.ajaxJsonSubmit($('#mailManagementForm').prop('action'), jsonData, function(data){
 						uifnPopupClose('popupMktMail');
+						$('#btnSearch').trigger('click');
 					});
 				
 				}
@@ -627,7 +684,6 @@
 				AddgridRow = gridOptions_c5;
 				break;
 			}
-			
 			cfnOpenGoodsPopup('fnFetchGoods');
 		}
 
@@ -635,7 +691,6 @@
 		var fnFetchGoods = function(goodsData) {
 			
 			if (goodsData.length < 1) return;
-			
 			// 기존상품
 			var oldGoodsSetList = gagaAgGrid.getAllRowData(AddgridRow);
 			var index = oldGoodsSetList.length+1;
@@ -667,8 +722,8 @@
 						var data = {
 							   goodsCd : item.goodsCd
 						   ,  brandEnm : item.brandEnm
-						   ,   goodNms : item.goodsNm
-						   ,      cdNm : item.goodsStat
+						   ,   goodsNm : item.goodsNm
+						   , goodsStat : item.goodsStat
 						   , listPrice : item.listPrice
 						   , currPrice : item.currPrice
 						   ,   dispOrd : index
@@ -704,119 +759,285 @@
 			}
 			
 			var selectedData = gagaAgGrid.selectedRowData(AddgridRow);
-		
+			var removedData = gagaAgGrid.removeRowData(AddgridRow);
+			
 			if (selectedData.length == 0) {
 				mcxDialog.alert('선택된 행이 없습니다.');
 				return false;
-			}		
-			//화면에서 삭제
-			gagaAgGrid.removeRowData(AddgridRow, false);
+			}
+			
+			//상세보기에서 삭제처리
+			if(mode == 'U') {
+				mcxDialog.confirm('해당 상품을 삭제하시겠습니까?', {
+					cancelBtnText: "취소",
+					sureBtnText: "확인",
+					sureBtnClick: function(){
+						
+						//화면에서 삭제
+						gagaAgGrid.removeRowData(AddgridRow, false);
+						var deleteData = [];
+						$.each(removedData, function(idx, item) {
+							deleteData.push(item);
+						})
+						
+						var jsonData = JSON.stringify(deleteData);
+						gagajf.ajaxJsonSubmit('marketing/mktmailManagement/goods/delete', jsonData);
+					}
+				});
+			}
 		}
-		
-		
-		// 상품 구분 삭제 버튼  삭제는 해당 하는 폼이 삭제
+
+		// 상품 구분 폼 삭제
 		function btnDeleteGridNum(param){
 			if($('#btnAddGridNum').css('display') !='none'){
+				//구분자 DB 삭제
+				if(mode == "U" && $('#mailManagementForm input[name=mailtcNm]').val() != null && $('#mailManagementForm input[name=mailtcNm]').val() != ''){
+					var deleteData = [];
+					var corner = {};
+						corner.mailtcSq = $('#mailManagementForm input[name=mailtcSq]').val();
+						corner.useYn = 'N';
+						deleteData.push(corner);
+					var jsonData = JSON.stringify(deleteData);
+					gagajf.ajaxJsonSubmit('marketing/mktmailManagement/corner/delete', jsonData);
+				}
+				//상품전시 삭제
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c1);
+				if(mode == "U" && selectedData.length != 0){
+						//상세보기에서 삭제처리
+						var deleteData = [];
+						$.each(selectedData, function(idx, item) {
+							deleteData.push(item);
+						})
+						var jsonData = JSON.stringify(deleteData);
+						gagajf.ajaxJsonSubmit('marketing/mktmailManagement/goods/delete', jsonData);
+				}
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c1);
+				selectedData.forEach(function(item, index) {
+					gridOptions_c1.api.updateRowData({remove: [item]});
+				});
+				$('#mailManagementForm input[name=mailtcNm]').val('');
+				$('#mailManagementForm input[name=mailtcLink]').val('');
+				$('#mailManagementForm input:radio[name="goodsCpr"]:radio[value="3"]').prop('checked', true);
 				$('#btnAddGridNum').hide();
-				$('#btnAddGridNum')[0].reset();
 			}
-		}		
+		}
+
 		function btnDeleteGridNum2(param){
 			if($('#btnAddGridNum2').css('display') !='none'){
+				//구분자 DB 삭제
+				if(mode == "U" && $('#mailManagementForm input[name=mailtcNm2]').val() != null && $('#mailManagementForm input[name=mailtcNm2]').val() != ''){
+					var deleteData = [];
+					var corner = {};
+						corner.mailtcSq = $('#mailManagementForm input[name=mailtcSq2]').val();
+						corner.useYn = 'N';
+						deleteData.push(corner);
+					var jsonData = JSON.stringify(deleteData);
+					gagajf.ajaxJsonSubmit('marketing/mktmailManagement/corner/delete', jsonData);
+				}
+				//상품전시 삭제
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c2);
+				if(mode == "U" && selectedData.length != 0){
+						//상세보기에서 삭제처리
+						var deleteData = [];
+						$.each(selectedData, function(idx, item) {
+							deleteData.push(item);
+						})
+						var jsonData = JSON.stringify(deleteData);
+						gagajf.ajaxJsonSubmit('marketing/mktmailManagement/goods/delete', jsonData);
+				}
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c2);
+				selectedData.forEach(function(item, index) {
+					gridOptions_c1.api.updateRowData({remove: [item]});
+				});
+				$('#mailManagementForm input[name=mailtcNm2]').val('');
+				$('#mailManagementForm input[name=mailtcLink2]').val('');
+				$('#mailManagementForm input:radio[name="goodsCpr2"]:radio[value="3"]').prop('checked', true);
 				$('#btnAddGridNum2').hide();
-				$('#searchForm2')[0].reset();
-			}			
-		}			
+			}
+		}
+		
 		function btnDeleteGridNum3(param){
-			if ($('#btnAddGridNum3').css('display') !='none'){
+			if($('#btnAddGridNum3').css('display') !='none'){
+				//구분자 DB 삭제
+				if(mode == "U" && $('#mailManagementForm input[name=mailtcNm3]').val() != null && $('#mailManagementForm input[name=mailtcNm3]').val() != ''){
+					var deleteData = [];
+					var corner = {};
+						corner.mailtcSq = $('#mailManagementForm input[name=mailtcSq3]').val();
+						corner.useYn = 'N';
+						deleteData.push(corner);
+					var jsonData = JSON.stringify(deleteData);
+					gagajf.ajaxJsonSubmit('marketing/mktmailManagement/corner/delete', jsonData);
+				}
+				//상품전시 삭제
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c3);
+				if(mode == "U" && selectedData.length != 0){
+						//상세보기에서 삭제처리
+						var deleteData = [];
+						$.each(selectedData, function(idx, item) {
+							deleteData.push(item);
+						})
+						var jsonData = JSON.stringify(deleteData);
+						gagajf.ajaxJsonSubmit('marketing/mktmailManagement/goods/delete', jsonData);
+				}
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c3);
+				selectedData.forEach(function(item, index) {
+					gridOptions_c1.api.updateRowData({remove: [item]});
+				});
+				$('#mailManagementForm input[name=mailtcNm3]').val('');
+				$('#mailManagementForm input[name=mailtcLink3]').val('');
+				$('#mailManagementForm input:radio[name="goodsCpr3"]:radio[value="3"]').prop('checked', true);
 				$('#btnAddGridNum3').hide();
-				$('#searchForm3')[0].reset();
-			}			
+			}
 		}		
+		
 		function btnDeleteGridNum4(param){
 			if ($('#btnAddGridNum4').css('display') !='none'){
+				
+				//구분자 DB 삭제
+				if(mode == "U" && $('#mailManagementForm input[name=mailtcNm4]').val() != null && $('#mailManagementForm input[name=mailtcNm4]').val() != ''){
+					var deleteData = [];
+					var corner = {};
+						corner.mailtcSq = $('#mailManagementForm input[name=mailtcSq4]').val();
+						corner.useYn = 'N';
+						deleteData.push(corner);
+					var jsonData = JSON.stringify(deleteData);
+					gagajf.ajaxJsonSubmit('marketing/mktmailManagement/corner/delete', jsonData);
+				}
+				//상품전시 삭제
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c4);
+				if(mode == "U" && selectedData.length != 0){
+						//상세보기에서 삭제처리
+						var deleteData = [];
+						$.each(selectedData, function(idx, item) {
+							deleteData.push(item);
+						})
+						var jsonData = JSON.stringify(deleteData);
+						gagajf.ajaxJsonSubmit('marketing/mktmailManagement/goods/delete', jsonData);
+				}
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c4);
+				selectedData.forEach(function(item, index) {
+					gridOptions_c1.api.updateRowData({remove: [item]});
+				});
+				$('#mailManagementForm input[name=mailtcNm4]').val('');
+				$('#mailManagementForm input[name=mailtcLink4]').val('');
+				$('#mailManagementForm input:radio[name="goodsCpr4"]:radio[value="3"]').prop('checked', true);
 				$('#btnAddGridNum4').hide();
-				$('#searchForm3')[0].reset();
-			}			
+			}
 		}
 		function btnDeleteGridNum5(param){
 			if ($('#btnAddGridNum5').css('display') !='none'){
+				
+				//구분자 DB 삭제
+				if(mode == "U" && $('#mailManagementForm input[name=mailtcNm5]').val() != null && $('#mailManagementForm input[name=mailtcNm5]').val() != ''){
+					var deleteData = [];
+					var corner = {};
+						corner.mailtcSq = $('#mailManagementForm input[name=mailtcSq5]').val();
+						corner.useYn = 'N';
+						deleteData.push(corner);
+					var jsonData = JSON.stringify(deleteData);
+					gagajf.ajaxJsonSubmit('marketing/mktmailManagement/corner/delete', jsonData);
+				}
+				//상품전시 삭제
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c5);
+				if(mode == "U" && selectedData.length != 0){
+						//상세보기에서 삭제처리
+						var deleteData = [];
+						$.each(selectedData, function(idx, item) {
+							deleteData.push(item);
+						})
+						var jsonData = JSON.stringify(deleteData);
+						gagajf.ajaxJsonSubmit('marketing/mktmailManagement/goods/delete', jsonData);
+				}
+				var selectedData = gagaAgGrid.getAllRowData(gridOptions_c5);
+				selectedData.forEach(function(item, index) {
+					gridOptions_c1.api.updateRowData({remove: [item]});
+				});	
+				$('#mailManagementForm input[name=mailtcNm5]').val('');
+				$('#mailManagementForm input[name=mailtcLink5]').val('');
+				$('#mailManagementForm input:radio[name="goodsCpr5"]:radio[value="3"]').prop('checked', true);
 				$('#btnAddGridNum5').hide();
-				$('#searchForm5')[0].reset();
 			}
 		} 
 
 	$(document).ready(function() {
+		gagaAgGrid.createGrid("gridSectionGbList1", gridOptions_c1);
+		gagaAgGrid.createGrid("gridSectionGbList2", gridOptions_c2);
+		gagaAgGrid.createGrid("gridSectionGbList3", gridOptions_c3);
+		gagaAgGrid.createGrid("gridSectionGbList4", gridOptions_c4);
+		gagaAgGrid.createGrid("gridSectionGbList5", gridOptions_c5);
 		
 		if (mode == 'U') {
 			
+			$('#mailManagementForm input[name=mailtSq]').val(mktmailInfo.mailtSq);
+			$('#mailManagementForm select[name=mailHsq]').val(mktmailInfo.mailHsq);
+			$('#mailManagementForm select[name=mailFsq]').val(mktmailInfo.mailFsq);
 			$('#mailManagementForm input[name=mailtNm]').val(mktmailInfo.mailtNm);
 			$('#mailManagementForm textarea[name=mailContent]').val(mktmailInfo.mailContent);
-
+			
 			if(mktmailInfo.mailtGb == "A"){
 				$('#mailManagementForm input:radio[name="mailtGb"]:radio[value="A"]').prop('checked', true);
 			}
 			
-//   		alert(mktmailTCInfo.length);
-//   		alert(mktmailGoodsInfo.length);
-//   	   	alert(mktmailGoodsInfo[1]);
-
-	   		
-			if(mktmailTCInfo != null && mktmailTCInfo.length > 0){				
-				//구분자1
-				if($('#mailManagementForm input[name=mailtcNm]')){
-					$('#mailManagementForm input[name=mailtcNm]').val(mktmailTCInfo[0].mailtcNm);
-					$('#mailManagementForm input[name=mailtcLink]').val(mktmailTCInfo[0].mailtcLink);
-					
-
+			$.each(mktmailTCInfo, function(idx, item) {
+				
+				if (idx == 0) {
+					$('#mailManagementForm input[name=mailtcNm]').val(item.tc.mailtcNm);						
+					$('#mailManagementForm input[name=mailtcSq]').val(item.tc.mailtcSq);
+					$('#mailManagementForm input[name=mailtcLink]').val(item.tc.mailtcLink);
+					if(mktmailTCInfo[idx].tc.goodsCpr == 1){
+						$('#mailManagementForm input:radio[name=goodsCpr]:input[value="1"]').prop('checked', true);
+					}else if(mktmailTCInfo[idx].tc.goodsCpr == 2){
+						$('#mailManagementForm input:radio[name=goodsCpr]:input[value="2"]').prop('checked', true);
+					}else if(mktmailTCInfo[idx].tc.goodsCpr == 3){
+						$('#mailManagementForm input:radio[name=goodsCpr]:input[value="3"]').prop('checked', true);
+					}else if(mktmailTCInfo[idx].tc.goodsCpr == 4){
+						$('#mailManagementForm input:radio[name=goodsCpr]:input[value="4"]').prop('checked', true);
+					}else if(mktmailTCInfo[idx].tc.goodsCpr == 5){
+						$('#mailManagementForm input:radio[name=goodsCpr]:input[value="5"]').prop('checked', true);
+					}
 					$('#btnAddGridNum').show();
-
-					//구분자2
-					if(mktmailTCInfo.length >= 2){
-						$('#mailManagementForm input[name=mailtcNm2]').val(mktmailTCInfo[1].mailtcNm);
-						$('#mailManagementForm input[name=mailtcLink2]').val(mktmailTCInfo[1].mailtcLink);
-						$('#btnAddGridNum2').show();
-						//구분자3
-						if(mktmailTCInfo.length >= 3){
-							$('#mailManagementForm input[name=mailtcNm3]').val(mktmailTCInfo[2].mailtcNm);
-							$('#mailManagementForm input[name=mailtcLink3]').val(mktmailTCInfo[2].mailtcLink);
-							$('#btnAddGridNum3').show();
-							//구분자4
-							if(mktmailTCInfo.length >= 4){
-								$('#mailManagementForm input[name=mailtcNm4]').val(mktmailTCInfo[3].mailtcNm);
-								$('#mailManagementForm input[name=mailtcLink4]').val(mktmailTCInfo[3].mailtcLink);
-								$('#btnAddGridNum4').show();
-								//구분자5
-								if(mktmailTCInfo.length == 5){
-									$('#mailManagementForm input[name=mailtcNm5]').val(mktmailTCInfo[4].mailtcNm);
-									$('#mailManagementForm input[name=mailtcLink5]').val(mktmailTCInfo[4].mailtcLink);
-									$('#btnAddGridNum5').show();
-								}
-							}
+				} else {
+					$('#mailManagementForm input[name=mailtcNm' + (idx + 1) + ']').val(item.tc.mailtcNm);
+					$('#mailManagementForm input[name=mailtcLink' + (idx + 1) + ']').val(item.tc.mailtcLink);
+					$('#mailManagementForm input[name=mailtcSq' + (idx + 1) + ']').val(item.tc.mailtcSq);
+						if(mktmailTCInfo[idx].tc.goodsCpr == 1){
+							$('#mailManagementForm input:radio[name=goodsCpr' + (idx + 1) + ']:input[value="1"]').prop('checked', true);
+						}else if(mktmailTCInfo[idx].tc.goodsCpr == 2){
+							$('#mailManagementForm input:radio[name=goodsCpr' + (idx + 1) + ']:input[value="2"]').prop('checked', true);
+						}else if(mktmailTCInfo[idx].tc.goodsCpr == 3){
+							$('#mailManagementForm input:radio[name=goodsCpr' + (idx + 1) + ']:input[value="3"]').prop('checked', true);
+						}else if(mktmailTCInfo[idx].tc.goodsCpr == 4){
+							$('#mailManagementForm input:radio[name=goodsCpr' + (idx + 1) + ']:input[value="4"]').prop('checked', true);
+						}else if(mktmailTCInfo[idx].tc.goodsCpr == 5){
+							$('#mailManagementForm input:radio[name=goodsCpr' + (idx + 1) + ']:input[value="5"]').prop('checked', true);
 						}
-					}
+					$('#btnAddGridNum' + (idx + 1)).show();
 				}
-			}
-			
+				
+				switch(idx) {
+				case 0:
+					gridOptions_c1.api.setRowData(item.goodsList);
+					break;
+				case 1:
+					gridOptions_c2.api.setRowData(item.goodsList);
+					break;
+				case 2:
+					gridOptions_c3.api.setRowData(item.goodsList);
+					break;
+				case 3:
+					gridOptions_c4.api.setRowData(item.goodsList);
+					break;
+				case 4:
+					gridOptions_c5.api.setRowData(item.goodsList);
+					break;
+				}
+			});
 			
 		}//end of mode
-		
-		gagaAgGrid.createGrid("gridSectionGbList1", gridOptions_c1);
-		gagaAgGrid.createGrid("gridSectionGbList2", gridOptions_c2);
-		gagaAgGrid.createGrid("gridSectionGbList3", gridOptions_c3);
-		gagaAgGrid.createGrid("gridSectionGbList4", gridOptions_c4);
-		gagaAgGrid.createGrid("gridSectionGbList5", gridOptions_c5);
 
 		// Create a summernote
 		let snOptions = gagaSn.getToolbarOptions();
-		
-
-		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);
-		
+				
 		gagaSn.createSummernote(snOptions, '#mailContent');
 
 	});

+ 38 - 10
src/main/webapp/WEB-INF/views/marketing/MktmailmanagementForm.html

@@ -23,6 +23,7 @@
 		<div class="infoBox menu-desc"></div>
 
 		<form id="searchForm" name="searchForm" action="#" th:action="@{'/marketing/mktmailManagement/list'}"  onsubmit="$('#btnSearch').trigger('click'); return false;">
+			<input type="hidden" name="mailtcSq" th:value="${mailtcSq}">
 			<!-- 검색조건 영역 -->
 			<div class="panelStyle" >
 				<!-- //TITLE -->
@@ -91,7 +92,11 @@
 			}
 		},
 		{	//미리보기 
-			headerName: "미리보기", width: 150, cellClass: 'text-center'
+			headerName: "", field:"preview" , width: 150, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return '<button="javascript:void(0);" class="btn btn-info btn-sm">'+ '미리보기' +'</button>'
+			}
+		
 		},
 		{headerName: "등록자", field: "regNm", width: 150, cellClass: 'text-center'},
 		{
@@ -115,19 +120,17 @@
 	// Get GridOptions
 	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
 	
-	//검색 조건 확인
-	//TODO
-	
-	
 	// 다중 선택 추가
 	gridOptions.rowSelection = 'multiple';	
 	
 	//셀 클릭 이벤트 -> 팝업창
 	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'mailtNm')
-			return;
-		
-		fnOpenMailHFPopup('U', event.data.mailtSq);
+		if (event.colDef.field == 'mailtNm'){
+			fnOpenMailHFPopup('U', event.data.mailtSq);
+		}else if(event.colDef.field == 'preview'){
+			fnOpenMailPreviewPopup(event.data.mailtSq);
+		}
+			
 	}
 	
 	// grid row Delete
@@ -151,7 +154,6 @@
 					updatedData.push(item);
 				});
 				
-				
 				var jsonData = JSON.stringify(updatedData);
 				gagajf.ajaxJsonSubmit('/marketing/mktmailManagement/delete', jsonData, function() {
 					$('#btnSearch').trigger('click');
@@ -162,18 +164,44 @@
 	
 	// 조회버튼 - 검색
 	$('#btnSearch').on('click', function() {
+		if(!dateCheck()) return;
 		var formId = "#searchForm";
 		gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
 	});
 	
+	// 조회검색 조건 CHECK
+		var dateCheck = function(){
+		var fromDate = $('#mktmailStdt').val();
+		var toDate = $('#mktmailEddt').val();
+
+			if (gagajf.isNull(fromDate)) {
+				mcxDialog.alert('시작 기간을 입력하세요.');
+				return;
+			}
+			if (gagajf.isNull(toDate)) {
+				mcxDialog.alert('종료 기간을 입력하세요.');
+				return;
+			}
+			return true;
+	}
 	
 	// 등록/상세 팝업
 	var fnOpenMailHFPopup = function(mode, mailtSq) {
+		let data = gridOptions.api.getSelectedRows();
 		var actionUrl = '/marketing/mktmailmanagement/detail/form' + '?mode=' + mode;
 		if (!gagajf.isNull(mailtSq)) actionUrl += '&mailtSq=' + mailtSq;
 		cfnOpenModalPopup(actionUrl, 'popupMktMail');
 	}
 	
+	//미리보기
+	var fnOpenMailPreviewPopup = function(mailtSq) {
+		let data = gridOptions.api.getSelectedRows();
+		var actionUrl = '/marketing/mktmailmanagement/preview';
+		if (!gagajf.isNull(mailtSq)) actionUrl += '?mailtSq=' + mailtSq;
+		cfnOpenModalPopup(actionUrl, 'popupMktMailPreview');
+	}
+	
+	
 	$(document).ready(function() {
 	
 		cfnCreateCalendar('#sellTerms', 'mktmailStdt', 'mktmailEddt', true);

+ 64 - 0
src/main/webapp/WEB-INF/views/marketing/MktmailmanagementPreviewForm.html

@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : MktmailmanagementPreviewForm.html
+ * @desc    : MktmailmanagementPreviewForm MKT메일 미리보기 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021. 02. 19   csh9191     최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="1200" id="popupMktMailPreview">
+	<div class="panelStyle" style="height:700px;width:800px; overflow-y:scroll; max-height:700px;">
+		<!-- 팝업창 타이틀 -->
+		<div class="panelTitle">
+			<strong>메일 미리보기</strong>
+			<button type="button" class="close" onclick="uifnPopupClose('popupMktMailPreview');"><em class="fa fa-times"></em></button>
+		</div>
+			<!-- Header  -->
+ 			<div th:if="${mktmailPreviewHeader}">
+					<p th:text="${mktmailPreviewHeader.mailhfContent}"></p>
+			</div>
+			
+			<!-- content -->
+			<div th:if="${mktmailPreviewContent}">
+			 	<p th:text="${mktmailPreviewContent.mailtNm}"></p> 
+ 				<p th:text="${mktmailPreviewContent.mailContent}"></p> 
+			</div>
+			
+			<!-- Footer -->
+			 <div th:if="${mktmailPreviewFooter}">
+					<p th:text="${mktmailPreviewFooter.mailhfContent}"></p>
+			</div>
+	</div>
+</div>
+<script th:inline="javascript">
+	let mktmailPreviewHeader = [[${mktmailPreviewHeader}]];
+	let mktmailPreviewContent = [[${mktmailPreviewContent}]];
+	let mktmailPreviewFooter = [[${mktmailPreviewFooter}]];
+	let mktmailPreviewGoods = [[${mktmailPreviewGoods}]];
+	
+	console.log(mktmailPreviewContent);
+	console.log(mktmailPreviewGoods);
+	
+	$(document).ready(function() {
+		
+		$.each(mktmailPreviewGoods, function(idx, item) {
+			if (idx == 0) {
+				$('#mailtcNm').text(item.tc.mailtcNm);						
+				$('#mailtcLink').text(item.tc.mailtcLink);
+			}else {
+				$('#mailtcNm'+ idx).text(item.tc.mailtcNm);
+				$('#mailtcLink' + idx).text(item.tc.mailtcLink);
+			} 
+		});
+	});
+</script>
+
+</html>