diff --git a/pom.xml b/pom.xml index 01c6f41..05a9236 100644 --- a/pom.xml +++ b/pom.xml @@ -122,6 +122,12 @@ org.springframework.boot spring-boot-starter-aop + + org.jetbrains + annotations + 16.0.1 + compile + diff --git a/src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java b/src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java index c3e0865..73244af 100644 --- a/src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java +++ b/src/main/java/com/itn/mjonApi/cmn/aop/SendAspect.java @@ -4,9 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; 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.FailRestResponse; import com.itn.mjonApi.cmn.msg.RestResponse; -import com.itn.mjonApi.cmn.msg.SendSuccessRestResponse; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; import com.itn.mjonApi.mjon.log.service.mapper.LettnAccessLogMapper; import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnAccessLogVO; @@ -104,18 +102,7 @@ public class SendAspect { RestResponse restResponse = (RestResponse) returnValue; - // TODO :: 성공 실패에 따른 로그 처리 예정 - if(restResponse.getObject().toString().indexOf("SendSuccessRestResponse") > -1){ - log.info(" :: SendSuccessRestResponse :: "); - SendSuccessRestResponse sendSuccessRestResponse = (SendSuccessRestResponse) restResponse.getObject(); - resutlCode = sendSuccessRestResponse.getResultCode(); - }else{ - log.info(" :: FailRestResponse :: "); - - FailRestResponse failRestResponse = (FailRestResponse) restResponse.getObject(); - resutlCode = failRestResponse.getResultCode(); - } // lettngnrlmber_access_log 응답값 Udpate LettnAccessLogVO lettnAccessLogVO = new LettnAccessLogVO() diff --git a/src/main/java/com/itn/mjonApi/cmn/msg/FailRestResponse.java b/src/main/java/com/itn/mjonApi/cmn/msg/FailRestResponse.java deleted file mode 100644 index 0b13d8d..0000000 --- a/src/main/java/com/itn/mjonApi/cmn/msg/FailRestResponse.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.itn.mjonApi.cmn.msg; - -import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Setter -@Getter -@NoArgsConstructor -@AllArgsConstructor -public class FailRestResponse { - - //private HttpStatus status; - private String resultCode; - - private String message; - - - /* - * 200-OK : 정상접속 - * 401-Unauthorized : 인증실패 - * - * */ - - - public static FailRestResponse getSendFailResponse(String resultCode) { - FailRestResponse sendFailResponse = new FailRestResponse(); - sendFailResponse.setResultCode(StatMsg.valueOf(resultCode).getCode()); - sendFailResponse.setMessage(StatMsg.valueOf(resultCode).getMsg()); - - return sendFailResponse; - } - - /** - * MjonResponseVO -> 변환 -> SendFailRestResponse - * @param mjonResponseVO - * @return - */ - public static FailRestResponse convertMjonDataToApiResponse(MjonResponseVO mjonResponseVO) { - String result = mjonResponseVO.getResult(); - String message = mjonResponseVO.getMessage(); - String enumStr = ""; - switch (result) { - case "statusFail" : enumStr = "1070"; // 회원 정지 - break; - case "smsLengFail" : enumStr = "1080"; // 문자 길이 초과 - break; - case "fail" : // 문자온 프로젝트에서 result가 fail로 다양한 에러가 리턴하여 분기처리함 - if(message.indexOf("문자 치환 후 전송 문자 길이를 초과하였습니다.")>-1) - enumStr = "1050"; // 치환 후 문자 길이 초과 - if(message.indexOf("치환문자 데이터가 없습니다")>-1) - enumStr = "1040"; // 치환 데이터 오류 - if(message.indexOf("치환 후 전송 문자 길이를 초과")>-1) - enumStr = "1050"; // 치환 데이터 오류 - break; - default: enumStr = "1099"; // 기타 시스템 오류 - break; - } - - return getSendFailResponse(enumStr); - } - -} 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 6932496..fa64daa 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/RestResponse.java @@ -1,53 +1,63 @@ package com.itn.mjonApi.cmn.msg; -import lombok.*; -import org.springframework.http.HttpStatus; +import lombok.Getter; +import lombok.Setter; import java.time.LocalDateTime; -import java.util.List; @Setter @Getter public class RestResponse{ - //private HttpStatus status; - private int resultCode; + private String resultCode = "0"; - private String message; + private Object data; - private LocalDateTime localDateTime; + private LocalDateTime localDateTime = LocalDateTime.now(); - private Object object; - - /* - * 200-OK : 정상접속 - * 401-Unauthorized : 인증실패 - * - * */ + /** + * 성공 생성자 + * 성공은 resultCode = 0 + */ + public RestResponse(Object data) { + this.data=data; + } + /** + * 실패 생성자 + * @param STAT_CODE + */ + public RestResponse(String STAT_CODE) { + this.resultCode=StatMsg.valueOf(STAT_CODE).getCode(); + this.data=StatMsg.valueOf(STAT_CODE).getMsg(); + } +/* public RestResponse(HttpStatus status, String message, LocalDateTime timestamp) { this.resultCode = status.value(); - checkMessage(status, message); + checkMessage(status, message); this.localDateTime = timestamp; } - +*/ + +/* public RestResponse(HttpStatus status, String message, LocalDateTime timestamp, Object object) { this.resultCode = status.value(); checkMessage(status, message); - this.object= object; + this.data = object; this.localDateTime = timestamp; - } + } +*/ - public RestResponse(HttpStatus status, String message, LocalDateTime timestamp, List objectList) { + /* public RestResponse(HttpStatus status, String message, LocalDateTime timestamp, List objectList) { this.resultCode = status.value(); checkMessage(status, message); this.localDateTime = timestamp; - } + }*/ - private void checkMessage(HttpStatus status, String message) { + /*private void checkMessage(HttpStatus status, String message) { if ("".equals(message)){ this.message = status.name(); }else { this.message = message; } - } + }*/ } 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 fd365d9..fabacbf 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/SendSuccessRestResponse.java @@ -4,7 +4,6 @@ import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonResponseVO; import lombok.*; import lombok.extern.slf4j.Slf4j; -import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; @@ -17,9 +16,9 @@ import java.util.stream.Collectors; public class SendSuccessRestResponse { //private HttpStatus status; - private String resultCode; // 성공 코드 +// private String resultCode; // 성공 코드 - private String message; // 메세지 +// private String message; // 메세지 private String msgGroupId; // 문자 전송 그룹 아이디 @@ -33,7 +32,7 @@ public class SendSuccessRestResponse { private String msgType; // 메세지 타입 - private LocalDateTime localDateTime; +// private LocalDateTime localDateTime; /* * 200-OK : 정상접속 @@ -45,16 +44,14 @@ public class SendSuccessRestResponse { * @param mjonResponseVO * @return */ - public static SendSuccessRestResponse convertMjonDataToApiResponse(MjonResponseVO mjonResponseVO, String STAT_CODE) { + public static SendSuccessRestResponse convertMjonDataToApiResponse(MjonResponseVO mjonResponseVO) { return SendSuccessRestResponse.builder() - .resultCode(StatMsg.valueOf(STAT_CODE).getCode()) // 성공 코드 200 - StatMsg 참고 - .message(StatMsg.valueOf(STAT_CODE).getMsg()) // 성공은 message가 없음 - StatMsg 참고 .msgGroupId(mjonResponseVO.getMsgGroupId()) // 전송 메세지 그룹 ID .successCnt(mjonResponseVO.getResultSts()) // 성공 건수 .blockCnt(mjonResponseVO.getResultBlockSts()) // 수신거부 건수 - .localDateTime(LocalDateTime.now()) // 현재 시간 +// .localDateTime(LocalDateTime.now()) // 현재 시간 .msgType(StatMsg.valueOf("msgType"+mjonResponseVO.getMsgType()).getMsg()) .build(); @@ -99,7 +96,7 @@ public class SendSuccessRestResponse { .successCnt(Integer.toString(successCnt)) // 성공 건수 .blockCnt(Integer.toString(blockCnt)) // 수신거부 건수 .failCnt(Integer.toString(failCnt)) // 수신거부 건수 - .localDateTime(LocalDateTime.now()) // 현재 시간 +// .localDateTime(LocalDateTime.now()) // 현재 시간 .build(); } 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 6a872e8..528a657 100644 --- a/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java +++ b/src/main/java/com/itn/mjonApi/cmn/msg/StatMsg.java @@ -2,6 +2,11 @@ package com.itn.mjonApi.cmn.msg; import lombok.Getter; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Random; + /** * packageName : com.itn.mjonApi.cmn.msg * fileName : statMsg @@ -35,7 +40,7 @@ public enum StatMsg { , STAT_1060("1060","발송 비용 부족") , STAT_1070("1070","서비스 이용 정지 회원") , STAT_1080("1080","문자 길이 초과") - , STAT_1090("1090","요청 발송일시에 발송 불가") + , STAT_1090("1090","요청 발송일시에 발송 불가") // 아직 사용 안함 , STAT_1099("1099","기타 시스템 오류") //====================================================================== @@ -43,9 +48,6 @@ public enum StatMsg { , msgType6("장문","LMS") - - - ; private final String code; @@ -56,4 +58,21 @@ public enum StatMsg { this.msg = msg; } + // Random을 만들기 위한 코드 + private static final List VALUES = Collections.unmodifiableList(Arrays.asList(values())); + private static final int SIZE = VALUES.size(); + private static final Random RANDOM = new Random(); + public static String randomErrorStatCode() { + String errorCode = ""; + while(true){ + errorCode = VALUES.get(RANDOM.nextInt(SIZE)).getCode(); + if(errorCode.length() > 3){ + break; + } + } + + return "STAT_"+errorCode; + } + + } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessKeyServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessKeyServiceImpl.java index 7c61656..c00b169 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessKeyServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessKeyServiceImpl.java @@ -5,10 +5,8 @@ import com.itn.mjonApi.mjon.api.access.mapper.AccessKeyMapper; import com.itn.mjonApi.mjon.api.access.mapper.domain.AccessKeyVO; import com.itn.mjonApi.mjon.api.access.service.AccessKeyService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; import java.util.List; @Service @@ -21,20 +19,23 @@ public class AccessKeyServiceImpl implements AccessKeyService { @Override public RestResponse insert(AccessKeyVO accessKeyVO) { int i_ret = accessKeyMapper.insert(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } @Override public RestResponse selectR(AccessKeyVO accessKeyVO) { AccessKeyVO MyMsgListVO = accessKeyMapper.selectR(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } @Override public RestResponse selectL(AccessKeyVO accessKeyVO) { List MyMsgListVO = accessKeyMapper.selectL(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } /* @@ -56,12 +57,14 @@ public class AccessKeyServiceImpl implements AccessKeyService { @Override public RestResponse update(AccessKeyVO accessKeyVO) { int i_ret = accessKeyMapper.update(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } @Override public RestResponse delete(AccessKeyVO accessKeyVO) { int i_ret = accessKeyMapper.delete(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessTokenServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessTokenServiceImpl.java index 478f466..f6211d5 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessTokenServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessTokenServiceImpl.java @@ -1,17 +1,14 @@ package com.itn.mjonApi.mjon.api.access.service.impl; -import java.time.LocalDateTime; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Service; - -import com.itn.mjonApi.mjon.api.access.mapper.domain.AccessKeyVO; import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; import com.itn.mjonApi.cmn.msg.RestResponse; -import com.itn.mjonApi.mjon.api.access.service.AccessTokenService; import com.itn.mjonApi.mjon.api.access.mapper.AccessTokenMapper; +import com.itn.mjonApi.mjon.api.access.mapper.domain.AccessKeyVO; +import com.itn.mjonApi.mjon.api.access.service.AccessTokenService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; @Service public class AccessTokenServiceImpl implements AccessTokenService { @@ -23,26 +20,30 @@ public class AccessTokenServiceImpl implements AccessTokenService { @Override public RestResponse findAll() { List MyMsgListVO = accessTokenMapper.findAll(); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); + return new RestResponse(MyMsgListVO); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } @Override public RestResponse insert(AccessKeyVO accessKeyVO) { int i_ret = accessTokenMapper.insert(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } @Override public RestResponse selectR(AccessKeyVO accessKeyVO) { AccessKeyVO MyMsgListVO = accessTokenMapper.selectR(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); + return new RestResponse(MyMsgListVO); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } @Override public RestResponse selectL(AccessKeyVO accessKeyVO) { List MyMsgListVO = accessTokenMapper.selectL(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); + return new RestResponse(MyMsgListVO); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } /* @@ -64,12 +65,14 @@ public class AccessTokenServiceImpl implements AccessTokenService { @Override public RestResponse update(AccessKeyVO accessKeyVO) { int i_ret = accessTokenMapper.update(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } @Override public RestResponse delete(AccessKeyVO accessKeyVO) { int i_ret = accessTokenMapper.delete(accessKeyVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return null; +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/access/web/AccessKeyRestController.java b/src/main/java/com/itn/mjonApi/mjon/api/access/web/AccessKeyRestController.java index eff0ace..a84d395 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/access/web/AccessKeyRestController.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/web/AccessKeyRestController.java @@ -2,17 +2,14 @@ package com.itn.mjonApi.mjon.api.access.web; import com.itn.mjonApi.cmn.msg.PlainResponse; import com.itn.mjonApi.cmn.msg.RestResponse; +import com.itn.mjonApi.mjon.api.access.mapper.domain.SendMsgVO; import com.itn.mjonApi.mjon.api.access.service.AccessKeyService; import com.itn.mjonApi.mjon.api.access.service.AccessTokenService; -import com.itn.mjonApi.mjon.api.access.mapper.domain.SendMsgVO; import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.time.LocalDateTime; - /** * @author User * @@ -39,14 +36,15 @@ public class AccessKeyRestController { public ResponseEntity apiAccessTestTestGet( SendMsgVO sendMsgVO ){ - - return ResponseEntity.ok( + + return null; +/* return ResponseEntity.ok( new RestResponse( HttpStatus.OK , HttpStatus.OK.getReasonPhrase() , LocalDateTime.now() ) - ); + );*/ } @@ -91,9 +89,11 @@ public class AccessKeyRestController { //System.out.println(p_name_1); //System.out.println(p_name_2); - - + + + return null; + /* return ResponseEntity.ok( new RestResponse( HttpStatus.OK @@ -101,7 +101,7 @@ public class AccessKeyRestController { , LocalDateTime.now() , "grp100" ) - ); + ); */ //AccessKeyVO } @@ -148,15 +148,16 @@ public class AccessKeyRestController { //step6.문자 타입에 따른 비용 처리 가능 여부 확인 // 1060 - - return this.MakePlainResponseResult( - new PlainResponse( - HttpStatus.OK - , "" - , LocalDateTime.now() - ) - , "grp100" - ); + + return null; +// return this.MakePlainResponseResult( +// new PlainResponse( +// HttpStatus.OK +// , "" +// , LocalDateTime.now() +// ) +// , "grp100" +// ); } @@ -197,15 +198,16 @@ public class AccessKeyRestController { jsonObject.put("SMS", "50"); jsonObject.put("LMS", "30"); jsonObject.put("MMS", "20"); - - return ResponseEntity.ok( - new RestResponse( - HttpStatus.OK - , "" - , LocalDateTime.now() - , jsonObject - ) - ); + + return null; +// return ResponseEntity.ok( +// new RestResponse( +// HttpStatus.OK +// , "" +// , LocalDateTime.now() +// , jsonObject +// ) +// ); //AccessKeyVO } @@ -238,15 +240,16 @@ public class AccessKeyRestController { //remain 체크 사항 //step1.잔액 확인 여부 체크 // 5010 - - return this.MakePlainResponseResult( - new PlainResponse( - HttpStatus.OK - , "" - , LocalDateTime.now() - ) - , "50|30|20" - ); + + return null; +// return this.MakePlainResponseResult( +// new PlainResponse( +// HttpStatus.OK +// , "" +// , LocalDateTime.now() +// ) +// , "50|30|20" +// ); //AccessKeyVO } 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 583809c..40b303f 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 @@ -115,6 +115,7 @@ public class MsgRequestVO implements Serializable { @ApiModelProperty(value = "문자 종류 일반:N, 광고:A, 선거:C", example = "N", hidden = true) private String msgKind="N"; // '문자 종류 일반:N, 광고:A, 선거:C', + private String test_yn; // 테스트 여부 // private String msgId ;// '문자ID', diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java index dd9d322..f2556a3 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MsgsRequestVO.java @@ -117,6 +117,7 @@ public class MsgsRequestVO implements Serializable { @ApiModelProperty(value = "문자 종류 일반:N, 광고:A, 선거:C", example = "N", hidden = true) private String msgKind = "N"; // '문자 종류 일반:N, 광고:A, 선거:C', + private String test_yn; // 테스트 여부 // 수신자 발송txt 각각 _1~_100 // 교차로 있어야 로직이 가능함 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 64304b3..8362c06 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 @@ -3,12 +3,11 @@ package com.itn.mjonApi.mjon.api.send.service; import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgRequestVO; import com.itn.mjonApi.mjon.api.send.mapper.domain.MsgsRequestVO; -import org.springframework.http.ResponseEntity; public interface SendService { RestResponse sendMsgData(MsgRequestVO msgRequestVO) throws Exception; - ResponseEntity sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception; + RestResponse sendMsgsData(MsgsRequestVO msgsRequestVO) 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 f1716e3..d059dcf 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,9 +1,9 @@ package com.itn.mjonApi.mjon.api.send.service.impl; import com.itn.mjonApi.cmn.apiServer.ApiService; -import com.itn.mjonApi.cmn.msg.FailRestResponse; import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.cmn.msg.SendSuccessRestResponse; +import com.itn.mjonApi.cmn.msg.StatMsg; 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; @@ -15,13 +15,10 @@ import org.apache.catalina.connector.Response; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -49,19 +46,23 @@ public class SendServiceImpl implements SendService { @Override public RestResponse sendMsgData(MsgRequestVO msgRequestVO) throws Exception { + if(StringUtils.isNotEmpty(msgRequestVO.getTest_yn())){ + // YF => 실패 테스트 데이터 + return this._getTestReturnData(msgRequestVO.getTest_yn()); + } //sendMsg 문자 발송 전 체크 사항 //step1.발신자 전화번호 사용 가능 여부 체크(해당 사용자의 기 등록된 번호만 발송 가능) // 1010 if(!sendMapper.findByCallFrom(msgRequestVO)){ - return new RestResponse(HttpStatus.OK,"", LocalDateTime.now(), _falseRetunDate("STAT_1010")); + return new RestResponse("STAT_1010"); } - //step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능) - // 1020 + // step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능) + // 1020 // 폰번호 확인 - 빈 값 -> 유효성 정규식 if(StringUtils.isNotEmpty(this.getCallToListChk(msgRequestVO))){ - return new RestResponse(HttpStatus.OK,"", LocalDateTime.now(), _falseRetunDate("STAT_1020")); + return new RestResponse("STAT_1020"); } //step3.문자 내용 정상 여부 확인 - 스미싱 문구는 발송 30분 지연으로 처리됨 @@ -80,29 +81,13 @@ public class SendServiceImpl implements SendService { //step4.치환명 정상 여부 확인 // 1040 - - // 치환데이터 여부 확인 - msgRequestVO.setTxtReplYn(this.getTxtReplYn(msgRequestVO)); - - if("Y".equals(msgRequestVO.getTxtReplYn())){ - - //일괄변환 문자에 콤마(,)가 들어가있으면 배열로 넘길때 문제가 발생하여 특수문자(§)로 치환하여 넘겨주도록 한다. - msgRequestVO = this.getReplaceCommaToStrSymbol(msgRequestVO); - - // 치환 후 단문 장문 개수 구하기 - msgRequestVO = getLengthOfShortAndLongMsg(msgRequestVO); - - } - - - // 치환데이터 여부 확인 msgRequestVO.setTxtReplYn(this.getTxtReplYn(msgRequestVO)); // 치환데이터가 있을 경우 if("Y".equals(msgRequestVO.getTxtReplYn())){ //일괄변환 문자에 콤마(,)가 들어가있으면 배열로 넘길때 문제가 발생하여 특수문자(§)로 치환하여 넘겨주도록 한다. msgRequestVO = this.getReplaceCommaToStrSymbol(msgRequestVO); // 치환 후 단문 장문 개수 구하기 - msgRequestVO = getLengthOfShortAndLongMsg(msgRequestVO); + msgRequestVO = this.getLengthOfShortAndLongMsg(msgRequestVO); } // 문자 전송하는 부분 @@ -116,9 +101,9 @@ public class SendServiceImpl implements SendService { // convertMjonDataToApiResponse => MjonResponseVO 데이터를 ApiResponse 데이터로 변환하는 메소드 if(munjaSendResponse.getResult() != "fail"){ // 성공 - return new RestResponse(HttpStatus.OK, "", LocalDateTime.now(), SendSuccessRestResponse.convertMjonDataToApiResponse(munjaSendResponse, STAT_CODE)); + return new RestResponse(SendSuccessRestResponse.convertMjonDataToApiResponse(munjaSendResponse)); }else{ // 실패 - return new RestResponse(HttpStatus.OK, "", LocalDateTime.now(), FailRestResponse.convertMjonDataToApiResponse(munjaSendResponse)); + return new RestResponse(this.convertMjonDataToApiResponse(munjaSendResponse)); } //step5.발송일시 정상여부 확인 @@ -129,9 +114,30 @@ public class SendServiceImpl implements SendService { } - @Override - public ResponseEntity sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception { + private RestResponse _getTestReturnData(String testYn) + { + if("YF".equals(testYn)) + { + return new RestResponse(StatMsg.randomErrorStatCode()); + }else{ + return new RestResponse(SendSuccessRestResponse.builder() + .msgGroupId("MSGGID_0000000000000") // 전송 메세지 그룹 ID + .successCnt("5") // 성공 건수 + .blockCnt("2") // 수신거부 건수 + .msgType("LMS") + .failCnt("0") + .build() + ); + } + } + @Override + public RestResponse sendMsgsData(MsgsRequestVO msgsRequestVO) throws Exception { + + if(StringUtils.isNotEmpty(msgsRequestVO.getTest_yn())){ + // YF => 실패 테스트 데이터 + return this._getTestReturnData(msgsRequestVO.getTest_yn()); + } // msgsVO -> msgVO List로 변환 List msgRequestVOList = this.getDataCleaning(msgsRequestVO); @@ -143,25 +149,22 @@ public class SendServiceImpl implements SendService { //step1.발신자 전화번호 사용 가능 여부 체크(해당 사용자의 기 등록된 번호만 발송 가능) // 1010 if(!sendMapper.findByCallFrom(msgRequestVOList.get(0))){ - return ResponseEntity.ok().body(_falseRetunDate("STAT_1010")); + return new RestResponse("STAT_1010"); } + + //step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능) + // 1020 + // 폰번호 확인 - 빈 값 -> 유효성 정규식 + for(MsgRequestVO msgRequestVO : msgRequestVOList){ + if(StringUtils.isNotEmpty(this.getCallToListChk(msgRequestVO))){ + return callToErrorReturnData(msgRequestVO); + } + } + + List mjonResponseVOList = new ArrayList(); for(MsgRequestVO msgRequestVO : msgRequestVOList){ - - - //step2.수신자 전화번호 정상 여부 체크(정상 번호에 대해서만 발송 가능) - // 1020 - // 폰번호 확인 - 빈 값 -> 유효성 정규식 - if(StringUtils.isNotEmpty(this.getCallToListChk(msgRequestVO))){ - FailRestResponse failRestResponse = _falseRetunDate("STAT_1020"); - String returnMsg = failRestResponse.getMessage(); - returnMsg = returnMsg.replace("수신자", "수신자(" + msgRequestVO.getCallToList()[0] + ")"); - failRestResponse.setMessage(returnMsg); - - return ResponseEntity.ok().body(failRestResponse); -// return ResponseEntity.ok().body(_falseRetunDate("STAT_1020")); - } //step3.문자 내용 정상 여부 확인 - 스미싱 문구는 발송 30분 지연으로 처리됨 // 1030 => 현재 사용안함 // 스팸체크 하는 부분 @@ -187,11 +190,17 @@ public class SendServiceImpl implements SendService { } - return ResponseEntity.ok().body(new RestResponse(HttpStatus.OK - , "" - , LocalDateTime.now() - , SendSuccessRestResponse.SendSuccessMsgsRestResponse(mjonResponseVOList)) - ); + return new RestResponse(SendSuccessRestResponse.SendSuccessMsgsRestResponse(mjonResponseVOList)); + } + + private static RestResponse callToErrorReturnData(MsgRequestVO msgRequestVO) { + RestResponse restResponse = new RestResponse("STAT_1020"); + + String errorMsg = restResponse.getData().toString(); + errorMsg.replace("수신자", "수신자(" + msgRequestVO.getCallToList()[0] + ")"); + restResponse.setData(errorMsg); + + return restResponse; } /** @@ -267,13 +276,6 @@ public class SendServiceImpl implements SendService { return msgRequestVOList; } - /** - * 리턴 데이터 메소드 - * @return - */ - private static FailRestResponse _falseRetunDate(String ststCode) { - return FailRestResponse.getSendFailResponse(ststCode); - } /** * 치환 후 단문 장문 msg 개수 구하기 @@ -454,4 +456,35 @@ public class SendServiceImpl implements SendService { return message; } + + + /** + * MjonResponseVO -> 변환 -> SendFailRestResponse + * @param mjonResponseVO + * @return + */ + public static String convertMjonDataToApiResponse(MjonResponseVO mjonResponseVO) { + String result = mjonResponseVO.getResult(); + String message = mjonResponseVO.getMessage(); + String statCode = ""; + switch (result) { + case "statusFail" : statCode = "1070"; // 회원 정지 + break; + case "smsLengFail" : statCode = "1080"; // 문자 길이 초과 + break; + case "fail" : // 문자온 프로젝트에서 result가 fail로 다양한 에러가 리턴하여 분기처리함 + if(message.indexOf("문자 치환 후 전송 문자 길이를 초과하였습니다.")>-1) + statCode = "1050"; // 치환 후 문자 길이 초과 + if(message.indexOf("치환문자 데이터가 없습니다")>-1) + statCode = "1040"; // 치환 데이터 오류 + if(message.indexOf("치환 후 전송 문자 길이를 초과")>-1) + statCode = "1050"; // 치환 데이터 오류 + break; + default: statCode = "1099"; // 기타 시스템 오류 + break; + } + + return statCode; + } + } 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 216f343..1bf342d 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 @@ -67,8 +67,8 @@ public class SendRestController { @CrossOrigin("*") // 모든 요청에 접근 허용 @PostMapping("/api/send/sendMsgs") @ApiOperation(value= "문자 전송", notes = "[문자 발송] 다른 내용으로 여려명에게 보냄") - public ResponseEntity sendMsgs(MsgsRequestVO msgsRequestVO) throws Exception { - return sendService.sendMsgsData(msgsRequestVO); + public ResponseEntity sendMsgs(MsgsRequestVO msgsRequestVO) throws Exception { + return ResponseEntity.ok().body(sendService.sendMsgsData(msgsRequestVO)); } diff --git a/src/main/java/com/itn/mjonApi/mjon/log/service/impl/LettnLoginLogServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/log/service/impl/LettnLoginLogServiceImpl.java index 6f6216c..8a24773 100644 --- a/src/main/java/com/itn/mjonApi/mjon/log/service/impl/LettnLoginLogServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/log/service/impl/LettnLoginLogServiceImpl.java @@ -5,10 +5,8 @@ import com.itn.mjonApi.mjon.log.service.LettnLoginLogService; import com.itn.mjonApi.mjon.log.service.mapper.LettnLoginLogMapper; import com.itn.mjonApi.mjon.log.service.mapper.domain.LettnLoginLogVO; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; import java.util.List; @Service @@ -21,20 +19,23 @@ public class LettnLoginLogServiceImpl implements LettnLoginLogService { @Override public RestResponse insert(LettnLoginLogVO lettnLoginLogVO) { int i_ret = lettnLoginLogMapper.insert(lettnLoginLogVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return new RestResponse(new Object()); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } @Override public RestResponse selectR(LettnLoginLogVO lettnLoginLogVO) { LettnLoginLogVO MyMsgListVO = lettnLoginLogMapper.selectR(lettnLoginLogVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); + return new RestResponse(MyMsgListVO); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } @Override public RestResponse selectL(LettnLoginLogVO lettnLoginLogVO) { List MyMsgListVO = lettnLoginLogMapper.selectL(lettnLoginLogVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); + return new RestResponse(MyMsgListVO); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } /* @@ -56,13 +57,15 @@ public class LettnLoginLogServiceImpl implements LettnLoginLogService { @Override public RestResponse update(LettnLoginLogVO lettnLoginLogVO) { int i_ret = lettnLoginLogMapper.update(lettnLoginLogVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return new RestResponse(new Object()); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } @Override public RestResponse delete(LettnLoginLogVO lettnLoginLogVO) { int i_ret = lettnLoginLogMapper.delete(lettnLoginLogVO); - return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); + return new RestResponse(new Object()); +// return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now()); } @Override