이메일, 문자 전송 로직 추가

This commit is contained in:
name 2023-09-19 15:30:12 +09:00
parent 7bd9c285af
commit 29b2a97fa9
14 changed files with 359 additions and 78 deletions

View File

@ -258,10 +258,8 @@ public class AdjReqMgrVO extends ComDefaultVO implements Serializable{
private String userId; private String userId;
private String smsSendTypeCd; // 발송유형 - CC052 private String smsSendTypeCd; // 발송유형 - CC052
private String certNum; // 인증번호 private String certNum; // 인증번호
private String[] phoneList; //수신번호 리스트 private String[] phoneList; //수신번호 리스트
//저작위 email 발송 //저작위 email 발송
/* /*
* emailTy ( 확인필요 ) * emailTy ( 확인필요 )

View File

@ -148,7 +148,7 @@ public class AdjReqMgrDAO extends EgovAbstractDAO {
update("adjReqMgrDAO.updateAdrMgrMasterDetailApprCn", adjReqMgrVO); update("adjReqMgrDAO.updateAdrMgrMasterDetailApprCn", adjReqMgrVO);
} }
// 조정알림SMS - SMS전송 요청 LOG 등록 // 조정알림SMS - SMS전송 요청 LOG 등록
public int insertAdrSmsCustomSend(AdjReqMgrVO adjReqMgrVO) throws Exception{ public int insertAdrSmsCustomSend(AdjReqMgrVO adjReqMgrVO) throws Exception{
return update("AdjReqMgrDAO.insertAdrSmsCustomSend", adjReqMgrVO); return update("AdjReqMgrDAO.insertAdrSmsCustomSend", adjReqMgrVO);
} }

View File

@ -64,5 +64,15 @@ public class SMSOracleDAO extends EgovAbstractDAO {
public void insertMmsCustomSend(AdjReqMgrVO adjReqMgrVO) throws Exception{ public void insertMmsCustomSend(AdjReqMgrVO adjReqMgrVO) throws Exception{
insert("SMSOracleDAO.insertMmsCustomSend", adjReqMgrVO); insert("SMSOracleDAO.insertMmsCustomSend", adjReqMgrVO);
} }
// MMS 작성 메세지 전송 등록
public void insertMmsSendMgr(AdjReqMgrVO adjReqMgrVO) throws Exception{
insert("SMSOracleDAO.insertMmsSendMgr", adjReqMgrVO);
}
// SMS 작성 메세지 전송 등록
public void insertSmsSendMgr(AdjReqMgrVO adjReqMgrVO) throws Exception{
insert("SMSOracleDAO.insertSmsSendMgr", adjReqMgrVO);
}
} }

View File

@ -36,7 +36,4 @@ public interface MsgMgrService {
// 발송 email 내역 리스트 조회 // 발송 email 내역 리스트 조회
List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception; List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception;
// 발송 email 내역 등록
String insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception;
} }

View File

@ -113,9 +113,4 @@ public class MsgMgrDAO extends EgovAbstractDAO {
public List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception{ public List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception{
return (List<EmailMgrVO>) list("MsgMgrDAO.emailMgrList", emailMgrVO); return (List<EmailMgrVO>) list("MsgMgrDAO.emailMgrList", emailMgrVO);
} }
// 발송 email 내역 등록
public void insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception{
insert("MsgMgrDAO.insertAdrEmailLog", adjReqMgrVO);
}
} }

View File

@ -74,33 +74,4 @@ public class MsgMgrServiceImpl extends EgovAbstractServiceImpl implements MsgMgr
public List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception { public List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception {
return msgMgrDAO.emailMgrList(emailMgrVO); return msgMgrDAO.emailMgrList(emailMgrVO);
} }
// 발송 email 내역 등록
public String insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception {
String result = "fail";
try {
/*추후 확인 필요
* adrSeq ( 확인필요 )
* emailTy ( 확인필요 )
* 000 - 관리자발송
* 001 - 보완요청
* 002 - 수수료납부요청
* 003 - 조정접수
* 004 - 기일통지서승인
* 005 - 기일조서 결재완료
* 006 - 조정조서 결재완료
* 007 - 직권조정결정서 확인완료
* 008 - 없음
* 009 - 조정불성립
*
* */
msgMgrDAO.insertAdrEmailLog(adjReqMgrVO);
result = "SUCCESS";
}catch (Exception e) {
System.out.println("Exception Occured!!!");
}
return result;
}
} }

View File

