메일전송 문자전송 기능 추가
This commit is contained in:
parent
c542e0e2cd
commit
af074c1581
@ -259,6 +259,57 @@ public class AdjReqMgrVO extends ComDefaultVO implements Serializable{
|
|||||||
private String smsSendTypeCd; // 발송유형 - CC052
|
private String smsSendTypeCd; // 발송유형 - CC052
|
||||||
private String certNum; // 인증번호
|
private String certNum; // 인증번호
|
||||||
|
|
||||||
|
private String[] phoneList; //수신번호 리스트
|
||||||
|
|
||||||
|
|
||||||
|
//저작위 email 발송
|
||||||
|
/*
|
||||||
|
* emailTy ( 확인필요 )
|
||||||
|
* 000 - 관리자발송
|
||||||
|
* 001 - 보완요청
|
||||||
|
* 002 - 수수료납부요청
|
||||||
|
* 003 - 조정접수
|
||||||
|
* 004 - 기일통지서승인
|
||||||
|
* 005 - 기일조서 결재완료
|
||||||
|
* 006 - 조정조서 결재완료
|
||||||
|
* 007 - 직권조정결정서 확인완료
|
||||||
|
* 008 - 없음
|
||||||
|
* 009 - 조정불성립
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
|
||||||
|
private String[] emailList; // 수신이메일 리스트
|
||||||
|
private String emailTitle; // 이메일 제목
|
||||||
|
private String emailContent; // 이메일 내용
|
||||||
|
private String emailTy; // 이메일 발송 유형
|
||||||
|
private String emailTo; // 이메일 발송 수신자
|
||||||
|
private String emailFrom; // 이메일 발송 발신자
|
||||||
|
|
||||||
|
|
||||||
|
public String getEmailTitle() {
|
||||||
|
return emailTitle;
|
||||||
|
}
|
||||||
|
public void setEmailTitle(String emailTitle) {
|
||||||
|
this.emailTitle = emailTitle;
|
||||||
|
}
|
||||||
|
public String getEmailContent() {
|
||||||
|
return emailContent;
|
||||||
|
}
|
||||||
|
public void setEmailContent(String emailContent) {
|
||||||
|
this.emailContent = emailContent;
|
||||||
|
}
|
||||||
|
public String[] getEmailList() {
|
||||||
|
return emailList;
|
||||||
|
}
|
||||||
|
public void setEmailList(String[] emailList) {
|
||||||
|
this.emailList = emailList;
|
||||||
|
}
|
||||||
|
public String[] getPhoneList() {
|
||||||
|
return phoneList;
|
||||||
|
}
|
||||||
|
public void setPhoneList(String[] phoneList) {
|
||||||
|
this.phoneList = phoneList;
|
||||||
|
}
|
||||||
public AdjReqMgrVO getAdrVO() {
|
public AdjReqMgrVO getAdrVO() {
|
||||||
return adrVO;
|
return adrVO;
|
||||||
}
|
}
|
||||||
@ -1231,6 +1282,22 @@ public class AdjReqMgrVO extends ComDefaultVO implements Serializable{
|
|||||||
public void setCertNum(String certNum) {
|
public void setCertNum(String certNum) {
|
||||||
this.certNum = certNum;
|
this.certNum = certNum;
|
||||||
}
|
}
|
||||||
|
public String getEmailTy() {
|
||||||
|
return emailTy;
|
||||||
|
}
|
||||||
|
public void setEmailTy(String emailTy) {
|
||||||
|
this.emailTy = emailTy;
|
||||||
|
}
|
||||||
|
public String getEmailTo() {
|
||||||
|
return emailTo;
|
||||||
|
}
|
||||||
|
public void setEmailTo(String emailTo) {
|
||||||
|
this.emailTo = emailTo;
|
||||||
|
}
|
||||||
|
public String getEmailFrom() {
|
||||||
|
return emailFrom;
|
||||||
|
}
|
||||||
|
public void setEmailFrom(String emailFrom) {
|
||||||
|
this.emailFrom = emailFrom;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,6 +62,10 @@ public class SMSOracleServiceImpl extends EgovAbstractServiceImpl implements SM
|
|||||||
@Value("#{globalSettings['Globals.SMSDB.TrId']}")
|
@Value("#{globalSettings['Globals.SMSDB.TrId']}")
|
||||||
private String trId; // 시스템 구분자
|
private String trId; // 시스템 구분자
|
||||||
|
|
||||||
|
@Value("#{globalSettings['Globals.prod.islocal']}")
|
||||||
|
private String islocal; // 시스템 구분자
|
||||||
|
|
||||||
|
|
||||||
// SMS전송(SMS전송서버-오라클DB)
|
// SMS전송(SMS전송서버-오라클DB)
|
||||||
@Resource(name = "SMSOracleDAO")
|
@Resource(name = "SMSOracleDAO")
|
||||||
private SMSOracleDAO sMSOracleDAO;
|
private SMSOracleDAO sMSOracleDAO;
|
||||||
@ -703,10 +707,14 @@ public class SMSOracleServiceImpl extends EgovAbstractServiceImpl implements SM
|
|||||||
int bytes = adjReqMgrVO.getSendMsg().getBytes("euc-kr").length; // 발송메시지 바이트수
|
int bytes = adjReqMgrVO.getSendMsg().getBytes("euc-kr").length; // 발송메시지 바이트수
|
||||||
|
|
||||||
if (bytes > 90) {
|
if (bytes > 90) {
|
||||||
|
if(!islocal.equals("local")) {
|
||||||
sMSOracleDAO.insertMmsCustomSend(adjReqMgrVO); // SMS 등록 장문 > SMS DB(오라클)
|
sMSOracleDAO.insertMmsCustomSend(adjReqMgrVO); // SMS 등록 장문 > SMS DB(오라클)
|
||||||
|
}
|
||||||
adjReqMgrDAO.insertAdrMmsCustomSend(adjReqMgrVO); // SMS 이력 등록 장문 > 전자조정
|
adjReqMgrDAO.insertAdrMmsCustomSend(adjReqMgrVO); // SMS 이력 등록 장문 > 전자조정
|
||||||
} else {
|
} else {
|
||||||
|
if(!islocal.equals("local")) {
|
||||||
sMSOracleDAO.insertSmsCustomSend(adjReqMgrVO); // SMS 등록 단문 > SMS DB(오라클)
|
sMSOracleDAO.insertSmsCustomSend(adjReqMgrVO); // SMS 등록 단문 > SMS DB(오라클)
|
||||||
|
}
|
||||||
adjReqMgrDAO.insertAdrSmsCustomSend(adjReqMgrVO); // SMS 이력 등록 단문 > 전자조정
|
adjReqMgrDAO.insertAdrSmsCustomSend(adjReqMgrVO); // SMS 이력 등록 단문 > 전자조정
|
||||||
}
|
}
|
||||||
//sms 발송 관리 테이블에 저장
|
//sms 발송 관리 테이블에 저장
|
||||||
|
|||||||
82
src/main/java/kcc/kccadr/msg/service/EmailMgrVO.java
Normal file
82
src/main/java/kcc/kccadr/msg/service/EmailMgrVO.java
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package kcc.kccadr.msg.service;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import kcc.com.cmm.ComDefaultVO;
|
||||||
|
|
||||||
|
public class EmailMgrVO extends ComDefaultVO implements Serializable{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private String emailSeq; // 이메일 발송 일련번호
|
||||||
|
private String emailTitle; // 이메일 제목
|
||||||
|
private String emailContent; // 이메일 내용
|
||||||
|
private String emailTy; // 이메일 발송 유형
|
||||||
|
private String emailTo; // 이메일 발송 수신자
|
||||||
|
private String emailFrom; // 이메일 발송 발신자
|
||||||
|
private String adrSeq; // 조정일련번호
|
||||||
|
private String emailSendPnttm; // 이메일 발송일자
|
||||||
|
private String frstRegistPnttm; // 로그등록일자
|
||||||
|
|
||||||
|
|
||||||
|
public String getEmailSeq() {
|
||||||
|
return emailSeq;
|
||||||
|
}
|
||||||
|
public void setEmailSeq(String emailSeq) {
|
||||||
|
this.emailSeq = emailSeq;
|
||||||
|
}
|
||||||
|
public String getEmailTitle() {
|
||||||
|
return emailTitle;
|
||||||
|
}
|
||||||
|
public void setEmailTitle(String emailTitle) {
|
||||||
|
this.emailTitle = emailTitle;
|
||||||
|
}
|
||||||
|
public String getEmailContent() {
|
||||||
|
return emailContent;
|
||||||
|
}
|
||||||
|
public void setEmailContent(String emailContent) {
|
||||||
|
this.emailContent = emailContent;
|
||||||
|
}
|
||||||
|
public String getEmailTy() {
|
||||||
|
return emailTy;
|
||||||
|
}
|
||||||
|
public void setEmailTy(String emailTy) {
|
||||||
|
this.emailTy = emailTy;
|
||||||
|
}
|
||||||
|
public String getEmailTo() {
|
||||||
|
return emailTo;
|
||||||
|
}
|
||||||
|
public void setEmailTo(String emailTo) {
|
||||||
|
this.emailTo = emailTo;
|
||||||
|
}
|
||||||
|
public String getEmailFrom() {
|
||||||
|
return emailFrom;
|
||||||
|
}
|
||||||
|
public void setEmailFrom(String emailFrom) {
|
||||||
|
this.emailFrom = emailFrom;
|
||||||
|
}
|
||||||
|
public String getAdrSeq() {
|
||||||
|
return adrSeq;
|
||||||
|
}
|
||||||
|
public void setAdrSeq(String adrSeq) {
|
||||||
|
this.adrSeq = adrSeq;
|
||||||
|
}
|
||||||
|
public String getEmailSendPnttm() {
|
||||||
|
return emailSendPnttm;
|
||||||
|
}
|
||||||
|
public void setEmailSendPnttm(String emailSendPnttm) {
|
||||||
|
this.emailSendPnttm = emailSendPnttm;
|
||||||
|
}
|
||||||
|
public String getFrstRegistPnttm() {
|
||||||
|
return frstRegistPnttm;
|
||||||
|
}
|
||||||
|
public void setFrstRegistPnttm(String frstRegistPnttm) {
|
||||||
|
this.frstRegistPnttm = frstRegistPnttm;
|
||||||
|
}
|
||||||
|
public static long getSerialversionuid() {
|
||||||
|
return serialVersionUID;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,8 @@ package kcc.kccadr.msg.service;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
||||||
|
|
||||||
public interface MsgMgrService {
|
public interface MsgMgrService {
|
||||||
|
|
||||||
//발송문구 갯수
|
//발송문구 갯수
|
||||||
@ -27,4 +29,14 @@ public interface MsgMgrService {
|
|||||||
|
|
||||||
//발송문자 리스트
|
//발송문자 리스트
|
||||||
List<SmsMgrVO> smsMgrList(SmsMgrVO smsMgrVO) throws Exception;
|
List<SmsMgrVO> smsMgrList(SmsMgrVO smsMgrVO) throws Exception;
|
||||||
|
|
||||||
|
//발송 email 갯수
|
||||||
|
int emailMgrListCount(EmailMgrVO emailMgrVO) throws Exception;
|
||||||
|
|
||||||
|
// 발송 email 내역 리스트 조회
|
||||||
|
List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception;
|
||||||
|
|
||||||
|
// 발송 email 내역 등록
|
||||||
|
String insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import org.springframework.stereotype.Repository;
|
|||||||
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
||||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
||||||
|
import kcc.kccadr.msg.service.EmailMgrVO;
|
||||||
import kcc.kccadr.msg.service.MsgMgrVO;
|
import kcc.kccadr.msg.service.MsgMgrVO;
|
||||||
import kcc.kccadr.msg.service.SmsMgrVO;
|
import kcc.kccadr.msg.service.SmsMgrVO;
|
||||||
|
|
||||||
@ -101,4 +102,20 @@ public class MsgMgrDAO extends EgovAbstractDAO {
|
|||||||
update("msgMgrDAO.updateAdrSendType", map);
|
update("msgMgrDAO.updateAdrSendType", map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//발송문자 갯수
|
||||||
|
public int emailMgrListCount(EmailMgrVO emailMgrVO) throws Exception{
|
||||||
|
return (int) select("MsgMgrDAO.emailMgrListCount", emailMgrVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 발송 email 내역 리스트 조회
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception{
|
||||||
|
return (List<EmailMgrVO>) list("MsgMgrDAO.emailMgrList", emailMgrVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 발송 email 내역 등록
|
||||||
|
public void insertAdrEmailLog(AdjReqMgrVO adjReqMgrVO) throws Exception{
|
||||||
|
insert("MsgMgrDAO.insertAdrEmailLog", adjReqMgrVO);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,8 @@ import javax.annotation.Resource;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||||
|
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
||||||
|
import kcc.kccadr.msg.service.EmailMgrVO;
|
||||||
import kcc.kccadr.msg.service.MsgMgrService;
|
import kcc.kccadr.msg.service.MsgMgrService;
|
||||||
import kcc.kccadr.msg.service.MsgMgrVO;
|
import kcc.kccadr.msg.service.MsgMgrVO;
|
||||||
import kcc.kccadr.msg.service.SmsMgrVO;
|
import kcc.kccadr.msg.service.SmsMgrVO;
|
||||||
@ -62,4 +64,43 @@ public class MsgMgrServiceImpl extends EgovAbstractServiceImpl implements MsgMgr
|
|||||||
|
|
||||||
return msgMgrDAO.smsMgrList(smsMgrVO);
|
return msgMgrDAO.smsMgrList(smsMgrVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//발송 email 갯수
|
||||||
|
public int emailMgrListCount(EmailMgrVO emailMgrVO) throws Exception {
|
||||||
|
return msgMgrDAO.emailMgrListCount(emailMgrVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 발송 email 내역 리스트 조회
|
||||||
|
public List<EmailMgrVO> emailMgrList(EmailMgrVO emailMgrVO) throws Exception {
|
||||||
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import kcc.com.cmm.LoginVO;
|
|||||||
import kcc.com.cmm.service.EgovCmmUseService;
|
import kcc.com.cmm.service.EgovCmmUseService;
|
||||||
import kcc.com.utl.fcc.service.EgovStringUtil;
|
import kcc.com.utl.fcc.service.EgovStringUtil;
|
||||||
import kcc.kccadr.cmm.service.SMSOracleService;
|
import kcc.kccadr.cmm.service.SMSOracleService;
|
||||||
|
import kcc.kccadr.msg.service.EmailMgrVO;
|
||||||
import kcc.kccadr.msg.service.MsgMgrService;
|
import kcc.kccadr.msg.service.MsgMgrService;
|
||||||
import kcc.kccadr.msg.service.MsgMgrVO;
|
import kcc.kccadr.msg.service.MsgMgrVO;
|
||||||
import kcc.kccadr.msg.service.SmsMgrVO;
|
import kcc.kccadr.msg.service.SmsMgrVO;
|
||||||
@ -330,7 +331,52 @@ public class MsgMgrController {
|
|||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/kccadr/msg/sendEmailMgrList.do")
|
||||||
|
public String sendEmailMgrList(@ModelAttribute("emailMgrVO") EmailMgrVO emailMgrVO, ModelMap model) throws Exception {
|
||||||
|
|
||||||
|
if(emailMgrVO.getPageUnit() != 10) {
|
||||||
|
emailMgrVO.setPageUnit(emailMgrVO.getPageUnit());
|
||||||
|
}
|
||||||
|
|
||||||
|
if("".equals(emailMgrVO.getSearchSortCnd())){
|
||||||
|
emailMgrVO.setSearchSortCnd("EMAIL_SEQ");
|
||||||
|
emailMgrVO.setSearchSortOrd("desc");
|
||||||
|
}
|
||||||
|
|
||||||
|
//검색조건이 수신자 검색의 경우 이름을 암호화 해준다.
|
||||||
|
if("2".equals(emailMgrVO.getSearchCondition()) && StringUtils.isNotBlank(emailMgrVO.getSearchKeyword())) {
|
||||||
|
|
||||||
|
emailMgrVO.setSearchKeyword(egovCryptoUtil.encrypt(emailMgrVO.getSearchKeyword()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** paging */
|
||||||
|
PaginationInfo paginationInfo = new PaginationInfo();
|
||||||
|
paginationInfo.setCurrentPageNo(emailMgrVO.getPageIndex());
|
||||||
|
paginationInfo.setRecordCountPerPage(emailMgrVO.getPageUnit());
|
||||||
|
paginationInfo.setPageSize(emailMgrVO.getPageSize());
|
||||||
|
|
||||||
|
emailMgrVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||||
|
emailMgrVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||||
|
emailMgrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||||
|
paginationInfo.setTotalRecordCount(msgMgrService.emailMgrListCount(emailMgrVO));
|
||||||
|
model.addAttribute("paginationInfo", paginationInfo);
|
||||||
|
List<EmailMgrVO> list = msgMgrService.emailMgrList(emailMgrVO);
|
||||||
|
// 복호화
|
||||||
|
decryptEmailInfomation(list, null);
|
||||||
|
model.addAttribute("list", list);
|
||||||
|
|
||||||
|
//검색조건이 수신자 검색의 경우 이름을 암호화 해준다.
|
||||||
|
if("2".equals(emailMgrVO.getSearchCondition()) && StringUtils.isNotBlank(emailMgrVO.getSearchKeyword())) {
|
||||||
|
|
||||||
|
emailMgrVO.setSearchKeyword(egovCryptoUtil.decrypt(emailMgrVO.getSearchKeyword()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return "kccadr/msg/sendEmailMgrList";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 문자전송 복호화
|
||||||
public void decryptInfomation(List<SmsMgrVO> list, SmsMgrVO info){
|
public void decryptInfomation(List<SmsMgrVO> list, SmsMgrVO info){
|
||||||
if(CollectionUtils.isNotEmpty(list)){
|
if(CollectionUtils.isNotEmpty(list)){
|
||||||
for(SmsMgrVO model : list){
|
for(SmsMgrVO model : list){
|
||||||
@ -382,4 +428,18 @@ public class MsgMgrController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 이메일 리스트 복호화
|
||||||
|
public void decryptEmailInfomation(List<EmailMgrVO> list, EmailMgrVO info){
|
||||||
|
if(CollectionUtils.isNotEmpty(list)){
|
||||||
|
for(EmailMgrVO model : list){
|
||||||
|
model.setEmailTo(egovCryptoUtil.decrypt(model.getEmailTo()));
|
||||||
|
model.setEmailFrom(egovCryptoUtil.decrypt(model.getEmailFrom()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(info != null){
|
||||||
|
info.setEmailTo(egovCryptoUtil.decrypt(info.getEmailTo()));
|
||||||
|
info.setEmailFrom(egovCryptoUtil.decrypt(info.getEmailFrom()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
133
src/main/java/kcc/kccadr/sendMgr/web/SendMgrEmailController.java
Normal file
133
src/main/java/kcc/kccadr/sendMgr/web/SendMgrEmailController.java
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
package kcc.kccadr.sendMgr.web;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.mail.Authenticator;
|
||||||
|
import javax.mail.Message;
|
||||||
|
import javax.mail.MessagingException;
|
||||||
|
import javax.mail.PasswordAuthentication;
|
||||||
|
import javax.mail.Session;
|
||||||
|
import javax.mail.Transport;
|
||||||
|
import javax.mail.internet.InternetAddress;
|
||||||
|
import javax.mail.internet.MimeMessage;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||||
|
|
||||||
|
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
||||||
|
import kcc.kccadr.msg.service.MsgMgrService;
|
||||||
|
import kcc.let.utl.fcc.service.EgovCryptoUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* EMAIL 발송관리자(관리자)
|
||||||
|
* EMAIL 발송관련 처리에 관한 controller 클래스를 정의한다.
|
||||||
|
* @author 원영현
|
||||||
|
* @since 2023.09.13
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* << 개정이력(Modification Information) >>
|
||||||
|
*
|
||||||
|
* 수정일 수정자 수정내용
|
||||||
|
* ------- -------- ---------------------------
|
||||||
|
* 2023.09.13 원영현 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
public class SendMgrEmailController {
|
||||||
|
|
||||||
|
@Resource(name = "MsgMgrService")
|
||||||
|
private MsgMgrService msgMgrService;
|
||||||
|
|
||||||
|
//암복호화 유틸
|
||||||
|
@Resource(name = "egovCryptoUtil")
|
||||||
|
EgovCryptoUtil egovCryptoUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Method Name : emailSendMgrPage
|
||||||
|
* @작성일 : 2023. 9. 13.
|
||||||
|
* @작성자 : WYH
|
||||||
|
* @변경이력 :
|
||||||
|
* @Method 설명 : email 전송화면 이동
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/kccadr/sendMgr/emailSendMgr.do")
|
||||||
|
public String emailSendMgrPage() {
|
||||||
|
|
||||||
|
return "/kccadr/sendMgr/emailSendMgr";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/kccadr/sendMgr/emailSendMgrAjax.do")
|
||||||
|
public ModelAndView emailSendMgrAjax(
|
||||||
|
@ModelAttribute("adjReqMgrVO") AdjReqMgrVO adjReqMgrVO
|
||||||
|
, RedirectAttributes redirectAttributes
|
||||||
|
, HttpServletRequest request ) throws Exception {
|
||||||
|
|
||||||
|
ModelAndView modelAndView = new ModelAndView();
|
||||||
|
modelAndView.setViewName("jsonView");
|
||||||
|
|
||||||
|
String emailFrom = "no-reply@copyright.or.kr"; // 추후 globals.properties 를 이용하여 변경
|
||||||
|
String emailPs = "Copycopy12!"; // 추후 globals.properties 를 이용하여 변경
|
||||||
|
try {
|
||||||
|
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.put("mail.transport.protocol", "smtp");
|
||||||
|
props.put("mail.smtp.host", "smtp.gov-dooray.com");
|
||||||
|
props.put("mail.smtp.port", "465");
|
||||||
|
props.put("mail.smtp.auth", "true");
|
||||||
|
props.put("mail.smtp.ssl.enable", "true");
|
||||||
|
|
||||||
|
props.put("mail.smtp.ssl.protocols", "TLSv1");
|
||||||
|
props.put("mail.smtp.ssl.protocols", "TLSv1.1");
|
||||||
|
props.put("mail.smtp.ssl.protocols", "TLSv1.2");
|
||||||
|
props.put("mail.debug", "true");
|
||||||
|
Authenticator authenticator = new Authenticator(){
|
||||||
|
protected PasswordAuthentication getPasswordAuthentication(){
|
||||||
|
return new PasswordAuthentication(emailFrom,emailPs);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Session session = Session.getInstance(props, authenticator) ;
|
||||||
|
InternetAddress fromAddress = new InternetAddress(emailFrom);
|
||||||
|
|
||||||
|
|
||||||
|
String result = "";
|
||||||
|
String emailTo = "";
|
||||||
|
for(int i=0; i < adjReqMgrVO.getEmailList().length; i++) {
|
||||||
|
emailTo = adjReqMgrVO.getEmailList()[i];
|
||||||
|
InternetAddress toAddress = new InternetAddress(emailTo);
|
||||||
|
MimeMessage message = new MimeMessage(session);
|
||||||
|
message.setFrom(fromAddress);
|
||||||
|
message.addRecipient(Message.RecipientType.TO, toAddress );
|
||||||
|
message.setSubject(adjReqMgrVO.getEmailTitle());
|
||||||
|
message.setContent(adjReqMgrVO.getEmailContent()," text/html; charset=KSC5601");
|
||||||
|
System.out.println("------------------ 메일발송 시작 ----------------");
|
||||||
|
Transport.send(message);
|
||||||
|
System.out.println("------------------ 메일발송 끝 ----------------");
|
||||||
|
|
||||||
|
System.out.println("------------------ 메일발송Log 추가 시작----------------");
|
||||||
|
|
||||||
|
String encEmailFrom = egovCryptoUtil.encrypt(emailFrom); // email 수신자 주소 암호화
|
||||||
|
String encEmailTo = egovCryptoUtil.encrypt(emailTo); // email 발신자 주소 암호화
|
||||||
|
adjReqMgrVO.setEmailFrom(encEmailFrom);
|
||||||
|
adjReqMgrVO.setEmailTo(encEmailTo);
|
||||||
|
result = msgMgrService.insertAdrEmailLog(adjReqMgrVO);
|
||||||
|
System.out.println("------------------ 메일발송Log 추가 끝----------------");
|
||||||
|
}
|
||||||
|
|
||||||
|
modelAndView.addObject("result", result);
|
||||||
|
} catch (MessagingException e) {
|
||||||
|
modelAndView.addObject("result", "fail");
|
||||||
|
modelAndView.addObject("message", "email발송 요청에 실패했습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return modelAndView;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
package kcc.kccadr.sendMgr.web;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||||
|
|
||||||
|
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
||||||
|
import kcc.kccadr.cmm.service.SMSOracleService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SMS 발송관리자(관리자)
|
||||||
|
* SMS 발송관련 처리에 관한 controller 클래스를 정의한다.
|
||||||
|
* @author 원영현
|
||||||
|
* @since 2023.09.13
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* << 개정이력(Modification Information) >>
|
||||||
|
*
|
||||||
|
* 수정일 수정자 수정내용
|
||||||
|
* ------- -------- ---------------------------
|
||||||
|
* 2023.09.13 원영현 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
public class SendMgrSMSController {
|
||||||
|
|
||||||
|
// SMS 문자발송 서비스
|
||||||
|
@Resource(name = "SMSOracleService")
|
||||||
|
private SMSOracleService sMSOracleService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Method Name : smsSendMgrPage
|
||||||
|
* @작성일 : 2023. 9. 13.
|
||||||
|
* @작성자 : WYH
|
||||||
|
* @변경이력 :
|
||||||
|
* @Method 설명 : SMS 발송 화면이동
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/kccadr/sendMgr/smsSendMgr.do")
|
||||||
|
public String smsSendMgrPage() {
|
||||||
|
|
||||||
|
return "/kccadr/sendMgr/smsSendMgr";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Method Name : smsSendMgrAjax
|
||||||
|
* @작성일 : 2023. 9. 13.
|
||||||
|
* @작성자 : WYH
|
||||||
|
* @변경이력 :
|
||||||
|
* @Method 설명 : SMS 발송
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/kccadr/sendMgr/smsSendMgrAjax.do")
|
||||||
|
public ModelAndView smsSendMgrAjax(
|
||||||
|
@ModelAttribute("adjReqMgrVO") AdjReqMgrVO adjReqMgrVO
|
||||||
|
, RedirectAttributes redirectAttributes
|
||||||
|
, HttpServletRequest request ) throws Exception {
|
||||||
|
|
||||||
|
ModelAndView modelAndView = new ModelAndView();
|
||||||
|
modelAndView.setViewName("jsonView");
|
||||||
|
try {
|
||||||
|
String result = "";
|
||||||
|
for(int i=0; i < adjReqMgrVO.getPhoneList().length; i++) {
|
||||||
|
adjReqMgrVO.setSendTelNo(adjReqMgrVO.getPhoneList()[i]);
|
||||||
|
result = sMSOracleService.insertSmsCustomSend(adjReqMgrVO);
|
||||||
|
}
|
||||||
|
modelAndView.addObject("result", result);
|
||||||
|
}catch (Exception e) {
|
||||||
|
modelAndView.addObject("result", "fail");
|
||||||
|
modelAndView.addObject("message", "문자발송 요청에 실패했습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return modelAndView;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,6 +4,7 @@
|
|||||||
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
|
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
|
||||||
<typeAlias alias="MsgMgrVO" type="kcc.kccadr.msg.service.MsgMgrVO"/>
|
<typeAlias alias="MsgMgrVO" type="kcc.kccadr.msg.service.MsgMgrVO"/>
|
||||||
<typeAlias alias="SmsMgrVO" type="kcc.kccadr.msg.service.SmsMgrVO"/>
|
<typeAlias alias="SmsMgrVO" type="kcc.kccadr.msg.service.SmsMgrVO"/>
|
||||||
|
<typeAlias alias="EmailMgrVO" type="kcc.kccadr.msg.service.EmailMgrVO"/>
|
||||||
<typeAlias alias="AdjReqMgrVO" type="kcc.kccadr.adjreqmgr.service.AdjReqMgrVO"/>
|
<typeAlias alias="AdjReqMgrVO" type="kcc.kccadr.adjreqmgr.service.AdjReqMgrVO"/>
|
||||||
|
|
||||||
<!-- 발송문구 갯수 -->
|
<!-- 발송문구 갯수 -->
|
||||||
@ -299,4 +300,77 @@
|
|||||||
</isEqual>
|
</isEqual>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<insert id="MsgMgrDAO.insertAdrEmailLog" parameterClass="AdjReqMgrVO">
|
||||||
|
INSERT INTO ADR_EMAIL_LOG (
|
||||||
|
EMAIL_TIT
|
||||||
|
, EMAIL_CN
|
||||||
|
, EMAIL_TY
|
||||||
|
, EMAIL_TO
|
||||||
|
, EMAIL_FROM
|
||||||
|
, ADR_SEQ
|
||||||
|
, EMAIL_SEND_PNTTM
|
||||||
|
, FRST_REGIST_PNTTM
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
#emailTitle#
|
||||||
|
, #emailContent#
|
||||||
|
, #emailTy#
|
||||||
|
, #emailTo#
|
||||||
|
, #emailFrom#
|
||||||
|
, #adrSeq#
|
||||||
|
, now()
|
||||||
|
, now()
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<select id="MsgMgrDAO.emailMgrListCount" parameterClass="EmailMgrVO" resultClass="Integer">
|
||||||
|
SELECT
|
||||||
|
COUNT(email_seq)
|
||||||
|
FROM
|
||||||
|
ADR_EMAIL_LOG
|
||||||
|
WHERE 1=1
|
||||||
|
<isNotEmpty property="searchKeyword">
|
||||||
|
<isEqual prepend="AND" property="searchCondition" compareValue="1">
|
||||||
|
EMAIL_CN LIKE CONCAT('%' , #searchKeyword#, '%')
|
||||||
|
</isEqual>
|
||||||
|
<isEqual prepend="AND" property="searchCondition" compareValue="2">
|
||||||
|
EMAIL_TO = #searchKeyword#
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
ORDER BY EMAIL_SEND_PNTTM DESC
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="MsgMgrDAO.emailMgrList" parameterClass="EmailMgrVO" resultClass="EmailMgrVO">
|
||||||
|
SELECT
|
||||||
|
EMAIL_SEQ AS emailSeq
|
||||||
|
, EMAIL_TIT AS emailTitle
|
||||||
|
, EMAIL_CN AS emailContent
|
||||||
|
, EMAIL_TY AS emailTy
|
||||||
|
, EMAIL_TO AS emailTo
|
||||||
|
, EMAIL_FROM AS emailFrom
|
||||||
|
, ADR_SEQ AS adrSeq
|
||||||
|
, TO_CHAR ( EMAIL_SEND_PNTTM, 'YYYY/MM/DD' ) AS emailSendPnttm
|
||||||
|
, TO_CHAR ( FRST_REGIST_PNTTM, 'YYYY/MM/DD' ) AS frstRegistPnttm
|
||||||
|
FROM ADR_EMAIL_LOG
|
||||||
|
WHERE 1=1
|
||||||
|
<isNotEmpty property="searchKeyword">
|
||||||
|
<isEqual prepend="AND" property="searchCondition" compareValue="1">
|
||||||
|
EMAIL_CN LIKE CONCAT('%' , #searchKeyword#, '%')
|
||||||
|
</isEqual>
|
||||||
|
<isEqual prepend="AND" property="searchCondition" compareValue="2">
|
||||||
|
EMAIL_TO = #searchKeyword#
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
ORDER BY 1=1
|
||||||
|
<isNotEmpty property="searchSortCnd">
|
||||||
|
,$searchSortCnd$
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="searchSortOrd">
|
||||||
|
$searchSortOrd$
|
||||||
|
</isNotEmpty>
|
||||||
|
LIMIT #recordCountPerPage# OFFSET #firstIndex#
|
||||||
|
|
||||||
|
</select>
|
||||||
</sqlMap>
|
</sqlMap>
|
||||||
175
src/main/webapp/WEB-INF/jsp/kccadr/msg/sendEmailMgrList.jsp
Normal file
175
src/main/webapp/WEB-INF/jsp/kccadr/msg/sendEmailMgrList.jsp
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||||
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||||
|
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||||
|
<%
|
||||||
|
/**
|
||||||
|
* @Class Name : sendMsgMgrList.jsp
|
||||||
|
* @Description : 발송문자 리스트
|
||||||
|
* @Modification Information
|
||||||
|
* @
|
||||||
|
* @ 수정일 수정자 수정내용
|
||||||
|
* @ ------- -------- ---------------------------
|
||||||
|
* @ 2021.12.30 우영두 최초 생성
|
||||||
|
* @author 우영두
|
||||||
|
* @since 2021.12.30
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function fncGoList(){
|
||||||
|
linkPage(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function linkPage(pageNo){
|
||||||
|
var listForm = document.listForm ;
|
||||||
|
listForm.pageIndex.value = pageNo ;
|
||||||
|
listForm.searchCondition.value = $('#searchCondition').val();
|
||||||
|
listForm.searchKeyword.value = $('#searchKeyword').val();
|
||||||
|
listForm.action = "<c:url value='/kccadr/msg/sendEmailMgrList.do'/>";
|
||||||
|
listForm.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//발송문구 관리 리스트화면으로 이동
|
||||||
|
function fncMsgMgrReg(msgSeq) {
|
||||||
|
|
||||||
|
location.href="<c:url value='/kccadr/msg/msgMgrList.do'/>";
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<title>발송 Email 목록</title>
|
||||||
|
<form id="listForm" name="listForm" method="post">
|
||||||
|
<input type="hidden" name="pageIndex" value="<c:out value='${msgMgrVO.pageIndex}' default='1' />"/>
|
||||||
|
<input type="hidden" name="searchSortCnd" value="<c:out value="${msgMgrVO.searchSortCnd}" />" />
|
||||||
|
<input type="hidden" name="searchSortOrd" value="<c:out value="${msgMgrVO.searchSortOrd}" />" />
|
||||||
|
<input type="hidden" id="smsSeq" name="smsSeq" value=""/>
|
||||||
|
<div class="cont_wrap">
|
||||||
|
<div class="box">
|
||||||
|
|
||||||
|
<!-- cont_tit -->
|
||||||
|
<div class="cont_tit">
|
||||||
|
<h2>발송 Email 목록</h2>
|
||||||
|
<ul class="cont_nav">
|
||||||
|
<li class="home">
|
||||||
|
<a href="/">
|
||||||
|
<i></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>발송 관리</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>발송email 관리</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="cur_nav">발송email 목록</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //cont_tit -->
|
||||||
|
|
||||||
|
<div class="cont">
|
||||||
|
<!-- list_top -->
|
||||||
|
<div class="list_top">
|
||||||
|
<div class="list_util">
|
||||||
|
<div class="detail_search">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<p class="tit_text">구분</p>
|
||||||
|
<select name="searchCondition" id="searchCondition">
|
||||||
|
<%-- <option value="" ${msgMgrVO.searchCondition eq '' ? 'selected' : '' }>전체</option> --%>
|
||||||
|
<option value="1" ${msgMgrVO.searchCondition eq '1' ? 'selected' : '' }>발송내용</option>
|
||||||
|
<option value="2" ${msgMgrVO.searchCondition eq '2' ? 'selected' : '' }>수신자</option>
|
||||||
|
</select>
|
||||||
|
<input type="text" id="searchKeyword" name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${smsMgrVO.searchKeyword}'/>">
|
||||||
|
<button class="btn_search" onclick="fncGoList(); return false;">검색</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //list_top -->
|
||||||
|
|
||||||
|
<!-- list -->
|
||||||
|
<div class="list tbType01">
|
||||||
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 5%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: auto">
|
||||||
|
<col style="width: 10%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 10%">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>번호<button class="sort btn_sort" id="sort_msgSeq"></button></th>
|
||||||
|
<th>발송유형<button type="button" class="sort sortBtn" id="sort_emailTy"></button></th>
|
||||||
|
<th>발송내용<button type="button" class="sort sortBtn" id="sort_emailContent"></button></th>
|
||||||
|
<th>조정번호<button type="button" class="sort sortBtn" id="sort_adrSeq"></button></th>
|
||||||
|
<th>받는사람<button type="button" class="sort sortBtn" id="sort_emailTo"></button></th>
|
||||||
|
<th>보내는사람<button type="button" class="sort sortBtn" id="sort_emailFrom"></button></th>
|
||||||
|
<th>발송일자<button type="button" class="sort sortBtn" id="sort_emailSendPnttm"></button></th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach var="list" items="${list}" varStatus="status">
|
||||||
|
<tr onclick="fnAcptDetail('${list.emailSeq}');" style="cursor:pointer;">
|
||||||
|
<td>
|
||||||
|
<c:if test="${smsMgrVO.searchSortOrd eq 'desc' }">
|
||||||
|
<c:out value="${ ( paginationInfo.totalRecordCount - ((smsMgrVO.pageIndex -1)*smsMgrVO.pageUnit) ) - status.index }"/>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${smsMgrVO.searchSortOrd eq 'asc' }">
|
||||||
|
<c:out value="${(smsMgrVO.pageIndex - 1) * smsMgrVO.pageUnit + status.count}"/>
|
||||||
|
</c:if>
|
||||||
|
</td>
|
||||||
|
<td><kc:code codeId="CC050" code="${list.emailTy}"/></td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${list.emailContent}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${list.adrSeq}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${list.emailTo}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${list.emailFrom}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:out value="${list.emailSendPnttm}"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
<c:if test="${empty list}">
|
||||||
|
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
|
||||||
|
</c:if>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- //list -->
|
||||||
|
<div class="btn_wrap btn_layout02">
|
||||||
|
<button class="btnType02" onclick="fncMsgMgrReg(); return false;">발송문구 관리</button>
|
||||||
|
</div>
|
||||||
|
<!-- page -->
|
||||||
|
<div class="page">
|
||||||
|
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
|
||||||
|
</div>
|
||||||
|
<!-- //page -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
170
src/main/webapp/WEB-INF/jsp/kccadr/sendMgr/emailSendMgr.jsp
Normal file
170
src/main/webapp/WEB-INF/jsp/kccadr/sendMgr/emailSendMgr.jsp
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||||
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||||
|
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||||
|
<%
|
||||||
|
/**
|
||||||
|
* @Class Name : emailSendMgr.do
|
||||||
|
* @Description : email 발송 화면
|
||||||
|
* @Modification Information
|
||||||
|
* @
|
||||||
|
* @ 수정일 수정자 수정내용
|
||||||
|
* @ ------- -------- ---------------------------
|
||||||
|
* @ 2023.09.13 원영현 최초 생성
|
||||||
|
* @author 원영현
|
||||||
|
* @since 2023.09.13
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function inputAddEamil(ty){
|
||||||
|
var inputEmail = $("#callTo").val();
|
||||||
|
|
||||||
|
if(inputEmail == "" || inputEmail == null){
|
||||||
|
alert("메일주소를 입력해 주세요");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var taxExptext = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
|
||||||
|
if(taxExptext.test(inputEmail)==false){
|
||||||
|
alert("이메일주소 형식이 올바르지 않습니다.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inputAddLine(ty);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fnEmailSend(){
|
||||||
|
|
||||||
|
var sendLength = $("input[name=inputAdd]").length;
|
||||||
|
var emailSubject = $("#emailSubject").val();
|
||||||
|
var emailContent = $("#emailContent").val();
|
||||||
|
|
||||||
|
|
||||||
|
if(sendLength == 0){
|
||||||
|
alert("수신 메일주소를 입력해 주세요");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(emailSubject == ""){
|
||||||
|
alert("발송제목을 입력해 주세요");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(emailContent == ""){
|
||||||
|
alert("발송내용을 입력해 주세요");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//전송 메일주소 배열 생성
|
||||||
|
var emailArr = new Array(sendLength);
|
||||||
|
for(var i=0; i < sendLength; i++){
|
||||||
|
emailArr[i] = $("input[name=inputAdd]").eq(i).val();
|
||||||
|
}
|
||||||
|
$("#emailList").val(emailArr);
|
||||||
|
|
||||||
|
var data = new FormData(document.emailForm);
|
||||||
|
$.ajax({
|
||||||
|
type: "POST"
|
||||||
|
, url: "/kccadr/sendMgr/emailSendMgrAjax.do"
|
||||||
|
, data: data
|
||||||
|
, dataType:'json'
|
||||||
|
, async: false
|
||||||
|
, processData: false
|
||||||
|
, contentType: false
|
||||||
|
, cache: false
|
||||||
|
, success: function (returnData, status) {
|
||||||
|
console.log(returnData.result);
|
||||||
|
if(returnData.result == 'SUCCESS'){
|
||||||
|
alert("email전송에 성공하였습니다.");
|
||||||
|
location.reload();
|
||||||
|
}else{
|
||||||
|
alert(returnData.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,error: function (e) {
|
||||||
|
alert("요청에 실패하였습니다.");
|
||||||
|
console.log("ERROR : ", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<form id="emailForm" name="emailForm" method="post">
|
||||||
|
<input type="hidden" id="emailList" name="emailList"/>
|
||||||
|
<!-- cont -->
|
||||||
|
<div class="cont_wrap">
|
||||||
|
<div class="box">
|
||||||
|
<!-- cont_tit -->
|
||||||
|
<div class="cont_tit">
|
||||||
|
<h2>이메일 발송</h2>
|
||||||
|
<ul class="cont_nav">
|
||||||
|
<li class="home"><a href="/"><i></i></a></li>
|
||||||
|
<li>
|
||||||
|
<p>발송 관리</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="cur_nav">이메일 발송</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //cont_tit -->
|
||||||
|
|
||||||
|
<div class="cont">
|
||||||
|
<!-- list_상세 -->
|
||||||
|
<div class="tbType02">
|
||||||
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 220px;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>수신메일주소</th>
|
||||||
|
<td>
|
||||||
|
<div class="input_form">
|
||||||
|
<input type="text" class="write_info" id="callTo" name="callTo" placeholder="email주소를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='email주소를 입력하세요'">
|
||||||
|
<button type="button" class="btnType01" onclick="inputAddEamil(this);">메일추가</button>
|
||||||
|
<div class="input_form_add_wrap">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>발송제목</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" size="100" id="emailTitle" name="emailTitle">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>발송내용</th>
|
||||||
|
<td>
|
||||||
|
<textarea name="emailContent" id="emailContent" cols="30" rows="10"></textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- //list_상세 -->
|
||||||
|
|
||||||
|
<!-- btn_wrap -->
|
||||||
|
<div class="btn_wrap btn_layout01">
|
||||||
|
<div class="area_left">
|
||||||
|
</div>
|
||||||
|
<div class="area_right">
|
||||||
|
<button class="btnType02" onclick="fnEmailSend(); return false;">발송</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //btn_wrap -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //cont -->
|
||||||
|
</form>
|
||||||
154
src/main/webapp/WEB-INF/jsp/kccadr/sendMgr/smsSendMgr.jsp
Normal file
154
src/main/webapp/WEB-INF/jsp/kccadr/sendMgr/smsSendMgr.jsp
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||||
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
|
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||||
|
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||||
|
<%
|
||||||
|
/**
|
||||||
|
* @Class Name : smsSendMgr.do
|
||||||
|
* @Description : SMS 발송 화면
|
||||||
|
* @Modification Information
|
||||||
|
* @
|
||||||
|
* @ 수정일 수정자 수정내용
|
||||||
|
* @ ------- -------- ---------------------------
|
||||||
|
* @ 2023.09.13 원영현 최초 생성
|
||||||
|
* @author 원영현
|
||||||
|
* @since 2023.09.13
|
||||||
|
* @version 1.0
|
||||||
|
* @see
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function inputAddPhone(ty){
|
||||||
|
var inputPhone = $("#callTo").val();
|
||||||
|
|
||||||
|
if(inputPhone == "" || inputPhone == null){
|
||||||
|
alert("수신번호를 입력해 주세요");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputAddLine(ty);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fnSmsSend(){
|
||||||
|
|
||||||
|
|
||||||
|
var sendLength = $("input[name=inputAdd]").length;
|
||||||
|
var sendMsg = $("#sendMsg").val();
|
||||||
|
|
||||||
|
|
||||||
|
if(sendLength == 0){
|
||||||
|
alert("수신번호를 입력해 주세요");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(sendMsg == ""){
|
||||||
|
alert("발송내용을 입력해 주세요");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//배열 생성
|
||||||
|
var phoneArr = new Array(sendLength);
|
||||||
|
for(var i=0; i < sendLength; i++){
|
||||||
|
phoneArr[i] = $("input[name=inputAdd]").eq(i).val();
|
||||||
|
}
|
||||||
|
$("#phoneList").val(phoneArr);
|
||||||
|
|
||||||
|
|
||||||
|
var data = new FormData(document.smsForm);
|
||||||
|
$.ajax({
|
||||||
|
type: "POST"
|
||||||
|
, url: "/kccadr/sendMgr/smsSendMgrAjax.do"
|
||||||
|
, data: data
|
||||||
|
, dataType:'json'
|
||||||
|
, async: false
|
||||||
|
, processData: false
|
||||||
|
, contentType: false
|
||||||
|
, cache: false
|
||||||
|
, success: function (returnData, status) {
|
||||||
|
console.log(returnData.result);
|
||||||
|
if(returnData.result == 'SUCCESS'){
|
||||||
|
alert("문자발송요청에 성공하였습니다.");
|
||||||
|
location.reload();
|
||||||
|
}else{
|
||||||
|
alert(returnData.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,error: function (e) {
|
||||||
|
alert("요청에 실패하였습니다.");
|
||||||
|
console.log("ERROR : ", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form id="smsForm" name="smsForm" method="post">
|
||||||
|
<input type="hidden" id="phoneList" name="phoneList"/>
|
||||||
|
<!-- cont -->
|
||||||
|
<div class="cont_wrap">
|
||||||
|
<div class="box">
|
||||||
|
<!-- cont_tit -->
|
||||||
|
<div class="cont_tit">
|
||||||
|
<h2>SMS 발송</h2>
|
||||||
|
<ul class="cont_nav">
|
||||||
|
<li class="home"><a href="/"><i></i></a></li>
|
||||||
|
<li>
|
||||||
|
<p>발송 관리</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="cur_nav">SMS 발송</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- //cont_tit -->
|
||||||
|
|
||||||
|
<div class="cont">
|
||||||
|
<!-- list_상세 -->
|
||||||
|
<div class="tbType02">
|
||||||
|
<table>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 220px;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>수신번호</th>
|
||||||
|
<td>
|
||||||
|
<div class="input_form">
|
||||||
|
<input type="text" class="write_info" id="callTo" name="callTo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="번호를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'">
|
||||||
|
<button type="button" class="btnType01" onclick="inputAddPhone(this);">번호추가</button>
|
||||||
|
<ul class="input_form_add_wrap">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>발송내용</th>
|
||||||
|
<td>
|
||||||
|
<textarea name="sendMsg" id="sendMsg" cols="30" rows="10"></textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- //list_상세 -->
|
||||||
|
|
||||||
|
<!-- btn_wrap -->
|
||||||
|
<div class="btn_wrap btn_layout01">
|
||||||
|
<div class="area_left">
|
||||||
|
</div>
|
||||||
|
<div class="area_right">
|
||||||
|
<button class="btnType02" onclick="fnSmsSend(); return false;">발송</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //btn_wrap -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- //cont -->
|
||||||
|
</form>
|
||||||
@ -172,7 +172,11 @@ function inputAddLine(itm){
|
|||||||
var inputLineNum = $(itm).siblings(".input_form_add_wrap").find("li").length;
|
var inputLineNum = $(itm).siblings(".input_form_add_wrap").find("li").length;
|
||||||
inputLineNum+=1;
|
inputLineNum+=1;
|
||||||
console.log(inputLineNum);
|
console.log(inputLineNum);
|
||||||
var inputLineText = '<li><p></p>'+inputValue+'<button type="button" onclick="inputDeleteLine(this);"><img src="/kccadrPb/adm/image/close-orange.png" alt=""></button></li>';
|
$("#callTo").val("");
|
||||||
|
var inputLineText = '<li><p></p><input type="hidden" name="inputAdd" value="'+inputValue+'"/>'
|
||||||
|
+inputValue
|
||||||
|
+'<button type="button" onclick="inputDeleteLine(this);"><img src="/kccadrPb/adm/image/close-orange.png" alt=""></button></li>';
|
||||||
|
|
||||||
$(itm).siblings(".input_form_add_wrap").append(inputLineText);
|
$(itm).siblings(".input_form_add_wrap").append(inputLineText);
|
||||||
lineNumber();
|
lineNumber();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user