문자 발송부에 카카오 알림톡 발송로직 추가
This commit is contained in:
parent
d7922f4b73
commit
e7e9496956
14
pom.xml
14
pom.xml
@ -556,6 +556,20 @@
|
|||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ozsfw80.jar</systemPath>
|
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ozsfw80.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- scheduler -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.javacrumbs.shedlock</groupId>
|
||||||
|
<artifactId>shedlock-spring</artifactId>
|
||||||
|
<version>2.5.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- JDBC TEMPLATE -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.javacrumbs.shedlock</groupId>
|
||||||
|
<artifactId>shedlock-provider-jdbc-template</artifactId>
|
||||||
|
<version>2.5.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,6 @@ import java.net.URLEncoder;
|
|||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
@ -32,6 +31,8 @@ import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
|||||||
import kcc.kccadr.adjreqmgr.service.impl.AdjReqMgrDAO;
|
import kcc.kccadr.adjreqmgr.service.impl.AdjReqMgrDAO;
|
||||||
import kcc.kccadr.cmm.KccadrConstants;
|
import kcc.kccadr.cmm.KccadrConstants;
|
||||||
import kcc.kccadr.cmm.service.SMSOracleService;
|
import kcc.kccadr.cmm.service.SMSOracleService;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendDAO;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendVO;
|
||||||
import kcc.kccadr.msg.service.impl.MsgMgrDAO;
|
import kcc.kccadr.msg.service.impl.MsgMgrDAO;
|
||||||
import kcc.let.utl.fcc.service.EgovCryptoUtil;
|
import kcc.let.utl.fcc.service.EgovCryptoUtil;
|
||||||
|
|
||||||
@ -78,7 +79,10 @@ public class SMSOracleServiceImpl extends EgovAbstractServiceImpl implements SM
|
|||||||
|
|
||||||
@Resource(name = "adrSmsLogGnrService")
|
@Resource(name = "adrSmsLogGnrService")
|
||||||
private EgovIdGnrService idgenService;
|
private EgovIdGnrService idgenService;
|
||||||
|
|
||||||
|
//카카오 알림톡
|
||||||
|
@Resource(name = "kakaoAtSendDAO")
|
||||||
|
private KakaoAtSendDAO kakaoAtSendDAO;
|
||||||
|
|
||||||
// 오라클 연동 테스트
|
// 오라클 연동 테스트
|
||||||
public void selectOracleTest() throws Exception {
|
public void selectOracleTest() throws Exception {
|
||||||
@ -146,6 +150,19 @@ public class SMSOracleServiceImpl extends EgovAbstractServiceImpl implements SM
|
|||||||
msgMgrDAO.insertAdrSmsLog(map); // SMS 이력 등록 단문 > 전자조정
|
msgMgrDAO.insertAdrSmsLog(map); // SMS 이력 등록 단문 > 전자조정
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//카카오 알림톡 DB 저장
|
||||||
|
KakaoAtSendVO apiVO = new KakaoAtSendVO();
|
||||||
|
|
||||||
|
//msgTy별 템플릿 코드 가져오기
|
||||||
|
String msgTy = (String) map.get("msgTy");
|
||||||
|
String templateCode = msgMgrDAO.selectMsgMgrTemplateCode(msgTy);
|
||||||
|
|
||||||
|
apiVO.setSendTo(rpplPhone);
|
||||||
|
apiVO.setTemplatecode(templateCode);
|
||||||
|
apiVO.setMessage(sendMsg);
|
||||||
|
|
||||||
|
kakaoAtSendDAO.insertKakaoAtSendBatch(apiVO);
|
||||||
|
|
||||||
result = "succ";
|
result = "succ";
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -606,6 +623,18 @@ public class SMSOracleServiceImpl extends EgovAbstractServiceImpl implements SM
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//카카오 알림톡 DB 저장
|
||||||
|
KakaoAtSendVO apiVO = new KakaoAtSendVO();
|
||||||
|
|
||||||
|
//msgTy별 템플릿 코드 가져오기
|
||||||
|
String msgTy = (String) map.get("msgTy");
|
||||||
|
String templateCode = msgMgrDAO.selectMsgMgrTemplateCode(msgTy);
|
||||||
|
|
||||||
|
apiVO.setSendTo(rpplPhone);
|
||||||
|
apiVO.setTemplatecode(templateCode);
|
||||||
|
apiVO.setMessage(sendMsg);
|
||||||
|
|
||||||
|
kakaoAtSendDAO.insertKakaoAtSendBatch(apiVO);
|
||||||
|
|
||||||
|
|
||||||
result = "succ";
|
result = "succ";
|
||||||
|
|||||||
89
src/main/java/kcc/kccadr/message/SchedulerUtil.java
Normal file
89
src/main/java/kcc/kccadr/message/SchedulerUtil.java
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
package kcc.kccadr.message;
|
||||||
|
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendService;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendVO;
|
||||||
|
import kcc.kccadr.message.web.KakaoAtSendAPI;
|
||||||
|
import net.javacrumbs.shedlock.core.LockProvider;
|
||||||
|
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||||
|
import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider;
|
||||||
|
import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;
|
||||||
|
|
||||||
|
|
||||||
|
@Service("SchedulerUtil")
|
||||||
|
@EnableScheduling
|
||||||
|
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S") // Scheduler Lock 사용 가능 설정 (기본 30초동안 Lock)
|
||||||
|
public class SchedulerUtil {
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.BizPpurio.siteUrl']}")
|
||||||
|
private String apiUrl;
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.prod.islocal']}")
|
||||||
|
private String isLocal;
|
||||||
|
|
||||||
|
@Resource (name = "KakaoAtSendService")
|
||||||
|
private KakaoAtSendService kakaoAtSendService;
|
||||||
|
|
||||||
|
private static final String ONE_MIN = "PT1M"; // 1분동안 LOCK
|
||||||
|
|
||||||
|
//로컬 테스트용 아이피 허용
|
||||||
|
private String myLocalIp = "192.168.0.40";
|
||||||
|
|
||||||
|
//운영 외부망 WAS1
|
||||||
|
private String dmzIp1 = "222.231.43.66";
|
||||||
|
//운영 외부망 WAS2
|
||||||
|
private String dmzIp2 = "222.231.43.69";
|
||||||
|
|
||||||
|
//10분마다 실행
|
||||||
|
@Scheduled(cron = "0 0/10 * * * *")
|
||||||
|
@SchedulerLock(name = "kakaoAtSendPrcs", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
|
||||||
|
public void kakaoAtSendPrcs() throws Exception {
|
||||||
|
|
||||||
|
String ip = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
ip = InetAddress.getLocalHost().getHostAddress();
|
||||||
|
|
||||||
|
if(ip.equals(myLocalIp) || ip.equals(dmzIp1) || ip.equals(dmzIp2) ) {
|
||||||
|
//접속 서버 별 분기처리 필요
|
||||||
|
|
||||||
|
List<KakaoAtSendVO> list = kakaoAtSendService.selectKakaoAtList();
|
||||||
|
|
||||||
|
int listSize = list.size();
|
||||||
|
|
||||||
|
for(int i=0; i<listSize ; i++) {
|
||||||
|
|
||||||
|
KakaoAtSendAPI kakaoAtSendAPI = KakaoAtSendAPI.getInstance();
|
||||||
|
String status = kakaoAtSendAPI.sendMessage(list.get(i), isLocal, apiUrl);
|
||||||
|
|
||||||
|
if("success".equals(status)) {
|
||||||
|
kakaoAtSendService.updateKakaoAtDetail(list.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public LockProvider lockProvider(DataSource dataSource) {
|
||||||
|
return new JdbcTemplateLockProvider(dataSource);
|
||||||
|
}
|
||||||
|
}
|
||||||
25
src/main/java/kcc/kccadr/message/service/KakaoAtSendDAO.java
Normal file
25
src/main/java/kcc/kccadr/message/service/KakaoAtSendDAO.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package kcc.kccadr.message.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
||||||
|
|
||||||
|
@Repository("kakaoAtSendDAO")
|
||||||
|
public class KakaoAtSendDAO extends EgovAbstractDAO {
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<KakaoAtSendVO> selectKakaoAtList() throws Exception{
|
||||||
|
return (List<KakaoAtSendVO>) list("kakaoAtSendDAO.selectKakaoAtList");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void insertKakaoAtSendBatch(KakaoAtSendVO kakaoAtSendVO) throws Exception{
|
||||||
|
insert("kakaoAtSendDAO.insertKakaoAtSendBatch", kakaoAtSendVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateKakaoAtDetail(KakaoAtSendVO kakaoAtSendVO) throws Exception{
|
||||||
|
update("kakaoAtSendDAO.updateKakaoAtDetail", kakaoAtSendVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package kcc.kccadr.message.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface KakaoAtSendService {
|
||||||
|
|
||||||
|
List<KakaoAtSendVO> selectKakaoAtList() throws Exception;
|
||||||
|
|
||||||
|
void updateKakaoAtDetail(KakaoAtSendVO kakaoAtSendVO) throws Exception;
|
||||||
|
|
||||||
|
void insertKakaoAtSendBatch(KakaoAtSendVO kakaoAtSendVO) throws Exception;
|
||||||
|
|
||||||
|
}
|
||||||
229
src/main/java/kcc/kccadr/message/service/KakaoAtSendVO.java
Normal file
229
src/main/java/kcc/kccadr/message/service/KakaoAtSendVO.java
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
package kcc.kccadr.message.service;
|
||||||
|
|
||||||
|
public class KakaoAtSendVO {
|
||||||
|
|
||||||
|
//token
|
||||||
|
private String accessToken;
|
||||||
|
private String type;
|
||||||
|
private String expired;
|
||||||
|
|
||||||
|
//공통
|
||||||
|
private String sendFrom;
|
||||||
|
private String sendTo;
|
||||||
|
private String country;
|
||||||
|
private String content;
|
||||||
|
private String refkey;
|
||||||
|
private String userinfo;
|
||||||
|
private String resend;
|
||||||
|
private String recontent;
|
||||||
|
private String resellercode;
|
||||||
|
private String sendtime;
|
||||||
|
|
||||||
|
//알림톡
|
||||||
|
private String message;
|
||||||
|
private String senderkey;
|
||||||
|
private String templatecode;
|
||||||
|
private String quickreply;
|
||||||
|
private String title;
|
||||||
|
private String header;
|
||||||
|
private String kakaoAtSeq;
|
||||||
|
private String sendFlag;
|
||||||
|
private String sendTime;
|
||||||
|
|
||||||
|
//global
|
||||||
|
private String isLocal;
|
||||||
|
private String apiUrl;
|
||||||
|
|
||||||
|
|
||||||
|
public String getAccessToken() {
|
||||||
|
return accessToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccessToken(String accessToken) {
|
||||||
|
this.accessToken = accessToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getExpired() {
|
||||||
|
return expired;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExpired(String expired) {
|
||||||
|
this.expired = expired;
|
||||||
|
}
|
||||||
|
public String getSendFrom() {
|
||||||
|
return sendFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendFrom(String sendFrom) {
|
||||||
|
this.sendFrom = sendFrom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSendTo() {
|
||||||
|
return sendTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendTo(String sendTo) {
|
||||||
|
this.sendTo = sendTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCountry() {
|
||||||
|
return country;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCountry(String country) {
|
||||||
|
this.country = country;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContent(String content) {
|
||||||
|
this.content = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRefkey() {
|
||||||
|
return refkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRefkey(String refkey) {
|
||||||
|
this.refkey = refkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserinfo() {
|
||||||
|
return userinfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserinfo(String userinfo) {
|
||||||
|
this.userinfo = userinfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getResend() {
|
||||||
|
return resend;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResend(String resend) {
|
||||||
|
this.resend = resend;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRecontent() {
|
||||||
|
return recontent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecontent(String recontent) {
|
||||||
|
this.recontent = recontent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getResellercode() {
|
||||||
|
return resellercode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResellercode(String resellercode) {
|
||||||
|
this.resellercode = resellercode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSendtime() {
|
||||||
|
return sendtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendtime(String sendtime) {
|
||||||
|
this.sendtime = sendtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSenderkey() {
|
||||||
|
return senderkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSenderkey(String senderkey) {
|
||||||
|
this.senderkey = senderkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTemplatecode() {
|
||||||
|
return templatecode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemplatecode(String templatecode) {
|
||||||
|
this.templatecode = templatecode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getQuickreply() {
|
||||||
|
return quickreply;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQuickreply(String quickreply) {
|
||||||
|
this.quickreply = quickreply;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHeader() {
|
||||||
|
return header;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeader(String header) {
|
||||||
|
this.header = header;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIsLocal() {
|
||||||
|
return isLocal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsLocal(String isLocal) {
|
||||||
|
this.isLocal = isLocal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getApiUrl() {
|
||||||
|
return apiUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setApiUrl(String apiUrl) {
|
||||||
|
this.apiUrl = apiUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getKakaoAtSeq() {
|
||||||
|
return kakaoAtSeq;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKakaoAtSeq(String kakaoAtSeq) {
|
||||||
|
this.kakaoAtSeq = kakaoAtSeq;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSendFlag() {
|
||||||
|
return sendFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendFlag(String sendFlag) {
|
||||||
|
this.sendFlag = sendFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSendTime() {
|
||||||
|
return sendTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendTime(String sendTime) {
|
||||||
|
this.sendTime = sendTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
package kcc.kccadr.message.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendDAO;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendService;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendVO;
|
||||||
|
|
||||||
|
@Service("KakaoAtSendService")
|
||||||
|
public class KakaoAtSendServiceImpl implements KakaoAtSendService {
|
||||||
|
|
||||||
|
@Resource(name = "kakaoAtSendDAO")
|
||||||
|
private KakaoAtSendDAO kakaoAtSendDAO;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<KakaoAtSendVO> selectKakaoAtList() throws Exception {
|
||||||
|
return kakaoAtSendDAO.selectKakaoAtList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertKakaoAtSendBatch(KakaoAtSendVO kakaoAtSendVO) throws Exception {
|
||||||
|
kakaoAtSendDAO.insertKakaoAtSendBatch(kakaoAtSendVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateKakaoAtDetail(KakaoAtSendVO kakaoAtSendVO) throws Exception {
|
||||||
|
kakaoAtSendDAO.updateKakaoAtDetail(kakaoAtSendVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
215
src/main/java/kcc/kccadr/message/web/KakaoAtSendAPI.java
Normal file
215
src/main/java/kcc/kccadr/message/web/KakaoAtSendAPI.java
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
package kcc.kccadr.message.web;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.security.KeyManagementException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendVO;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Class Name : KakaoAtSendAPI.java
|
||||||
|
* @Description : 카카오알림톡 API Class
|
||||||
|
* @Modification Information
|
||||||
|
* @
|
||||||
|
* @ 수정일 수정자 수정내용
|
||||||
|
* @ --------- --------- -------------------------------
|
||||||
|
* @ 2022.11.29 안주영 최초생성
|
||||||
|
*
|
||||||
|
* @author An Joo Young
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class KakaoAtSendAPI{
|
||||||
|
|
||||||
|
private static KakaoAtSendAPI bizPpurioAPI = null;
|
||||||
|
|
||||||
|
private String tokenUrl = "/v1/token";
|
||||||
|
private String msgUrl = "/v3/message";
|
||||||
|
|
||||||
|
private String senderkey = "b734cce3d7e2349286ea2ab70804bcb2283facb5";
|
||||||
|
|
||||||
|
private String input = null;
|
||||||
|
|
||||||
|
StringBuffer result = null;
|
||||||
|
|
||||||
|
URL url = null;
|
||||||
|
|
||||||
|
KakaoAtSendVO vo = new KakaoAtSendVO();
|
||||||
|
|
||||||
|
|
||||||
|
//비즈뿌리오 계정
|
||||||
|
private static String BIZPPURIO_ACCOUNT = "adr_copyright";
|
||||||
|
|
||||||
|
private static String BIZPPURIO_ACCOUNT_PASSWORD = "Copy0723!";
|
||||||
|
|
||||||
|
|
||||||
|
// Token 발행
|
||||||
|
private String getAccessToken(String isLocal, String apiUrl) {
|
||||||
|
|
||||||
|
result = new StringBuffer();
|
||||||
|
String token = "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
|
||||||
|
if(!"real".equals(isLocal)) {
|
||||||
|
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
|
||||||
|
public X509Certificate[] getAcceptedIssuers() { return null; }
|
||||||
|
public void checkClientTrusted(X509Certificate[] chain, String authType) { }
|
||||||
|
public void checkServerTrusted(X509Certificate[] chain, String authType) { } } };
|
||||||
|
SSLContext sc = SSLContext.getInstance("SSL");
|
||||||
|
sc.init(null, trustAllCerts, new java.security.SecureRandom());
|
||||||
|
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
||||||
|
}
|
||||||
|
|
||||||
|
url = new URL(apiUrl + tokenUrl);
|
||||||
|
|
||||||
|
/** Connection 설정 **/
|
||||||
|
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("POST");
|
||||||
|
connection.addRequestProperty("Content-Type", "application/json");
|
||||||
|
connection.addRequestProperty("Accept-Charset", "UTF-8");
|
||||||
|
|
||||||
|
//Base64 인코딩
|
||||||
|
String idpw = BIZPPURIO_ACCOUNT + ":" + BIZPPURIO_ACCOUNT_PASSWORD;
|
||||||
|
String authData = Base64.getEncoder().encodeToString(idpw.getBytes());
|
||||||
|
|
||||||
|
connection.addRequestProperty("Authorization", "Basic " + authData);
|
||||||
|
|
||||||
|
connection.setDoInput(true);
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
connection.setUseCaches(false);
|
||||||
|
connection.setConnectTimeout(15000);
|
||||||
|
|
||||||
|
/** Request **/
|
||||||
|
OutputStream os = connection.getOutputStream();
|
||||||
|
os.flush();
|
||||||
|
|
||||||
|
|
||||||
|
/** Response **/
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
||||||
|
|
||||||
|
while ((input = in.readLine()) != null) {
|
||||||
|
result.append(input);
|
||||||
|
}
|
||||||
|
connection.disconnect();
|
||||||
|
|
||||||
|
// System.out.println("Response : " + result.toString());
|
||||||
|
|
||||||
|
JSONObject jObject = new JSONObject(result.toString());
|
||||||
|
token = jObject.getString("accesstoken");
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
} catch (KeyManagementException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String sendMessage(KakaoAtSendVO vo, String isLocal, String apiUrl) {
|
||||||
|
|
||||||
|
vo.setAccessToken(getAccessToken(isLocal,apiUrl));
|
||||||
|
String status = "";
|
||||||
|
|
||||||
|
result = new StringBuffer();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
/** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/
|
||||||
|
if(!"real".equals(isLocal)) {
|
||||||
|
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
|
||||||
|
public X509Certificate[] getAcceptedIssuers() { return null; }
|
||||||
|
public void checkClientTrusted(X509Certificate[] chain, String authType) { }
|
||||||
|
public void checkServerTrusted(X509Certificate[] chain, String authType) { } } };
|
||||||
|
SSLContext sc = SSLContext.getInstance("SSL");
|
||||||
|
sc.init(null, trustAllCerts, new java.security.SecureRandom());
|
||||||
|
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
||||||
|
}
|
||||||
|
|
||||||
|
url = new URL(apiUrl + msgUrl);
|
||||||
|
|
||||||
|
/** Connection 설정 **/
|
||||||
|
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("POST");
|
||||||
|
connection.addRequestProperty("Content-Type", "application/json");
|
||||||
|
connection.addRequestProperty("Accept-Charset", "UTF-8");
|
||||||
|
connection.addRequestProperty("Authorization", "Bearer " + vo.getAccessToken());
|
||||||
|
connection.setDoInput(true);
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
connection.setUseCaches(false);
|
||||||
|
connection.setConnectTimeout(15000);
|
||||||
|
|
||||||
|
|
||||||
|
/** Request **/
|
||||||
|
OutputStream os = connection.getOutputStream();
|
||||||
|
|
||||||
|
String at = "{\"account\":\""+BIZPPURIO_ACCOUNT+"\",\"refkey\":\"1234\","
|
||||||
|
+ "\"type\":\"at\",\"from\":\"0226690044\",\"to\":\""+vo.getSendTo()+"\","
|
||||||
|
+ "\"content\":{\"at\":{\"senderkey\":\""+ senderkey +"\",\"templatecode\":\""+vo.getTemplatecode()+"\",\"message\":\""+vo.getMessage()+"\"}}}";
|
||||||
|
|
||||||
|
os.write(at.getBytes("UTF-8"));
|
||||||
|
os.flush();
|
||||||
|
|
||||||
|
/** Response **/
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
||||||
|
while ((input = in.readLine()) != null) {
|
||||||
|
result.append(input);
|
||||||
|
}
|
||||||
|
connection.disconnect();
|
||||||
|
|
||||||
|
System.out.println("Response : " + result.toString());
|
||||||
|
|
||||||
|
JSONObject jObject = new JSONObject(result.toString());
|
||||||
|
status = jObject.getString("description");
|
||||||
|
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (KeyManagementException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static KakaoAtSendAPI getInstance()
|
||||||
|
{
|
||||||
|
if(bizPpurioAPI==null)
|
||||||
|
{
|
||||||
|
bizPpurioAPI = new KakaoAtSendAPI();
|
||||||
|
}
|
||||||
|
return bizPpurioAPI;
|
||||||
|
}
|
||||||
|
|
||||||
|
private KakaoAtSendAPI() {}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
package kcc.kccadr.message.web;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendService;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendVO;
|
||||||
|
import kcc.kccadr.msg.service.MsgMgrService;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class KakaoAtSendController {
|
||||||
|
|
||||||
|
// 발송문구 관리 서비스단
|
||||||
|
@Resource(name = "MsgMgrService")
|
||||||
|
private MsgMgrService msgMgrService;
|
||||||
|
|
||||||
|
@Resource (name = "KakaoAtSendService")
|
||||||
|
private KakaoAtSendService kakaoAtSendService;
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.BizPpurio.siteUrl']}")
|
||||||
|
private String apiUrl;
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.prod.islocal']}")
|
||||||
|
private String isLocal;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 알림톡 배치 수동 실행
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/kccadr/message/kakaoAtSendPrcsTest.do")
|
||||||
|
public ModelAndView kakaoAtSendPrcsTest(HttpServletRequest request) throws Exception {
|
||||||
|
|
||||||
|
ModelAndView modelAndView = new ModelAndView();
|
||||||
|
modelAndView.setViewName("jsonView");
|
||||||
|
|
||||||
|
List<KakaoAtSendVO> list = kakaoAtSendService.selectKakaoAtList();
|
||||||
|
|
||||||
|
int listSize = list.size();
|
||||||
|
|
||||||
|
for(int i=0; i<listSize ; i++) {
|
||||||
|
|
||||||
|
KakaoAtSendAPI kakaoAtSendAPI = KakaoAtSendAPI.getInstance();
|
||||||
|
kakaoAtSendAPI.sendMessage(list.get(i), isLocal, apiUrl);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return modelAndView;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -19,6 +19,7 @@ public class MsgMgrVO extends ComDefaultVO implements Serializable{
|
|||||||
private String frstRegisterId; // 등록자
|
private String frstRegisterId; // 등록자
|
||||||
private String lastUpdtPnttm; // 수정일시
|
private String lastUpdtPnttm; // 수정일시
|
||||||
private String lastUpdusrId; // 수정자
|
private String lastUpdusrId; // 수정자
|
||||||
|
private String templateCode; //카카오알림톡 템플릿코드
|
||||||
|
|
||||||
public String getMsgSeq() {
|
public String getMsgSeq() {
|
||||||
return msgSeq;
|
return msgSeq;
|
||||||
@ -68,6 +69,12 @@ public class MsgMgrVO extends ComDefaultVO implements Serializable{
|
|||||||
public void setLastUpdusrId(String lastUpdusrId) {
|
public void setLastUpdusrId(String lastUpdusrId) {
|
||||||
this.lastUpdusrId = lastUpdusrId;
|
this.lastUpdusrId = lastUpdusrId;
|
||||||
}
|
}
|
||||||
|
public String getTemplateCode() {
|
||||||
|
return templateCode;
|
||||||
|
}
|
||||||
|
public void setTemplateCode(String templateCode) {
|
||||||
|
this.templateCode = templateCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -30,6 +30,12 @@ public class MsgMgrDAO extends EgovAbstractDAO {
|
|||||||
return (MsgMgrVO) select("MsgMgrDAO.selectMsgMgrInfo", msgMgrVO);
|
return (MsgMgrVO) select("MsgMgrDAO.selectMsgMgrInfo", msgMgrVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//발송유형별 알림톡 템플릿 코드 가져오기
|
||||||
|
public String selectMsgMgrTemplateCode(String msgTy) throws Exception{
|
||||||
|
return (String) select("MsgMgrDAO.selectMsgMgrTemplateCode", msgTy);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//발송문구 정보 수정하기
|
//발송문구 정보 수정하기
|
||||||
public void updateMsgMgrInfo(MsgMgrVO msgMgrVO) throws Exception{
|
public void updateMsgMgrInfo(MsgMgrVO msgMgrVO) throws Exception{
|
||||||
update("MsgMgrDAO.updateMsgMgrInfo", msgMgrVO);
|
update("MsgMgrDAO.updateMsgMgrInfo", msgMgrVO);
|
||||||
|
|||||||
@ -69,6 +69,8 @@ import kcc.com.cmm.util.WebUtil;
|
|||||||
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
||||||
import kcc.kccadr.cmm.service.SMSOracleService;
|
import kcc.kccadr.cmm.service.SMSOracleService;
|
||||||
import kcc.kccadr.kccadrCom.web.OtpCertUtil;
|
import kcc.kccadr.kccadrCom.web.OtpCertUtil;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendService;
|
||||||
|
import kcc.kccadr.message.service.KakaoAtSendVO;
|
||||||
import kcc.let.sym.log.clg.service.EgovLoginLogService;
|
import kcc.let.sym.log.clg.service.EgovLoginLogService;
|
||||||
import kcc.let.sym.log.clg.service.LoginLog;
|
import kcc.let.sym.log.clg.service.LoginLog;
|
||||||
import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO;
|
import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO;
|
||||||
@ -180,6 +182,9 @@ public class EgovLoginController {
|
|||||||
|
|
||||||
@Resource(name = "OtpCertUtil")
|
@Resource(name = "OtpCertUtil")
|
||||||
private OtpCertUtil otpCertUtil;
|
private OtpCertUtil otpCertUtil;
|
||||||
|
|
||||||
|
@Resource(name = "KakaoAtSendService")
|
||||||
|
private KakaoAtSendService kakaoAtSendService;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2255,7 +2260,7 @@ public class EgovLoginController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* (관리자) OTP인증 인증번호 발송 Ajax
|
* (관리자) OTP인증 인증번호 발송 Ajax (문자, 알림톡)
|
||||||
*
|
*
|
||||||
* @return model
|
* @return model
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@ -2273,9 +2278,22 @@ public class EgovLoginController {
|
|||||||
adjReqMgrVO.setFrstRegisterId(loginService.selectUniqueId(userId));
|
adjReqMgrVO.setFrstRegisterId(loginService.selectUniqueId(userId));
|
||||||
|
|
||||||
// data set
|
// data set
|
||||||
adjReqMgrVO = otpDataSet(adjReqMgrVO);
|
adjReqMgrVO = otpDataSet(adjReqMgrVO, "sms");
|
||||||
|
|
||||||
sMSOracleService.insertSmsOtpCertNumSend(adjReqMgrVO);
|
sMSOracleService.insertSmsOtpCertNumSend(adjReqMgrVO);
|
||||||
|
|
||||||
|
|
||||||
|
// 문자내용 알림톡발송
|
||||||
|
KakaoAtSendVO atVO = new KakaoAtSendVO();
|
||||||
|
// data set
|
||||||
|
adjReqMgrVO = otpDataSet(adjReqMgrVO, "at");
|
||||||
|
|
||||||
|
atVO.setTemplatecode("bizp_2022113014301718895978260"); // 로그인 OTP 템플릿 코드
|
||||||
|
atVO.setSendTo(adjReqMgrVO.getTrPhone()); //수신자
|
||||||
|
atVO.setMessage(adjReqMgrVO.getSendMsg()); //발송메시지
|
||||||
|
|
||||||
|
kakaoAtSendService.insertKakaoAtSendBatch(atVO);
|
||||||
|
// 문자내용 알림톡발송 끝
|
||||||
|
|
||||||
modelAndView.addObject("result", "SUCCESS");
|
modelAndView.addObject("result", "SUCCESS");
|
||||||
|
|
||||||
@ -2293,10 +2311,17 @@ public class EgovLoginController {
|
|||||||
*
|
*
|
||||||
* @return AdjReqMgrVO
|
* @return AdjReqMgrVO
|
||||||
*/
|
*/
|
||||||
private AdjReqMgrVO otpDataSet(AdjReqMgrVO adjReqMgrVO) {
|
private AdjReqMgrVO otpDataSet(AdjReqMgrVO adjReqMgrVO, String flag) {
|
||||||
|
|
||||||
// 인증번호 난수 생성
|
// 인증번호 난수 생성
|
||||||
String contents = "전자조정시스템 OTP 인증 로그인 인증번호 문자입니다. 인증번호는 : %code% 입니다.";
|
String contents = "";
|
||||||
|
|
||||||
|
if("sms".equals(flag)) {
|
||||||
|
contents = "전자조정시스템 OTP 인증 로그인 인증번호 문자입니다. 인증번호는 : %code% 입니다.";
|
||||||
|
} else if("at".equals(flag)) {
|
||||||
|
contents = "전자조정시스템 OTP 인증 로그인 인증번호 문자입니다. \n인증번호는 : %code% 입니다.";
|
||||||
|
}
|
||||||
|
|
||||||
String code = "";
|
String code = "";
|
||||||
long seed = System.currentTimeMillis();
|
long seed = System.currentTimeMillis();
|
||||||
Random random = new Random(seed);
|
Random random = new Random(seed);
|
||||||
@ -2317,6 +2342,7 @@ public class EgovLoginController {
|
|||||||
|
|
||||||
return adjReqMgrVO;
|
return adjReqMgrVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -191,4 +191,10 @@ Globals.pay.siteDomain=http://119.193.215.98:8081/web/kccadr/inipay
|
|||||||
#inipay \uacb0\uc81c
|
#inipay \uacb0\uc81c
|
||||||
#Globals.pay.mid=crosorkr01
|
#Globals.pay.mid=crosorkr01
|
||||||
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
||||||
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
||||||
|
|
||||||
|
# \uce74\uce74\uc624\uc54c\ub9bc\ud1a1(\ube44\uc988\ubfcc\ub9ac\uc624) API URL
|
||||||
|
#\uac1c\ubc1c\uc11c\ubc84
|
||||||
|
Globals.BizPpurio.siteUrl=https://dev-api.bizppurio.com
|
||||||
|
#\uc2e4\uc11c\ubc84
|
||||||
|
#Globals.BizPpurio.siteUrl=https://api.bizppurio.com
|
||||||
|
|||||||
@ -189,4 +189,10 @@ Globals.pay.siteDomain=http://119.193.215.98:8087/web/kccadr/inipay
|
|||||||
#inipay \uacb0\uc81c
|
#inipay \uacb0\uc81c
|
||||||
#Globals.pay.mid=crosorkr01
|
#Globals.pay.mid=crosorkr01
|
||||||
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
#Globals.pay.signKey=UE9idGFmcGJEdU1HR04zbEdLdUM0QT09
|
||||||
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
#Globals.pay.siteDomain=https://adr.copyright.or.kr/web/kccadr/inipay
|
||||||
|
|
||||||
|
# \uce74\uce74\uc624\uc54c\ub9bc\ud1a1(\ube44\uc988\ubfcc\ub9ac\uc624) API URL
|
||||||
|
#\uac1c\ubc1c\uc11c\ubc84
|
||||||
|
#Globals.BizPpurio.siteUrl=https://dev-api.bizppurio.com
|
||||||
|
#\uc2e4\uc11c\ubc84
|
||||||
|
Globals.BizPpurio.siteUrl=https://api.bizppurio.com
|
||||||
|
|||||||
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
|
||||||
|
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
|
||||||
|
|
||||||
|
<sqlMapConfig>
|
||||||
|
<sqlMap resource="egovframework/sqlmap/kccadr/message/KakaoAtSend_SQL_Mysql.xml"/>
|
||||||
|
</sqlMapConfig>
|
||||||
@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
|
||||||
|
<sqlMap namespace="KakaoAtSendDAO">
|
||||||
|
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
|
||||||
|
<typeAlias alias="KakaoAtSendVO" type="kcc.kccadr.message.service.KakaoAtSendVO"/>
|
||||||
|
|
||||||
|
<insert id="kakaoAtSendDAO.insertKakaoAtSendBatch" parameterClass="KakaoAtSendVO">
|
||||||
|
|
||||||
|
INSERT INTO adr_kakao_at_batch
|
||||||
|
(
|
||||||
|
template_code
|
||||||
|
,send_to
|
||||||
|
,message
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
#templateCode#
|
||||||
|
,#sendTo#
|
||||||
|
,#message#
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="kakaoAtSendDAO.selectKakaoAtList" resultClass="KakaoAtSendVO">
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
template_code AS templateCode
|
||||||
|
,send_to AS sendTo
|
||||||
|
,message AS message
|
||||||
|
FROM
|
||||||
|
adr_kakao_at_batch
|
||||||
|
WHERE
|
||||||
|
send_flag='N'
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 발송문구 수정 처리 -->
|
||||||
|
<update id="kakaoAtSendDAO.updateKakaoAtDetail" parameterClass="KakaoAtSendVO">
|
||||||
|
|
||||||
|
UPDATE
|
||||||
|
adr_kakao_at_batch
|
||||||
|
SET
|
||||||
|
send_flag = 'Y'
|
||||||
|
,send_time = NOW()
|
||||||
|
WHERE
|
||||||
|
kakao_at_seq = #kakaoAtSeq#
|
||||||
|
|
||||||
|
</update>
|
||||||
|
|
||||||
|
</sqlMap>
|
||||||
@ -31,7 +31,8 @@
|
|||||||
FRST_REGISTER_ID AS frstRegisterId,
|
FRST_REGISTER_ID AS frstRegisterId,
|
||||||
TO_CHAR ( FRST_REGIST_PNTTM, 'YYYY/MM/DD' ) AS frstRegistPnttm,
|
TO_CHAR ( FRST_REGIST_PNTTM, 'YYYY/MM/DD' ) AS frstRegistPnttm,
|
||||||
TO_CHAR ( LAST_UPDT_PNTTM, 'YYYY/MM/DD' ) AS lastUpdtPnttm,
|
TO_CHAR ( LAST_UPDT_PNTTM, 'YYYY/MM/DD' ) AS lastUpdtPnttm,
|
||||||
LAST_UPDUSR_ID AS lastUpdusrId
|
LAST_UPDUSR_ID AS lastUpdusrId,
|
||||||
|
TEMPLATE_CODE AS templateCode
|
||||||
FROM ADR_MSG_MGR
|
FROM ADR_MSG_MGR
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
<isNotEmpty property="searchKeyword">
|
<isNotEmpty property="searchKeyword">
|
||||||
@ -60,12 +61,24 @@
|
|||||||
FRST_REGISTER_ID AS frstRegisterId,
|
FRST_REGISTER_ID AS frstRegisterId,
|
||||||
FRST_REGIST_PNTTM AS frstRegistPnttm,
|
FRST_REGIST_PNTTM AS frstRegistPnttm,
|
||||||
LAST_UPDT_PNTTM AS lastUpdtPnttm,
|
LAST_UPDT_PNTTM AS lastUpdtPnttm,
|
||||||
LAST_UPDUSR_ID AS lastUpdusrId
|
LAST_UPDUSR_ID AS lastUpdusrId,
|
||||||
|
TEMPLATE_CODE AS templateCode
|
||||||
FROM ADR_MSG_MGR
|
FROM ADR_MSG_MGR
|
||||||
WHERE MSG_SEQ = #msgSeq#
|
WHERE MSG_SEQ = #msgSeq#
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 발송문구 상세보기 -->
|
||||||
|
<select id="MsgMgrDAO.selectMsgMgrTemplateCode" parameterClass="String" resultClass="String">
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
TEMPLATE_CODE AS templateCode
|
||||||
|
FROM
|
||||||
|
ADR_MSG_MGR
|
||||||
|
WHERE MSG_TY = #msgTy#
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
<!-- 발송문구 수정 처리 -->
|
<!-- 발송문구 수정 처리 -->
|
||||||
<update id="MsgMgrDAO.updateMsgMgrInfo" parameterClass="MsgMgrVO">
|
<update id="MsgMgrDAO.updateMsgMgrInfo" parameterClass="MsgMgrVO">
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user