api 문자 요청 시 advc 버전으로 수정 완료
This commit is contained in:
parent
8091778410
commit
2bcecc2199
@ -51,6 +51,9 @@ public class ApiService <T> {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
JsonNode rootNode = mapper.readTree(returnEntity.getBody());
|
||||
|
||||
// log.info("rootNode :: [{}]", rootNode.toString());
|
||||
|
||||
|
||||
// "apiReturn" 필드만 추출
|
||||
JsonNode apiReturnNode = rootNode.get("apiReturn");
|
||||
if (apiReturnNode == null || apiReturnNode.isNull()) {
|
||||
|
||||
@ -33,7 +33,8 @@ public enum StatMsg {
|
||||
// 문자보내기 ======================================================================
|
||||
STAT_0("0","")
|
||||
, STAT_1010("1010","발신자 전화번호 사용 불가")
|
||||
, STAT_1020("1020","수신자 전화번호 오류")
|
||||
, STAT_1020("1020","수신자 전화번호 오류") // ㅂ
|
||||
, STAT_1021("1021","수신거부 번호 제거 후 수신자 목록 없음")
|
||||
, STAT_1030("1030","문자 내용 발송 불가")
|
||||
, STAT_1040("1040","치환 데이터 오류")
|
||||
, STAT_1050("1050","치환 후 문자 길이 초과")
|
||||
@ -68,13 +69,17 @@ public enum StatMsg {
|
||||
}
|
||||
|
||||
// Random을 만들기 위한 코드
|
||||
// 모든 enum 항목을 불변 리스트로 저장
|
||||
private static final List<StatMsg> VALUES = Collections.unmodifiableList(Arrays.asList(values()));
|
||||
// 전체 항목 수
|
||||
private static final int SIZE = VALUES.size();
|
||||
// 랜덤 인스턴스
|
||||
private static final Random RANDOM = new Random();
|
||||
|
||||
/**
|
||||
* @description : 랜덤한 에러코드를 반환한다.
|
||||
* @return errorCode
|
||||
* 랜덤한 에러코드를 반환한다.
|
||||
* 단, 코드 값이 3자리 이하(예: "단문", "장문")인 항목은 제외된다.
|
||||
* @return "STAT_코드" 형식의 문자열
|
||||
*/
|
||||
public static String randomErrorStatCode() {
|
||||
String errorCode = "";
|
||||
|
||||
@ -34,10 +34,11 @@ public class MjonResponseVO {
|
||||
private String msgGroupId;
|
||||
private String afterCash;
|
||||
private String msgType;
|
||||
private String statCode;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param JsonNode apiReturnNode
|
||||
* @param apiReturnNode
|
||||
* @return ResponseEntity vo convert
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
|
||||
@ -85,31 +85,33 @@ public class SendSucRestResponse {
|
||||
*/
|
||||
public static SendSucRestResponse SendSuccessMsgsRestResponse(List<MjonResponseVO> mjonResponseVOList) {
|
||||
|
||||
mjonResponseVOList.forEach(t->log.info(t.toString()));
|
||||
|
||||
// 실패 카운트
|
||||
int failCnt = (int) mjonResponseVOList.stream()
|
||||
.filter(s->"fail".equals(s.getResult()))
|
||||
.filter(s->!"OK".equals(s.getResult()))
|
||||
.count();
|
||||
// 성공 카운트
|
||||
int successCnt = mjonResponseVOList.parallelStream()
|
||||
.filter(s->!"fail".equals(s.getResult()))
|
||||
.mapToInt(s -> Integer.parseInt(s.getResultSts()))
|
||||
.sum();
|
||||
int successCnt = (int) mjonResponseVOList.parallelStream()
|
||||
.filter(s->"OK".equals(s.getResult()))
|
||||
.count();
|
||||
// 수신거부 카운트
|
||||
int blockCnt = mjonResponseVOList.parallelStream()
|
||||
.filter(s->!"fail".equals(s.getResult()))
|
||||
.mapToInt(s -> Integer.parseInt(s.getResultBlockSts()))
|
||||
.sum();
|
||||
// int blockCnt = mjonResponseVOList.parallelStream()
|
||||
// .filter(s->!"OK".equals(s.getResult()))
|
||||
// .mapToInt(s -> Integer.parseInt(s.getResultBlockSts()))
|
||||
// .sum();
|
||||
|
||||
// 성공한 메세지 그룹 아이디
|
||||
List<String> msgGroupIdList = mjonResponseVOList.stream()
|
||||
.filter(s->!"fail".equals(s.getResult()))
|
||||
.filter(s->"OK".equals(s.getResult()))
|
||||
.map(s -> s.getMsgGroupId())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 성공한 메세지 그룹 아이디
|
||||
// 메세지 타입
|
||||
List<String> msgTypeList = mjonResponseVOList.stream()
|
||||
.map(s -> StatMsg.valueOf("msgType"+s.getMsgType()).getMsg())
|
||||
.collect(Collectors.toList());
|
||||
.filter(s -> s.getMsgType() != null)
|
||||
.map(s -> StatMsg.valueOf("msgType"+s.getMsgType()).getMsg())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
|
||||
@ -118,8 +120,8 @@ public class SendSucRestResponse {
|
||||
.resultCode(StatMsg.valueOf("STAT_0").getCode()) // 성공 코드 0 - StatMsg 참고
|
||||
.msgGroupIdList(msgGroupIdList) // 전송 메세지 그룹 ID
|
||||
.successCnt(Integer.toString(successCnt)) // 성공 건수
|
||||
.blockCnt(Integer.toString(blockCnt)) // 수신거부 건수
|
||||
.failCnt(Integer.toString(failCnt)) // 수신거부 건수
|
||||
// .blockCnt(Integer.toString(blockCnt)) // 수신거부 건수
|
||||
.failCnt(Integer.toString(failCnt)) // 실패 건수
|
||||
.msgTypeList(msgTypeList) // msgType List
|
||||
.build();
|
||||
|
||||
|
||||
@ -12,4 +12,6 @@ public interface SendService {
|
||||
RestResponse sendMsgData_advc(MsgRequestVO msgRequestVO) throws Exception;
|
||||
|
||||
RestResponse sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception;
|
||||
|
||||
RestResponse sendMsgsData_advc(MsgsRequestVO msgsRequestVO) throws Exception;
|
||||
}
|
||||
|
||||
@ -13,9 +13,11 @@ import com.itn.mjonApi.mjon.api.send.service.SendService;
|
||||
import com.itn.mjonApi.util.MunjaUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.catalina.connector.Response;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.lang.reflect.Field;
|
||||
@ -135,18 +137,12 @@ public class SendServiceImpl implements SendService {
|
||||
}else{ // 실패
|
||||
return new RestResponse(new FailRestResponse(StatMsg.randomErrorStatCode(),""));
|
||||
}
|
||||
|
||||
//step5.발송일시 정상여부 확인
|
||||
// 1050
|
||||
//step6.문자 타입에 따른 비용 처리 가능 여부 확인
|
||||
// 1060
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public RestResponse sendMsgData_advc(MsgRequestVO msgRequestVO) throws Exception {
|
||||
log.info(" :: sendMsgData_advc ::");
|
||||
|
||||
msgRequestVO.setSendKind("A");
|
||||
|
||||
@ -155,8 +151,6 @@ public class SendServiceImpl implements SendService {
|
||||
return this._getTestMsgReturnData(msgRequestVO.getTest_yn());
|
||||
}
|
||||
|
||||
|
||||
|
||||
// step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능)
|
||||
// 1020
|
||||
// 폰번호 확인 - 빈 값 -> 유효성 정규식
|
||||
@ -164,31 +158,25 @@ public class SendServiceImpl implements SendService {
|
||||
return new RestResponse(new FailRestResponse("STAT_1020",""));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//step4.치환명 정상 여부 확인
|
||||
// 1040
|
||||
msgRequestVO.setTxtReplYn(this.getTxtReplYn(msgRequestVO));
|
||||
// 치환데이터가 있을 경우
|
||||
if("Y".equals(msgRequestVO.getTxtReplYn())){
|
||||
// 치환 데이터 생성
|
||||
msgRequestVO.setMjonMsgSendVOList(this.buildMsgSendVOList(msgRequestVO));
|
||||
}
|
||||
// 치환 데이터 및 수신자 번호 VO 생성
|
||||
msgRequestVO.setMjonMsgSendVOList(this.buildMsgSendVOList(msgRequestVO));
|
||||
|
||||
// sms 변수 변경
|
||||
msgRequestVO.setSmsTxtArea(msgRequestVO.getSmsTxt());
|
||||
|
||||
|
||||
MjonResponseVO munjaSendResponse = apiService.postForEntity(
|
||||
"/web/mjon/msgdata/sendMsgDataAjax_advc.do"
|
||||
// "/web/user/login/sendMsgDataAjax.do"
|
||||
, msgRequestVO
|
||||
, String.class
|
||||
);
|
||||
|
||||
// convertMjonDataToApiResponse => MjonResponseVO 데이터를 ApiResponse 데이터로 변환하는 메소드
|
||||
if(!"fail".equals(munjaSendResponse.getResult())){ // 성공
|
||||
log.info(" + munjaSendResponse :: [{}]", munjaSendResponse.toString());
|
||||
if("OK".equals(munjaSendResponse.getResult())){ // 성공
|
||||
return new RestResponse(SendSucRestResponse.convertMjonDataToApiResponse(munjaSendResponse));
|
||||
}else{ // 실패
|
||||
return new RestResponse(new FailRestResponse(StatMsg.randomErrorStatCode(),""));
|
||||
return new RestResponse(new FailRestResponse(munjaSendResponse.getStatCode(),""));
|
||||
}
|
||||
|
||||
|
||||
@ -303,6 +291,7 @@ public class SendServiceImpl implements SendService {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RestResponse sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception {
|
||||
|
||||
@ -377,9 +366,9 @@ public class SendServiceImpl implements SendService {
|
||||
, String.class
|
||||
);
|
||||
// 스팸체크 결과값이 spams 이면 스팸문자로 처리
|
||||
if("spams".equals(spamChkEntity.getResult())){
|
||||
msgRequestVO.setSpamStatus("Y");
|
||||
};
|
||||
// if("spams".equals(spamChkEntity.getResult())){
|
||||
// msgRequestVO.setSpamStatus("Y");
|
||||
// };
|
||||
|
||||
log.info("msgRequestVO : [{}]", msgRequestVO.toString());
|
||||
// 문자 전송하는 부분
|
||||
@ -397,6 +386,41 @@ public class SendServiceImpl implements SendService {
|
||||
|
||||
|
||||
|
||||
return new RestResponse(SendSucRestResponse.SendSuccessMsgsRestResponse(mjonResponseVOList));
|
||||
}
|
||||
|
||||
@Override
|
||||
public RestResponse sendMsgsData_advc(MsgsRequestVO msgsRequestVO) throws Exception {
|
||||
|
||||
|
||||
log.info(" :: sendMsgData_advc ::");
|
||||
|
||||
|
||||
if(StringUtils.isNotEmpty(msgsRequestVO.getTest_yn())){
|
||||
return this._getTestMsgsReturnData(msgsRequestVO.getTest_yn());
|
||||
}
|
||||
|
||||
// msgsVO -> msgVO List로 변환
|
||||
List<MsgRequestVO> msgRequestVOList = this.getDataCleaning_advc(msgsRequestVO);
|
||||
|
||||
List<MjonResponseVO> mjonResponseVOList = new ArrayList<MjonResponseVO>();
|
||||
for(MsgRequestVO aa : msgRequestVOList){
|
||||
|
||||
aa.setSmsTxtArea(aa.getSmsTxt());
|
||||
aa.setSendKind("A");
|
||||
|
||||
MjonResponseVO munjaSendResponse = apiService.postForEntity(
|
||||
"/web/mjon/msgdata/sendMsgDataAjax_advc.do"
|
||||
, aa
|
||||
, String.class
|
||||
);
|
||||
|
||||
mjonResponseVOList.add(munjaSendResponse);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return new RestResponse(SendSucRestResponse.SendSuccessMsgsRestResponse(mjonResponseVOList));
|
||||
}
|
||||
|
||||
@ -496,7 +520,73 @@ public class SendServiceImpl implements SendService {
|
||||
return msgRequestVOList;
|
||||
}
|
||||
|
||||
private static List<MsgRequestVO> getDataCleaning_advc(MsgsRequestVO msgsRequestVO) {
|
||||
|
||||
|
||||
List<MsgRequestVO> msgRequestVOList = new ArrayList<>();
|
||||
|
||||
// Reflection으로 Object Field에 접근한다.
|
||||
Field[] declaredFields = msgsRequestVO.getClass().getDeclaredFields();
|
||||
|
||||
String mberId = msgsRequestVO.getMberId(); // 사용자 ID
|
||||
String accessKey = msgsRequestVO.getAccessKey(); // accessKey
|
||||
String callFrom = msgsRequestVO.getCallFrom(); // 발신자 번호
|
||||
String callTo = null; // 수신자 번호
|
||||
|
||||
List<MjonMsgSendVO> mjonMsgSendVOList = new ArrayList<>();
|
||||
for (Field field : declaredFields) {
|
||||
|
||||
Object value = null;
|
||||
// private Field일 경우 접근을 허용한다.
|
||||
field.setAccessible(true);
|
||||
|
||||
try {
|
||||
// Field Value를 참조한다.
|
||||
value = field.get(msgsRequestVO);
|
||||
} catch (IllegalAccessException e) {
|
||||
log.info("Reflection Error. {}", e);
|
||||
}
|
||||
|
||||
// nullPointException 방지
|
||||
if(value != null)
|
||||
{
|
||||
log.info("field.getName() : [{}]", field.getName());
|
||||
log.info("value.toString() : [{}]", value.toString());
|
||||
/**
|
||||
* 필드 이름으로 분기하여
|
||||
* 각각에 맞는 위치에 값을 넣어준다.
|
||||
*/
|
||||
if(field.getName().startsWith("callTo")){ // 수신자 번호
|
||||
callTo = value.toString();
|
||||
}else if(field.getName().startsWith("smsTxt")){ // 문자 내용
|
||||
|
||||
// 값이 비여 있으면 다음 반복문으로 넘어간다.
|
||||
if(StringUtils.isEmpty(value.toString())){
|
||||
callTo = "";
|
||||
continue;
|
||||
}
|
||||
MjonMsgSendVO vo = new MjonMsgSendVO();
|
||||
vo.setPhone(callTo);
|
||||
mjonMsgSendVOList.add(vo);
|
||||
|
||||
msgRequestVOList.add(
|
||||
MsgRequestVO.builder()
|
||||
.mberId(mberId)
|
||||
.accessKey(accessKey)
|
||||
.callFrom(callFrom)
|
||||
.smsTxt(value.toString())
|
||||
.mjonMsgSendVOList(mjonMsgSendVOList)
|
||||
.build()
|
||||
);
|
||||
// 초기화
|
||||
callTo = "";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
return msgRequestVOList;
|
||||
}
|
||||
/**
|
||||
* 치환 후 단문 장문 msg 개수 구하기
|
||||
* @param msgRequestVO
|
||||
@ -667,6 +757,13 @@ public class SendServiceImpl implements SendService {
|
||||
*/
|
||||
private static Boolean getCallToListChk(MsgRequestVO msgRequestVO) {
|
||||
Boolean returnData = false;
|
||||
|
||||
String[] test = msgRequestVO.getCallToList();
|
||||
|
||||
if (ArrayUtils.isEmpty(test)) {
|
||||
returnData = true;
|
||||
}
|
||||
|
||||
for(String callTo : msgRequestVO.getCallToList()){
|
||||
/*
|
||||
if(!MunjaUtil.checkPhoneNumberEmpty(callTo)){
|
||||
@ -674,7 +771,8 @@ public class SendServiceImpl implements SendService {
|
||||
if(!MunjaUtil.validatePNumWithRegex(callTo)){
|
||||
message = "휴대폰 번호가 올바르지 않습니다. : " + callTo; break;};
|
||||
*/
|
||||
if(!MunjaUtil.validatePNumWithRegex(callTo) // 비여있는지 체크
|
||||
|
||||
if(!MunjaUtil.checkPhoneNumberEmpty(callTo) // 비여있는지 체크
|
||||
|| !MunjaUtil.validatePNumWithRegex(callTo) // 정규식으로 번호 체크
|
||||
)
|
||||
{
|
||||
|
||||
@ -63,7 +63,8 @@ public class SendRestController {
|
||||
@CrossOrigin("*") // 모든 요청에 접근 허용
|
||||
@PostMapping("/api/send/sendMsgs")
|
||||
public ResponseEntity<RestResponse> sendMsgs(MsgsRequestVO msgsRequestVO) throws Exception {
|
||||
return ResponseEntity.ok().body(sendService.sendMsgsData(msgsRequestVO));
|
||||
return ResponseEntity.ok().body(sendService.sendMsgsData_advc(msgsRequestVO));
|
||||
// return ResponseEntity.ok().body(sendService.sendMsgsData(msgsRequestVO));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user