From a74193673eac7c681a5fe605d213c866d2daa9e8 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 13 Mar 2025 11:37:28 +0900 Subject: [PATCH] =?UTF-8?q?=EC=95=8C=EB=A6=BC=ED=86=A1=20=EC=A7=84?= =?UTF-8?q?=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/kakao/kakaoComm/KakaoSendUtil.java | 62 ++++++++++++++++--- .../web/KakaoAlimTalkSendController.java | 4 +- 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java index 9f75de64..48a0eb42 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java +++ b/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 @@ public class KakaoSendUtil { List 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 variables : kakaoVO.getVarListMap()) { - KakaoSendAdvcVO kakaoSendAdvcVO = new KakaoSendAdvcVO(); + KakaoSendAdvcVO sendVO = new KakaoSendAdvcVO(); @@ -86,7 +107,7 @@ public class KakaoSendUtil { // 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 @@ public class KakaoSendUtil { if ("Y".equals(kakaoVO.getTxtReplYn())) { templateContent = replaceTemplateVariables(templateContent, variables); } - kakaoSendAdvcVO.setTemplateContent(templateContent); + sendVO.setTemplateContent(templateContent); // Step 1-4: 실패 대체 문자 치환데이터 설정 @@ -105,7 +126,7 @@ public class KakaoSendUtil { 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 @@ public class KakaoSendUtil { */ + + // step3 + // 바이트 수 체크 및 금액설정 + // 시스템 기본 단가 정보 불러오기 JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); @@ -132,7 +157,7 @@ public class KakaoSendUtil { 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 @@ public class KakaoSendUtil { - // 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 @@ public class KakaoSendUtil { // kakaoSendAdvcVO.setSendType("AT"); - kakaoSendAdvcVO.setMsgType("8"); - kakaoSendAdvcVO.setUserId(kakaoVO.getUserId()); + sendVO.setMsgType("8"); + sendVO.setUserId(kakaoVO.getUserId()); } diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java index c7f78365..f4cc5897 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java @@ -220,8 +220,8 @@ public class KakaoAlimTalkSendController { 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"; }