--- src/main/java/itn/com/cmm/util/MsgSendUtils.java
+++ src/main/java/itn/com/cmm/util/MsgSendUtils.java
... | ... | @@ -338,6 +338,19 @@ |
| 338 | 338 |
setImagePathsForMsgSendVO(mjonMsgVO, sendVO); |
| 339 | 339 |
|
| 340 | 340 |
|
| 341 |
+ |
|
| 342 |
+ |
|
| 343 |
+ |
|
| 344 |
+ |
|
| 345 |
+ |
|
| 346 |
+ |
|
| 347 |
+ |
|
| 348 |
+ |
|
| 349 |
+ // 지연 여부 처리 |
|
| 350 |
+ if ("Y".equalsIgnoreCase(mjonMsgVO.getDelayYn())) {
|
|
| 351 |
+ calendar.add(Calendar.MINUTE, 30); // 모든 시간을 30분 뒤로 미룸 |
|
| 352 |
+ } |
|
| 353 |
+ |
|
| 341 | 354 |
// 예약 여부 확인 |
| 342 | 355 |
if ("Y".equalsIgnoreCase(mjonMsgVO.getReserveYn())) {
|
| 343 | 356 |
// 분할 발송일 경우 |
... | ... | @@ -356,6 +369,20 @@ |
| 356 | 369 |
} |
| 357 | 370 |
|
| 358 | 371 |
|
| 372 |
+ |
|
| 373 |
+ |
|
| 374 |
+ |
|
| 375 |
+ |
|
| 376 |
+ |
|
| 377 |
+ |
|
| 378 |
+ |
|
| 379 |
+ |
|
| 380 |
+ |
|
| 381 |
+ |
|
| 382 |
+ |
|
| 383 |
+ |
|
| 384 |
+ |
|
| 385 |
+ |
|
| 359 | 386 |
// 전송사 코드 셋팅 |
| 360 | 387 |
String agentCode = "00".equals(mjonMsgVO.getAgentCode()) |
| 361 | 388 |
? MsgSendUtils.assignAgentBasedOnCount(agentSendCounts, sendRateList) |
... | ... | @@ -367,10 +394,13 @@ |
| 367 | 394 |
} |
| 368 | 395 |
// Group TB에 넣어줄 제목 |
| 369 | 396 |
// 치환안된 sms 데이터로 넣어야함 |
| 370 |
- mjonMsgVO.setMmsSubject(getMmsgSubject(smsTxtTemp, msgKind)); |
|
| 397 |
+ log.info(" mjonMsgSendListVO size :: [{}]", mjonMsgSendListVO.size());
|
|
| 398 |
+ if (LONG_MSG_TYPE.equals(mjonMsgSendListVO.get(0).getMsgType())){
|
|
| 399 |
+ mjonMsgVO.setMmsSubject(getMmsgSubject(smsTxtTemp, msgKind)); |
|
| 400 |
+ } |
|
| 371 | 401 |
|
| 372 | 402 |
return true; |
| 373 |
- |
|
| 403 |
+ |
|
| 374 | 404 |
} |
| 375 | 405 |
|
| 376 | 406 |
/** |
... | ... | @@ -402,17 +432,29 @@ |
| 402 | 432 |
private static void checkSpamAndSetStatus(MjonMsgVO mjonMsgVO, String personalizedSmsTxt, List<String> resultSpamTxt) throws Exception {
|
| 403 | 433 |
String resultParser = ComGetSpamStringParser.getSpamTextParse(personalizedSmsTxt).trim(); |
| 404 | 434 |
int spmCnt = 0; |
| 435 |
+ String spmFilterTxt = ""; |
|
| 405 | 436 |
|
| 406 | 437 |
for (String spmTxt : resultSpamTxt) {
|
| 407 | 438 |
String parserStr = ComGetSpamStringParser.getSpamTextParse(spmTxt).trim(); |
| 408 | 439 |
if (resultParser.contains(parserStr)) {
|
| 409 | 440 |
spmCnt++; |
| 441 |
+ spmFilterTxt += spmTxt + ","; |
|
| 410 | 442 |
} |
| 411 | 443 |
} |
| 412 | 444 |
|
| 413 | 445 |
if (spmCnt > 0) { // 스팸 문자가 포함된 경우
|
| 414 |
- System.out.println("++++++++++++++ spam smsTxt ::: " + resultParser);
|
|
| 446 |
+ |
|
| 447 |
+ if (StringUtil.getWordRight(spmFilterTxt.trim(), 1).equals(",")) {
|
|
| 448 |
+ // 처음부터 idx 만큼 잘라낸 나머지 글자 |
|
| 449 |
+ spmFilterTxt = StringUtil.getWordLeft(spmFilterTxt.trim(), 1); |
|
| 450 |
+ |
|
| 451 |
+ } |
|
| 452 |
+ log.info(" + spmFilterTxt :: [{}]", spmFilterTxt);
|
|
| 453 |
+ log.info(" + resultParser :: [{}]", resultParser);
|
|
| 454 |
+ |
|
| 455 |
+// mjonMsgVO.setSpamKeyword(spmFilterTxt); |
|
| 415 | 456 |
mjonMsgVO.setSpamStatus("Y");
|
| 457 |
+ mjonMsgVO.setDelayYn("Y");
|
|
| 416 | 458 |
}else {mjonMsgVO.setSpamStatus("N");}
|
| 417 | 459 |
} |
| 418 | 460 |
|
... | ... | @@ -487,7 +529,7 @@ |
| 487 | 529 |
|
| 488 | 530 |
|
| 489 | 531 |
|
| 490 |
- private static void statusResponseSet (StatusResponse statusResponse, HttpStatus httpStatus, String msg ) {
|
|
| 532 |
+ public static void statusResponseSet (StatusResponse statusResponse, HttpStatus httpStatus, String msg ) {
|
|
| 491 | 533 |
statusResponse.setStatus(httpStatus); |
| 492 | 534 |
statusResponse.setMessage(msg); |
| 493 | 535 |
|
--- src/main/java/itn/let/mjo/mjocommon/MjonCommon.java
+++ src/main/java/itn/let/mjo/mjocommon/MjonCommon.java
... | ... | @@ -2,24 +2,112 @@ |
| 2 | 2 |
|
| 3 | 3 |
import java.io.IOException; |
| 4 | 4 |
import java.text.SimpleDateFormat; |
| 5 |
+import java.util.Calendar; |
|
| 5 | 6 |
import java.util.Date; |
| 7 |
+import java.util.List; |
|
| 6 | 8 |
|
| 9 |
+import javax.annotation.Resource; |
|
| 10 |
+ |
|
| 11 |
+import org.apache.commons.collections4.CollectionUtils; |
|
| 7 | 12 |
import org.apache.commons.httpclient.HttpClient; |
| 8 | 13 |
import org.apache.commons.httpclient.HttpStatus; |
| 9 | 14 |
import org.apache.commons.httpclient.methods.PostMethod; |
| 10 | 15 |
import org.json.simple.JSONObject; |
| 16 |
+import org.springframework.beans.factory.annotation.Value; |
|
| 11 | 17 |
import org.springframework.stereotype.Service; |
| 12 | 18 |
|
| 13 | 19 |
import com.mysql.jdbc.StringUtils; |
| 14 | 20 |
|
| 21 |
+import itn.com.cmm.MjonMsgSendVO; |
|
| 22 |
+import itn.com.cmm.OptimalMsgResultDTO; |
|
| 23 |
+import itn.com.cmm.util.MsgSendUtils; |
|
| 15 | 24 |
import itn.let.kakao.kakaoComm.KakaoVO; |
| 25 |
+import itn.let.mail.service.StatusResponse; |
|
| 26 |
+import itn.let.mjo.event.service.MjonEventService; |
|
| 27 |
+import itn.let.mjo.event.service.MjonEventVO; |
|
| 16 | 28 |
import itn.let.mjo.msg.service.MjonMsgVO; |
| 29 |
+import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; |
|
| 30 |
+import itn.let.mjo.msgholiday.service.MsgHolidayService; |
|
| 31 |
+import itn.let.mjo.msgholiday.service.MsgHolidayVO; |
|
| 32 |
+import itn.let.sym.site.service.EgovSiteManagerService; |
|
| 33 |
+import itn.let.sym.site.service.JoinSettingVO; |
|
| 34 |
+import itn.let.uss.umt.service.EgovUserManageService; |
|
| 35 |
+import itn.let.uss.umt.service.UserManageVO; |
|
| 36 |
+import lombok.extern.slf4j.Slf4j; |
|
| 17 | 37 |
|
| 38 |
+@Slf4j |
|
| 18 | 39 |
@Service("MjonCommon")
|
| 19 | 40 |
public class MjonCommon {
|
| 20 | 41 |
|
| 21 |
- //Slack Web Hook URL |
|
| 22 |
- private String url = "https://hooks.slack.com/services/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"; |
|
| 42 |
+ |
|
| 43 |
+ /** userManageService */ |
|
| 44 |
+ @Resource(name = "userManageService") |
|
| 45 |
+ private EgovUserManageService userManageService; |
|
| 46 |
+ |
|
| 47 |
+ /** 사이트 설정 */ |
|
| 48 |
+ @Resource(name = "egovSiteManagerService") |
|
| 49 |
+ EgovSiteManagerService egovSiteManagerService; |
|
| 50 |
+ |
|
| 51 |
+ @Resource(name = "MjonEventService") |
|
| 52 |
+ private MjonEventService mjonEventService; |
|
| 53 |
+ |
|
| 54 |
+ @Resource(name = "MsgHolidayService") |
|
| 55 |
+ private MsgHolidayService msgHolidayService; |
|
| 56 |
+ |
|
| 57 |
+ @Value("#{globalSettings['Globals.slack.hooks.url']}")
|
|
| 58 |
+ private String SLACK_URL; |
|
| 59 |
+ |
|
| 60 |
+ /** xpedite 솔루션 ID*/ |
|
| 61 |
+ @Value("#{globalSettings['Globals.slack.channel.name']}")
|
|
| 62 |
+ private String SLACK_CHANNEL; |
|
| 63 |
+ |
|
| 64 |
+ |
|
| 65 |
+ |
|
| 66 |
+ |
|
| 67 |
+ |
|
| 68 |
+ /** |
|
| 69 |
+ * @methodName : getAdminSandSlack |
|
| 70 |
+ * @author : 이호영 |
|
| 71 |
+ * @date : 2024.12.04 |
|
| 72 |
+ * @description : 기존 메소드 리펙토링 |
|
| 73 |
+ * @param mjonMsgVO |
|
| 74 |
+ */ |
|
| 75 |
+ public void getAdminSandSlack(MjonMsgVO mjonMsgVO) {
|
|
| 76 |
+ |
|
| 77 |
+ HttpClient client = new HttpClient(); |
|
| 78 |
+ PostMethod post = new PostMethod(SLACK_URL); |
|
| 79 |
+ |
|
| 80 |
+ try {
|
|
| 81 |
+ // 메시지 내용 설정 |
|
| 82 |
+ String smsTxt = formatSmsText(mjonMsgVO); |
|
| 83 |
+ String sandName = formatSandName(mjonMsgVO); |
|
| 84 |
+ |
|
| 85 |
+ // Slack 메시지 생성 |
|
| 86 |
+ JSONObject json = new JSONObject(); |
|
| 87 |
+ json.put("channel", SLACK_CHANNEL);
|
|
| 88 |
+ json.put("text", smsTxt);
|
|
| 89 |
+ json.put("username", sandName);
|
|
| 90 |
+ |
|
| 91 |
+ // Slack 요청 |
|
| 92 |
+ post.addParameter("payload", json.toString());
|
|
| 93 |
+ post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
|
|
| 94 |
+ |
|
| 95 |
+ // Slack 응답 처리 |
|
| 96 |
+ int responseCode = client.executeMethod(post); |
|
| 97 |
+ if (responseCode != HttpStatus.SC_OK) {
|
|
| 98 |
+ log.warn("Slack 메시지 전송 실패. Response: {}", post.getResponseBodyAsString());
|
|
| 99 |
+ } |
|
| 100 |
+ |
|
| 101 |
+ } catch (IllegalArgumentException e) {
|
|
| 102 |
+ log.error("Slack 메시지 전송 중 IllegalArgumentException 발생", e);
|
|
| 103 |
+ } catch (IOException e) {
|
|
| 104 |
+ log.error("Slack 메시지 전송 중 IOException 발생", e);
|
|
| 105 |
+ } catch (Exception e) {
|
|
| 106 |
+ log.error("Slack 메시지 전송 중 Exception 발생", e);
|
|
| 107 |
+ } finally {
|
|
| 108 |
+ post.releaseConnection(); |
|
| 109 |
+ } |
|
| 110 |
+ } |
|
| 23 | 111 |
|
| 24 | 112 |
/** |
| 25 | 113 |
* @throws Exception |
... | ... | @@ -28,8 +116,7 @@ |
| 28 | 116 |
* @작성자 : WYH |
| 29 | 117 |
* @Method 설명 : slack 메시지 전송 |
| 30 | 118 |
*/ |
| 31 |
- @SuppressWarnings("unchecked")
|
|
| 32 |
- public void getAdminSandSlack(MjonMsgVO mjonMsgVO) {
|
|
| 119 |
+ /*public void getAdminSandSlack(MjonMsgVO mjonMsgVO) {
|
|
| 33 | 120 |
|
| 34 | 121 |
HttpClient client = new HttpClient(); |
| 35 | 122 |
PostMethod post = new PostMethod(url); |
... | ... | @@ -43,6 +130,7 @@ |
| 43 | 130 |
String reservSmsTxt = ""; |
| 44 | 131 |
String smisingSmsTxt = ""; |
| 45 | 132 |
//예약문자를 발송하는 경우 문자 내용 앞에 "[예약]" 표시되도록 처리 |
| 133 |
+ |
|
| 46 | 134 |
if(reserveYn.equals("Y")) {
|
| 47 | 135 |
|
| 48 | 136 |
if(smishingYn.equals("Y") || delayYn.equals("Y")) {
|
... | ... | @@ -52,6 +140,8 @@ |
| 52 | 140 |
} |
| 53 | 141 |
|
| 54 | 142 |
smsTxt = reservSmsTxt; |
| 143 |
+ System.out.println("smishingYn : "+ smishingYn);
|
|
| 144 |
+ System.out.println("delayYn : "+ delayYn);
|
|
| 55 | 145 |
}else if(smishingYn.equals("Y") || delayYn.equals("Y")) {
|
| 56 | 146 |
|
| 57 | 147 |
smisingSmsTxt = "[스미싱의심]" + smsTxt; |
... | ... | @@ -75,7 +165,8 @@ |
| 75 | 165 |
} |
| 76 | 166 |
} |
| 77 | 167 |
} |
| 78 |
- sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType; |
|
| 168 |
+// sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType; |
|
| 169 |
+ sandName = "[개발테스트]"+"[" + userId + "]" + "[" + sandName + "]" + msgType; |
|
| 79 | 170 |
|
| 80 | 171 |
json.put("channel", "mjon메시지");
|
| 81 | 172 |
json.put("text", smsTxt);
|
... | ... | @@ -92,15 +183,18 @@ |
| 92 | 183 |
} |
| 93 | 184 |
} catch (IllegalArgumentException e) {
|
| 94 | 185 |
System.out.println("IllegalArgumentException posting to Slack " + e);
|
| 95 |
- } catch (IOException e) {
|
|
| 186 |
+ } |
|
| 187 |
+ catch (IOException e) {
|
|
| 96 | 188 |
System.out.println("IOException posting to Slack " + e);
|
| 97 |
- } catch (Exception e) {
|
|
| 189 |
+ } |
|
| 190 |
+ catch (Exception e) {
|
|
| 98 | 191 |
System.out.println("Exception posting to Slack " + e);
|
| 192 |
+ e.printStackTrace(); |
|
| 99 | 193 |
} finally {
|
| 100 | 194 |
post.releaseConnection(); |
| 101 | 195 |
} |
| 102 | 196 |
|
| 103 |
- } |
|
| 197 |
+ }*/ |
|
| 104 | 198 |
|
| 105 | 199 |
|
| 106 | 200 |
/** |
... | ... | @@ -113,11 +207,11 @@ |
| 113 | 207 |
public void sendSimpleSlackMsg(String msg) {
|
| 114 | 208 |
|
| 115 | 209 |
HttpClient client = new HttpClient(); |
| 116 |
- PostMethod post = new PostMethod(url); |
|
| 210 |
+ PostMethod post = new PostMethod(SLACK_URL); |
|
| 117 | 211 |
JSONObject json = new JSONObject(); |
| 118 | 212 |
try {
|
| 119 | 213 |
|
| 120 |
- json.put("channel", "mjon메시지");
|
|
| 214 |
+ json.put("channel", SLACK_CHANNEL);
|
|
| 121 | 215 |
//json.put("channel", "C04DNV4FYP6"); //개발 서버용
|
| 122 | 216 |
|
| 123 | 217 |
json.put("text", msg);
|
... | ... | @@ -254,7 +348,7 @@ |
| 254 | 348 |
public void getAdminKakaoAtSandSlack(KakaoVO kakaoVO) {
|
| 255 | 349 |
|
| 256 | 350 |
HttpClient client = new HttpClient(); |
| 257 |
- PostMethod post = new PostMethod(url); |
|
| 351 |
+ PostMethod post = new PostMethod(SLACK_URL); |
|
| 258 | 352 |
JSONObject json = new JSONObject(); |
| 259 | 353 |
try {
|
| 260 | 354 |
|
... | ... | @@ -289,7 +383,7 @@ |
| 289 | 383 |
} |
| 290 | 384 |
sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType; |
| 291 | 385 |
|
| 292 |
- json.put("channel", "mjon메시지");
|
|
| 386 |
+ json.put("channel", SLACK_CHANNEL);
|
|
| 293 | 387 |
json.put("text", smsTxt);
|
| 294 | 388 |
json.put("username", sandName);
|
| 295 | 389 |
|
... | ... | @@ -347,5 +441,179 @@ |
| 347 | 441 |
|
| 348 | 442 |
return returnId; |
| 349 | 443 |
} |
| 444 |
+ |
|
| 445 |
+ |
|
| 446 |
+ |
|
| 447 |
+private String formatSmsText(MjonMsgVO mjonMsgVO) {
|
|
| 448 |
+ String smsTxt = mjonMsgVO.getSmsTxt(); |
|
| 449 |
+ String reserveYn = safeGetString(mjonMsgVO.getReserveYn()); |
|
| 450 |
+ String delayYn = safeGetString(mjonMsgVO.getDelayYn()); |
|
| 451 |
+ String smishingYn = safeGetString(mjonMsgVO.getSmishingYn()); |
|
| 452 |
+ |
|
| 453 |
+ // 예약 문자와 스미싱 의심 처리 |
|
| 454 |
+ if ("Y".equals(reserveYn)) {
|
|
| 455 |
+ smsTxt = ("Y".equals(smishingYn) || "Y".equals(delayYn)) ? "[스미싱의심][예약]" + smsTxt : "[예약]" + smsTxt;
|
|
| 456 |
+ } else if ("Y".equals(smishingYn) || "Y".equals(delayYn)) {
|
|
| 457 |
+ smsTxt = "[스미싱의심]" + smsTxt; |
|
| 458 |
+ } |
|
| 459 |
+ |
|
| 460 |
+ // 그림 문자 처리 |
|
| 461 |
+ int fileCount = parseIntOrDefault(mjonMsgVO.getFileCnt(), 0); |
|
| 462 |
+ if ("6".equals(mjonMsgVO.getMsgType()) && fileCount > 0 && StringUtils.isNullOrEmpty(smsTxt)) {
|
|
| 463 |
+ smsTxt = "그림문자 " + smsTxt; |
|
| 464 |
+ } |
|
| 465 |
+ |
|
| 466 |
+ return smsTxt; |
|
| 467 |
+} |
|
| 468 |
+ |
|
| 469 |
+private String formatSandName(MjonMsgVO mjonMsgVO) {
|
|
| 470 |
+ String userId = mjonMsgVO.getUserId(); |
|
| 471 |
+ String callFrom = mjonMsgVO.getCallFrom(); |
|
| 472 |
+ String msgType = getMessageTypeLabel(mjonMsgVO); |
|
| 473 |
+ |
|
| 474 |
+ return String.format("[%s][%s]%s", userId, callFrom, msgType);
|
|
| 475 |
+} |
|
| 476 |
+ |
|
| 477 |
+private String getMessageTypeLabel(MjonMsgVO mjonMsgVO) {
|
|
| 478 |
+ String msgType = mjonMsgVO.getMsgType(); |
|
| 479 |
+ int fileCount = parseIntOrDefault(mjonMsgVO.getFileCnt(), 0); |
|
| 480 |
+ |
|
| 481 |
+ switch (msgType) {
|
|
| 482 |
+ case "4": |
|
| 483 |
+ return "[단문]"; |
|
| 484 |
+ case "6": |
|
| 485 |
+ return fileCount == 0 ? "[장문]" : "[그림]"; |
|
| 486 |
+ default: |
|
| 487 |
+ return ""; |
|
| 488 |
+ } |
|
| 489 |
+} |
|
| 490 |
+ |
|
| 491 |
+ |
|
| 492 |
+private int parseIntOrDefault(String value, int defaultValue) {
|
|
| 493 |
+ try {
|
|
| 494 |
+ return Integer.parseInt(value); |
|
| 495 |
+ } catch (NumberFormatException e) {
|
|
| 496 |
+ return defaultValue; |
|
| 497 |
+ } |
|
| 498 |
+} |
|
| 499 |
+ |
|
| 500 |
+ |
|
| 501 |
+ |
|
| 502 |
+ |
|
| 503 |
+ |
|
| 504 |
+ // 전체 로직 처리 (한 번에 모든 필요한 정보 반환) |
|
| 505 |
+ public boolean processUserAndCheckSms(MjonMsgVO mjonMsgVO, String userId) throws Exception {
|
|
| 506 |
+ UserManageVO userManageVO = getUserManageInfo(userId); |
|
| 507 |
+ |
|
| 508 |
+ // 기본값 처리된 사용자 정보와 문자 상태 |
|
| 509 |
+ String adminSmsNoticeYn = userManageVO.getAdminSmsNoticeYn(); |
|
| 510 |
+ String smishingYn = userManageVO.getSmishingYn(); |
|
| 511 |
+ String spamStatus = safeGetString(mjonMsgVO.getSpamStatus()); |
|
| 512 |
+ |
|
| 513 |
+ // 조건 체크 |
|
| 514 |
+ if ("Y".equals(adminSmsNoticeYn) || "Y".equals(spamStatus) || "Y".equals(smishingYn)) {
|
|
| 515 |
+ mjonMsgVO.setSmishingYn(smishingYn); // MjonMsgVO에 스미싱 정보 설정 |
|
| 516 |
+ |
|
| 517 |
+ // 스미싱 알림 처리 |
|
| 518 |
+ return handleSmishingAlert(mjonMsgVO); // 알림 처리 결과 반환 |
|
| 519 |
+ } |
|
| 520 |
+ |
|
| 521 |
+ return false; // 알림 처리되지 않음 |
|
| 522 |
+ } |
|
| 523 |
+ |
|
| 524 |
+ // 사용자 정보 조회 및 기본값 처리 |
|
| 525 |
+ private UserManageVO getUserManageInfo(String userId) throws Exception {
|
|
| 526 |
+// UserManageVO userManageVO = new UserManageVO(); |
|
| 527 |
+// userManageVO.setAdminSmsNoticeYn("Y"); // 기본값
|
|
| 528 |
+// userManageVO.setSmishingYn("N"); // 기본값
|
|
| 529 |
+// |
|
| 530 |
+ return userManageService.selectAdminSmsNoticeYn(new UserManageVO(userId)); |
|
| 531 |
+ } |
|
| 532 |
+ |
|
| 533 |
+ // 스미싱 알림 처리 |
|
| 534 |
+ private boolean handleSmishingAlert(MjonMsgVO mjonMsgVO) throws Exception {
|
|
| 535 |
+ JoinSettingVO joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); |
|
| 536 |
+ if (joinSettingVO == null || !"Y".equals(joinSettingVO.getHoliSmishingNoti()) || |
|
| 537 |
+ !"Y".equals(joinSettingVO.getSlackNoti())) {
|
|
| 538 |
+ return false; // 알림 조건 미충족 |
|
| 539 |
+ } |
|
| 540 |
+ |
|
| 541 |
+ // 알림 조건 충족 시 추가 작업 |
|
| 542 |
+ List<MsgAlarmSetVO> alarmList = getAlarmSettings(); |
|
| 543 |
+ List<MsgHolidayVO> holidayList = getHolidayList(); |
|
| 544 |
+ boolean isNotificationAllowed = new MjonHolidayApi().getHolidaySmishingPassStatus(alarmList, holidayList); |
|
| 545 |
+ |
|
| 546 |
+ // 알림 발송 |
|
| 547 |
+ if (!isNotificationAllowed) {
|
|
| 548 |
+ getAdminSandSlack(mjonMsgVO); |
|
| 549 |
+ return true; // 알림 발송 성공 |
|
| 550 |
+ } |
|
| 551 |
+ |
|
| 552 |
+ return false; // 알림 발송 조건 미충족 |
|
| 553 |
+ } |
|
| 554 |
+ |
|
| 555 |
+ // 안전하게 문자열 가져오기 |
|
| 556 |
+ private String safeGetString(String value) {
|
|
| 557 |
+ return value == null ? "" : value; |
|
| 558 |
+ } |
|
| 559 |
+ |
|
| 560 |
+ // 알림 설정 조회 |
|
| 561 |
+ private List<MsgAlarmSetVO> getAlarmSettings() throws Exception {
|
|
| 562 |
+ MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); |
|
| 563 |
+ msgAlarmSetVO.setUseYn("Y");
|
|
| 564 |
+ msgAlarmSetVO.setFirstIndex(0); |
|
| 565 |
+ return msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); |
|
| 566 |
+ } |
|
| 567 |
+ |
|
| 568 |
+ // 공휴일 정보 조회 |
|
| 569 |
+ private List<MsgHolidayVO> getHolidayList() throws Exception {
|
|
| 570 |
+ Calendar calendar = Calendar.getInstance(); |
|
| 571 |
+ int year = calendar.get(Calendar.YEAR); |
|
| 572 |
+ |
|
| 573 |
+ MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); |
|
| 574 |
+ msgHolidayVO.setFirstIndex(0); |
|
| 575 |
+ msgHolidayVO.setRecordCountPerPage(100); |
|
| 576 |
+ msgHolidayVO.setSearchHoliYear(Integer.toString(year)); |
|
| 577 |
+ return msgHolidayService.selectMsgHolidayList(msgHolidayVO); |
|
| 578 |
+ } |
|
| 579 |
+ |
|
| 580 |
+ // 이벤트 메시지 처리 |
|
| 581 |
+ public StatusResponse processEventMessages(String userId, MjonMsgVO mjonMsgVO, |
|
| 582 |
+ List<MjonMsgSendVO> mjonMsgSendVOList) throws Exception {
|
|
| 583 |
+ StatusResponse statusResponse = new StatusResponse(); |
|
| 584 |
+ |
|
| 585 |
+ try {
|
|
| 586 |
+ // 이벤트 정보 가져오기 |
|
| 587 |
+ MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo_advc(userId); |
|
| 588 |
+ if (eventMberInfo == null || "E".equals(eventMberInfo.getEventStatus())) {
|
|
| 589 |
+ return statusResponse; // 이벤트 상태가 종료인 경우 처리하지 않음 |
|
| 590 |
+ } |
|
| 591 |
+ |
|
| 592 |
+ // 최적화된 메시지 리스트 및 이벤트 정보 가져오기 |
|
| 593 |
+ OptimalMsgResultDTO result = MsgSendUtils.getOptimalMsgList(eventMberInfo, mjonMsgSendVOList); |
|
| 594 |
+ List<MjonMsgSendVO> optimalMsgList = result.getOptimalMsgList(); |
|
| 595 |
+ MjonEventVO returnEventMberInfo = result.getEventInfo(); |
|
| 596 |
+ |
|
| 597 |
+ // 이벤트 발송 내역이 있으면 |
|
| 598 |
+ if (CollectionUtils.isNotEmpty(optimalMsgList)) {
|
|
| 599 |
+ mjonMsgVO.setEventYn("Y"); // 그룹에 이벤트 발송 여부 설정
|
|
| 600 |
+ mjonMsgSendVOList.addAll(optimalMsgList); // 기존 리스트와 병합 |
|
| 601 |
+ } |
|
| 602 |
+ |
|
| 603 |
+ // 이벤트 상태 종료 시 업데이트 |
|
| 604 |
+ if (returnEventMberInfo != null && "E".equals(returnEventMberInfo.getEventStatus())) {
|
|
| 605 |
+ returnEventMberInfo.setMberId(userId); |
|
| 606 |
+ mjonEventService.updateEventEndStatus(returnEventMberInfo); |
|
| 607 |
+ } |
|
| 608 |
+ |
|
| 609 |
+ } catch (IllegalArgumentException e) {
|
|
| 610 |
+ |
|
| 611 |
+ // 메시지 타입 에러 처리 |
|
| 612 |
+ MsgSendUtils.statusResponseSet(statusResponse, org.springframework.http.HttpStatus.BAD_REQUEST, "이벤트 데이터 처리 중 오류가 발생하였습니다.\n관리자에게 문의해 주세요."); |
|
| 613 |
+ |
|
| 614 |
+ } |
|
| 615 |
+ |
|
| 616 |
+ return statusResponse; |
|
| 617 |
+ } |
|
| 350 | 618 |
|
| 351 | 619 |
} |
--- src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
+++ src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
... | ... | @@ -145,7 +145,7 @@ |
| 145 | 145 |
|
| 146 | 146 |
private String spamKeyword; //스팸 키워드 |
| 147 | 147 |
private String spamMsgGroupId; //스팸문자 문자전송 아이디 |
| 148 |
- private String spamStatus; //스팸문자 유무 (Y/N) |
|
| 148 |
+ private String spamStatus="N"; //스팸문자 유무 (Y/N) |
|
| 149 | 149 |
private String vipYn; //VIP 유무 (Y/N) |
| 150 | 150 |
private String approvalPnttm; // 승인일자 |
| 151 | 151 |
private String atchFiles; // 그림문자 파일정보 |
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
... | ... | @@ -53,6 +53,7 @@ |
| 53 | 53 |
import itn.let.mjo.msgdata.service.MjonMsgDataVO; |
| 54 | 54 |
import itn.let.mjo.msgdata.service.MjonMsgReturnVO; |
| 55 | 55 |
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; |
| 56 |
+import itn.let.mjo.msgholiday.service.MsgHolidayService; |
|
| 56 | 57 |
import itn.let.mjo.msgholiday.service.MsgHolidayVO; |
| 57 | 58 |
import itn.let.mjo.msgholiday.service.impl.MsgHolidayDAO; |
| 58 | 59 |
import itn.let.mjo.pay.service.MjonPayService; |
... | ... | @@ -60,11 +61,13 @@ |
| 60 | 61 |
import itn.let.mjo.pay.service.impl.MjonPayDAO; |
| 61 | 62 |
import itn.let.mjo.spammsg.service.MjonSpamMsgService; |
| 62 | 63 |
import itn.let.module.base.PriceAndPoint; |
| 64 |
+import itn.let.sym.site.service.EgovSiteManagerService; |
|
| 63 | 65 |
import itn.let.sym.site.service.JoinSettingVO; |
| 64 | 66 |
import itn.let.sym.site.service.impl.SiteManagerDAO; |
| 65 | 67 |
import itn.let.uat.uia.web.SendLogVO; |
| 66 | 68 |
import itn.let.uss.umt.service.EgovUserManageService; |
| 67 | 69 |
import itn.let.uss.umt.service.MberManageVO; |
| 70 |
+import itn.let.uss.umt.service.UserManageVO; |
|
| 68 | 71 |
import lombok.extern.slf4j.Slf4j; |
| 69 | 72 |
|
| 70 | 73 |
@Slf4j |
... | ... | @@ -130,9 +133,20 @@ |
| 130 | 133 |
@Resource(name = "mjonSpamMsgService") |
| 131 | 134 |
private MjonSpamMsgService mjonSpamMsgService; |
| 132 | 135 |
|
| 136 |
+ /** 사이트 설정 */ |
|
| 137 |
+ @Resource(name = "egovSiteManagerService") |
|
| 138 |
+ EgovSiteManagerService egovSiteManagerService; |
|
| 139 |
+ |
|
| 140 |
+ |
|
| 141 |
+ @Resource(name = "MsgHolidayService") |
|
| 142 |
+ private MsgHolidayService msgHolidayService; |
|
| 143 |
+ |
|
| 133 | 144 |
|
| 134 | 145 |
@Autowired |
| 135 | 146 |
private PriceAndPoint priceAndPoint; |
| 147 |
+ |
|
| 148 |
+ @Autowired |
|
| 149 |
+ private MjonCommon mjonCommon; |
|
| 136 | 150 |
|
| 137 | 151 |
|
| 138 | 152 |
public List<MjonMsgDataVO> selectCcmCmmCodeList() throws Exception {
|
... | ... | @@ -3988,6 +4002,7 @@ |
| 3988 | 4002 |
@Override |
| 3989 | 4003 |
public StatusResponse sendMsgData_advc(MjonMsgVO mjonMsgVO, HttpServletRequest request) throws Exception {
|
| 3990 | 4004 |
|
| 4005 |
+ log.info("mjonMsgVO [{}]" , mjonMsgVO.getMjonMsgSendVOList().get(0).getPhone());
|
|
| 3991 | 4006 |
log.info(" :: sendMsgData_advc :: ");
|
| 3992 | 4007 |
|
| 3993 | 4008 |
Map<String, Object> returnMap = new HashMap<>(); |
... | ... | @@ -4004,7 +4019,6 @@ |
| 4004 | 4019 |
|
| 4005 | 4020 |
//발신번호가 등록된 유효한 번호인지 확인 |
| 4006 | 4021 |
int sendCallFromCnt = mjonMsgDAO.selectCallFromNumberChk(mjonMsgVO); |
| 4007 |
- System.out.println("sendCallFromCnt : "+ sendCallFromCnt);
|
|
| 4008 | 4022 |
if(sendCallFromCnt < 1) {
|
| 4009 | 4023 |
return new StatusResponse(HttpStatus.BAD_REQUEST, "등록된 발신번호를 찾을 수 없습니다."); |
| 4010 | 4024 |
} |
... | ... | @@ -4056,6 +4070,10 @@ |
| 4056 | 4070 |
// 수신거부 목록 |
| 4057 | 4071 |
returnMap.put("resultBlockSts", deletedCount);
|
| 4058 | 4072 |
|
| 4073 |
+ if(mjonMsgSendVOList.size() < 1) {
|
|
| 4074 |
+ return new StatusResponse(HttpStatus.BAD_REQUEST, "수신거부와 매칭되는 번호 제거 후 \n발송 가능한 수신목록이 존재하지 않습니다."); |
|
| 4075 |
+ } |
|
| 4076 |
+ |
|
| 4059 | 4077 |
|
| 4060 | 4078 |
|
| 4061 | 4079 |
|
... | ... | @@ -4087,7 +4105,7 @@ |
| 4087 | 4105 |
|
| 4088 | 4106 |
mjonMsgVO.setAgentCode(hotlineAgentCode); |
| 4089 | 4107 |
|
| 4090 |
- // smstxt 치환 및 스팸체크 후 mjonMsgSendVOList 에 add() |
|
| 4108 |
+ // 스팸관련 키워드 select |
|
| 4091 | 4109 |
List<String> resultSpamTxt = mjonMsgDataService.selectSpamKeywordList(); |
| 4092 | 4110 |
// msgGroupId 생성 |
| 4093 | 4111 |
String nextMsgGroupId = idgenMjonMsgGroupId.getNextStringId(); |
... | ... | @@ -4141,38 +4159,12 @@ |
| 4141 | 4159 |
* => optimalMsgList로 데이터 이동 |
| 4142 | 4160 |
* 이동하면서 이벤트 금액으로 설정 |
| 4143 | 4161 |
*/ |
| 4144 |
- MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo_advc(userId); |
|
| 4145 |
- OptimalMsgResultDTO result = null; |
|
| 4146 |
- List<MjonMsgSendVO> optimalMsgList = new ArrayList<>(); |
|
| 4147 |
- |
|
| 4148 |
- if (eventMberInfo != null && !"E".equals(eventMberInfo.getEventStatus())) {
|
|
| 4149 |
- try {
|
|
| 4150 |
- result = MsgSendUtils.getOptimalMsgList(eventMberInfo, mjonMsgSendVOList); |
|
| 4151 |
- optimalMsgList = result.getOptimalMsgList(); |
|
| 4152 |
- MjonEventVO returnEventMberInfo = result.getEventInfo(); |
|
| 4162 |
+ // mjonCommon 호출 |
|
| 4163 |
+ statusResponse = mjonCommon.processEventMessages(userId, mjonMsgVO, mjonMsgSendVOList); |
|
| 4153 | 4164 |
|
| 4154 |
- // 이벤트 list에 내역에 있으면 |
|
| 4155 |
- if(CollectionUtils.isNotEmpty(optimalMsgList)) |
|
| 4156 |
- {
|
|
| 4157 |
- // group tb에 이벤트 발송인지 Y 입력해야함 |
|
| 4158 |
- mjonMsgVO.setEventYn("Y");
|
|
| 4159 |
- // 기존 리스트로 병합 |
|
| 4160 |
- // 따로 분기 후 병합 하는 이유는 유지보수 및 기능 분리르 위함 |
|
| 4161 |
- mjonMsgSendVOList.addAll(optimalMsgList); |
|
| 4162 |
- } |
|
| 4163 |
- |
|
| 4164 |
- // 이벤트 금액이 끝났거나 종료상태로 전환되면 update해야함 |
|
| 4165 |
- if (returnEventMberInfo != null && "E".equals(returnEventMberInfo.getEventStatus())) {
|
|
| 4166 |
- returnEventMberInfo.setMberId(userId); |
|
| 4167 |
- mjonEventService.updateEventEndStatus(returnEventMberInfo); |
|
| 4168 |
- } |
|
| 4169 |
- |
|
| 4170 |
- } catch (IllegalArgumentException e) {
|
|
| 4171 |
- // 메시지 타입 에러에 대한 응답 처리 |
|
| 4172 |
- statusResponse.setStatus(HttpStatus.BAD_REQUEST); |
|
| 4173 |
- statusResponse.setMessage("이벤트 데이터 처리 중 오류가 발생하였습니다.\n관리자에게 문의해 주세요.");
|
|
| 4174 |
- return statusResponse; |
|
| 4175 |
- } |
|
| 4165 |
+ if (statusResponse.getStatus() != null && !statusResponse.getStatus().equals(HttpStatus.OK)) {
|
|
| 4166 |
+ log.error("이벤트 처리 중 오류 발생: {}", statusResponse.getMessage());
|
|
| 4167 |
+ return statusResponse; |
|
| 4176 | 4168 |
} |
| 4177 | 4169 |
|
| 4178 | 4170 |
|
... | ... | @@ -4192,6 +4184,7 @@ |
| 4192 | 4184 |
// Batch 시작 시간 측정 |
| 4193 | 4185 |
long insetStartTime = System.currentTimeMillis(); |
| 4194 | 4186 |
// 총 발송 건수 = DB insert |
| 4187 |
+// int instCnt = 0; |
|
| 4195 | 4188 |
int instCnt = this.insertMsgData_advc(mjonMsgSendVOList); |
| 4196 | 4189 |
|
| 4197 | 4190 |
// Batch 종료 시간 측정 및 실행 시간 계산 |
... | ... | @@ -4217,12 +4210,25 @@ |
| 4217 | 4210 |
, "SMS 문자 총 " + mjonMsgVO.getMjonMsgSendVOList().size() + "건 중 " + instCnt + "건 발송" |
| 4218 | 4211 |
, mjonMsgVO.getMsgGroupId() |
| 4219 | 4212 |
); |
| 4213 |
+ |
|
| 4214 |
+ // 스팸 데이터가 있으면 MJ_SPAM_MSG_GROUP_DATA 테이블에 insert |
|
| 4215 |
+ handleSpamMsg_advc(mjonMsgVO, mjonMsgSendVOList.get(0)); |
|
| 4216 |
+ |
|
| 4220 | 4217 |
} |
| 4221 | 4218 |
|
| 4219 |
+ |
|
| 4222 | 4220 |
|
| 4223 | 4221 |
|
| 4224 |
- //TODO : group tb insert 후 처리 |
|
| 4225 |
-// handleSpamMsg_advc(mjonMsgVO, mjonMsgSendVOList.get(0)); |
|
| 4222 |
+ |
|
| 4223 |
+ |
|
| 4224 |
+ // 한 줄 호출 |
|
| 4225 |
+ boolean isNotified = mjonCommon.processUserAndCheckSms(mjonMsgVO, userId); |
|
| 4226 |
+ |
|
| 4227 |
+ if (isNotified) {
|
|
| 4228 |
+ System.out.println("스미싱 알림이 처리되었습니다.");
|
|
| 4229 |
+ } else {
|
|
| 4230 |
+ System.out.println("알림 조건을 충족하지 않았습니다.");
|
|
| 4231 |
+ } |
|
| 4226 | 4232 |
|
| 4227 | 4233 |
|
| 4228 | 4234 |
|
... | ... | @@ -4551,28 +4557,21 @@ |
| 4551 | 4557 |
} |
| 4552 | 4558 |
} |
| 4553 | 4559 |
|
| 4554 |
- private void handleSpamMsg_advc(MjonMsgVO mjonMsgVO, MjonMsgSendVO mjonMsgSendVO) {
|
|
| 4555 |
- try {
|
|
| 4560 |
+ private void handleSpamMsg_advc(MjonMsgVO mjonMsgVO, MjonMsgSendVO mjonMsgSendVO) throws Exception{
|
|
| 4556 | 4561 |
if ("Y".equals(mjonMsgVO.getSpamStatus()))
|
| 4557 | 4562 |
{
|
| 4558 | 4563 |
MjonMsgVO mjonSpamMsgVO = mjonMsgVO; |
| 4559 |
- mjonSpamMsgVO.setCallFrom(mjonMsgSendVO.getCallFrom()); |
|
| 4560 |
- mjonSpamMsgVO.setMsgGroupCnt(mjonMsgSendVO.getMsgGroupId()); |
|
| 4561 | 4564 |
|
| 4562 |
- mjonSpamMsgVO.setSubject(null); |
|
| 4563 |
- mjonSpamMsgVO.setReqDate(null); |
|
| 4564 |
- mjonSpamMsgVO.setMsgType(null); |
|
| 4565 |
- mjonSpamMsgVO.setMsgType(null); |
|
| 4566 |
- mjonSpamMsgVO.setEachPrice(null); |
|
| 4565 |
+ mjonSpamMsgVO.setSubject(mjonSpamMsgVO.getMmsSubject()); |
|
| 4567 | 4566 |
|
| 4568 |
- |
|
| 4567 |
+ mjonSpamMsgVO.setEachPrice(mjonMsgSendVO.getEachPrice()); |
|
| 4568 |
+ mjonSpamMsgVO.setFilePath1(mjonMsgSendVO.getFilePath1()); |
|
| 4569 |
+ mjonSpamMsgVO.setFilePath2(mjonMsgSendVO.getFilePath2()); |
|
| 4570 |
+ mjonSpamMsgVO.setFilePath3(mjonMsgSendVO.getFilePath3()); |
|
| 4569 | 4571 |
|
| 4570 | 4572 |
int resultCnt = mjonSpamMsgService.insertSpamKeyWordMsgData(mjonMsgVO); |
| 4571 | 4573 |
System.out.println("스팸 문구 발송 내용 등록: " + resultCnt);
|
| 4572 | 4574 |
} |
| 4573 |
- } catch (Exception e) {
|
|
| 4574 |
- System.err.println("스팸 문구 처리 중 오류 발생: " + e.getMessage());
|
|
| 4575 |
- } |
|
| 4576 | 4575 |
} |
| 4577 | 4576 |
|
| 4578 | 4577 |
// 예약 문자인 경우 처리하는 메서드 |
--- src/main/java/itn/let/uss/umt/service/UserManageVO.java
+++ src/main/java/itn/let/uss/umt/service/UserManageVO.java
... | ... | @@ -1,5 +1,10 @@ |
| 1 | 1 |
package itn.let.uss.umt.service; |
| 2 | 2 |
|
| 3 |
+import lombok.AllArgsConstructor; |
|
| 4 |
+import lombok.Getter; |
|
| 5 |
+import lombok.NoArgsConstructor; |
|
| 6 |
+import lombok.Setter; |
|
| 7 |
+ |
|
| 3 | 8 |
/** |
| 4 | 9 |
* 업무사용자VO클래스로서 업무사용자관리 비지니스로직 처리용 항목을 구성한다. |
| 5 | 10 |
* @author 공통서비스 개발팀 조재영 |
... | ... | @@ -17,6 +22,10 @@ |
| 17 | 22 |
* |
| 18 | 23 |
* </pre> |
| 19 | 24 |
*/ |
| 25 |
+@Getter |
|
| 26 |
+@Setter |
|
| 27 |
+@NoArgsConstructor |
|
| 28 |
+@AllArgsConstructor |
|
| 20 | 29 |
public class UserManageVO extends UserDefaultVO{
|
| 21 | 30 |
|
| 22 | 31 |
/** |
... | ... | @@ -209,536 +218,12 @@ |
| 209 | 218 |
private String nextPayMethod; |
| 210 | 219 |
private float paymentCash; //이전달에 실제 사용한 캐시 정보 |
| 211 | 220 |
|
| 212 |
- public String getNextPayMethod() {
|
|
| 213 |
- return nextPayMethod; |
|
| 214 |
- } |
|
| 215 |
- public void setNextPayMethod(String nextPayMethod) {
|
|
| 216 |
- this.nextPayMethod = nextPayMethod; |
|
| 217 |
- } |
|
| 218 |
- public String getSpamYn() {
|
|
| 219 |
- return spamYn; |
|
| 220 |
- } |
|
| 221 |
- public void setSpamYn(String spamYn) {
|
|
| 222 |
- this.spamYn = spamYn; |
|
| 223 |
- } |
|
| 224 |
- public String getAtSmishingYn() {
|
|
| 225 |
- return atSmishingYn; |
|
| 226 |
- } |
|
| 227 |
- public void setAtSmishingYn(String atSmishingYn) {
|
|
| 228 |
- this.atSmishingYn = atSmishingYn; |
|
| 229 |
- } |
|
| 230 |
- public String getBlineCode() {
|
|
| 231 |
- return blineCode; |
|
| 232 |
- } |
|
| 233 |
- public void setBlineCode(String blineCode) {
|
|
| 234 |
- this.blineCode = blineCode; |
|
| 235 |
- } |
|
| 236 |
- public String getRecommendId() {
|
|
| 237 |
- return recommendId; |
|
| 238 |
- } |
|
| 239 |
- public void setRecommendId(String recommendId) {
|
|
| 240 |
- this.recommendId = recommendId; |
|
| 241 |
- } |
|
| 242 | 221 |
|
| 243 |
- public float getCash() {
|
|
| 244 |
- return cash; |
|
| 245 |
- } |
|
| 246 |
- public void setCash(float cash) {
|
|
| 247 |
- this.cash = cash; |
|
| 248 |
- } |
|
| 249 |
- public String getMberNm() {
|
|
| 250 |
- return mberNm; |
|
| 251 |
- } |
|
| 252 |
- public void setMberNm(String mberNm) {
|
|
| 253 |
- this.mberNm = mberNm; |
|
| 254 |
- } |
|
| 255 |
- |
|
| 256 |
- public String getSmishingYn() {
|
|
| 257 |
- return smishingYn; |
|
| 258 |
- } |
|
| 259 |
- public void setSmishingYn(String smishingYn) {
|
|
| 260 |
- this.smishingYn = smishingYn; |
|
| 261 |
- } |
|
| 262 |
- |
|
| 263 |
- public float getNowChargeCash() {
|
|
| 264 |
- return nowChargeCash; |
|
| 265 |
- } |
|
| 266 |
- public void setNowChargeCash(float nowChargeCash) {
|
|
| 267 |
- this.nowChargeCash = nowChargeCash; |
|
| 268 |
- } |
|
| 269 |
- public String getPrePaymentYn() {
|
|
| 270 |
- return prePaymentYn; |
|
| 271 |
- } |
|
| 272 |
- public void setPrePaymentYn(String prePaymentYn) {
|
|
| 273 |
- this.prePaymentYn = prePaymentYn; |
|
| 274 |
- } |
|
| 275 |
- public int getAutoCash() {
|
|
| 276 |
- return autoCash; |
|
| 277 |
- } |
|
| 278 |
- public void setAutoCash(int autoCash) {
|
|
| 279 |
- this.autoCash = autoCash; |
|
| 280 |
- } |
|
| 281 |
- |
|
| 282 |
- public String getMberId() {
|
|
| 283 |
- return mberId; |
|
| 284 |
- } |
|
| 285 | 222 |
|
| 286 |
- public void setMberId(String mberId) {
|
|
| 287 |
- this.mberId = mberId; |
|
| 288 |
- } |
|
| 289 |
- |
|
| 290 |
- public String getAdminSmsNoticeYn() {
|
|
| 291 |
- return adminSmsNoticeYn; |
|
| 292 |
- } |
|
| 293 |
- |
|
| 294 |
- public void setAdminSmsNoticeYn(String adminSmsNoticeYn) {
|
|
| 295 |
- this.adminSmsNoticeYn = adminSmsNoticeYn; |
|
| 296 |
- } |
|
| 297 |
- |
|
| 298 |
- public String getMobilePwsaveYn() {
|
|
| 299 |
- return mobilePwsaveYn; |
|
| 300 |
- } |
|
| 301 |
- |
|
| 302 |
- public void setMobilePwsaveYn(String mobilePwsaveYn) {
|
|
| 303 |
- this.mobilePwsaveYn = mobilePwsaveYn; |
|
| 304 |
- } |
|
| 305 |
- |
|
| 306 |
- public String getOldPassword() {
|
|
| 307 |
- return oldPassword; |
|
| 308 |
- } |
|
| 309 |
- |
|
| 310 |
- public void setOldPassword(String oldPassword) {
|
|
| 311 |
- this.oldPassword = oldPassword; |
|
| 312 |
- } |
|
| 313 |
- |
|
| 314 |
- public String getSbscrbDe() {
|
|
| 315 |
- return sbscrbDe; |
|
| 316 |
- } |
|
| 317 |
- |
|
| 318 |
- public void setSbscrbDe(String sbscrbDe) {
|
|
| 319 |
- this.sbscrbDe = sbscrbDe; |
|
| 320 |
- } |
|
| 321 |
- |
|
| 322 |
- public String getUniqId() {
|
|
| 323 |
- return uniqId; |
|
| 324 |
- } |
|
| 325 |
- |
|
| 326 |
- public void setUniqId(String uniqId) {
|
|
| 327 |
- this.uniqId = uniqId; |
|
| 328 |
- } |
|
| 329 |
- |
|
| 330 |
- public String getUserTy() {
|
|
| 331 |
- return userTy; |
|
| 332 |
- } |
|
| 333 |
- |
|
| 334 |
- public void setUserTy(String userTy) {
|
|
| 335 |
- this.userTy = userTy; |
|
| 336 |
- } |
|
| 337 |
- |
|
| 338 |
- public String getAreaNo() {
|
|
| 339 |
- return areaNo; |
|
| 340 |
- } |
|
| 341 |
- |
|
| 342 |
- public void setAreaNo(String areaNo) {
|
|
| 343 |
- this.areaNo = areaNo; |
|
| 344 |
- } |
|
| 345 |
- |
|
| 346 |
- public String getBrth() {
|
|
| 347 |
- return brth; |
|
| 348 |
- } |
|
| 349 |
- |
|
| 350 |
- public void setBrth(String brth) {
|
|
| 351 |
- this.brth = brth; |
|
| 352 |
- } |
|
| 353 |
- |
|
| 354 |
- public String getDetailAdres() {
|
|
| 355 |
- return detailAdres; |
|
| 356 |
- } |
|
| 357 |
- |
|
| 358 |
- public void setDetailAdres(String detailAdres) {
|
|
| 359 |
- this.detailAdres = detailAdres; |
|
| 360 |
- } |
|
| 361 |
- |
|
| 362 |
- public String getEmailAdres() {
|
|
| 363 |
- return emailAdres; |
|
| 364 |
- } |
|
| 365 |
- |
|
| 366 |
- public void setEmailAdres(String emailAdres) {
|
|
| 367 |
- this.emailAdres = emailAdres; |
|
| 368 |
- } |
|
| 369 |
- |
|
| 370 |
- public String getEmplNo() {
|
|
| 371 |
- return emplNo; |
|
| 372 |
- } |
|
| 373 |
- |
|
| 374 |
- public void setEmplNo(String emplNo) {
|
|
| 375 |
- this.emplNo = emplNo; |
|
| 376 |
- } |
|
| 377 |
- |
|
| 378 |
- public String getEmplyrId() {
|
|
| 379 |
- return emplyrId; |
|
| 380 |
- } |
|
| 381 |
- |
|
| 382 |
- public void setEmplyrId(String emplyrId) {
|
|
| 383 |
- this.emplyrId = emplyrId; |
|
| 384 |
- } |
|
| 385 |
- |
|
| 386 |
- public String getEmplyrIdDec() {
|
|
| 387 |
- return emplyrIdDec; |
|
| 388 |
- } |
|
| 389 |
- |
|
| 390 |
- public void setEmplyrIdDec(String emplyrIdDec) {
|
|
| 391 |
- this.emplyrIdDec = emplyrIdDec; |
|
| 392 |
- } |
|
| 393 |
- |
|
| 394 |
- public String getEmplyrNm() {
|
|
| 395 |
- return emplyrNm; |
|
| 396 |
- } |
|
| 397 |
- |
|
| 398 |
- public void setEmplyrNm(String emplyrNm) {
|
|
| 399 |
- this.emplyrNm = emplyrNm; |
|
| 400 |
- } |
|
| 401 |
- |
|
| 402 |
- public String getEmplyrSttusCode() {
|
|
| 403 |
- return emplyrSttusCode; |
|
| 404 |
- } |
|
| 405 |
- |
|
| 406 |
- public void setEmplyrSttusCode(String emplyrSttusCode) {
|
|
| 407 |
- this.emplyrSttusCode = emplyrSttusCode; |
|
| 408 |
- } |
|
| 409 |
- |
|
| 410 |
- public String getEmplyrSttusCodeTxt() {
|
|
| 411 |
- return emplyrSttusCodeTxt; |
|
| 412 |
- } |
|
| 413 |
- |
|
| 414 |
- public void setEmplyrSttusCodeTxt(String emplyrSttusCodeTxt) {
|
|
| 415 |
- this.emplyrSttusCodeTxt = emplyrSttusCodeTxt; |
|
| 416 |
- } |
|
| 417 |
- |
|
| 418 |
- public String getFxnum() {
|
|
| 419 |
- return fxnum; |
|
| 420 |
- } |
|
| 421 |
- |
|
| 422 |
- public void setFxnum(String fxnum) {
|
|
| 423 |
- this.fxnum = fxnum; |
|
| 424 |
- } |
|
| 425 |
- |
|
| 426 |
- public String getGroupId() {
|
|
| 427 |
- return groupId; |
|
| 428 |
- } |
|
| 429 |
- |
|
| 430 |
- public void setGroupId(String groupId) {
|
|
| 431 |
- this.groupId = groupId; |
|
| 432 |
- } |
|
| 433 |
- |
|
| 434 |
- public String getHomeadres() {
|
|
| 435 |
- return homeadres; |
|
| 436 |
- } |
|
| 437 |
- |
|
| 438 |
- public void setHomeadres(String homeadres) {
|
|
| 439 |
- this.homeadres = homeadres; |
|
| 440 |
- } |
|
| 441 |
- |
|
| 442 |
- public String getHomeendTelno() {
|
|
| 443 |
- return homeendTelno; |
|
| 444 |
- } |
|
| 445 |
- |
|
| 446 |
- public void setHomeendTelno(String homeendTelno) {
|
|
| 447 |
- this.homeendTelno = homeendTelno; |
|
| 448 |
- } |
|
| 449 |
- |
|
| 450 |
- public String getHomemiddleTelno() {
|
|
| 451 |
- return homemiddleTelno; |
|
| 452 |
- } |
|
| 453 |
- |
|
| 454 |
- public void setHomemiddleTelno(String homemiddleTelno) {
|
|
| 455 |
- this.homemiddleTelno = homemiddleTelno; |
|
| 456 |
- } |
|
| 457 |
- |
|
| 458 |
- public String getIhidnum() {
|
|
| 459 |
- return ihidnum; |
|
| 460 |
- } |
|
| 461 |
- |
|
| 462 |
- public void setIhidnum(String ihidnum) {
|
|
| 463 |
- this.ihidnum = ihidnum; |
|
| 464 |
- } |
|
| 465 |
- |
|
| 466 |
- public String getInsttCode() {
|
|
| 467 |
- return insttCode; |
|
| 468 |
- } |
|
| 469 |
- |
|
| 470 |
- public void setInsttCode(String insttCode) {
|
|
| 471 |
- this.insttCode = insttCode; |
|
| 472 |
- } |
|
| 473 |
- |
|
| 474 |
- public String getMberTy() {
|
|
| 475 |
- return mberTy; |
|
| 476 |
- } |
|
| 477 |
- |
|
| 478 |
- public void setMberTy(String mberTy) {
|
|
| 479 |
- this.mberTy = mberTy; |
|
| 480 |
- } |
|
| 481 |
- |
|
| 482 |
- public String getMoblphonNo() {
|
|
| 483 |
- return moblphonNo; |
|
| 484 |
- } |
|
| 485 |
- |
|
| 486 |
- public void setMoblphonNo(String moblphonNo) {
|
|
| 487 |
- this.moblphonNo = moblphonNo; |
|
| 488 |
- } |
|
| 489 |
- |
|
| 490 |
- public String getOfcpsNm() {
|
|
| 491 |
- return ofcpsNm; |
|
| 492 |
- } |
|
| 493 |
- |
|
| 494 |
- public void setOfcpsNm(String ofcpsNm) {
|
|
| 495 |
- this.ofcpsNm = ofcpsNm; |
|
| 496 |
- } |
|
| 497 |
- |
|
| 498 |
- public String getOffmTelno() {
|
|
| 499 |
- return offmTelno; |
|
| 500 |
- } |
|
| 501 |
- |
|
| 502 |
- public void setOffmTelno(String offmTelno) {
|
|
| 503 |
- this.offmTelno = offmTelno; |
|
| 504 |
- } |
|
| 505 |
- |
|
| 506 |
- public String getOrgnztId() {
|
|
| 507 |
- return orgnztId; |
|
| 508 |
- } |
|
| 509 |
- |
|
| 510 |
- public void setOrgnztId(String orgnztId) {
|
|
| 511 |
- this.orgnztId = orgnztId; |
|
| 512 |
- } |
|
| 513 |
- |
|
| 514 |
- public String getPassword() {
|
|
| 515 |
- return password; |
|
| 516 |
- } |
|
| 517 |
- |
|
| 518 |
- public void setPassword(String password) {
|
|
| 519 |
- this.password = password; |
|
| 520 |
- } |
|
| 521 |
- |
|
| 522 |
- public String getPasswordCnsr() {
|
|
| 523 |
- return passwordCnsr; |
|
| 524 |
- } |
|
| 525 |
- |
|
| 526 |
- public void setPasswordCnsr(String passwordCnsr) {
|
|
| 527 |
- this.passwordCnsr = passwordCnsr; |
|
| 528 |
- } |
|
| 529 |
- |
|
| 530 |
- public String getPasswordHint() {
|
|
| 531 |
- return passwordHint; |
|
| 532 |
- } |
|
| 533 |
- |
|
| 534 |
- public void setPasswordHint(String passwordHint) {
|
|
| 535 |
- this.passwordHint = passwordHint; |
|
| 536 |
- } |
|
| 537 |
- |
|
| 538 |
- public String getSbscrbDeBegin() {
|
|
| 539 |
- return sbscrbDeBegin; |
|
| 540 |
- } |
|
| 541 |
- |
|
| 542 |
- public void setSbscrbDeBegin(String sbscrbDeBegin) {
|
|
| 543 |
- this.sbscrbDeBegin = sbscrbDeBegin; |
|
| 544 |
- } |
|
| 545 |
- |
|
| 546 |
- public String getSbscrbDeEnd() {
|
|
| 547 |
- return sbscrbDeEnd; |
|
| 548 |
- } |
|
| 549 |
- |
|
| 550 |
- public void setSbscrbDeEnd(String sbscrbDeEnd) {
|
|
| 551 |
- this.sbscrbDeEnd = sbscrbDeEnd; |
|
| 552 |
- } |
|
| 553 |
- |
|
| 554 |
- public String getSexdstnCode() {
|
|
| 555 |
- return sexdstnCode; |
|
| 556 |
- } |
|
| 557 |
- |
|
| 558 |
- public void setSexdstnCode(String sexdstnCode) {
|
|
| 559 |
- this.sexdstnCode = sexdstnCode; |
|
| 560 |
- } |
|
| 561 |
- |
|
| 562 |
- public String getZip() {
|
|
| 563 |
- return zip; |
|
| 564 |
- } |
|
| 565 |
- |
|
| 566 |
- public void setZip(String zip) {
|
|
| 567 |
- this.zip = zip; |
|
| 568 |
- } |
|
| 569 |
- |
|
| 570 |
- public String getSubDn() {
|
|
| 571 |
- return subDn; |
|
| 572 |
- } |
|
| 573 |
- |
|
| 574 |
- public void setSubDn(String subDn) {
|
|
| 575 |
- this.subDn = subDn; |
|
| 576 |
- } |
|
| 577 |
- |
|
| 578 |
- public String getPartIdx() {
|
|
| 579 |
- return partIdx; |
|
| 580 |
- } |
|
| 581 |
- |
|
| 582 |
- public void setPartIdx(String partIdx) {
|
|
| 583 |
- this.partIdx = partIdx; |
|
| 584 |
- } |
|
| 585 |
- |
|
| 586 |
- public String getPartIdxTxt() {
|
|
| 587 |
- return partIdxTxt; |
|
| 588 |
- } |
|
| 589 |
- |
|
| 590 |
- public void setPartIdxTxt(String partIdxTxt) {
|
|
| 591 |
- this.partIdxTxt = partIdxTxt; |
|
| 592 |
- } |
|
| 593 |
- |
|
| 594 |
- public String getAuthorCode() {
|
|
| 595 |
- return authorCode; |
|
| 596 |
- } |
|
| 597 |
- |
|
| 598 |
- public void setAuthorCode(String authorCode) {
|
|
| 599 |
- this.authorCode = authorCode; |
|
| 600 |
- } |
|
| 601 |
- |
|
| 602 |
- public String getAuthorNm() {
|
|
| 603 |
- return authorNm; |
|
| 604 |
- } |
|
| 605 |
- |
|
| 606 |
- public void setAuthorNm(String authorNm) {
|
|
| 607 |
- this.authorNm = authorNm; |
|
| 608 |
- } |
|
| 609 |
- |
|
| 610 |
- public String getRsaPasswd() {
|
|
| 611 |
- return rsaPasswd; |
|
| 612 |
- } |
|
| 613 |
- |
|
| 614 |
- public void setRsaPasswd(String rsaPasswd) {
|
|
| 615 |
- this.rsaPasswd = rsaPasswd; |
|
| 616 |
- } |
|
| 617 |
- |
|
| 618 |
- public String getEsntlId() {
|
|
| 619 |
- return esntlId; |
|
| 620 |
- } |
|
| 621 |
- |
|
| 622 |
- public void setEsntlId(String esntlId) {
|
|
| 623 |
- this.esntlId = esntlId; |
|
| 624 |
- } |
|
| 625 |
- |
|
| 626 |
- public String getSearchWord() {
|
|
| 627 |
- return searchWord; |
|
| 628 |
- } |
|
| 629 |
- |
|
| 630 |
- public void setSearchWord(String searchWord) {
|
|
| 631 |
- this.searchWord = searchWord; |
|
| 632 |
- } |
|
| 633 |
- |
|
| 634 |
- public String getUserNm() {
|
|
| 635 |
- return userNm; |
|
| 636 |
- } |
|
| 637 |
- |
|
| 638 |
- public void setUserNm(String userNm) {
|
|
| 639 |
- this.userNm = userNm; |
|
| 640 |
- } |
|
| 641 |
- |
|
| 642 |
- public String getUserWork() {
|
|
| 643 |
- return userWork; |
|
| 644 |
- } |
|
| 645 |
- |
|
| 646 |
- public void setUserWork(String userWork) {
|
|
| 647 |
- this.userWork = userWork; |
|
| 648 |
- } |
|
| 649 |
- |
|
| 650 |
- public String getLocInfoId() {
|
|
| 651 |
- return locInfoId; |
|
| 652 |
- } |
|
| 653 |
- |
|
| 654 |
- public void setLocInfoId(String locInfoId) {
|
|
| 655 |
- this.locInfoId = locInfoId; |
|
| 656 |
- } |
|
| 657 |
- |
|
| 658 |
- public String getSort() {
|
|
| 659 |
- return sort; |
|
| 660 |
- } |
|
| 661 |
- |
|
| 662 |
- public void setSort(String sort) {
|
|
| 663 |
- this.sort = sort; |
|
| 664 |
- } |
|
| 665 |
- |
|
| 666 |
- public String getCheckNo() {
|
|
| 667 |
- return checkNo; |
|
| 668 |
- } |
|
| 669 |
- |
|
| 670 |
- public void setCheckNo(String checkNo) {
|
|
| 671 |
- this.checkNo = checkNo; |
|
| 672 |
- } |
|
| 673 |
- |
|
| 674 |
- public String getFindType() {
|
|
| 675 |
- return findType; |
|
| 676 |
- } |
|
| 677 |
- |
|
| 678 |
- public void setFindType(String findType) {
|
|
| 679 |
- this.findType = findType; |
|
| 680 |
- } |
|
| 681 |
- |
|
| 682 |
- public String getEmailSendYN() {
|
|
| 683 |
- return emailSendYN; |
|
| 684 |
- } |
|
| 685 |
- |
|
| 686 |
- public void setEmailSendYN(String emailSendYN) {
|
|
| 687 |
- this.emailSendYN = emailSendYN; |
|
| 688 |
- } |
|
| 689 |
- |
|
| 690 |
- public String getMbtlSendYN() {
|
|
| 691 |
- return mbtlSendYN; |
|
| 692 |
- } |
|
| 693 |
- |
|
| 694 |
- public void setMbtlSendYN(String mbtlSendYN) {
|
|
| 695 |
- this.mbtlSendYN = mbtlSendYN; |
|
| 696 |
- } |
|
| 697 |
- |
|
| 698 |
- public String getPasswordOverlapCheck() {
|
|
| 699 |
- return passwordOverlapCheck; |
|
| 700 |
- } |
|
| 701 |
- |
|
| 702 |
- public void setPasswordOverlapCheck(String passwordOverlapCheck) {
|
|
| 703 |
- this.passwordOverlapCheck = passwordOverlapCheck; |
|
| 704 |
- } |
|
| 705 |
- |
|
| 706 |
- public String getUserSe() {
|
|
| 707 |
- return userSe; |
|
| 708 |
- } |
|
| 709 |
- |
|
| 710 |
- public void setUserSe(String userSe) {
|
|
| 711 |
- this.userSe = userSe; |
|
| 712 |
- } |
|
| 713 |
- |
|
| 714 |
- public String getCrtfcDnValue() {
|
|
| 715 |
- return crtfcDnValue; |
|
| 716 |
- } |
|
| 717 |
- |
|
| 718 |
- public void setCrtfcDnValue(String crtfcDnValue) {
|
|
| 719 |
- this.crtfcDnValue = crtfcDnValue; |
|
| 720 |
- } |
|
| 721 |
- |
|
| 722 |
- public String getOuterCertYn() {
|
|
| 723 |
- return outerCertYn; |
|
| 724 |
- } |
|
| 725 |
- |
|
| 726 |
- public void setOuterCertYn(String outerCertYn) {
|
|
| 727 |
- this.outerCertYn = outerCertYn; |
|
| 728 |
- } |
|
| 729 |
- public String getVipYn() {
|
|
| 730 |
- return vipYn; |
|
| 731 |
- } |
|
| 732 |
- public void setVipYn(String vipYn) {
|
|
| 733 |
- this.vipYn = vipYn; |
|
| 734 |
- } |
|
| 735 |
- public float getPaymentCash() {
|
|
| 736 |
- return paymentCash; |
|
| 737 |
- } |
|
| 738 |
- public void setPaymentCash(float paymentCash) {
|
|
| 739 |
- this.paymentCash = paymentCash; |
|
| 223 |
+ public UserManageVO(String userId) {
|
|
| 224 |
+ this.mberId = userId; |
|
| 225 |
+ // TODO Auto-generated constructor stub |
|
| 740 | 226 |
} |
| 741 |
- |
|
| 742 | 227 |
|
| 743 | 228 |
|
| 744 | 229 |
|
--- src/main/resources/egovframework/egovProps/globals_dev.properties
+++ src/main/resources/egovframework/egovProps/globals_dev.properties
... | ... | @@ -115,3 +115,7 @@ |
| 115 | 115 |
#MOBILE |
| 116 | 116 |
Globals.pay.kgm.mobile.mcSvcid=170622040674 |
| 117 | 117 |
Globals.pay.kgm.mobile.payMode=00 |
| 118 |
+ |
|
| 119 |
+#Slack |
|
| 120 |
+Globals.slack.hooks.url=https://hooks.slack.com/services/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 |
|
| 121 |
+Globals.slack.channel.name=\ud14c\uc2a4\ud2b8_mjon\uba54\uc2dc\uc9c0 |
--- src/main/resources/egovframework/egovProps/globals_local.properties
+++ src/main/resources/egovframework/egovProps/globals_local.properties
... | ... | @@ -116,3 +116,12 @@ |
| 116 | 116 |
#MOBILE |
| 117 | 117 |
Globals.pay.kgm.mobile.mcSvcid=170622040674 |
| 118 | 118 |
Globals.pay.kgm.mobile.payMode=00 |
| 119 |
+ |
|
| 120 |
+#Slack |
|
| 121 |
+Globals.slack.hooks.url=https://hooks.slack.com/services/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 |
|
| 122 |
+Globals.slack.channel.name=\ud14c\uc2a4\ud2b8_mjon\uba54\uc2dc\uc9c0 |
|
| 123 |
+ |
|
| 124 |
+ |
|
| 125 |
+ |
|
| 126 |
+ |
|
| 127 |
+ |
--- src/main/resources/egovframework/egovProps/globals_prod.properties
+++ src/main/resources/egovframework/egovProps/globals_prod.properties
... | ... | @@ -102,4 +102,8 @@ |
| 102 | 102 |
Globals.pay.kgm.bank.payMode=10 |
| 103 | 103 |
#MOBILE |
| 104 | 104 |
Globals.pay.kgm.mobile.mcSvcid=220613125202 |
| 105 |
-Globals.pay.kgm.mobile.payMode=10(No newline at end of file) |
|
| 105 |
+Globals.pay.kgm.mobile.payMode=10 |
|
| 106 |
+ |
|
| 107 |
+#Slack |
|
| 108 |
+Globals.slack.hooks.url=https://hooks.slack.com/services/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 |
|
| 109 |
+Globals.slack.channel.name=mjon\uba54\uc2dc\uc9c0(No newline at end of file) |
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
... | ... | @@ -1016,7 +1016,7 @@ |
| 1016 | 1016 |
const numbers = textarea.val().split('\n')
|
| 1017 | 1017 |
.map(num => num.trim()) |
| 1018 | 1018 |
.filter(num => num !== ""); |
| 1019 |
- |
|
| 1019 |
+ |
|
| 1020 | 1020 |
console.log('입력된 번호들 : ', numbers);
|
| 1021 | 1021 |
|
| 1022 | 1022 |
// 현재 테이블에 있는 데이터 가져오기 |
... | ... | @@ -1028,13 +1028,19 @@ |
| 1028 | 1028 |
|
| 1029 | 1029 |
// 각 번호를 테이블에 추가 (중복 검사 및 포맷팅 포함) |
| 1030 | 1030 |
numbers.forEach(number => {
|
| 1031 |
+// const formattedNumber = formatPhoneNumber(number); // 번호 표준화 |
|
| 1032 |
+ |
|
| 1031 | 1033 |
const formattedNumber = formatPhoneNumber(number); // 번호 표준화 |
| 1034 |
+ console.log('formattedNumber : ', formattedNumber);
|
|
| 1032 | 1035 |
// console.log('number : ', number)
|
| 1033 | 1036 |
// console.log('formattedNumber : ', formattedNumber)
|
| 1034 | 1037 |
const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 |
| 1038 |
+ console.log('cleanedNumber : ', cleanedNumber);
|
|
| 1039 |
+ console.log('cleanedNumber : ', cleanedNumber);
|
|
| 1035 | 1040 |
if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크
|
| 1036 | 1041 |
if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사
|
| 1037 |
- tableL.addRow({ phone: formattedNumber }); // 표준화된 번호로 추가
|
|
| 1042 |
+// tableL.addRow({ phone: formattedNumber }); // 표준화된 번호로 추가
|
|
| 1043 |
+ tableL.addRow({ phone: cleanedNumber }); // 하이픈 제거된 번호로 추가
|
|
| 1038 | 1044 |
existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 |
| 1039 | 1045 |
} else {
|
| 1040 | 1046 |
// alert(`유효하지 않은 번호 형식: ${number}`);
|
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
... | ... | @@ -1081,6 +1081,7 @@ |
| 1081 | 1081 |
} |
| 1082 | 1082 |
} |
| 1083 | 1083 |
|
| 1084 |
+ |
|
| 1084 | 1085 |
|
| 1085 | 1086 |
if(!confirm("문자를 전송하시겠습니까?")){
|
| 1086 | 1087 |
return false; |
... | ... | @@ -1236,6 +1237,23 @@ |
| 1236 | 1237 |
} |
| 1237 | 1238 |
|
| 1238 | 1239 |
|
| 1240 |
+// 선택된 데이터의 길이에 따라 예상 시간 계산 함수 |
|
| 1241 |
+function calculateEstimatedTime(selectedCount) {
|
|
| 1242 |
+ //기준값 |
|
| 1243 |
+ // const processTimePerBatch = 130; // 130초 |
|
| 1244 |
+ |
|
| 1245 |
+ |
|
| 1246 |
+ const processTimePerBatch = 260; // 260초 |
|
| 1247 |
+ const batchSize = 300000; // 30만 건 |
|
| 1248 |
+ |
|
| 1249 |
+ // 1건당 처리 시간 |
|
| 1250 |
+ const timePerRecord = processTimePerBatch / batchSize; |
|
| 1251 |
+ |
|
| 1252 |
+ // 예상 시간 계산 |
|
| 1253 |
+ const estimatedTimeInSeconds = selectedCount * timePerRecord; |
|
| 1254 |
+ |
|
| 1255 |
+ return estimatedTimeInSeconds.toFixed(2); |
|
| 1256 |
+} |
|
| 1239 | 1257 |
|
| 1240 | 1258 |
|
| 1241 | 1259 |
|
... | ... | @@ -1268,6 +1286,12 @@ |
| 1268 | 1286 |
// 시작 시간 |
| 1269 | 1287 |
const startTime = new Date(); |
| 1270 | 1288 |
|
| 1289 |
+ |
|
| 1290 |
+ // 프로그래스파 시간을 위한 계산 |
|
| 1291 |
+ var estimtedTime = calculateEstimatedTime($selectedData.length); |
|
| 1292 |
+ console.log('estimtedTime : ', estimtedTime);
|
|
| 1293 |
+ |
|
| 1294 |
+ |
|
| 1271 | 1295 |
$.ajax({
|
| 1272 | 1296 |
type: "POST", |
| 1273 | 1297 |
url: url, |
... | ... | @@ -1275,6 +1299,7 @@ |
| 1275 | 1299 |
contentType: 'application/json', |
| 1276 | 1300 |
dataType: 'json', |
| 1277 | 1301 |
success: function (data) {
|
| 1302 |
+ |
|
| 1278 | 1303 |
// 요청 종료 시간 및 경과 시간 계산 |
| 1279 | 1304 |
const endTime = new Date(); |
| 1280 | 1305 |
const elapsed = (endTime - startTime) / 1000; // 밀리초 -> 초로 변환 |
... | ... | @@ -1345,12 +1370,19 @@ |
| 1345 | 1370 |
|
| 1346 | 1371 |
}, |
| 1347 | 1372 |
beforeSend : function(xmlHttpRequest) {
|
| 1373 |
+ // 프로그래스 바 실행 |
|
| 1374 |
+ // 프로그래스 바 실행 |
|
| 1375 |
+ progressStart(estimtedTime); |
|
| 1348 | 1376 |
//로딩창 show |
| 1349 |
- $('.loading_layer').addClass('active');
|
|
| 1377 |
+// $('.loading_layer').addClass('active');
|
|
| 1350 | 1378 |
}, |
| 1351 | 1379 |
complete : function(xhr, textStatus) {
|
| 1352 |
- //로딩창 hide |
|
| 1353 |
- $('.loading_layer').removeClass('active');
|
|
| 1380 |
+ |
|
| 1381 |
+ // 프로그래스 바 종료 |
|
| 1382 |
+ // 프로그래스 바 종료 |
|
| 1383 |
+ progressComplete();; |
|
| 1384 |
+// 로딩창 hide |
|
| 1385 |
+// $('.loading_layer').removeClass('active');
|
|
| 1354 | 1386 |
}, |
| 1355 | 1387 |
error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); }
|
| 1356 | 1388 |
}); |
... | ... | @@ -1359,6 +1391,14 @@ |
| 1359 | 1391 |
|
| 1360 | 1392 |
//폼 유효성 검사 함수 |
| 1361 | 1393 |
function validateForm(form) {
|
| 1394 |
+ |
|
| 1395 |
+ // 타블레이터 호출 |
|
| 1396 |
+ var $selectedData = tableL.getData(); // 데이터 가져오기 |
|
| 1397 |
+ if($selectedData.length < 1){
|
|
| 1398 |
+ alert("받는사람 내역을 입력해주세요.");
|
|
| 1399 |
+ return false; |
|
| 1400 |
+ } |
|
| 1401 |
+ |
|
| 1362 | 1402 |
|
| 1363 | 1403 |
if(form.callFromList.value == ""){
|
| 1364 | 1404 |
|
... | ... | @@ -1390,7 +1430,7 @@ |
| 1390 | 1430 |
} |
| 1391 | 1431 |
|
| 1392 | 1432 |
if (imgFilePath.length === 0 && !form.smsTxtArea.value) {
|
| 1393 |
- alert("문자 내용을 입력해 주세요.");
|
|
| 1433 |
+ alert("문자내용을 입력해 주세요.");
|
|
| 1394 | 1434 |
return false; |
| 1395 | 1435 |
} |
| 1396 | 1436 |
return true; |
--- src/main/webapp/publish/js/content.js
+++ src/main/webapp/publish/js/content.js
... | ... | @@ -1587,7 +1587,7 @@ |
| 1587 | 1587 |
|
| 1588 | 1588 |
// 프로그레스바 |
| 1589 | 1589 |
var start, change; |
| 1590 |
-let progressInterval = null; // 전역 변수로 타이머 ID 관리 |
|
| 1590 |
+var progressInterval = null; // 전역 변수로 타이머 ID 관리 |
|
| 1591 | 1591 |
|
| 1592 | 1592 |
function progressStart(time) {
|
| 1593 | 1593 |
// 기존 타이머 정지 및 초기화 |
... | ... | @@ -1644,52 +1644,12 @@ |
| 1644 | 1644 |
|
| 1645 | 1645 |
|
| 1646 | 1646 |
|
| 1647 |
- |
|
| 1648 |
-/* |
|
| 1649 |
-function progressStart(time) {
|
|
| 1650 |
- |
|
| 1651 |
- // 초기셋팅 |
|
| 1652 |
- $(".time_text").text("0%");
|
|
| 1653 |
- $(".change_bar").css("width", "0");
|
|
| 1654 |
- $(".time_text").removeClass("animation");
|
|
| 1655 |
- |
|
| 1656 |
- $(".progress_bar_wrap").css("display", "flex");
|
|
| 1657 |
- |
|
| 1658 |
- var timeText = document.querySelector(".time_text");
|
|
| 1659 |
- var bar = document.querySelector(".change_bar");
|
|
| 1660 |
- |
|
| 1661 |
- var width = 1; |
|
| 1662 |
- var totalTime = time * 1000; // 시간 |
|
| 1663 |
- var cmpWid = totalTime / 100; // width 증가하는 시간 |
|
| 1664 |
- |
|
| 1665 |
- start = setInterval(changeWidth, cmpWid); // 프로그레스바 시작 |
|
| 1666 |
- |
|
| 1667 |
- function changeWidth() {
|
|
| 1668 |
- if (width >= 100) {
|
|
| 1669 |
- // width 100% 됐을 때 |
|
| 1670 |
- clearInterval(start); // 프로그래스바 멈춤 |
|
| 1671 |
- |
|
| 1672 |
- timeText.innerHTML = "100%"; |
|
| 1673 |
- setTimeout(function () {
|
|
| 1674 |
- // 100%되고 1초 후 잠시만 기다려주세요 변경 및 애니메이션 추가 |
|
| 1675 |
- timeText.innerHTML = "잠시만 기다려주세요..."; |
|
| 1676 |
- $(".time_text").addClass("animation");
|
|
| 1677 |
- }, 1000) |
|
| 1678 |
- |
|
| 1679 |
- |
|
| 1680 |
- } else {
|
|
| 1681 |
- // width 증가 및 text 변경 |
|
| 1682 |
- width++; |
|
| 1683 |
- bar.style.width = width + "%"; |
|
| 1684 |
- timeText.innerHTML = width + "%"; |
|
| 1685 |
- } |
|
| 1686 |
- } |
|
| 1687 |
-}*/ |
|
| 1688 |
- |
|
| 1689 | 1647 |
// 프로그레스바 완료 |
| 1690 | 1648 |
function progressComplete() {
|
| 1691 | 1649 |
// var width = parseInt($(".time_text").text().replace('%', '')) || 0; // 현재 width 가져오기
|
| 1692 | 1650 |
|
| 1651 |
+ $(".progress_bar_wrap").hide();
|
|
| 1652 |
+ /* |
|
| 1693 | 1653 |
var widthText = $(".change_bar").attr("style");
|
| 1694 | 1654 |
var width = widthText.replace(/[width:%;overfloen]/ig, ""); // width 값 퍼센트로 가져오기 |
| 1695 | 1655 |
var currentText = $(".time_text").text().trim(); // 현재 텍스트 가져오기
|
... | ... | @@ -1725,7 +1685,7 @@ |
| 1725 | 1685 |
$(".time_text").text(width + "%");
|
| 1726 | 1686 |
$(".change_bar").css("width", width + "%");
|
| 1727 | 1687 |
} |
| 1728 |
- }, 10); // DOM 업데이트 간격 (10ms) |
|
| 1688 |
+ }, 10); // DOM 업데이트 간격 (10ms)*/ |
|
| 1729 | 1689 |
} |
| 1730 | 1690 |
|
| 1731 | 1691 |
/*// 프로그레스바 완료 |
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?