rosewiper 2024-01-15
친구톡 요금 계산 및 발송시간 제한 처리
@9a9977af1af1c8c4a328b3f6bc007885566ccf41
src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
--- src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
@@ -171,6 +171,10 @@
 		if(mberManageVO.getKakaoAtPrice() == 0.0f)
 			mberManageVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice());
 		
+		//카카오 친구톡 개인 단가가 없는 경우 시스템 단가로
+		if(mberManageVO.getKakaoFtPrice() == 0.0f)
+			mberManageVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice());
+		
 		
 		// SMS 인경우
 		// 사용자 개인 단가가 없으면 시스템 단가로
src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
--- src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
@@ -146,7 +146,7 @@
 				String friendId = kakaoVO.getFriendId();
 				KakaoVO resultTemplateVO = new KakaoVO();
 				
-				if(!friendId.equals("") || friendId != null) {
+				if(friendId != null) {
 					
 					System.out.println("+++++++++++++++++++++++ friendId ::: "+friendId);
 					
@@ -155,6 +155,41 @@
 				}
 				
 				model.addAttribute("resultTemplateVO", resultTemplateVO);
+				
+				
+				//친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지
+				
+				SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+				
+				Date nows = new Date();
+				String nowDate = sdf1.format(nows);
+				cal.setTime(nows);
+				
+				int hours = cal.get(Calendar.HOUR_OF_DAY);
+				int minuts = cal.get(Calendar.MINUTE);
+
+				boolean sendStatus = true;
+				
+				if(hours >= 20) {
+					
+					if(minuts >= 50) {
+						
+						System.out.println("발송금지 시간" + hours + ":" + minuts); 
+						sendStatus = false;
+						
+					}
+					
+				}
+				
+				if(hours < 8) {
+					
+					System.out.println("발송금지 시간" + hours + ":" + minuts);
+					sendStatus = false;
+					
+				}
+				
+				System.out.println("발송상태는 ::: "+sendStatus);
+				model.addAttribute("sendStatus", sendStatus);
 			
 			}
 			
src/main/java/itn/let/sym/site/service/JoinSettingVO.java
--- src/main/java/itn/let/sym/site/service/JoinSettingVO.java
+++ src/main/java/itn/let/sym/site/service/JoinSettingVO.java
@@ -36,6 +36,7 @@
 	private float customEdit3Price;			// 이미지 편집(첨부이미지 3장이하)
 	private float customTextPrice;			// 텍스트 단순수정
 	private float kakaoAtPrice;				// 카카오 알림톡 단가
+	private float kakaoFtPrice;				// 카카오 친구톡 단가
 	private float faxPrice;					// 팩스 단가
 	
 	private float refundPer; //환불 비율
@@ -209,6 +210,14 @@
 		this.kakaoAtPrice = kakaoAtPrice;
 	}
 
+	public float getKakaoFtPrice() {
+		return kakaoFtPrice;
+	}
+
+	public void setKakaoFtPrice(float kakaoFtPrice) {
+		this.kakaoFtPrice = kakaoFtPrice;
+	}
+
 	public float getFaxPrice() {
 		return faxPrice;
 	}
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -2104,6 +2104,7 @@
 			, CUSTOM_TEXT_PRICE		AS customTextPrice
 			, POINT_PER				AS pointPer
 			, KAKAO_AT_PRICE		AS kakaoAtPrice
+			, KAKAO_FT_PRICE		AS kakaoFtPrice
 			, FAX_PRICE				AS faxPrice
 		FROM MJ_MBER_SETTING
 	
@@ -2120,6 +2121,7 @@
 			, PICTURE2_PRICE		AS picture2Price
 			, PICTURE3_PRICE		AS picture3Price
 			, KAKAO_AT_PRICE		AS kakaoAtPrice
+			, KAKAO_FT_PRICE		AS kakaoFtPrice
 			, FAX_PRICE				AS faxPrice
 			, USER_MONEY			AS userMoney
 			, USER_POINT			AS userPoint
