--- src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java
+++ src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java
... | ... | @@ -46,7 +46,9 @@ |
| 46 | 46 |
private EgovIdGnrService idgenAddrTransHistId; |
| 47 | 47 |
|
| 48 | 48 |
|
| 49 |
- private static final String FAX_REGEX = "^(02|0[3-6][1-4]|030|050|060|070|080|1\\d{2})$";
|
|
| 49 |
+ 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})$";
|
|
| 50 |
+ |
|
| 51 |
+ |
|
| 50 | 52 |
private static final Pattern FAX_PATTERN = Pattern.compile(FAX_REGEX); |
| 51 | 53 |
|
| 52 | 54 |
private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
... | ... | @@ -403,7 +405,7 @@ |
| 403 | 405 |
if(sumFaxAddrCnt > MAX_FAX_ADDR_CNT) {
|
| 404 | 406 |
return new StatusResponse( |
| 405 | 407 |
HttpStatus.BAD_REQUEST |
| 406 |
- , "주소록은 총 1000만개까지만 등록이 가능합니다." |
|
| 408 |
+ , "주소록은 총 100만개까지만 등록이 가능합니다." |
|
| 407 | 409 |
, LocalDateTime.now() |
| 408 | 410 |
); |
| 409 | 411 |
} |
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
... | ... | @@ -1014,10 +1014,16 @@ |
| 1014 | 1014 |
|
| 1015 | 1015 |
const textarea = $('#callTo');
|
| 1016 | 1016 |
const numbers = textarea.val().split('\n')
|
| 1017 |
- .map(num => num.trim()) |
|
| 1018 |
- .filter(num => num !== ""); |
|
| 1017 |
+ .map(num => num.trim()) |
|
| 1018 |
+ .filter(num => num !== ""); |
|
| 1019 | 1019 |
|
| 1020 |
- console.log('입력된 번호들 : ', numbers);
|
|
| 1020 |
+ |
|
| 1021 |
+ var numLen = numbers.length; |
|
| 1022 |
+ |
|
| 1023 |
+ if (!validateRowLimit(tableL.getDataCount(), numLen)) {
|
|
| 1024 |
+ return false; |
|
| 1025 |
+ } |
|
| 1026 |
+ |
|
| 1021 | 1027 |
|
| 1022 | 1028 |
// 현재 테이블에 있는 데이터 가져오기 |
| 1023 | 1029 |
const existingRows = tableL.getData(); |
... | ... | @@ -1031,19 +1037,12 @@ |
| 1031 | 1037 |
// const formattedNumber = formatPhoneNumber(number); // 번호 표준화 |
| 1032 | 1038 |
|
| 1033 | 1039 |
const formattedNumber = formatPhoneNumber(number); // 번호 표준화 |
| 1034 |
- console.log('formattedNumber : ', formattedNumber);
|
|
| 1035 |
-// console.log('number : ', number)
|
|
| 1036 |
-// console.log('formattedNumber : ', formattedNumber)
|
|
| 1037 | 1040 |
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 |
| 1038 |
- console.log('cleanedNumber : ', cleanedNumber);
|
|
| 1039 |
- console.log('cleanedNumber : ', cleanedNumber);
|
|
| 1040 | 1041 |
if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크
|
| 1041 | 1042 |
if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사
|
| 1042 |
-// tableL.addRow({ phone: formattedNumber }); // 표준화된 번호로 추가
|
|
| 1043 | 1043 |
tableL.addRow({ phone: cleanedNumber }); // 하이픈 제거된 번호로 추가
|
| 1044 | 1044 |
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 |
| 1045 | 1045 |
} else {
|
| 1046 |
-// alert(`유효하지 않은 번호 형식: ${number}`);
|
|
| 1047 | 1046 |
invalidNumbers.push(number); // 유효하지 않은 번호를 배열에 추가 |
| 1048 | 1047 |
} |
| 1049 | 1048 |
} else {
|
... | ... | @@ -1225,7 +1224,10 @@ |
| 1225 | 1224 |
addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
| 1226 | 1225 |
} |
| 1227 | 1226 |
}); |
| 1228 |
- |
|
| 1227 |
+ |
|
| 1228 |
+ if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) {
|
|
| 1229 |
+ return false; |
|
| 1230 |
+ } |
|
| 1229 | 1231 |
if(addPhoneList.length > 0){
|
| 1230 | 1232 |
//연락처 추가해 주기 |
| 1231 | 1233 |
addPhoneInfo(addPhoneList); |
... | ... | @@ -1249,7 +1251,10 @@ |
| 1249 | 1251 |
addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
| 1250 | 1252 |
} |
| 1251 | 1253 |
}); |
| 1252 |
- |
|
| 1254 |
+ |
|
| 1255 |
+ if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) {
|
|
| 1256 |
+ return false; |
|
| 1257 |
+ } |
|
| 1253 | 1258 |
if(addPhoneList.length > 0){
|
| 1254 | 1259 |
//연락처 추가해 주기 |
| 1255 | 1260 |
addPhoneInfo(addPhoneList); |
... | ... | @@ -1287,6 +1292,11 @@ |
| 1287 | 1292 |
addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
| 1288 | 1293 |
} |
| 1289 | 1294 |
}); |
| 1295 |
+ |
|
| 1296 |
+ if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) {
|
|
| 1297 |
+ return false; |
|
| 1298 |
+ } |
|
| 1299 |
+ |
|
| 1290 | 1300 |
|
| 1291 | 1301 |
if(addPhoneList.length > 0){
|
| 1292 | 1302 |
//연락처 추가해 주기 |
... | ... | @@ -1301,6 +1311,7 @@ |
| 1301 | 1311 |
|
| 1302 | 1312 |
//자주보내는 번호 팝업 전체추가 버튼 처리 |
| 1303 | 1313 |
$(document).on('click', '#bookMarkAddPhoneAll', function (){
|
| 1314 |
+ |
|
| 1304 | 1315 |
var addPhoneList = []; //신규로 추가할 전화번호 저장변수 |
| 1305 | 1316 |
$("input:checkbox[name='bookAddrChk']").each(function(index){
|
| 1306 | 1317 |
var chkPhone = $(this).val(); |
... | ... | @@ -1311,6 +1322,12 @@ |
| 1311 | 1322 |
addPhoneList.push({phone: removeDash(chkPhone.trim())});
|
| 1312 | 1323 |
} |
| 1313 | 1324 |
}); |
| 1325 |
+ |
|
| 1326 |
+ |
|
| 1327 |
+ |
|
| 1328 |
+ if (!validateRowLimit(tableL.getDataCount(), addPhoneList.length)) {
|
|
| 1329 |
+ return false; |
|
| 1330 |
+ } |
|
| 1314 | 1331 |
|
| 1315 | 1332 |
if(addPhoneList.length > 0){
|
| 1316 | 1333 |
//연락처 추가해 주기 |
... | ... | @@ -2919,6 +2936,12 @@ |
| 2919 | 2936 |
|
| 2920 | 2937 |
}else{ // 선택한 Row 데이터 저장해주기
|
| 2921 | 2938 |
|
| 2939 |
+ |
|
| 2940 |
+ if (!validateRowLimit(tableL.getDataCount(), tableAddr.getDataCount())) {
|
|
| 2941 |
+ return false; |
|
| 2942 |
+ } |
|
| 2943 |
+ |
|
| 2944 |
+ |
|
| 2922 | 2945 |
// 기존 tableL의 데이터를 가져옵니다. |
| 2923 | 2946 |
var existingData = tableL.getData(); |
| 2924 | 2947 |
var addrData; |
... | ... | @@ -3395,6 +3418,16 @@ |
| 3395 | 3418 |
}); |
| 3396 | 3419 |
} |
| 3397 | 3420 |
|
| 3421 |
+function validateRowLimit(currentRows, newRows, limit = 300000) {
|
|
| 3422 |
+ const totalRows = currentRows + newRows; |
|
| 3423 |
+ if (totalRows > limit) {
|
|
| 3424 |
+ alert('안정적인 서비스 운영을 위해서 최대 '+limit+'건 이내로 분할 발송해 주시기 바랍니다.');
|
|
| 3425 |
+ return false; |
|
| 3426 |
+ } |
|
| 3427 |
+ return true; |
|
| 3428 |
+} |
|
| 3429 |
+ |
|
| 3430 |
+ |
|
| 3398 | 3431 |
</script> |
| 3399 | 3432 |
|
| 3400 | 3433 |
<div class="loading_layer"> |
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
... | ... | @@ -195,6 +195,7 @@ |
| 195 | 195 |
dataType:'json', |
| 196 | 196 |
async: false, |
| 197 | 197 |
success: function (data) {
|
| 198 |
+ console.log('data : ', data);
|
|
| 198 | 199 |
if(data.isSuccess == true){
|
| 199 | 200 |
var listCnt = data.resultList.length; |
| 200 | 201 |
|
... | ... | @@ -206,15 +207,20 @@ |
| 206 | 207 |
callToList[i] = data.resultList[i].callTo; |
| 207 | 208 |
tableData.push({phone: removeDash(callToList[i])});
|
| 208 | 209 |
} |
| 209 |
- |
|
| 210 |
- if(tableData.length > 0){
|
|
| 211 |
- tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 |
|
| 212 | 210 |
|
| 213 |
- totRows = tableL.getRows().length; |
|
| 214 |
- updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 211 |
+ console.log('tableData : ', tableData);
|
|
| 212 |
+ if(tableData.length > 0){
|
|
| 215 | 213 |
|
| 216 |
- //결제 금액 구하기 |
|
| 217 |
- totalPriceSum(totRows); |
|
| 214 |
+ // 데이터 추가 |
|
| 215 |
+ setTimeout(() => {
|
|
| 216 |
+ tableL.addData(dupliPhoneData(tableData)); |
|
| 217 |
+ totRows = tableL.getRows().length; |
|
| 218 |
+ console.log('totRows : ', totRows);
|
|
| 219 |
+ updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 220 |
+ |
|
| 221 |
+ //결제 금액 구하기 |
|
| 222 |
+ totalPriceSum(totRows); |
|
| 223 |
+ }, 0); // 초기화 직후에 실행 |
|
| 218 | 224 |
} |
| 219 | 225 |
|
| 220 | 226 |
} else {
|
--- src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/include/msgDataIncludeExcel.jsp
... | ... | @@ -293,6 +293,12 @@ |
| 293 | 293 |
return false; |
| 294 | 294 |
|
| 295 | 295 |
} |
| 296 |
+ |
|
| 297 |
+ // 총 30만건이 넘으면 false |
|
| 298 |
+ if (!validateRowLimit($tableExcel.getDataCount(), tableL.getDataCount())) {
|
|
| 299 |
+ return false; |
|
| 300 |
+ } |
|
| 301 |
+ |
|
| 296 | 302 |
|
| 297 | 303 |
var addrData = $tableExcel.getData().map((row, index) => ({
|
| 298 | 304 |
name: row.addrNm, |
--- src/main/webapp/js/MJUtill.js
+++ src/main/webapp/js/MJUtill.js
... | ... | @@ -575,6 +575,7 @@ |
| 575 | 575 |
|
| 576 | 576 |
//중복 전화번호 체크하기 |
| 577 | 577 |
function dupliPhoneData(data){
|
| 578 |
+ // console.log('dupliPhoneData : ', data);
|
|
| 578 | 579 |
|
| 579 | 580 |
var chk = true; //중복값 유무 |
| 580 | 581 |
var uniqData = []; // 중복값 삭제 후 데이터 저장 |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?