From 6ea13d44cacd3713b54419bfd93c9683c07dded2 Mon Sep 17 00:00:00 2001 From: hylee Date: Wed, 24 May 2023 15:50:40 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20aop=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++ .../com/itn/mjonApi/MjonApiApplication.java | 2 + .../com/itn/mjonApi/cmn/aop/SendAspect.java | 57 +++++++++++++++++++ .../com/itn/mjonApi/cmn/config/WebConfig.java | 9 --- .../com/itn/mjonApi/cmn/msg/RestResponse.java | 1 - .../cmn/msg/SendSuccessRestResponse.java | 3 +- .../java/com/itn/mjonApi/cmn/msg/StatMsg.java | 11 +++- .../send/service/impl/SendServiceImpl.java | 31 +++++----- 8 files changed, 87 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java diff --git a/pom.xml b/pom.xml index 61acee6..5f648ef 100644 --- a/pom.xml +++ b/pom.xml @@ -112,6 +112,10 @@ 3.12.0 + + org.springframework.boot + spring-boot-starter-aop + diff --git a/src/main/java/com/itn/mjonApi/MjonApiApplication.java b/src/main/java/com/itn/mjonApi/MjonApiApplication.java index e4ce14a..b64f76d 100644 --- a/src/main/java/com/itn/mjonApi/MjonApiApplication.java +++ b/src/main/java/com/itn/mjonApi/MjonApiApplication.java @@ -2,7 +2,9 @@ package com.itn.mjonApi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +@EnableAspectJAutoProxy // AOP를 사용하기 위한 어노테이션 @SpringBootApplication public class MjonApiApplication { diff --git a/src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java b/src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java new file mode 100644 index 0000000..3267ce5 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java @@ -0,0 +1,57 @@ +package com.itn.mjonApi.cmn.aop; + +import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; + +/** + * packageName : com.itn.mjonApi.cmn.aop + * fileName : SendAspect + * author : hylee + * date : 2023-05-24 + * description : send package 관련 AOP + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-05-24 hylee 최초 생성 + */ +@Slf4j +@Aspect +@Component +public class SendAspect { + + + @Before(value = "execution(* com.itn.mjonApi.mjon.api.send.service.impl.SendServiceImpl.sendMsgData(..))" ) + public void before(JoinPoint joinPoint){ + log.info(" :: SendAspect before :: "); + + //메서드에 들어가는 매개변수 배열을 읽어옴 + Object[] args = joinPoint.getArgs(); + log.info("args[0] : [{}]", args[0]); + MsgRequestVO msgRequestVO = (MsgRequestVO) args[0]; + + log.info("msgRequestVO : [{}]", msgRequestVO.getSmsTxt()); + + } + + + + @AfterReturning(pointcut = "execution(* com.itn.mjonApi.mjon.api.send.service.impl.SendServiceImpl.sendMsgData(..))", returning = "returnValue") + public void afterReturning(JoinPoint joinPoint, ResponseEntity returnValue){ + log.info(" :: AfterReturning :: "); + + String bodyClassName = returnValue.getBody().toString(); + + log.info("bodyClassName : [{}]", bodyClassName); + // body에 담긴 calss가 SendSuccessRestResponse이면 + if(bodyClassName.indexOf("SendSuccessRestResponse") > -1){ + + } + + } +} diff --git a/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java b/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java index 7e3ad72..904a76f 100644 --- a/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java +++ b/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java @@ -47,15 +47,6 @@ public class WebConfig implements WebMvcConfigurer { .order(0) ; - /** - * 2023-05-16 - * send에 대한 interceptor 설정 - lettngnrlmber_access_log Insert - * 진행중 - */ - registry.addInterceptor(sendInterceptor()) - .addPathPatterns("/api/send/**") - .order(1) - ; //.excludePathPatterns("/css/**", "/images/**", "/js/**"); } 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 c80b1e7..62b2c2e 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java @@ -34,7 +34,6 @@ public class RestResponse{ public RestResponse(HttpStatus status, String message, LocalDateTime timestamp, Object object) { this.resultCode = status.value(); checkMessage(status, message); - this.object= object; this.localDateTime = timestamp; } diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java b/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java index e05f71d..81a2881 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java @@ -56,9 +56,8 @@ public class SendSuccessRestResponse { .successCnt(mjonResponseVO.getResultSts()) // 성공 건수 .blockCnt(mjonResponseVO.getResultBlockSts()) // 수신거부 건수 .localDateTime(LocalDateTime.now()) // 현재 시간 + .msgType(StatMsg.valueOf("msgType"+mjonResponseVO.getMsgType()).getMsg()) .build(); - // TODO 추가 예정 -// .msgType(mjonResponseVO.getMsgType()) } diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java b/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java index 17e5dee..2ae5a50 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java @@ -7,7 +7,7 @@ import lombok.Getter; * fileName : statMsg * author : hylee * date : 2023-05-19 - * description : + * description : CODE, MSG 관리 class * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- @@ -25,6 +25,7 @@ import lombok.Getter; @Getter public enum StatMsg { + // 문자보내기 ====================================================================== STAT_200("200","") , STAT_1010("1010","발신자 전화번호 사용 불가") , STAT_1020("1020","수신자 전화번호 오류") @@ -37,6 +38,14 @@ public enum StatMsg { , STAT_1090("1090","요청 발송일시에 발송 불가") , STAT_1099("1099","기타 시스템 오류") + //====================================================================== + , msgType4("단문","SMS") + , msgType6("장문","LMS") + + + + + ; private final String code; 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 b67ff36..20ea2bb 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 @@ -99,7 +99,7 @@ public class SendServiceImpl implements SendService { msgRequestVO = getLengthOfShortAndLongMsg(msgRequestVO); } - +/* // 문자 전송하는 부분 // apiService.postForEntity => restTemplate.postForEntity 호출 후 MjonResponseVO에 맞게 데이터 정제하는 메소드 MjonResponseVO munjaSendResponse = apiService.postForEntity( @@ -115,6 +115,11 @@ public class SendServiceImpl implements SendService { }else{ // 실패 return ResponseEntity.ok().body(FailRestResponse.convertMjonDataToApiResponse(munjaSendResponse)); } + */ + SendSuccessRestResponse sendSuccessRestResponse = new SendSuccessRestResponse(); + sendSuccessRestResponse.setMsgGroupId("1234567890"); + return ResponseEntity.ok().body(sendSuccessRestResponse); +// return ResponseEntity.ok().body(new RestResponse(sendSuccessRestResponse)); //step5.발송일시 정상여부 확인 // 1050 //step6.문자 타입에 따른 비용 처리 가능 여부 확인 @@ -126,9 +131,9 @@ public class SendServiceImpl implements SendService { @Override public ResponseEntity sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception { + // msgsVO -> msgVO List로 변환 List msgRequestVOList = this.getDataCleaning(msgsRequestVO); - log.info("msgRequestVOList.size() :: [{}]", msgRequestVOList.size()); msgRequestVOList.forEach(msgRequestVO -> { log.info("msgRequestVO getCallToList() :: [{}]", msgRequestVO.getCallToList()); log.info("msgRequestVO getSmsTxt() :: [{}]", msgRequestVO.getSmsTxt()); @@ -185,7 +190,7 @@ public class SendServiceImpl implements SendService { } /** - * @description + * @description 최대 1~100개의 수신번호와 메세지를 MsgRequestVO로 정재하는 메소드. * @param msgsRequestVO * @return */ @@ -218,8 +223,10 @@ public class SendServiceImpl implements SendService { // nullPointException 방지 if(value != null) { - log.info(field.getName()); - + /** + * 필드 이름으로 분기하여 + * 각각에 맞는 위치에 값을 넣어준다. + */ if("mberId".equals(field.getName())){ // 사용자 ID mberId = value.toString(); }else if("accessKey".equals(field.getName())){ // accessKey @@ -232,19 +239,10 @@ public class SendServiceImpl implements SendService { // 값이 비여 있으면 다음 반복문으로 넘어간다. if(StringUtils.isEmpty(value.toString())){ + callTo = ""; continue; } -// MsgRequestVO msgRequestVO = new MsgRequestVO(); - -// msgRequestVO.setMberId(mberId); -// msgRequestVO.setAccessKey(accessKey); -// msgRequestVO.setCallFrom(callFrom); -// msgRequestVO.setCallToList(new String[]{callTo}); -// msgRequestVO.setSmsTxt(value.toString()); - - - msgRequestVOList.add( MsgRequestVO.builder() .mberId(mberId) @@ -254,11 +252,8 @@ public class SendServiceImpl implements SendService { .smsTxt(value.toString()) .build() ); - - // 초기화 callTo = ""; - }