@ -0,0 +1,13 @@
package kcc.kccadr.sendMgr.service;
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
public interface SendMgrService {
// SMS 전송
public String insertMsgSendMgr (AdjReqMgrVO adjReqMgrVO) throws Exception;
// 발송 email 내역 등록
public String insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception;
}

View File

@ -0,0 +1,38 @@
package kcc.kccadr.sendMgr.service.impl;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
/**
* @FileName : SendMgrDAO.java
* @Project : kcc_adr_advc_git
* @Date : 2023. 9. 18.
* @작성자 : WYH
* @변경이력 :
* @프로그램 설명 : 저작위 CUBRID DB서버 이메일, 문자 전송 로그 등록
*/
@Repository("SendMgrDAO")
public class SendMgrDAO extends EgovAbstractDAO {
// MMS 전송 등록
public int insertMmsSendMgr(AdjReqMgrVO adjReqMgrVO) throws Exception{
return update("SendMgrDAO.insertMmsSendMgr",adjReqMgrVO);
}
// SMS 전송 등록
public int insertSmsSendMgr(AdjReqMgrVO adjReqMgrVO) throws Exception{
return update("SendMgrDAO.insertSmsSendMgr",adjReqMgrVO);
}
// 문자전송 LOG 등록
public void insertMsgSendMgrLog(AdjReqMgrVO adjReqMgrVO) throws Exception{
insert("SendMgrDAO.insertMsgSendMgrLog",adjReqMgrVO);
}
// 발송 email LOG 등록
public void insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception{
insert("MsgMgrDAO.insertAdrEmailLog", adjReqMgrVO);
}
}

View File

@ -0,0 +1,128 @@
package kcc.kccadr.sendMgr.service.impl;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
import kcc.kccadr.cmm.service.impl.SMSOracleDAO;
import kcc.kccadr.sendMgr.service.SendMgrService;
/**
* @FileName : SendMgrServiceImpl.java
* @Project : kcc_adr_advc_git
* @Date : 2023. 9. 18.
* @작성자 : WYH
* @변경이력 :
* @프로그램 설명 : 이메일, 문자 전송
*/
@Service("SendMgrService")
public class SendMgrServiceImpl extends EgovAbstractServiceImpl implements SendMgrService {
@Value("#{globalSettings['Globals.SMSDB.SendTelNo']}")
private String sendTelNo; // 송신 전화번호
@Value("#{globalSettings['Globals.SMSDB.TrId']}")
private String trId; // 시스템 ID
@Value("#{globalSettings['Globals.prod.islocal']}")
private String islocal; // 시스템 구분자
// SMS전송(SMS전송서버-오라클DB)
@Resource(name = "SMSOracleDAO")
private SMSOracleDAO sMSOracleDAO;
// SMS전송(SMS전송서버-CUBRID DB)
@Resource(name = "SendMgrDAO")
private SendMgrDAO sendMgrDAO;
@Override
public String insertMsgSendMgr(AdjReqMgrVO adjReqMgrVO) throws Exception {
String result = "fail";
try {
/*
* 1. adjReqMgrVO로 수신자(trPhone), 메시지(sendMsg), 사건번호(adrNo) 파라미터로 받는다.
* 2. 정해진 송신자, 시스템 구분자는 미리 정의된 globals.properties 에서 받는다.
* 3. 저작위 SMS 발송 DB로 insert
* 4. 발송 이력을 남긴다.
* 5. smsTy 설정
* 000 - 관리자발송
* 001 - 보완요청
* 002 - 수수료납부요청
* 003 - 조정접수
* 004 - 기일통지서승인
* 005 - 기일조서 결재완료
* 006 - 조정조서 결재완료
* 007 - 직권조정결정서 확인완료
* 008 - 없음
* 009 - 조정불성립
* */
adjReqMgrVO.setTrId(trId); // 시스템 구분자
adjReqMgrVO.setSendTelNo(sendTelNo); // 송신자 번호
adjReqMgrVO.setSmsTy("000"); // 문자 발송 문구 분류
int bytes = adjReqMgrVO.getSendMsg().getBytes("euc-kr").length; // 발송메시지 바이트수
if (bytes > 90) { // 장문
if(!islocal.equals("local")) {
// 전자조정 오라클 서버 등록 (장문)
sMSOracleDAO.insertMmsSendMgr(adjReqMgrVO); // MMS 등록 장문 > MMS DB(오라클)
}
// CUBRID DB 등록
sendMgrDAO.insertMmsSendMgr(adjReqMgrVO);
}else { // 단문
if(!islocal.equals("local")) { // SMS 등록 장문 > SMS DB(오라클)
// 전자조정 오라클 서버 등록 (단문)
sMSOracleDAO.insertSmsSendMgr(adjReqMgrVO);
}
// CUBRID DB 등록
sendMgrDAO.insertSmsSendMgr(adjReqMgrVO);
}
// CUBRID DB 전송 로그등록
sendMgrDAO.insertMsgSendMgrLog(adjReqMgrVO);
result = "SUCCESS";
}catch (Exception e) {
System.out.println("====== try catch insertMsgSendMgr 전송오류");
result = "메시지 전송오류";
}
return result;
}
@Override
public String insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception {
String result = "fail";
try {
/*추후 확인 필요
* adrSeq ( 확인필요 )
* emailTy ( 확인필요 )
* 000 - 관리자발송
* 001 - 보완요청
* 002 - 수수료납부요청
* 003 - 조정접수
* 004 - 기일통지서승인
* 005 - 기일조서 결재완료
* 006 - 조정조서 결재완료
* 007 - 직권조정결정서 확인완료
* 008 - 없음
* 009 - 조정불성립
*
* */
sendMgrDAO.insertAdrEmailLog(adjReqMgrVO);
result = "SUCCESS";
}catch (Exception e) {
System.out.println("Exception Occured!!!");
}
return result;
}
}