src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
@@ -94,7 +94,9 @@
 </script>
 	<ul class="tabType4">
         <li id="tabAt" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabAlim');">알림톡</button></li>
-        <c:if test="${loginVO.id eq 'rosewiper'}">
+        <c:if test="${fn:contains(pageContext.request.requestURL , 'localhost') 
+        || fn:contains(pageContext.request.requestURL , '192.168.0.33')
+        || fn:contains(pageContext.request.requestURL , '119.193.215.98')}">
 	        <li id="tabFt" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabFriend');">친구톡</button></li>
         </c:if>
         <li id="tabConf" class="tab topTab"><button type="button" onclick="javascript:fnLinkPageTopTab('tabConf');">카카오톡 설정</button></li>
src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
@@ -2,12 +2,15 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 <%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
 
 <script src="/js/kakao/templateComm.js"></script>
 
 <script type="text/javascript" src="<c:out value='/js/MJUtill.js' />"></script>
+<script type="text/javascript" src="<c:out value='/js/kakao/ft/ftPriceClclt.js' />"></script>
 <script type="text/javascript" src="<c:out value='/js/kakao/ft/ftTabulator.js' />"></script>
+<script type="text/javascript" src="<c:out value='/js/txtSpecialReplace.js' />"></script>
 <script type="text/javascript" src="<c:out value='/js/kakao/at/addr.js' />"></script>
 <script type="text/javascript" src="<c:out value='/js/common/popup.js' />"></script>
 <script type="text/javascript" src="<c:out value='/js/kakao/ft/friendstalkExcel.js' />"></script>
@@ -42,6 +45,14 @@
 		$('#bizForm #reserveYn').val($(this).val());
 	});
 	
+	//예약 발송 라디오 버튼 선택시 숨김 해제처리
+	$("#reserYnY").on('click', function(){
+		$('.rev_selected').show();
+		$('.send_rev .send_content').css('padding-bottom','0');
+		$('.send_btn .btnType:first-child').html('예약하기');
+		$('#bizForm #reserveYn').val($(this).val());
+	});
+	
 	//템플릿 내용 입력 글자수 체크 해주기
 	$("#inputTemplateContent").keyup(function(e){
 		
@@ -67,7 +78,6 @@
 			return false;
 			
 		}
-		
 		
 	});
 });
@@ -124,6 +134,16 @@
 	//초기 광고포함 여부 처리
 	var adFlagVal = $("input[name=ad_flag]:checked").val();
 	advTextChange(adFlagVal);
+	
+	var reserYn = $("input[name=reserYn]:checked").val();
+	if(reserYn == 'N'){
+		
+		$('.rev_selected').hide();
+		$('.send_rev .send_content').css('padding-bottom','108px');
+		$('.send_btn .btnType:first-child').html('발송하기');
+		$('#bizForm #reserveYn').val('N');
+		
+	}
 	
 }
 
@@ -430,9 +450,6 @@
 //저장 템플릿 불러오기 선택시 
 function myTemplateSelect(ftId){
 	
-	//alert(ftId);
-	console.log(ftId);
-	
 	var form = document.templateForm;
 	
 	form.friendId.value = ftId;
@@ -618,6 +635,48 @@
 	
 }
 
+//분할전송 건수 데이터 체크
+function checkNumber(event) {
+	var divideCnt = $('#frmDivideCnt').val();
+	if(!(event.key >= 0 && event.key <= 9)) {
+		return false;
+	}
+	
+	var totCnt = divideCnt + "" + event.key;
+	if(Number(totCnt) > 5000){
+		alert("분할전송 건수는 5,000건을 초과할 수 없습니다.");
+		$('#frmDivideCnt').val("20");
+		return false;
+	}
+  
+  return true;
+}
+
+function fnSelectMinChk(){
+	
+	var resHour = $("#msgResHour option:selected").val();
+	var resMin = $("#msgResMin option:selected").val();
+	
+	if(resHour == '20'){
+		
+		if(resMin >= 50 && resMin <= 59){
+			
+			alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다.");
+			$("#msgResMin").val("40").prop("selected", true);
+			
+		}
+		
+	}
+	
+}
+
+function fn_noTimeSend(){
+	
+	alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다.");
+	return false;
+	
+}
+
 </script>
 
 <!-- 로딩바 -->
