File name
Commit message
Commit date
File name
Commit message
Commit date
2025-04-15
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2024-08-23
2023-10-11
File name
Commit message
Commit date
package itn.com.cmm.util;
import org.apache.commons.lang3.StringUtils;
import itn.let.kakao.kakaoComm.KakaoSendAdvcVO;
import itn.let.kakao.kakaoComm.KakaoVO;
import itn.let.mjo.msg.service.MjonMsgVO;
public class SlackMessageFormatUtil {
private static final String PREFIX_SMISHING = "[스미싱의심]";
private static final String PREFIX_RESERVE = "[예약]";
private static final String PREFIX_IMAGE = "그림문자 ";
/**
* 일반 SMS 메시지 텍스트 포맷팅
*/
public static String formatSmsText(MjonMsgVO mjonMsgVO) {
String smsTxt = mjonMsgVO.getSmsTxt();
String reserveYn = safeGetString(mjonMsgVO.getReserveYn());
String delayYn = safeGetString(mjonMsgVO.getDelayYn());
String smishingYn = safeGetString(mjonMsgVO.getSmishingYn());
// 공통 텍스트 포맷팅 로직 적용
smsTxt = formatMessagePrefix(smsTxt, reserveYn,
"Y".equals(smishingYn) || "Y".equals(delayYn));
// 그림 문자 처리 (SMS 전용 로직)
int fileCount = parseIntOrDefault(mjonMsgVO.getFileCnt(), 0);
if ("6".equals(mjonMsgVO.getMsgType()) && fileCount > 0 && StringUtils.isEmpty(smsTxt)) {
smsTxt = "그림문자 " + smsTxt;
}
return smsTxt;
}
/**
* 카카오톡 메시지 텍스트 포맷팅
*/
public static String formatKakaoText(KakaoSendAdvcVO sendVO) {
String smsTxt = sendVO.getTemplateContent();
String reserveYn = safeGetString(sendVO.getReserveYn());
String atDelayYn = safeGetString(sendVO.getAtDelayYn());
// 공통 텍스트 포맷팅 로직 적용
return formatMessagePrefix(smsTxt, reserveYn, "Y".equals(atDelayYn));
}
public static String formatSandName(MjonMsgVO mjonMsgVO) {
String userId = mjonMsgVO.getUserId();
String callFrom = mjonMsgVO.getCallFrom();
String msgType = getMessageTypeLabel(mjonMsgVO.getMsgType(), mjonMsgVO.getFileCnt());
return String.format("[%s][%s]%s", userId, callFrom, msgType);
}
/**
* 메시지 접두사 포맷팅 공통 로직 (예약 및 스미싱 의심 접두사 처리)
*
* @param messageText 원본 메시지 텍스트
* @param reserveYn 예약 여부
* @param isSmishing 스미싱 의심 여부
* @return 포맷팅된 메시지 텍스트
*/
public static String formatMessagePrefix(String messageText, String reserveYn, boolean isSmishing) {
if ("Y".equals(reserveYn)) {
return isSmishing ? PREFIX_SMISHING + PREFIX_RESERVE + messageText : PREFIX_RESERVE + messageText;
} else if (isSmishing) {
return PREFIX_SMISHING + messageText;
}
return messageText;
}
/**
* @카카오톡용 sandName 포맷팅 메서드
*/
public static String formatKakaoSandName(KakaoSendAdvcVO sendVO) {
String userId = sendVO.getUserId();
String callFrom = sendVO.getCallFrom();
String msgType = getKakaoMessageTypeLabel(sendVO.getMsgType());
return String.format("[%s][%s]%s", userId, callFrom, msgType);
}
/**
* 메시지 타입 레이블 반환 (SMS 전용)
*
* @param msgType 메시지 타입
* @param fileCnt 파일 개수
* @return 메시지 타입 레이블
*/
public static String getMessageTypeLabel(String msgType, String fileCnt) {
int fileCount = parseIntOrDefault(fileCnt, 0);
switch (msgType) {
case "4":
return "[단문]";
case "6":
return fileCount == 0 ? "[장문]" : "[그림]";
default:
return "";
}
}
/**
* 카카오톡 메시지 타입 레이블 반환
*
* @param msgType 메시지 타입
* @return 메시지 타입 레이블
*/
public static String getKakaoMessageTypeLabel(String msgType) {
switch (msgType) {
case "8":
return "[알림톡]";
case "9":
return "[친구톡]";
default:
return "";
}
}
/**
* 정수로 변환, 변환 실패 시 기본값 반환
*
* @param value 변환할 문자열
* @param defaultValue 기본값
* @return 변환된 정수 또는 기본값
*/
public static int parseIntOrDefault(String value, int defaultValue) {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
return defaultValue;
}
}
/**
* 안전하게 문자열 가져오기 (null 체크)
*
* @param value 원본 문자열
* @return 원본 문자열 또는 빈 문자열
*/
public static String safeGetString(String value) {
return value == null ? "" : value;
}
}