발송결과 카카오톡 상세보기 팝업 친구톡 내용 표시 기능 개발

This commit is contained in:
rosewiper 2024-01-22 17:03:21 +09:00
parent c6c05ddd71
commit 2fdf104101
5 changed files with 205 additions and 30 deletions

View File

@ -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;
}
}

View File

@ -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);
if(msgType.equals("8")) {//카카오 알림톡인 경우 상세정보 처리
model.addAttribute("kakaoTemplateInfo", kakaoTemplateInfo);
// //템플릿 api 가져오기
// 템플릿 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,28 +279,46 @@ 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";
}
@ -823,4 +866,100 @@ 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<KakaoButtonVO> buttonList = new ArrayList<KakaoButtonVO>();
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;
}
}

View File

@ -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#

View File

@ -19,12 +19,33 @@
<div class="rev_pop_in">
<div class="rev_pop_middle clearfix">
<span><c:out value="${resultMsgDetail.reqDate }" /></span>
<span class="msg_com msg_allimtalk">알림톡</span>
<span class="msg_com msg_allimtalk">
<c:choose>
<c:when test="${msgType eq '8'}">
알림톡
</c:when>
<c:when test="${msgType eq '9'}">
친구톡
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</span>
</div>
<div class="rev_pop_txt">
<div class="text_preview">
<div class="allimtalk_title">
<img src="/publish/images/content/icon_allimtalk.png" alt="">알림톡 도착
<img src="/publish/images/content/icon_allimtalk.png" alt="">
<c:choose>
<c:when test="${msgType eq '8'}">
알림톡 도착
</c:when>
<c:when test="${msgType eq '9'}">
친구톡 도착
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</div>
<div class="allimtalk_content">
<!-- 강조 텍스트 -->

View File

@ -946,7 +946,11 @@ function infoPop(pageUrl){
<ul class="list_tab">
<li class="tab active"><button type="button" onclick="fnTabLoad('',0); return false;">전체</button></li>
<li class="tab"><button type="button" onclick="fnTabLoad('at', 1); return false;">알림톡</button></li>
<!-- <li class="tab"><button type="button" onclick="fnTabLoad('ft', 2); return false;">친구톡</button></li> -->
<c:if test="${fn:contains(pageContext.request.requestURL , 'localhost')
|| fn:contains(pageContext.request.requestURL , '192.168.0.33')
|| fn:contains(pageContext.request.requestURL , '119.193.215.98')}">
<li class="tab"><button type="button" onclick="fnTabLoad('ft', 2); return false;">친구톡</button></li>
</c:if>
</ul><!--// tab button -->
</div>
<!-- 예약관리 > 전체 -->