From dd1c0e25636a095045455f475a04f5a469ecdc53 Mon Sep 17 00:00:00 2001 From: limju Date: Thu, 19 Oct 2023 13:16:34 +0900 Subject: [PATCH] fix: KT API DTO fix --- .../xit/biz/kt/service/BizKtMmsService.java | 17 ++++++++- .../xit/biz/kt/service/IBizKtMmsService.java | 4 ++ .../kr/xit/biz/kt/web/BizKtMmsController.java | 11 +++--- .../kr/xit/ens/kt/service/KtMmsService.java | 37 +++++++++++++------ .../kr/xit/ens/kt/web/KtMmsController.java | 4 +- .../main/resources/config/application-ens.yml | 12 ++++-- .../kr/xit/biz/ens/model/kt/KtMmsSendDTO.java | 25 ++++++++++--- 7 files changed, 81 insertions(+), 29 deletions(-) diff --git a/mens-api/src/main/java/kr/xit/biz/kt/service/BizKtMmsService.java b/mens-api/src/main/java/kr/xit/biz/kt/service/BizKtMmsService.java index 45c0cd3..d52bd5a 100644 --- a/mens-api/src/main/java/kr/xit/biz/kt/service/BizKtMmsService.java +++ b/mens-api/src/main/java/kr/xit/biz/kt/service/BizKtMmsService.java @@ -11,6 +11,7 @@ import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtMainSendReqData; import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtMainSendRequest; import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtMsgRsltReqData; import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtMsgRsltRequest; +import kr.xit.biz.ens.model.kt.KtTokenDTO; import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenResponse; import kr.xit.biz.kt.mapper.IBizKtMmsMapper; import kr.xit.core.exception.BizRuntimeException; @@ -20,6 +21,7 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; /** @@ -43,6 +45,9 @@ public class BizKtMmsService extends EgovAbstractServiceImpl implements IBizKtMm private static final String profile = System.getProperty("spring.profiles.active"); private static final int MAX_KT_SEND_CNT = 100; + @Value("${contract.kt.api.callback-url}") + private String CALLBACK_URL; + private final IKtMmsService ktMmsService; private final ICmmEnsCacheService cacheService; private final IBizKtMmsMapper mapper; @@ -95,7 +100,7 @@ public class BizKtMmsService extends EgovAbstractServiceImpl implements IBizKtMm .mmsDtlCnts("db") .docHash("db") .mmsTitle("") - .url("/api/biz/kt/v1/receiveMain?kkk=llll") //distInfoCrtYn - N이면 필수 + .url(CALLBACK_URL) //distInfoCrtYn - N이면 필수 .mmsBinary("") .fileFmat("") .mdn("") @@ -132,6 +137,16 @@ public class BizKtMmsService extends EgovAbstractServiceImpl implements IBizKtMm return ktTokenResponse; } + @Override + public KtCommonResponse cfmToken(final KtTokenDTO.KtTokenConfirmRequest reqDTO) { + //final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode()); + //reqDTO.setServiceCd(ktMnsInfo.get); + //reqDTO.setServiceKey(ktMnsInfo.get); + //CmmEnsUtils.validate(reqDTO); + + return null; + } + @Override public KtCommonResponse messageResult(final KtMnsRequest reqDTO) { diff --git a/mens-api/src/main/java/kr/xit/biz/kt/service/IBizKtMmsService.java b/mens-api/src/main/java/kr/xit/biz/kt/service/IBizKtMmsService.java index 57c3ca0..5095427 100644 --- a/mens-api/src/main/java/kr/xit/biz/kt/service/IBizKtMmsService.java +++ b/mens-api/src/main/java/kr/xit/biz/kt/service/IBizKtMmsService.java @@ -3,6 +3,7 @@ package kr.xit.biz.kt.service; import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; import kr.xit.biz.ens.model.kt.KtCommonDTO.KtMnsRequest; +import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenConfirmRequest; import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenResponse; @@ -25,6 +26,9 @@ public interface IBizKtMmsService { KtTokenResponse requestToken(final KtMnsRequest paramDTO); KtCommonResponse mainSend(final KtMnsRequest reqDTO); + + KtCommonResponse cfmToken(final KtTokenConfirmRequest reqDTO); + KtCommonResponse messageResult(final KtMnsRequest reqDTO); // KtCommonResponse beforeSend(final KtBefSendRequest reqDTO); diff --git a/mens-api/src/main/java/kr/xit/biz/kt/web/BizKtMmsController.java b/mens-api/src/main/java/kr/xit/biz/kt/web/BizKtMmsController.java index a28106b..f59443f 100644 --- a/mens-api/src/main/java/kr/xit/biz/kt/web/BizKtMmsController.java +++ b/mens-api/src/main/java/kr/xit/biz/kt/web/BizKtMmsController.java @@ -4,9 +4,9 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.tags.Tag; -import java.util.Map; import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; import kr.xit.biz.ens.model.kt.KtCommonDTO.KtMnsRequest; +import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenConfirmRequest; import kr.xit.biz.kt.service.IBizKtMmsService; import kr.xit.core.model.ApiResponseDTO; import lombok.RequiredArgsConstructor; @@ -113,10 +113,11 @@ public class BizKtMmsController { - @Operation(summary = "본문자 수신", description = "본문자 수신") - @PostMapping(value = "/receiveMain", produces = MediaType.APPLICATION_JSON_VALUE) - public void requestToken(@RequestBody final Map paramMap) { - log.debug("{}", paramMap); + @Operation(summary = "토큰인증확인 조회", description = "토큰인증확인조회요청(BC-AG-SN-008)") + @PostMapping(value = "/cfmToken", produces = MediaType.APPLICATION_JSON_VALUE) + public ApiResponseDTO cfmToken(@RequestBody final KtTokenConfirmRequest reqDTO) { + KtCommonResponse dto = service.cfmToken(reqDTO); + return ApiResponseDTO.success(dto); } diff --git a/mens-api/src/main/java/kr/xit/ens/kt/service/KtMmsService.java b/mens-api/src/main/java/kr/xit/ens/kt/service/KtMmsService.java index 19f86b6..823c1e1 100644 --- a/mens-api/src/main/java/kr/xit/ens/kt/service/KtMmsService.java +++ b/mens-api/src/main/java/kr/xit/ens/kt/service/KtMmsService.java @@ -62,27 +62,19 @@ import org.springframework.stereotype.Service; public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsService { @Value("${contract.kt.host}") private String HOST; - + //----------------------------------------------------------------- + // mens 사용 API + //----------------------------------------------------------------- /** * 토큰발행 */ @Value("${contract.kt.api.generate-token}") private String API_GENERATE_TOKEN; - /** - * 사전문자수신등록 : BC-AG-SN-001 - */ - @Value("${contract.kt.api.before-send}") - private String API_BEFORE_SEND; /** * 본문자수신등록 : BC-AG-SN-002 */ @Value("${contract.kt.api.main-send}") private String API_MAIN_SEND; - /** - * 수신거부등록 : BC-AG-SN-007 - */ - @Value("${contract.kt.api.blacklist}") - private String API_BLACKLIST; /** * 토큰인증확인조회 : BC-AG-SN-008 */ @@ -98,6 +90,28 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi */ @Value("${contract.kt.api.result-message}") private String API_RESULT_MESSAGE; + /** + * 본문자 수신 등록 요청 callback URL + */ + @Value("${contract.kt.api.callback-url}") + private String CALLBACK_URL; + //----------------------------------------------------------- + + + + //----------------------------------------------------------------- + // mens 미사용 API + //----------------------------------------------------------------- + /** + * 사전문자수신등록 : BC-AG-SN-001 + */ + @Value("${contract.kt.api.before-send}") + private String API_BEFORE_SEND; + /** + * 수신거부등록 : BC-AG-SN-007 + */ + @Value("${contract.kt.api.blacklist}") + private String API_BLACKLIST; /** * 백오피스발송통계연계조회 : BC-AG-SN-011 */ @@ -150,6 +164,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi private String API_APPROVE_RCV; private final ApiWebClientUtil webClient; + //----------------------------------------------------------- //------------------------------------------------------------------------------ diff --git a/mens-api/src/main/java/kr/xit/ens/kt/web/KtMmsController.java b/mens-api/src/main/java/kr/xit/ens/kt/web/KtMmsController.java index 1fc329e..cf6aec8 100644 --- a/mens-api/src/main/java/kr/xit/ens/kt/web/KtMmsController.java +++ b/mens-api/src/main/java/kr/xit/ens/kt/web/KtMmsController.java @@ -66,7 +66,7 @@ public class KtMmsController { return ApiResponseDTO.success(service.requestToken(paramDTO)); } - @Operation(summary = "본문자 수신 등록 요청(BC-AG-SN-002)", description = "본문자 수신 등록 요청(BC-AG-SN-002)") + @Operation(summary = "본문자 수신 등록 요청(BC-AG-SN-002) -> 업무(Biz)단 API 사용", description = "본문자 수신 등록 요청(BC-AG-SN-002) -> bulk처리를 위해 업무단의 API를 사용하여야 함") @PostMapping(value = "/mainSend", produces = MediaType.APPLICATION_JSON_VALUE) public ApiResponseDTO mainSend(@RequestBody final KtMainSendRequest reqDTO) { KtCommonResponse dto = service.mainSend(reqDTO); @@ -87,7 +87,7 @@ public class KtMmsController { return ApiResponseDTO.success(dto); } - @Operation(summary = "사전/본 문자 발송/수신 결과 전송 요청(BC-AG-SN-010)", description = "사전/본 문자 발송/수신 결과 전송 요청(BC-AG-SN-010)") + @Operation(summary = "사전/본 문자 발송/수신 결과 전송 요청(BC-AG-SN-010) -> 업무(Biz)단 API 사용", description = "사전/본 문자 발송/수신 결과 전송 요청(BC-AG-SN-010) -> bulk처리를 위해 업무단의 API를 사용하여야 함") @PostMapping(value = "/messageResult", produces = MediaType.APPLICATION_JSON_VALUE) public ApiResponseDTO messageResult(@RequestBody final KtMsgRsltRequest reqDTO) { KtCommonResponse dto = service.messageResult(reqDTO); diff --git a/mens-api/src/main/resources/config/application-ens.yml b/mens-api/src/main/resources/config/application-ens.yml index 798009f..8a507c7 100644 --- a/mens-api/src/main/resources/config/application-ens.yml +++ b/mens-api/src/main/resources/config/application-ens.yml @@ -48,18 +48,21 @@ contract: api: # 토큰발행 generate-token: /oauth/token - # 사전문자수신등록 : BC-AG-SN-001 - before-send: /api/message/before/send # 본문자수신등록 : BC-AG-SN-002 main-send: /api/message/main/send - # 수신거부등록 : BC-AG-SN-007 - blacklist: /api/blacklist # 토큰인증확인조회 : BC-AG-SN-008 cfm-token: /api/message/token # 토큰열람확인결과전송 : BC-AG-SN-009 read-token: /api/message/token # 사전/본 문자 발송/수신 결과 전송 : BC-AG-SN-010 result-message: /api/ag/message/result + # 토큰인증확인 : 본문자수신등록 callback url + callback-url: http://211.119.124.7:8081/api/biz/kt/v1/cfmToken + + # 사전문자수신등록 : BC-AG-SN-001 + before-send: /api/message/before/send + # 수신거부등록 : BC-AG-SN-007 + blacklist: /api/blacklist # 백오피스발송통계연계조회 : BC-AG-SN-011 send-sttc: /api/sndsttc # 백오피스발송결과연계조회 : BC-AG-SN-012 @@ -81,6 +84,7 @@ contract: refuse-rcv: http://localhost:8081/api/ens/kt/v1/receive/refuse # 수신동의상태전송 : BC-AG-SN-015 approve-rcv: http://localhost:8081/api/ens/kt/v1/receive/approve + pplus: host: https://t.postplus.co.kr api: diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsSendDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsSendDTO.java index 355244e..1cf315d 100644 --- a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsSendDTO.java +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsSendDTO.java @@ -17,6 +17,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; import lombok.experimental.SuperBuilder; import org.hibernate.validator.constraints.NotEmpty; @@ -522,7 +523,7 @@ public class KtMmsSendDTO { */ @Schema(requiredMode = RequiredMode.AUTO, title = "메세지발송구분", example = "1") @Size(min = 1, max = 1, message = "메세지발송구분은 1자리 입니다.") - private String optType; + private final String optType = "1"; /** *
@@ -705,7 +706,7 @@ public class KtMmsSendDTO {
          * 단, 유통정보미생성여부가 'Y'인 경우 {#RCVE_RF_STR} 문자열만 체크.
          * 
*/ - @Schema(requiredMode = RequiredMode.REQUIRED, title = "MMS 상세내용", example = "공공알림문자 테스트입니다.") + @Schema(requiredMode = RequiredMode.REQUIRED, title = "MMS 상세내용", example = "{#INFO_CFRM_STR}, {#RCVE_RF_STR}") @Size(min = 1, max = 4000, message = "MMS 상세내용은 4000자를 넘을 수 없습니다.") private String mmsDtlCnts; @@ -727,14 +728,26 @@ public class KtMmsSendDTO { @Size(max = 40, message = "MMS 제목은 40자를 넘을 수 없습니다") private String mmsTitle; + /** + *
+         * RCS 상세내용 : max 4000 - RCS|Binary 전송시 필수
+         * RCS 메시지 fallback 시 mms_dtl_cnts를 사용하며
+         * RCS title은 mms_title 항목을 함께 사용한다.
+         * 
+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "RCS 상세내용", example = " ") + @Size(max = 4000, message = "RCS 상세내용은 4000자를 넘을 수 없습니다.") + private String rcsDtlCnts; + /** *
          * 연결 URL : max 1000
          * dist_info_crt_yn의 값이 'Y'가 아닌 경우 필수
          * 
*/ - @Schema(requiredMode = RequiredMode.AUTO, title = "연결 URL", example = "http://localhost:8081/api/biz/kt/v1/receiveMain") + @Schema(requiredMode = RequiredMode.AUTO, title = "연결 URL", example = "http://localhost:8081/api/biz/kt/v1/cfmToken") @Size(max = 1000, message = "연결 URL은 1000자를 넘을 수 없습니다.") + @Setter private String url; /** @@ -773,7 +786,7 @@ public class KtMmsSendDTO { * N Or NULL인 경우 안내문확인하기 문구 및 URL이 표기 * */ - @Schema(requiredMode = RequiredMode.AUTO, title = "유통정보 미생성 여부", example = " ") + @Schema(requiredMode = RequiredMode.AUTO, title = "유통정보 미생성 여부", example = "N") @Size(max = 1, message = "유통정보 미생성 여부는 1(Y|N)자 입니다.") private String distInfoCrtYn; @@ -786,7 +799,7 @@ public class KtMmsSendDTO { * RCS 버튼명 사용이 가능(한글은 최대 17자 권고) * */ - @Schema(requiredMode = RequiredMode.AUTO, title = "안내문 확인하기 치환문구", example = " ") + @Schema(requiredMode = RequiredMode.AUTO, title = "안내문 확인하기 치환문구", example = "○ 안내문 확인하기 : ") @Size(max = 50, message = "안내문 확인하기 치환문구는 50자를 넘을 수 없습니다.") private String infoCfrmStr; @@ -799,7 +812,7 @@ public class KtMmsSendDTO { * RCS 버튼명 사용이 가능(한글은 최대 17자 권고) * */ - @Schema(requiredMode = RequiredMode.AUTO, title = "수신거부 및 수신 휴대폰 지정하기 치환문구", example = " ○ 수신거부 및 수신 휴대폰 지정하기 :") + @Schema(requiredMode = RequiredMode.AUTO, title = "수신거부 및 수신 휴대폰 지정하기 치환문구", example = "○ 수신거부 및 수신 휴대폰 지정하기 : ") @Size(max = 50, message = "수신거부 및 수신 휴대폰 지정하기 치환문구는 50자를 넘을 수 없습니다.") private String rcveRfStr; }