|
|
|
@ -9,6 +9,7 @@ import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
import javax.validation.ConstraintViolation;
|
|
|
|
|
import javax.validation.Validation;
|
|
|
|
|
import javax.validation.Validator;
|
|
|
|
@ -29,6 +30,7 @@ import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkSendResponses;
|
|
|
|
|
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkStatusRequests;
|
|
|
|
|
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkStatusResponses;
|
|
|
|
|
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.PropertyBulk;
|
|
|
|
|
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.KtMainSendReqData;
|
|
|
|
|
import kr.xit.core.exception.BizRuntimeException;
|
|
|
|
@ -81,7 +83,7 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
@Value("${contract.kt.api.bulkstatus}")
|
|
|
|
|
private String apiKtBcBulkStatus;
|
|
|
|
|
|
|
|
|
|
private final IEnsBatchRequireNewService requireNewService;
|
|
|
|
|
private final EnsBatchRequireNewService requireNewService;
|
|
|
|
|
private final ApiWebClientUtil apiWebClient;
|
|
|
|
|
private final IEnsBatchMapper mapper;
|
|
|
|
|
|
|
|
|
@ -371,11 +373,8 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
|
|
|
|
|
for(ApiResponseDTO apiResult : apiResults) {
|
|
|
|
|
if(apiResult.getData() != null) {
|
|
|
|
|
BulkStatusResponses data = JsonUtils.toObjByObj(apiResult.getData(),
|
|
|
|
|
BulkStatusResponses.class);
|
|
|
|
|
BulkStatusResponses data = JsonUtils.toObjByObj(apiResult.getData(), BulkStatusResponses.class);
|
|
|
|
|
resList.add(data);
|
|
|
|
|
}else{
|
|
|
|
|
throw BizRuntimeException.create(apiResult.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -722,7 +721,9 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
* 3. 카카오페이 문서요청 API 호출
|
|
|
|
|
* -> 결과 목록 획득
|
|
|
|
|
* 4. 카카오페이 문서요청 결과 반영
|
|
|
|
|
* -> {@link EnsBatchRequireNewService#saveKkoMyDocResult(List, String, List) saveKkoMyDocResult}
|
|
|
|
|
* - bulk 전송 기준 모든건이 실패인 경우만 실패 처리
|
|
|
|
|
* -
|
|
|
|
|
* -> {@link EnsBatchRequireNewService#saveKkoMyDocResult(String, String, List) saveKkoMyDocResult}
|
|
|
|
|
* - 카카오페이 연계 결과 반영 : tb_ens_kakao_my_doc
|
|
|
|
|
* - 모바일 페이지 생성 : tb_ens_mobile_page_manage
|
|
|
|
|
* - 연계발송결과 생성 : tb_cntc_sndng_result
|
|
|
|
@ -733,16 +734,16 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
final String url = apiHost + apiKkoBulkSend;
|
|
|
|
|
|
|
|
|
|
final List<SendKakaoTgt> list = mapper.selectKakaoSendTgts(tgtDTO);
|
|
|
|
|
final List<BulkSendReq> bulkList = new ArrayList<>();
|
|
|
|
|
final List<String> mstIdList = new ArrayList<>();
|
|
|
|
|
if(list.isEmpty()) return;
|
|
|
|
|
|
|
|
|
|
setKkoMyDocSendBulks(list, bulkList, mstIdList);
|
|
|
|
|
final String mstId = list.get(0).getSndngMastrId();
|
|
|
|
|
final List<BulkSendReq> bulkList = setKkoMyDocSendBulks(list);
|
|
|
|
|
|
|
|
|
|
// validation check
|
|
|
|
|
try {
|
|
|
|
|
validatedKkoMyDocSendBulks(bulkList);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
updateKkoMyDocSndngMstFailStatus(mstIdList, "[send]카카오 문서 발송(bulks)요청 실패(파라메터 오류)");
|
|
|
|
|
requireNewService.updateSndngMstFailStatus(mstId, SndngSeCode.KAKAO, "[send]카카오 문서 발송(bulks)요청 실패(파라메터 오류)");
|
|
|
|
|
throw e;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -765,38 +766,32 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
|
|
|
|
|
List<BulkSendResponses> resList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
boolean isSuccess = false;
|
|
|
|
|
String errMsg = null;
|
|
|
|
|
for(ApiResponseDTO apiResult : apiResults) {
|
|
|
|
|
if(apiResult.getData() != null) {
|
|
|
|
|
BulkSendResponses data = JsonUtils.toObjByObj(apiResult.getData(),
|
|
|
|
|
BulkSendResponses.class);
|
|
|
|
|
BulkSendResponses data = JsonUtils.toObjByObj(apiResult.getData(), BulkSendResponses.class);
|
|
|
|
|
resList.add(data);
|
|
|
|
|
}else{
|
|
|
|
|
updateKkoMyDocSndngMstFailStatus(mstIdList, apiResult.getMessage());
|
|
|
|
|
throw BizRuntimeException.create(apiResult.getMessage());
|
|
|
|
|
isSuccess = true;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
errMsg = apiResult.getMessage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 카카오 문서 요청 결과 반영
|
|
|
|
|
requireNewService.saveKkoMyDocResult(mstIdList, tgtDTO.getUnitySndngMastrId(), resList);
|
|
|
|
|
// 카카오 send 결과 반영
|
|
|
|
|
if(!isSuccess) requireNewService.updateSndngMstFailStatus(mstId, SndngSeCode.KAKAO, errMsg);
|
|
|
|
|
requireNewService.saveKkoMyDocResult(mstId, tgtDTO.getUnitySndngMastrId(), resList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* GET 카카오 문서발송요청 파라메터 목록
|
|
|
|
|
* - CI 인증인 경우 개인 정보 삭제
|
|
|
|
|
* @param list List<EnsDTO.SendKakaoTgt> 문서발송요청 대상 목록
|
|
|
|
|
* @param bulkList List<KkopayDocBulkDTO.BulkSendReq> 문서발송요청 파라메터 목록
|
|
|
|
|
* @param mstIdList List<String> 문서발송요청 대상 마스터ID 목록
|
|
|
|
|
* @return List<KkopayDocBulkDTO.BulkSendReq>
|
|
|
|
|
*/
|
|
|
|
|
private static void setKkoMyDocSendBulks(List<EnsDTO.SendKakaoTgt> list,
|
|
|
|
|
List<KkopayDocBulkDTO.BulkSendReq> bulkList, List<String> mstIdList) {
|
|
|
|
|
String mstId = null;
|
|
|
|
|
private static List<KkopayDocBulkDTO.BulkSendReq> setKkoMyDocSendBulks(List<EnsDTO.SendKakaoTgt> list) {
|
|
|
|
|
List<KkopayDocBulkDTO.BulkSendReq> bulkList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (EnsDTO.SendKakaoTgt sendTgtDTO : list) {
|
|
|
|
|
if (!Objects.equals(mstId, sendTgtDTO.getSndngMastrId())) {
|
|
|
|
|
mstId = sendTgtDTO.getSndngMastrId();
|
|
|
|
|
mstIdList.add(mstId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 방어 코드 추가 : CI 인증인 경우 개인정보 삭제
|
|
|
|
|
*/
|
|
|
|
@ -840,6 +835,7 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
|
|
|
|
|
bulkList.add(bulkReqDTO);
|
|
|
|
|
}
|
|
|
|
|
return bulkList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -898,65 +894,25 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 카카오 문서 발송요청 파라메터 체크 오류 반영 - 발송 관련 마스터 테이블
|
|
|
|
|
*
|
|
|
|
|
* @param mstIdList List<String>
|
|
|
|
|
* @param stsErrMsg String
|
|
|
|
|
*/
|
|
|
|
|
private void updateKkoMyDocSndngMstFailStatus(final List<String> mstIdList,
|
|
|
|
|
final String stsErrMsg) {
|
|
|
|
|
|
|
|
|
|
for (String id : mstIdList) {
|
|
|
|
|
// FIXME :: stsErrMsg 메세지 확인 필
|
|
|
|
|
EnsDTO.SndngMssageParam dto = mapper.selectSndProcessStatus(id)
|
|
|
|
|
.orElseThrow(() -> BizRuntimeException.create(stsErrMsg));
|
|
|
|
|
|
|
|
|
|
String newSndngProcessSttus;
|
|
|
|
|
if (dto.getTrySeq() == 2) {
|
|
|
|
|
newSndngProcessSttus = "send-fail2";
|
|
|
|
|
} else if (dto.getTrySeq() == 3) {
|
|
|
|
|
newSndngProcessSttus = "send-fail3";
|
|
|
|
|
} else {
|
|
|
|
|
newSndngProcessSttus = "send-fail1";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EnsDTO.SndngMssageParam paramDTO = EnsDTO.SndngMssageParam.builder()
|
|
|
|
|
.unitySndngMastrId(dto.getUnitySndngMastrId())
|
|
|
|
|
.sndngMastrId(dto.getSndngMastrId())
|
|
|
|
|
.newSndngProcessSttus(newSndngProcessSttus)
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
if (mapper.updateProcessSttusCntcSndngMst(paramDTO) != 1) {
|
|
|
|
|
throw BizRuntimeException.create("[send-카카오]연계 발송 마스터 상태변경 실패");
|
|
|
|
|
}
|
|
|
|
|
if (mapper.updateProcessSttusUnitySndngMst(paramDTO) != 1) {
|
|
|
|
|
throw BizRuntimeException.create("[send-카카오]통합 발송 마스터 상태변경 실패");
|
|
|
|
|
}
|
|
|
|
|
if (mapper.updateProcessSttusSndngMst(paramDTO) != 1) {
|
|
|
|
|
throw BizRuntimeException.create("[send-카카오]발송 마스터 상태변경 실패");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <pre>
|
|
|
|
|
* KT BC 문서 send
|
|
|
|
|
* @param tgtDTO SndngMssageParam
|
|
|
|
|
* @param reqDTO SndngMssageParam
|
|
|
|
|
* </pre>
|
|
|
|
|
*/
|
|
|
|
|
// TODO :: 구현 필요
|
|
|
|
|
private void sendBulkKtBc(final EnsDTO.SndngMssageParam tgtDTO) {
|
|
|
|
|
private void sendBulkKtBc(final EnsDTO.SndngMssageParam reqDTO) {
|
|
|
|
|
final String url = apiHost + apiKtBcBulkSend;
|
|
|
|
|
|
|
|
|
|
KtBcMst mstDTO = mapper.selectKtBcMstTgtInfo(tgtDTO)
|
|
|
|
|
KtBcMst mstDTO = mapper.selectKtBcMstTgtInfo(reqDTO)
|
|
|
|
|
.orElseThrow(() -> BizRuntimeException.create("KT BC 본문자 수신 등록 대상이 존재 하지 않습니다 "));
|
|
|
|
|
|
|
|
|
|
List<KtMainSendReqData> sendReqs = mapper.selectKtBcSendTgts(tgtDTO);
|
|
|
|
|
List<KtMainSendReqData> sendReqs = mapper.selectKtBcSendTgts(reqDTO);
|
|
|
|
|
|
|
|
|
|
//TODO :: KKO 기준 작성 필요
|
|
|
|
|
final List<BulkSendReq> bulkList = new ArrayList<>();
|
|
|
|
|
final List<String> mstIdList = List.of(mstDTO.getSndngMastrId());
|
|
|
|
|
final String mstId = mstDTO.getSndngMastrId();
|
|
|
|
|
final String unitySndMstId = mstDTO.getUnitySndngMastrId();
|
|
|
|
|
|
|
|
|
|
// setKtBcSendBulks(list, bulkList, mstIdList);
|
|
|
|
|
|
|
|
|
@ -984,17 +940,52 @@ public class EnsBatchService extends EgovAbstractServiceImpl implements IEnsBatc
|
|
|
|
|
)
|
|
|
|
|
.toList();
|
|
|
|
|
|
|
|
|
|
boolean isSuccess = false;
|
|
|
|
|
List<ErrorMsg> errList = new ArrayList<>();
|
|
|
|
|
for(ApiResponseDTO apiResult : apiResults) {
|
|
|
|
|
// KT-BC API 정상 호출
|
|
|
|
|
if(ObjectUtils.isNotEmpty(apiResult.getData())) {
|
|
|
|
|
KtCommonResponse resDTO = JsonUtils.toObjByObj(apiResult.getData(), KtCommonResponse.class);
|
|
|
|
|
assert resDTO != null;
|
|
|
|
|
reqDTO.setResultDt(resDTO.getResultDt());
|
|
|
|
|
|
|
|
|
|
if(ObjectUtils.isNotEmpty(resDTO) && "00".equals(resDTO.getResultCd())){
|
|
|
|
|
continue;
|
|
|
|
|
isSuccess = true;
|
|
|
|
|
reqDTO.setErrorMssage("정상");
|
|
|
|
|
}else{
|
|
|
|
|
//reqDTO.setErrorMssage(resDTO.toStringErrorMsg());
|
|
|
|
|
errList.addAll(resDTO.getErrors());
|
|
|
|
|
}
|
|
|
|
|
mapper.updateKtBcMst(reqDTO);
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
// KT-BC API 호출전 에러 발생
|
|
|
|
|
if(ObjectUtils.isEmpty(reqDTO.getResultDt())) {
|
|
|
|
|
reqDTO.setResultDt(DateUtils.getTodayAndNowTime(ApiConstants.FMT_DT_EMPTY_DLT));
|
|
|
|
|
}
|
|
|
|
|
reqDTO.setErrorMssage(apiResult.getMessage());
|
|
|
|
|
errList.add(new ErrorMsg(apiResult.getMessage()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 모두 실패한 경우
|
|
|
|
|
if(!isSuccess) {
|
|
|
|
|
reqDTO.setResultCd("01");
|
|
|
|
|
reqDTO.setErrorMssage(
|
|
|
|
|
errList.stream()
|
|
|
|
|
.map(ErrorMsg::getErrorMsg)
|
|
|
|
|
.collect(Collectors.joining(","))
|
|
|
|
|
);
|
|
|
|
|
mapper.updateKtBcMst(reqDTO);
|
|
|
|
|
requireNewService.updateSndngMstFailStatus(mstId, SndngSeCode.KT_BC, "[send] KT-BC 발송(bulks)요청 실패");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
updateKkoMyDocSndngMstFailStatus(mstIdList, apiResult.getMessage());
|
|
|
|
|
throw BizRuntimeException.create(apiResult.getMessage());
|
|
|
|
|
|
|
|
|
|
// 성공 건수 존재시 성공 처리
|
|
|
|
|
reqDTO.setResultCd("00");
|
|
|
|
|
reqDTO.setErrorMssage("정상");
|
|
|
|
|
mapper.updateKtBcMst(reqDTO);
|
|
|
|
|
requireNewService.updateSendSndngMstStatus(mstId, unitySndMstId, SndngSeCode.KAKAO, "KT-BC 실패(발송마스터 데이타 오류)");
|
|
|
|
|
}
|
|
|
|
|
requireNewService.saveSendKtBcResult(sendReqs);
|
|
|
|
|
}
|
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|