diff --git a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java index afdbea95..e1df6029 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java +++ b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java @@ -171,6 +171,10 @@ public class KakaoSendUtil { if(mberManageVO.getKakaoAtPrice() == 0.0f) mberManageVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); + //카카오 친구톡 개인 단가가 없는 경우 시스템 단가로 + if(mberManageVO.getKakaoFtPrice() == 0.0f) + mberManageVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); + // SMS 인경우 // 사용자 개인 단가가 없으면 시스템 단가로 diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 749f614d..201b4c64 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -146,7 +146,7 @@ public class KakaoFriendsTalkSendController { 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 @@ public class KakaoFriendsTalkSendController { } 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); } diff --git a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java index 0fe89cea..452c3f5a 100644 --- a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java +++ b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java @@ -36,6 +36,7 @@ public class JoinSettingVO { private float customEdit3Price; // 이미지 편집(첨부이미지 3장이하) private float customTextPrice; // 텍스트 단순수정 private float kakaoAtPrice; // 카카오 알림톡 단가 + private float kakaoFtPrice; // 카카오 친구톡 단가 private float faxPrice; // 팩스 단가 private float refundPer; //환불 비율 @@ -209,6 +210,14 @@ public class JoinSettingVO { this.kakaoAtPrice = kakaoAtPrice; } + public float getKakaoFtPrice() { + return kakaoFtPrice; + } + + public void setKakaoFtPrice(float kakaoFtPrice) { + this.kakaoFtPrice = kakaoFtPrice; + } + public float getFaxPrice() { return faxPrice; } diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index f187073c..5b3e333c 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/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 diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp index 5ca30dcb..691c2830 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp @@ -94,7 +94,9 @@ function usrDeptChk(){
- + <%-- 친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지 --%> + + + + + + + +
-
+
날짜 :
@@ -1261,7 +1334,7 @@ function fnEmptyId(){
- + @@ -1287,15 +1360,10 @@ function fnEmptyId(){
-
+ <%--
- + -
+
--%>
diff --git a/src/main/webapp/js/kakao/ft/friendstalkExcel.js b/src/main/webapp/js/kakao/ft/friendstalkExcel.js index cad5ebba..3ea21885 100644 --- a/src/main/webapp/js/kakao/ft/friendstalkExcel.js +++ b/src/main/webapp/js/kakao/ft/friendstalkExcel.js @@ -100,7 +100,7 @@ function excelExport(event){ 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("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다."); diff --git a/src/main/webapp/js/kakao/ft/ftTabulator.js b/src/main/webapp/js/kakao/ft/ftTabulator.js index d091e2fb..3da934e5 100644 --- a/src/main/webapp/js/kakao/ft/ftTabulator.js +++ b/src/main/webapp/js/kakao/ft/ftTabulator.js @@ -185,15 +185,6 @@ $(document).ready(function (){ //연락처 추가해 주기 addPhoneInfo(tabledata); - //tableL.addData(tabledata); - - //전체 데이터 갯수 구하기 - //totRows = tableL.getRows().length; - //updateTotCnt(totRows); - - //결제 금액 구하기 - totalPriceSum(totRows); - $('#callTo').val(""); } @@ -217,13 +208,67 @@ $(document).ready(function (){ 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,25 +555,28 @@ function addPhoneInfo(data){ _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 addrToList(){ } } + + +//특정문구 일괄변환 문자길이 체크 하기 +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; + + } + +}); diff --git a/src/main/webapp/js/kakao/templateComm.js b/src/main/webapp/js/kakao/templateComm.js index a88e42cc..793eb7bb 100644 --- a/src/main/webapp/js/kakao/templateComm.js +++ b/src/main/webapp/js/kakao/templateComm.js @@ -70,27 +70,26 @@ function setContentsLengForFriends(contents){ } - + //제한글자수를 넘겼을 경우 최대 글자수까지 잘라주고 미리보기 및 글자수 표시처리 if(conLeng > limitLeng){ var splicecon = strMaxLengthSubstring(contents, limitLeng-1); $('#inputTemplateContent').val(splicecon); - return false; - - }else{//현재 입력한 글자수 우측 하단에 표시해 주기 - - var repContent = ""; - repContent = contents.replace(/(?:\r\n|\r|\n)/g, '
'); - - $('.nowChar').text(conLeng + " /"); - $('.totChar').text(" "+limitLeng); - $('.template_text').show(); - if(repContent != ''){ - $('.template_text').html(repContent); - }else{ - $('.template_text').html("내용 미리보기"); - } + contents = splicecon; + conLeng = strMaxCharacterCnt(contents); } + var repContent = ""; + repContent = contents.replace(/(?:\r\n|\r|\n)/g, '
'); + + $('.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