diff --git a/src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java b/src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java index 9c56a1ab..3683fe77 100644 --- a/src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java +++ b/src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java @@ -46,7 +46,9 @@ public class FaxAddrServiceImpl extends EgovAbstractServiceImpl implements FaxAd private EgovIdGnrService idgenAddrTransHistId; - private static final String FAX_REGEX = "^(02|0[3-6][1-4]|030|050|060|070|080|1\\d{2})$"; + private static final String FAX_REGEX = "^(02\\d|03[1-3]|04[1-4]|05[1-5]|06[1-4]|030|050|060|070|080|1\\d{2})$"; + + private static final Pattern FAX_PATTERN = Pattern.compile(FAX_REGEX); private static final Charset EUC_KR = Charset.forName("EUC-KR"); @@ -403,7 +405,7 @@ public class FaxAddrServiceImpl extends EgovAbstractServiceImpl implements FaxAd if(sumFaxAddrCnt > MAX_FAX_ADDR_CNT) { return new StatusResponse( HttpStatus.BAD_REQUEST - , "주소록은 총 1000만개까지만 등록이 가능합니다." + , "주소록은 총 100만개까지만 등록이 가능합니다." , LocalDateTime.now() ); } diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp index f6ca9b64..3ed49321 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -1014,10 +1014,16 @@ $(document).ready(function (){ const textarea = $('#callTo'); const numbers = textarea.val().split('\n') - .map(num => num.trim()) - .filter(num => num !== ""); + .map(num => num.trim()) + .filter(num => num !== ""); + + + var numLen = numbers.length; + + if (!validateRowLimit(tableL.getDataCount(), numLen)) { + return false; + } - console.log('입력된 번호들 : ', numbers); // 현재 테이블에 있는 데이터 가져오기 const existingRows = tableL.getData(); @@ -1031,19 +1037,12 @@ $(document).ready(function (){ // const formattedNumber = formatPhoneNumber(number); // 번호 표준화 const formattedNumber = formatPhoneNumber(number); // 번호 표준화 - console.log('formattedNumber : ', formattedNumber); -// console.log('number : ', number) -// console.log('formattedNumber : ', formattedNumber) const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 - console.log('cleanedNumber : ', cleanedNumber); - console.log('cleanedNumber : ', cleanedNumber); if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크 if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사 -// tableL.addRow({ phone: formattedNumber }); // 표준화된 번호로 추가 tableL.addRow({ phone: cleanedNumber }); // 하이픈 제거된 번호로 추가 existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 } else { -// alert(`유효하지 않은 번호 형식: ${number}`); invalidNumbers.push(number); // 유효하지 않은 번호를 배열에 추가 } } else { @@ -1225,7 +1224,10 @@ $(document).ready(function (){ addPhoneList.push({phone: removeDash(chkPhone.trim())}); } }); - + + if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) { + return false; + } if(addPhoneList.length > 0){ //연락처 추가해 주기 addPhoneInfo(addPhoneList); @@ -1249,7 +1251,10 @@ $(document).ready(function (){ addPhoneList.push({phone: removeDash(chkPhone.trim())}); } }); - + + if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) { + return false; + } if(addPhoneList.length > 0){ //연락처 추가해 주기 addPhoneInfo(addPhoneList); @@ -1287,6 +1292,11 @@ $(document).ready(function (){ addPhoneList.push({phone: removeDash(chkPhone.trim())}); } }); + + if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) { + return false; + } + if(addPhoneList.length > 0){ //연락처 추가해 주기 @@ -1301,6 +1311,7 @@ $(document).ready(function (){ //자주보내는 번호 팝업 전체추가 버튼 처리 $(document).on('click', '#bookMarkAddPhoneAll', function (){ + var addPhoneList = []; //신규로 추가할 전화번호 저장변수 $("input:checkbox[name='bookAddrChk']").each(function(index){ var chkPhone = $(this).val(); @@ -1312,6 +1323,12 @@ $(document).ready(function (){ } }); + + + if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) { + return false; + } + if(addPhoneList.length > 0){ //연락처 추가해 주기 addPhoneInfo(addPhoneList); @@ -2919,6 +2936,12 @@ function addrToList_advc(type){ }else{ // 선택한 Row 데이터 저장해주기 + + if (!validateRowLimit(tableL.getDataCount(), tableAddr.getDataCount())) { + return false; + } + + // 기존 tableL의 데이터를 가져옵니다. var existingData = tableL.getData(); var addrData; @@ -3395,6 +3418,16 @@ function getMjMsgSentListAll(pageNo) { }); } +function validateRowLimit(currentRows, newRows, limit = 300000) { + const totalRows = currentRows + newRows; + if (totalRows > limit) { + alert('안정적인 서비스 운영을 위해서 최대 '+limit+'건 이내로 분할 발송해 주시기 바랍니다.'); + return false; + } + return true; +} + +