diff --git a/mens-api/src/main/java/kr/xit/ens/kt/service/IKtMmsService.java b/mens-api/src/main/java/kr/xit/ens/kt/service/IKtMmsService.java index 3451765..41ba7f5 100644 --- a/mens-api/src/main/java/kr/xit/ens/kt/service/IKtMmsService.java +++ b/mens-api/src/main/java/kr/xit/ens/kt/service/IKtMmsService.java @@ -1,8 +1,11 @@ package kr.xit.ens.kt.service; -import kr.xit.biz.ens.model.kt.KtMmsDTO.KtTokenRequest; -import kr.xit.biz.ens.model.kt.KtMmsDTO.KtTokenResponse; +import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; +import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtBefSendRequest; +import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenRequest; +import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenResponse; + /** *
@@ -22,4 +25,5 @@ import kr.xit.biz.ens.model.kt.KtMmsDTO.KtTokenResponse; public interface IKtMmsService { KtTokenResponse requestToken(final KtTokenRequest reqDTO); + KtCommonResponse beforeSend(final KtBefSendRequest reqDTO); } 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 3b7b981..6b92309 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 @@ -1,9 +1,18 @@ package kr.xit.ens.kt.service; -import kr.xit.biz.ens.model.kt.KtMmsDTO.KtTokenRequest; -import kr.xit.biz.ens.model.kt.KtMmsDTO.KtTokenResponse; +import java.util.ArrayList; +import java.util.List; +import kr.xit.biz.ens.model.kt.KtCommonDTO.ErrorMsg; +import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; +import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtBefSendRequest; +import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenRequest; +import kr.xit.biz.ens.model.kt.KtTokenDTO.KtTokenResponse; +import kr.xit.core.spring.util.ApiWebClientUtil; +import kr.xit.core.support.utils.DateUtils; import kr.xit.ens.cmm.CmmEnsUtils; +import lombok.RequiredArgsConstructor; import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; /** @@ -21,12 +30,83 @@ import org.springframework.stereotype.Service; * **/ +@RequiredArgsConstructor @Service public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsService { + @Value("${contract.kt.host}") + private String HOST; + @Value("${contract.kt.api.generate-token}") + private String API_GENERATE_TOKEN; + + private static final String AUTH_TYPE_BEARER = "Bearer"; + + private final ApiWebClientUtil webClient; @Override public KtTokenResponse requestToken(final KtTokenRequest reqDTO) { CmmEnsUtils.validate(reqDTO); + + return KtTokenResponse.builder() + .accessToken("eyJhbGciOiJSUzI1NiIsI…") + .expiresIn("7776000") + .scope("ag.api") + .jti("67410d77-0064-4694-9da9..") + .error("sjj") + .errorDescription("jjjjjjj") + .build(); + + +// return KtCommonResponse.builder() +// .resultCd("00") +// .resultDt(DateUtils.getTodayAndNowTime("yyyyMMddHHmmss")) +// //.errors(errors) +// .build(); +/* + String jsonStr = "{\"client_id\":\"" + "clientId" + "\",\"client_secret\":\"" + "clientSecret" + "\"}"; + + + final Map
+ * description : KT 유통증명서 DTO + * - 유통증명서 발급(BC-AG-SM-001) + * Request : {@link KtAcmdCerfRequest} + * Response : {@link KtAcmdCerfResponse} + * - 전자문서 유통정보 수치조회(BC-AG-HS-001) + * Request : {@link KtAcmdInfoRequest} + * Response : {@link KtAcmdInfoResponse} + * - 전자문서 유통정보 수치 확인서 발급(BC-AG-HS-002) + * Request : {@link KtAcmdInfoCfmRequest} + * Response : {@link KtAcmdInfoCfmResponse} + * packageName : kr.xit.biz.ens.model.kt + * fileName : KtInputDTO + * author : limju + * date : 2023-09-26 + * ====================================================================== + * 변경일 변경자 변경 내용 + * ---------------------------------------------------------------------- + * 2023-09-26 limju 최초 생성 + * + *+ */ +public class KtAcmdDTO { + //------------------------------------------------------------------- + // 유통증명서 발급 : BC-AG-SM-001 + // Request : KtAcmdCerfRequest + // Response : KtAcmdCerfResponse + //------------------------------------------------------------------- + @Schema(name = "KtAcmdCerfRequest", description = "KT 유통증명서 발급 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtAcmdCerfRequest { + /** + *
+ * 발급요청구분 - 필수 : 1자리 + * 1: 요청, 2: 발급 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발급유청구분", example = " ") + @Size(min = 1, max = 1, message = "발급요청구분은 필수 입니다(1|2)") + private String reqDvcd; + + /** + *
+ * 서비스코드 : 필수 - 10 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @Size(min = 1, max = 10, message = "서비스코드는 필수 입니다(max:10)") + private String serviceCd; + + /** + *
+ * 서비스 코드 인증키 : 필수 - 8 자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스 코드 인증키", example = " ") + @Size(min = 1, max = 8, message = "서비스 코드 인증키는 필수 입니다(max:8)") + private String serviceKey; + + /** + *
+ * 관리키 : 필수 - max 50 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "관리키", example = " ") + @Size(min = 1, max = 50, message = "관리키는 필수 입니다(max:50)") + private String srcKey; + + /** + *
+ * 발급요청사요 : max 200 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발급요청사유", example = " ") + @Size(max = 200, message = "발급요청사유는 200자를 넘을수 없습니다.") + private String issReqRsn; + } + + @Schema(name = "KtAcmdCerfResponse", description = "KT 유통증명서 발급 요청 결과 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtAcmdCerfResponse extends KtCommonResponse { + /** + *
+ * 발급상태 : 성공시 필수 - 1 + * 1: 요청 + * 2: 발급완료(통신사발급완료) + * 3: 발급완료(기관발급완료) + * 4: 발급실패 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발급상태") + @Size(min = 1, max = 1) + private String issCls; + + /** + *
+ * 발급실패 메세지 : max 255 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발급실패 메시지") + @Size(max = 255) + private String issResultMsg; + + /** + *
+ * 유통증명서파일명 : max 100 + * iss_cls상태값이 '2'일 때 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "유통증명서파일명", example = " ") + @Size(max = 100) + private String fileName; + + /** + *
+ * 유통증명서 파일의 binary 값 : 가변 + * iss_cls상태값이 '2'일 때 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "유통증명서 파일의 binary 값", example = " ") + private String fileBinary; + } + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // 전자문서 유통정보 수치조회 : BC-AG-HS-001 + // Request : KtAcmdInfoRequest + // Response : KtAcmdInfoResponse + //------------------------------------------------------------------- + @Schema(name = "KtAcmdInfoRequest", description = "KT 전자문서 유통정보 수치조회 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtAcmdInfoRequest { + /** + *
+ * 서비스코드 : 필수 - 5 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @Size(min = 1, max = 5, message = "서비스코드는 필수 입니다(max:5)") + private String serviceCd; + + /** + *
+ * 연월 : 필수 - 7 + * 조회대상 월 (yyyy-mm 형식) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "연월", example = " ") + @Size(min = 7, max = 7, message = "연월은 필수 입니다(YYYY-MM)") + private String period; + } + + @Schema(name = "KtAcmdInfoResponse", description = "KT 전자문서 유통정보 수치조회 요청 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtAcmdInfoResponse extends KtCommonResponse { + @Schema(requiredMode = RequiredMode.AUTO) + @Valid + private List
+ * 모바일사업자구분 : 필수 - 2자리 + * 발송 통신사 구분(01:KT, 02:SKT, 03:LGT) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "통신사구분코드") + @Size(min = 2, max = 2) + @JsonProperty("mbl_bzowr_dvcd") + private String mblBzowrDvcd; + + /** + *
+ * 통계집계일 : 필수 - 10자리 + * YYYY-MM-DD + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "통계집계일") + @Size(min = 10, max = 10) + private String date; + + /** + * 송신건수 : 필수 - 8자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "송신건수") + @Digits(integer = 8, fraction = 0) + private Integer sendCount; + + /** + * 송신건수 : 필수 - 8자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "송신건수") + @Digits(integer = 8, fraction = 0) + private Integer recvCount; + + /** + * 열람건수 : 필수 - 8자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "열람건수") + @Digits(integer = 8, fraction = 0) + private Integer readCount; + } + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // 전자문서 유통정보 수치 확인서 발급 : BC-AG-HS-002 + // Request : KtAcmdInfoCfmRequest + // Response : KtAcmdInfoCfmResponse + //------------------------------------------------------------------- + @Schema(name = "KtAcmdInfoCfmRequest", description = "KT 전자문서 유통정보 수치 확인서 발급 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtAcmdInfoCfmRequest extends KtAcmdInfoRequest { + /** + *
+ * 발급요청구분 - 필수 : 1자리 + * 1: 요청, 2: 발급 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발급유청구분", example = " ") + @Size(min = 1, max = 1, message = "발급요청구분은 필수 입니다(1|2)") + private String reqDvcd; + } + + @Schema(name = "KtAcmdInfoCfmResponse", description = "KT 전자문서 유통정보 수치 확인서 발급 요청 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtAcmdInfoCfmResponse extends KtCommonResponse { + /** + *
+ * 발급상태 : 성공시 필수 - 1 + * 1: 요청 + * 2: 발급완료 + * 4: 발급실패 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발급상태") + @Size(min = 1, max = 1) + private String issCls; + + /** + *
+ * 발급결과 메세지 : max 255 + * iss_cls=4 일때, 실패 메세지 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발급결과 메시지") + @Size(max = 255) + private String issResultMsg; + + @Schema(requiredMode = RequiredMode.AUTO) + @Valid + private List
+ * 모바일사업자구분 : 필수 - 2자리 + * 발송 통신사 구분(01:KT, 02:SKT, 03:LGT) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "모바일사업자구분") + @Size(min = 2, max = 2) + @JsonProperty("mbl_bzowr_dvcd") + private String mblBzowrDvcd; + + /** + *
+ * 유통증명서파일명 : max 100 + * iss_cls상태값이 '2'일 때 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "유통증명서파일명") + @Size(max = 100) + private String fileName; + + /** + *
+ * 유통증명서 파일의 binary 값 : 가변 + * iss_cls상태값이 '2'일 때 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "유통증명서 파일의 binary 값") + private String fileBinary; + } + //------------------------------------------------------------------- +} diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtCommonDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtCommonDTO.java new file mode 100644 index 0000000..58ad0ec --- /dev/null +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtCommonDTO.java @@ -0,0 +1,128 @@ +package kr.xit.biz.ens.model.kt; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.Size; +import kr.xit.core.model.IApiResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.hibernate.validator.constraints.NotEmpty; + +/** + *
+ * description : KT 공공 알림문자 공통 DTO + * + * packageName : kr.xit.biz.ens.model.kt + * fileName : KtCommonDTO + * author : limju + * date : 2023-09-22 + * ====================================================================== + * 변경일 변경자 변경 내용 + * ---------------------------------------------------------------------- + * 2023-09-22 limju 최초 생성 + * + *+ */ +public class KtCommonDTO { + + @Schema(name = "KtMnsRequest", description = "KT MMS 공통 파라메터 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class KtMnsRequest { + + /** + * 시군구 코드 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "시군구코드", example = "88328") + @NotEmpty(message = "시군구 코드는 필수 입니다") + @Size(max = 10) + private String signguCode; + + /** + * 과태료 코드 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "과태료코드", example = "11") + @NotEmpty(message = "과태료 코드는 필수 입니다") + @Size(max = 2) + private final String ffnlgCode = "11"; + + /** + * 주민Id + */ + @Schema(requiredMode = RequiredMode.AUTO, title = "주민번호", example = " ") + @Size(min = 13, max = 13, message = "주민번호는 13자리 입니다.") + private String juminId; + } + + @Schema(name = "KtCommonResponse", description = "KT 응답 공통 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtCommonResponse implements IApiResponse { + + /** + *
+ * 처리코드 : 2 + * 00 : 정상, 01: 에허 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "처리코드", example = " ") + @Size(min = 2, max = 2) + private String resultCd; + + /** + *
+ * 처리일시 : 14 + * Biz Center 응답 처리 일시(YYYYMMDDHHMISS) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "처리일시", example = " ") + @Size(min = 14, max = 14) + private String resultDt; + + /** + *
+ * 에러내용 + * 처리코드(resultCd) '01' 인 경우 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO) + @Valid + private List
+ * 오류메세지 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED) + @Size(max = 255) + private String errorMsg; + } + +} diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtExcaDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtExcaDTO.java new file mode 100644 index 0000000..a678c95 --- /dev/null +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtExcaDTO.java @@ -0,0 +1,196 @@ +package kr.xit.biz.ens.model.kt; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.Digits; +import javax.validation.constraints.Size; +import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.hibernate.validator.constraints.NotEmpty; + +/** + *
+ * description : KT 공공 알림문자 정산 DTO + * - 기관정산화면연계 토큰인증(BC-AG-SM-002) + * Request : {@link KtTokenExcaRequest} + * Response : {@link KtCommonResponse} + * - 정산연계 자료 조회 : BC-AG-EC-001 + * Request : {@link KtExcaRequest} + * Response : {@link KtExcaResponse} + * packageName : kr.xit.biz.ens.model.kt + * fileName : KtTokenDTO + * author : limju + * date : 2023-09-22 + * ====================================================================== + * 변경일 변경자 변경 내용 + * ---------------------------------------------------------------------- + * 2023-09-22 limju 최초 생성 + * + *+ */ +public class KtExcaDTO { + //---------------------------------------------------------------------------------------- + // 기관정산화면연계 토큰인증 : BC-AG-SM-002 + // Request : KtTokenExcaRequest + // Response : KtCommonResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtTokenExcaRequest", description = "KT 기관정산화면연계 토큰 인증 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtTokenExcaRequest { + /** + *
+ * 엑세스토큰 : 필수 - 100 + * 기관정산화면 호출 시 전달 받은 토큰 + * 1회 인증시 만료처리 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "엑세스토큰", example = " ") + @NotEmpty(message = "엑세스토큰은 필수 입니다(max:100)") + private String accessToken; + } + //------------------------------------------------------------------- + + //---------------------------------------------------------------------------------------- + // 정산연계 자료 조회 : BC-AG-EC-001 + // Request : KtExcaRequest + // Response : KtExcaResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtExcaRequest", description = "KT 정산연계 자료 조회 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtExcaRequest { + /** + *
+ * 정산연월 : 필수 - YYYYMM + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "정산연월", example = " ") + @Size(min = 6, max = 6, message = "정산연월은 필수 입니다(YYYYMM)") + private String yyyymm; + } + + @Schema(name = "KtExcaResponse", description = "KT 정산연계 자료 조회 요청 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtExcaResponse extends KtCommonResponse { + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 정산연월 : 필수 - YYYYMM + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "정산연월") + @Size(min = 6, max = 6) + private String yyyymm; + + /** + *
+ * 서비스코드 : 필수 - 5 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드") + @Size(min = 1, max = 5) + private String serviceCd; + + /** + *
+ * 문서 코드: 필수 - 5 + * 각 기관의 문서코드 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서코드") + @Size(min = 5, max = 5) + private String msgCd; + + /** + *
+ * 통신사구분코드: 필수 - 2 + * 01:KT, 02:SKT, 03:LGT + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "통신사구분코드") + @Size(min = 2, max = 2) + private String mobileGbn; + + /** + *
+ * 발송요청건수: 필수 - 9 + * 정산년월의 기관, 문서별 발송요청 건수 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송요청건수") + @Digits(integer = 9, fraction = 0) + private Integer sndnReqCnt; + + /** + *
+ * 미동의발송건수: 필수 - 9 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "미동의발송건수") + @Digits(integer = 9, fraction = 0) + private Integer notAppBalsongCnt; + + /** + *
+ * 동의발송건수: 필수 - 9 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "동의발송건수") + @Digits(integer = 9, fraction = 0) + private Integer preAppBalsongCnt; + + /** + *
+ * 미동의열람건수: 필수 - 9 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "미동의열람건수") + @Digits(integer = 9, fraction = 0) + private Integer notAppSusinCnt; + + /** + *
+ * 미동의열람건수: 필수 - 9 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "동의열람건수") + @Digits(integer = 9, fraction = 0) + private Integer preAppSusinCnt; + } + //------------------------------------------------------------------- +} diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtInputDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtInputDTO.java new file mode 100644 index 0000000..e0c8740 --- /dev/null +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtInputDTO.java @@ -0,0 +1,183 @@ +package kr.xit.biz.ens.model.kt; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.Size; +import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *
+ * description : KT MMS DTO - KT에 제공해야 하는 API DTO + * - 수신거부상태 전송(BC-AG-SN-014) + * Request : {@link KtRefuseRcvRequest} + * Response : {@link KtCommonResponse} + * - 수신동의상태 전송(BC-AG-SN-015) + * Request : {@link KtApproveRcvRequest} + * Response : {@link KtCommonResponse} + * packageName : kr.xit.biz.ens.model.kt + * fileName : KtInputDTO + * author : limju + * date : 2023-09-26 + * ====================================================================== + * 변경일 변경자 변경 내용 + * ---------------------------------------------------------------------- + * 2023-09-26 limju 최초 생성 + * + *+ */ +public class KtInputDTO { + //------------------------------------------------------------------- + // 수신거부상태 전송 : BC-AG-SN-014 + // Request : KtRefuseRcvRequest + // Response : KtCommonResponse + //------------------------------------------------------------------- + @Schema(name = "KtRefuseRcvRequest", description = "KT 수신거부상태 등록 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtRefuseRcvRequest { + /** + *
+ * 신청일자 : 8(YYYYMMDD) + * 수신거부 등록/해제 발생일자 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "신청일자", example = " ") + @Size(min = 8, max = 8, message = "신청일자는 8자 입니다.") + private String apctDt; + + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 서비스코드 : 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드, 전기관(ALL) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @Size(min = 1, max = 20, message = "서비스코드는 필수 입니다(max:20)") + private String serviceCd; + + /** + *
+ * 개인식별코드(CI) - 필수 : 88자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "개인식별코드", example = " ") + @Size(min = 88, max = 88, message = "개인식별코드(CI)는 필수 입니다(88자리)") + private String ci; + + /** + *
+ * 신청구분 - 필수 : 1자리 + * 0: 해지, 1: 신청 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "신청구분", example = " ") + @Size(min = 1, max = 1, message = "신청구분은 필수 입니다(0|1)") + private String apctAcctCls; + + /** + *
+ * 신청일시 : 14 + * 수신거부 등록/해제 발생일자 (YYYYMMDDhhmmss) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "신청일시", example = " ") + @Size(min = 14, max = 14, message = "신청일시는 14자 입니다.") + private String apctTm; + } + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // 수신동의상태 전송 : BC-AG-SN-015 + // Request : KtApproveRcvRequest + // Response : KtCommonResponse + //------------------------------------------------------------------- + @Schema(name = "KtApproveRcvRequest", description = "KT 수신동의상태 등록 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtApproveRcvRequest { + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 신청일자 : 14(YYYYMMDDHHMISS) + * 수신동의 등록/해제 발생일시 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "신청일시", example = " ") + @Size(min = 8, max = 8, message = "신청일시는 14자 입니다.") + private String apctDt; + + /** + *
+ * 서비스코드 : 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @Size(min = 1, max = 20, message = "서비스코드는 필수 입니다(max:20)") + private String serviceCd; + + /** + *
+ * 개인식별코드(CI) - 필수 : 88자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "개인식별코드", example = " ") + @Size(min = 88, max = 88, message = "개인식별코드(CI)는 필수 입니다(88자리)") + private String ci; + + /** + *
+ * 신청구분 - 필수 : 1자리 + * 0:해지(수신동의 신청상태 해지 처리) + * 1:신청(수신동의 신청) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "신청구분", example = " ") + @Size(min = 1, max = 1, message = "신청구분은 필수 입니다(0|1)") + private String apctAcctCls; + } + //------------------------------------------------------------------- + +} diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsDTO.java index 71c409e..45fe75a 100644 --- a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsDTO.java +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsDTO.java @@ -5,179 +5,463 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.Digits; import javax.validation.constraints.Size; -import kr.xit.core.model.IApiResponse; +import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; import lombok.AllArgsConstructor; import lombok.Builder; -import lombok.Builder.Default; import lombok.Data; +import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.ToString; -import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; /** *
- * description : KT 공공 알림문자 DTO - * + * description : KT 공공 알림 문자 DTO + * - 수신거부등록(BC-AG-SN-007) + * Request : {@link KtBlacklist} + * Response : {@link KtCommonResponse} + * - 백오피스 발송통계 연계 조회(BC-AG-SN-011) + * Request : {@link KtSendSttcRequest} + * Response : {@link KtSendSttcResponse} + * - 백오피스 발송결과 연계 조회(BC-AG-SN-012) + * Request : {@link KtSendSttcDtlRequest} + * Response : {@link KtSendSttcDtlResponse} + * - Whitelist 등록(BC-AG-SN-013) + * Request : {@link KtWhitelistRequest} + * Response : {@link KtCommonResponse} * packageName : kr.xit.biz.ens.model.kt * fileName : KtMmsDTO * author : limju - * date : 2023-09-22 + * date : 2023-09-26 * ====================================================================== * 변경일 변경자 변경 내용 * ---------------------------------------------------------------------- - * 2023-09-22 limju 최초 생성 + * 2023-09-26 limju 최초 생성 * **/ public class KtMmsDTO { + //------------------------------------------------------------------- + // 수신거부등록 : BC-AG-SN-007 + // Request : Blacklist + // Response : KtCommonResponse + //------------------------------------------------------------------- + @Schema(name = "KtBlacklist", description = "KT 수신 거부 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtBlacklist { + /** + *
+ * 서비스코드 : 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @NotEmpty(message = "서비스코드는 필수 입니다(max:20)") + private String serviceCd; + + /** + *
+ * 서비스 코드 인증키 : 필수 - 16 자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스 코드 인증키", example = " ") + @Size(min = 16, max = 16, message = "서비스 코드 인증키는 필수 입니다(16자리)") + private String serviceKey; + + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 개인식별코드(CI) - 필수 : 88자리 + **/ - @Schema(requiredMode = RequiredMode.REQUIRED, title = "시군구코드", example = "88328") - @NotEmpty(message = "시군구 코드는 필수 입니다") - @Size(max = 10) - private String signguCode; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "개인식별코드", example = " ") + @Size(min = 88, max = 88, message = "개인식별코드(CI)는 필수 입니다(88자리)") + private String ci; /** - * 과태료 코드 + *
+ * 신청구분 - 필수 : 1자리 + * 0: 해지, 1: 신청 + **/ - @Schema(requiredMode = RequiredMode.REQUIRED, title = "과태료코드", example = "11") - @NotEmpty(message = "과태료 코드는 필수 입니다") - @Size(max = 2) - private final String ffnlgCode = "11"; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "신청구분", example = " ") + @Size(min = 1, max = 1, message = "신청구분은 필수 입니다(0|1)") + private String apctAcctCls; /** - * 주민Id + *
+ * 신청일시 - 필수 : 14자리(YYYYMMDDHHMISS) + * 수신거부 등록/해지 발생일자 + **/ - @Schema(requiredMode = RequiredMode.AUTO, title = "주민번호", example = " ") - private String juminId; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "신청일시", example = " ") + @Size(min = 14, max = 14, message = "신청일시는 필수 입니다(YYYYMMDDHHMISS)") + private String apctTm; } + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // 백오피스 발송통계 연계 조회 : BC-AG-SN-011 + // Request : KtSendSttcRequest + // Response : KtSendSttcResponse + //------------------------------------------------------------------- - @Schema(name = "KtTokenRequest", description = "KT MMS 토큰발행 요청 DTO") + @Schema(name = "KtSendSttcRequest", description = "KT 백오피스 발송통계 연계 조회 요청 DTO") @Data @NoArgsConstructor @AllArgsConstructor @Builder @JsonInclude(JsonInclude.Include.NON_NULL) - public static class KtTokenRequest { + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtSendSttcRequest { + + /** + *
+ * 발송일자 : 필수(YYYYMMDD) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송일자", example = " ") + @Size(min = 8, max = 8, message = "발송일자는 필수입니다(YYYYMMDD)") + private String balsongDt; + } + + @Schema(name = "KtSendSttcResponse", description = "KT 백오피스 발송통계 연계 조회 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtSendSttcResponse extends KtCommonResponse { + + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 관리키 : 필수 - max 22 + * 통계생성기준 키값(그룹을 구분하기 위함) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "관리키") + @Size(min = 1, max = 22) + private String srcKey; + /** - * 권한부여방식 : 'clinet_credentials' 로 고정 + *
+ * 발송일자 : 필수(YYYYMMDD) + **/ - @Default - @Schema(requiredMode = RequiredMode.REQUIRED, title = "권한부여방식", example = "clinet_credentials") - @NotEmpty(message = "권한부여방식은 필수 입니다") - @Size(max = 100) - private String grantType = "clinet_credentials"; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송일자") + @Size(min = 8, max = 8) + private String balsongDt; /** - * 과태료 코드 + *
+ * 서비스코드 : 필수 - 5 + * BizCenter에서 발행한 기관의 서비스 코드 + **/ - @Schema(requiredMode = RequiredMode.REQUIRED, title = "클라이언트 ID", example = " ") - @NotEmpty(message = "클라이언트 ID는 필수 입니다") - @Size(max = 500) - private String clientId; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드") + @Size(min = 5, max = 5) + private String serviceCd; /** - * 클라이언트 secret + *
+ * 문서 코드: 필수 - 5 + * 각 기관의 문서코드 + **/ - @Schema(requiredMode = RequiredMode.REQUIRED, title = "클라이언트 secret", example = " ") - @NotEmpty(message = "클라이언트 secret는 필수 입니다") - @Size(max = 500) - private String clientSecret; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서코드") + @Size(min = 5, max = 5) + private String msgCd; /** *
- * 접근토큰 권한범위 : ag.api|pf.api + * 통신사구분코드: 필수 - 2 + * 01:KT, 02:SKT, 03:LGT **/ - @Schema(requiredMode = RequiredMode.REQUIRED, title = "권한범위", example = "ag.api") - @NotEmpty(message = "권한범위는 필수 입니다") - @Length(max = 1) - private String scope; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "통신사구분코드") + @Size(min = 2, max = 2) + private String mobileGbn; + + /** + *
+ * 요청건수 : 필수 - max 9 + * 발송일자 + 서비스코드 + 문서코드 별 합 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "요청건수") + @Digits(integer = 9, fraction = 0) + private Integer balsongTotCnt; + + /** + *
+ * 매핑건수 : 필수 - max 9 + * 3개 통신사 사용자인 경우의 건수 + * 각 통신사 별 발송 성공 건수 + * (통신사 사용자로 발송 실패인 경우도 집계가 됨 Ex. 다회선 사용자 등) + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "매핑건수") + @Digits(integer = 9, fraction = 0) + private Integer mapping_cnt; + + /** + *
+ * 동의건수 : 필수 - max 9 + * 기동의 사용자의 건수 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "동의건수") + @Digits(integer = 9, fraction = 0) + private Integer approveCnt; + + /** + *
+ * 발송건수 : 필수 - max 9 + * 각 통신사 별 정상 수신 건수 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송건수") + @Digits(integer = 9, fraction = 0) + private Integer balsongCnt; + + /** + *
+ * 열람건수 : 필수 - max 9 + * 열람한 건수 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "열람건수") + @Digits(integer = 9, fraction = 0) + private Integer susinCnt; } + //------------------------------------------------------------------- - @Schema(name = "KtTokenResponse", description = "KT MMS 토큰발행 요청 결과 DTO") - @ToString + //------------------------------------------------------------------- + // 백오피스 발송결과 연계 조회 : BC-AG-SN-012 + // Request : KtSendSttcDtlRequest + // Response : KtSendSttcDtlResponse + //------------------------------------------------------------------- + @Schema(name = "KtSendSttcDtlRequest", description = "KT 백오피스 발송 결과 연계 조회 요청 DTO") + @Data @NoArgsConstructor @AllArgsConstructor @Builder @JsonInclude(JsonInclude.Include.NON_NULL) @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) - public static class KtTokenResponse implements IApiResponse { - //------------------------------------------------------------------- - // 토큰 발행 성공시 필수 - //------------------------------------------------------------------- + public static class KtSendSttcDtlRequest { + /** - * 접근토큰 : 성공시 필수 + *
+ * 관리키 : 필수 - max 22 + * 통계생성기준 키값(그룹을 구분하기 위함) + **/ - @Schema(requiredMode = RequiredMode.AUTO, title = "접근 토큰", example = " ") - @Size(max = 1000) - private String accessToken; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "관리키", example = "") + @Size(min = 1, max = 22, message = "관리키는 필수입니다(max:22)") + private String srcKey; /** *
- * 접근 토큰 유형 : 성공시 필수 - * bearer 고정 + * 통신사구분코드: 필수 - 2 + * 01:KT, 02:SKT, 03:LGT **/ - @Schema(requiredMode = RequiredMode.AUTO, title = "접근 토큰 유형", example = "bearer") - @Size(max = 100) - private final String tokenType = "bearer"; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "통신사구분코드") + @Size(min = 2, max = 2) + private String mobileGbn; + } + + @Schema(name = "KtSendSttcDtlResponse", description = "KT 백오피스 발송결과 연계 조회 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtSendSttcDtlResponse extends KtCommonResponse { + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 결과코드 : 필수 - 4 + * 발송결과 코드 값 + * 40 MMS/RCS 발송 수신성공 + * 41 MMS발송 메시지 내용 스팸 + * 42 MMS발송 착신자 스팸 + * 43 MMS발송 레포트 수신 시간 만료(메시지전송후 24시간 레포트 못받는 경우 ) + * 47 MMS발송 비가입자, 결번, 서비스정지 + * 48 MMS발송 단말기 전원 꺼짐 + * 49 MMS발송 기타 + * 4A MMS발송 UNKNOWN/단말기형식오류(스팸설정) + * 4D MMS발송 전송 실패(무선망), 단말기 일시정지 + * 4J MMS발송 비가용폰 오류 + * 4N MMS발송 수신거부 + * 4O MMS발송 LMS발송오류(시간초과) + * 4P MMS발송 LMS발송오류(기타) + * 4T MMS발송 가입자미존재(미동의포함) + * 4Q MMS발송 수신대기 + * 4R MMS발송 다회선 제외 + * 4V MMS발송 수신등록 휴대폰번호 미존재 + * 4W MMS발송 기동의 사전문자 제외 + * 50 수신확인 수신성공 + * 60 열람확인 열람확인 (MMS발송결과순번=2, 열람타임스탬프가 있는 경우) + **/ - @Schema(requiredMode = RequiredMode.AUTO, title = "접근 토큰 유효 기간", example = " ") - @Size(max = 100) - private String expiresIn; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "결과코드") + @Size(min = 1, max = 4) + private String balsongRstCd; /** *
- * 접근토큰 권한범위 : 성공시 필수 - * 또는, 실패시 scope에러인 경우 발생 + * 결과메세지 : max 200 + * 발송결과 코드의 메세지 **/ - @Schema(requiredMode = RequiredMode.AUTO, title = "권한범위|scope에러인 경우만 발생", example = "ag.api") - @Size(max = 100) - private String scope; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "결과메세지") + @Size(min = 1, max = 200) + private String balsongRstMsg; /** - * 접근토큰 식별자 : 성공시 필수 + *
+ * 건수 : 필수 - max 9 + *> */ - @Schema(requiredMode = RequiredMode.AUTO, title = "접근토큰 식별자", example = "ag.api") - @Size(max = 100) - private String jtl; - //------------------------------------------------------------------- + @Schema(requiredMode = RequiredMode.REQUIRED, title = "건수") + @Digits(integer = 9, fraction = 0) + private Integer balsongCnt; + } + //------------------------------------------------------------------- + //------------------------------------------------------------------- + // Whitelist 등록 : BC-AG-SN-013 + // Request : KtWhitelistRequest + // Response : KtCommonResponse + //------------------------------------------------------------------- + @Schema(name = "KtWhitelistRequest", description = "KT Whitelist 등록 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtWhitelistRequest { + /** + *
+ * 서비스코드 : 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @NotEmpty(message = "서비스코드는 필수 입니다(max:20)") + private String serviceCd; - //------------------------------------------------------------------- - // 토큰 발행 실패시 필수 - //------------------------------------------------------------------- /** *
- * 접근 토큰 유형 : 성공시 필수 - * bearer 고정 + * 서비스 코드 인증키 : 필수 - 16 자리 **/ - @Schema(requiredMode = RequiredMode.AUTO, title = "에러코드", example = " ") - @Size(max = 100) - private String error; + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스 코드 인증키", example = " ") + @Size(min = 16, max = 16, message = "서비스 코드 인증키는 필수 입니다(16자리)") + private String serviceKey; + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 개인식별코드(CI) - 필수 : 88자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "개인식별코드", example = " ") + @Size(min = 88, max = 88, message = "개인식별코드(CI)는 필수 입니다(88자리)") + private String ci; + + /** + *
+ * 신청구분 - 필수 : 1자리 + * 0: 해지, 1: 신청 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "신청구분", example = " ") + @Size(min = 1, max = 1, message = "신청구분은 필수 입니다(0|1)") + private String apctAcctCls; + + /** + *
+ * 모바일사업자구분 : 필수 - 2자리 + * 발송 통신사 구분(01:KT, 02:SKT, 03:LGT) + * 통신사 구분, 개인휴대전화번호 중 하나는 필수입력 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "통신사구분코드", example = " ") + @Size(min = 2, max = 2, message = "통신사구분코드는 필수 입니다(01|02|03)") + private String mblBzowrDvcd; + + /** + *
+ * 개인휴대전화번호 : 11 자리 + * 통신사 구분, 개인휴대전화번호 중 하나는 필수입력 + **/ - @Schema(requiredMode = RequiredMode.AUTO, title = "에러메세지", example = " ") - @Size(max = 100) - private String error_description; + @Schema(requiredMode = RequiredMode.AUTO, title = "개인휴대전화번호", example = "01011112222") + @Size(min = 11, max = 11, message = "개인 휴대 전화번호는 11자리 입니다") + private String mdn; } + //------------------------------------------------------------------- } 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 new file mode 100644 index 0000000..6a4b292 --- /dev/null +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtMmsSendDTO.java @@ -0,0 +1,1045 @@ +package kr.xit.biz.ens.model.kt; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import java.util.List; +import javax.validation.Valid; +import javax.validation.constraints.Digits; +import javax.validation.constraints.Size; +import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.hibernate.validator.constraints.NotEmpty; + +/** + *
+ * description : KT 공공 알림문자 사전알림문자, 본문자수신 등록 DTO + * - 사전 알림문자 수신 등록(BC-AG-SN-001) + * Request : {@link KtBefSendRequest} + * Response : {@link KtCommonResponse} + * - 본문자 수신 등록(BC-AG-SN-002) + * Request : {@link KtMainSendRequest} + * Response : {@link KtCommonResponse} + * - 사전/본 문자 발송/수신 결과 전송(BC-AG-SN-010) + * - Request : {@link KtMsgRsltRequest} + * - Response : {@link KtCommonResponse} + * packageName : kr.xit.biz.ens.model.kt + * fileName : KtMmsSendDTO + * author : limju + * date : 2023-09-22 + * ====================================================================== + * 변경일 변경자 변경 내용 + * ---------------------------------------------------------------------- + * 2023-09-22 limju 최초 생성 + * + *+ */ +public class KtMmsSendDTO { + //---------------------------------------------------------------------------------------- + // 사전문자 수신 등록 : BC-AG-SN-001 + // Request : KtBefSendRequest + // Response : KtCommonResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtBefSendRequest", description = "사전문자수신(BC-AG-SN-001) 등록 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtBefSendRequest { + //------------------------------------------------------------------- + // 필수 + //------------------------------------------------------------------- + /** + *
+ * 서비스 코드: 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스 코드", example = "NPS") + @NotEmpty(message = "서비스 코드는 필수 입니다(max:20)") + @Size(max = 20) + private String serviceCd; + + /** + *
+ * 서비스 코드: 필수 - 16 + * BizCenter에서 발행한 기관의 서비스 코드 인증키 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = "A3AD41349D759DD3") + @Size(min = 16, max = 16, message = "서비스 코드 인증키는 필수 입니다") + private String serviceKey; + + /** + *
+ * 문서 코드: 필수 - 5 + * 문서코드에 따라 발신번호 Mapping + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서코드", example = "10006") + @Size(min = 5, max = 5, message = "문서 코드는 필수 입니다(max:5)") + private String msgCd; + + /** + *
+ * 문발송 메시지 타입: 필수 - 1 + * RCS/xMS (RCS :1, xMS: 2) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송 메시지 타입", example = "2") + @Size(min = 1, max = 1, message = "발송 메시지 타입은 필수 입니다") + private String msgType; + + /** + *
+ * 발송시작일시: 필수 - 14 + * 메시지 발송 처리 시작일시(YYYYMMDDHHMiSS) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송시작일시", example = "20211229102000") + @Size(min = 14, max = 14, message = "발송시작일시는 필수 입니다") + private String makeDt; + + /** + *
+ * 발송마감시간: 필수 - 14 + * 메시지 발송에 대한 마감시간(YYYYMMDDHHMiSS) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송마감시간", example = "20211229180000") + @Size(min = 14, max = 14, message = "발송마감시간은 필수 입니다") + private String sndnExTime; + + /** + *
+ * 문서종류: 필수 - 3 + * 메시지타입(과금코드) + * 1: LMS + * 2: MMS + * 3: 하이브리드 LMS + * 4: 하이브리드 MMS + * 5: RCS + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서종류", example = "2") + @NotEmpty(message = "문서종류는 필수 입니다(max:3)") + @Size(max = 3) + @JsonProperty("m_type") + private String mType; + + /** + *
+ * 발송요청건수: 필수 - 8 + * 발송메세지의 총 건수 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송요청건수", example = "1") + @Digits(integer = 8, fraction = 0, message = "발송요청건수(max:8)") + private Integer sndnTotCnt; + + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 대행사 코드: max 10 + * msg_type 1(RCS 메세지인 경우)인 경우 필수 + * LG U+에서 사용되며 기관에서 등록한 대행사 코드의 값 default 'lguplus' + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "대행사코드", example = " ") + @Size(max = 10, message = "대행사 코드는 10자를 넘을 수 없습니다.") + private String agencyId; + + /** + *
+ * 부서 코드: max 5 + * 기관에 따른 부서 코드 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "부서코드", example = " ") + @Size(max = 5, message = "부서 코드는 5자를 넘을 수 없습니다.") + private String deptCd; + + /** + *
+ * 발송 번호: max 20 + * 서비스기관 발송전화번호 + * 문서코드 등록시 발신번호 Mapping + * Biz.center 등록시 통신사실증명원 등록(민간) + * + * API에 있는 경우 API 발송 번호를 우선으로 하고, 없는 경우 문서코드 등록시 입력된 발신번호를 사용한다. + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발송번호", example = " ") + @Size(max = 20, message = "서비스기관 발송전화번호는 20자를 넘을 수 없습니다.") + private String sndTelNo; + + /** + *
+ * 메세지발송구분: max 1 + * 2: OPT_OUT 사전문자 + * 6. OPT_OUT 사전문자(마케팅수신동의고객만 발송) + * + * 값이 null인 경우 default 2(OPT_OUT 사전문자)로 P/F 전송 됨 + * 마케팅수신동의값이 'Y'인 경우 opt-type은 '6'으로 보내야 함. + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "메세지발송구분", example = "2") + @Size(min = 1, max = 1, message = "메세지발송구분은 1자리 입니다.") + private String optType; + + /** + *
+ * RCS 브랜드홈 값 : mzx 30 + * msg_type 1(RCS 메시지)인 경우 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "RCS 브랜드홈 값", example = " ") + @Size(max = 30, message = "RCS 브랜드홈 값은 30자를 넘을 수 없습니다.") + private String brandId; + + /** + *
+ * 마케팅 수신 동의 : 1 + * Y|N + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "마케팅수신동의", example = "N") + @Size(min = 1, max = 1, message = "마게팅 수신 동의는 1(Y|N)자 입니다.") + private String mktnRcveCsyn; + + /** + *
+ * 사전문자 본인인증 URL 포함 여부 : 1 + * 타 중계기관(포스토피아)에서 발송 요청인 경우 필수 + * Y : 본인인증 URL 포함, + * N : 미포함 (NULL인 경우 미포함) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "사전문자 본인인증 URL 포함 여부", example = "N") + @Size(min = 1, max = 1, message = "사전문자 본인인증 URL 포함 여부는 1(Y|N)자 입니다.") + private String certificationYn; + + /** + *
+ * 다회선 사용자 처리구분 : 1 + * 1 : 다회선 모두 발송 + * 2 : 다회선 발송 제외(default) (NULL 일경우 동일취급) + * 3 : 다회선 중 임의 1회선 발송 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "다회선 사용자 처리구분", example = "2") + @Size(min = 1, max = 1, message = "다회선 사용자 처리구분은 1(1|2|3)자 입니다.") + private String multiMblPrcType; + + /** + *
+ * 테스트 발송여부 : 1 + * Y : 테스트 발송 (KISA 연동, 통계, 이력 제외) + * N : 실발송(NULL일경우 동일 취급) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "테스트 발송 여부", example = "N") + @Size(min = 1, max = 1, message = "테스트 발송 여부는 1(Y|N)자 입니다.") + private String testSndnYn; + + /** + *
+ * 수신거부해제 여부 : 1 + * Y : 해제 (수신거부 시 수신거부 해제) + * N : 미해제(NULL일경우 동일취급) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수신거부해제 여부", example = "Y") + @Size(min = 1, max = 1, message = "수신거부해제 여부는 1(Y|N)자 입니다.") + private String rcvRfrlYn; + } + + + @Schema(name = "KtBefSendReqData", description = "사전문자수신 등록 요청 reqs DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtBefSendReqData { + //------------------------------------------------------------------- + // 필수 + //------------------------------------------------------------------- + /** + * 관리키 : 고객메시지 건별 Unique key + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "관리키", example = "S20211229102000001") + @NotEmpty(message = "관리키는 필수 입니다(max:50)") + @Size(max = 50) + private String srcKey; + + /** + * 리스트순번 : max 8자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "리스트순번", example = "1") + @NotEmpty(message = "리스트 순번은 필수 입니다(max:8)") + @Size(max = 8) + private String srcSeq; + + /** + * 개인식별코드 : 88 자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "개인식별코드", example = "gdlIa53FZGQz5aKa3wLk33nW57N3mDpcwHytWlWMhzxHKulk7EZs143442394326642342364238648423864237") + @NotEmpty(message = "개인식별코드는 필수 입니다") + @Size(min = 88, max = 88, message = "개인식별코드는 필수 입니다(88자리)") + private String ci; + //------------------------------------------------------------------- + + /** + *
+ * 개인휴대전화번호 : 11 자리 + * 특정 MDN으로 발송할 경우 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "개인휴대전화번호", example = "01011112222") + @Size(min = 11, max = 11, message = "개인 휴대 전화번호는 11자리 입니다") + private String mdn; + + /** + *
+ * 사전문자 본인인증 URL : max 1000 + * 타 중계기관(포스토피아)에서 발송 요청인 경우 필수 + * 사전문자 등록 시 {#INFO_CFRM_STR} 항목이 있는 경우 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "사전문자 본인인증 URL", example = " ") + @Size(max = 1000, message = "사전문자 본인인증 URL은 1000자를 넘을 수 없습니다.") + private String url; + + /** + *
+ * 수신거부 및 수신 휴대폰 지정하기 치환문구 : max 50 + * 수신거부 및 수신 휴대폰 지정하기 예약어로써 API에 추가 될 {#RCVE_RF_STR} 항목에 있는 문구를 치환하여 사용 한다. + * 항목이 NULL인 경우 default로 아래 문구를 사용 한다. + * "○ 수신거부 및 수신 휴대폰 지정하기 : " + * RCS 버튼명 사용이 가능(한글은 최대 17자 권고) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수신거부 및 수신 휴대폰 지정하기 치환문구", example = " ○ 수신거부 및 수신 휴대폰 지정하기 :") + @Size(max = 50, message = "수신거부 및 수신 휴대폰 지정하기 치환문구는 50자를 넘을 수 없습니다.") + private String rcveRfStr; + + /** + *
+ * 안내문 확인하기 치환문구 : max 50 + * 포스토피아 발송건(url 의 값이 있는 경우)에 대해서 + * 안내문 확인하기 예약어로써 API에 추가 될 {#INFO_CFRM_STR} 항목에 있는 문구를 치환 하여 사용 한다. + * 항목이 NULL인 경우 default로 아래 문구를 사용 한다. + * "○ 안내문 확인하기 : " + * RCS 버튼명 사용이 가능(한글은 최대 17자 권고) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "안내문 확인하기 치환문구", example = " ") + @Size(max = 50, message = "안내문 확인하기 치환문구는 50자를 넘을 수 없습니다.") + private String infoCfrmStr; + } + //---------------------------------------------------------------------------------------- + + + //---------------------------------------------------------------------------------------- + // 본문자 수신 등록 : BC-AG-SN-002 + //---------------------------------------------------------------------------------------- + //---------------------------------------------------------------------------------------- + // 본문자 수신 등록 : BC-AG-SN-002 + // Request : KtMainSendRequest + // Response : KtCommonResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtMainSendRequest", description = "본문자수신(BC-AG-SN-002) 등록 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtMainSendRequest { + //------------------------------------------------------------------- + // 필수 + //------------------------------------------------------------------- + /** + *
+ * 서비스 코드: 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스 코드", example = "NPS") + @NotEmpty(message = "서비스 코드는 필수 입니다(max:20)") + @Size(max = 20) + private String serviceCd; + + /** + *
+ * 서비스 코드: 필수 - 16 + * BizCenter에서 발행한 기관의 서비스 코드 인증키 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = "A3AD41349D759DD3") + @Size(min = 16, max = 16, message = "서비스 코드 인증키는 필수 입니다") + private String serviceKey; + + /** + *
+ * 문서 코드: 필수 - 5 + * 문서코드에 따라 발신번호 Mapping + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서코드", example = "10006") + @Size(min = 5, max = 5, message = "문서 코드는 필수 입니다(max:5)") + private String msgCd; + + /** + *
+ * 문발송 메시지 타입: 필수 - 1 + * RCS/xMS (RCS :1, xMS: 2) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송 메시지 타입", example = "2") + @Size(min = 1, max = 1, message = "발송 메시지 타입은 필수 입니다") + private String msgType; + + /** + *
+ * 발송시작일시: 필수 - 14 + * 메시지 발송 처리 시작일시(YYYYMMDDHHMiSS) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송시작일시", example = "20211229102000") + @Size(min = 14, max = 14, message = "발송시작일시는 필수 입니다") + private String makeDt; + + /** + *
+ * 발송마감시간: 필수 - 14 + * 메시지 발송에 대한 마감시간(YYYYMMDDHHMiSS) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송마감시간", example = "20211229180000") + @Size(min = 14, max = 14, message = "발송마감시간은 필수 입니다") + private String sndnExTime; + + /** + *
+ * 열람마감시간: 필수 - 14 + * 문서열람에 대한 마감시간(YYYYMMDDHHMiSS) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "열람마감시간", example = "20211229180000") + @Size(min = 14, max = 14, message = "열람마감시간은 필수 입니다") + private String exTime; + + /** + *
+ * 문서종류: 필수 - 3 + * 메시지타입(과금코드) + * 3: LMS + * 4: MMS + * 6: RCS + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서종류", example = "2") + @NotEmpty(message = "문서종류는 필수 입니다(max:3)") + @Size(max = 3) + @JsonProperty("m_type") + private String mType; + + /** + *
+ * 발송요청건수: 필수 - 8 + * 발송메세지의 총 건수 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송요청건수", example = "1") + @Digits(integer = 8, fraction = 0, message = "발송요청건수(max:8)") + private Integer sndnTotCnt; + + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * 대행사 코드: max 10 + * msg_type 1(RCS 메세지인 경우)인 경우 필수 + * LG U+에서 사용되며 기관에서 등록한 대행사 코드의 값 default 'lguplus' + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "대행사코드", example = " ") + @Size(max = 10, message = "대행사 코드는 10자를 넘을 수 없습니다.") + private String agencyId; + + /** + *
+ * 부서 코드: max 5 + * 기관에 따른 부서 코드 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "부서코드", example = " ") + @Size(max = 5, message = "부서 코드는 5자를 넘을 수 없습니다.") + private String deptCd; + + /** + *
+ * 발송 번호: max 20 + * 문서코드 등록시 발신번호 Mapping + * Biz.center 등록시 통신사실증명원 등록(민간) + * + * API에 있는 경우 API 발송 번호를 우선으로 하고, 없는 경우 문서코드 등록시 입력된 발신번호를 사용한다. + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "발송번호", example = " ") + @Size(max = 20, message = "서비스기관 발송번호는 20자를 넘을 수 없습니다.") + private String sndTelNo; + + /** + *
+ * 메세지발송구분: max 1 + * 3: 하이브리드 + * + * 값이 null인 경우 default 1(OPT_OUT 본문)로 P/F 전송 됨 + * 마케팅수신동의 고객인 경우 5 또는 7 코드를 전송해야 함. + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "메세지발송구분", example = "1") + @Size(min = 1, max = 1, message = "메세지발송구분은 1자리 입니다.") + private String optType; + + /** + *
+ * RCS 브랜드홈 값 : max 30 + * msg_type 1(RCS 메시지)인 경우 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "RCS 브랜드홈 값", example = " ") + @Size(max = 30, message = "RCS 브랜드홈 값은 30자를 넘을 수 없습니다.") + private String brandId; + + /** + *
+ * 토큰확인대체여부 : Y|N + * Y 인경우 본인인증시 열람확인처리 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "토큰확인대체여부", example = " ") + @Size(min = 1, max = 1, message = "토큰확인대체여부는 1자리 입니다(Y|N)") + private String tknRpmtYn; + + /** + *
+ * 열람확인대체여부 : Y|N + * Y 인경우 토큰인증시 열람확인처리 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "열람확인대체여부", example = " ") + @Size(min = 1, max = 1, message = "열람확인대체여부는 1자리 입니다(Y|N)") + private String rdngRpmtYn; + + /** + *
+ * MMS 바이너리 : 가변 - MMS 필수 + * 이미지 등 Binary (용량 : 300KB 이내) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "MMS 바이너리", example = " ") + private String mmsBinary; + + /** + *
+ * MMS 바이너리 파일포맷(확장자) : 10 + * MMS 바이너리 값이 있는 경우 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "MMS 바이너리 파일포맷(확장자)", example = " ") + @Size(max = 10, message = "MMS 바이너리 파일포맷(확장자)은 10자를 넘을 수 없습니다.") + private String fileFmat; + + /** + *
+ * 마케팅 수신 동의 : 1 + * Y : 동의, N : 비동의 (NULL인 경우 비동의 처리) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "마케팅수신동의", example = "N") + @Size(min = 1, max = 1, message = "마게팅 수신 동의는 1(Y|N)자 입니다.") + private String mktnRcveCsyn; + + /** + *
+ * 송신자 플랫폼 ID : max 25 + * 타 중계기관(포스토피아)에서 발송 요청인 경우 필수 + * 송신중계자(포스토피아) 플랫폼 ID + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "송신자 플랫폼 ID", example = " ") + @Size(max = 25, message = "송신자 플랫폼 ID는 25자를 넘을 수 없습니다.") + private String sndPlfmId; + + /** + *
+ * 송신 공인전자주소 : max 100 + * 타 중계기관(포스토피아)에서 발송 요청인 경우 필수 + * 중계자 전자유통정보 등록을 위한 송신 공인전자주소 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "송신 공인전자주소", example = " ") + @Size(max = 100, message = "송신 공인전자주소는 100자를 넘을 수 없습니다.") + private String sndNpost; + + /** + *
+ * 송신일시 : 14(YYYYMMDDHHMISS) + * 타 중계기관(포스토피아)에서 발송 요청인 경우 필수 + * 중계자간의 발송시 유통정보의 송신일시는 송신중계자의 송신일시로 적용 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "송신일시", example = " ") + @Size(min = 14, max = 14, message = "송신일시는 14자 입니다.") + private String sndDate; + + /** + *
+ * 다회선 사용자 처리구분 : 1 + * 1 : 다회선 모두 발송 + * 2 : 다회선 발송 제외(default) (NULL 일경우 동일취급) + * 3 : 다회선 중 임의 1회선 발송 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "다회선 사용자 처리구분", example = "2") + @Size(min = 1, max = 1, message = "다회선 사용자 처리구분은 1(1|2|3)자 입니다.") + private String multiMblPrcType; + + /** + *
+ * 테스트 발송여부 : 1 + * Y : 테스트 발송 (KISA 연동, 통계, 이력 제외) + * N : 실발송(NULL일경우 동일 취급) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "테스트 발송 여부", example = "N") + @Size(min = 1, max = 1, message = "테스트 발송 여부는 1(Y|N)자 입니다.") + private String testSndnYn; + + /** + *
+ * 수신거부해제 여부 : 1 + * Y : 해제 (수신거부 시 수신거부 해제) + * N : 미해제(NULL일경우 동일취급) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수신거부해제 여부", example = "Y") + @Size(min = 1, max = 1, message = "수신거부해제 여부는 1(Y|N)자 입니다.") + private String rcvRfrlYn; + + + /** + *
+ * 재열람 일수 : max 3 + * 값이 있을 경우 발송시작일시+재열람 일수 동안 재열람 + * 값이 없을 경우 열람마감이후 열람 불가 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "재열람 일수", example = " ") + @Size(max = 3, message = "재열람 일수는 3자를 넘을 수 없습니다.") + private String reopenDay; + } + + @Schema(name = "KtMainSendReqData", description = "본문자수신 등록 요청 reqs DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtMainSendReqData { + //------------------------------------------------------------------- + // 필수 + //------------------------------------------------------------------- + /** + * 관리키 : 고객메시지 건별 Unique key + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "관리키", example = "S20211229102000001") + @NotEmpty(message = "관리키는 필수 입니다(max:50)") + @Size(max = 50) + private String srcKey; + + /** + * 리스트순번 : max 8자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "리스트순번", example = "1") + @NotEmpty(message = "리스트 순번은 필수 입니다(max:8)") + @Size(max = 8) + private String srcSeq; + + /** + * 개인식별코드 : 88 자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "개인식별코드", example = "gdlIa53FZGQz5aKa3wLk33nW57N3mDpcwHytWlWMhzxHKulk7EZs143442394326642342364238648423864237") + @Size(min = 88, max = 88, message = "개인식별코드는 필수 입니다(88자리)") + private String ci; + + /** + * MMS 상세내용 : max 4000 + * URL 없음 + * {#INFO_CFRM_STR}, {#RCVE_RF_STR} 문자열이 없는 경우 요청 거부 처리 함. + * 단, 유통정보미생성여부가 'Y'인 경우 {#RCVE_RF_STR} 문자열만 체크. + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "MMS 상세내용", example = "gdlIa53FZGQz5aKa3wLk33nW57N3mDpcwHytWlWMhzxHKulk7EZs143442394326642342364238648423864237") + @Size(min = 1, max = 4000, message = "MMS 상세내용은 4000자를 넘을 수 없습니다.") + private String mmsDtlCnts; + + /** + * 문서해시 : max 100 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서해시", example = "gdlIa53FZGQz5aKa3wLk33nW57N3mDpcwHytWlWMhzxHKulk7EZs143442394326642342364238648423864237") + @Size(min = 1, max = 100, message = "문서해시 100자를 넘을 수 없습니다.") + private String docHash; + //------------------------------------------------------------------- + + /** + *
+ * MMS 제목 : max 40 + * utf-8 한글20자 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "MMS 제목", example = "01011112222") + @Size(max = 40, message = "MMS 제목은 40자를 넘을 수 없습니다") + private String mmsTitle; + + /** + *
+ * 연결 URL : max 1000 + * dist_info_crt_yn의 값이 'Y'가 아닌 경우 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "연결 URL", example = " ") + @Size(max = 1000, message = "연결 URL은 1000자를 넘을 수 없습니다.") + private String url; + + /** + *
+ * MMS 바이너리 : 가변 - MMS 필수 + * 이미지 등 Binary (용량 : 300KB 이내) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "MMS 바이너리", example = " ") + private String mmsBinary; + + /** + *
+ * MMS 바이너리 파일포맷(확장자) : 10 + * MMS 바이너리 값이 있는 경우 필수 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "MMS 바이너리 파일포맷(확장자)", example = " ") + @Size(max = 10, message = "MMS 바이너리 파일포맷(확장자)은 10자를 넘을 수 없습니다.") + private String fileFmat; + + /** + *
+ * 개인휴대전화번호 : 11 자리 + * 특정 MDN으로 발송할 경우 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "개인휴대전화번호", example = "01011112222") + @Size(min = 11, max = 11, message = "개인 휴대 전화번호는 11자리 입니다") + private String mdn; + + /** + *
+ * 유통정보 미생성여부 : Y|N + * Y : 본문자 발송 중 안내문확인하기 문구 및 URL이 표기 되지 않아야 함.(KISA 유통정보 생성 하지 않음) + * N Or NULL인 경우 안내문확인하기 문구 및 URL이 표기 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "유통정보 미생성 여부", example = " ") + @Size(min = 1, max = 1, message = "유통정보 미생성 여부는 1(Y|N)자 입니다.") + private String distInfoCrtYn; + + /** + *
+ * 안내문 확인하기 치환문구 : max 50 + * 안내문 확인하기 예약어로써 API에 추가 될 {#INFO_CFRM_STR} 항목에 있는 문구를 치환 하여 사용 한다. + * 항목이 NULL인 경우 default로 아래 문구를 사용 한다. + * ‘○ 안내문 확인하기 : ‘ + * RCS 버튼명 사용이 가능(한글은 최대 17자 권고) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "안내문 확인하기 치환문구", example = " ") + @Size(max = 50, message = "안내문 확인하기 치환문구는 50자를 넘을 수 없습니다.") + private String infoCfrmStr; + + /** + *
+ * 수신거부 및 수신 휴대폰 지정하기 치환문구 : max 50 + * 수신거부 및 수신 휴대폰 지정하기 예약어로써 API에 추가 될 {#RCVE_RF_STR} 항목에 있는 문구를 치환하여 사용 한다. + * 항목이 NULL인 경우 default로 아래 문구를 사용 한다. + * "○ 수신거부 및 수신 휴대폰 지정하기 : " + * RCS 버튼명 사용이 가능(한글은 최대 17자 권고) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수신거부 및 수신 휴대폰 지정하기 치환문구", example = " ○ 수신거부 및 수신 휴대폰 지정하기 :") + @Size(max = 50, message = "수신거부 및 수신 휴대폰 지정하기 치환문구는 50자를 넘을 수 없습니다.") + private String rcveRfStr; + } + //------------------------------------------------------------------- + + //---------------------------------------------------------------------------------------- + // 사전/본 문자 발송/수신 결과 전송 : BC-AG-SN-010 + // Request : KtMsgRsltRequest + // Response : KtCommonResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtMsgRsltRequest", description = "사전/본 문자 발송/수신 결과 전송 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtMsgRsltRequest { + /** + *
+ * 서비스코드 : 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @NotEmpty(message = "서비스코드는 필수 입니다(max:20)") + private String serviceCd; + + /** + *
+ * 발송 요청 메시지 구분 : 필수 - 0|1 + * 0: 사전문자, 1: 본문자 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송 요청 메시지 구분", example = "1") + @NotEmpty(message = "발송 요청 메시지 구분은 필수 입니다(0|1)") + private String reqMsgTypeDvcd; + + @Schema(requiredMode = RequiredMode.REQUIRED) + @Valid + private List
+ * MMS 발송결과 상태 순번 : 필수 - max 8 + * 1:수신시(결과), 열람시(결과):2 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "MMS 발송결과 상태 순번", example = " ") + @Digits(integer = 8, fraction = 0, message = "MMS 발송결과 상태 순번(1|2)") + private Integer mmsSndgRsltSqno; + + /** + *
+ * 처리일자 : 필수 - 8 + * 이통사 처리일자 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "처리일자", example = " ") + @Size(min = 8, max = 8, message = "처리일자는 필수 입니다(YYYYMMDD)") + private String prcsDt; + + /** + * 문서코드 : 필수 - 5자리 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "문서코드", example = "S20211229102000001") + @NotEmpty(message = "문서코드는 필수 입니다(5자리)") + @Size(max = 5) + private String mmsBsnsDvcd; + + /** + *
+ * 모바일사업자구분 : 필수 - 2자리 + * 발송 통신사 구분(01:KT, 02:SKT, 03:LGT) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "모바일사업자구분", example = " ") + @Size(min = 2, max = 2, message = "모바일 사업자 구분은 필수 입니다(01|02|03)") + private String mblBzowrDvcd; + + /** + *
+ * 발송결과코드 : 필수 - 2자리 + * 40 MMS/RCS 발송 수신성공 + * 41 MMS발송 메시지 내용 스팸 + * 42 MMS발송 착신자 스팸 + * 43 MMS발송 레포트 수신 시간 만료(메시지전송후 24시간 레포트 못받는 경우 ) + * 47 MMS발송 비가입자, 결번, 서비스정지 + * 48 MMS발송 단말기 전원 꺼짐 + * 49 MMS발송 기타 + * 4A MMS발송 UNKNOWN/단말기형식오류(스팸설정) + * 4D MMS발송 전송 실패(무선망), 단말기 일시정지 + * 4J MMS발송 비가용폰 오류 + * 4N MMS발송 수신거부 + * 4O MMS발송 LMS발송오류(시간초과) + * 4P MMS발송 LMS발송오류(기타) + * 4T MMS발송 가입자미존재(미동의포함) + * 4Q MMS발송 수신대기 + * 4R MMS발송 다회선 제외 + * 4V MMS발송 수신등록 휴대폰번호 미존재 + * 4W MMS발송 기동의 사전문자 제외 + * 50 수신확인 수신성공 + * 60 열람확인 열람확인 (MMS발송결과순번=2, 열람타임스탬프가 있는 경우) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송결과코드", example = "S20211229102000001") + @Size(min = 2, max = 2, message = "발송결과코드는 필수 입니다") + private String mmsSndgRsltDvcd; + + /** + *
+ * 발송타임스탬프 : 필수 - 14 + * YYYYMMDDHHMISS + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송타임스탬프", example = " ") + @Size(min = 14, max = 14, message = "발송타임스탬프는 필수 입니다(YYYYMMDDHHMISS)") + private String mmsSndgTmst; + + /** + *
+ * 문발송 메시지 타입: 필수 - 1 + * RCS/xMS (RCS :1, xMS: 2) + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "발송 메시지 타입", example = "2") + @Size(min = 1, max = 1, message = "발송 메시지 타입은 필수 입니다") + private String msgType; + //------------------------------------------------------------------- + + /** + *
+ * 실제발송번호(일부) : max 20 + * 고객휴대폰번호 일부 (****0323) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "실제발송번호(일부)", example = "S20211229102000001") + @Size(max = 20, message = "실제발송번호(일부)는 20자를 넘을 수 없습니다.") + private String rl_mms_sndg_telno; + + /** + *
+ * 수신타임스탬프 : 14 + * mms_sndg_rslt_sqno 코드값이 1인 경우 필수 + *> + */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수신타임스탬프", example = " ") + @Size(min = 14, max = 14, message = "수신타임스탬프는 14자리 입니다") + private String mmsRcvTmst; + + /** + *
+ * 열람타임스탬프 : 14 + * mms_sndg_rslt_sqno 코드값이 2인 경우 필수 + *> + */ + @Schema(requiredMode = RequiredMode.AUTO, title = "열람타임스탬프", example = " ") + @Size(min = 14, max = 14, message = "열람타임스탬프는 14자리 입니다") + private String mmsRdgTmst; + + /** + *
+ * 기동의발송여부: 1 + * Y: 기동의(발송 시점 전 수신동의 및 전자주소가 생성되어있는 고객) + * N: 미동의(발송 시점까지 수신동의 및 전자주소가 생성되어있지 않은 고객) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "기동의발송여부", example = "2") + @Size(min = 1, max = 1, message = "기동의발송여부는 1자리 입니다(Y|N)") + private String prevApproveYn; + + /** + *
+ * 수신자 공인전자주소 : max 100 + * 타 중계기관(포스토피아)에서 발송 요청 메시지 회신인 경우 필수 + * mms_sndg_rslt_sqno이 1, 2인 경우 필수 + * 송신중계자에 제공해야할 정보 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수신자 공인전자주소", example = " ") + @Size(max = 100, message = "수신자 공인전자주소는 100자를 넘을 수 없습니다.") + private String rcvNpost; + + /** + *
+ * 수신 중계자 플랫폼 ID : max 25 + * 타 중계기관(포스토피아)에서 발송 요청 메시지 회신인 경우 필수 + * 수신 중계자플랫폼ID (각 P/F의 중계자 ID) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "수신 중계자 플랫폼 ID", example = " ") + @Size(max = 25, message = "수신 중계자 플랫폼 ID는 25자를 넘을 수 없습니다.") + private String rcvPlfmId; + + /** + *
+ * 클릭일시 : 14(YYYYMMDDHHMISS) + * 지정된 기관(국민연금공단, AXA자동차보험)의 메시지 열람 클릭일시(최초1회시) + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "클릭일시", example = " ") + @Size(min = 14, max = 14, message = "클릭일시는 14자 입니다.") + private String clickDt; + + /** + *
+ * 동의일시 : 14(YYYYMMDDHHMISS) + * 지정된 기관(국민연금공단, AXA자동차보험)의 최초 동의 일시 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "동의일시", example = " ") + @Size(min = 14, max = 14, message = "동의일시는 14자 입니다.") + private String approveDt; + + /** + *
+ * RCS 발송 여부: 1 + * Y: RCS 발송 , N : xMS 발송 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "RCS 발송 여부", example = "2") + @Size(min = 1, max = 1, message = "RCS 발송 여부는 1자리 입니다(Y|N)") + private String rcyYn; + } + //------------------------------------------------------------------- + +} diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtTokenDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtTokenDTO.java new file mode 100644 index 0000000..fb234f3 --- /dev/null +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/kt/KtTokenDTO.java @@ -0,0 +1,269 @@ +package kr.xit.biz.ens.model.kt; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.RequiredMode; +import javax.validation.constraints.Size; +import kr.xit.biz.ens.model.kt.KtCommonDTO.KtCommonResponse; +import kr.xit.core.model.IApiResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Builder.Default; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotEmpty; + +/** + *
+ * description : KT 공공 알림문자 토큰발행 DTO + * - 토큰발행 + * Request: {@link KtTokenRequest} + * Response: {@link KtTokenResponse} + * - Token 인증 확인 조회(BC-AG-SN-008) + * Request: {@link KtTokenConfirmRequest} + * Response: {@link KtCommonResponse} + * - 열람확인결과전송(BC-AG-SN-009) + * Request : {@link KtTokenReadRequest} + * Response : {@link KtCommonResponse} + * - 기관정산화면연계 토큰인증(BC-AG-SM-002) + * Request : {@link KtTokenExcaRequest} + * Response : {@link KtCommonResponse} + * packageName : kr.xit.biz.ens.model.kt + * fileName : KtTokenDTO + * author : limju + * date : 2023-09-22 + * ====================================================================== + * 변경일 변경자 변경 내용 + * ---------------------------------------------------------------------- + * 2023-09-22 limju 최초 생성 + * + *+ */ +public class KtTokenDTO { + + //---------------------------------------------------------------------------------------- + // Token 발행 + // Request : KtTokenRequest + // Response : KtTokenResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtTokenRequest", description = "KT MMS 토큰발행 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtTokenRequest { + + /** + * 권한부여방식 : 'clinet_credentials' 로 고정 + */ + @Default + @Schema(requiredMode = RequiredMode.REQUIRED, title = "권한부여방식", example = "clinet_credentials") + @NotEmpty(message = "권한부여방식은 필수 입니다") + @Size(max = 100) + private String grantType = "clinet_credentials"; + + /** + * 과태료 코드 + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "클라이언트 ID", example = " ") + @NotEmpty(message = "클라이언트 ID는 필수 입니다") + @Size(max = 500) + private String clientId; + + /** + * 클라이언트 secret + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "클라이언트 secret", example = " ") + @NotEmpty(message = "클라이언트 secret는 필수 입니다") + @Size(max = 500) + private String clientSecret; + + /** + *
+ * 접근토큰 권한범위 : ag.api|pf.api + *+ */ + @Default + @Schema(requiredMode = RequiredMode.REQUIRED, title = "권한범위", example = "ag.api") + @NotEmpty(message = "권한범위는 필수 입니다") + @Length(max = 100) + private String scope = "ag.api"; + } + + @Schema(name = "KtTokenResponse", description = "KT MMS 토큰발행 요청 결과 DTO") + @Getter + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtTokenResponse implements IApiResponse { + //------------------------------------------------------------------- + // 토큰 발행 성공시 필수 + //------------------------------------------------------------------- + /** + * 접근토큰 : 성공시 필수 + */ + @Schema(requiredMode = RequiredMode.AUTO, title = "접근 토큰", example = " ") + @Size(max = 1000) + private String accessToken; + + /** + *
+ * 접근 토큰 유형 : 성공시 필수 + * bearer 고정 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "접근 토큰 유형", example = "bearer") + @Size(max = 100) + private final String tokenType = "bearer"; + + /** + * 접근 토큰 유효 기간 : 성공시 필수 + */ + @Schema(requiredMode = RequiredMode.AUTO, title = "접근 토큰 유효 기간", example = " ") + @Size(max = 100) + private String expiresIn; + + /** + *
+ * 접근토큰 권한범위 : 성공시 필수 + * 또는, 실패시 scope에러인 경우 발생 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "권한범위|scope에러인 경우만 발생", example = "ag.api") + @Size(max = 100) + private String scope; + + /** + * 접근토큰 식별자 : 성공시 필수 + */ + @Schema(requiredMode = RequiredMode.AUTO, title = "접근토큰 식별자", example = "ag.api") + @Size(max = 100) + private String jti; + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + // 토큰 발행 실패시 필수 + //------------------------------------------------------------------- + /** + *
+ * 접근 토큰 유형 : 성공시 필수 + * bearer 고정 + *+ */ + @Schema(requiredMode = RequiredMode.AUTO, title = "에러코드", example = " ") + @Size(max = 100) + private String error; + + /** + * 접근 토큰 유효 기간 : 성공시 필수 + */ + @Schema(requiredMode = RequiredMode.AUTO, title = "에러메세지", example = " ") + @Size(max = 100) + private String errorDescription; + } + //---------------------------------------------------------------------------------------- + + + //---------------------------------------------------------------------------------------- + // Token 인증 확인 조회 : BC-AG-SN-008 + // Request : KtTokenConfirmRequest + // Response : KtCommonResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtTokenConfirmRequest", description = "KT 토큰 인증 확인 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtTokenConfirmRequest { + /** + *
+ * 서비스코드 : 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @NotEmpty(message = "서비스코드는 필수 입니다(max:20)") + private String serviceCd; + + /** + *
+ * 서비스 코드 인증키 : 필수 - 16 자리 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스 코드 인증키", example = " ") + @Size(min = 16, max = 16, message = "서비스 코드 인증키는 필수 입니다(16자리)") + private String serviceKey; + + /** + *
+ * 토큰 : 필수 - max 150 + *+ */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "토큰", example = " ") + @Size(min = 1, max = 150, message = "토큰은 필수 입니다(max:150)") + private String accessToken; + } + //---------------------------------------------------------------------------------------- + + //---------------------------------------------------------------------------------------- + // 열람확인결과전송 : BC-AG-SN-009 + // Request : KtTokenReadRequest + // Response : KtCommonResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtTokenReadRequest", description = "KT 열람확인 결과 전송 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtTokenReadRequest extends KtTokenConfirmRequest { + /** + *
+ * 서비스코드 : 필수 - 20 + * BizCenter에서 발행한 기관의 서비스 코드 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "서비스코드", example = " ") + @NotEmpty(message = "서비스코드는 필수 입니다(max:20)") + private String mmsRdgTmst; + } + //------------------------------------------------------------------- + + //---------------------------------------------------------------------------------------- + // 기관정산화면연계 토큰인증 : BC-AG-SM-002 + // Request : KtTokenExcaRequest + // Response : KtCommonResponse + //---------------------------------------------------------------------------------------- + @Schema(name = "KtTokenExcaRequest", description = "KT 기관정산화면연계 토큰 인증 요청 DTO") + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) + public static class KtTokenExcaRequest { + /** + *
+ * 엑세스토큰 : 필수 - 100 + * 기관정산화면 호출 시 전달 받은 토큰 + * 1회 인증시 만료처리 + *> + */ + @Schema(requiredMode = RequiredMode.REQUIRED, title = "엑세스토큰", example = " ") + @NotEmpty(message = "엑세스토큰은 필수 입니다(max:100)") + private String accessToken; + } + //------------------------------------------------------------------- +} diff --git a/mens-core/src/main/java/kr/xit/biz/ens/model/nice/NiceCiDTO.java b/mens-core/src/main/java/kr/xit/biz/ens/model/nice/NiceCiDTO.java index 0d30db4..f675e88 100644 --- a/mens-core/src/main/java/kr/xit/biz/ens/model/nice/NiceCiDTO.java +++ b/mens-core/src/main/java/kr/xit/biz/ens/model/nice/NiceCiDTO.java @@ -61,6 +61,7 @@ public class NiceCiDTO { * 주민Id */ @Schema(requiredMode = RequiredMode.AUTO, title = "주민번호", example = " ") + @Size(min = 13, max = 13, message = "주민번호는 13자리 입니다.") private String juminId; } @@ -403,7 +404,7 @@ public class NiceCiDTO { * */ @Schema(requiredMode = RequiredMode.REQUIRED, title = "공개키버전", example = "20210121ca8c1612-2c2d-IPaa-aad1-xxxxxxxxxxxx") - @NotEmpty(message = "공개키버전은 필수 입니다") + @NotEmpty(message = "공개키버전은 필수 입니다(max:50)") @Size(max = 50) private String pubkeyVersion; diff --git a/mens-core/src/main/java/kr/xit/core/spring/config/WebMvcConfig.java b/mens-core/src/main/java/kr/xit/core/spring/config/WebMvcConfig.java index f72c832..c1f657c 100644 --- a/mens-core/src/main/java/kr/xit/core/spring/config/WebMvcConfig.java +++ b/mens-core/src/main/java/kr/xit/core/spring/config/WebMvcConfig.java @@ -76,8 +76,12 @@ public class WebMvcConfig implements WebMvcConfigurer { */ @Override public void extendMessageConverters(List