Kaynağa Gözat

출석체크 로직 추가

sowon4187 5 yıl önce
ebeveyn
işleme
7084a74d8e

+ 9 - 1
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -615,5 +615,13 @@ public interface TsaPlanDao {
 	 */
 	Collection<Plan> getPlanningCategoryList(Plan param);
 	
-
+	/**
+	 * 출석체크 쿠폰 유효검사
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 09
+	 */
+	Collection<Plan> getPlanAttendCoupon(Plan param);
 }

+ 12 - 0
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -1815,5 +1815,17 @@ public class TsaPlanService {
 		return planDao.getPlanningCategoryList(param);
 	}
 	
+	/**
+	 * 출석체크 쿠폰 유효검사
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 09
+	 */
+	public Collection<Plan> getPlanAttendCoupon(Plan param){
+		return planDao.getPlanAttendCoupon(param);
+	}
+	
 		
 }

+ 14 - 0
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -2562,6 +2562,20 @@ public class TsaMarketingController extends TsaBaseController {
 		socialService.deleteSocialGoods(paramList);
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
+	
+	/**
+	 * 출석체크 쿠폰 유효 확인
+	 *
+	 * @param plan 조회 정보
+	 * @return plan 목록
+	 * @author sowon
+	 * @since 2021. 6. 9
+	 */
+	@PostMapping("/planning/attend/coupon")
+	@ResponseBody
+	public Collection<Plan> getPlanAttendCoupon(@RequestBody Plan plan) {
+		return planService.getPlanAttendCoupon(plan);
+	}
 
 	/**
 	 * 상품권 대량 등록 화면

+ 14 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -1488,7 +1488,7 @@
 	
 	<!-- 기획전 카테고리 목록 -->
 	<select id="getPlanningCategoryList" parameterType="Plan" resultType="Plan">
-		/* TssPlan.getPlanningCategoryList */
+		/* TsaPlan.getPlanningCategoryList */
 		SELECT C.CATE1_NO AS CATE_NO            /*카테고리번호*/
 		     , C.CATE1_NM AS CATE_NM /*카테고리명*/
 		FROM TB_CATE1 C
@@ -1497,6 +1497,19 @@
 		AND    C.CATE_TYPE = 'G031_10' /*상품카테고리*/
 		AND    C.DISP_YN = 'Y' /*전시하는 카테고리*/
 	</select>
+	
+	<select id="getPlanAttendCoupon" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanAttendCoupon */
+		SELECT C.CPN_ID 
+		      ,C.CPN_NM 
+		      ,C.CPN_STAT 
+		FROM TB_COUPON C
+		WHERE 1=1
+		AND C.CPN_ID = #{cpnId}
+		AND C.CPN_TYPE IN ('G230_11' ,'G230_12','G230_13','G230_30')
+		AND C.CPN_STAT = 'G232_11'
+		AND NOW() <![CDATA[<=]]> IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
+	</select>
 </mapper>
 
 

+ 4 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaSocial.xml

@@ -205,9 +205,12 @@
 		<if test='frontGb == "P"'> <!-- PC웹 -->
 		    AND A.FRONT_GB IN ('A','P')
 		</if>
-		<if test='frontGb == "A" or frontGb == "M"'> <!-- 모바일 -->
+		<if test='frontGb == "M"'> <!-- 모바일 -->
 		    AND A.FRONT_GB IN ('A','M')
 		</if> 
+		<if test='frontGb == "A"'> <!-- 전체 -->
+		    AND A.FRONT_GB IN ('A','M','P')
+		</if> 
 		AND A.APPLY_GB IN ('A', #{applyGb})
 		<if test="socialSq != null and socialSq != ''">
 		AND A.SOCIAL_SQ != #{socialSq}

+ 100 - 74
src/main/webapp/WEB-INF/views/marketing/PlanDetailPopupForm.html

@@ -484,7 +484,7 @@
 					<tr>
 						<th>기획전명<em class="required" title="필수"></em></th>
 						<td>
-							<input type="text" name="planNm" id="planNm" maxlength="50" required="required" data-valid-name="기획전명"/>
+							<input type="text" name="planNm" id="planNm" maxlength="50" required="required" />
 						</td>
 						<th>서브제목</th>
 						<td>
@@ -987,7 +987,6 @@
 		$("#append3").css('display','none');
 	} */
 	
-	
 
 	// 기획전 복사
 	var fnPlanCopyPopup = function() {
@@ -1021,9 +1020,97 @@
 	}
 
 	 var fnPlanSave = function(formId) {
-		/* if (!gagajf.validation(formId))
-			return;  */
+		var attendData = gagaAgGrid.getAllRowData(gridOptionsAttendList);
+		if ($('#planRegisterForm select[name=planGb]').val() == "C" || $('#planUpdateForm select[name=planGb]').val() == "C" ) {
+			var arr = []; 
+			$.each(attendData, function(idx, item) {
+				arr[idx] = item.basDays;
+			});
+			
+			for(let i = 0; i < attendData.length; i++) {
 
+				if (attendData[i].benefitGb == 'A') {
+					if (attendData[i].basDays == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 적용 일수를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].cpnId == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 적용 쿠폰ID를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].pntAmt == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 적용 포인트를 입력하세요.');
+						return false;
+					}else if (attendData[i].pntUsableDay == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 유효기간 일수를 입력하세요.');
+						return false;
+					}
+				}
+				if (attendData[i].benefitGb == 'P') {
+					if (attendData[i].basDays == "") {
+						mcxDialog.alert('혜택(포인트) 적용 일수를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].pntAmt == "") {
+						mcxDialog.alert('혜택(포인트) 적용 포인트를 입력하세요.');
+						return false;
+					}else if (attendData[i].pntUsableDay == "") {
+						mcxDialog.alert('혜택(포인트) 유효기간 일수를 입력하세요.');
+						return false;
+					}
+				}
+				if (attendData[i].benefitGb == 'C') {
+					if (attendData[i].basDays == "") {
+						mcxDialog.alert('혜택(쿠폰) 적용 일수를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].cpnId == "") {
+						mcxDialog.alert('혜택(쿠폰) 적용 쿠폰ID를 입력하세요.');
+						return false;
+					}
+				}
+				
+				if (attendData[i].benefitGb == 'A' || attendData[i].benefitGb == 'C') {
+					data = {cpnId : attendData[i].cpnId};
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('marketing/planning/attend/coupon', jsonData, function(result) {
+						if (result.length < 1) {
+							mcxDialog.alert('입력하신 쿠폰 아이디 ' + attendData[i].cpnId.addComma() + '은 유효하지 않습니다.');
+							flag = false;
+							return;
+						}
+					});
+					
+					if (flag == false) {
+						return;
+					}
+				}
+			};
+		}
+			
+		var dupYn = false;
+		for(let i = 0; i < arr.length; i++) {
+		  const currElem = arr[i];
+		  for(let j = i+1; j < arr.length; j++) {
+		    if(currElem === arr[j]) {
+		      dupYn = true;
+		      break;
+		    }
+		  }
+		}
+		
+		if (dupYn == true) {
+			mcxDialog.alert('혜택적용 일수가 동일합니다.');
+			return;
+		}
+	 
+	 	gagajf.ajaxFormSubmit('/marketing/poll/list', formId, function(result) {
+				if (result.length < 1) {
+					mcxDialog.alert('입력하신 투표 일련번호가 존재 하지않습니다.');
+					return false;
+				}
+		});
+		
 		// 날짜 유효성 체크
 		var stDate = $(formId + ' input[name=startSearchDate]').val().replaceAll("-", "");
 		var edDate = $(formId + ' input[name=endSearchDate]').val().replaceAll("-", "");
@@ -1122,19 +1209,12 @@
 			multiBrand.push(item.brandGroupNo);
 		});
 		
