From 09f90f8504ab62c310dfa3bd21f8196f21776864 Mon Sep 17 00:00:00 2001 From: ijunho Date: Fri, 5 Dec 2025 11:29:23 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=9C=EB=B0=9C=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EB=B3=B8=EC=9D=B8=EC=9D=B8=EC=A6=9D=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kcc/kccadr/xxx/web/XxxWebController.java | 33 +- .../service/impl/CmdTrgtServiceImpl.java | 10 + .../aplct/cmdTrgt/web/CmdTrgtController.java | 14 + .../service/impl/PreventServiceImpl.java | 10 + .../aplct/prevent/web/PreventController.java | 12 + .../service/impl/SspnIdtmtServiceImpl.java | 10 + .../sspnIdtmt/web/SspnIdtmtController.java | 12 + .../java/kcc/ve/cmm/sendAt/SendAtUtill.java | 66 +++ src/main/java/kcc/ve/cmm/sendAt/SendAtVO.java | 40 +- .../kcc/ve/cmm/sendAt/SendController.java | 57 ++ .../java/kcc/ve/cmm/sendAt/SendScheduler.java | 177 +++++++ .../java/kcc/ve/cmm/sendAt/SendService.java | 3 + .../java/kcc/ve/cmm/sendAt/impl/SendDAO.java | 7 +- .../ve/cmm/sendAt/impl/SendServiceImpl.java | 498 +++++++++--------- .../egovProps/globals_tLocal.properties | 4 +- .../ve/cmm/sendAt/Send_SQL_Postgresql.xml | 177 ++----- .../WEB-INF/jsp/ve/cmm/sendAt/SmsSend.jsp | 106 ++++ .../jsp/web/kccadr/login/SsoLoginUsr.jsp | 2 +- .../aplct/cmdTrgt/popup/eduAplctPopList.jsp | 2 +- .../aplct/prevent/popup/eduAplctPopList.jsp | 2 +- .../aplct/sspnIdtmt/popup/eduAplctPopList.jsp | 2 +- 21 files changed, 831 insertions(+), 413 deletions(-) create mode 100644 src/main/java/kcc/ve/cmm/sendAt/SendAtUtill.java create mode 100644 src/main/java/kcc/ve/cmm/sendAt/SendController.java create mode 100644 src/main/java/kcc/ve/cmm/sendAt/SendScheduler.java create mode 100644 src/main/webapp/WEB-INF/jsp/ve/cmm/sendAt/SmsSend.jsp diff --git a/src/main/java/kcc/kccadr/xxx/web/XxxWebController.java b/src/main/java/kcc/kccadr/xxx/web/XxxWebController.java index 82684a4b..ad623367 100644 --- a/src/main/java/kcc/kccadr/xxx/web/XxxWebController.java +++ b/src/main/java/kcc/kccadr/xxx/web/XxxWebController.java @@ -13,8 +13,12 @@ import kcc.com.cmm.service.FileVO; import kcc.com.utl.user.service.CheckLoginUtil; import kcc.kccadr.xxx.service.XxxService; import kcc.kccadr.xxx.service.XxxVO; +import kcc.ve.cmm.VeConstants; import kcc.ve.cmm.crt.CertPhoneRequestUtill; +import kcc.ve.cmm.sendAt.SendAtUtill; import kcc.ve.cmm.sendAt.SendService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.*; @@ -33,6 +37,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.*; +import java.util.regex.Pattern; /** @@ -91,6 +96,16 @@ public class XxxWebController { @Resource(name = "SendService") private SendService sendService; + //과정차시 관리 + @Resource(name = "vEPrcsAplctPrdService") + private VEPrcsAplctPrdService vEPrcsAplctPrdService; + + + //과정차시 관리 + @Resource(name = "sendAtUtill") + private SendAtUtill sendAtUtill; + + /** * XXX 목록 화면 */ @@ -324,16 +339,20 @@ public class XxxWebController { @RequestMapping("/web/kccadr/xxx/atTest.do") public String atTest() throws Exception { - Map chihwan = new HashMap<>(); - chihwan.put("content", "귀하의 상표권 교육조건부 기소유예 교육 신청이 완료되었습니다.\n"); - chihwan.put("eduDay", "2025.11.28 (금) 9시~18시"); - chihwan.put("eduRegDay", "(교육등록:8:50~9시)"); - chihwan.put("eduPlace", "서울 강남구 테헤란로 131, 한국지식재산센터 지하 1층 훈민정음 홀 (역삼역 4번출구 인근)"); - - sendService.sendAt("01030266269", "TEMPLATE_EDU_SUBMIT", chihwan); +// Map chihwan = new HashMap<>(); +// chihwan.put("content", "귀하의 상표권 교육조건부 기소유예 교육 신청이 완료되었습니다.\n"); +// chihwan.put("eduDay", "2025.11.28 (금) 9시~18시"); +// chihwan.put("eduRegDay", "(교육등록:8:50~9시)"); +// chihwan.put("eduPlace", "서울 강남구 테헤란로 131, 한국지식재산센터 지하 1층 훈민정음 홀 (역삼역 4번출구 인근)"); +// +// sendService.sendAt("01030266269", "TEMPLATE_EDU_SUBMIT", chihwan); // sendService.sendSms("01030266269", "테스트문자제목", "테스트 내용", "SMS"); + Map chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_70, "prcsAplctPrd_0000240"); + + + return null; } diff --git a/src/main/java/kcc/ve/aplct/cmdTrgt/service/impl/CmdTrgtServiceImpl.java b/src/main/java/kcc/ve/aplct/cmdTrgt/service/impl/CmdTrgtServiceImpl.java index bed395f4..c1734027 100644 --- a/src/main/java/kcc/ve/aplct/cmdTrgt/service/impl/CmdTrgtServiceImpl.java +++ b/src/main/java/kcc/ve/aplct/cmdTrgt/service/impl/CmdTrgtServiceImpl.java @@ -1,10 +1,12 @@ package kcc.ve.aplct.cmdTrgt.service.impl; +import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; +import kcc.ve.cmm.sendAt.SendService; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -54,6 +56,9 @@ public class CmdTrgtServiceImpl implements CmdTrgtService { // 교육신청발송이력 @Resource(name = "vEEduAplctSndHstryService") private VEEduAplctSndHstryService vEEduAplctSndHstryService; + + @Resource(name = "SendService") + private SendService sendService; @Override public void insertVeEduAplct(VEEduAplctVO paramVO) { @@ -236,6 +241,11 @@ public class CmdTrgtServiceImpl implements CmdTrgtService { vEEduAplctVO.setClphone(cmdTrgtMngVO.getClphone()); vEEduAplctVO.setSndFlag("B"); Map resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag()); + + Map chihwan = new HashMap<>(); + chihwan.put("certNo", code); + sendService.sendAt(vEEduAplctVO.getClphone(), "TEMPLATE_CERT_NO", chihwan); + //문자 발송 성공 시 if("1".equals(resultMap.get("result_code"))){ //발송 로그 diff --git a/src/main/java/kcc/ve/aplct/cmdTrgt/web/CmdTrgtController.java b/src/main/java/kcc/ve/aplct/cmdTrgt/web/CmdTrgtController.java index b795d400..e9cd1285 100644 --- a/src/main/java/kcc/ve/aplct/cmdTrgt/web/CmdTrgtController.java +++ b/src/main/java/kcc/ve/aplct/cmdTrgt/web/CmdTrgtController.java @@ -3,12 +3,15 @@ package kcc.ve.aplct.cmdTrgt.web; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import kcc.ve.cmm.sendAt.SendAtUtill; +import kcc.ve.cmm.sendAt.SendService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -186,6 +189,12 @@ public class CmdTrgtController { //알림 @Resource(name = "iTNotiUtil") private ITNotiUtil iTNotiUtil; + + @Resource(name = "sendAtUtill") + private SendAtUtill sendAtUtill; + + @Resource(name = "SendService") + private SendService sendService; private String p_lctr_div_cd = "70"; //시정명령 코드, 기소유예 - 60, 예방교육 - 80 @@ -740,6 +749,11 @@ public class CmdTrgtController { } result = "success"; + + //신청 시 알림톡 발송 + Map chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_70, vEPrcsDetailVO.getPrcsAplctPrdOrd()); + sendService.sendAt(vEPrcsDetailVO.getPhone().trim().replaceAll("-", ""), "TEMPLATE_EDU_SUBMIT", chihwan); + } catch (Exception e) { // TODO: handle exception } diff --git a/src/main/java/kcc/ve/aplct/prevent/service/impl/PreventServiceImpl.java b/src/main/java/kcc/ve/aplct/prevent/service/impl/PreventServiceImpl.java index 64736b3c..02615c13 100644 --- a/src/main/java/kcc/ve/aplct/prevent/service/impl/PreventServiceImpl.java +++ b/src/main/java/kcc/ve/aplct/prevent/service/impl/PreventServiceImpl.java @@ -1,10 +1,12 @@ package kcc.ve.aplct.prevent.service.impl; +import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; +import kcc.ve.cmm.sendAt.SendService; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -54,6 +56,9 @@ public class PreventServiceImpl implements PreventService { // 교육신청발송이력 @Resource(name = "vEEduAplctSndHstryService") private VEEduAplctSndHstryService vEEduAplctSndHstryService; + + @Resource(name = "SendService") + private SendService sendService; @Override public void insertVeEduAplct(VEEduAplctVO paramVO) { @@ -232,6 +237,11 @@ public class PreventServiceImpl implements PreventService { vEEduAplctVO.setClphone(cmdTrgtMngVO.getClphone()); vEEduAplctVO.setSndFlag("B"); Map resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag()); + + Map chihwan = new HashMap<>(); + chihwan.put("certNo", code); + sendService.sendAt(vEEduAplctVO.getClphone(), "TEMPLATE_CERT_NO", chihwan); + //문자 발송 성공 시 if("1".equals(resultMap.get("result_code"))){ //발송 로그 diff --git a/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java b/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java index 5e5de0e5..3a6b9644 100644 --- a/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java +++ b/src/main/java/kcc/ve/aplct/prevent/web/PreventController.java @@ -9,6 +9,8 @@ import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import kcc.ve.cmm.sendAt.SendAtUtill; +import kcc.ve.cmm.sendAt.SendService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -185,6 +187,12 @@ public class PreventController { //알림 @Resource(name = "iTNotiUtil") private ITNotiUtil iTNotiUtil; + + @Resource(name = "sendAtUtill") + private SendAtUtill sendAtUtill; + + @Resource(name = "SendService") + private SendService sendService; private String p_lctr_div_cd = "80"; //시정명령 코드, 기소유예 - 60, 예방교육 - 80 @@ -739,6 +747,10 @@ public class PreventController { } result = "success"; + + //신청 시 알림톡 발송 + Map chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_80, vEPrcsDetailVO.getPrcsAplctPrdOrd()); + sendService.sendAt(vEPrcsDetailVO.getPhone().trim().replaceAll("-", ""), "TEMPLATE_EDU_SUBMIT", chihwan); } catch (Exception e) { // TODO: handle exception } diff --git a/src/main/java/kcc/ve/aplct/sspnIdtmt/service/impl/SspnIdtmtServiceImpl.java b/src/main/java/kcc/ve/aplct/sspnIdtmt/service/impl/SspnIdtmtServiceImpl.java index 951ab964..10ad8789 100644 --- a/src/main/java/kcc/ve/aplct/sspnIdtmt/service/impl/SspnIdtmtServiceImpl.java +++ b/src/main/java/kcc/ve/aplct/sspnIdtmt/service/impl/SspnIdtmtServiceImpl.java @@ -1,10 +1,12 @@ package kcc.ve.aplct.sspnIdtmt.service.impl; +import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; +import kcc.ve.cmm.sendAt.SendService; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -55,6 +57,9 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService { // 교육신청발송이력 @Resource(name = "vEEduAplctSndHstryService") private VEEduAplctSndHstryService vEEduAplctSndHstryService; + + @Resource(name = "SendService") + private SendService sendService; @Override public void insertVeEduAplct(VEEduAplctVO paramVO) { @@ -293,6 +298,11 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService { vEEduAplctVO.setClphone(cndtnTrgtInfoMngVO.getClphone()); vEEduAplctVO.setSndFlag("B"); Map resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag()); + + Map chihwan = new HashMap<>(); + chihwan.put("certNo", code); + sendService.sendAt(vEEduAplctVO.getClphone(), "TEMPLATE_CERT_NO", chihwan); + //문자 발송 성공 시 if("1".equals(resultMap.get("result_code"))){ //발송 로그 diff --git a/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java b/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java index 6c09f71c..d19ca81e 100644 --- a/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java +++ b/src/main/java/kcc/ve/aplct/sspnIdtmt/web/SspnIdtmtController.java @@ -9,6 +9,8 @@ import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import kcc.ve.cmm.sendAt.SendAtUtill; +import kcc.ve.cmm.sendAt.SendService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -178,6 +180,12 @@ public class SspnIdtmtController { //알림 @Resource(name = "iTNotiUtil") private ITNotiUtil iTNotiUtil; + + @Resource(name = "sendAtUtill") + private SendAtUtill sendAtUtill; + + @Resource(name = "SendService") + private SendService sendService; private String p_lctr_div_cd = "60"; @@ -730,6 +738,10 @@ public class SspnIdtmtController { } result = "success"; + + //신청 시 알림톡 발송 + Map chihwan = sendAtUtill.chihwanSet(VeConstants.LCTR_DIV_CD_60, vEPrcsDetailVO.getPrcsAplctPrdOrd()); + sendService.sendAt(vEPrcsDetailVO.getPhone().trim().replaceAll("-", ""), "TEMPLATE_EDU_SUBMIT", chihwan); } catch (Exception e) { // TODO: handle exception } diff --git a/src/main/java/kcc/ve/cmm/sendAt/SendAtUtill.java b/src/main/java/kcc/ve/cmm/sendAt/SendAtUtill.java new file mode 100644 index 00000000..78e01a97 --- /dev/null +++ b/src/main/java/kcc/ve/cmm/sendAt/SendAtUtill.java @@ -0,0 +1,66 @@ +package kcc.ve.cmm.sendAt; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import lombok.*; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + +@Component(value = "sendAtUtill") +public class SendAtUtill{ + + //과정차시 관리 + @Resource(name = "vEPrcsAplctPrdService") + private VEPrcsAplctPrdService vEPrcsAplctPrdService; + + public Map chihwanSet(String lctrDivCd, String prcsAplctPrdOrd) throws Exception { + + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + + vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd); + + VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO); + + String[] prvtMemoCn = vEPrcsDetailVODetail.getPrvtMemoCn().split(Pattern.quote("|")); + String content = ""; + String eduDay = ""; + String eduRegDay = ""; + String eduPlace = ""; + + if(VeConstants.LCTR_DIV_CD_60.equals(lctrDivCd)){ + content = "귀하의 상표권 교육조건부 기소유예 교육 신청이 완료되었습니다."; + }else if(VeConstants.LCTR_DIV_CD_70.equals(lctrDivCd)){ + content = "귀하의 부정경쟁행위 시정명령 교육 신청이 완료되었습니다."; + }else if(VeConstants.LCTR_DIV_CD_80.equals(lctrDivCd)){ + content = "귀하의 상표권 침해・부정경쟁행위 예방 교육 신청이 완료되었습니다."; + }else{ + content = "귀하의 교육 신청이 완료되었습니다."; + } + + if(prvtMemoCn.length > 0){ + eduDay = prvtMemoCn[0]; + eduRegDay = prvtMemoCn[1]; + eduPlace = prvtMemoCn[2]; + } + + Map chihwan = new HashMap<>(); + chihwan.put("content", content); + chihwan.put("eduDay", eduDay); + chihwan.put("eduRegDay", eduRegDay); + chihwan.put("eduPlace", eduPlace); + + + return chihwan; + } + +} \ No newline at end of file diff --git a/src/main/java/kcc/ve/cmm/sendAt/SendAtVO.java b/src/main/java/kcc/ve/cmm/sendAt/SendAtVO.java index a7fa26f9..8d55ceb1 100644 --- a/src/main/java/kcc/ve/cmm/sendAt/SendAtVO.java +++ b/src/main/java/kcc/ve/cmm/sendAt/SendAtVO.java @@ -1,41 +1,13 @@ package kcc.ve.cmm.sendAt; -import java.io.Serializable; -import java.util.Map; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.*; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import java.io.Serializable; +import java.util.Map; -/** -* @packageName : kcc.com.snd.service -* @templatecode -* @신청인_접수확인_1 : -* TEMPLATE_APP_JUBSU -* @chihwan : 없음 -* @신청인_담당자배정_1 : -* TEMPLATE_APP_BAEJUNG -* @chihwan : "caseNo", "team", "examiner", "tel", "email" -* @양당사자_분쟁조정협의회 안건상정 : -* TEMPLATE_BOTH_SANGJUNG -* @chihwan : "caseNo", "cfrnc", "tel", "email" -* @양당사자_출석요구 n차 : -* TEMPLATE_BOTH_CHULSUK -* @chihwan : "caseNo", "nCha" -* @양당사자_통지 : -* TEMPLATE_BOTH_TONGJI -* @chihwan : "caseNo", "cfrnc" -* @신청인_보완요구 n차 : -* TEMPLATE_APP_BOWAN -* @chihwan : "caseNo", "nCha" -* -*/ @Getter @Setter @NoArgsConstructor @@ -56,6 +28,8 @@ public class SendAtVO implements Serializable { private String from; private String to; private Content content; + private Resend resend; + private Recontent recontent; @JsonIgnore private Map chihwan; @@ -85,7 +59,7 @@ public class SendAtVO implements Serializable { @NoArgsConstructor @AllArgsConstructor @Builder - public static class resend { + public static class Resend { private String first; } @@ -94,7 +68,7 @@ public class SendAtVO implements Serializable { @NoArgsConstructor @AllArgsConstructor @Builder - public static class recontent { + public static class Recontent { private Lms lms; @Getter diff --git a/src/main/java/kcc/ve/cmm/sendAt/SendController.java b/src/main/java/kcc/ve/cmm/sendAt/SendController.java new file mode 100644 index 00000000..3c7b3ea9 --- /dev/null +++ b/src/main/java/kcc/ve/cmm/sendAt/SendController.java @@ -0,0 +1,57 @@ +package kcc.ve.cmm.sendAt; + +import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; + +@Controller +public class SendController { + + private static final Logger LOGGER = LoggerFactory.getLogger(SendController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + @Resource(name = "SendService") + private SendService sendService; + + @RequestMapping("/cmm/sendAt/smsSendAjax.do") + public ModelAndView atSendAjax( SendSmsVO sendSmsVO ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + + if(StringUtil.isEmpty(sendSmsVO.getSmsContent())) { + sendSmsVO.setSmsContent(""); + } + String msgType = msgType(sendSmsVO.getSmsContent()); + + sendService.sendSms(sendSmsVO.getTo(), "지식재산보호원", sendSmsVO.getSmsContent(), msgType); + + return modelAndView; + } + + @RequestMapping("/cmm/sendAt/smsSend.do") + public String smsSend() throws Exception { + + return "ve/cmm/sendAt/SmsSend"; + } + + + private String msgType( String content ) throws UnsupportedEncodingException { + // EUC-KR 기준 바이트 길이 계산 + int byteLength = content.getBytes("EUC-KR").length; + + // SMS/LMS 판별 + String msgType = byteLength > 90 ? "LMS" : "SMS"; + + return msgType; + } +} diff --git a/src/main/java/kcc/ve/cmm/sendAt/SendScheduler.java b/src/main/java/kcc/ve/cmm/sendAt/SendScheduler.java new file mode 100644 index 00000000..bd3ab428 --- /dev/null +++ b/src/main/java/kcc/ve/cmm/sendAt/SendScheduler.java @@ -0,0 +1,177 @@ +package kcc.ve.cmm.sendAt; + +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +@Component +public class SendScheduler { + + @Resource(name = "SendService") + private SendService sendService; + + @Resource(name = "egovCryptoUtil") + private EgovCryptoUtil egovCryptoUtil; + + @Value("${Globals.prod.islocal}") + private String isLocal; + + private static final Logger LOGGER = LoggerFactory.getLogger(SendScheduler.class); + + /** + * 매일 새벽 1시에 한 번 실행 + * cron = "0 0 1 * * ?" → 초 분 시 일 월 요일 + */ + @Scheduled(cron = "0 0 9 * * ?") + public void sevenDaybeforeAt() { + + // svr 일때만 실행 + if(!"real".equals(isLocal)){ + LOGGER.info("[sevenDaybeforeAt] Skipped - Globals.prod.islocal=" + isLocal); + return; + } + + try { + List targetList = sendService.select7DaybeforeAt(7); + targetList.stream().forEach(t -> + { + if(StringUtils.isNotEmpty(t.getPhone())){ + String[] phone = t.getPhone().split(","); + Arrays.stream(phone).forEach( b -> + { + String to = egovCryptoUtil.decrypt(egovCryptoUtil.decrypt(b)); + + if(StringUtils.isNotEmpty(t.getPrvtMemoCn())){ + Map chihwan = getSevenDaybeforeAtChihwanMap(t); + + try { + sendService.sendAt(to, "TEMPLATE_EDU_SUBMIT", chihwan); + } catch(Exception e) { + System.out.println(e.getMessage()); + } + } + }); + } + }); + } catch(Exception e) { + throw new RuntimeException(e); + } + } + + @Scheduled(cron = "0 1 9 * * ?") + public void oneDaybeforeAt() { + + // svr 일때만 실행 + if(!"real".equals(isLocal)){ + LOGGER.info("[sevenDaybeforeAt] Skipped - Globals.prod.islocal=" + isLocal); + return; + } + + try { + List targetList = sendService.select7DaybeforeAt(1); + targetList.stream().forEach(t -> + { + if(StringUtils.isNotEmpty(t.getPhone())){ + String[] phone = t.getPhone().split(","); + Arrays.stream(phone).forEach( b -> + { + String to = egovCryptoUtil.decrypt(egovCryptoUtil.decrypt(b)); + + if(StringUtils.isNotEmpty(t.getPrvtMemoCn())){ + Map chihwan = getOneDaybeforeAtChihwanMap(t); + + try { + sendService.sendAt(to, "TEMPLATE_EDU_SUBMIT", chihwan); + } catch(Exception e) { + System.out.println(e.getMessage()); + } + } + }); + } + }); + } catch(Exception e) { + throw new RuntimeException(e); + } + } + + private static Map getSevenDaybeforeAtChihwanMap( VEPrcsDetailVO t ) { + String[] prvtMemoCn = t.getPrvtMemoCn().split(Pattern.quote("|")); + String content = ""; + String eduDay = ""; + String eduRegDay = ""; + String eduPlace = ""; + + if(VeConstants.LCTR_DIV_CD_60.equals(t.getLctrDivCd())){ + content = "귀하의 상표권 교육조건부 기소유예 교육 안내입니다."; + }else if(VeConstants.LCTR_DIV_CD_70.equals(t.getLctrDivCd())){ + content = "귀하의 부정경쟁행위 시정명령 교육 안내입니다."; + }else if(VeConstants.LCTR_DIV_CD_80.equals(t.getLctrDivCd())){ + content = "귀하의 상표권 침해・부정경쟁행위 예방 교육 안내입니다."; + }else{ + content = "귀하의 교육 안내입니다."; + } + + if(prvtMemoCn.length > 0){ + eduDay = prvtMemoCn[0]; + eduRegDay = prvtMemoCn[1]; + eduPlace = prvtMemoCn[2]; + } + + Map chihwan = new HashMap<>(); + chihwan.put("content", content); + chihwan.put("eduDay", eduDay); + chihwan.put("eduRegDay", eduRegDay); + chihwan.put("eduPlace", eduPlace); + return chihwan; + } + + private static Map getOneDaybeforeAtChihwanMap( VEPrcsDetailVO t ) { + String[] prvtMemoCn = t.getPrvtMemoCn().split(Pattern.quote("|")); + String content = ""; + String eduDay = ""; + String eduRegDay = ""; + String eduPlace = ""; + + LocalDate tomorrow = LocalDate.now().plusDays(1); + String tomorrowStr = tomorrow.format(DateTimeFormatter.ofPattern("M/d")); + + if(VeConstants.LCTR_DIV_CD_60.equals(t.getLctrDivCd())){ + content = "귀하의 내일(" + tomorrowStr + ") 상표권 교육조건부 기소유예 교육 안내입니다."; + }else if(VeConstants.LCTR_DIV_CD_70.equals(t.getLctrDivCd())){ + content = "귀하의 내일(" + tomorrowStr + ") 부정경쟁행위 시정명령 교육 안내입니다."; + }else if(VeConstants.LCTR_DIV_CD_80.equals(t.getLctrDivCd())){ + content = "귀하의 내일(" + tomorrowStr + ") 상표권 침해・부정경쟁행위 예방 교육 안내입니다."; + }else{ + content = "귀하의 내일(" + tomorrowStr + ") 교육 안내입니다."; + } + + if(prvtMemoCn.length > 0){ + eduDay = prvtMemoCn[0]; + eduRegDay = prvtMemoCn[1]; + eduPlace = prvtMemoCn[2]; + eduPlace += "\r\n※주차 지원이 불가하오니 대중교통을 이용바랍니다."; + } + + Map chihwan = new HashMap<>(); + chihwan.put("content", content); + chihwan.put("eduDay", eduDay); + chihwan.put("eduRegDay", eduRegDay); + chihwan.put("eduPlace", eduPlace); + return chihwan; + } +} \ No newline at end of file diff --git a/src/main/java/kcc/ve/cmm/sendAt/SendService.java b/src/main/java/kcc/ve/cmm/sendAt/SendService.java index 6283cc19..71371b98 100644 --- a/src/main/java/kcc/ve/cmm/sendAt/SendService.java +++ b/src/main/java/kcc/ve/cmm/sendAt/SendService.java @@ -1,6 +1,7 @@ package kcc.ve.cmm.sendAt; import egovframework.rte.psl.dataaccess.util.EgovMap; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import java.util.List; import java.util.Map; @@ -46,4 +47,6 @@ public interface SendService { void updateSendSet(SendSmsVO sendSmsVO) throws Exception; + public List select7DaybeforeAt(Integer diffDay) throws Exception; + } \ No newline at end of file diff --git a/src/main/java/kcc/ve/cmm/sendAt/impl/SendDAO.java b/src/main/java/kcc/ve/cmm/sendAt/impl/SendDAO.java index 107df8a6..c1cfc3da 100644 --- a/src/main/java/kcc/ve/cmm/sendAt/impl/SendDAO.java +++ b/src/main/java/kcc/ve/cmm/sendAt/impl/SendDAO.java @@ -1,9 +1,9 @@ package kcc.ve.cmm.sendAt.impl; -import egovframework.rte.psl.dataaccess.util.EgovMap; import kcc.com.cmm.service.impl.EgovComAbstractDAO; import kcc.ve.cmm.sendAt.SendAtVO; import kcc.ve.cmm.sendAt.SendSmsVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import org.springframework.stereotype.Repository; import java.util.List; @@ -27,4 +27,9 @@ public class SendDAO extends EgovComAbstractDAO { public void updateSendSet(SendSmsVO sendSmsVO) throws Exception{ update("sendDAO.updateSendSet", sendSmsVO); } + + public List select7DaybeforeAt(Integer diffDay) throws Exception{ + return (List) list("sendDAO.select7DaybeforeAt", diffDay); + } + } diff --git a/src/main/java/kcc/ve/cmm/sendAt/impl/SendServiceImpl.java b/src/main/java/kcc/ve/cmm/sendAt/impl/SendServiceImpl.java index 22f3d3ee..c6b5c033 100644 --- a/src/main/java/kcc/ve/cmm/sendAt/impl/SendServiceImpl.java +++ b/src/main/java/kcc/ve/cmm/sendAt/impl/SendServiceImpl.java @@ -5,10 +5,14 @@ import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import egovframework.rte.psl.dataaccess.util.EgovMap; import kcc.ve.cmm.sendAt.SendAtVO.Content; import kcc.ve.cmm.sendAt.SendAtVO.Content.At; +import kcc.ve.cmm.sendAt.SendAtVO.Resend; +import kcc.ve.cmm.sendAt.SendAtVO.Recontent; +import kcc.ve.cmm.sendAt.SendAtVO.Recontent.Lms; import kcc.ve.cmm.sendAt.PpurioGlobalSet; import kcc.ve.cmm.sendAt.SendAtVO; import kcc.ve.cmm.sendAt.SendService; import kcc.ve.cmm.sendAt.SendSmsVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import org.apache.commons.beanutils.BeanUtils; import org.json.JSONObject; import org.springframework.stereotype.Service; @@ -18,10 +22,7 @@ import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; +import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.security.KeyManagementException; @@ -33,70 +34,69 @@ import java.util.*; @Service("SendService") public class SendServiceImpl extends EgovAbstractServiceImpl implements SendService { - @Resource(name="sendDAO") + @Resource(name = "sendDAO") private SendDAO sendDAO; - + @Override public void sendAt( - String to - , String templateCode - , Map chihwan - ) throws Exception{ + String to + , String templateCode + , Map chihwan + ) throws Exception { SendAtVO vo = new SendAtVO(); vo = sendDAO.selectToken(); - + //이전 발급 토큰이 만료되었는지 시간비교 if(timeDiffBefore(vo.getExpired())) { //토큰 발급 if(this.getPpurioToken(vo)) { //토큰 갱신 sendDAO.updateToken(vo); - }else { + } else { System.out.println("토큰 갱신 실패"); throw new Exception(); } } vo = vo.builder() - .accesstoken(vo.getAccesstoken()) - .expired(vo.getExpired()) - .refkey("test1234") - .type(vo.getType()) - .to(to) - .content(Content.builder() - .at(SendAtVO.Content.At.builder() - .templatecode(templateCode) - .build() - ) - .build() - ) - .chihwan(chihwan) + .accesstoken(vo.getAccesstoken()) + .expired(vo.getExpired()) + .refkey("test1234") + .type(vo.getType()) + .to(to) + .content(Content.builder() + .at(At.builder() + .templatecode(templateCode) + .build() + ) .build() - ; - + ) + .chihwan(chihwan) + .build(); + this.sendAt(vo); - + } - + @Override - public Map sendSms( - String to - , String subject - , String smsContent - , String type - ) throws Exception{ + public Map sendSms( + String to + , String subject + , String smsContent + , String type + ) throws Exception { Boolean success = true; int successCnt = 0; SendAtVO vo = new SendAtVO(); vo = sendDAO.selectToken(); - + //이전 발급 토큰이 만료되었는지 시간비교 if(timeDiffBefore(vo.getExpired())) { //토큰 발급 if(this.getPpurioToken(vo)) { //토큰 갱신 sendDAO.updateToken(vo); - }else { + } else { System.out.println("토큰 갱신 실패"); throw new Exception(); } @@ -106,63 +106,69 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ smsVO.setSubject(subject); smsVO.setSmsContent(smsContent); smsVO.setType(type); - + String[] phoneNums = to.split(","); for(String phone : phoneNums) { smsVO.setTo(phone); boolean result = this.sendSmsPrcs(smsVO); if(result) { successCnt++; - }else { + } else { success = false; System.out.println("문자 발송 실패: " + phone); } } - + Map resultMap = new HashMap<>(); - resultMap.put("success" , success); - resultMap.put("successCnt" , successCnt); + resultMap.put("success", success); + resultMap.put("successCnt", successCnt); return resultMap; } - + @Override - public SendSmsVO selectSendSet() throws Exception{ + public SendSmsVO selectSendSet() throws Exception { return sendDAO.selectSendSet(); } - + @Override - public void updateSendSet(SendSmsVO sendSmsVO) throws Exception{ + public void updateSendSet( SendSmsVO sendSmsVO ) throws Exception { sendDAO.updateSendSet(sendSmsVO); } - - /** - * @methodName : timeDiffBefore - * @author : JunHo Lee - * @date : 2024.12.09 - * @description : - * @param str - * @return : - * !str이 현재 시간보다 이전이면 true - * !str이 현재 시간보다 이후이면 false - */ - private Boolean timeDiffBefore(String str) { - try { - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - Date diffDate = sdf.parse(str); - Date currentDate = new Date(); - - if (diffDate.before(currentDate)) { - return true; - } else { - return false; - } - } catch (Exception e) { - return false; - } + @Override + public List select7DaybeforeAt(Integer diffDay) throws Exception{ + return sendDAO.select7DaybeforeAt(diffDay); } - public static String sendAt(SendAtVO sendAtVO) { + + /** + * @param str + * @return : + * !str이 현재 시간보다 이전이면 true + * !str이 현재 시간보다 이후이면 false + * @methodName : timeDiffBefore + * @author : JunHo Lee + * @date : 2024.12.09 + * @description : + */ + private Boolean timeDiffBefore( String str ) { + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + Date diffDate = sdf.parse(str); + + Date currentDate = new Date(); + + if(diffDate.before(currentDate)) { + return true; + } else { + return false; + } + } catch(Exception e) { + return false; + } + } + + public static String sendAt( SendAtVO sendAtVO ) { StringBuffer result = new StringBuffer(); @@ -173,10 +179,17 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ /** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/ if(!ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) { - 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) { } } }; + 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()); @@ -207,42 +220,49 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ .from(ppurioGlobalSet.getFrom()) .to(sendAtVO.getTo()) .content(Content.builder() - .at(At.builder() - .senderkey(ppurioGlobalSet.getSenderKey()) - .templatecode(at.getTemplatecode()) - .message(at.getMessage()) - .build() - ) - .build() + .at(At.builder() + .senderkey(ppurioGlobalSet.getSenderKey()) + .templatecode(at.getTemplatecode()) + .message(at.getMessage()) + .build() ) + .build()) + .resend(Resend.builder() + .first("lms") + .build()) + .recontent(Recontent.builder() + .lms(Lms.builder() + .message(at.getMessage()) + .build()) + .build()) .build(); // Request body 전송 - try (OutputStream os = connection.getOutputStream()) { - os.write(sendAtVO.toJson().getBytes("UTF-8")); - os.flush(); - } + try(OutputStream os = connection.getOutputStream()) { + os.write(sendAtVO.toJson().getBytes("UTF-8")); + os.flush(); + } - // 서버 응답 처리 - int responseCode = connection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) { - while ((input = reader.readLine()) != null) { - result.append(input); - } - } - } else { - // 오류 응답 처리 - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) { - StringBuilder errorResponse = new StringBuilder(); - while ((input = reader.readLine()) != null) { - errorResponse.append(input); - } - System.out.println("Error Response: " + errorResponse.toString()); - return "Error: " + errorResponse.toString(); - } - } - connection.disconnect(); + // 서버 응답 처리 + int responseCode = connection.getResponseCode(); + if(responseCode == HttpURLConnection.HTTP_OK) { + try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) { + while((input = reader.readLine()) != null) { + result.append(input); + } + } + } else { + // 오류 응답 처리 + try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) { + StringBuilder errorResponse = new StringBuilder(); + while((input = reader.readLine()) != null) { + errorResponse.append(input); + } + System.out.println("Error Response: " + errorResponse.toString()); + return "Error: " + errorResponse.toString(); + } + } + connection.disconnect(); System.out.println("Response : " + result.toString()); @@ -250,21 +270,21 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ // status = jObject.getString("description"); - } catch (IOException e) { - // TODO Auto-generated catch block + } catch(IOException e) { + // TODO Auto-generated catch block e.printStackTrace(); - } catch (KeyManagementException e) { - // TODO Auto-generated catch block + } catch(KeyManagementException e) { + // TODO Auto-generated catch block e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block + } catch(NoSuchAlgorithmException e) { + // TODO Auto-generated catch block e.printStackTrace(); } return null; // return status; } - public static Boolean sendSmsPrcs(SendSmsVO sendSmsVO) { + public static Boolean sendSmsPrcs( SendSmsVO sendSmsVO ) { Boolean success = true; @@ -278,10 +298,17 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ /** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/ if(!ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) { - 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) { } } }; + 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()); @@ -302,54 +329,54 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ /*SMS LMS 구분처리*/ JSONObject sms = new JSONObject(); - sms.put("message", sendSmsVO.getSmsContent()); - if("LMS".equals(sendSmsVO.getType())) { - sms.put("subject", sendSmsVO.getSubject()); - } - JSONObject content = new JSONObject(); - if("SMS".equals(sendSmsVO.getType())) { - content.put("sms", sms); - }else { - content.put("lms", sms); - } + sms.put("message", sendSmsVO.getSmsContent()); + if("LMS".equals(sendSmsVO.getType())) { + sms.put("subject", sendSmsVO.getSubject()); + } + JSONObject content = new JSONObject(); + if("SMS".equals(sendSmsVO.getType())) { + content.put("sms", sms); + } else { + content.put("lms", sms); + } - JSONObject json = new JSONObject(); - json.put("account", ppurioGlobalSet.getId()); - json.put("type", sendSmsVO.getType().toLowerCase()); - json.put("from", ppurioGlobalSet.getFrom()); - json.put("to", sendSmsVO.getTo()); - json.put("content", content); - json.put("refkey", "test1234"); + JSONObject json = new JSONObject(); + json.put("account", ppurioGlobalSet.getId()); + json.put("type", sendSmsVO.getType().toLowerCase()); + json.put("from", ppurioGlobalSet.getFrom()); + json.put("to", sendSmsVO.getTo()); + json.put("content", content); + json.put("refkey", "test1234"); - String body = json.toString(); + String body = json.toString(); // Request body 전송 - try (OutputStream os = connection.getOutputStream()) { - os.write(body.getBytes("UTF-8")); - os.flush(); - } + try(OutputStream os = connection.getOutputStream()) { + os.write(body.getBytes("UTF-8")); + os.flush(); + } - // 서버 응답 처리 - int responseCode = connection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) { - while ((input = reader.readLine()) != null) { - result.append(input); - } - } - } else { - // 오류 응답 처리 - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) { - StringBuilder errorResponse = new StringBuilder(); - while ((input = reader.readLine()) != null) { - errorResponse.append(input); - } - System.out.println("Error Response: " + errorResponse.toString()); - success = false; - //return "Error: " + errorResponse.toString(); - } - } - connection.disconnect(); + // 서버 응답 처리 + int responseCode = connection.getResponseCode(); + if(responseCode == HttpURLConnection.HTTP_OK) { + try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"))) { + while((input = reader.readLine()) != null) { + result.append(input); + } + } + } else { + // 오류 응답 처리 + try(BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream(), "UTF-8"))) { + StringBuilder errorResponse = new StringBuilder(); + while((input = reader.readLine()) != null) { + errorResponse.append(input); + } + System.out.println("Error Response: " + errorResponse.toString()); + success = false; + //return "Error: " + errorResponse.toString(); + } + } + connection.disconnect(); System.out.println("Response : " + result.toString()); @@ -357,16 +384,16 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ // status = jObject.getString("description"); - } catch (IOException e) { - // TODO Auto-generated catch block + } catch(IOException e) { + // TODO Auto-generated catch block e.printStackTrace(); success = false; - } catch (KeyManagementException e) { - // TODO Auto-generated catch block + } catch(KeyManagementException e) { + // TODO Auto-generated catch block e.printStackTrace(); success = false; - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block + } catch(NoSuchAlgorithmException e) { + // TODO Auto-generated catch block e.printStackTrace(); success = false; } @@ -374,7 +401,7 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ // return status; } - public static Boolean getPpurioToken(SendAtVO sendAtVO) { + public static Boolean getPpurioToken( SendAtVO sendAtVO ) { StringBuffer result = new StringBuffer(); @@ -383,13 +410,19 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ PpurioGlobalSet ppurioGlobalSet = new PpurioGlobalSet(); try { - System.out.println("test"); /** SSL 인증서 무시 : 비즈뿌리오 API 운영을 접속하는 경우 해당 코드 필요 없음 **/ if(!ppurioGlobalSet.getHost().contains("https://api.bizppurio.com")) { - 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) { } } }; + 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()); @@ -421,40 +454,40 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ /** Response **/ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); - while ((input = in.readLine()) != null) { + while((input = in.readLine()) != null) { result.append(input); } connection.disconnect(); - if (result.length() > 0) { - JSONObject jObject = new JSONObject(result.toString()); - if ( - jObject.has("accesstoken") - && !jObject.isNull("accesstoken") - && jObject.has("type") - && !jObject.isNull("type") - && jObject.has("expired") - && !jObject.isNull("expired") - ) { - sendAtVO.setAccesstoken(jObject.getString("accesstoken")); - sendAtVO.setType(jObject.getString("type")); - sendAtVO.setExpired(jObject.getString("expired")); - } else { - System.out.println("response data not found or is null"); - return false; - } - } else { - System.out.println("Empty response"); - return false; - } + if(result.length() > 0) { + JSONObject jObject = new JSONObject(result.toString()); + if( + jObject.has("accesstoken") + && !jObject.isNull("accesstoken") + && jObject.has("type") + && !jObject.isNull("type") + && jObject.has("expired") + && !jObject.isNull("expired") + ) { + sendAtVO.setAccesstoken(jObject.getString("accesstoken")); + sendAtVO.setType(jObject.getString("type")); + sendAtVO.setExpired(jObject.getString("expired")); + } else { + System.out.println("response data not found or is null"); + return false; + } + } else { + System.out.println("Empty response"); + return false; + } - } catch (IOException e) { + } catch(IOException e) { System.out.println(e.getMessage()); return false; - } catch (KeyManagementException e) { + } catch(KeyManagementException e) { System.out.println(e.getMessage()); return false; - } catch (NoSuchAlgorithmException e) { + } catch(NoSuchAlgorithmException e) { System.out.println(e.getMessage()); return false; } @@ -462,52 +495,16 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ } private static At messageSet( - At at, - Map chihwan - ) { + At at, + Map chihwan + ) { String content = ""; Map requiredPlaceholders = new HashMap<>(); - switch (at.getTemplatecode()) { - /*case "TEMPLATE_APP_JUBSU": // 신청인_접수확인_1 - at.setTemplatecode("bizp_2024112810423519814410026"); - content = "[한국공정거래조정원] \r\n" - + "귀사(하)의 조정신청이 접수 완료되었습니다.\r\n" - + "향후 담당부서 및 담당자가 배정될 예정입니다."; - break; - case "TEMPLATE_APP_BAEJUNG": // 신청인_담당자배정_2 - at.setTemplatecode("bizp_2024121915475924487679960"); - content = "[한국공정거래조정원]\r\n" - + "귀사(하)가 #{respondent}을(를) 상대로 신청한 사건의 사건번호는 #{caseNo}, 담당자는 #{team}팀 #{examiner} 조사관(유선전화:#{tel}, 메일주소 #{email})입니다.\r\n" - + "향후 담당 조사관이 공문 등을 통해 연락드릴 예정입니다."; - requiredPlaceholders.put(at.getTemplatecode(), new String[]{"respondent","caseNo", "team", "examiner", "tel", "email"}); - break; - case "TEMPLATE_BOTH_SANGJUNG": // 양당사자_분쟁조정협의회 안건상정 - at.setTemplatecode("bizp_2024112810492919814837182"); - content = "[한국공정거래조정원]\r\n" - + "귀사(하)가 진행 중인 분쟁조정 사건 [사건번호 #{caseNo}]이 향후 개최될 #{cfrnc}분쟁조정협의회에 상정될 예정입니다.\r\n" - + "#{cfrnc}분쟁조정협의회 기일은 담당 조사관(유선전화:#{tel}, 메일주소 #{email})에게 문의주시면 안내드리겠습니다."; - requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "cfrnc", "tel", "email"}); - break; - case "TEMPLATE_BOTH_CHULSUK": // 양당사자_출석요구 n차 - at.setTemplatecode("bizp_2025011515420924487914030"); - content = "[한국공정거래조정원]\r\n" - + "귀사(하)가 진행 중인 분쟁조정 사건 [사건번호 #{caseNo}]의 출석조사(#{nCha}차) 기일이 확정되었습니다. \r\n" - + "향후 담당 조사관이 공문 등을 통해 연락드릴 예정입니다. \r\n" - + "https://fairnet.kofair.or.kr"; - requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "nCha"}); - break; - case "TEMPLATE_BOTH_TONGJI": // 양당사자_통지 - at.setTemplatecode("bizp_2025011515425124487733149"); - content = "[한국공정거래조정원]\r\n" - + "귀사(하)가 진행 중인 분쟁조정 사건 [사건번호 #{caseNo}]에 대한 #{cfrnc}분쟁조정협의회 의결이 완료되었습니다.\r\n" - + "한국공정거래조정원 분쟁조정사건처리시스템에서 확인해주시기 바랍니다.\r\n" - + "https://fairnet.kofair.or.kr"; - requiredPlaceholders.put(at.getTemplatecode(), new String[]{"caseNo", "cfrnc"}); - break;*/ + switch(at.getTemplatecode()) { case "TEMPLATE_EDU_SUBMIT": // 교육신청 - at.setTemplatecode("bizp_2025112512494050432369880"); - content = + at.setTemplatecode("bizp_2025112512494050432369880"); + content = "[한국지식재산보호원]\r\n" + "#{content}\r\n" + "\r\n" @@ -521,16 +518,25 @@ public class SendServiceImpl extends EgovAbstractServiceImpl implements SendServ + "3.준비물 : 필기구, 실물신분증\r\n" + "\r\n" + "문의처:1670-1271"; - requiredPlaceholders.put(at.getTemplatecode(), new String[]{"content", "eduDay", "eduRegDay", "eduPlace"}); - break; + requiredPlaceholders.put(at.getTemplatecode(), new String[]{ "content", "eduDay", "eduRegDay", "eduPlace" }); + break; + case "TEMPLATE_CERT_NO": // 교육신청 + at.setTemplatecode("bizp_2025120212451011178763650"); + content = + "[한국지식재산보호원]\r\n" + + "전송된 인증번호를 입력해 주세요.\r\n" + + "\r\n" + + "인증번호 : #{certNo}"; + requiredPlaceholders.put(at.getTemplatecode(), new String[]{ "certNo"}); + break; } String[] placeholders = requiredPlaceholders.get(at.getTemplatecode()); - if (placeholders != null) { - for (String placeholder : placeholders) { + if(placeholders != null) { + for(String placeholder : placeholders) { String value = chihwan.get(placeholder); - if (value == null || value.isEmpty()) { - throw new IllegalArgumentException(placeholder + " 값이 없습니다."); + if(value == null || value.isEmpty()) { + throw new IllegalArgumentException(placeholder + " 값이 없습니다."); } content = content.replace("#{" + placeholder + "}", value); } diff --git a/src/main/resources/egovframework/egovProps/globals_tLocal.properties b/src/main/resources/egovframework/egovProps/globals_tLocal.properties index ae6c70d2..ed3e2056 100644 --- a/src/main/resources/egovframework/egovProps/globals_tLocal.properties +++ b/src/main/resources/egovframework/egovProps/globals_tLocal.properties @@ -69,13 +69,13 @@ Globals.Innorix.FilePath=/usr/local/tomcat/file/sht/ # =========================== # Siren24 \uC778\uC99D \uAD00\uB828 \uC124\uC815 # =========================== -globals.certPhone.retUrl=https://dev-ipedu.iten.co.kr/ipedu/ +globals.certPhone.retUrl=https://www.koipa.re.kr/ipedu/ globals.certPhone.cryptoUrl=https://sciapi.siren24.com:52099/authentication/api/v1.0/common/crypto/token globals.certPhone.reqNo=koipa_edu globals.certPhone.id=SKIP001 globals.certPhone.clientId=5a2a72e2-16ce-420c-8816-57b3dda0e231 #globals.certPhone.srvNo=001003 -globals.certPhone.srvNo=002002 +globals.certPhone.srvNo=003002 globals.certPhone.accessToken=994b5d96-3788-4239-a5b0-a0ba2e0cf089 globals.certPhone.stosUrl=https://pcc.siren24.com/servlet/StoS diff --git a/src/main/resources/egovframework/sqlmap/ve/cmm/sendAt/Send_SQL_Postgresql.xml b/src/main/resources/egovframework/sqlmap/ve/cmm/sendAt/Send_SQL_Postgresql.xml index 806bbdc4..4464bd24 100644 --- a/src/main/resources/egovframework/sqlmap/ve/cmm/sendAt/Send_SQL_Postgresql.xml +++ b/src/main/resources/egovframework/sqlmap/ve/cmm/sendAt/Send_SQL_Postgresql.xml @@ -6,6 +6,8 @@ + + + + + + 내용 + + + + + + + +
+
+
+
+ +
+
+ + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/login/SsoLoginUsr.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/login/SsoLoginUsr.jsp index 3cf95a41..12f568a1 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kccadr/login/SsoLoginUsr.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/login/SsoLoginUsr.jsp @@ -189,7 +189,7 @@ function certPhone() { - 4 + diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cmdTrgt/popup/eduAplctPopList.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cmdTrgt/popup/eduAplctPopList.jsp index a1c5a73d..5c3404a6 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cmdTrgt/popup/eduAplctPopList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cmdTrgt/popup/eduAplctPopList.jsp @@ -140,7 +140,7 @@ $("#jender_input").prop('readonly', true); $("#clphone").prop('readonly', true); $(".duet-date__toggle").remove(); - alert(returnData.crtfdNumber); + // alert(returnData.crtfdNumber); }else{ //본인인증 후 diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPopList.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPopList.jsp index d74d18d6..0957bc3b 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPopList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/prevent/popup/eduAplctPopList.jsp @@ -142,7 +142,7 @@ $("#jender_input").prop('readonly', true); $("#clphone").prop('readonly', true); $(".duet-date__toggle").remove(); - alert(returnData.crtfdNumber); + // alert(returnData.crtfdNumber); }else{ //본인인증 후 diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPopList.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPopList.jsp index 2d91c746..ef87d464 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPopList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/popup/eduAplctPopList.jsp @@ -140,7 +140,7 @@ $("#jender_input").prop('readonly', true); $("#clphone").prop('readonly', true); $(".duet-date__toggle").remove(); - alert(returnData.crtfdNumber); + // alert(returnData.crtfdNumber); }else{ //본인인증 후