feat: api log 변경 처리 중

This commit is contained in:
hylee 2023-06-15 16:46:01 +09:00
parent ecc7e0042f
commit 08d81992e3
7 changed files with 68 additions and 24 deletions

View File

@ -7,11 +7,14 @@ import com.itn.mjonApi.cmn.idgen.service.IdgenService;
import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.cmn.msg.RestResponse;
import com.itn.mjonApi.cmn.msg.SendSucRestResponse; import com.itn.mjonApi.cmn.msg.SendSucRestResponse;
import com.itn.mjonApi.mjon.api.access.mapper.domain.AccessKeyVO; import com.itn.mjonApi.mjon.api.access.mapper.domain.AccessKeyVO;
import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO;
import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgsRequestVO;
import com.itn.mjonApi.mjon.log.service.mapper.LettnAccessLogMapper; import com.itn.mjonApi.mjon.log.service.mapper.LettnAccessLogMapper;
import com.itn.mjonApi.mjon.log.service.mapper.LettnApiSendMsgLogMapper; import com.itn.mjonApi.mjon.log.service.mapper.LettnApiSendMsgLogMapper;
import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnAccessLogVO; import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnAccessLogVO;
import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnApiSendMsgLogVO; import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnApiSendMsgLogVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
@ -66,7 +69,7 @@ public class LogAspect {
* - accessKey * - accessKey
*/ */
@Before(value = "execution(* com.itn.mjonApi.mjon.api.*..*Impl.*(..))" ) @Before(value = "execution(* com.itn.mjonApi.mjon.api.*..*Impl.*(..))" )
public void before(JoinPoint joinPoint) throws IllegalAccessException { public void before(JoinPoint joinPoint) throws IllegalAccessException, JsonProcessingException {
log.info(" :: AOP before :: "); log.info(" :: AOP before :: ");
HttpServletRequest request = this.getHttpServletRequest(); HttpServletRequest request = this.getHttpServletRequest();
@ -81,12 +84,13 @@ public class LogAspect {
// 필드명으로 구분하여 값을 가져옴 // 필드명으로 구분하여 값을 가져옴
String mberId = ""; String mberId = "";
String accessKey = ""; String accessKey = "";
for(Field field : objectVO.getClass().getDeclaredFields()){ for(Field field : objectVO.getClass().getDeclaredFields()){;
field.setAccessible(true); field.setAccessible(true);
if("mberId".equals(field.getName())){ mberId=field.get(objectVO).toString(); } if("mberId".equals(field.getName())){ mberId=field.get(objectVO).toString(); }
if("accessKey".equals(field.getName())){ accessKey=field.get(objectVO).toString(); } else if("accessKey".equals(field.getName())){ accessKey=field.get(objectVO).toString(); }
}
if(StringUtils.isNotEmpty(mberId) && StringUtils.isNotEmpty(accessKey)){ break; }
}
String nextStringId = idgenApiAccessLogId.getNextStringId(); String nextStringId = idgenApiAccessLogId.getNextStringId();
LettnAccessLogVO lettnAccessLogVO = new LettnAccessLogVO() LettnAccessLogVO lettnAccessLogVO = new LettnAccessLogVO()
@ -95,8 +99,8 @@ public class LogAspect {
.accessType("K") // key : K , token : T // TODO accessType 구분추가 .accessType("K") // key : K , token : T // TODO accessType 구분추가
.accessKey(accessKey) .accessKey(accessKey)
.reqUserId(mberId) .reqUserId(mberId)
.reqCn(joinPoint.toString()) .reqCn(this.getJsonToString(objectVO))
.reqInfoRef(request.getHeader("Referer")) .reqInfoMeth(joinPoint.toString())
.reqUrl(request.getRequestURI()) .reqUrl(request.getRequestURI())
.build(); .build();
if (lettnAccessLogVO.getReqUrl().length() > 200) { //길이문제로 오류가 발생하는 경우도 처리하도록 수정 if (lettnAccessLogVO.getReqUrl().length() > 200) { //길이문제로 오류가 발생하는 경우도 처리하도록 수정
@ -187,7 +191,7 @@ public class LogAspect {
return LettnApiSendMsgLogVO.builder() return LettnApiSendMsgLogVO.builder()
.logNo(idgenApiSendLogId.getNextStringId()) .logNo(idgenApiSendLogId.getNextStringId())
.mberId(logId) .accessLogId(logId)
.msgSendType(msgSendType) .msgSendType(msgSendType)
.msgGroupId(msgGroupId) .msgGroupId(msgGroupId)
.build(); .build();
@ -243,10 +247,20 @@ public class LogAspect {
if("AccessKeyVO".equals(classNm)) { if("AccessKeyVO".equals(classNm)) {
AccessKeyVO accessKeyVO = (AccessKeyVO) returnValue; AccessKeyVO accessKeyVO = (AccessKeyVO) returnValue;
return this.getAccessKeyVOToJsonString(accessKeyVO); return this.getAccessKeyVOToJsonString(accessKeyVO);
}else if("RestResponse".equals(classNm)){ }
else if("RestResponse".equals(classNm)){
RestResponse restResponse = (RestResponse) returnValue; RestResponse restResponse = (RestResponse) returnValue;
return this.getRestResponseToJsonString(restResponse); return this.getRestResponseToJsonString(restResponse);
}else{ }
else if("MsgsRequestVO".equals(classNm)){
MsgsRequestVO msgsRequestVO = (MsgsRequestVO) returnValue;
return this.getMsgsRequestVOToJsonString(msgsRequestVO);
}
else if("MsgRequestVO".equals(classNm)){
MsgRequestVO restResponse = (MsgRequestVO) returnValue;
return this.getMsgRequestVOToJsonString(restResponse);
}
else{
return "데이터를 추가해 주세요"; return "데이터를 추가해 주세요";
} }
@ -267,6 +281,16 @@ public class LogAspect {
// .registerModule(new JavaTimeModule()) : LocalDateTime을 json으로 변환하기 위함 // .registerModule(new JavaTimeModule()) : LocalDateTime을 json으로 변환하기 위함
return objectMapper.registerModule(new JavaTimeModule()).writeValueAsString(restResponse); return objectMapper.registerModule(new JavaTimeModule()).writeValueAsString(restResponse);
} }
private static String getMsgsRequestVOToJsonString(MsgsRequestVO msgsRequestVO) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
// .registerModule(new JavaTimeModule()) : LocalDateTime을 json으로 변환하기 위함
return objectMapper.registerModule(new JavaTimeModule()).writeValueAsString(msgsRequestVO);
}
private static String getMsgRequestVOToJsonString(MsgRequestVO msgRequestVO) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
// .registerModule(new JavaTimeModule()) : LocalDateTime을 json으로 변환하기 위함
return objectMapper.registerModule(new JavaTimeModule()).writeValueAsString(msgRequestVO);
}
/** /**
* @description : VO를 json으로 변환 * @description : VO를 json으로 변환

View File

@ -28,6 +28,8 @@ public class SendSucRestResponse {
private String failCnt; // 실패 건수 private String failCnt; // 실패 건수
private String msgType; // 메세지 타입 private String msgType; // 메세지 타입
private List<String> msgTypeList; // 메세지 타입 리스트
private String test_yn; // 메세지 타입 private String test_yn; // 메세지 타입
@ -80,6 +82,10 @@ public class SendSucRestResponse {
.map(s -> s.getMsgGroupId()) .map(s -> s.getMsgGroupId())
.collect(Collectors.toList()); .collect(Collectors.toList());
// 성공한 메세지 그룹 아이디
List<String> msgTypeList = mjonResponseVOList.stream()
.map(s -> StatMsg.valueOf("msgType"+s.getMsgType()).getMsg())
.collect(Collectors.toList());
@ -90,7 +96,7 @@ public class SendSucRestResponse {
.successCnt(Integer.toString(successCnt)) // 성공 건수 .successCnt(Integer.toString(successCnt)) // 성공 건수
.blockCnt(Integer.toString(blockCnt)) // 수신거부 건수 .blockCnt(Integer.toString(blockCnt)) // 수신거부 건수
.failCnt(Integer.toString(failCnt)) // 수신거부 건수 .failCnt(Integer.toString(failCnt)) // 수신거부 건수
// .localDateTime(LocalDateTime.now()) // 현재 시간 .msgTypeList(msgTypeList) // msgType List
.build(); .build();
} }

View File

@ -131,6 +131,7 @@ public class SendServiceImpl implements SendService {
.blockCnt("2") // 수신거부 건수 .blockCnt("2") // 수신거부 건수
.msgType("LMS") .msgType("LMS")
.failCnt("0") .failCnt("0")
.test_yn("YS")
.build() .build()
); );
} }
@ -151,12 +152,17 @@ public class SendServiceImpl implements SendService {
gIdList.add("MSGGID_0000000000001"); gIdList.add("MSGGID_0000000000001");
gIdList.add("MSGGID_0000000000002"); gIdList.add("MSGGID_0000000000002");
List<String> msgTypeList = new ArrayList<>();
msgTypeList.add("SMS");
msgTypeList.add("LMS");
msgTypeList.add("LMS");
return new RestResponse( return new RestResponse(
SendSucRestResponse.builder() SendSucRestResponse.builder()
.resultCode("0")
.msgGroupIdList(gIdList) // 전송 메세지 그룹 ID .msgGroupIdList(gIdList) // 전송 메세지 그룹 ID
.successCnt("2") // 성공 건수 .successCnt("2") // 성공 건수
.blockCnt("1") // 수신거부 건수 .blockCnt("1") // 수신거부 건수
.msgType("LMS") .msgTypeList(msgTypeList)
.failCnt("0") .failCnt("0")
.test_yn("YS") .test_yn("YS")
.build() .build()

View File

@ -29,7 +29,7 @@ public class LettnAccessLogVO implements Serializable {
private String accessToken; //access_token 고유번호 private String accessToken; //access_token 고유번호
private String reqUserId; //호출자 USER_ID(요청 사이트의 로그인 ID) private String reqUserId; //호출자 USER_ID(요청 사이트의 로그인 ID)
private String reqCn; //요청내용 private String reqCn; //요청내용
private String reqInfoRef; //요청 referer private String reqInfoMeth; //요청 메소드 정보
private String reqUrl; //요청 URL private String reqUrl; //요청 URL
private String resCn; //응답내용 private String resCn; //응답내용
private String resCode; //응답코드 private String resCode; //응답코드

View File

@ -1,8 +1,16 @@
package com.itn.mjonApi.mjon.log.service.mapper.domain; package com.itn.mjonApi.mjon.log.service.mapper.domain;
/*
table : mj_mymsg /**
comment : '내문자 보관함'; * packageName : com.itn.mjonApi.mjon.log.service.mapper.domain
*/ * fileName : LettnApiSendMsgLogVO
* author : hylee
* date : 2023-06-15
* description : lettngnrlmber_api_send_msg_log Table VO
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-05-09 hylee 최초 생성
*/
import lombok.*; import lombok.*;
@ -18,7 +26,9 @@ public class LettnApiSendMsgLogVO implements Serializable {
private String logNo; // access log 고유번호 private String logNo; // access log 고유번호
private String mberId; // 일반회원ID private String accessLogId; // 일반회원ID
private String sendResultCode; // 메세지 정송 결과 코드
private String testYn; // 테스트 여부 ( 발송 : "", 실패 테스트 : "YF", 성공 테스트 "YS")
private String msgSendType; // 문자 : msg 대량문자 : msgs private String msgSendType; // 문자 : msg 대량문자 : msgs
private String msgGroupId; // 문자 그룹 ID private String msgGroupId; // 문자 그룹 ID

View File

@ -19,7 +19,7 @@
, ACCESS_TOKEN , ACCESS_TOKEN
, REQ_USER_ID , REQ_USER_ID
, REQ_CN , REQ_CN
, REQ_INFO_REF , REQ_INFO_METH
, REQ_URL , REQ_URL
, RES_CN , RES_CN
, RES_CODE , RES_CODE
@ -49,7 +49,7 @@
, #{accessToken } , #{accessToken }
, #{reqUserId } , #{reqUserId }
, #{reqCn } , #{reqCn }
, #{reqInfoRef } , #{reqInfoMeth }
, #{reqUrl } , #{reqUrl }
, #{resCn } , #{resCn }
, #{resCode } , #{resCode }

View File

@ -14,7 +14,7 @@
<sql id="select_column_name"> <sql id="select_column_name">
LOG_NO LOG_NO
, MBER_ID , ACCESS_LOG_ID
, MSG_SEND_TYPE , MSG_SEND_TYPE
, MSG_GROUP_ID , MSG_GROUP_ID
, REQ_REGIST_PNTTM , REQ_REGIST_PNTTM
@ -27,11 +27,10 @@
<sql id="insert_column_name"> <sql id="insert_column_name">
LOG_NO LOG_NO
, MBER_ID , ACCESS_LOG_ID
, MSG_SEND_TYPE , MSG_SEND_TYPE
, MSG_GROUP_ID , MSG_GROUP_ID
, REQ_REGIST_PNTTM , REQ_REGIST_PNTTM
, REQ_REGISTER_ID
</sql> </sql>
@ -43,11 +42,10 @@
) )
VALUE ( VALUE (
#{logNo} #{logNo}
, #{mberId} , #{accessLogId}
, #{msgSendType} , #{msgSendType}
, #{msgGroupId} , #{msgGroupId}
, now() , now()
, #{mberId}
) )
</insert> </insert>