Explorar el Código

템플릿 쿠폰등록 중간커밋

sowon4187 hace 5 años
padre
commit
062b274dc8

+ 34 - 8
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -3,8 +3,12 @@ package com.style24.admin.biz.service;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.session.SqlSession;
+import org.mybatis.spring.SqlSessionTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
@@ -858,16 +862,38 @@ public class TsaPlanService {
 		Integer regNo = TsaSession.getInfo().getUserNo();
 		// 리뷰 등록
 		Plan rePlan = new Plan();
-		String[] reviewData = param.getAllReviewData();
-		
+		System.out.println("====="+param.getReTitle());
+		System.out.println("====="+param.getReDispYn());
+		System.out.println("====="+param.getMultiPlanReview().length);
 		//리뷰 등록 - tb_plan_contents
-		rePlan.setRegNo(regNo);
-		rePlan.setUpdNo(regNo);
-		rePlan.setTmplType("G082_20");
-		rePlan.setTitle(param.getReTitle());
-		rePlan.setDispYn(param.getReDispYn());
-		rePlan.setDispOrd(param.getReDispOrd());
+		if(!param.getReTitle().equals(null) || param.getMultiPlanReview().length>0) {
+			rePlan.setRegNo(regNo);
+			rePlan.setUpdNo(regNo);
+			rePlan.setTmplType("G082_20");
+			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);
+			}
+		}
 		
+		// 쿠폰등록
 		
 		
 	}

+ 14 - 2
src/main/java/com/style24/persistence/domain/Plan.java

@@ -1,7 +1,10 @@
 package com.style24.persistence.domain;
 
 
+import java.util.Collection;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.admin.biz.dao.TsaPlanDao;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
 
@@ -166,14 +169,23 @@ public class Plan extends TscBaseDomain{
 		private String reviewDispStdt;		//리뷰노출시작일시
 		private String reviewDispEddt;		//리뷰노툴종료일시
 		
-		private String[] allReviewData;		//리뷰상품목록
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] multiPlanReview;		//리뷰상품목록
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] multiPlanReviewStartD;		//리뷰상품목록
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] multiPlanReviewStartT;		//리뷰상품목록
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] multiPlanReviewEndD;		//리뷰상품목록
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] multiPlanReviewEndT;		//리뷰상품목록
+		
 		private String reTitle;				//리뷰타이틀
 		private String mode;				//모드
 		private long reDispOrd;				//리뷰전시순서
 		private String reItemVal;			//리뷰아이템
 		private String reDispYn;			//리뷰전시여부
 		
-				
 		
 		
 		// Pagination

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

@@ -920,11 +920,12 @@
 		WHERE PLAN_SQ = #{planSq}
 	</select>
 	
