diff --git a/pom.xml b/pom.xml index 05a9236..c59a9ae 100644 --- a/pom.xml +++ b/pom.xml @@ -128,6 +128,13 @@ 16.0.1 compile + + + + org.springframework.boot + spring-boot-starter-validation + + diff --git a/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java b/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java index f1de3a3..a54e8eb 100644 --- a/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java +++ b/src/main/java/com/itn/mjonApi/cmn/aop/LogAspect.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.itn.mjonApi.cmn.idgen.service.IdgenService; import com.itn.mjonApi.cmn.msg.RestResponse; +import com.itn.mjonApi.mjon.api.access.mapper.domain.AccessKeyVO; import com.itn.mjonApi.mjon.log.service.mapper.LettnAccessLogMapper; import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnAccessLogVO; import lombok.extern.slf4j.Slf4j; @@ -96,13 +97,13 @@ public class LogAspect { /** * @description 메소드 종료 후 return 값에 따른 로그 처리 - * - 매개변수 RestResponse는 메소드의 return 값과 일치해야 함 * @param joinPoint * @param returnValue * @throws JsonProcessingException + * @important 메소드의 매개변수 RestResponse는 메소드의 return 값과 일치해야 함 */ @AfterReturning(pointcut = "execution(* com.itn.mjonApi.mjon.api.*..*Impl.*(..))", returning = "returnValue") - public void afterReturning(JoinPoint joinPoint, RestResponse returnValue) throws JsonProcessingException { + public void afterReturning(JoinPoint joinPoint, Object returnValue) throws Exception { log.info(" :: AfterReturning :: "); String resutlCode = ""; @@ -111,30 +112,66 @@ public class LogAspect { // @Befer에서 저장한 logId를 가져옴 String logId = (String) request.getAttribute("logId"); - RestResponse restResponse = (RestResponse) returnValue; // lettngnrlmber_access_log 응답값 Udpate LettnAccessLogVO lettnAccessLogVO = new LettnAccessLogVO() .builder() .logId(logId) - .resCn(this.getJsonToString(restResponse)) +// .resCn(this.getJsonToString(returnValue)) + .resCn(this.getJsonToString(returnValue)) .resCode(resutlCode) .build(); lettnAccessLogMapper.update(lettnAccessLogVO); } + /** + * @description object의 맞는 Class를 찾아서 맵핑 + * @return + */ + private String getJsonToString(Object returnValue) throws JsonProcessingException { + + String classNmTemp = returnValue.getClass().getName(); + String classNm = classNmTemp.substring(classNmTemp.lastIndexOf(".")+1, classNmTemp.length()); + + /** + * @description : return Class가 추가되면 여기에 추가 + */ + if("AccessKeyVO".equals(classNm)){ + AccessKeyVO accessKeyVO = (AccessKeyVO) returnValue; + return this.getAccessKeyVOToJsonString(accessKeyVO); + }else{ + RestResponse restResponse = (RestResponse) returnValue; + return this.getRestResponseToJsonString(restResponse); + } + + } + + + + /** * @description : VO를 json으로 변환 * @param restResponse * @return String * @throws JsonProcessingException */ - private static String getJsonToString(RestResponse restResponse) throws JsonProcessingException { + private static String getRestResponseToJsonString(RestResponse restResponse) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); // .registerModule(new JavaTimeModule()) : LocalDateTime을 json으로 변환하기 위함 return objectMapper.registerModule(new JavaTimeModule()).writeValueAsString(restResponse); } + /** + * @description : VO를 json으로 변환 + * @param accessKeyVO + * @return String + * @throws JsonProcessingException + */ + private static String getAccessKeyVOToJsonString(AccessKeyVO accessKeyVO) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + // .registerModule(new JavaTimeModule()) : LocalDateTime을 json으로 변환하기 위함 + return objectMapper.registerModule(new JavaTimeModule()).writeValueAsString(accessKeyVO); + } /** * @description : HttpServletRequest 객체를 가져옴 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 904a76f..8b383e9 100644 --- a/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java +++ b/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java @@ -1,7 +1,6 @@ package com.itn.mjonApi.cmn.config; import com.itn.mjonApi.cmn.interceptor.CertifInterceptor; -import com.itn.mjonApi.cmn.interceptor.SendInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; @@ -26,10 +25,7 @@ public class WebConfig implements WebMvcConfigurer { public CertifInterceptor certifInterceptor(){ return new CertifInterceptor(); } - @Bean - public SendInterceptor sendInterceptor(){ - return new SendInterceptor(); - } + @Override public void addInterceptors(InterceptorRegistry registry) { diff --git a/src/main/java/com/itn/mjonApi/cmn/interceptor/SendInterceptor.java b/src/main/java/com/itn/mjonApi/cmn/interceptor/SendInterceptor.java deleted file mode 100644 index 96842fa..0000000 --- a/src/main/java/com/itn/mjonApi/cmn/interceptor/SendInterceptor.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.itn.mjonApi.cmn.interceptor; - -//import java.sql.Date; - -import com.itn.mjonApi.cmn.idgen.service.IdgenService; -import com.itn.mjonApi.mjon.log.service.LettnAccessLogService; -import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnAccessLogVO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * packageName : com.itn.mjonApi.mjon.send.web - * fileName : SendRestController - * author : hylee - * date : 2023-02-15 - * description : - * =========================================================== - * DATE AUTHOR NOTE - * ----------------------------------------------------------- - * 2023-02-15 hylee 최초 생성 - */ -//@Component -@Slf4j -public class SendInterceptor implements HandlerInterceptor{ - - - @Autowired - private LettnAccessLogService lettnAccessLogService; - - @Resource(name = "apiAccessLog") - private IdgenService idgenApiAccessLogId; - - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { - log.debug("=========== SendInterceptor preHandle()============"); - - - - { - try { - - // TODO accessType 구분추가 - LettnAccessLogVO lettnAccessLogVO = new LettnAccessLogVO() - .builder() - .logId(idgenApiAccessLogId.getNextStringId()) - .accessType("K") // key : K , token : T - .accessKey(request.getParameter("accessKey")) - .reqUserId(request.getParameter("mberId")) - .reqCn("문자 전송") - .reqInfoRef(request.getParameter("Referer")) - .reqUrl(request.getRequestURI()) - .build(); - - //IP 컬럼 길이를 늘려서 비교 조건 제거함 2023-04-05 - if (lettnAccessLogVO.getReqUrl().length() > 200) { //길이문제로 오류가 발생하는 경우도 처리하도록 수정 - lettnAccessLogVO.setReqUrl(lettnAccessLogVO.getReqUrl().substring(0, 199)); - } - - lettnAccessLogService.insert(lettnAccessLogVO); - - - } catch (Exception ex) { - ex.printStackTrace(); - - //내부 오류 - this._jsonResult(response, HttpStatus.INTERNAL_SERVER_ERROR); - return false; - } - } - return true; - } - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, - ModelAndView modelAndView) throws Exception { - // TODO Auto-generated method stub - System.out.println("===== SendInterceptor postHandle apikey =="); - - System.out.println("modelAndView.getModel() : "+ modelAndView); - - - // Get the request returned VO by the controller - if(modelAndView != null){ - Object obj = modelAndView.getModel().get("mjonResponseVO"); - System.out.println("obj : "+ obj); - } - // get response getHeaders value - System.out.println("response.getHeaderNames() : "+ response.getHeaderNames()); - - - - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) - throws Exception { - // TODO Auto-generated method stub - System.out.println("===== SendInterceptor afterCompletion apikey =="); - - - - - - } - - - - private void _jsonResult( - HttpServletResponse p_response - , HttpStatus p_HttpStatus - ) throws Exception{ - - p_response.setContentType("application/json"); - p_response.setCharacterEncoding("UTF-8"); - p_response.getWriter().write("{\"resultCode\":\""+p_HttpStatus.value()+"\",\"message\":\""+p_HttpStatus.getReasonPhrase()+"\"}"); - - //return "{\"resultCode\":\""+p_HttpStatus.value()+"\",\"message\":\""+p_HttpStatus.getReasonPhrase()+"\"}"; - } - -} 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 2a29790..4383c93 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 @@ -265,6 +265,17 @@ public class SendServiceImpl implements SendService { .callFrom(callFrom) .callToList(new String[]{callTo}) .smsTxt(value.toString()) + .eachPrice("0") // 디폴트 + .sPrice("0") // 디폴트 + .totPrice("0") // 디폴트 + .fileCnt("0") // 디폴트 + .msgType("4") // 디폴트 + .smsPrice(0) // 디폴트 + .mmsPrice(0) // 디폴트 + .imgFilePath(new String[0]) // 디폴트 + .txtReplYn("N") // 디폴트 + .reserveYn("N") // 디폴트 + .msgKind("N") // 디폴트 .build() ); // 초기화