알림톡 api 단문발송 - 대체문자 추가 진행중
This commit is contained in:
parent
3a743c6ddc
commit
e9aa136932
1019
src/main/java/com/itn/mjonApi/cmn/domain/SendRequestCmnVO.java
Normal file
1019
src/main/java/com/itn/mjonApi/cmn/domain/SendRequestCmnVO.java
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,6 @@
|
||||
package com.itn.mjonApi.mjon.api.kakao.at.send.mapper.domain;
|
||||
|
||||
import com.itn.mjonApi.cmn.domain.SendRequestCmnVO;
|
||||
import lombok.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
@ -25,10 +26,14 @@ import java.util.stream.Collectors;
|
||||
@ToString
|
||||
@Getter
|
||||
@Setter
|
||||
public class MsgAtRequestVO implements Serializable {
|
||||
public class MsgAtRequestVO extends SendRequestCmnVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String sendKind = "A";
|
||||
|
||||
|
||||
|
||||
private String mberId; // value = "사용자 ID", example = "goodgkdus"
|
||||
|
||||
private String accessKey; // value = "Api Key", example = "0367a25ec370d1141898a0b9767103"
|
||||
@ -37,11 +42,22 @@ public class MsgAtRequestVO implements Serializable {
|
||||
|
||||
private String templateCode; // 카카오 알림톡 템플릿 코드
|
||||
|
||||
private String[] callToList; // value = "수신번호리스트", dataType = "[Ljava.lang.String;", example = "01011112222,01022223333"
|
||||
// private String[] callToList; // value = "수신번호리스트", dataType = "[Ljava.lang.String;", example = "01011112222,01022223333"
|
||||
|
||||
private String callFrom; // value = "발신번호 :: 정책이 필요함", example = "01011112222"
|
||||
|
||||
private String sendKind = "A";
|
||||
private String templateContent_1; // 카카오 분문
|
||||
private String templateContent_2; // 카카오 분문
|
||||
|
||||
private String templateTitle_1; // 카카오 타이틀
|
||||
private String templateTitle_2; // 카카오 타이틀
|
||||
|
||||
|
||||
// 대체문자 여부
|
||||
private String subMsgSendYn;
|
||||
|
||||
// 대체문자 내용
|
||||
private String subMsgTxt;
|
||||
|
||||
private String test_yn;
|
||||
|
||||
|
||||
@ -40,5 +40,16 @@ public class VarListMapVO {
|
||||
// * @description : [*4*] - 치환문자
|
||||
// */
|
||||
// private String rep4;
|
||||
//
|
||||
// /**
|
||||
// * @description : 제목
|
||||
// */
|
||||
// private String subject;
|
||||
//
|
||||
// /**
|
||||
// * @description : 내용
|
||||
// */
|
||||
// private String message;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -16,6 +16,8 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@ -54,6 +56,8 @@ public class SendAtServiceImpl implements SendAtService {
|
||||
// return this._getTestMsgReturnData(msgRequestVO.getTest_yn());
|
||||
}
|
||||
|
||||
// 1. [공통 모듈 호출] 'callTo_' 필드에서 전화번호를 한번만 추출합니다.
|
||||
List<String> phoneNumbers = MunjaUtil.extractCallToNumbers(msgAtRequestVO);
|
||||
|
||||
// step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능)
|
||||
// 1020
|
||||
|
||||
@ -43,10 +43,10 @@ public class SendAtRestController {
|
||||
@PostMapping("/api/kakao/at/sendMsg")
|
||||
public ResponseEntity<RestResponse> sendMsg(MsgAtRequestVO msgAtRequestVO) throws Exception {
|
||||
|
||||
// https://smartsms.aligo.in/friendapi.html
|
||||
// https://smartsms.aligo.in/alimapi.html
|
||||
|
||||
return ResponseEntity.ok().body(sendAtService.sendAtData(msgAtRequestVO));
|
||||
// return ResponseEntity.ok().body(sendService.sendMsgData(msgRequestVO));
|
||||
// return ResponseEntity.ok().body(new RestResponse(msgAtRequestVO));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -3,6 +3,10 @@ package com.itn.mjonApi.util;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* packageName : com.itn.mjonApi.util
|
||||
* fileName : SendUtil
|
||||
@ -17,16 +21,6 @@ import org.apache.commons.lang3.StringUtils;
|
||||
public class MunjaUtil {
|
||||
|
||||
|
||||
/**
|
||||
* 폰번호 유효성 검사
|
||||
* @param callTo
|
||||
* @return
|
||||
*/
|
||||
public static Boolean validatePNumWithRegex(String callTo){
|
||||
// 핸드폰 정규식
|
||||
String regex = "^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$";
|
||||
return callTo.matches(regex) ? true : false;
|
||||
}
|
||||
/**
|
||||
* 폰번호 빈값 검사
|
||||
* @param str
|
||||
@ -87,4 +81,61 @@ public class MunjaUtil {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* [핵심 공통 모듈]
|
||||
* 객체에서 'callTo_'로 시작하는 모든 필드 값을 추출하여 리스트로 반환합니다.
|
||||
* @param vo 'callTo_' 필드를 가진 객체
|
||||
* @return 추출된 전화번호 문자열 리스트 (값이 없는 필드는 제외됨)
|
||||
*/
|
||||
public static List<String> extractCallToNumbers(Object vo) {
|
||||
List<String> phoneNumbers = new ArrayList<>();
|
||||
if (vo == null) {
|
||||
return phoneNumbers;
|
||||
}
|
||||
|
||||
try {
|
||||
Field[] fields = vo.getClass().getDeclaredFields();
|
||||
for (Field field : fields) {
|
||||
if (field.getName().startsWith("callTo_")) {
|
||||
field.setAccessible(true);
|
||||
Object value = field.get(vo);
|
||||
// 필드 값이 존재하고, 빈 문자열이 아닌 경우에만 리스트에 추가
|
||||
if (value instanceof String && org.springframework.util.StringUtils.hasText((String) value)) {
|
||||
phoneNumbers.add((String) value);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
// 실제 운영에서는 로깅 처리가 필요합니다.
|
||||
e.printStackTrace();
|
||||
}
|
||||
return phoneNumbers;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* [리팩토링된 유효성 검사]
|
||||
* 추출된 번호 리스트를 받아 유효성을 검사합니다.
|
||||
* @param phoneNumbers 검사할 번호 리스트
|
||||
* @return 유효하지 않으면 true, 모두 유효하면 false
|
||||
*/
|
||||
public static boolean hasInvalidPhoneNumber(List<String> phoneNumbers) {
|
||||
// 1. 추출된 번호가 하나도 없으면 실패
|
||||
if (phoneNumbers == null || phoneNumbers.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 2. 리스트의 모든 번호가 정규식에 맞는지 확인
|
||||
// 하나라도(!allMatch) 정규식에 맞지 않으면 true 반환
|
||||
return !phoneNumbers.stream().allMatch(MunjaUtil::validatePNumWithRegex);
|
||||
}
|
||||
|
||||
// 기존 정규식 검사 메서드 (변경 없음)
|
||||
public static boolean validatePNumWithRegex(String pNum) {
|
||||
return pNum != null && pNum.matches("^\\d{10,11}$");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user