-		//let allCateData = gagaAgGrid.getAllRowData(gridOptionsFGCateList);
-		/* var multiCate = [];
-		$.each(allCateData, function(idx, item) {
-			multiCate.push(item.cateNo);
-		}); */
-		
 		let allChannelData = gagaAgGrid.getAllRowData(gridOptionsAfList);
 		var multiChannel = [];
 		$.each(allChannelData, function(idx, item) {
 			multiChannel.push(item.afLinkCd);
 		});
-		
-		let attendData = gagaAgGrid.getAllRowData(gridOptionsAttendList);
+
 		
 		// poll 관리일련번호 유효성 체크
 		if (!gagajf.isNull($(formId + ' input[name=pollSq]').val())) {
@@ -1152,7 +1232,9 @@
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					if(!validationPlanDetail()){
+					
+					if( $('#planRegisterForm input[name=planNm]').val() == ''){
+						mcxDialog.alert('기획전명을 입력하세요.');
 						return false;
 					}
 					
@@ -1164,7 +1246,6 @@
 					} 
 					
 					var chkFrontGb = $('#planRegisterForm input:checkbox[name=frontGb]:checked');
-					
 					if(chkFrontGb.length < 1){
 						mcxDialog.alert("프론트구분을 체크해주세요.");
 						return false;
@@ -1247,6 +1328,7 @@
 						}	
 					
 					var jsonData =  JSON.stringify(data);
+					
 					gagajf.ajaxJsonSubmit("/marketing/planning/detail/create", jsonData, fnPlanDetailCallBack); 
 					uifnPopupClose('popupPlanDetail');
 					fnPlanListSearch();
@@ -1259,7 +1341,8 @@
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					if(!validationPlanDetail()){
+					if( $('#planUpdateForm input[name=planNm]').val() == ''){
+						mcxDialog.alert('기획전명을 입력하세요.');
 						return false;
 					}
 					
@@ -1492,55 +1575,6 @@
 		}
 	};
 	
