이호영 이호영 2025-03-13
알림톡 진행중
@a74193673eac7c681a5fe605d213c866d2daa9e8
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
@@ -1,13 +1,17 @@
 package itn.let.kakao.kakaoComm;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Resource;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Component;
@@ -71,12 +75,29 @@
 		
 		List<KakaoSendAdvcVO> kakaoSendAdvcListVO = new ArrayList<>();
 		
+
+		// 예약 시간 기본값 설정
+		Date now = new Date();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+		// ReqDate가 비어 있으면 현재 시간으로 설정, 그렇지 않으면 ReqDate로 설정
+		// 화면에서 예약문자면 예약시간을 regDate로 설정한다.
+		Date baseDate;
+		if (StringUtils.isEmpty(kakaoVO.getReqDate())) {
+			kakaoVO.setReqDate(sdf.format(now));  // ReqDate에 현재 시간 설정
+		    baseDate = now;
+		} else {
+		    baseDate = sdf.parse(kakaoVO.getReqDate()); // ReqDate를 baseDate로 설정
+		}
+
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(baseDate);  // calendar에 baseDate 설정
 		
+		int counter = 0;  // 분할 건수 카운터
 		
 		// Map에 총 갯수가 수신자 갯수와 동일함
 		for(Map<String, String> variables : kakaoVO.getVarListMap()) {
 			
-			KakaoSendAdvcVO kakaoSendAdvcVO = new KakaoSendAdvcVO();
+			KakaoSendAdvcVO sendVO = new KakaoSendAdvcVO();
 			
 			
 
@@ -86,7 +107,7 @@
 			
 			// Step 1-2: 수신자 정보 설정 (callToList는 항상 설정).
 			if (variables.containsKey("callToList")) {
-				kakaoSendAdvcVO.setCallTo(variables.get("callToList"));
+				sendVO.setCallTo(variables.get("callToList"));
 				variables.remove("callToList"); // 사용 후 제거.
 			}
 
@@ -95,7 +116,7 @@
 			if ("Y".equals(kakaoVO.getTxtReplYn())) {
 				templateContent = replaceTemplateVariables(templateContent, variables);
 			}
-			kakaoSendAdvcVO.setTemplateContent(templateContent);
+			sendVO.setTemplateContent(templateContent);
 			
 
 			// Step 1-4: 실패 대체 문자 치환데이터 설정
@@ -105,7 +126,7 @@
 				if ("Y".equals(kakaoVO.getSubMsgTxtReplYn())) {
 					subMsgTxt = replaceTemplateVariables(subMsgTxt, variables);
 				}
-				kakaoSendAdvcVO.setSubMsgTxt(subMsgTxt);// 실패 
+				sendVO.setSubMsgTxt(subMsgTxt);// 실패 
 			}
 			/*
 						log.info("kakaoSendAdvcVO Details: [callTo={}\n, templateContent=\n{}\n, subMsgTxt=\n{}]\n\n\n\n",
@@ -116,6 +137,10 @@
 			*/
 
 
+			
+			// step3
+			// 바이트 수 체크 및 금액설정
+			
 			// 시스템 기본 단가 정보 불러오기
 			JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
 			
@@ -132,7 +157,7 @@
 			
 			
 			if("Y".equals(kakaoVO.getSubMsgSendYn())) {
-				int smsTxtByte = mjonCommon.getSmsTxtBytes(kakaoSendAdvcVO.getSubMsgTxt());
+				int smsTxtByte = mjonCommon.getSmsTxtBytes(sendVO.getSubMsgTxt());
 				
 				String sendType = getMsgType(smsTxtByte);
 
@@ -152,11 +177,28 @@
 			
 			
 			
-			// step3
-			// 바이트 수 체크 ==> 실패 성공
-			
 			// step4
 			// 예약 시간 설정 및 분할 데이터 설정
+			if ("Y".equalsIgnoreCase(kakaoVO.getReserveYn())) {
+				// 분할 발송일 경우
+				if ("on".equalsIgnoreCase(kakaoVO.getDivideChk())) {
+					if (counter == Integer.parseInt(kakaoVO.getDivideCnt()))  { // 지정된 건수마다 간격 추가
+						counter = 0;
+						calendar.add(Calendar.MINUTE, Integer.parseInt(kakaoVO.getDivideTime()));
+					}
+					counter++;
+				}
+				// 예약 시간 설정
+			}
+			
+			// 즉시 발송인경우 현재 시간 
+			// 예약인 경우 위에 설정한 시간 입력
+			sendVO.setReqDate(sdf.format(calendar.getTime())); 
+			
+			
+			
+			
+			
 			
 			// step5
 			// 전송 메세지 설정 kakaoSendMsg 참고
@@ -164,8 +206,8 @@
 			
 
 //			kakaoSendAdvcVO.setSendType("AT");
-			kakaoSendAdvcVO.setMsgType("8");
-			kakaoSendAdvcVO.setUserId(kakaoVO.getUserId());
+			sendVO.setMsgType("8");
+			sendVO.setUserId(kakaoVO.getUserId());
 			
 			
 		}
src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
@@ -220,8 +220,8 @@
 			model.addAttribute("sendPrice", kakaoSendUtil.selectSendPriceOfKakaoAtAndSmsAndMms(userId));
 		}
 		
-		return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView";
-//		return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView_advcbackup_20250310";
+//		return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView";
+		return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView_advcbackup_20250310";
 									
 	}
 	
Add a comment
List