@@ -640,12 +699,12 @@
 			</div>
 			
 			<!-- 유저 보유잔액 -->
-			<input type="hidden" id="oriUserMoney" value="<c:out value='${userMoney }' />">
+			<input type="hidden" id="oriUserMoney" value="<c:out value='${userMoney}' />">
 			
 			<!-- 각 금액 단가  -->
-			<input type="hidden" id="kakaoAtPrice" value="<c:out value='${sendPrice.kakaoAtPrice }' />"> <!-- 알림톡 단가  -->
-			<input type="hidden" id="longPrice" value="<c:out value='${sendPrice.longPrice }' />"> <!-- mms 단가  -->
-			<input type="hidden" id="shortPrice" value="<c:out value='${sendPrice.shortPrice }' />"> <!-- sms 단가  -->
+			<input type="hidden" id="kakaoFtPrice" value="<c:out value='${sendPrice.kakaoFtPrice}' />"> <!-- 친구톡 단가  -->
+			<input type="hidden" id="longPrice" value="<c:out value='${sendPrice.longPrice}' />"> <!-- mms 단가  -->
+			<input type="hidden" id="shortPrice" value="<c:out value='${sendPrice.shortPrice}' />"> <!-- sms 단가  -->
 			
 			<form id="bizForm" name="bizForm" method="multipart/form-data">
 				<input type="hidden" id="menuTopTab" name="menuTopTab" value="tabFriend">
@@ -657,6 +716,11 @@
 				<input type="hidden" id="templateName" name="templateName" value=""/>
 				<input type="hidden" id="adFlag" name="adFlag" value=""/>
 				<input type="hidden" id="templateContent" name="templateContent" value=""/>
+				
+				<!-- 예약발송 여부 -->
+				<input type="hidden" id="reserveYn" name="reserveYn" value="N"/>
+				<!-- 변환문자 유무 -->
+				<input type="hidden" id="txtReplYn" name="txtReplYn" value="N"/>
 				
 				<div class="send_general friend_talk_wrap kakao_wrap">
 					<div class="send_left">
@@ -1087,18 +1151,18 @@
 														<button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주보내는 번호</button>
 													</div>
 													<div class="btn_popup_wrap check_validity_wrap">
-														<button type="button" class="btnType btnType7">오류 검사<i class="qmMark error_qm"></i></button>
+														<button type="button" class="btnType btnType7 check_validity">오류 검사<i class="qmMark error_qm"></i></button>
 														<div class="error_hover_cont send_hover_cont">
-															<p>등록하신 전화번호(형식 등)가 정확하게 입력되었는지 오류여부를 자동으로 검사할 수 있습니다.</p>
-															<span>(예시) 010-1234-0001(O),<br> 010-123-0001(X)</span>
+															<p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p>
+															<span>(예시) 010-1234-0001(O) / 010-12345-0001(X)</span>
 														</div>
 													</div>
 												</div>
 											</div>
 											<div class="list_bottom clearfix">
 												<div class="remove_btnWrap">
-													<button type="button" class="btnType15" id="all_del"><i class="remove_img"></i>전체삭제</button>
-													<button type="button" class="btnType15" id="select_del"><i class="remove_img"></i>선택삭제</button>
+													<button type="button" class="btnType15 all_del"><i class="remove_img"></i>전체삭제</button>
+													<button type="button" class="btnType15 select_del"><i class="remove_img"></i>선택삭제</button>
 												</div>
 												<div class="list_bottom_right">
 													<p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p>
@@ -1127,7 +1191,8 @@
 													<input type="radio" id="radio_bill_1" name="radio_bill" checked="checked">
 													<label for="radio_bill_1">보유잔액</label>
 													<label for="userMoney" class="label">보유잔액</label>
