알림톡 진행중

This commit is contained in:
hehihoho3@gmail.com 2025-03-13 11:37:28 +09:00
parent 7b7b76b99f
commit a74193673e
2 changed files with 54 additions and 12 deletions

View File

@ -1,13 +1,17 @@
package itn.let.kakao.kakaoComm; package itn.let.kakao.kakaoComm;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -71,12 +75,29 @@ public class KakaoSendUtil {
List<KakaoSendAdvcVO> kakaoSendAdvcListVO = new ArrayList<>(); 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에 갯수가 수신자 갯수와 동일함 // Map에 갯수가 수신자 갯수와 동일함
for(Map<String, String> variables : kakaoVO.getVarListMap()) { for(Map<String, String> variables : kakaoVO.getVarListMap()) {
KakaoSendAdvcVO kakaoSendAdvcVO = new KakaoSendAdvcVO(); KakaoSendAdvcVO sendVO = new KakaoSendAdvcVO();
@ -86,7 +107,7 @@ public class KakaoSendUtil {
// Step 1-2: 수신자 정보 설정 (callToList는 항상 설정). // Step 1-2: 수신자 정보 설정 (callToList는 항상 설정).
if (variables.containsKey("callToList")) { if (variables.containsKey("callToList")) {
kakaoSendAdvcVO.setCallTo(variables.get("callToList")); sendVO.setCallTo(variables.get("callToList"));
variables.remove("callToList"); // 사용 제거. variables.remove("callToList"); // 사용 제거.
} }
@ -95,7 +116,7 @@ public class KakaoSendUtil {
if ("Y".equals(kakaoVO.getTxtReplYn())) { if ("Y".equals(kakaoVO.getTxtReplYn())) {
templateContent = replaceTemplateVariables(templateContent, variables); templateContent = replaceTemplateVariables(templateContent, variables);
} }
kakaoSendAdvcVO.setTemplateContent(templateContent); sendVO.setTemplateContent(templateContent);
// Step 1-4: 실패 대체 문자 치환데이터 설정 // Step 1-4: 실패 대체 문자 치환데이터 설정
@ -105,7 +126,7 @@ public class KakaoSendUtil {
if ("Y".equals(kakaoVO.getSubMsgTxtReplYn())) { if ("Y".equals(kakaoVO.getSubMsgTxtReplYn())) {
subMsgTxt = replaceTemplateVariables(subMsgTxt, variables); 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", 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(); JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
@ -132,7 +157,7 @@ public class KakaoSendUtil {
if("Y".equals(kakaoVO.getSubMsgSendYn())) { if("Y".equals(kakaoVO.getSubMsgSendYn())) {
int smsTxtByte = mjonCommon.getSmsTxtBytes(kakaoSendAdvcVO.getSubMsgTxt()); int smsTxtByte = mjonCommon.getSmsTxtBytes(sendVO.getSubMsgTxt());
String sendType = getMsgType(smsTxtByte); String sendType = getMsgType(smsTxtByte);
@ -152,11 +177,28 @@ public class KakaoSendUtil {
// step3
// 바이트 체크 ==> 실패 성공
// step4 // 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 // step5
// 전송 메세지 설정 kakaoSendMsg 참고 // 전송 메세지 설정 kakaoSendMsg 참고
@ -164,8 +206,8 @@ public class KakaoSendUtil {
// kakaoSendAdvcVO.setSendType("AT"); // kakaoSendAdvcVO.setSendType("AT");
kakaoSendAdvcVO.setMsgType("8"); sendVO.setMsgType("8");
kakaoSendAdvcVO.setUserId(kakaoVO.getUserId()); sendVO.setUserId(kakaoVO.getUserId());
} }

View File

@ -220,8 +220,8 @@ public class KakaoAlimTalkSendController {
model.addAttribute("sendPrice", kakaoSendUtil.selectSendPriceOfKakaoAtAndSmsAndMms(userId)); model.addAttribute("sendPrice", kakaoSendUtil.selectSendPriceOfKakaoAtAndSmsAndMms(userId));
} }
return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView"; // return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView";
// return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView_advcbackup_20250310"; return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView_advcbackup_20250310";
} }