ums 관련 정리
This commit is contained in:
@@ -35,6 +35,7 @@ public class MonitoringPropertyManService extends BaseService {
|
|||||||
|
|
||||||
public MonitoringPropertyGroupUI selectDetail(String prptyGroupName) {
|
public MonitoringPropertyGroupUI selectDetail(String prptyGroupName) {
|
||||||
MonitoringPropertyGroup propertyGroup = propertyGroupService.getById(prptyGroupName);
|
MonitoringPropertyGroup propertyGroup = propertyGroupService.getById(prptyGroupName);
|
||||||
|
propertyGroup.getMonitoringProperties().sort(Comparator.comparing(p -> p.getId().getPrptyName()));
|
||||||
return propertyGroupMapper.toVo(propertyGroup);
|
return propertyGroupMapper.toVo(propertyGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import com.eactive.apim.portal.template.entity.MessageCode;
|
|||||||
import com.eactive.eai.rms.data.entity.man.role.Role;
|
import com.eactive.eai.rms.data.entity.man.role.Role;
|
||||||
import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatus;
|
import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatus;
|
||||||
import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatusEvent;
|
import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatusEvent;
|
||||||
import com.eactive.eai.rms.ext.djb.util.UmsManager;
|
import com.eactive.eai.rms.ext.djb.ums.UmsManager;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import com.eactive.apim.portal.template.entity.MessageCode;
|
import com.eactive.apim.portal.template.entity.MessageCode;
|
||||||
import com.eactive.eai.rms.data.entity.man.role.Role;
|
import com.eactive.eai.rms.data.entity.man.role.Role;
|
||||||
import com.eactive.eai.rms.data.entity.onl.djb.inflow.InflowTokenInsufficient;
|
import com.eactive.eai.rms.data.entity.onl.djb.inflow.InflowTokenInsufficient;
|
||||||
import com.eactive.eai.rms.ext.djb.util.UmsManager;
|
import com.eactive.eai.rms.ext.djb.ums.UmsManager;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.eactive.eai.rms.ext.djb.util;
|
package com.eactive.eai.rms.ext.djb.ums;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -0,0 +1,390 @@
|
|||||||
|
package com.eactive.eai.rms.ext.djb.ums.service;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.eactive.apim.portal.template.entity.MessageRequest;
|
||||||
|
import com.eactive.eai.common.util.SystemUtil;
|
||||||
|
import com.eactive.eai.rms.ext.djb.ums.vo.EmailDataVO;
|
||||||
|
import com.eactive.eai.rms.ext.djb.ums.vo.SmsDataVO;
|
||||||
|
import com.eactive.eai.rms.ext.djb.ums.vo.StdHeadVO;
|
||||||
|
import com.eactive.eai.rms.ext.djb.ums.vo.SwingCommonVO;
|
||||||
|
import com.eactive.eai.rms.ext.djb.ums.vo.SwingDataVO;
|
||||||
|
import com.eactive.eai.rms.ext.djb.ums.vo.SwingReceiverDataVO;
|
||||||
|
import com.eactive.ext.kjb.common.KjbProperty;
|
||||||
|
import com.eactive.ext.kjb.common.KjbPropertyHolder;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class UmsService {
|
||||||
|
//public final static int[] ALLOW_CHANNELS = { MessageCode.Channels.SWING.getValue() };
|
||||||
|
|
||||||
|
private static final Gson gson = new Gson();
|
||||||
|
|
||||||
|
private static volatile UmsService instance;
|
||||||
|
|
||||||
|
private static final String SYS_DVCD = "OPA";
|
||||||
|
|
||||||
|
private UmsService() {
|
||||||
|
// 싱글톤
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UmsService getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
synchronized (UmsService.class) {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new UmsService();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
private KjbProperty getProperty() {
|
||||||
|
return KjbPropertyHolder.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
// public static boolean isAllowChannel(MessageRequest message) {
|
||||||
|
// for (int channel : ALLOW_CHANNELS) {
|
||||||
|
// if ((message.getMessageCode().getChannels() & channel) == channel) {
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
public boolean send(MessageRequest messageRequest) throws Exception {
|
||||||
|
if (messageRequest == null) {
|
||||||
|
throw new IllegalArgumentException("messageRequest is null");
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (MessageCode.Channels.SWING.getValue() != (messageRequest.getMessageCode().getChannels() & MessageCode.Channels.SWING.getValue())) {
|
||||||
|
// log.error("지원하지 않는 발송 채널 - {}", messageRequest.getMessageCode().toString());
|
||||||
|
// throw new IllegalArgumentException("지원하지 않는 발송 채널 - " + messageRequest.getMessageCode().toString());
|
||||||
|
// }
|
||||||
|
|
||||||
|
this.httpConnection(messageRequest);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void httpConnection(MessageRequest messageRequest) throws Exception {
|
||||||
|
HttpURLConnection conn = null;
|
||||||
|
BufferedReader br = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
URL url = new URL(this.getHostUrl(messageRequest));
|
||||||
|
int timeoutValue = 5 * 1000; // 타임아웃 설정을 위한 값 (단위: ms)
|
||||||
|
// Charset charset = Charset.forName("UTF-8");
|
||||||
|
Charset charset = Charset.forName("MS949");
|
||||||
|
|
||||||
|
StringBuffer sb = null;
|
||||||
|
String bodyData = this.makeBodyData(messageRequest);
|
||||||
|
|
||||||
|
String responseData = "";
|
||||||
|
String method = bodyData.isEmpty() ? "GET" : "POST";
|
||||||
|
conn = (HttpURLConnection) url.openConnection();
|
||||||
|
conn.setRequestMethod(method); // 전송방식
|
||||||
|
// conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
||||||
|
conn.setRequestProperty("Content-Type", "application/json; charset=MS949");
|
||||||
|
conn.setConnectTimeout(timeoutValue); // 연결 타임아웃 설정(5초)
|
||||||
|
conn.setReadTimeout(timeoutValue); // 읽기 타임아웃 설정(5초)
|
||||||
|
conn.setDoOutput(true);
|
||||||
|
|
||||||
|
// POst 방식인 경우에만
|
||||||
|
if (method.equals("POST")) {
|
||||||
|
OutputStream os = conn.getOutputStream();
|
||||||
|
byte requestData[] = bodyData.getBytes(charset);
|
||||||
|
os.write(requestData);
|
||||||
|
os.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("getContentType();" + conn.getContentType()); // 응답 콘텐츠 유형 구하기
|
||||||
|
log.debug("getResponsecode();" + conn.getResponseCode()); // 응답 코드 구하기
|
||||||
|
log.debug("getResponseMessage():" + conn.getResponseMessage()); // 응답 메세지 구하기
|
||||||
|
}
|
||||||
|
|
||||||
|
// http 요청 후 응답 받은 데이타를 버퍼에 쌓는다
|
||||||
|
if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
|
||||||
|
br = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
|
||||||
|
} else {
|
||||||
|
br = new BufferedReader(new InputStreamReader(conn.getErrorStream(), charset));
|
||||||
|
}
|
||||||
|
|
||||||
|
String inputLine;
|
||||||
|
sb = new StringBuffer();
|
||||||
|
while ((inputLine = br.readLine()) != null) {
|
||||||
|
sb.append(inputLine);
|
||||||
|
}
|
||||||
|
|
||||||
|
responseData = sb.toString();
|
||||||
|
} finally {
|
||||||
|
// http 요청 및 응답 완료 후 BufferedReader를 닫는다
|
||||||
|
if (br != null) {
|
||||||
|
br.close();
|
||||||
|
}
|
||||||
|
if (conn != null) {
|
||||||
|
conn.disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String getHostUrl(MessageRequest messageRequest) {
|
||||||
|
KjbProperty prop = getProperty();
|
||||||
|
String hostUrl = "";
|
||||||
|
if ("SWING".equals(messageRequest.getMessageType()) ) {
|
||||||
|
hostUrl = prop.getUmsSwingUrl();
|
||||||
|
} else if ("SMS".equals(messageRequest.getMessageType()) || "KAKAO".equals(messageRequest.getMessageType())) {
|
||||||
|
hostUrl = prop.getUmsSmsUrl();
|
||||||
|
} else if ("EMAIL".equals(messageRequest.getMessageType())) {
|
||||||
|
hostUrl = prop.getUmsEmailUrl();
|
||||||
|
}
|
||||||
|
return hostUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String makeBodyData(MessageRequest messageRequest) {
|
||||||
|
|
||||||
|
KjbProperty prop = getProperty();
|
||||||
|
|
||||||
|
// 리턴값
|
||||||
|
String rtnVal = "";
|
||||||
|
|
||||||
|
// guID 및 날짜 시간 정보
|
||||||
|
String jsonData[] = this.makeStdGuidInfo();
|
||||||
|
|
||||||
|
// 표준 헤더
|
||||||
|
StdHeadVO stdHeadVO = new StdHeadVO();
|
||||||
|
stdHeadVO.setNxgn_stnd_idfr("JERA");
|
||||||
|
stdHeadVO.setGuid(jsonData[2]);
|
||||||
|
stdHeadVO.setGuid_prgs_no("1");
|
||||||
|
stdHeadVO.setStnd_mesg_ver("R10");
|
||||||
|
stdHeadVO.setOrtr_guid(jsonData[2]);
|
||||||
|
stdHeadVO.setSect_ecrpt_yn("N");
|
||||||
|
stdHeadVO.setFrst_trnm_ipad(prop.getUmsWasIpAddress());
|
||||||
|
stdHeadVO.setFrst_trnm_ipv4_addr(prop.getUmsWasIpAddress());
|
||||||
|
stdHeadVO.setFrst_trnm_mac(prop.getUmsWasMacAddress());
|
||||||
|
stdHeadVO.setFrst_mesg_dman_dt(jsonData[0]);
|
||||||
|
stdHeadVO.setFrst_mesg_dman_time(jsonData[1]);
|
||||||
|
stdHeadVO.setFrst_trnm_sys_dvcd(SYS_DVCD);
|
||||||
|
stdHeadVO.setTrnm_sys_dvcd(SYS_DVCD);
|
||||||
|
stdHeadVO.setDman_rspn_dvcd("S"); // 요청응답구분코드 S:요청 R:응답
|
||||||
|
stdHeadVO.setSys_env_dvcd(SystemUtil.getSysOperEvirnDstcd()); // D:개발 T:테스트 P:운영
|
||||||
|
stdHeadVO.setTx_tycd("O"); // O:온라인 B:배치
|
||||||
|
stdHeadVO.setSynz_dvcd("S"); // S:동기 A:비동기
|
||||||
|
stdHeadVO.setChnl_tycd(""); // 채널유형코드 TODO: 값 채울것!!
|
||||||
|
stdHeadVO.setHmab_dvcd("1"); // 내외구분코드 1:내부 2:외부(타발)
|
||||||
|
|
||||||
|
if ("SWING".equals(messageRequest.getMessageType()) ) {
|
||||||
|
// 표준 헤더
|
||||||
|
stdHeadVO.setTx_id(prop.getUmsSwingTxId()); // 거래ID
|
||||||
|
stdHeadVO.setIf_id(prop.getUmsSwingIfId()); // 인터페이스ID
|
||||||
|
|
||||||
|
// 스윙챗 알림 공용
|
||||||
|
SwingCommonVO swiComVO = new SwingCommonVO();
|
||||||
|
swiComVO.setClientld(prop.getUmsSwingClientId());
|
||||||
|
swiComVO.setClientSecret(prop.getUmsSwingClientSecret());
|
||||||
|
swiComVO.setCompanyCode("CB");
|
||||||
|
swiComVO.setRequestUniqueKey(this.genrateRandomStringNumber26());
|
||||||
|
|
||||||
|
// 스윙챗 알림 데이터
|
||||||
|
SwingDataVO swiDataVO = new SwingDataVO();
|
||||||
|
swiDataVO.setNotiCode("CNO_FEP_HMP_0002");
|
||||||
|
swiDataVO.setNotiTitle("알림");
|
||||||
|
swiDataVO.setNotiContent(messageRequest.getMessage());
|
||||||
|
|
||||||
|
// 스윙챗 알림 데이터
|
||||||
|
List<SwingReceiverDataVO> swiReDataVOList = new ArrayList<SwingReceiverDataVO>();
|
||||||
|
SwingReceiverDataVO receiver = new SwingReceiverDataVO();
|
||||||
|
receiver.setCode(messageRequest.getMessengerId());
|
||||||
|
swiReDataVOList.add(receiver);
|
||||||
|
|
||||||
|
swiDataVO.setReceiverInfo(swiReDataVOList);
|
||||||
|
|
||||||
|
String header = gson.toJson(stdHeadVO);
|
||||||
|
String common = gson.toJson(swiComVO);
|
||||||
|
String data = gson.toJson(swiDataVO);
|
||||||
|
|
||||||
|
// 헤더 + 데이터
|
||||||
|
rtnVal = "{\"HEAD\":" + header + " ,\r\n" + "\"DATA\":\r\n" + " [" + "{\r\n"
|
||||||
|
+ " \"data_dvcd\":\"IO\", \r\n" + " \"BIZ_DATA\":\r\n" + " {\r\n"
|
||||||
|
+ " \"common\":\r\n" + common + ",\r\n" + " \"data\":" + data
|
||||||
|
+ " }\r\n" + " }\r\n" + " ]\r\n" + "}";
|
||||||
|
|
||||||
|
} else if ("SMS".equals(messageRequest.getMessageType())
|
||||||
|
|| "KAKAO".equals(messageRequest.getMessageType())) {
|
||||||
|
// 표준 헤더
|
||||||
|
stdHeadVO.setTx_id(prop.getUmsSmsTxId()); // 거래ID
|
||||||
|
stdHeadVO.setIf_id(prop.getUmsSmsIfId()); // 인터페이스ID
|
||||||
|
|
||||||
|
// Sms 데이터
|
||||||
|
SmsDataVO dataVO = new SmsDataVO();
|
||||||
|
dataVO.setSnd_dman_dt(jsonData[0]);
|
||||||
|
dataVO.setSnd_dman_id("");
|
||||||
|
dataVO.setSnd_dvcd("EAI");
|
||||||
|
dataVO.setMsg_titl("");
|
||||||
|
dataVO.setMsg_ctnt(messageRequest.getMessage());
|
||||||
|
dataVO.setRecvr_no(messageRequest.getPhone());
|
||||||
|
dataVO.setSndn_no("15880079"); //발신번호
|
||||||
|
dataVO.setSnd_empno("999999"); //요청자
|
||||||
|
dataVO.setSnd_emp_dprm_cd("157"); //요청부서코드
|
||||||
|
if ("SMS".equals(messageRequest.getMessageType())) {
|
||||||
|
dataVO.setLtrs_snd_tycd("1"); // 1:SMS 2:LMS/MMS
|
||||||
|
dataVO.setMsg_snd_tycd("0000"); // 알림톡 메세지 종류 0000:SMS, 1000:LMS, 1008:알림톡, ....
|
||||||
|
} else if ("KAKAO".equals(messageRequest.getMessageType())) {
|
||||||
|
dataVO.setLtrs_snd_tycd("2"); // 1:SMS 2:LMS/MMS
|
||||||
|
dataVO.setMsg_snd_tycd("1008"); // 알림톡 메세지 종류 0000:SMS, 1000:LMS, 1008:알림톡, ....
|
||||||
|
dataVO.setAlmtk_snd_prfl_key(""); // 플러스친구아이디
|
||||||
|
dataVO.setAlmtk_tmplt_cd(""); // 템플릿코드
|
||||||
|
dataVO.setAlmtk_err_ltrs_snd_yn("Y"); // 오류자문자발송여부
|
||||||
|
dataVO.setAlmtk_btn_trnm_tycd("2"); // 카카오버튼전송방식 1-format string 2-JSON 3-XML
|
||||||
|
}
|
||||||
|
dataVO.setSms_trnm_bzwk_dvcd(""); //업무구분코드
|
||||||
|
dataVO.setSms_bzwk_dcls_dvcd(""); //업무세분코드
|
||||||
|
dataVO.setSms_sys_dvcd("83"); //시스템코드
|
||||||
|
dataVO.setTx_dt(jsonData[0]); //거래일자
|
||||||
|
dataVO.setTx_tktm(jsonData[1].substring(0,6)); //거래시간
|
||||||
|
|
||||||
|
List<SmsDataVO> dataList = new ArrayList<SmsDataVO>();
|
||||||
|
dataList.add(dataVO);
|
||||||
|
|
||||||
|
String header = gson.toJson(stdHeadVO);
|
||||||
|
String data = gson.toJson(dataList);
|
||||||
|
|
||||||
|
// 헤더 + 데이터
|
||||||
|
rtnVal = "{\"HEAD\":" + header + " ,\r\n" + "\"DATA\":\r\n" + " [" + "{\r\n"
|
||||||
|
+ " \"data_dvcd\":\"IO\", \r\n" + " \"BIZ_DATA\":\r\n" + " {\r\n"
|
||||||
|
+ " \"ums_if_data_ncnt\":1, \r\n"
|
||||||
|
+ " \"ums_if_data\":" + data
|
||||||
|
+ " }\r\n" + " }\r\n" + " ]\r\n" + "}";
|
||||||
|
|
||||||
|
} else if ("EMAIL".equals(messageRequest.getMessageType())) {
|
||||||
|
// 표준 헤더
|
||||||
|
stdHeadVO.setTx_id(prop.getUmsEmailTxId()); // 거래ID
|
||||||
|
stdHeadVO.setIf_id(prop.getUmsEmailIfId()); // 인터페이스ID
|
||||||
|
|
||||||
|
// 이메일 데이터
|
||||||
|
EmailDataVO dataVO = new EmailDataVO();
|
||||||
|
dataVO.setUms_evnt_id(""); // UMS이벤트ID(필수)
|
||||||
|
dataVO.setSnd_dman_dt(jsonData[0]);
|
||||||
|
dataVO.setSnd_dman_id("");
|
||||||
|
dataVO.setSnd_dman_sno("1");
|
||||||
|
dataVO.setEmail_titl(messageRequest.getSubject()); // 메일제목
|
||||||
|
dataVO.setCstno(""); // 고객번호(필수)
|
||||||
|
dataVO.setSendr_emaddr(""); // 발신자 이메일
|
||||||
|
dataVO.setSendr_nm(""); // 발신자 이름
|
||||||
|
dataVO.setSndbk_emaddr(""); // 리턴 이메일
|
||||||
|
dataVO.setRecvr_emaddr(messageRequest.getEmail()); // 수신자 이메일(필수)
|
||||||
|
dataVO.setRecvr_nm(messageRequest.getUsername()); // 수신자명(필수)
|
||||||
|
dataVO.setTmplt_mpng_info(messageRequest.getMessage()); // 탬플릿매핑정보
|
||||||
|
dataVO.setTmplt_mpng_rptt_info(""); // 탬플릿매핑반복정보
|
||||||
|
dataVO.setSnd_empno(""); // 발신자ID(필수)
|
||||||
|
dataVO.setSnd_emp_dprm_cd(""); // 발신자부서코드(필수)
|
||||||
|
dataVO.setBzwk_cd(""); // 업무구분코드
|
||||||
|
dataVO.setSub_bzwk_cd(""); // 업무세부코드
|
||||||
|
dataVO.setSys_dvcd(SYS_DVCD);
|
||||||
|
dataVO.setTx_dt(jsonData[0]); //거래일자
|
||||||
|
dataVO.setTx_tktm(jsonData[1].substring(0,6)); //거래시간
|
||||||
|
|
||||||
|
List<EmailDataVO> dataList = new ArrayList<EmailDataVO>();
|
||||||
|
dataList.add(dataVO);
|
||||||
|
|
||||||
|
String header = gson.toJson(stdHeadVO);
|
||||||
|
String data = gson.toJson(dataList);
|
||||||
|
|
||||||
|
// 헤더 + 데이터
|
||||||
|
rtnVal = "{\"HEAD\":" + header + " ,\r\n" + "\"DATA\":\r\n" + " [" + "{\r\n"
|
||||||
|
+ " \"data_dvcd\":\"IO\", \r\n" + " \"BIZ_DATA\":\r\n" + " {\r\n"
|
||||||
|
+ " \"ums_if_data_ncnt\":1, \r\n"
|
||||||
|
+ " \"ums_if_data\":" + data
|
||||||
|
+ " }\r\n" + " }\r\n" + " ]\r\n" + "}";
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug(rtnVal);
|
||||||
|
|
||||||
|
return rtnVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String[] makeStdGuidInfo() {
|
||||||
|
// 리턴값
|
||||||
|
String rtnVal[] = new String[3];
|
||||||
|
|
||||||
|
// 현재시간
|
||||||
|
Date currentDate = new Date();
|
||||||
|
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
||||||
|
String formattedDate = sdf.format(currentDate);
|
||||||
|
|
||||||
|
rtnVal[0] = formattedDate.substring(0,8);
|
||||||
|
rtnVal[1] = formattedDate.substring(8);
|
||||||
|
|
||||||
|
// 랜던값
|
||||||
|
String random20 = this.genrateRandomStringNumber20();
|
||||||
|
|
||||||
|
rtnVal[2] = formattedDate + SYS_DVCD + random20;
|
||||||
|
|
||||||
|
return rtnVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String genrateRandomStringNumber20() {
|
||||||
|
String rtnVal= "";
|
||||||
|
|
||||||
|
StringBuilder buffer= new StringBuilder(10);
|
||||||
|
|
||||||
|
// 랜덤값
|
||||||
|
String characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||||
|
|
||||||
|
// 랜덤객체 생성
|
||||||
|
SecureRandom random = new SecureRandom();
|
||||||
|
|
||||||
|
// 반복문
|
||||||
|
for (int i= 0;i< 10;i++) {
|
||||||
|
// 랜덤수
|
||||||
|
int randomIndex = random.nextInt(characters.length());
|
||||||
|
|
||||||
|
// 생성된 랜덤값
|
||||||
|
char randomChar = characters.charAt(randomIndex);
|
||||||
|
|
||||||
|
// 랜덤값 저장
|
||||||
|
buffer.append(randomChar);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 랜덤객체 재생성
|
||||||
|
random = new SecureRandom();
|
||||||
|
|
||||||
|
// 난수 10개 생성
|
||||||
|
int random10 = (int) (Math.pow(10, 9) + random.nextDouble() * Math.pow(10, 9));
|
||||||
|
|
||||||
|
// 문자 숫자 조합(10) + 숫자(10)
|
||||||
|
rtnVal = buffer.toString() + Integer.toString(random10);
|
||||||
|
|
||||||
|
//리턴
|
||||||
|
return rtnVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String genrateRandomStringNumber26() {
|
||||||
|
StringBuilder buffer = new StringBuilder(26);
|
||||||
|
String characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789";
|
||||||
|
SecureRandom random = new SecureRandom();
|
||||||
|
for (int i = 0; i < 26; i++) {
|
||||||
|
buffer.append(characters.charAt(random.nextInt(characters.length())));
|
||||||
|
}
|
||||||
|
return buffer.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package com.eactive.eai.rms.ext.djb.ums.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class EmailDataVO {
|
||||||
|
|
||||||
|
/** UMS이벤트ID */
|
||||||
|
private String ums_evnt_id;
|
||||||
|
|
||||||
|
/** 발송요청일자 */
|
||||||
|
private String snd_dman_dt;
|
||||||
|
|
||||||
|
/** UUID */
|
||||||
|
private String snd_dman_id;
|
||||||
|
|
||||||
|
/** 발송요청순번 */
|
||||||
|
private String snd_dman_sno;
|
||||||
|
|
||||||
|
/** 메일제목 */
|
||||||
|
private String email_titl;
|
||||||
|
|
||||||
|
/** 고객번호 */
|
||||||
|
private String cstno;
|
||||||
|
|
||||||
|
/** 발신자 이메일 */
|
||||||
|
private String sendr_emaddr;
|
||||||
|
|
||||||
|
/** 발신자 이름 */
|
||||||
|
private String sendr_nm;
|
||||||
|
|
||||||
|
/** 리턴 이메일 */
|
||||||
|
private String sndbk_emaddr;
|
||||||
|
|
||||||
|
/** 수신자 이메일 */
|
||||||
|
private String recvr_emaddr;
|
||||||
|
|
||||||
|
/** 수신자명 */
|
||||||
|
private String recvr_nm;
|
||||||
|
|
||||||
|
/** 탬플릿매핑정보 */
|
||||||
|
private String tmplt_mpng_info;
|
||||||
|
|
||||||
|
/** 탬플릿매핑반복정보 */
|
||||||
|
private String tmplt_mpng_rptt_info;
|
||||||
|
|
||||||
|
/** 발신자ID */
|
||||||
|
private String snd_empno;
|
||||||
|
|
||||||
|
/** 발신자부서코드 */
|
||||||
|
private String snd_emp_dprm_cd;
|
||||||
|
|
||||||
|
/** 업무구분코드 */
|
||||||
|
private String bzwk_cd;
|
||||||
|
|
||||||
|
/** 업무세부코드 */
|
||||||
|
private String sub_bzwk_cd;
|
||||||
|
|
||||||
|
/** 시스템코드 */
|
||||||
|
private String sys_dvcd;
|
||||||
|
|
||||||
|
/** 거래일자 */
|
||||||
|
private String tx_dt;
|
||||||
|
|
||||||
|
/** 거래시간 */
|
||||||
|
private String tx_tktm;
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package com.eactive.eai.rms.ext.djb.ums.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SmsDataVO {
|
||||||
|
|
||||||
|
/** 발송요청일자 */
|
||||||
|
private String snd_dman_dt;
|
||||||
|
|
||||||
|
/** UUID */
|
||||||
|
private String snd_dman_id;
|
||||||
|
|
||||||
|
/** 발송구분 */
|
||||||
|
private String snd_dvcd;
|
||||||
|
|
||||||
|
/** 발송타입 */
|
||||||
|
private String ltrs_snd_tycd;
|
||||||
|
|
||||||
|
/** LMS 제목 */
|
||||||
|
private String msg_titl;
|
||||||
|
|
||||||
|
/** 메세지 */
|
||||||
|
private String msg_ctnt;
|
||||||
|
|
||||||
|
/** 수신자번호 */
|
||||||
|
private String recvr_no;
|
||||||
|
|
||||||
|
/** 발신번호 */
|
||||||
|
private String sndn_no;
|
||||||
|
|
||||||
|
/** 요청자(직원번호) */
|
||||||
|
private String snd_empno;
|
||||||
|
|
||||||
|
/** 요청부서코드 */
|
||||||
|
private String snd_emp_dprm_cd;
|
||||||
|
|
||||||
|
/** 알림톡 메시지 종류 */
|
||||||
|
private String msg_snd_tycd;
|
||||||
|
|
||||||
|
/** 플러스친구아이디 */
|
||||||
|
private String almtk_snd_prfl_key;
|
||||||
|
|
||||||
|
/** 템플릿코드 */
|
||||||
|
private String almtk_tmplt_cd;
|
||||||
|
|
||||||
|
/** 오류자문자발송여부 */
|
||||||
|
private String almtk_err_ltrs_snd_yn;
|
||||||
|
|
||||||
|
/** 카카오톡전송방식 */
|
||||||
|
private String almtk_btn_trnm_tycd;
|
||||||
|
|
||||||
|
/** 업무구분 코드 */
|
||||||
|
private String sms_trnm_bzwk_dvcd;
|
||||||
|
|
||||||
|
/** 업무세부코드 */
|
||||||
|
private String sms_bzwk_dcls_dvcd;
|
||||||
|
|
||||||
|
/** 시스템코드 */
|
||||||
|
private String sms_sys_dvcd;
|
||||||
|
|
||||||
|
/** 거래일자 */
|
||||||
|
private String tx_dt;
|
||||||
|
|
||||||
|
/** 거래시간 */
|
||||||
|
private String tx_tktm;
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package com.eactive.eai.rms.ext.djb.ums.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class StdHeadVO {
|
||||||
|
|
||||||
|
private String nxgn_stnd_idfr;
|
||||||
|
|
||||||
|
private String guid;
|
||||||
|
|
||||||
|
private String guid_prgs_no;
|
||||||
|
|
||||||
|
private String stnd_mesg_ver;
|
||||||
|
|
||||||
|
private String ortr_guid;
|
||||||
|
|
||||||
|
private String sect_ecrpt_yn;
|
||||||
|
|
||||||
|
private String frst_trnm_ipad;
|
||||||
|
|
||||||
|
private String frst_trnm_ipv4_addr;
|
||||||
|
|
||||||
|
private String frst_trnm_mac;
|
||||||
|
|
||||||
|
private String frst_mesg_dman_dt;
|
||||||
|
|
||||||
|
private String frst_mesg_dman_time;
|
||||||
|
|
||||||
|
private String frst_trnm_sys_dvcd;
|
||||||
|
|
||||||
|
private String trnm_sys_dvcd;
|
||||||
|
|
||||||
|
private String dman_rspn_dvcd;
|
||||||
|
|
||||||
|
private String sys_env_dvcd;
|
||||||
|
|
||||||
|
private String tx_tycd;
|
||||||
|
|
||||||
|
private String synz_dvcd;
|
||||||
|
|
||||||
|
private String tx_id;
|
||||||
|
|
||||||
|
private String osdch_dvcd;
|
||||||
|
|
||||||
|
private String chnl_tycd;
|
||||||
|
|
||||||
|
private String if_id;
|
||||||
|
|
||||||
|
private String hmab_dvcd;
|
||||||
|
|
||||||
|
private String tx_brcd;
|
||||||
|
|
||||||
|
private String tlrno;
|
||||||
|
|
||||||
|
private String insl_brcd;
|
||||||
|
|
||||||
|
private String blng_brcd;
|
||||||
|
|
||||||
|
private String mgmt_brcd;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.eactive.eai.rms.ext.djb.ums.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SwingCommonVO {
|
||||||
|
|
||||||
|
/** 클라이업트 D */
|
||||||
|
private String clientld;
|
||||||
|
|
||||||
|
/** 클라이언트 시크릿 */
|
||||||
|
private String clientSecret;
|
||||||
|
|
||||||
|
/** 회사코드 */
|
||||||
|
private String companyCode;
|
||||||
|
|
||||||
|
/** 요청고유키 */
|
||||||
|
private String requestUniqueKey;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.eactive.eai.rms.ext.djb.ums.vo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SwingDataVO {
|
||||||
|
|
||||||
|
/** 알림코드 */
|
||||||
|
private String notiCode;
|
||||||
|
|
||||||
|
/** 알림제목 */
|
||||||
|
private String notiTitle;
|
||||||
|
|
||||||
|
/** 알림내용 */
|
||||||
|
private String notiContent;
|
||||||
|
|
||||||
|
/** 수신자정보 */
|
||||||
|
private List<SwingReceiverDataVO> receiverInfo;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.eactive.eai.rms.ext.djb.ums.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SwingReceiverDataVO {
|
||||||
|
|
||||||
|
/** 알림코드 */
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/** 알림제목 */
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/** 알림내용 */
|
||||||
|
private String companyCode;
|
||||||
|
|
||||||
|
/** 수신자정보 */
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
/** 상품명 */
|
||||||
|
private String prdNm;
|
||||||
|
}
|
||||||
@@ -19,9 +19,7 @@ import org.springframework.transaction.support.TransactionTemplate;
|
|||||||
|
|
||||||
import com.eactive.apim.portal.template.entity.MessageRequest;
|
import com.eactive.apim.portal.template.entity.MessageRequest;
|
||||||
import com.eactive.apim.portal.template.repository.MessageRequestRepository;
|
import com.eactive.apim.portal.template.repository.MessageRequestRepository;
|
||||||
import com.eactive.ext.djb.ums.DjbMessengerService;
|
import com.eactive.eai.rms.ext.djb.ums.service.UmsService;
|
||||||
import com.eactive.ext.kjb.ums.KjbEmailSendModule;
|
|
||||||
import com.eactive.ext.kjb.ums.KjbUmsService;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@@ -43,6 +41,8 @@ public class UmsDispatchService {
|
|||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
private final MessageRequestRepository messageRequestRepository;
|
private final MessageRequestRepository messageRequestRepository;
|
||||||
|
|
||||||
|
private final UmsService umsService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public UmsDispatchService(
|
public UmsDispatchService(
|
||||||
@@ -60,6 +60,7 @@ public class UmsDispatchService {
|
|||||||
new ThreadPoolExecutor.CallerRunsPolicy()
|
new ThreadPoolExecutor.CallerRunsPolicy()
|
||||||
);
|
);
|
||||||
this.transactionTemplate = new TransactionTemplate(transactionManager);
|
this.transactionTemplate = new TransactionTemplate(transactionManager);
|
||||||
|
this.umsService = UmsService.getInstance();
|
||||||
log.debug("UmsDispatchService initialized with thread pool - core: {}, max: {}, queue: {}",
|
log.debug("UmsDispatchService initialized with thread pool - core: {}, max: {}, queue: {}",
|
||||||
CORE_POOL_SIZE, MAX_POOL_SIZE, QUEUE_CAPACITY);
|
CORE_POOL_SIZE, MAX_POOL_SIZE, QUEUE_CAPACITY);
|
||||||
}
|
}
|
||||||
@@ -71,17 +72,6 @@ public class UmsDispatchService {
|
|||||||
log.info("UmsDispatchService initialized - KjbUmsService and KjbEmailSendModule ready via singleton");
|
log.info("UmsDispatchService initialized - KjbUmsService and KjbEmailSendModule ready via singleton");
|
||||||
}
|
}
|
||||||
|
|
||||||
private DjbMessengerService getMessengerService() {
|
|
||||||
return DjbMessengerService.getInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
private KjbUmsService getUmsService() {
|
|
||||||
return KjbUmsService.getInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
private KjbEmailSendModule getEmailModule() {
|
|
||||||
return KjbEmailSendModule.getInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Transactional(transactionManager = "transactionManagerForEMS")
|
@Transactional(transactionManager = "transactionManagerForEMS")
|
||||||
@@ -138,15 +128,7 @@ public class UmsDispatchService {
|
|||||||
try {
|
try {
|
||||||
transactionTemplate.execute(status -> {
|
transactionTemplate.execute(status -> {
|
||||||
try {
|
try {
|
||||||
if (DjbMessengerService.isAllowChannel(message)) {
|
umsService.send(message);
|
||||||
getMessengerService().send(message);
|
|
||||||
}
|
|
||||||
if (KjbUmsService.isAllowChannel(message)) {
|
|
||||||
getUmsService().send(message);
|
|
||||||
}
|
|
||||||
if (KjbEmailSendModule.isAllowChannel(message)) {
|
|
||||||
getEmailModule().sendEmail(message);
|
|
||||||
}
|
|
||||||
updateMessageStatus(message, "SENT");
|
updateMessageStatus(message, "SENT");
|
||||||
return null;
|
return null;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user