From d45a7a9f60c9e33691d1885c37d81d248f512cda Mon Sep 17 00:00:00 2001 From: hylee Date: Tue, 18 Apr 2023 12:52:22 +0900 Subject: [PATCH 1/8] =?UTF-8?q?refactor:=20prod=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=8D=BC=ED=8B=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/application-prod.properties | 15 +++++++++ src/main/resources/application.properties | 32 +++++++++---------- 2 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 src/main/resources/application-prod.properties diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties new file mode 100644 index 0000000..a4c95b6 --- /dev/null +++ b/src/main/resources/application-prod.properties @@ -0,0 +1,15 @@ + + +# DB INFO +#spring.datasource.driver-class-name=org.mariadb.jdbc.Driver +#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +#spring.datasource.url=jdbc:mysql://192.168.0.125:3306/mjon?serverTimezone=Asia/Seoul +spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy +spring.datasource.url=jdbc:log4jdbc:mysql://192.168.0.125:3306/mjon?serverTimezone=Asia/Seoul + +spring.datasource.username=mjonUr +spring.datasource.password=mjon!@#$ + + +server.port=9100 + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 65865d1..99f4e71 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,16 +1,16 @@ - - -spring.profiles.active=dev - - -# mybatis setting -mybatis.mapper-locations=classpath:mapper/**/*.xml -# model camel case set -mybatis.configuration.map-underscore-to-camel-case=true - -#sql \ucd9c\ub825 log \uc124\uc815 -logging.level.jdbc.sqlonly=off -logging.level.jdbc.sqltiming=info -logging.level.jdbc.audit=off -logging.level.jdbc.resultset=off -logging.level.jdbc.resultsettable=off + + +spring.profiles.active=dev + + +# mybatis setting +mybatis.mapper-locations=classpath:mapper/**/*.xml +# model camel case set +mybatis.configuration.map-underscore-to-camel-case=true + +#sql \ucd9c\ub825 log \uc124\uc815 +logging.level.jdbc.sqlonly=off +logging.level.jdbc.sqltiming=info +logging.level.jdbc.audit=off +logging.level.jdbc.resultset=off +logging.level.jdbc.resultsettable=off From 4f81cb0447e01df7cd4389e5bcf953111b3194a0 Mon Sep 17 00:00:00 2001 From: hylee Date: Tue, 25 Apr 2023 10:56:34 +0900 Subject: [PATCH 2/8] =?UTF-8?q?refactor:=20Idgen=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itn/mjonApi/cmn/context/ContextIdgen.java | 41 +++++++++ .../mjonApi/cmn/idgen/mapper/IdgenMapper.java | 8 +- .../cmn/idgen/mapper/domain/IdgenVO.java | 14 +--- .../cmn/idgen/service/IdgenService.java | 16 ++++ .../idgen/service/impl/IdgenServiceImpl.java | 84 +++++++++++++++++++ .../mjon/member/mapper/MyMsgMapper.java | 34 ++++---- .../service/impl/MemberServiceImpl.java | 3 +- src/main/resources/application.properties | 4 + .../mapper/{ => member}/MyMsgMapper.xml | 26 +++--- 9 files changed, 186 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java create mode 100644 src/main/java/com/itn/mjonApi/cmn/idgen/service/IdgenService.java create mode 100644 src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java rename src/main/resources/mapper/{ => member}/MyMsgMapper.xml (96%) diff --git a/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java b/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java new file mode 100644 index 0000000..1e5ed6b --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java @@ -0,0 +1,41 @@ +package com.itn.mjonApi.cmn.context; + +import com.itn.mjonApi.cmn.idgen.service.impl.IdgenServiceImpl; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * packageName : com.itn.mjonApi.cmn.context + * fileName : ContextIdgen + * author : hylee + * date : 2023-04-24 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-04-24 hylee 최초 생성 + * + * + * ==사용 방법== + * - 사용할 class에 아래(예시)와 같이 추가하여 testApi.getNextStringId(); 와 같이 호출하면 됨 + * @Resource(name = "testApi") + * private IdgenService testApi; + * + */ +@Configuration +public class ContextIdgen { + /* + * 예시 testApi + * */ + @Bean(name="testApi") + public IdgenServiceImpl testApi(){ + IdgenServiceImpl idgenServiceImpl = new IdgenServiceImpl(); + idgenServiceImpl.setCipers(11); // cipers: prefix를 제외한 아이디의 길이 지정 + idgenServiceImpl.setFillChar('0'); // fillChar: 0을 대신하여 표현되는 문자 + idgenServiceImpl.setPrefix("TESTAPI_ID_"); // prefix: 아이디의 앞에 고정적으로 붙이고자 하는 설정값 지정 + idgenServiceImpl.setTableName("TESTAPI"); // tableName - dataSoure 에 설정된 DB에 SEQ 테이블에 tableName 컬럼에 참조할 값 + return idgenServiceImpl; + } + + +} diff --git a/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java b/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java index efcb300..5041e9b 100644 --- a/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java +++ b/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java @@ -1,6 +1,7 @@ package com.itn.mjonApi.cmn.idgen.mapper; import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -9,6 +10,9 @@ import java.util.List; @Mapper public interface IdgenMapper { -// @Select("select * from ids") - List findByTableName(String tableName); + @Select("select * from ids where TABLE_NAME = #{tableName}") + IdgenVO findByTableName(String tableName); + + @Insert("INSERT INTO IDS VALUES (#{tableName}, #{nextId}) ON DUPLICATE KEY UPDATE NEXT_ID=#{nextId}") + void save(IdgenVO idgenVO); } diff --git a/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/domain/IdgenVO.java b/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/domain/IdgenVO.java index 0e3baca..a456a6b 100644 --- a/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/domain/IdgenVO.java +++ b/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/domain/IdgenVO.java @@ -15,16 +15,8 @@ import java.io.Serializable; public class IdgenVO implements Serializable { private static final long serialVersionUID = -7865729705175845268L; - private Integer msgId; /*auto_increment comment '문자 고유아이디' primary key*/ - private String mberId; /*comment '회원 아이디'*/ - private String esntlId; /*null comment '회원고유 아이디'*/ - private String subject; /*null comment '문자 제목'*/ - private String smsTxt; /*null comment '문자 내용'*/ - private String smsLen; /*null comment '문자 길이'*/ - private String atchFileId1; /*null comment '첨부파일번호'*/ - private String atchFileId2; /*null comment '첨부파일번호'*/ - private String atchFileId3; /*null comment '첨부파일번호'*/ - private String regdate; /*null comment '등록일자'*/ - private String msgType; /*default 'S' null comment '문자종류'*/ + + private String tableName; + private int nextId; } diff --git a/src/main/java/com/itn/mjonApi/cmn/idgen/service/IdgenService.java b/src/main/java/com/itn/mjonApi/cmn/idgen/service/IdgenService.java new file mode 100644 index 0000000..fbf2943 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/idgen/service/IdgenService.java @@ -0,0 +1,16 @@ +package com.itn.mjonApi.cmn.idgen.service; + +/** + * packageName : com.itn.mjonApi.cmn.idgen.service + * fileName : IdgenService + * author : hylee + * date : 2023-04-24 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-04-24 hylee 최초 생성 + */ +public interface IdgenService { + public String getNextStringId(); +} diff --git a/src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java b/src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java new file mode 100644 index 0000000..e09546c --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java @@ -0,0 +1,84 @@ +package com.itn.mjonApi.cmn.idgen.service.impl; + +import com.itn.mjonApi.cmn.idgen.mapper.IdgenMapper; +import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; +import com.itn.mjonApi.cmn.idgen.service.IdgenService; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * packageName : com.itn.mjonApi.cmn.context + * fileName : ContextIdgen + * author : hylee + * date : 2023-04-24 + * description : 전자정부 IDS 구현 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-04-24 hylee 최초 생성 + */ +@Slf4j +@Setter +public class IdgenServiceImpl implements IdgenService { + + private String prefix; + private int cipers; + private char fillChar; + private String tableName; + + @Autowired + private IdgenMapper idgenMapper; + + + @Override + public String getNextStringId() { + + String prefixTemp = prefix; + + // 기존에 있는 tableName인지 확인 + IdgenVO idgenVO = idgenMapper.findByTableName(tableName); + + // select 한 idgen이 없으면 초기 셋팅 + if(idgenVO == null){ + idgenVO = new IdgenVO(); + idgenVO.setNextId(1); + idgenVO.setTableName(tableName); + }else{ + // select 한 idgen이 있으면 +1 + idgenVO.setNextId(idgenVO.getNextId()+1); + } + + // nextId를 제외한 String 만들기 + prefixTemp = this.getMakeNextIdFirstString(prefixTemp, idgenVO); + + // upsert 쿼리 실행 + idgenMapper.save(idgenVO); + + // nextId 값 만들기 + String nextId = prefixTemp + String.valueOf(idgenVO.getNextId()); + + log.info(" userId : [{}]", nextId); + return nextId; + } + + /** + * + * @param prefixTemp + * @param idgenVO + * @author hylee + * @discription nextId를 제외한 String 만들기 + * @date 2023-04-24 + * @return + */ + private String getMakeNextIdFirstString(String prefixTemp, IdgenVO idgenVO) { + // fillChar 값이 들어갈 자리값 계산 + int fillCharSize = cipers - (int)(Math.log10(idgenVO.getNextId())+1); + // prefix와 NextId를 제외한 자리에 fillchar값 넣기 + for(int i=0; i findAll(); - - @Select("select * from MJ_MYMSG") - List findAll_2(); -} +package com.itn.mjonApi.mjon.member.mapper; + +import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface MyMsgMapper { + + /**/ + List findAll(); + + @Select("select * from MJ_MYMSG") + List findAll_2(); +} diff --git a/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java index a8652af..c68ef2d 100644 --- a/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java @@ -1,5 +1,6 @@ package com.itn.mjonApi.mjon.member.service.impl; +import com.itn.mjonApi.cmn.idgen.service.IdgenService; import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.mjon.member.mapper.MyMsgMapper; import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; @@ -8,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; @@ -17,7 +19,6 @@ public class MemberServiceImpl implements MemberService { @Autowired MyMsgMapper myMsgMapper; - @Override public RestResponse findAll() { List MyMsgListVO = myMsgMapper.findAll(); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 99f4e71..f05530d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -14,3 +14,7 @@ logging.level.jdbc.sqltiming=info logging.level.jdbc.audit=off logging.level.jdbc.resultset=off logging.level.jdbc.resultsettable=off + + +spring.devtools.restart.enabled=true +spring.devtools.livereload.enabled=true diff --git a/src/main/resources/mapper/MyMsgMapper.xml b/src/main/resources/mapper/member/MyMsgMapper.xml similarity index 96% rename from src/main/resources/mapper/MyMsgMapper.xml rename to src/main/resources/mapper/member/MyMsgMapper.xml index 10a435f..d8515af 100644 --- a/src/main/resources/mapper/MyMsgMapper.xml +++ b/src/main/resources/mapper/member/MyMsgMapper.xml @@ -1,14 +1,14 @@ - - - - - - - - + + + + + + + + \ No newline at end of file From 035a06528a49906064c48054468e0fdbc6baab81 Mon Sep 17 00:00:00 2001 From: hylee Date: Tue, 25 Apr 2023 12:38:55 +0900 Subject: [PATCH 3/8] =?UTF-8?q?refactor:=20API=20LOG=EC=97=90=20LOG=5FID?= =?UTF-8?q?=20=ED=95=84=EB=93=9C=20=EA=B0=92=20IDGEN=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 +++++--- .../itn/mjonApi/cmn/context/ContextIdgen.java | 19 +++++++++-- .../interceptor/CertificationInterceptor.java | 17 +++++++--- .../mjon/member/mapper/MyMsgMapper.java | 5 +-- .../mjon/member/mapper/domain/MyMsgVO.java | 33 +++++++++++++++++++ .../service/impl/MemberServiceImpl.java | 5 +-- .../resources/mapper/log/LettnLoginLog.xml | 7 ++-- .../resources/mapper/member/MyMsgMapper.xml | 2 +- 8 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/itn/mjonApi/mjon/member/mapper/domain/MyMsgVO.java diff --git a/pom.xml b/pom.xml index 4189ef9..1bc182b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,15 +20,17 @@ org.springframework.boot spring-boot-starter-hateoas + 3.0.4 org.springframework.boot spring-boot-starter-web + 3.0.4 org.mybatis.spring.boot mybatis-spring-boot-starter - 2.3.0 + 3.0.1 @@ -41,24 +43,26 @@ org.modelmapper modelmapper - 3.1.0 + 3.1.1 mysql mysql-connector-java - 8.0.30 + 8.0.32 org.projectlombok lombok + 1.18.26 true org.springframework.boot spring-boot-starter-test + 3.0.4 test @@ -71,7 +75,8 @@ org.springframework.boot spring-boot-devtools - + 3.0.4 + diff --git a/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java b/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java index 1e5ed6b..79bd12f 100644 --- a/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java +++ b/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java @@ -24,9 +24,9 @@ import org.springframework.context.annotation.Configuration; */ @Configuration public class ContextIdgen { - /* - * 예시 testApi - * */ + /** + * @예시 testApi + * */ @Bean(name="testApi") public IdgenServiceImpl testApi(){ IdgenServiceImpl idgenServiceImpl = new IdgenServiceImpl(); @@ -37,5 +37,18 @@ public class ContextIdgen { return idgenServiceImpl; } + /** + * @discription apiLog Ids + * @return + */ + @Bean(name="apiLog") + public IdgenServiceImpl apiLog(){ + IdgenServiceImpl idgenServiceImpl = new IdgenServiceImpl(); + idgenServiceImpl.setCipers(13); // cipers: prefix를 제외한 아이디의 길이 지정 + idgenServiceImpl.setFillChar('0'); // fillChar: 0을 대신하여 표현되는 문자 + idgenServiceImpl.setPrefix("APILOG_"); // prefix: 아이디의 앞에 고정적으로 붙이고자 하는 설정값 지정 + idgenServiceImpl.setTableName("API_LOG_ID"); // tableName - dataSoure 에 설정된 DB에 SEQ 테이블에 tableName 컬럼에 참조할 값 + return idgenServiceImpl; + } } diff --git a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java index 5a56221..74763ca 100644 --- a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java +++ b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java @@ -5,9 +5,11 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.itn.mjonApi.cmn.idgen.service.IdgenService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -38,7 +40,11 @@ public class CertificationInterceptor implements HandlerInterceptor{ @Autowired private LettnLoginLogService lettnLoginLogService; - + + @Resource(name = "apiLog") + private IdgenService idgenApiLogId; + + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -94,7 +100,7 @@ public class CertificationInterceptor implements HandlerInterceptor{ if (lettnLoginLogVO.getUrl().length()>200){ //길이문제로 오류가 발생하는 경우도 처리하도록 수정 lettnLoginLogVO.setUrl(lettnLoginLogVO.getUrl().substring(0,199)); } - + lettnLoginLogVO.setLogId(idgenApiLogId.getNextStringId()); lettnLoginLogService.insert(lettnLoginLogVO); @@ -156,15 +162,16 @@ public class CertificationInterceptor implements HandlerInterceptor{ System.out.println("=====postHandle=4=apikey=="); } - + @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub System.out.println("=====afterCompletion=4=apikey=="); - + } - + + /*모바일접속 유무*/ private boolean isMobile(HttpServletRequest request) { String userAgent = request.getHeader("user-agent"); diff --git a/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java b/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java index 93c07f3..0d2f21f 100644 --- a/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java +++ b/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java @@ -1,6 +1,7 @@ package com.itn.mjonApi.mjon.member.mapper; import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; +import com.itn.mjonApi.mjon.member.mapper.domain.MyMsgVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -10,8 +11,8 @@ import java.util.List; public interface MyMsgMapper { /**/ - List findAll(); + List findAll(); @Select("select * from MJ_MYMSG") - List findAll_2(); + List findAll_2(); } diff --git a/src/main/java/com/itn/mjonApi/mjon/member/mapper/domain/MyMsgVO.java b/src/main/java/com/itn/mjonApi/mjon/member/mapper/domain/MyMsgVO.java new file mode 100644 index 0000000..1b21568 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/mjon/member/mapper/domain/MyMsgVO.java @@ -0,0 +1,33 @@ +package com.itn.mjonApi.mjon.member.mapper.domain; +/* + table : mj_mymsg + comment : '내문자 보관함'; +*/ + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.io.Serializable; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class MyMsgVO implements Serializable { + + + private Integer msgId; /*auto_increment comment '문자 고유아이디' primary key*/ + private String mberId; /*comment '회원 아이디'*/ + private String esntlId; /*null comment '회원고유 아이디'*/ + private String subject; /*null comment '문자 제목'*/ + private String smsTxt; /*null comment '문자 내용'*/ + private String smsLen; /*null comment '문자 길이'*/ + private String atchFileId1; /*null comment '첨부파일번호'*/ + private String atchFileId2; /*null comment '첨부파일번호'*/ + private String atchFileId3; /*null comment '첨부파일번호'*/ + private String regdate; /*null comment '등록일자'*/ + private String msgType; /*default 'S' null comment '문자종류'*/ + +} diff --git a/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java index c68ef2d..0f179ac 100644 --- a/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java @@ -4,6 +4,7 @@ import com.itn.mjonApi.cmn.idgen.service.IdgenService; import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.mjon.member.mapper.MyMsgMapper; import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; +import com.itn.mjonApi.mjon.member.mapper.domain.MyMsgVO; import com.itn.mjonApi.mjon.member.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -21,13 +22,13 @@ public class MemberServiceImpl implements MemberService { @Override public RestResponse findAll() { - List MyMsgListVO = myMsgMapper.findAll(); + List MyMsgListVO = myMsgMapper.findAll(); return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } @Override public RestResponse findAll2() { - List MyMsgListVO = myMsgMapper.findAll_2(); + List MyMsgListVO = myMsgMapper.findAll_2(); return new RestResponse(HttpStatus.OK, "성공", LocalDateTime.now(), MyMsgListVO); } diff --git a/src/main/resources/mapper/log/LettnLoginLog.xml b/src/main/resources/mapper/log/LettnLoginLog.xml index 4f7c0e4..05d5a2f 100644 --- a/src/main/resources/mapper/log/LettnLoginLog.xml +++ b/src/main/resources/mapper/log/LettnLoginLog.xml @@ -47,7 +47,8 @@ INSERT INTO ( ) - SELECT concat('API_',lpad(ifnull(replace(MAX(log_id),'API_',''),0)+1,16,'0')) + VALUE ( + #{logId} , #{conectId} , #{conectIp} , #{userAt} /**A:관리자, U:홈페이지 */ @@ -57,9 +58,7 @@ , #{menuNm} , #{url} , now() - - FROM LETTNLOGINLOG - WHERE log_id LIKE 'API_%' + ) diff --git a/src/main/resources/mapper/member/MyMsgMapper.xml b/src/main/resources/mapper/member/MyMsgMapper.xml index d8515af..202ce55 100644 --- a/src/main/resources/mapper/member/MyMsgMapper.xml +++ b/src/main/resources/mapper/member/MyMsgMapper.xml @@ -5,7 +5,7 @@ - SELECT * FROM MJ_MYMSG From f4d5ed6b0fba9b4733fa24c17a86a068a3ca790e Mon Sep 17 00:00:00 2001 From: hylee Date: Tue, 25 Apr 2023 12:43:52 +0900 Subject: [PATCH 4/8] =?UTF-8?q?refactor:=20API=20LOG=EC=97=90=20LOG=5FID?= =?UTF-8?q?=20=ED=95=84=EB=93=9C=20=EA=B0=92=20IDGEN=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20+=20=EC=A3=BC=EC=84=9D=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itn/mjonApi/cmn/interceptor/CertificationInterceptor.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java index 74763ca..dd0f6b5 100644 --- a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java +++ b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java @@ -100,6 +100,8 @@ public class CertificationInterceptor implements HandlerInterceptor{ if (lettnLoginLogVO.getUrl().length()>200){ //길이문제로 오류가 발생하는 경우도 처리하도록 수정 lettnLoginLogVO.setUrl(lettnLoginLogVO.getUrl().substring(0,199)); } + + // logId :: idgen 사용으로 수정 => 2023-04-25 lettnLoginLogVO.setLogId(idgenApiLogId.getNextStringId()); lettnLoginLogService.insert(lettnLoginLogVO); From da74a5756acc76c83aa5160b4c0cfadb473a9460 Mon Sep 17 00:00:00 2001 From: hylee Date: Tue, 25 Apr 2023 14:18:06 +0900 Subject: [PATCH 5/8] =?UTF-8?q?refactor:=20=ED=95=84=EC=9A=94=20=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itn/mjonApi/cmn/context/ContextIdgen.java | 16 ---------------- .../mjonApi/cmn/idgen/mapper/IdgenMapper.java | 2 -- .../idgen/service/impl/IdgenServiceImpl.java | 2 +- .../interceptor/CertificationInterceptor.java | 18 +++++++----------- .../mjon/member/mapper/MyMsgMapper.java | 1 - .../member/service/impl/MemberServiceImpl.java | 3 --- 6 files changed, 8 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java b/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java index 79bd12f..7426404 100644 --- a/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java +++ b/src/main/java/com/itn/mjonApi/cmn/context/ContextIdgen.java @@ -16,26 +16,10 @@ import org.springframework.context.annotation.Configuration; * 2023-04-24 hylee 최초 생성 * * - * ==사용 방법== - * - 사용할 class에 아래(예시)와 같이 추가하여 testApi.getNextStringId(); 와 같이 호출하면 됨 - * @Resource(name = "testApi") - * private IdgenService testApi; * */ @Configuration public class ContextIdgen { - /** - * @예시 testApi - * */ - @Bean(name="testApi") - public IdgenServiceImpl testApi(){ - IdgenServiceImpl idgenServiceImpl = new IdgenServiceImpl(); - idgenServiceImpl.setCipers(11); // cipers: prefix를 제외한 아이디의 길이 지정 - idgenServiceImpl.setFillChar('0'); // fillChar: 0을 대신하여 표현되는 문자 - idgenServiceImpl.setPrefix("TESTAPI_ID_"); // prefix: 아이디의 앞에 고정적으로 붙이고자 하는 설정값 지정 - idgenServiceImpl.setTableName("TESTAPI"); // tableName - dataSoure 에 설정된 DB에 SEQ 테이블에 tableName 컬럼에 참조할 값 - return idgenServiceImpl; - } /** * @discription apiLog Ids diff --git a/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java b/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java index 5041e9b..cb6ce02 100644 --- a/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java +++ b/src/main/java/com/itn/mjonApi/cmn/idgen/mapper/IdgenMapper.java @@ -5,8 +5,6 @@ import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; -import java.util.List; - @Mapper public interface IdgenMapper { diff --git a/src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java b/src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java index e09546c..6022d62 100644 --- a/src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/cmn/idgen/service/impl/IdgenServiceImpl.java @@ -56,7 +56,7 @@ public class IdgenServiceImpl implements IdgenService { idgenMapper.save(idgenVO); // nextId 값 만들기 - String nextId = prefixTemp + String.valueOf(idgenVO.getNextId()); + String nextId = prefixTemp + idgenVO.getNextId(); log.info(" userId : [{}]", nextId); return nextId; diff --git a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java index dd0f6b5..f6f0559 100644 --- a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java +++ b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java @@ -1,25 +1,21 @@ package com.itn.mjonApi.cmn.interceptor; //import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO; +import com.itn.mjonApi.cmn.idgen.mapper.domain.LettnLoginLogVO; import com.itn.mjonApi.cmn.idgen.service.IdgenService; +import com.itn.mjonApi.mjon.api.service.AccessKeyService; +import com.itn.mjonApi.mjon.log.service.LettnLoginLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO; -import com.itn.mjonApi.cmn.idgen.mapper.domain.LettnLoginLogVO; -import com.itn.mjonApi.mjon.api.service.AccessKeyService; -import com.itn.mjonApi.mjon.log.service.LettnLoginLogService; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * packageName : com.itn.mjonApi.mjon.send.web diff --git a/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java b/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java index 0d2f21f..9a8bb1d 100644 --- a/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java +++ b/src/main/java/com/itn/mjonApi/mjon/member/mapper/MyMsgMapper.java @@ -1,6 +1,5 @@ package com.itn.mjonApi.mjon.member.mapper; -import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; import com.itn.mjonApi.mjon.member.mapper.domain.MyMsgVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; diff --git a/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java index 0f179ac..ba0abf5 100644 --- a/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/member/service/impl/MemberServiceImpl.java @@ -1,16 +1,13 @@ package com.itn.mjonApi.mjon.member.service.impl; -import com.itn.mjonApi.cmn.idgen.service.IdgenService; import com.itn.mjonApi.cmn.msg.RestResponse; import com.itn.mjonApi.mjon.member.mapper.MyMsgMapper; -import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; import com.itn.mjonApi.mjon.member.mapper.domain.MyMsgVO; import com.itn.mjonApi.mjon.member.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; From e0874a1bdeb6f4989701eef4ecc18557f7d8f83b Mon Sep 17 00:00:00 2001 From: hylee Date: Mon, 8 May 2023 16:01:34 +0900 Subject: [PATCH 6/8] =?UTF-8?q?refactor:=20RestTemplateConfig=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 10 ++- .../cmn/config/RestTemplateConfig.java | 65 +++++++++++++++++++ .../RestTemplateLoggingInterceptor.java | 54 +++++++++++++++ .../mjon/api/web/AccessKeyRestController.java | 15 ++--- 4 files changed, 135 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java create mode 100644 src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLoggingInterceptor.java diff --git a/pom.xml b/pom.xml index 1bc182b..4fa3119 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,15 @@ json-simple 1.1.1 - + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + diff --git a/src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java b/src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java new file mode 100644 index 0000000..91345f1 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java @@ -0,0 +1,65 @@ +package com.itn.mjonApi.cmn.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Configuration; + +/** + * packageName : com.itn.mjonApi.cmn.config + * fileName : RestTemplateConfig + * author : hylee + * date : 2023-05-08 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-05-08 hylee 최초 생성 + */ +@Slf4j +@Configuration +public class RestTemplateConfig { +/* + public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) { + + + + *//*return new RestTemplateBuilder() + // 로깅 인터셉터에서 Stream을 소비하므로 BufferingClientHttpRequestFactory 을 꼭 써야한다. + .requestFactory(() -> new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory())) + // 타임아웃 설정 + .setConnectTimeout(Duration.ofMillis(5000)) // connection-timeout + .setReadTimeout(Duration.ofMillis(5000)) // read-timeout + //메시지 컨버터 추가 + .additionalMessageConverters(new StringHttpMessageConverter(Charset.forName("UTF-8"))) + // 로깅 인터셉터 설정 + .additionalInterceptors(new RestTemplateLoggingInterceptor()) + .build();*//* + + + // Apache HttpComponents + HttpClient httpClient = HttpClientBuilder.create() + .setMaxConnTotal(50)//최대 커넥션 수 + .setMaxConnPerRoute(20) + .build(); //각 호스트(IP와 Port 의 조합)당 커넥션 풀에 생성가능한 커넥션 수 + + HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); + factory.setHttpClient(httpClient); + + RestTemplate restTemplate = restTemplateBuilder +// .requestFactory(() -> factory) + .setReadTimeout(Duration.ofSeconds(5)) // read timeout + .setConnectTimeout(Duration.ofSeconds(5)) // connection timeout + .additionalMessageConverters(new StringHttpMessageConverter(StandardCharsets.UTF_8)) //메시지 컨버터 추가 + .additionalInterceptors(new RestTemplateLoggingInterceptor()) + .build(); + + // 로깅 DEBUG 레벨이 활성화된 경우에만 BufferingClientHttpRequest 사용 + if (log.isDebugEnabled()) { + ClientHttpRequestFactory clientHttpRequestFactory = new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory()); + restTemplate.setRequestFactory(clientHttpRequestFactory); + return restTemplate; + } + return restTemplate; + } +*/ + +} \ No newline at end of file diff --git a/src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLoggingInterceptor.java b/src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLoggingInterceptor.java new file mode 100644 index 0000000..9c54e76 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLoggingInterceptor.java @@ -0,0 +1,54 @@ +package com.itn.mjonApi.cmn.interceptor; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpRequest; +import org.springframework.http.client.ClientHttpRequestExecution; +import org.springframework.http.client.ClientHttpRequestInterceptor; +import org.springframework.http.client.ClientHttpResponse; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.stream.Collectors; + +/** + * packageName : com.itn.mjonApi.cmn.interceptor + * fileName : RestTemplateLoggingInterceptor + * author : hylee + * date : 2023-05-08 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-05-08 hylee 최초 생성 + */ +@Slf4j +public class RestTemplateLoggingInterceptor implements ClientHttpRequestInterceptor { + + @Override + public ClientHttpResponse intercept(HttpRequest req, byte[] body, ClientHttpRequestExecution ex) throws IOException { + final String sessionNumber = makeSessionNumber(); + printRequest(sessionNumber, req, body); + ClientHttpResponse response = ex.execute(req, body); + printResponse(sessionNumber, response); + return response; + } + + private String makeSessionNumber() { + return Integer.toString((int) (Math.random() * 1000000)); + } + + private void printRequest(final String sessionNumber, final HttpRequest req, final byte[] body) { + log.info("[{}] \n URI: {}\n, Method: {}\n, Headers:{}\n, Body:{} \n", + sessionNumber, req.getURI(), req.getMethod(), req.getHeaders(), new String(body, StandardCharsets.UTF_8)); + } + + private void printResponse(final String sessionNumber, final ClientHttpResponse res) throws IOException { + String body = new BufferedReader(new InputStreamReader(res.getBody(), StandardCharsets.UTF_8)).lines() + .collect(Collectors.joining("\n")); + + log.info("[{}] \n Status: {}\n, Headers:{}\n, Body:{}\n ", + sessionNumber, res.getStatusCode(), res.getHeaders(), body); + } +} diff --git a/src/main/java/com/itn/mjonApi/mjon/api/web/AccessKeyRestController.java b/src/main/java/com/itn/mjonApi/mjon/api/web/AccessKeyRestController.java index 45208ec..5389930 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/web/AccessKeyRestController.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/web/AccessKeyRestController.java @@ -1,7 +1,10 @@ package com.itn.mjonApi.mjon.api.web; -import java.time.LocalDateTime; - +import com.itn.mjonApi.cmn.idgen.mapper.domain.SendMsgVO; +import com.itn.mjonApi.cmn.msg.PlainResponse; +import com.itn.mjonApi.cmn.msg.RestResponse; +import com.itn.mjonApi.mjon.api.service.AccessKeyService; +import com.itn.mjonApi.mjon.api.service.AccessTokenService; import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -10,11 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RestController; -import com.itn.mjonApi.cmn.idgen.mapper.domain.SendMsgVO; -import com.itn.mjonApi.cmn.msg.PlainResponse; -import com.itn.mjonApi.cmn.msg.RestResponse; -import com.itn.mjonApi.mjon.api.service.AccessKeyService; -import com.itn.mjonApi.mjon.api.service.AccessTokenService; +import java.time.LocalDateTime; /** * @author User @@ -48,7 +47,7 @@ public class AccessKeyRestController { */ @GetMapping("/api/accessKey/SendMsg") public ResponseEntity apiaccessKeysendMsg( - @ModelAttribute SendMsgVO sendMsgVO + SendMsgVO sendMsgVO ){ //step2.api 처리 //단문 문자 발송 처리 From fa8213b3d703905b0fb85e885bbad12e82c3b118 Mon Sep 17 00:00:00 2001 From: hylee Date: Wed, 10 May 2023 18:24:16 +0900 Subject: [PATCH 7/8] =?UTF-8?q?feat:=20-=20=EB=AC=B8=EC=9E=90=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=A4=91=20,=20-=20S?= =?UTF-8?q?wagger=20UI=203.0.0=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 61 +++--- .../com/itn/mjonApi/MjonApiApplication.java | 1 + .../cmn/config/RestTemplateConfig.java | 48 ++--- .../itn/mjonApi/cmn/config/SwaggerConfig.java | 62 +++++++ .../com/itn/mjonApi/cmn/config/WebConfig.java | 6 +- ...nterceptor.java => CertifInterceptor.java} | 10 +- ...r.java => RestTemplateLogInterceptor.java} | 6 +- .../service/AccessKeyService.java | 2 +- .../service/AccessTokenService.java | 2 +- .../service/impl/AccessKeyServiceImpl.java | 7 +- .../service/impl/AccessTokenServiceImpl.java | 6 +- .../service/mapper/AccessKeyMapper.java | 4 +- .../service/mapper/AccessTokenMapper.java | 3 +- .../web/AccessKeyRestController.java | 6 +- .../api/send/mapper/domain/MjonMsgVO.java | 175 ++++++++++++++++++ .../mjon/api/send/web/SendRestController.java | 90 +++++++++ .../mjon/send/web/SendRestController.java | 20 -- src/main/resources/application-dev.properties | 4 +- .../resources/mapper/api/AccessKeyMapper.xml | 2 +- .../mapper/api/AccessTokenMapper.xml | 2 +- 20 files changed, 417 insertions(+), 100 deletions(-) create mode 100644 src/main/java/com/itn/mjonApi/cmn/config/SwaggerConfig.java rename src/main/java/com/itn/mjonApi/cmn/interceptor/{CertificationInterceptor.java => CertifInterceptor.java} (96%) rename src/main/java/com/itn/mjonApi/cmn/interceptor/{RestTemplateLoggingInterceptor.java => RestTemplateLogInterceptor.java} (88%) rename src/main/java/com/itn/mjonApi/mjon/api/{ => access}/service/AccessKeyService.java (91%) rename src/main/java/com/itn/mjonApi/mjon/api/{ => access}/service/AccessTokenService.java (92%) rename src/main/java/com/itn/mjonApi/mjon/api/{ => access}/service/impl/AccessKeyServiceImpl.java (90%) rename src/main/java/com/itn/mjonApi/mjon/api/{ => access}/service/impl/AccessTokenServiceImpl.java (92%) rename src/main/java/com/itn/mjonApi/mjon/api/{ => access}/service/mapper/AccessKeyMapper.java (76%) rename src/main/java/com/itn/mjonApi/mjon/api/{ => access}/service/mapper/AccessTokenMapper.java (86%) rename src/main/java/com/itn/mjonApi/mjon/api/{ => access}/web/AccessKeyRestController.java (97%) create mode 100644 src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonMsgVO.java create mode 100644 src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java delete mode 100644 src/main/java/com/itn/mjonApi/mjon/send/web/SendRestController.java diff --git a/pom.xml b/pom.xml index 4fa3119..32d1437 100644 --- a/pom.xml +++ b/pom.xml @@ -20,49 +20,45 @@ org.springframework.boot spring-boot-starter-hateoas - 3.0.4 org.springframework.boot spring-boot-starter-web - 3.0.4 org.mybatis.spring.boot mybatis-spring-boot-starter - 3.0.1 + 2.3.0 com.h2database h2 - + org.modelmapper modelmapper - 3.1.1 + 3.1.0 mysql mysql-connector-java - 8.0.32 + 8.0.30 org.projectlombok lombok - 1.18.26 true org.springframework.boot spring-boot-starter-test - 3.0.4 test @@ -71,26 +67,26 @@ test - - - org.springframework.boot - spring-boot-devtools - 3.0.4 + + + org.springframework.boot + spring-boot-devtools + true - - - org.bgee.log4jdbc-log4j2 - log4jdbc-log4j2-jdbc4.1 - 1.16 - - - - - com.googlecode.json-simple - json-simple - 1.1.1 - + + + org.bgee.log4jdbc-log4j2 + log4jdbc-log4j2-jdbc4.1 + 1.16 + + + + + com.googlecode.json-simple + json-simple + 1.1.1 + @@ -98,8 +94,16 @@ httpclient 4.5.13 - - + + io.springfox + springfox-boot-starter + 3.0.0 + + + io.springfox + springfox-swagger-ui + 3.0.0 + @@ -145,3 +149,4 @@ + diff --git a/src/main/java/com/itn/mjonApi/MjonApiApplication.java b/src/main/java/com/itn/mjonApi/MjonApiApplication.java index 1baf7fb..e4ce14a 100644 --- a/src/main/java/com/itn/mjonApi/MjonApiApplication.java +++ b/src/main/java/com/itn/mjonApi/MjonApiApplication.java @@ -10,6 +10,7 @@ public class MjonApiApplication { SpringApplication.run(MjonApiApplication.class, args); } + } diff --git a/src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java b/src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java index 91345f1..1d8ab03 100644 --- a/src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java +++ b/src/main/java/com/itn/mjonApi/cmn/config/RestTemplateConfig.java @@ -1,7 +1,22 @@ package com.itn.mjonApi.cmn.config; +import com.itn.mjonApi.cmn.interceptor.RestTemplateLogInterceptor; import lombok.extern.slf4j.Slf4j; +import org.apache.http.client.HttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.BufferingClientHttpRequestFactory; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.web.client.RestTemplate; + +import java.nio.charset.StandardCharsets; +import java.time.Duration; /** * packageName : com.itn.mjonApi.cmn.config @@ -17,24 +32,13 @@ import org.springframework.context.annotation.Configuration; @Slf4j @Configuration public class RestTemplateConfig { -/* + + @Value("${api.root.url}") + private String rootUrl; + + @Bean public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) { - - - *//*return new RestTemplateBuilder() - // 로깅 인터셉터에서 Stream을 소비하므로 BufferingClientHttpRequestFactory 을 꼭 써야한다. - .requestFactory(() -> new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory())) - // 타임아웃 설정 - .setConnectTimeout(Duration.ofMillis(5000)) // connection-timeout - .setReadTimeout(Duration.ofMillis(5000)) // read-timeout - //메시지 컨버터 추가 - .additionalMessageConverters(new StringHttpMessageConverter(Charset.forName("UTF-8"))) - // 로깅 인터셉터 설정 - .additionalInterceptors(new RestTemplateLoggingInterceptor()) - .build();*//* - - // Apache HttpComponents HttpClient httpClient = HttpClientBuilder.create() .setMaxConnTotal(50)//최대 커넥션 수 @@ -45,21 +49,23 @@ public class RestTemplateConfig { factory.setHttpClient(httpClient); RestTemplate restTemplate = restTemplateBuilder -// .requestFactory(() -> factory) + .requestFactory(() -> factory) + .rootUri(String.format(rootUrl)) .setReadTimeout(Duration.ofSeconds(5)) // read timeout .setConnectTimeout(Duration.ofSeconds(5)) // connection timeout .additionalMessageConverters(new StringHttpMessageConverter(StandardCharsets.UTF_8)) //메시지 컨버터 추가 - .additionalInterceptors(new RestTemplateLoggingInterceptor()) + .additionalInterceptors(new RestTemplateLogInterceptor()) .build(); - // 로깅 DEBUG 레벨이 활성화된 경우에만 BufferingClientHttpRequest 사용 - if (log.isDebugEnabled()) { + // 로깅 레벨에 따라 BufferingClientHttpRequest 사용 +// if (log.isDebugEnabled()) { + if (log.isInfoEnabled()) { ClientHttpRequestFactory clientHttpRequestFactory = new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory()); restTemplate.setRequestFactory(clientHttpRequestFactory); return restTemplate; } return restTemplate; } -*/ + } \ No newline at end of file diff --git a/src/main/java/com/itn/mjonApi/cmn/config/SwaggerConfig.java b/src/main/java/com/itn/mjonApi/cmn/config/SwaggerConfig.java new file mode 100644 index 0000000..e937788 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/cmn/config/SwaggerConfig.java @@ -0,0 +1,62 @@ +package com.itn.mjonApi.cmn.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; + +import java.util.HashSet; +import java.util.Set; + +/** + * packageName : com.itn.mjonApi.cmn.config + * fileName : SwaggerConfig + * author : hylee + * date : 2023-05-10 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-05-10 hylee 최초 생성 + */ +@Configuration +@EnableWebMvc +public class SwaggerConfig { + + + private ApiInfo swaggerInfo() { + return new ApiInfoBuilder().title("munjaon API") + .description("munjaon API Docs").build(); + } + + @Bean + public Docket swaggerApi() { + return new Docket(DocumentationType.SWAGGER_2) + .consumes(getConsumeContentTypes()) + .produces(getProduceContentTypes()) + .apiInfo(swaggerInfo()).select() + .apis(RequestHandlerSelectors.basePackage("com.itn.mjonApi.mjon")) + .paths(PathSelectors.any()) + .build() + .useDefaultResponseMessages(false); + } + + private Set getConsumeContentTypes() { + Set consumes = new HashSet<>(); + consumes.add("application/json;charset=UTF-8"); + consumes.add("application/x-www-form-urlencoded"); + return consumes; + } + + private Set getProduceContentTypes() { + Set produces = new HashSet<>(); + produces.add("application/json;charset=UTF-8"); + return produces; + } + +} 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 51ee0d2..2acf08e 100644 --- a/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java +++ b/src/main/java/com/itn/mjonApi/cmn/config/WebConfig.java @@ -5,7 +5,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import com.itn.mjonApi.cmn.interceptor.CertificationInterceptor; +import com.itn.mjonApi.cmn.interceptor.CertifInterceptor; /** * packageName : com.itn.mjonApi.mjon.send.web @@ -23,8 +23,8 @@ import com.itn.mjonApi.cmn.interceptor.CertificationInterceptor; public class WebConfig implements WebMvcConfigurer { @Bean - public CertificationInterceptor certificationInterceptor(){ - return new CertificationInterceptor(); + public CertifInterceptor certificationInterceptor(){ + return new CertifInterceptor(); } @Override diff --git a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertifInterceptor.java similarity index 96% rename from src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java rename to src/main/java/com/itn/mjonApi/cmn/interceptor/CertifInterceptor.java index f6f0559..8791e4d 100644 --- a/src/main/java/com/itn/mjonApi/cmn/interceptor/CertificationInterceptor.java +++ b/src/main/java/com/itn/mjonApi/cmn/interceptor/CertifInterceptor.java @@ -5,7 +5,7 @@ package com.itn.mjonApi.cmn.interceptor; import com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO; import com.itn.mjonApi.cmn.idgen.mapper.domain.LettnLoginLogVO; import com.itn.mjonApi.cmn.idgen.service.IdgenService; -import com.itn.mjonApi.mjon.api.service.AccessKeyService; +import com.itn.mjonApi.mjon.api.access.service.AccessKeyService; import com.itn.mjonApi.mjon.log.service.LettnLoginLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.context.request.RequestContextHolder; @@ -29,7 +29,7 @@ import javax.servlet.http.HttpServletResponse; * 2023-02-15 hylee 최초 생성 */ //@Component -public class CertificationInterceptor implements HandlerInterceptor{ +public class CertifInterceptor implements HandlerInterceptor{ @Autowired private AccessKeyService accessKeyService; @@ -99,9 +99,9 @@ public class CertificationInterceptor implements HandlerInterceptor{ // logId :: idgen 사용으로 수정 => 2023-04-25 lettnLoginLogVO.setLogId(idgenApiLogId.getNextStringId()); - lettnLoginLogService.insert(lettnLoginLogVO); - - + lettnLoginLogService.insert(lettnLoginLogVO); + + //step0-2.IP 체크 lettnLoginLogVO = lettnLoginLogService.selectIgnoreIpCnt(lettnLoginLogVO); int i_ignoreCnt = lettnLoginLogVO.getCnt(); diff --git a/src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLoggingInterceptor.java b/src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLogInterceptor.java similarity index 88% rename from src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLoggingInterceptor.java rename to src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLogInterceptor.java index 9c54e76..906a927 100644 --- a/src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLoggingInterceptor.java +++ b/src/main/java/com/itn/mjonApi/cmn/interceptor/RestTemplateLogInterceptor.java @@ -24,7 +24,7 @@ import java.util.stream.Collectors; * 2023-05-08 hylee 최초 생성 */ @Slf4j -public class RestTemplateLoggingInterceptor implements ClientHttpRequestInterceptor { +public class RestTemplateLogInterceptor implements ClientHttpRequestInterceptor { @Override public ClientHttpResponse intercept(HttpRequest req, byte[] body, ClientHttpRequestExecution ex) throws IOException { @@ -40,7 +40,7 @@ public class RestTemplateLoggingInterceptor implements ClientHttpRequestIntercep } private void printRequest(final String sessionNumber, final HttpRequest req, final byte[] body) { - log.info("[{}] \n URI: {}\n, Method: {}\n, Headers:{}\n, Body:{} \n", + log.info("\n [[Request]] \n[{}] \n URI: {}\n, Method: {}\n, Headers:{}\n, Body:{} \n", sessionNumber, req.getURI(), req.getMethod(), req.getHeaders(), new String(body, StandardCharsets.UTF_8)); } @@ -48,7 +48,7 @@ public class RestTemplateLoggingInterceptor implements ClientHttpRequestIntercep String body = new BufferedReader(new InputStreamReader(res.getBody(), StandardCharsets.UTF_8)).lines() .collect(Collectors.joining("\n")); - log.info("[{}] \n Status: {}\n, Headers:{}\n, Body:{}\n ", + log.info("\n [[Response]] \n[{}] \n Status: {}\n, Headers:{}\n, Body:{}\n ", sessionNumber, res.getStatusCode(), res.getHeaders(), body); } } diff --git a/src/main/java/com/itn/mjonApi/mjon/api/service/AccessKeyService.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/AccessKeyService.java similarity index 91% rename from src/main/java/com/itn/mjonApi/mjon/api/service/AccessKeyService.java rename to src/main/java/com/itn/mjonApi/mjon/api/access/service/AccessKeyService.java index 833e7ea..3c53ce0 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/service/AccessKeyService.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/AccessKeyService.java @@ -1,4 +1,4 @@ -package com.itn.mjonApi.mjon.api.service; +package com.itn.mjonApi.mjon.api.access.service; import com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO; import com.itn.mjonApi.cmn.msg.RestResponse; diff --git a/src/main/java/com/itn/mjonApi/mjon/api/service/AccessTokenService.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/AccessTokenService.java similarity index 92% rename from src/main/java/com/itn/mjonApi/mjon/api/service/AccessTokenService.java rename to src/main/java/com/itn/mjonApi/mjon/api/access/service/AccessTokenService.java index d0ce0d1..eb7040f 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/service/AccessTokenService.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/AccessTokenService.java @@ -1,4 +1,4 @@ -package com.itn.mjonApi.mjon.api.service; +package com.itn.mjonApi.mjon.api.access.service; import com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO; import com.itn.mjonApi.cmn.msg.RestResponse; diff --git a/src/main/java/com/itn/mjonApi/mjon/api/service/impl/AccessKeyServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessKeyServiceImpl.java similarity index 90% rename from src/main/java/com/itn/mjonApi/mjon/api/service/impl/AccessKeyServiceImpl.java rename to src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessKeyServiceImpl.java index 018f09f..1a06efb 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/service/impl/AccessKeyServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessKeyServiceImpl.java @@ -1,4 +1,4 @@ -package com.itn.mjonApi.mjon.api.service.impl; +package com.itn.mjonApi.mjon.api.access.service.impl; import java.time.LocalDateTime; import java.util.List; @@ -8,10 +8,9 @@ import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import com.itn.mjonApi.cmn.idgen.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.service.AccessKeyService; -import com.itn.mjonApi.mjon.api.service.mapper.AccessKeyMapper; +import com.itn.mjonApi.mjon.api.access.service.AccessKeyService; +import com.itn.mjonApi.mjon.api.access.service.mapper.AccessKeyMapper; @Service public class AccessKeyServiceImpl implements AccessKeyService { diff --git a/src/main/java/com/itn/mjonApi/mjon/api/service/impl/AccessTokenServiceImpl.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessTokenServiceImpl.java similarity index 92% rename from src/main/java/com/itn/mjonApi/mjon/api/service/impl/AccessTokenServiceImpl.java rename to src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessTokenServiceImpl.java index 0669af3..0f5d99a 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/service/impl/AccessTokenServiceImpl.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/impl/AccessTokenServiceImpl.java @@ -1,4 +1,4 @@ -package com.itn.mjonApi.mjon.api.service.impl; +package com.itn.mjonApi.mjon.api.access.service.impl; import java.time.LocalDateTime; import java.util.List; @@ -10,8 +10,8 @@ import org.springframework.stereotype.Service; import com.itn.mjonApi.cmn.idgen.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.service.AccessTokenService; -import com.itn.mjonApi.mjon.api.service.mapper.AccessTokenMapper; +import com.itn.mjonApi.mjon.api.access.service.AccessTokenService; +import com.itn.mjonApi.mjon.api.access.service.mapper.AccessTokenMapper; @Service public class AccessTokenServiceImpl implements AccessTokenService { diff --git a/src/main/java/com/itn/mjonApi/mjon/api/service/mapper/AccessKeyMapper.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/mapper/AccessKeyMapper.java similarity index 76% rename from src/main/java/com/itn/mjonApi/mjon/api/service/mapper/AccessKeyMapper.java rename to src/main/java/com/itn/mjonApi/mjon/api/access/service/mapper/AccessKeyMapper.java index c3c09b6..175337a 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/service/mapper/AccessKeyMapper.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/mapper/AccessKeyMapper.java @@ -1,9 +1,7 @@ -package com.itn.mjonApi.mjon.api.service.mapper; +package com.itn.mjonApi.mjon.api.access.service.mapper; import com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO; -import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; import java.util.List; diff --git a/src/main/java/com/itn/mjonApi/mjon/api/service/mapper/AccessTokenMapper.java b/src/main/java/com/itn/mjonApi/mjon/api/access/service/mapper/AccessTokenMapper.java similarity index 86% rename from src/main/java/com/itn/mjonApi/mjon/api/service/mapper/AccessTokenMapper.java rename to src/main/java/com/itn/mjonApi/mjon/api/access/service/mapper/AccessTokenMapper.java index 9cdef10..69896b0 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/service/mapper/AccessTokenMapper.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/service/mapper/AccessTokenMapper.java @@ -1,9 +1,8 @@ -package com.itn.mjonApi.mjon.api.service.mapper; +package com.itn.mjonApi.mjon.api.access.service.mapper; import com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO; import com.itn.mjonApi.cmn.idgen.mapper.domain.IdgenVO; import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; import java.util.List; diff --git a/src/main/java/com/itn/mjonApi/mjon/api/web/AccessKeyRestController.java b/src/main/java/com/itn/mjonApi/mjon/api/access/web/AccessKeyRestController.java similarity index 97% rename from src/main/java/com/itn/mjonApi/mjon/api/web/AccessKeyRestController.java rename to src/main/java/com/itn/mjonApi/mjon/api/access/web/AccessKeyRestController.java index 5389930..683b3b5 100644 --- a/src/main/java/com/itn/mjonApi/mjon/api/web/AccessKeyRestController.java +++ b/src/main/java/com/itn/mjonApi/mjon/api/access/web/AccessKeyRestController.java @@ -1,10 +1,10 @@ -package com.itn.mjonApi.mjon.api.web; +package com.itn.mjonApi.mjon.api.access.web; import com.itn.mjonApi.cmn.idgen.mapper.domain.SendMsgVO; import com.itn.mjonApi.cmn.msg.PlainResponse; import com.itn.mjonApi.cmn.msg.RestResponse; -import com.itn.mjonApi.mjon.api.service.AccessKeyService; -import com.itn.mjonApi.mjon.api.service.AccessTokenService; +import com.itn.mjonApi.mjon.api.access.service.AccessKeyService; +import com.itn.mjonApi.mjon.api.access.service.AccessTokenService; import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonMsgVO.java b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonMsgVO.java new file mode 100644 index 0000000..22815a1 --- /dev/null +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/mapper/domain/MjonMsgVO.java @@ -0,0 +1,175 @@ +package com.itn.mjonApi.mjon.api.send.mapper.domain; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.io.Serializable; +import java.util.List; + +/** + * packageName : com.itn.mjonApi.mjon.api.send.mapper.domain + * fileName : MjonMsgVO + * author : hylee + * date : 2023-05-09 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-05-09 hylee 최초 생성 + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class MjonMsgVO implements Serializable { + + + private static final long serialVersionUID = 1L; + + private String msgId ;// '문자ID', + private String userId ; // '문자온 일반회원ID', + private String agentFlag ;//'전송사코드(1:아이하트,2:...)', + private String userData; //'(I)사용자 정의 코드(참조용으로 사용되는 것으로 메시지 전송 시에는 사용되지 않는다-문자온/아이하트 참조키용)', + private String msgSeq; // '(I)메시지의 고유번호. 자동 증가하는 것으로 MSG_DATA의 PRIMARY KEY가 된다.', + private String curState; // '상태 값(발송요청:0, 전송 중:1, 전송:2, 결과수신:3)', + private String sentDate; // '메시지를 전송한 시각', + private String rsltDate; // '핸드폰에 전달된 시간 (이통사가 핸드폰이 수신했다고 주장하는 시간)', + private String reportDate; // '레포트 처리한 시간', + private String reqDate; // '예약일시', + private String rsltCode; // '결과처리코드', + private String rsltCode2; // '결과처리 상세코드', + private String rsltNet; // '결과처리 통신사', + private String callTo; // '수신번호 (하이픈 등의 문자를 제외한 12byte이하의 숫자로 입력한다.)', + private String[] callToList; // '수신번호리스트', + private String callFrom; // '발신번호 (하이픈 등의 문자를 제외한 12byte이하의 숫자로 입력한다.)', + private String subject; // 'MMS용 메시지제목', + private String smsTxt; // 'SMS용 메시지본문', + private String smsTxtArea;//문자 작성 화면 본문 내용 + private String msgType; // '메시지의 (4: SMS 전송, 5: URL 전송, 6: MMS전송, 7: BARCODE전송, 8: 카카오 알림톡 전송)', + private String msgKind; // '문자 종류 일반:N, 광고:A, 선거:C', + private String msgPayCode; // '재전송 기능에 의한 최종전송콘텐트 종류 저장', + private String contSeq; // COMMENT 'MMS의 콘텐츠 Key(MMS_CONTENTS_INFO의 CONT_SEQ)', + private String msgTypeResend; // '재전송할 문자 타입. 값이 있으면 재전송. 없으면 단 건 전송', + private String centerSeqResend; // '재전송할 센터. NPro 내부적으로 사용함.', + private String msgNoticetalkSenderKey; // '카카오 알림톡에 등록된 사용자 고유키', + private String msgNoticetalkTmpKey; // '카카오 알림톡에 등록된 문자 템플릿 고유키', + private String msgResendCount; // '첫 번째 전송 값 실패하여 재전송한 카운트.(기본값 : 0, 전송 : 1, 재전송 : 2)', + private String msgResenddate; // '재전송된 시간', + private String sentDatePre; // '이전 메시지를 전송한 시각', + private String rsltDatePre; // '이전 핸드폰에 전달된 시간', + private String reportDatePre; // '이전 레포트 처리한 시간', + private String rsltCodePre; // '이전 결과처리코드', + private String rsltCode2Pre; // '이전 결과처리 상세코드 (결과코드는 아래 표 참조)', + private String rsltNetPre; // '이전 결과처리 통신사', + private String conectMthd; // '접속한 기기(01:웹 , 02:모바일, 03: 애드온모듈)', + private String conectMthdTxt; // '접속한 기기텍스트(01:웹 , 02:모바일, 03: 애드온모듈)', + private String repAgent; // e대표전송사 + private String agentCode; // '전송사(01:아이하트 , ...)', + private String agentCodeTxt; // '전송사텍스트(01:아이하트 , ...)', + private String curStateTxt; // '현제상태텍스트(01:아이하트 , ...)', + private String msgTypeTxt; // '메세지타입(4: SMS 전송, 5: URL 전송, 6: MMS전송, 7: BARCODE전송, 8: 카카오 알림톡 전송)', + private String sentDateTxt; // '전송시간 TXT', + private String searchCondition2; // '조회조건2', + private String searchCondition3; // '조회조건3', + private String searchCondition4; // '조회조건3', + private String searchCondition5; // '조회조건3', + private String delFlag; // '사용자 삭제여부(N:미삭제, Y:삭제)' + private String delFlagTxt; // '사용자 삭제여부 텍스트(N:미삭제, Y:삭제)' + private String mmsSubject; // '메세지 타이틀' + private String fileCnt; // 첨부파일 갯수 + private String fileType1; // '파일 타입1' + private String fileName1; // '파일이름1' + private String fileType2; // '파일 타입2' + private String fileName2; // '파일이름2' + private String fileType3; // '파일 타입3' + private String fileName3; // '파일이름3' + private String msgGroupId; // 전송그룹ID (대량문자의 경우 하나의 그룹으로 세팅) + private String msgGroupCnt; // 전송그룹 카운트 + private String[] imgFilePath; // 그림 이미지 경로 + private String neoType; // 아이엠오 장문, 그림 타입 지정 + private int msgCnt; // 아이엠오 장문, 그림 타입 지정 + private String eachPrice ; // 전송문자 개별가격 + private String totPrice ; // 전송문자 토탈가격 + private String beforeUrl ; //이전 url + private String reserveYn ; //예약문자 여부 + private String reserveCYn ; //예약문자 취소 여부 + private String cancelDate; //예약 취소 일자 + + + private String sendRate; // 전송 배분률 + private float sendRateInfo; // 전송 배분 현황 + + private String ntceBgnde; // 검색일(현시점 범위 검색은 아님) : 04-21 + private String ntceEndde; // 검색일(현시점 범위 검색은 아님) : 04-21 + private String[] imgFileId; //이미지 atchId 배열 + private String[] templateYn; //템플릿 이미지 사용 여부 + + private String divideChk; //분할문자 사용 여부 + private String divideCnt; //분할문자 건수 + private String divideTime; //분할문자 간격 + private String befCash; //문자전송 이전 가지고 있는 캐시 + private String befPoint; //문자전송 이전 가지고 있는 포인트 + private String thisPoint; //문자전송 잔액 있는 포인트 + private String recommId; //추천인 아이디 정보 + + private String[] nameList; // '치환 이름 리스트' + private String[] rep1List; // '치환 문자1 리스트' + private String[] rep2List; // '치환 문자2 리스트' + private String[] rep3List; // '치환 문자3 리스트' + private String[] rep4List; // '치환 문자4 리스트' + + private String startDate, endDate ; //사용자 페이지 날자 조회 + private String maxRegDate; // 최근 등록일자 + private String minRegDate; // 최초 등록일자 + private String regDate; // 등록일자 + private int phoneNumberCnt; + private String phmAuthType; //'인증타입(01:휴대폰번호등록, 02:(일반)유선번호등록 , 03:서류인증요청)', + private String refundYn; //문자전송 실패시 환불처리 완료 여부 + + private String filePath1; //그림이미지1 경로 + private String filePath2; //그림이미지2 경로 + private String filePath3; //그림이미지3 경로 + + private String smiId; //스팸 이용정지 문자 내용 아이디(mj_spam_member_info 테이블) + + private String smishingYn; // 스미싱 의심여부 + + private List dividDay; + + private String userNm; + private String mbtlnum; + private String emailAdres; + private String authorCode; + + private String adminSmsNoticeYn; + private String searchAdminSmsNoticeYn; + private String searchExceptSpamYn; + + private String eventYn; //이벤트 + private String payCnt; //결제수 + private String payPct; //결제율 + + private String spamKeyword; //스팸 키워드 + private String spamMsgGroupId; //스팸문자 문자전송 아이디 + private String spamStatus; //스팸문자 유무 (Y/N) + private String vipYn; //VIP 유무 (Y/N) + private String approvalPnttm; // 승인일자 + private String atchFiles; // 그림문자 파일정보 + + private String reserveType; // 전송완료 : D, 예약전송 : R + private String todayYn; + private String nowDate; + private String msgDiv; // S: 단문, L: 장문, P: 그림 + private Float agentPrice; + + private float smsPrice; // sms 단가 + private float mmsPrice; // mms 단가 + private float kakaoAtPrice; // 카카오 알림톡 단가 + private float kakaoFtPrice; // 카카오 친구톡 단가 + private float kakaoFtImgPrice;// 카카오 이미지 단가 + private float kakaoFtWideImgPrice; // 카카오 와이드 이미지 단가 + + private String txtReplYn; //변환문자 유무 +} 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 new file mode 100644 index 0000000..d91180a --- /dev/null +++ b/src/main/java/com/itn/mjonApi/mjon/api/send/web/SendRestController.java @@ -0,0 +1,90 @@ +package com.itn.mjonApi.mjon.api.send.web; + +import com.itn.mjonApi.mjon.api.send.mapper.domain.MjonMsgVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.servlet.ModelAndView; + +/** + * packageName : com.itn.mjonApi.mjon.send.web + * fileName : SendRestController + * author : hylee + * date : 2023-02-15 + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-02-15 hylee 최초 생성 + */ + + +@Slf4j +@RestController +public class SendRestController { + + private final RestTemplate restTemplate; + + public SendRestController(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + + /** + * + * @param mjonMsgVO + * @Discription 문자 발송 테스트 + * @return + */ + @PostMapping("/api/sendTest") + public Object sendTest(MjonMsgVO mjonMsgVO){ + + return restTemplate.postForEntity( + "/web/user/login/sendMsgDataAjax.do" + ,mjonMsgVO + , Object.class + ); + } + /** + * + * @param mjonMsgVO + * @Discription 스팸문자 테스트 + * @return + */ + @PostMapping("/api/selectSpamTxtChkAjax") + public Object selectSpamTxtChkAjax(MjonMsgVO mjonMsgVO){ + log.info(" :: START/api/selectSpamTxtChkAjax"); + return restTemplate.postForEntity( + "/web/user/login/selectSpamTxtChkAjax.do" + ,mjonMsgVO + , Object.class + ); + } + + + /** + * + * @param mjonMsgVO + * @Discription 리턴 데이터 테스트 + * @return + */ + @PostMapping("/api/returnTest") + public Object returnTest(MjonMsgVO mjonMsgVO){ + + return restTemplate.postForEntity( + "/web/user/login/returnTest.do" + , mjonMsgVO + , Object.class + ); + } + + + + + + + + +} diff --git a/src/main/java/com/itn/mjonApi/mjon/send/web/SendRestController.java b/src/main/java/com/itn/mjonApi/mjon/send/web/SendRestController.java deleted file mode 100644 index c2d21ea..0000000 --- a/src/main/java/com/itn/mjonApi/mjon/send/web/SendRestController.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.itn.mjonApi.mjon.send.web; - -import org.springframework.web.bind.annotation.RestController; - -/** - * packageName : com.itn.mjonApi.mjon.send.web - * fileName : SendRestController - * author : hylee - * date : 2023-02-15 - * description : - * =========================================================== - * DATE AUTHOR NOTE - * ----------------------------------------------------------- - * 2023-02-15 hylee 최초 생성 - */ -@RestController -public class SendRestController { - - -} diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 7d69833..3eefb21 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -10,6 +10,8 @@ spring.datasource.url=jdbc:log4jdbc:mysql://192.168.0.125:3306/mjon?serverTimezo spring.datasource.username=mjonUr spring.datasource.password=mjon!@#$ - server.port=8088 +logging.level.root=info + +api.root.url=http://localhost:8080 \ No newline at end of file diff --git a/src/main/resources/mapper/api/AccessKeyMapper.xml b/src/main/resources/mapper/api/AccessKeyMapper.xml index 1155fdc..8ebd2c7 100644 --- a/src/main/resources/mapper/api/AccessKeyMapper.xml +++ b/src/main/resources/mapper/api/AccessKeyMapper.xml @@ -3,7 +3,7 @@ - + SELECT From 42db3a3d92b92470553753ab75ced8c9d25d2a11 Mon Sep 17 00:00:00 2001 From: hylee Date: Wed, 10 May 2023 18:31:12 +0900 Subject: [PATCH 8/8] =?UTF-8?q?refactor:properties=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-prod.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index a4c95b6..1b4fd3a 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -13,3 +13,6 @@ spring.datasource.password=mjon!@#$ server.port=9100 +logging.level.root=info + +api.root.url=http://localhost:8080