feat: KT API 반영

dev
gitea-관리자 1 year ago
parent 066750d2d1
commit 54817c4780

@ -34,9 +34,9 @@ public class CmmKtMmsUtils {
* KT MMS
* @return
*/
public static CmmEnsRlaybsnmDTO getKtMnsInfo(final String signguCode, final String ffnlgCode) {
public static CmmEnsRlaybsnmDTO getRlaybsnmInfo(final String signguCode, final String ffnlgCode) {
final CmmEnsRlaybsnmDTO dto = cacheService.getRlaybsnmInfoCache(signguCode, ffnlgCode);
if(ObjectUtils.isEmpty(dto)) throw BizRuntimeException.create(messageSource.getMessage("fail.api.kt.info"));
if(ObjectUtils.isEmpty(dto)) throw BizRuntimeException.create(messageSource.getMessage("fail.api.rlaybsnm.info"));
cacheService.logCache();
return dto;

@ -160,7 +160,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
*/
@Override
public KtTokenResponse requestToken(final KtMnsRequest paramDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(paramDTO.getSignguCode(), paramDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(paramDTO.getSignguCode(), paramDTO.getFfnlgCode());
final KtTokenRequest reqDTO = KtTokenRequest.builder()
.clientId(ktMnsInfo.getKtClientId())
.clientSecret(ktMnsInfo.getKtClientSecret())
@ -199,7 +199,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
*/
@Override
public KtCommonResponse beforeSend(final KtBefSendRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -225,7 +225,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse mainSend(final KtMainSendRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -241,7 +241,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse blacklist(final KtBlacklistRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -257,7 +257,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse cfmToken(final KtTokenDTO.KtTokenConfirmRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -273,7 +273,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse readToken(final KtTokenReadRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -289,7 +289,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse messageResult(final KtMsgRsltRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -305,7 +305,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtSendSttcResponse sendSttc(final KtSendSttcRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -321,7 +321,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtSendSttcDtlResponse sendSttcDtl(final KtSendSttcDtlRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -337,7 +337,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse whitelist(final KtWhitelistRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -353,7 +353,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse refuseRcv(final KtRefuseRcvRequest reqDTO) {
//final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -366,7 +366,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse approveRcv(final KtApproveRcvRequest reqDTO) {
//final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -379,7 +379,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtAcmdCerfResponse cerfAcmd(final KtAcmdCerfRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -395,7 +395,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtCommonResponse excaAcmd(KtTokenExcaRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -411,7 +411,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtExcaResponse exca(final KtExcaRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -427,7 +427,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtAcmdInfoResponse infoAcmd(final KtAcmdInfoRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);
@ -443,7 +443,7 @@ public class KtMmsService extends EgovAbstractServiceImpl implements IKtMmsServi
@Override
public KtAcmdInfoCfmResponse cfmAcmd(final KtAcmdInfoCfmRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
//reqDTO.setServiceCd(ktMnsInfo.get);
//reqDTO.setServiceKey(ktMnsInfo.get);
CmmEnsUtils.validate(reqDTO);

@ -63,7 +63,7 @@ public class PplusService extends EgovAbstractServiceImpl implements IPplusServi
@Override
public PpCommonResponse accept(PpAcceptRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
reqDTO.setApiKey(ktMnsInfo.getPplusApiKey());
JSONObject mstJson = makePpAcceptMstData();
JSONObject dtlJson = makePpAcceptDtlData();

@ -0,0 +1,254 @@
package kr.xit.ens.pplus.web;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import kr.xit.core.exception.BizRuntimeException;
import kr.xit.core.model.ApiResponseDTO;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "ApiExample", description = "Postplus(포스토피아) sample API")
@RestController
@RequestMapping("/api/ens/pplus/v1")
public class ApiExample {
private String charset = "utf-8";
private final String boundary = "===" + System.currentTimeMillis() + "===";
private static final String LINE_FEED = "\r\n";
@Operation(summary = "우편제작접수 샘플", description = "우편제작접수 샘플")
@RequestMapping(value = "/apiExample", produces = MediaType.APPLICATION_JSON_VALUE)
public ApiResponseDTO<?> apiExample() {
// master
JSONArray masterCols = new JSONArray();
masterCols.add("버전");
masterCols.add("테스트여부");
masterCols.add("서비스");
masterCols.add("연계식별키");
masterCols.add("봉투");
masterCols.add("봉투창");
masterCols.add("흑백칼라");
masterCols.add("단면양면");
masterCols.add("배달");
masterCols.add("템플릿코드");
masterCols.add("템플릿출력여부");
masterCols.add("수취인수");
masterCols.add("여백생성유무");
masterCols.add("주소페이지유무");
masterCols.add("맞춤자제유무");
masterCols.add("메일머지유무");
masterCols.add("동봉물유무");
masterCols.add("반송여부");
masterCols.add("스테이플러유무");
masterCols.add("로고파일");
masterCols.add("발송인명");
masterCols.add("발송인우편번호");
masterCols.add("발송인주소");
masterCols.add("발송인상세주소");
masterCols.add("발송인전화번호");
JSONArray masterRows = new JSONArray();
masterRows.add("v1.10"); // 버전
masterRows.add("Y"); // 테스트여부
masterRows.add("PST"); // 서비스
masterRows.add("POST20230428_000001"); // 연계식별키
masterRows.add("소봉투"); // 봉투
masterRows.add("이중창"); // 봉투창
masterRows.add("흑백"); // 흑백칼라
masterRows.add("단면"); // 단면양면
masterRows.add("일반"); // 배달
masterRows.add(""); // 템플릿코드
masterRows.add("N"); // 템플릿출력여부
masterRows.add(2); // 수취인수
masterRows.add("N"); // 여백생성유무
masterRows.add("N"); // 주소페이지유무
masterRows.add("N"); // 맞춤자제유무
masterRows.add("N"); // 메일머지유무
masterRows.add("N"); // 동봉물유무
masterRows.add("N"); // 반송여부
masterRows.add("N"); // 스테이플러유무
masterRows.add("N"); // 로고파일
masterRows.add("포스토피아"); // 발송인명
masterRows.add("05048"); // 발송인우편번호
masterRows.add("서울특별시 광진구 강변역로2"); // 발송인주소
masterRows.add("서울광진우체국 B동 4층"); // 발송인상세주소
masterRows.add("1577-8114"); // 발송인전화번호
JSONObject master = new JSONObject();
master.put("cols", masterCols);
master.put("rows", masterRows);
// detail
JSONArray detailCols = new JSONArray();
detailCols.add("순번");
detailCols.add("이름");
detailCols.add("우편번호");
detailCols.add("주소");
detailCols.add("상세주소");
detailCols.add("전화번호");
detailCols.add("첨부파일");
detailCols.add("가변1");
detailCols.add("가변2");
detailCols.add("가변3");
detailCols.add("가변4");
JSONArray detailRows1 = new JSONArray();
detailRows1.add("1");
detailRows1.add("홍길동1");
detailRows1.add("31010");
detailRows1.add("서울특별시 광진구 강변역로2");
detailRows1.add("서울광진우체국 B동 1층");
detailRows1.add("01012341234");
detailRows1.add("pstFile.pdf");
detailRows1.add("24926737");
detailRows1.add("2021-09-02");
detailRows1.add("대출(고정)");
detailRows1.add("31,000,000");
JSONArray detailRows2 = new JSONArray();
detailRows2.add("2");
detailRows2.add("홍길동2");
detailRows2.add("08394");
detailRows2.add("서울특별시 광진구 강변역로2");
detailRows2.add("서울광진우체국 B동 2층");
detailRows2.add("01012341234");
detailRows2.add("pstFile.pdf");
detailRows2.add("25685047");
detailRows2.add("2021-09-02");
detailRows2.add("대출B(변동)");
detailRows2.add("421,000,000");
JSONArray detailRows = new JSONArray();
detailRows.add(detailRows1);
detailRows.add(detailRows2);
JSONObject detail = new JSONObject();
detail.put("cols", detailCols);
detail.put("rows", detailRows);
JSONObject pst = new JSONObject();
pst.put("master", master);
pst.put("detail", detail);
// 파일생성 & 저장
try {
FileWriter pstFile = new FileWriter("d:/data/temp/pstFile2.json");
pstFile.write(pst.toJSONString());
pstFile.flush();
pstFile.close();
} catch (IOException e) {
e.printStackTrace();
}
// API 전송
URL url = null;
HttpURLConnection conn;
try {
//url = new URL("https://t.postplus.co.kr/po/api/postplusPstMsrApi.do");
url = new URL("http://localhost:8081/api/ens/pplus/v1/accept2");
//url = new URL("http://localhost:8081/api/ens/pplus/v1/accept3");
conn = (HttpURLConnection) url.openConnection();
conn.setUseCaches(false);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
conn.setRequestProperty("User-Agent", "CodeJava Agent");
} catch (MalformedURLException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
try (OutputStream ops = conn.getOutputStream();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(ops, charset), true)) {
//File pstFile = new File("c:/Temp/pstFile.json");
File pstFile = new File("d:/data/temp/pstFile2.json");
//File attchFile = new File("c:/Temp/pstFile.pdf");
addParam(writer, "apiKey", "apiKey");
addFile(writer, ops, "pstFile", pstFile);
//addFile(writer, ops, "pstFile", attchFile);
writer.append("--" + boundary + "--").append(LINE_FEED);
writer.append(LINE_FEED).flush();
} catch (Exception e){
throw BizRuntimeException.create(e);
}
StringBuffer response = new StringBuffer();
try {
int status = conn.getResponseCode();
if (status == HttpURLConnection.HTTP_OK) {
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()))) {
String line;
while((line = reader.readLine()) != null) {
response.append(line);
}
} catch (IOException e) {
throw BizRuntimeException.create(e);
}
conn.disconnect();
} else {
throw BizRuntimeException.create("Server returned non-OK status: " + status);
}
} catch (IOException e) {
throw BizRuntimeException.create(e);
}
return ApiResponseDTO.success(response.toString());
}
private void addParam(PrintWriter writer, String name, String value) {
writer.append("--" + boundary).append(LINE_FEED);
writer.append("Content-Disposition: form-data; name=\"" + name + "\"").append(LINE_FEED);
writer.append("Content-Type: text/plain; charset=" + charset).append(LINE_FEED);
writer.append(LINE_FEED);
writer.append(value).append(LINE_FEED);
writer.flush();
}
private void addFile(PrintWriter writer, OutputStream ops, String name, File uploadFile) {
String fileName = uploadFile.getName();
writer.append("--" + boundary).append(LINE_FEED);
writer.append("Content-Disposition: form-data; name=\"" + name+ "\"; filename=\"" + fileName + "\"").append(LINE_FEED);
writer.append("Content-Type: "+ URLConnection.guessContentTypeFromName(fileName)).append(LINE_FEED);
writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
writer.append(LINE_FEED);
writer.flush();
try (FileInputStream is = new FileInputStream(uploadFile)) {
byte[] buffer = new byte[4096];
int bytesRead = -1;
while((bytesRead = is.read(buffer)) != -1) {
ops.write(buffer, 0, bytesRead);
}
ops.flush();
} catch (IOException e){
throw BizRuntimeException.create(e.getMessage());
}
writer.append(LINE_FEED);
writer.flush();
}
}

@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
/**
* <pre>
@ -70,4 +71,27 @@ public class PplusController {
public ApiResponseDTO<?> status(@RequestBody final PpStatusRequest paramDTO) {
return ApiResponseDTO.success(service.status(paramDTO));
}
@RequestMapping(value = "/accept2")
public ApiResponseDTO<?> accept2() {
return ApiResponseDTO.success();
}
@RequestMapping(value = "/accept3")
public ModelAndView accept3() {
return new ModelAndView("/index.html");
}
}

Loading…
Cancel
Save