-	// 카테고리 리스트 설정
-/* 	var columnCateList = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "사이트", field: "siteCd", width: 120, cellClass: 'text-center'},
-		{headerName: "카테고리 구분", field: "cateGb", width: 110, cellClass: 'text-center'},
-		{headerName: "카테고리 이름", field: "cateNm", width: 120, cellClass: 'text-center'},
-		{headerName: "번호", field: "cateNo", width: 150, cellClass: 'text-center', hide: true},
-	]; */ 
-	
-	// 카테고리 그리드 설정
-	/* var gridOptionsFGCateList = gagaAgGrid.getGridOptions(columnCateList);
-	gridOptionsFGCateList.rowSelection = "multiple";
-	gridOptionsFGCateList.suppressRowClickSelection = true; */
-	
-	// 브랜드 설정 선택삭제 버튼 클릭시
-   /*  $('#btnDeleteCate').on('click', function() {
-    	gridOptionsFGCateList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGCateList)});
-    });
-	 */
-
-	
-	// 카테고리 추가
-	/* $('#btnAddCate').on('click' , function () {
-		cfnOpenCategoryPopup("fnSetPopupCategoryInfo");
-	}); */
-	
-	// 카테고리 추가 콜백 함수
-	/* var fnSetPopupCategoryInfo = function (result) {
-		// 기존 리스트 데이터 for
-		for(let i = 0 ; i < result.length ; i++) {
-			let addChk = true, gridListValue = gagaAgGrid.getAllRowData(gridOptionsFGCateList);		// 받아온 모든 데이터
-
-			// 받아온 data for
-			for(let j = 0 ; j < gridListValue.length ; j++) {
-				// 동일한 data는 추가하지 않음
-				if(gridListValue[j].cateNo == result[i].cateNo) {	addChk = false;	}		// 중복체크
-			}
-
-			// 중복되지 않은 데이터 리스트에 추가
-			if(addChk) {
-				if(result[i].cate2No!=null)
-				{
-					mcxDialog.alert('카테고리1에서 선택하세요.');
-					return;
-				}
-				gagaAgGrid.addRowData(gridOptionsFGCateList, {"siteCd":result[i].siteCd , "cateGb":result[i].cateGb, "cateNm":result[i].cateNm, "cateNo":result[i].cateNo});
-			}
-		}
-	} */
 	
 	// 제휴채널 추가
 	$('#btnAddAf').on('click' , function () {
@@ -1571,15 +1605,6 @@
     	gridOptionsAfList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsAfList)});
     });
 	
-	// validation 체크
-	function validationPlanDetail() {
-		if( $('#planUpdateForm input[name=planNm]').val() == '' || $('#planRegisterForm input[name=planNm]').val() == ''){
-			mcxDialog.alert('기획전명을 입력하세요.');
-			return false;
-		}
-		return true;
-	} 
-	
 	// 신규회원여부 변경시
 	function newCustYnChange(pThis){
 		var selectVal = $(pThis).val();
@@ -1657,7 +1682,7 @@
 			return;
 		} else {
 	
-			var data = { benefit: '포인트',benefitGb: 'P', pntAmt:'', cpnId: ''};
+			var data = { benefit: '포인트',benefitGb: 'P', basDays:'' ,pntAmt:'', cpnId: '', pntUsableDay:''};
 			gagaAgGrid.addRowData(gridOptionsAttendList, data);
 		}
 
@@ -1724,6 +1749,7 @@
 		
 		 if (mode =='U') {
 			 if(planInfo.newCustYn == 'Y'){
+				 $('.custJoinDateTr').show();
 				 $("#planUpdateForm input[name=custJoinStDay]").val(planInfo.custJoinStdt.split(' ')[0]);
 				 $("#planUpdateForm input[name=custJoinEdDay]").val(planInfo.custJoinEddt.split(' ')[0]);
 			 }