-													<input type="text" id="userMoney" name="userMoney" value="0" readonly="">
+													<fmt:formatNumber type="number" maxFractionDigits="3" value="${sendPrice.userMoney}" var="commaPrice" />
+													<input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly="">
 													<span class="won">원</span>
 													<button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button>
 												</div>
@@ -1205,7 +1270,7 @@
 						</table>
 					</div>
 					<div class="send_right">
-						<div class="phone">
+						<div class="phone" style="top: 201px;">
 							<div class="phoneIn">
 								<p class="prev_p">
 									<img src="/publish/images/content/kakao_prev_icon.png" alt="">
@@ -1248,11 +1313,19 @@
 										</ul>
 									</div>
 									<div class="send_btn">
-										<button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button>
+									<%-- 친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지 --%>
+										<c:choose>
+											<c:when test="${sendStatus eq 'true'}">
+												<button type="button" class="btnType btnType11" onclick="javascript:fn_sendMsgData(); return false;">발송하기</button>
+											</c:when>
+											<c:otherwise>
+												<button type="button" class="btnType btnType11" onclick="javascript:fn_noTimeSend(); return false;">발송하기</button>
+											</c:otherwise>
+										</c:choose>
 										<button type="button" class="btnType btnType10" onclick="javascript:fnTestSend(); return false;">테스트발송</button>
 									</div>
 								</div>
-								<div class="rev_selected">
+								<div class="rev_selected" >
 									<div class="rev_top">
 										<span>날짜 :</span>
 										<div class="calendar_wrap">
@@ -1261,7 +1334,7 @@
 										<div class="selBox">
 											<label for="msgResHour" class="label">시 선택</label>
 											<select class="selType1" id="msgResHour" name="msgResHour">
-												<c:forEach  var="hour"  begin="0" end="23" step="1" varStatus="status">
+												<c:forEach  var="hour"  begin="8" end="20" step="1" varStatus="status">
 													<c:choose>
 														<c:when test="${hour < 10}">
 															<option value="0${hour}">0${hour}시</option>
@@ -1273,8 +1346,8 @@
 												</c:forEach>
 											</select>
 											<label for="msgResMin" class="label">분 선택</label>
-											<select class="selType1" id="msgResMin" name="msgResMin">
-												<c:forEach var="min" begin="0" end="55" step="5">
+											<select class="selType1" id="msgResMin" name="msgResMin" onChange="fnSelectMinChk();">
+												<c:forEach var="min" begin="0" end="59" step="1">
 													<c:choose>
 														<c:when test="${min < 10}">
 															<option value="0${min}">0${min}분</option>
@@ -1287,15 +1360,10 @@
 											</select>
 										</div>
 									</div>
-									<div class="rev_bottom">
+									<%-- <div class="rev_bottom">
 										<input type="checkbox" id="inputDivideChk" name="inputDivideChk">
 										<label for="inputDivideChk">분할전송</label>
-										<select class="selType1" id="divideCnt" name="divideCnt">
-					 						<option value="2">2</option>
-					 						<option value="10">10</option>
-					 						<option value="20">20</option>
-					 						<option value="30">30</option>
-					 					</select>
+										<input type="text" class="dividType1" id="frmDivideCnt" name="frmDivideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/>
 										<label for="divideCnt">건</label>
 										<select class="selType1" id="divideTime" name="divideTime">
 					 						<option value="5">05분</option>
@@ -1305,7 +1373,7 @@
 					 						<option value="30">30분</option>
 					 					</select>
 					 					<label for="divideTime">간격</label>
-									</div>
+									</div> --%>
 								</div>
 							</div>
 						</div>
src/main/webapp/js/kakao/ft/friendstalkExcel.js
--- src/main/webapp/js/kakao/ft/friendstalkExcel.js
+++ src/main/webapp/js/kakao/ft/friendstalkExcel.js
@@ -100,7 +100,7 @@
 								if(checkHpNum(item.phone)){
 								
 									excelAddr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4});
