From fa8213b3d703905b0fb85e885bbad12e82c3b118 Mon Sep 17 00:00:00 2001 From: hylee Date: Wed, 10 May 2023 18:24:16 +0900 Subject: [PATCH] =?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