From 2fdf104101e13a33ba77295e0ef0efcc8d0795b9 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Mon, 22 Jan 2024 17:03:21 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=9C=EC=86=A1=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=ED=86=A1=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=ED=8C=9D=EC=97=85=20=EC=B9=9C=EA=B5=AC?= =?UTF-8?q?=ED=86=A1=20=EB=82=B4=EC=9A=A9=20=ED=91=9C=EC=8B=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/kakaoAt/service/MjonKakaoATVO.java | 7 + .../user/sent/web/KakaoSentController.java | 193 +++++++++++++++--- .../let/mjo/kakao/KakaoSent_SQL_Mysql.xml | 4 + .../web/kakao/sent/KakaoSentDetailPopAjax.jsp | 25 ++- .../jsp/web/kakao/sent/KakaoSentView.jsp | 6 +- 5 files changed, 205 insertions(+), 30 deletions(-) diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATVO.java b/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATVO.java index ba67b4fb..0054fb9a 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATVO.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATVO.java @@ -149,6 +149,7 @@ public class MjonKakaoATVO extends ComDefaultVO{ private String bizKakaoResendOrgnlTxt; /* 대체 문자( 치환X ) */ private String bizKakaoResendYn; /* 대체 문자 사용 여부*/ private String bizKakaoResendType; /* 대체 문자 길이 => MMS / LMS / SMS */ + private String bizKakaoJsonFile; //카카오 친구톡 Json 파일 경로 public String getMsgDiv() { @@ -1266,5 +1267,11 @@ public class MjonKakaoATVO extends ComDefaultVO{ public void setBizKakaoResendType(String bizKakaoResendType) { this.bizKakaoResendType = bizKakaoResendType; } + public String getBizKakaoJsonFile() { + return bizKakaoJsonFile; + } + public void setBizKakaoJsonFile(String bizKakaoJsonFile) { + this.bizKakaoJsonFile = bizKakaoJsonFile; + } } diff --git a/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java b/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java index cc9bf8a6..bacaa247 100644 --- a/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java +++ b/src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java @@ -1,5 +1,6 @@ package itn.let.kakao.user.sent.web; +import java.io.FileReader; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -19,6 +20,9 @@ import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -35,6 +39,7 @@ import itn.com.cmm.util.StringUtil; import itn.com.cmm.util.StringUtil2; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.kakao.admin.kakaoAt.service.MjonKakaoATVO; +import itn.let.kakao.kakaoComm.KakaoButtonVO; import itn.let.kakao.kakaoComm.KakaoReturnVO; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate; @@ -220,16 +225,36 @@ public class KakaoSentController { mjonKakaoATResultVO.setSmsTxt(StringUtil2.replaceBR(mjonKakaoATResultVO.getSmsTxt())); model.addAttribute("resultMsgDetail", mjonKakaoATResultVO); - // 템플릿 api 가져오기 - KakaoVO kakaoVO = new KakaoVO(); - kakaoVO.setSenderKey(mjonKakaoATResultVO.getMsgNoticetalkSenderKey()); - kakaoVO.setTemplateCode(mjonKakaoATResultVO.getMsgNoticetalkTmpKey()); + String msgType = mjonKakaoATResultVO.getMsgType(); - KakaoReturnVO kakaoTemplateInfo =kakaoApiTemplate.selectKakaoApiTemplateDetail(kakaoVO); - - model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo); - // //템플릿 api 가져오기 + if(msgType.equals("8")) {//카카오 알림톡인 경우 상세정보 처리 + + // 템플릿 api 가져오기 + KakaoVO kakaoVO = new KakaoVO(); + kakaoVO.setSenderKey(mjonKakaoATResultVO.getMsgNoticetalkSenderKey()); + kakaoVO.setTemplateCode(mjonKakaoATResultVO.getMsgNoticetalkTmpKey()); + + KakaoReturnVO kakaoTemplateInfo =kakaoApiTemplate.selectKakaoApiTemplateDetail(kakaoVO); + + model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo); + // //템플릿 api 가져오기 + + }else if(msgType.equals("9")) {//카카오 친구톡인 경우 상세정보 처리 + + //String smsTxt = mjonKakaoATResultVO.getSmsTxt(); + + KakaoReturnVO kakaoTemplateInfo = getKakaoFTSendTemplateInfo(mjonKakaoATResultVO); + //kakaoTemplateInfo.setTemplateContent(smsTxt); + + model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo); + + }else { + + model.addAttribute("kakaoTemplateInfo", ""); + + } + model.addAttribute("msgType", msgType); return "web/kakao/sent/KakaoSentDetailPopAjax"; } @@ -254,27 +279,45 @@ public class KakaoSentController { //발송 관리 문자발송 내용 상세보기 팝업 => 문자내용(MJ_MSG_DATA) MjonKakaoATVO mjonKakaoATResultVO = kakaoSentService.selectKakaoSentDetailData2Ajax(mjonKakaoATVO); - // 대체문자 엔터키 치환 - mjonKakaoATResultVO.setSmsTxtTrans(StringUtil2.replaceBR(mjonKakaoATResultVO.getSmsTxtTrans())); - // 강조형 타이틀이 있는지 없는지 구분 - if(StringUtil.isNotEmpty(mjonKakaoATResultVO.getBizKakaoTitle())) - { - String[] temp = mjonKakaoATResultVO.getBizKakaoTitle().split("§§"); - mjonKakaoATResultVO.setBizKakaoTitle01(temp[0]); - mjonKakaoATResultVO.setBizKakaoTitle02(temp[1]); + String msgType = mjonKakaoATResultVO.getMsgType(); + + if(msgType.equals("8")) { + + // 대체문자 엔터키 치환 + mjonKakaoATResultVO.setSmsTxtTrans(StringUtil2.replaceBR(mjonKakaoATResultVO.getSmsTxtTrans())); + + // 강조형 타이틀이 있는지 없는지 구분 + if(StringUtil.isNotEmpty(mjonKakaoATResultVO.getBizKakaoTitle())) + { + String[] temp = mjonKakaoATResultVO.getBizKakaoTitle().split("§§"); + mjonKakaoATResultVO.setBizKakaoTitle01(temp[0]); + mjonKakaoATResultVO.setBizKakaoTitle02(temp[1]); + } + + model.addAttribute("resultMsgDetail", mjonKakaoATResultVO); + + // 템플릿 api 가져오기 + KakaoVO kakaoVO = new KakaoVO(); + kakaoVO.setSenderKey(mjonKakaoATResultVO.getMsgNoticetalkSenderKey()); + kakaoVO.setTemplateCode(mjonKakaoATResultVO.getMsgNoticetalkTmpKey()); + + KakaoReturnVO kakaoTemplateInfo =kakaoApiTemplate.selectKakaoApiTemplateDetail(kakaoVO); + + model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo); + + }else if(msgType.equals("9")) { + + KakaoReturnVO kakaoTemplateInfo = getKakaoFTSendTemplateInfo(mjonKakaoATResultVO); + + model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo); + model.addAttribute("resultMsgDetail", mjonKakaoATResultVO); + + }else { + + model.addAttribute("kakaoTemplateInfo", ""); + } - - model.addAttribute("resultMsgDetail", mjonKakaoATResultVO); - - // 템플릿 api 가져오기 - KakaoVO kakaoVO = new KakaoVO(); - kakaoVO.setSenderKey(mjonKakaoATResultVO.getMsgNoticetalkSenderKey()); - kakaoVO.setTemplateCode(mjonKakaoATResultVO.getMsgNoticetalkTmpKey()); - - KakaoReturnVO kakaoTemplateInfo =kakaoApiTemplate.selectKakaoApiTemplateDetail(kakaoVO); - - model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo); return "web/kakao/sent/KakaoSentDetailPop2Ajax"; } @@ -822,5 +865,101 @@ public class KakaoSentController { } + + /* + * 20240122 우영두 추가 + * 친구톡 발송 결과 내용 팝업 처리 + * 발송 내용 처리 및 첨부 이미지, 버튼 정보 처리 + * + * */ + public KakaoReturnVO getKakaoFTSendTemplateInfo(MjonKakaoATVO kakaoATVO) throws Exception { + + KakaoReturnVO returnVO = new KakaoReturnVO(); + try { + + String tmpContent = kakaoATVO.getSmsTxtTrans(); + String jsonFilePath = kakaoATVO.getBizKakaoJsonFile(); + + //친구톡 이미지 또는 버튼 정보가 있다면 실행 + if(jsonFilePath != null && jsonFilePath.length() > 0) { + + FileReader reader = new FileReader(jsonFilePath); + int ch; + String resultStr = ""; + while ((ch = reader.read()) != -1) { + + resultStr = resultStr + (char)ch; + } + + JSONParser parser = new JSONParser(); + Object obj = parser.parse(resultStr); + JSONObject object = (JSONObject) obj; + + String image = (object.get("image") == null) ? null : object.get("image").toString(); + String button = (object.get("button") == null) ? null : object.get("button").toString(); + + if(image != null) { + + Object imagObj = parser.parse(image); + JSONObject jsonImgObj = (JSONObject) imagObj; + + System.out.println(jsonImgObj.toJSONString()); + + String imgUrl = (jsonImgObj.get("img_url") == null) ? null : jsonImgObj.get("img_url").toString(); + + System.out.println(imgUrl); + + returnVO.setTemplateEmphasizeType("IMAGE"); + returnVO.setTemplateImageUrl(imgUrl); + + } + + if(button != null) { + + JSONArray buttonJsonList = (JSONArray) object.get("button"); + + System.out.println(buttonJsonList.size()); + + List buttonList = new ArrayList(); + + for(int i=0; i < buttonJsonList.size(); i++) { + + JSONObject itemInfo = (JSONObject)buttonJsonList.get(i); + + String name = itemInfo.get("name").toString(); + + System.out.println(name); + + KakaoButtonVO buttonVO = new KakaoButtonVO(); + + buttonVO.setName(name); + + buttonList.add(buttonVO); + + } + + returnVO.setButtonList(buttonList); + + for(KakaoButtonVO butVO : returnVO.getButtonList()) { + + System.out.println("+++++++++++++ btn name ::: "+butVO.getName()); + + } + + } + + } + + //친구톡 내용 셋팅 + returnVO.setTemplateContent(tmpContent); + + } catch (Exception e) { + e.printStackTrace(); + } + + return returnVO; + + } + } diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml index f9a2de44..cf371b6a 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml @@ -902,6 +902,7 @@ SELECT MGD.MSG_GROUP_ID as msgGroupId , MGD.USER_ID as userId + , MD.MSG_TYPE as msgType , MD.REQ_DATE as reqDate /* 발송 시간 */ , MD.MSG_NOTICETALK_SENDER_KEY as msgNoticetalkSenderKey /* api key */ , MD.MSG_NOTICETALK_TMP_KEY as msgNoticetalkTmpKey /* 특정 템플릿 key */ @@ -912,6 +913,7 @@ , MD.BIZ_KAKAO_RESEND_TYPE as bizKakaoResendType /* MMS / LMS / SMS */ , MD.BIZ_KAKAO_RESEND_DATA as bizKakaoResendData /* 대체 문자 (치환O) */ , MGD.BIZ_KAKAO_RESEND_ORGNL_TXT as bizKakaoResendOrgnlTxt /* 대체 문자( 치환X ) */ + , MD.BIZ_KAKAO_JSON_FILE as bizKakaoJsonFile /* Json 파일 경로 */ FROM MJ_MSG_GROUP_DATA MGD INNER JOIN MJ_MSG_DATA MD ON MGD.MSG_GROUP_ID = MD.MSG_GROUP_ID @@ -928,6 +930,7 @@ SELECT MD.REQ_DATE as reqDate /* 발송 시간 */ + , MD.MSG_TYPE as msgType , MD.MSG_NOTICETALK_SENDER_KEY as msgNoticetalkSenderKey /* api key */ , MD.MSG_NOTICETALK_TMP_KEY as msgNoticetalkTmpKey /* 특정 템플릿 key */ , MD.SMS_TXT as smsTxtTrans /* 알림톡 본문 내용 치환(O)*/ @@ -935,6 +938,7 @@ , MD.BIZ_KAKAO_RESEND_YN as bizKakaoResendYn /* 대체 문자 사용 여부*/ , MD.BIZ_KAKAO_RESEND_TYPE as bizKakaoResendType /* MMS / LMS / SMS */ , MD.BIZ_KAKAO_RESEND_DATA as bizKakaoResendData /* 대체 문자 (치환O) */ + , MD.BIZ_KAKAO_JSON_FILE as bizKakaoJsonFile /* Json 파일 경로 */ FROM MJ_MSG_DATA MD WHERE MD.MSG_ID = #msgId# diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp index e1f02d43..f594a247 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp @@ -19,12 +19,33 @@
- 알림톡 + + + + 알림톡 + + + 친구톡 + + + + +
- 알림톡 도착 + + + + 알림톡 도착 + + + 친구톡 도착 + + + +
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp index 7d73a33d..8c6bccc2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp @@ -946,7 +946,11 @@ function infoPop(pageUrl){
  • - + +
  • +