From 5a552eb31b3fc1b62ebc72dd4bd8d6aa5113c355 Mon Sep 17 00:00:00 2001 From: hylee Date: Fri, 19 May 2023 14:42:14 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EB=AC=B8=EC=9E=90=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20SendRestResponse=20=EC=B6=94=EA=B0=80=20+=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=EA=B0=92=20enum=20class=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/itn/mjonApi/cmn/msg/RestResponse.java | 5 +- .../itn/mjonApi/cmn/msg/SendRestResponse.java | 34 +++++++++++++ .../java/com/itn/mjonApi/cmn/msg/StatMsg.java | 40 ++++++++++++++++ .../mjon/api/send/service/SendService.java | 4 +- .../send/service/impl/SendServiceImpl.java | 48 +++++++------------ .../mjon/api/send/web/SendRestController.java | 7 +-- 6 files changed, 98 insertions(+), 40 deletions(-) create mode 100644 src/main/java/com/itn/mjonApi/cmn/msg/SendRestResponse.java create mode 100644 src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java b/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java index fb6fa22..2922340 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java @@ -1,7 +1,6 @@ package com.itn.mjonApi.cmn.msg; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import org.springframework.http.HttpStatus; import java.time.LocalDateTime; @@ -9,7 +8,7 @@ import java.util.List; @Setter @Getter -public class RestResponse { +public class RestResponse{ //private HttpStatus status; private int resultCode; diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/SendRestResponse.java b/src/main/java/com/itn/mjonApi/cmn/msg/SendRestResponse.java new file mode 100644 index 0000000..426bf05 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/msg/SendRestResponse.java @@ -0,0 +1,34 @@ +package com.itn.mjonApi.cmn.msg; + +import lombok.*; + +import java.time.LocalDateTime; + +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class SendRestResponse { + + //private HttpStatus status; + private String resultCode; + + private String message; + + private LocalDateTime localDateTime; + + /* + * 200-OK : 정상접속 + * 401-Unauthorized : 인증실패 + * + * */ + + @Builder + public SendRestResponse(String resultStr) { + this.resultCode = StatMsg.valueOf(resultStr).getCode(); + this.message = StatMsg.valueOf(resultStr).getMsg(); + this.localDateTime = LocalDateTime.now(); + } + + +} diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java b/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java new file mode 100644 index 0000000..4c0b27a --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java @@ -0,0 +1,40 @@ +package com.itn.mjonApi.cmn.msg; + +import lombok.Getter; + +/** + * packageName : com.itn.mjonApi.cmn.msg + * fileName : statMsg + * author : hylee + * date : 2023-05-19 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-05-19 hylee 최초 생성 + */ + + +/** + * 사용 예시 + * + * StatMsg.valueOf("STAT1010") :: STAT1010 + * StatMsg.valueOf("STAT1010").getCode() :: 1010 + * StatMsg.valueOf("STAT1010").getMsg() :: 발신자 전화번호 사용 불가 + */ + +@Getter +public enum StatMsg { + STAT1010("1010","발신자 전화번호 사용 불가") + ,STAT1020("1020","수신자 전화번호 오류") + ; + + private final String code; + private final String msg; + + StatMsg(String code, String msg) { + this.code = code; + this.msg = msg; + } + +} diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java b/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java index d9f7a28..f1e31ac 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/service/SendService.java @@ -1,10 +1,10 @@ package com.itn.mjonApi.mjon.api.send.service; -import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; +import com.itn.mjonApi.cmn.msg.SendRestResponse; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; public interface SendService { - MjonResponseVO sendMsgData(MsgRequestVO msgRequestVO) throws Exception; + SendRestResponse sendMsgData(MsgRequestVO msgRequestVO) throws Exception; } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java index c09ae05..539d521 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java @@ -1,8 +1,8 @@ package com.itn.mjonApi.mjon.api.send.service.impl; import com.itn.mjonApi.cmn.apiServer.ApiService; +import com.itn.mjonApi.cmn.msg.SendRestResponse; import com.itn.mjonApi.mjon.api.send.mapper.SendMapper; -import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; import com.itn.mjonApi.mjon.api.send.service.SendService; import com.itn.mjonApi.util.MunjaUtil; @@ -33,34 +33,28 @@ public class SendServiceImpl implements SendService { private static final String replaseStrList = "[*이름*],[*1*],[*2*],[*3*],[*4*]"; @Override - public MjonResponseVO sendMsgData(MsgRequestVO msgRequestVO) throws Exception { - - log.info(" :: sendMsgData ::"); - - Boolean byCallFrom = sendMapper.findByCallFrom(msgRequestVO); - log.info(" :: byCallFrom ::" + byCallFrom); - if(byCallFrom){ - - } - /* - 발신번호 체크 - SELECT PHONE_NUMBER - FROM MJ_PHONE_MEMBER - WHERE 1=1 - AND USER_ID = 'goodgkdus' - AND AUTH_YN = 'Y' - AND PHM_TYPE = '01' - ORDER BY BASE_YN DESC - * */ + public SendRestResponse sendMsgData(MsgRequestVO msgRequestVO) throws Exception { //sendMsg 문자 발송 전 체크 사항 + log.info(" :: sendMsgData ::"); + //step1.발신자 전화번호 사용 가능 여부 체크(해당 사용자의 기 등록된 번호만 발송 가능) // 1010 - - + if(!sendMapper.findByCallFrom(msgRequestVO)){ + return SendRestResponse.builder() + .resultStr("STAT1010") + .build(); + } //step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능) // 1020 + // 폰번호 확인 - 빈 값 -> 유효성 정규식 + if(StringUtils.isNotEmpty(this.getCallToListChk(msgRequestVO))){ + return SendRestResponse.builder() + .resultStr("STAT1010") + .build(); + } + //step3.문자 내용 정상 여부 확인 - 스미싱 문구는 발송 안됨 // 1030 @@ -82,16 +76,6 @@ public class SendServiceImpl implements SendService { /* - String message = ""; - // 폰번호 확인 - 빈 값 -> 유효성 정규식 - message = this.getCallToListChk(msgRequestVO); - if(StringUtils.isNotEmpty(message)){ - return MjonResponseVO.builder() - .result("fail") - .message(message) - .build(); - } - // 치환데이터 여부 확인 msgRequestVO.setTxtReplYn(this.getTxtReplYn(msgRequestVO)); diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java b/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java index 34d4385..52c2f52 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java @@ -1,11 +1,12 @@ package com.itn.mjonApi.mjon.api.send.web; -import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; +import com.itn.mjonApi.cmn.msg.SendRestResponse; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; import com.itn.mjonApi.mjon.api.send.service.SendService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; @@ -48,9 +49,9 @@ public class SendRestController { @CrossOrigin("*") // 모든 요청에 접근 허용 @PostMapping("/api/send/sendMsg") @ApiOperation(value= "단문 문자 전송", notes = "같은 내용으로 여러명에게 보냄") - public MjonResponseVO sendTest(MsgRequestVO msgRequestVO) throws Exception { + public ResponseEntity sendMsg(MsgRequestVO msgRequestVO) throws Exception { - return sendService.sendMsgData(msgRequestVO); + return ResponseEntity.ok().body(sendService.sendMsgData(msgRequestVO)); } From 770b338fb9a218c75882df684a4212e45fe981f8 Mon Sep 17 00:00:00 2001 From: hylee Date: Fri, 19 May 2023 17:50:49 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EB=AC=B8=EC=9E=90=EB=B3=B4?= =?UTF-8?q?=EB=82=B4=EB=8A=94=20=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itn/mjonApi/cmn/apiServer/ApiService.java | 17 ++-- .../api/send/mapper/domain/MsgRequestVO.java | 11 +-- .../send/service/impl/SendServiceImpl.java | 81 ++++++++++--------- 3 files changed, 59 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/itn/mjonApi/cmn/apiServer/ApiService.java b/src/main/java/com/itn/mjonApi/cmn/apiServer/ApiService.java index d6d9378..eb709ae 100644 --- a/src/main/java/com/itn/mjonApi/cmn/apiServer/ApiService.java +++ b/src/main/java/com/itn/mjonApi/cmn/apiServer/ApiService.java @@ -2,7 +2,6 @@ package com.itn.mjonApi.cmn.apiServer; import com.fasterxml.jackson.core.JsonProcessingException; import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @@ -13,6 +12,7 @@ import org.springframework.web.client.RestTemplate; * author : hylee * date : 2023-05-15 * description : API 서버 호출 Service - 호출 후 데이터 정제 까지 구현 + * 필요한 데이터 정제가 있으면 추가 및 수정 해야 함 * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- @@ -21,23 +21,28 @@ import org.springframework.web.client.RestTemplate; @Service public class ApiService { + // RestTemplateConfig.class의 셋팅값으로 생성 private RestTemplate restTemplate; - - @Autowired public ApiService(RestTemplate restTemplate) { this.restTemplate = restTemplate; } + /** + * + * @param url + * @param request + * @param responseType + * @discription restTemplate.postForEntity 호출 후 MjonResponseVO에 맞게 데이터 정제 + * @return MjonResponseVO.class + * @throws JsonProcessingException + */ public MjonResponseVO postForEntity(String url, Object request, Class responseType) throws JsonProcessingException { ResponseEntity spamChkEntity = (ResponseEntity) restTemplate.postForEntity( url , request , responseType ); - MjonResponseVO spamResponse = MjonResponseVO.getMjonResponse(spamChkEntity); - - return spamResponse; } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java index 2b4c3eb..aebf313 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgRequestVO.java @@ -51,6 +51,7 @@ public class MsgRequestVO implements Serializable { @ApiModelProperty(value = "전송문자 개별가격", example = "0", hidden = true) private String eachPrice="0"; + private String sPrice="0"; // 임시 @ApiModelProperty(value = "전송문자 토탈가격", example = "0", hidden = true) private String totPrice="0"; @@ -93,15 +94,15 @@ public class MsgRequestVO implements Serializable { private String rep4Str; @ApiModelProperty(value = "nameStr 을 |로 split 후 담는 변수", example = "", hidden = true) - private String[] nameList; + private String[] nameList= new String[0];; @ApiModelProperty(value = "rep1Str 을 |로 split 후 담는 변수", example = "", hidden = true) - private String[] rep1List; + private String[] rep1List= new String[0];; @ApiModelProperty(value = "rep2Str 을 |로 split 후 담는 변수", example = "", hidden = true) - private String[] rep2List; + private String[] rep2List= new String[0];; @ApiModelProperty(value = "rep3Str 을 |로 split 후 담는 변수", example = "", hidden = true) - private String[] rep3List; + private String[] rep3List= new String[0];; @ApiModelProperty(value = "rep4Str 을 |로 split 후 담는 변수", example = "", hidden = true) - private String[] rep4List; + private String[] rep4List= new String[0];; @ApiModelProperty(value = "예약 유무 (Y/N)", example = "N", hidden = true) private String reserveYn="N"; // 예약문자 여부 default N diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java index 539d521..9ebbb17 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/service/impl/SendServiceImpl.java @@ -3,6 +3,7 @@ package com.itn.mjonApi.mjon.api.send.service.impl; import com.itn.mjonApi.cmn.apiServer.ApiService; import com.itn.mjonApi.cmn.msg.SendRestResponse; import com.itn.mjonApi.mjon.api.send.mapper.SendMapper; +import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; import com.itn.mjonApi.mjon.api.send.service.SendService; import com.itn.mjonApi.util.MunjaUtil; @@ -41,42 +42,33 @@ public class SendServiceImpl implements SendService { //step1.발신자 전화번호 사용 가능 여부 체크(해당 사용자의 기 등록된 번호만 발송 가능) // 1010 if(!sendMapper.findByCallFrom(msgRequestVO)){ - return SendRestResponse.builder() - .resultStr("STAT1010") - .build(); + return _falseRetunDate("STAT1010"); } //step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능) // 1020 // 폰번호 확인 - 빈 값 -> 유효성 정규식 if(StringUtils.isNotEmpty(this.getCallToListChk(msgRequestVO))){ - return SendRestResponse.builder() - .resultStr("STAT1010") - .build(); + return _falseRetunDate("STAT1020"); } - - //step3.문자 내용 정상 여부 확인 - 스미싱 문구는 발송 안됨 - // 1030 + //step3.문자 내용 정상 여부 확인 - 스미싱 문구는 발송 30분 지연으로 처리됨 + // 1030 => 현재 사용안함 + // 스팸체크 하는 부분 + // apiService.postForEntity => restTemplate.postForEntity 호출 후 MjonResponseVO에 맞게 데이터 정제하는 메소드 + MjonResponseVO spamChkEntity = apiService.postForEntity( + "/web/user/login/selectSpamTxtChkAjax.do" + , msgRequestVO + , String.class + ); + // 스팸체크 결과값이 spams 이면 스팸문자로 처리 + if("spams".equals(spamChkEntity.getResult())){ + msgRequestVO.setSpamStatus("Y"); + }; //step4.치환명 정상 여부 확인 // 1040 - //step5.발송일시 정상여부 확인 - // 1050 - - //step6.문자 타입에 따른 비용 처리 가능 여부 확인 - // 1060 - - - - - - -/* - - - // 치환데이터 여부 확인 msgRequestVO.setTxtReplYn(this.getTxtReplYn(msgRequestVO)); @@ -91,36 +83,47 @@ public class SendServiceImpl implements SendService { } + // 치환데이터 여부 확인 + msgRequestVO.setTxtReplYn(this.getTxtReplYn(msgRequestVO)); + // 치환데이터가 있을 경우 + if("Y".equals(msgRequestVO.getTxtReplYn())){ + //일괄변환 문자에 콤마(,)가 들어가있으면 배열로 넘길때 문제가 발생하여 특수문자(§)로 치환하여 넘겨주도록 한다. + msgRequestVO = this.getReplaceCommaToStrSymbol(msgRequestVO); + // 치환 후 단문 장문 개수 구하기 + msgRequestVO = getLengthOfShortAndLongMsg(msgRequestVO); + } - - // 스팸체크 하는 부분 - MjonResponseVO spamChkEntity = apiService.postForEntity( - "/web/user/login/selectSpamTxtChkAjax.do" - , msgRequestVO - , String.class - ); - - if("spams".equals(spamChkEntity.getResult())){ - msgRequestVO.setSpamStatus("Y"); - }; - - log.info("msgRequestVO.getSpamStatus() :: [[}]",msgRequestVO.getSpamStatus()); - // 문자 전송하는 부분 + // apiService.postForEntity => restTemplate.postForEntity 호출 후 MjonResponseVO에 맞게 데이터 정제하는 메소드 MjonResponseVO munjaSendResponse = apiService.postForEntity( "/web/user/login/sendMsgDataAjax.do" , msgRequestVO , String.class ); + log.info("munjaSendResponse : [{}]", munjaSendResponse.toString()); + //step5.발송일시 정상여부 확인 + // 1050 + + //step6.문자 타입에 따른 비용 처리 가능 여부 확인 + // 1060 -*/ return null; // return munjaSendResponse; } + /** + * 리턴 데이터 메소드 + * @return + */ + private static SendRestResponse _falseRetunDate(String ststCode) { + return SendRestResponse.builder() + .resultStr(ststCode) + .build(); + } + /** * 치환 후 단문 장문 msg 개수 구하기 * @param msgRequestVO