-	<insert id="createPlanContents" parameterType="Plan">
+	<insert id="createPlanContents" parameterType="Plan" useGeneratedKeys="true" keyProperty="planContSq">
 		/* TsaMarketing.createPlanContents */
 		INSERT INTO 
 			TB_PLAN_CONTENTS(
-							  PLAN_SQ
+							 PLAN_CONT_SQ
+							, PLAN_SQ
 							, TMPL_TYPE
 							, TITLE
 							, LINK_URL
@@ -936,9 +937,10 @@
 							, UPD_DT
 						)
 			  VALUES(
-						#{planSq}
+			  		   #{planContSq}
+					 , #{planSq}
 					 , #{tmplType}
-					 , #[title}
+					 , #{title}
 					 , #{linkUrl}
 					 , #{dispYn}
 					 , #{dispOrd}
@@ -972,7 +974,6 @@
 			TB_PLAN_CONTENTS_ITEM(
 						PLAN_CONT_SQ
 					  , ITEM_VAL
-					  , DISP_ORD
 					  , REVIEW_DISP_STDT
 					  , REVIEW_DISP_EDDT
 					  , REG_NO
@@ -981,7 +982,6 @@
 			VALUES(
 					#{planContSq}
 				  , #{itemVal}
-				  , #{dispOrd}
 				  , #{reviewDispStdt}
 				  , #{reviewDispEddt}
 				  , #{regNo}
@@ -991,7 +991,6 @@
 			     DUPLICATE KEY 
 			 UPDATE 
 			 	 ITEM_VAL= #{itemVal}
-			   , DISP_ORD= #{dispOrd}
 			   , REVIEW_DISP_STDT= #{reviewDispStdt}
 			   , REVIEW_DISP_EDDT= #{reviewDispEddt}
 			   , REG_NO= #{regNo}

+ 126 - 45
src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html

@@ -18,8 +18,7 @@
 	<div class="panelStyle" style="height: 750px;">
 		<div class="panelTitle">
 			<strong>기획전 템플릿</strong>
-			<button type="button" class="close"
-				onclick="uifnPopupClose('popupPlanTemplate')">
+			<button type="button" class="close"	onclick="uifnPopupClose('popupPlanTemplate')">
 				<i class="fa fa-times"></i>
 			</button>
 		</div>
@@ -47,7 +46,7 @@
 										<col width="90%" />
 									</colgroup>
 									<tr>
-										<th>리뷰<br/>[전시여부<label class="chkBox"><input type="checkbox" name="reDispYn" onclick="fnAttachYnClick('reDispYn')"/></label>]</th>
+										<th>리뷰<br/>[전시여부<label class="chkBox"><input type="checkbox" name="reDispYn" onclick="fnAttachYnClick('reDispYn')" value="N"/></label>]</th>
 										<td>
 											<table class="frmStyle">
 												<tr>
@@ -57,7 +56,7 @@
 												</tr>
 												<tr>
 													<th>전시순서</th>
-													<td><input type="text" name="reDispOrd" placeholder="1" class="w100 aR" data-valid-type="numeric"></td>
+													<td><input type="text" name="reDispOrd" class="w100 aR" data-valid-type="numeric"></td>
 												</tr>
 											</table>
 											<div class="padding10">
@@ -65,7 +64,7 @@
 													<button type="button"
 														class="btn btnRight btn-success btn-lg" onclick="cfnOpenGoodsPopup('reviewGoodsList')">상품 조회</button>
 													<button type="button"
-														class="btn btnRight btn-success btn-lg" id="">행삭제</button>
+														class="btn btnRight btn-success btn-lg" id="btnReviewDelete">행 삭제</button>
 												</span> <br />
 												<div id="gridListPlanReview"
 													style="width: 100%; height: 200px;" class="ag-theme-balham"></div>
@@ -96,30 +95,34 @@
 										<col width="90%" />
 									</colgroup>
 									<tr>
-										<th>쿠폰<br/>[사용여부<label class="chkBox"><input type="checkbox" name="" id="tempYn" value="Y"/></label>]</th>
+										<th>쿠폰<br/>[사용여부<label class="chkBox"><input type="checkbox" name="cuDsipYn" id="cuDsipYn" value="N"/></label>]</th>
 										<td>
 											<table class="frmStyle">
 												<tr>
 													<th>쿠폰 타이틀</th>
-													<td><input type="text" value="" class="w300 aR">
+													<td><input type="text" name="cuTitle" class="w300 aR">
 													</td>
 												</tr>
 												<tr>
 													<th>전시순서</th>
-													<td><input type="text" value="" placeholder="2"	class="w100 aR"></td>
+													<td><input type="text" name="cuDispOrd" placeholder="2" class="w100 aR" data-valid-type="numeric"></td>
 												</tr>
 											</table>
 											<div class="padding10">
 												<span class="buttonSpan">
-													<button type="button"
-														class="btn btnRight btn-success btn-lg" id="">쿠폰
-														조회</button>
-													<button type="button"
-														class="btn btnRight btn-success btn-lg" id="">행
-														삭제</button>
+													<button type="button" class="btn btnRight btn-success btn-lg" onclick="fnAddCoupone()">쿠폰 추가</button>
 												</span> <br />
-												<div id="gridListPlanCoupon"
-													style="width: 100%; height: 200px;" class="ag-theme-balham"></div>
+											<table class="frmStyle" id="couponTable">
+												<!-- <tr>
+													<td colspan="3">
+														<input type="checkbox">
+														<input type="text" class="w300" name="cuItemVal1" onkeypress="if (window.event.keyCode == 13) { fnOpenCouponRetrievePopup('input[name=cuItemVal1]', 'input[name=cuItemNm1]'); }"/>
+														<button type="button" class="btn icn" onclick="fnOpenCouponRetrievePopup('input[name=cuItemVal1]', 'input[name=cuItemNm1]');"><i class="fa fa-search cpn" aria-hidden="true"></i></button>
+														<input name="cuItemVal1" type="text" class="w100" maxlength="20" readonly="readonly"/>
+														<button type="button" class="btn icn" onclick="$('input[name=cuItemVal1], input[name=cuItemNm1]').val('');"><i class="fa fa-eraser" aria-hidden="true"></i></button>
+													</td>
+												</tr> -->
+											</table>
 											</div>
 										</td>
 									</tr>
@@ -414,7 +417,7 @@
 															<button type="button" class="btn btnRight btn-success btn-lg"
 																onclick="fnOpenGoodsPopup('gridOptions_c1');">상품 조회</button>
 															<button type="button" class="btn btnRight btn-success btn-lg"
-																onclick="fnGoodsDeleteRow('gridOptions_c1');">행삭제</button>
+																onclick="fnGoodsDeleteRow('gridOptions_c1');">행 삭제</button>
 														</li>
 													</ul>
 													<!-- Agrid -->
@@ -960,9 +963,8 @@
 			</ul>
 			<!-- //버튼 배치 영역 -->
 		</form>
+	</div>
 </div>
-</div>
-
 <script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
 <script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=2020103001"></script>
 <script th:inline="javascript">
@@ -971,7 +973,7 @@
 	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: "reItemName", width: 120, cellClass: 'text-center'},
+		{headerName: "상품명", field: "reItemNm", width: 120, cellClass: 'text-center'},
 		{headerName: "시작일"			, field:'startSearchDate'	, width:110, cellClass: 'text-center',
 			cellEditor: 'datePicker',
 			cellEditorParams: { maxlength: 10, required: true },
@@ -990,13 +992,6 @@
 		},
 	];  
 	
-	// 쿠폰 리스트 설정
-	var columnCouponList = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "쿠폰ID", field: "", width: 110, cellClass: 'text-center'},
-		{headerName: "쿠폰명", field: "", width: 120, cellClass: 'text-center'},
-	];
-
 	//상품 전시 그리드 그리기
 	var columnDefs = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