View File

@ -21,6 +21,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
import kcc.kccadr.msg.service.MsgMgrService; import kcc.kccadr.msg.service.MsgMgrService;
import kcc.kccadr.sendMgr.service.SendMgrService;
import kcc.let.utl.fcc.service.EgovCryptoUtil; import kcc.let.utl.fcc.service.EgovCryptoUtil;
/** /**
@ -43,8 +44,8 @@ import kcc.let.utl.fcc.service.EgovCryptoUtil;
@Controller @Controller
public class SendMgrEmailController { public class SendMgrEmailController {
@Resource(name = "MsgMgrService") @Resource(name = "SendMgrService")
private MsgMgrService msgMgrService; private SendMgrService SendMgrService;
//암복호화 유틸 //암복호화 유틸
@Resource(name = "egovCryptoUtil") @Resource(name = "egovCryptoUtil")
@ -113,12 +114,11 @@ public class SendMgrEmailController {
System.out.println("------------------ 메일발송 끝 ----------------"); System.out.println("------------------ 메일발송 끝 ----------------");
System.out.println("------------------ 메일발송Log 추가 시작----------------"); System.out.println("------------------ 메일발송Log 추가 시작----------------");
String encEmailFrom = egovCryptoUtil.encrypt(emailFrom); // email 수신자 주소 암호화 String encEmailFrom = egovCryptoUtil.encrypt(emailFrom); // email 수신자 주소 암호화
String encEmailTo = egovCryptoUtil.encrypt(emailTo); // email 발신자 주소 암호화 String encEmailTo = egovCryptoUtil.encrypt(emailTo); // email 발신자 주소 암호화
adjReqMgrVO.setEmailFrom(encEmailFrom); adjReqMgrVO.setEmailFrom(encEmailFrom);
adjReqMgrVO.setEmailTo(encEmailTo); adjReqMgrVO.setEmailTo(encEmailTo);
result = msgMgrService.insertAdrEmailLog(adjReqMgrVO); result = SendMgrService.insertAdrEmailLog(adjReqMgrVO);
System.out.println("------------------ 메일발송Log 추가 끝----------------"); System.out.println("------------------ 메일발송Log 추가 끝----------------");
} }

View File

@ -11,6 +11,9 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
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.sendMgr.service.SendMgrService;
/** /**
* SMS 발송관리자(관리자) * SMS 발송관리자(관리자)
@ -35,6 +38,9 @@ public class SendMgrSMSController {
// SMS 문자발송 서비스 // SMS 문자발송 서비스
@Resource(name = "SMSOracleService") @Resource(name = "SMSOracleService")
private SMSOracleService sMSOracleService; private SMSOracleService sMSOracleService;
@Resource(name = "SendMgrService")
private SendMgrService SendMgrService;
/** /**
* @Method Name : smsSendMgrPage * @Method Name : smsSendMgrPage
@ -68,8 +74,8 @@ public class SendMgrSMSController {
try { try {
String result = ""; String result = "";
for(int i=0; i < adjReqMgrVO.getPhoneList().length; i++) { for(int i=0; i < adjReqMgrVO.getPhoneList().length; i++) {
adjReqMgrVO.setSendTelNo(adjReqMgrVO.getPhoneList()[i]); adjReqMgrVO.setTrPhone(adjReqMgrVO.getPhoneList()[i]);
result = sMSOracleService.insertSmsCustomSend(adjReqMgrVO); result = SendMgrService.insertMsgSendMgr(adjReqMgrVO);
} }
modelAndView.addObject("result", result); modelAndView.addObject("result", result);
}catch (Exception e) { }catch (Exception e) {

View File

@ -110,28 +110,6 @@
) )
</insert> </insert>
<!-- SMS 작성 메세지 전송 -->
<insert id="SMSOracleDAO.insertSmsCustomSend" parameterClass="AdjReqMgrVO">
INSERT INTO SC_TRAN (
TR_NUM
,TR_SENDDATE
,TR_ID
/*,TR_SENDSTAT*/
/*,TR_MSGTYPE*/
,TR_PHONE
,TR_CALLBACK
,TR_MSG
) VALUES (
SC_TRAN_SEQ.NEXTVAL
,SYSDATE
,#trId#
/*,'0'*/
/*,'0'*/
,replace(#trPhone#, '-', '')
,#sendTelNo#
,#sendMsg#
)
</insert>
<!-- MMS 작성 메세지 전송 --> <!-- MMS 작성 메세지 전송 -->
<insert id="SMSOracleDAO.insertMmsCustomSend" parameterClass="AdjReqMgrVO"> <insert id="SMSOracleDAO.insertMmsCustomSend" parameterClass="AdjReqMgrVO">
@ -158,4 +136,75 @@
) )
</insert> </insert>
</sqlMap> <!-- SMS 작성 메세지 전송 -->
<insert id="SMSOracleDAO.insertSmsCustomSend" parameterClass="AdjReqMgrVO">
INSERT INTO SC_TRAN (
TR_NUM
,TR_SENDDATE
,TR_ID
/*,TR_SENDSTAT*/
/*,TR_MSGTYPE*/
,TR_PHONE
,TR_CALLBACK
,TR_MSG
) VALUES (
SC_TRAN_SEQ.NEXTVAL
,SYSDATE
,#trId#
/*,'0'*/
/*,'0'*/
,replace(#trPhone#, '-', '')
,#sendTelNo#
,#sendMsg#
)
</insert>
<!-- MMS 작성 메세지 전송 -->
<insert id="SMSOracleDAO.insertMmsSendMgr" parameterClass="AdjReqMgrVO">
INSERT INTO MMS_MSG (
MSGKEY
,ID
,SUBJECT
,PHONE
,CALLBACK
,STATUS
,REQDATE
,MSG
,TYPE
) VALUES (
MMS_MSG_SEQ.NEXTVAL
,#trId#
,'[한국저작권위원회]'
, IFNULL(replace(#trPhone#, '-', ''), '-')
, IFNULL(replace(#sendTelNo#, '-', ''), '-')
,'0'
,SYSDATE
,#sendMsg#
,'0'
)
</insert>
<!-- SMS 작성 메세지 전송 -->
<insert id="SMSOracleDAO.insertSmsSendMgr" parameterClass="AdjReqMgrVO">
INSERT INTO SC_TRAN (
TR_NUM
,TR_SENDDATE
,TR_ID
/*,TR_SENDSTAT*/
/*,TR_MSGTYPE*/
,TR_PHONE
,TR_CALLBACK
,TR_MSG
) VALUES (
SC_TRAN_SEQ.NEXTVAL
,SYSDATE
,#trId#
/*,'0'*/
/*,'0'*/
, IFNULL(replace(#trPhone#, '-', ''), '-')
, IFNULL(replace(#sendTelNo#, '-', ''), '-')
,#sendMsg#
)
</insert>
</sqlMap>

View File

@ -373,4 +373,81 @@
LIMIT #recordCountPerPage# OFFSET #firstIndex# LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select> </select>
<!-- MMS 작성 메세지 전송 요청 LOG 등록 -->
<update id="SendMgrDAO.insertMmsSendMgr" parameterClass="AdjReqMgrVO">
INSERT INTO ADR_MMS_MSG (
MSGKEY
, ID
, SUBJECT
, PHONE
, CALLBACK
, STATUS
, REQDATE
, MSG
, TYPE
, EMAIL_SEND_RESULT
) VALUES (
(SELECT IFNULL(MAX(MSGKEY), 0) + 1 FROM ADR_MMS_MSG)
, #trId#
, '[한국저작권위원회]'
, IFNULL(replace(#trPhone#, '-', ''), '-')
, IFNULL(replace(#sendTelNo#, '-', ''), '-')
, '0'
, SYSDATE
, #sendMsg#
, '0'
, #emailSendResult#
)
</update>
<!-- SMS 작성 메세지 전송 요청 LOG 등록 -->
<update id="SendMgrDAO.insertSmsSendMgr" parameterClass="AdjReqMgrVO">
INSERT INTO ADR_SC_TRAN (
TR_NUM
, TR_SENDDATE
, TR_ID
/*, TR_SENDSTAT*/
/*, TR_MSGTYPE*/
, TR_PHONE
, TR_CALLBACK
, TR_MSG
, EMAIL_SEND_RESULT
) VALUES (
(SELECT IFNULL(MAX(TR_NUM), 0) + 1 FROM ADR_SC_TRAN)
, SYSDATE
, #trId#
/*,'0'*/
/*,'0'*/
, IFNULL(replace(#trPhone#, '-', ''), '-')
, IFNULL(replace(#sendTelNo#, '-', ''), '-')
, #sendMsg#
, #emailSendResult#
)
</update>
<!-- 메세지 전송 요청 LOG 등록 -->
<insert id="SendMgrDAO.insertMsgSendMgrLog" parameterClass="AdjReqMgrVO">
INSERT INTO ADR_SMS_LOG
(
SMS_CN
, SMS_TY
, SMS_TO
, SMS_FROM
, ADR_NO
, SMS_SEND_PNTTM
, REGIST_PNTTM
)
VALUES
(
#sendMsg#
, #smsTy#
, IFNULL(replace(#trPhone#, '-', ''), '-')
, IFNULL(replace(#sendTelNo#, '-', ''), '-')
, #adrNo#
, NOW()
, NOW()
)
</insert>
</sqlMap> </sqlMap>

View File

@ -50,9 +50,9 @@
</script> </script>
<title>발송 Email 목록</title> <title>발송 Email 목록</title>
<form id="listForm" name="listForm" method="post"> <form id="listForm" name="listForm" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${msgMgrVO.pageIndex}' default='1' />"/> <input type="hidden" name="pageIndex" value="<c:out value='${emailMgrVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${msgMgrVO.searchSortCnd}" />" /> <input type="hidden" name="searchSortCnd" value="<c:out value="${emailMgrVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${msgMgrVO.searchSortOrd}" />" /> <input type="hidden" name="searchSortOrd" value="<c:out value="${emailMgrVO.searchSortOrd}" />" />
<input type="hidden" id="smsSeq" name="smsSeq" value=""/> <input type="hidden" id="smsSeq" name="smsSeq" value=""/>
<div class="cont_wrap"> <div class="cont_wrap">
<div class="box"> <div class="box">
@ -88,11 +88,10 @@
<li> <li>
<p class="tit_text">구분</p> <p class="tit_text">구분</p>
<select name="searchCondition" id="searchCondition"> <select name="searchCondition" id="searchCondition">
<%-- <option value="" ${msgMgrVO.searchCondition eq '' ? 'selected' : '' }>전체</option> --%> <option value="1" ${emailMgrVO.searchCondition eq '1' ? 'selected' : '' }>발송내용</option>
<option value="1" ${msgMgrVO.searchCondition eq '1' ? 'selected' : '' }>발송내용</option> <option value="2" ${emailMgrVO.searchCondition eq '2' ? 'selected' : '' }>수신자</option>
<option value="2" ${msgMgrVO.searchCondition eq '2' ? 'selected' : '' }>수신자</option>
</select> </select>
<input type="text" id="searchKeyword" name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${smsMgrVO.searchKeyword}'/>"> <input type="text" id="searchKeyword" name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${emailMgrVO.searchKeyword}'/>">
<button class="btn_search" onclick="fncGoList(); return false;">검색</button> <button class="btn_search" onclick="fncGoList(); return false;">검색</button>
</li> </li>
</ul> </ul>
@ -161,9 +160,9 @@
</table> </table>
</div> </div>
<!-- //list --> <!-- //list -->
<div class="btn_wrap btn_layout02"> <!-- <div class="btn_wrap btn_layout02">
<button class="btnType02" onclick="fncMsgMgrReg(); return false;">발송문구 관리</button> <button class="btnType02" onclick="fncMsgMgrReg(); return false;">발송문구 관리</button>
</div> </div> -->
<!-- page --> <!-- page -->
<div class="page"> <div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" /> <ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />