feat: - 문자 발송 테스트 중 , - Swagger UI 3.0.0 적용

This commit is contained in:
hylee 2023-05-10 18:24:16 +09:00
parent e0874a1bde
commit fa8213b3d7
20 changed files with 417 additions and 100 deletions

61
pom.xml
View File

@ -20,49 +20,45 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
<version>3.0.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.0.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.1</version>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<!-- <scope>test</scope>-->
<!-- <scope>test</scope>-->
</dependency>
<!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper -->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>3.1.1</version>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>3.0.4</version>
<scope>test</scope>
</dependency>
<dependency>
@ -71,26 +67,26 @@
<scope>test</scope>
</dependency>
<!-- 수정시 바로 재기동 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>3.0.4</version>
<!-- 수정시 바로 재기동 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- DB Logback -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
<!-- JSON Object -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!-- DB Logback -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
<!-- JSON Object -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
@ -98,8 +94,16 @@
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<build>
@ -145,3 +149,4 @@
</build>
</project>

View File

@ -10,6 +10,7 @@ public class MjonApiApplication {
SpringApplication.run(MjonApiApplication.class, args);
}
}

View File

@ -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;
}
*/
}

View File

@ -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<String> getConsumeContentTypes() {
Set<String> consumes = new HashSet<>();
consumes.add("application/json;charset=UTF-8");
consumes.add("application/x-www-form-urlencoded");
return consumes;
}
private Set<String> getProduceContentTypes() {
Set<String> produces = new HashSet<>();
produces.add("application/json;charset=UTF-8");
return produces;
}
}

View File

@ -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

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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<String> 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; //변환문자 유무
}

View File

@ -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
);
}
}

View File

@ -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 {
}

View File

@ -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

View File

@ -3,7 +3,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itn.mjonApi.mjon.api.service.mapper.AccessKeyMapper">
<mapper namespace="com.itn.mjonApi.mjon.api.access.service.mapper.AccessKeyMapper">
<select id="findAll" resultType="com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO">
SELECT

View File

@ -3,7 +3,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itn.mjonApi.mjon.api.service.mapper.AccessTokenMapper">
<mapper namespace="com.itn.mjonApi.mjon.api.access.service.mapper.AccessTokenMapper">
<select id="findAll" resultType="com.itn.mjonApi.cmn.idgen.mapper.domain.AccessKeyVO">
SELECT