-									console.log(item.phone);
+
 								}/* else{
 									
 									alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다.");
src/main/webapp/js/kakao/ft/ftTabulator.js
--- src/main/webapp/js/kakao/ft/ftTabulator.js
+++ src/main/webapp/js/kakao/ft/ftTabulator.js
@@ -185,15 +185,6 @@
 	    	//연락처 추가해 주기
 			addPhoneInfo(tabledata);
 	    	
-		    //tableL.addData(tabledata);
-		    
-		    //전체 데이터 갯수 구하기
-		    //totRows = tableL.getRows().length;
-		    //updateTotCnt(totRows);
-		    
-		    //결제 금액 구하기
-		    totalPriceSum(totRows);
-		    
 		    $('#callTo').val("");
 	    
 	    }
@@ -217,9 +208,63 @@
 				tableL.clearData();
 				$("#rowTotCnt").text(0); //총건수 수정
 				$("#rowDupCnt").text(0); //중복건수 수정
-				totalPriceSum(0);		 //결제 금액 수정
+				totalFtPriceSum(0);		 //결제 금액 수정
 			}
 	
+		}
+		
+	});
+	
+	// 받는사람 선택삭제 버튼 처리해주기
+	$('.select_del').click(function(){
+		
+		if(tableL == null || tableL == ""){
+			
+			alert("받는사람을 추가해 주세요.");
+			return false;
+		
+		}
+		
+		var selectedData = tableL.getSelectedRows();
+		
+		if(selectedData == "" || selectedData == null){
+			
+			alert("삭제할 연락처를 선택해주세요.");
+			return false;
+		
+		}else{ // 선택한 Row 데이터 삭제하기
+			
+			if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){
+				
+				for(var i=0; i < selectedData.length; i++){
+					
+					selectedData[i].delete();
+				
+				}
+			
+				totRows = tableL.getRows().length;
+			    
+				var smsTxtArea = $('#inputTemplateContent').val();
+				
+				//일괄변환 문구 결제금액 처리
+				if(smsTxtArea.indexOf("#{이름}") > -1
+						|| smsTxtArea.indexOf("#{1}") > -1
+						|| smsTxtArea.indexOf("#{2}") > -1
+						|| smsTxtArea.indexOf("#{3}") > -1
+						|| smsTxtArea.indexOf("#{4}") > -1){
+					
+					fnFtReplCell();
+					
+				}else{
+					//결제 금액 구하기
+					totalFtPriceSum(totRows);
+				}
+				
+				//결제금액 합계 파라이터에 입력
+				$('#rowTotCnt').text(numberWithCommas(totRows));
+				
+			}
+
 		}
 		
 	});
@@ -510,24 +555,27 @@
 		_fileIdx = 0;	//form file idx 초기화
 		
 		totRows = tableL.getRows().length; 
-		updateTotCnt(totRows); //전체 데이터 갯수 구하기
 		
-		var smsTxtArea = $('#smsTxtArea').val();
+		var smsTxtArea = $('#inputTemplateContent').val();
+		
 		//일괄변환 문구 결제금액 처리
-		if(smsTxtArea.indexOf("[*이름*]")  > -1 
-				|| smsTxtArea.indexOf("[*1*]") > -1
-				|| smsTxtArea.indexOf("[*2*]") > -1
-				|| smsTxtArea.indexOf("[*3*]") > -1
-				|| smsTxtArea.indexOf("[*4*]") > -1){
-			
-			fnReplCell();
+		if(smsTxtArea.indexOf("#{이름}")  > -1 
+				|| smsTxtArea.indexOf("#{1}") > -1
+				|| smsTxtArea.indexOf("#{2}") > -1
+				|| smsTxtArea.indexOf("#{3}") > -1
+				|| smsTxtArea.indexOf("#{4}") > -1){
+
+			fnFtReplCell();
 			
 		}else{
 			
 			//결제 금액 구하기
-		    totalPriceSum(totRows);
+		    totalFtPriceSum(totRows);
 			
 		}
+		
+		//결제금액 합계 파라이터에 입력
+		$('#rowTotCnt').text(numberWithCommas(totRows));
 		
 	}
 	
@@ -569,3 +617,212 @@
 	}
 	
 }
+
+
+//특정문구 일괄변환 문자길이 체크 하기
+function fnFtReplCell(){
+	
+	var smsTxtArea = $('#inputTemplateContent').val();
+	
+	//이벤트 잔여 캐시 자동 처리 관련 변수
+	var eachPrice = parseFloat($("#eachPrice").val());
+	var kakaoFtPrice = parseFloat($("#kakaoFtPrice").val());
+	var shortPrice = parseFloat($("#shortPrice").val());
+	var longPrice = parseFloat($("#longPrice").val());
+	
+	if(smsTxtArea.indexOf("#{이름}")  > -1 
+			|| smsTxtArea.indexOf("#{1}") > -1
+			|| smsTxtArea.indexOf("#{2}") > -1
+			|| smsTxtArea.indexOf("#{3}") > -1
+			|| smsTxtArea.indexOf("#{4}") > -1){
+		
+		
+		var rowData = tableL.getRows();
+		var recTableData = tableL.getRows();		 // 받는사람 리스트의 전체 목록을 저장
+		//var tableData = [];
+		
+		var msg_short = 0;		//단문문자 갯수
+		var msg_long = 0;		//장문문자 갯수
+		
+		//일괄변환문자 포함 여부 변경 - 문자내용에 치환변환 문자는 있지만 받는사람 데이터에 치환 데이터를 안넣는 경우 오류가 발생하여 상태값 입력 위치 상단으로 변경함.
+		//치환데이터가 없는 경우 Alert 띄우고 빠져나가기 때문에  치환문자 상태 체크값이 누락되어서 변경함 - 20230407 우영두
+		$('#txtReplYn').val("Y");
+		
+		var nmStatus = false;
+		var rep1Status = false;
+		var rep2Status = false;
+		var rep3Status = false;
+		var rep4Status = false;
+		
+		if(smsTxtArea.indexOf("#{이름}")  > -1){
+			
+			nmStatus = true;
+		}
+		
+		if(smsTxtArea.indexOf("#{1}")  > -1){
+			
+			rep1Status = true;
+		}
+		
+		if(smsTxtArea.indexOf("#{2}")  > -1){
+			
+			rep2Status = true;
+		}
+		
+		if(smsTxtArea.indexOf("#{3}")  > -1){
+			
+			rep3Status = true;
+		}
+		
+		if(smsTxtArea.indexOf("#{4}")  > -1){
+			
+			rep4Status = true;
+		}
+
+		
+		//기존 받는사람 리스트를 배열에 미리 담아둔다.
+		if(recTableData.length > 0){
+			
+			for(var j=0; j < recTableData.length; j++){
+				
+				var smsTxt = smsTxtArea;
+				
+				if(typeof recTableData[j].getData().name != 'undefined' && recTableData[j].getData().name != null && recTableData[j].getData().name != ""){
+					
+					var name = recTableData[j].getData().name;
+					smsTxt = stringReplaceAll(smsTxt, "#{이름}", name);
+					
+				}
+				
+				if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null && recTableData[j].getData().rep1 != ""){
+					
+					var rep1 = recTableData[j].getData().rep1;
+					smsTxt = stringReplaceAll(smsTxt, "#{1}", rep1);
+					
+				}
+				
+				if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null  && recTableData[j].getData().rep2 != ""){
+					
+					var rep2 = recTableData[j].getData().rep2;
+					smsTxt = stringReplaceAll(smsTxt, "#{2}", rep2);
+					
+				}
+				
+				if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null  && recTableData[j].getData().rep3 != ""){
+					
+					var rep3 = recTableData[j].getData().rep3;
+					smsTxt = stringReplaceAll(smsTxt, "#{3}", rep3);
+					
+				}
+				
+				if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null && recTableData[j].getData().rep4 != ""){
+					
+					var rep4 = recTableData[j].getData().rep4;
+					smsTxt = stringReplaceAll(smsTxt, "#{4}", rep4);
+					
+				}
+				
+				
+				var msgLen = strMaxCharacterCnt(smsTxt);
+				var maxLenChar = 1000;
+				
+				var imgType = $("#imageType").val();
+				
+				//일반 이미지 첨부시 글자수 최대 400글자
+				if(imgType == "I"){
+					
+					maxLenChar = 400;
+					
+				}else if(imgType == "W"){
+					//와이드 이미지 첨부시 글자수 최대 76글자
+					maxLenChar = 76;
+					
+				}
+				
+				if(msgLen < 1){
+					
+					
+				}else if(msgLen > maxLenChar){
+					
+					alert("친구톡 내용은 "+ maxLenChar +" 자를 넘을 수 없습니다.");
+					tableL.clearData(); //기존 받는사람 목록을 삭제.
+					return false;
+					
+				}
+				
+				//첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자.
+				if(j == 0){
+					
+					//미리보기에 내용 입력해 주기
+					$('.template_text').text(smsTxt);
+					
+				}
+				
+			}
+
+		}
+		
+		//결제 금액 구하기
+	    totalFtPriceSum(tableL.getRows().length);
+		
+	}
+	
+}
+
+
+//오류 검사 버튼 처리
+$('.check_validity').click(function(){
+	
+	var invalid = tableL.getInvalidCells();		//오류 데이터 체크
+	var dataLen = tableL.getRows().length;		//연락처 데이터 갯수
+	var totLen = invalid.length;				//오류 데이터 갯수
+	var errMsg = "";							//최종 alert에 표시할 메시지 저장 변수
+	
+	if(dataLen > 0){ //연락처 정보가 있으면 수행
+		
+		if(totLen > 0){ //내용에 오류가 있으면 수행
+			
+			//오류 데이터 값 저장
+			for(var i=0; i < totLen; i++){
+				
+				var cellValue = invalid[i].getValue();
+				
+				if(i == 0){
+					
+					errMsg = cellValue;
+					
+				}else{
+					
+					errMsg = errMsg +", "+ cellValue;
+					
+				}
+				
+			}
+			
+			if(errMsg == "" || errMsg == null){
+				
+				alert("내용에 오류가 있습니다.");
+				return false;
+				
+			}else{
+				
+				alert(errMsg + "의 내용에 오류가 있습니다.");
+				return false;
+				
+			}
+			
+		}else{
+			
+			alert("오류 데이터가 없습니다.");
+			return false;
+			
+		}
+		
+	}else{
+		
+		alert("연락처를 입력해 주세요.");
+		return false;
+		
+	}
+	
+});
src/main/webapp/js/kakao/templateComm.js
--- src/main/webapp/js/kakao/templateComm.js
+++ src/main/webapp/js/kakao/templateComm.js
@@ -70,27 +70,26 @@
 		
 	}
 	
-	
+	//제한글자수를 넘겼을 경우 최대 글자수까지 잘라주고 미리보기 및 글자수 표시처리
 	if(conLeng > limitLeng){
 		
 		var splicecon = strMaxLengthSubstring(contents, limitLeng-1);
 		 $('#inputTemplateContent').val(splicecon);
-		return false;
+		contents = splicecon;
+		conLeng = strMaxCharacterCnt(contents);
 		
-	}else{//현재 입력한 글자수 우측 하단에 표시해 주기
-		
-		var repContent = "";
-		repContent = contents.replace(/(?:\r\n|\r|\n)/g, '<br/>');
-		
-		$('.nowChar').text(conLeng + " /");
-		$('.totChar').text(" "+limitLeng);
-		$('.template_text').show();
-		if(repContent != ''){
-			$('.template_text').html(repContent);
-		}else{
-			$('.template_text').html("내용 미리보기");
-		}
-		
+	}
+	
+	var repContent = "";
+	repContent = contents.replace(/(?:\r\n|\r|\n)/g, '<br/>');
+	
+	$('.nowChar').text(conLeng + " /");
+	$('.totChar').text(" "+limitLeng);
+	$('.template_text').show();
+	if(repContent != ''){
+		$('.template_text').html(repContent);
+	}else{
+		$('.template_text').html("내용 미리보기");
 	}
 	
 }
(No newline at end of file)
Add a comment
List