@@ -1053,11 +1048,8 @@
 	gridOptionsPlanReviewList.rowSelection = "multiple";
 	gridOptionsPlanReviewList.suppressRowClickSelection = true;
 	
-	// 쿠폰 그리드 설정
-	var gridOptionsPlanCouponeList = gagaAgGrid.getGridOptions(columnCouponList);
-	gridOptionsPlanCouponeList.rowSelection = "multiple";
-	gridOptionsPlanCouponeList.suppressRowClickSelection = true;
 	
+
 	
 	//팝업창 닫기버튼
 	$('#btndeleteTemplate').on('click', function() {
@@ -1070,14 +1062,6 @@
 		});
 	});
 	
-	
-	
-	var fnDetailFormSearch = function() {
-		uifnPopupClose('planTemplateForm');		
-	}
-	
-	
-	
 	// 첨부파일 삭제
 	var fnDeleteFile = function(obj, noticeSq, seq, sysFileNm) {
 		mcxDialog.confirm('정말 삭제하시겠습니까?', {
@@ -1325,16 +1309,66 @@
 			}
 			// 중복되지 않은 데이터 리스트에 추가
 			if(addChk) {
-				gagaAgGrid.addRowData(gridOptionsPlanReviewList, {"reItemVal":result[i].goodsCd , "reItemName":result[i].goodsNm, "startSearchDate": _today, "startSearchTime": '00:00:00', "endSearchDate":_today, endSearchTime: '23:59:59' });
+				gagaAgGrid.addRowData(gridOptionsPlanReviewList, {"reItemVal":result[i].goodsCd , "reItemNm":result[i].goodsNm, "startSearchDate": _today, "startSearchTime": '00:00:00', "endSearchDate":_today, endSearchTime: '23:59:59' });
 			}
 		}
 		
 		uifnPopupClose("popupGoods");
 	}
 	
+	// 리뷰 선택삭제 버튼 클릭시
+    $('#btnReviewDelete').on('click', function() {
+    	gridOptionsPlanReviewList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsPlanReviewList)});
+    });
+	
+	
+	// 쿠폰조회 팝업
+	var fnOpenCouponRetrievePopup = function(strReturnCode, strReturnName) {
+		var oParam = new Object();
+		oParam.returnCode = strReturnCode;
+		oParam.returnName = strReturnName;
+		cfnOpenCouponRetrievePopup($(strReturnName).val(), oParam);
+	}
+	
+	// 쿠폰 추가
+	var fnAddCoupone = function() {
+		var len =  $('#planTemplateForm').find('#couponTable tr').length;
+		
+		var html =  '<tr>';
+		html += '<td colspan="3">';
+		html += '<input type="text" class="w300" id="cuItemNm" name="cuItemNm'+(len+1)+'"/>';
+		html += '<button type="button" class="btn icn" id="couponPlusBtn'+(len+1)+'"><i class="fa fa-search cpn" aria-hidden="true"></i></button>';
+		html += '<input id="cuItemVal" name="cuItemVal'+(len+1)+'" type="text" class="w100" maxlength="20" readonly="readonly"/>';
+		html += '<button type="button" class="btn icn" id="deleteCoupon'+(len+1)+'"><i class="fa fa-eraser" aria-hidden="true"></i></button>';
+		html += '</td>';
+		html += '</tr>';
+			
+			
+			
+		$("#couponTable").append(html);
+		
+		$('#couponPlusBtn'+(len+1)).attr("onclick","fnOpenCouponRetrievePopup('input[name=cuItemVal"+(len+1)+"]', 'input[name=cuItemNm"+(len+1)+"]');")
+		$('#deleteCoupon'+(len+1)).attr("onclick","deleteRowCoupon("+(len+1)+")");
+	}
+	
+
+	 //삭제 버튼
+	var deleteRowCoupon = function(len) {  
+		var cnt = len;
+		console.log(cnt);
+	    var html = $("#deleteCoupon"+len).closest('tr');
+	    html.remove(); //tr 테그 삭제
+	} 
+		
 	
 	// 팝업창 저장
 	$('#btnSaveTemplate').on('click', function() {
+		var len =  $('#planTemplateForm').find('#couponTable tr').length;
+		for (var i = 0; i < len; i++) {
+			console.log($('#planTemplateForm').find('#couponTable tr').children().eq(i).find("#cuItemVal").val());
+		}
+		
+		// 리뷰 전시 클릭했을 경우
 		if($("input:checkbox[name=reDispYn]").prop("checked")){
 			$("input:checkbox[name=reDispYn]").val('Y');
 			if($("input[name=reTitle]").val()==''){
@@ -1350,6 +1384,22 @@
 			$("input:checkbox[name=reDispYn]").val('N');
 		}
 		
+		// 쿠폰 전시 클랙했을 경우
+		if($("input:checkbox[name=cuDispYn]").prop("checked")){
+			$("input:checkbox[name=cuDispYn]").val('Y');
+			if($("input[name=cuTitle]").val()==''){
+				mcxDialog.alert('쿠폰 타이틀을 입력하세요.');
+				return;
+			}
+			if($("input[name=cuDispOrd]").val()==''){
+				mcxDialog.alert('쿠폰 전시순서를 입력하세요.');
+				return;
+			}
+			
+		}else{
+			$("input:checkbox[name=cuDispYn]").val('N');
+		}
+		
 		mcxDialog.confirm('기획전 템플릿을 등록 하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
@@ -1357,16 +1407,44 @@
 				
 				let allReviewData = gagaAgGrid.getAllRowData(gridOptionsPlanReviewList);
 				var multiPlanReview = [];
+				
 				$.each(allReviewData, function(idx, item) {
 					multiPlanReview.push(item.reItemVal);
 				});
 				
+				var multiPlanReviewStartD = [];
+				$.each(allReviewData, function(idx, item) {
+					multiPlanReviewStartD.push(item.startSearchDate);
+				});
+				
+				var multiPlanReviewStartT = [];
+				$.each(allReviewData, function(idx, item) {
+					multiPlanReviewStartT.push(item.startSearchTime);
+				});
+				
+				var multiPlanReviewEndD = [];
+				$.each(allReviewData, function(idx, item) {
+					multiPlanReviewEndD.push(item.endSearchDate);
+				});
+				
+				var multiPlanReviewEndT = [];
+				$.each(allReviewData, function(idx, item) {
+					multiPlanReviewEndT.push(item.endSearchTime);
+				});
+				
+				
 				let data = {
-							allReviewData : allReviewData
+							multiPlanReview : multiPlanReview
+						   ,allReviewData : allReviewData
+						   ,multiPlanReviewStartD : multiPlanReviewStartD
+						   ,multiPlanReviewStartT : multiPlanReviewStartT
+						   ,multiPlanReviewEndD : multiPlanReviewEndD
+						   ,multiPlanReviewEndT : multiPlanReviewEndT
 						   ,reTitle : $('#planTemplateForm input[name=reTitle]').val()
 						   ,reDispOrd : $('#planTemplateForm input[name=reDispOrd]').val()
 						   ,reDispYn :  $('#planTemplateForm input:checkbox[name=reDispYn]').val()
 						   ,mode :  $('#planTemplateForm input[name=mode]').val()
+						   ,planSq : $('#planTemplateForm input[name=planSq]').val()
 				}
 				var jsonData = JSON.stringify(data);
 				gagajf.ajaxJsonSubmit('/marketing/planning/detail/template/save', jsonData, fnDetailFormSearch);
@@ -1382,11 +1460,15 @@
 		
 		
 	});
-
+	
+	
+	// 콜백
+	var fnDetailFormSearch = function() {
+		uifnPopupClose('popupPlanTemplate');		
+	}
+	
 	
 $(document).ready(function() {
-		
-		
 		// 썸머노트 그리기
 		gagaSn.createSummernote(snOptions, '#fsrcPcDetail1');
 		gagaSn.createSummernote(snOptions, '#fsrcMobileDetail1');
@@ -1395,7 +1477,6 @@ $(document).ready(function() {
 		
 		// 그리드 그리기
 		gagaAgGrid.createGrid("gridListPlanReview", gridOptionsPlanReviewList);
-		gagaAgGrid.createGrid("gridListPlanCoupon", gridOptionsPlanCouponeList);
 		gagaAgGrid.createGrid("gridSectionGbList1", gridOptions_c1);
 		gagaAgGrid.createGrid("gridSectionGbList2", gridOptions_c2);
 		gagaAgGrid.createGrid("gridSectionGbList3", gridOptions_c3);