From a62a9f115dc57156dfd2bd75130b6329e75cccb7 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 4 Jan 2024 09:49:33 +0900 Subject: [PATCH 01/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=A0=95=EB=B3=B4=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C=EA=B5=AC=ED=86=A1=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=ED=99=94=EB=A9=B4=20=EA=B8=B0?= =?UTF-8?q?=EC=97=85=ED=9A=8C=EC=9B=90=20=EC=B2=B4=ED=81=AC=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95=20=20-=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=EC=97=90=EC=84=9C=20loginVO=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EB=AF=B8=EC=A0=84=EB=8B=AC=EB=A1=9C=20=EC=9D=B8?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EC=98=A4=EB=A5=98=20=EB=B0=9C=EC=83=9D?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EC=88=98=EC=A0=95=20=EC=99=84=EB=A3=8C?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KakaoFriendsTalkTemplateController.java | 24 +++++++++++++++---- .../ft/KakaoFriendstalkTemplateListAjax.jsp | 8 +++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java index 8e71bf06..644c789f 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java @@ -34,6 +34,7 @@ import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService; import itn.let.mjo.symbol.service.MjonSymbolService; import itn.let.mjo.symbol.service.MjonSymbolVO; +import itn.let.uss.umt.service.EgovUserManageService; @Controller public class KakaoFriendsTalkTemplateController { @@ -54,6 +55,10 @@ public class KakaoFriendsTalkTemplateController { @Resource(name = "mjonSymbolService") private MjonSymbolService mjonSymbolService; + /** userManageService */ + @Resource(name = "userManageService") + private EgovUserManageService userManageService; + @Autowired KakaoApiProfile kakaoApiProfile; @@ -276,10 +281,10 @@ public class KakaoFriendsTalkTemplateController { /** - * @methodName : deleteKakaoFriendsImageDataAjax + * @methodName : selectKakaoFriendsTemplateList * @author : 우영두 * @date : 2023.03.23 - * @description : deleteKakaoFriendsImageDataAjax 카카오 친구톡 이미지 삭제요청 + * @description : selectKakaoFriendsTemplateList 카카오 친구톡 템플릿 리스트 화면 * @param kakaoVO * @param model * @param response @@ -297,8 +302,19 @@ public class KakaoFriendsTalkTemplateController { return "redirect:/web/user/login/login.do"; } + model.addAttribute("loginVO", loginVO); + try { + /** + * 회원 정지된 상태이면 알림톡 템플릿 등록 화면으로 이동되지 않도록 처리 + * */ + boolean mberSttus = userManageService.selectUserStatusInfo(userId); + + if(!mberSttus) { + return "redirect:/web/uat/uia/actionLogout.do"; + } + //사용자 등록 발신프로필 정보 조회해오기 searchVO.setUserId(userId); List resultProfileList = kakaoApiService.selectKakaoProfileList(searchVO); @@ -319,10 +335,10 @@ public class KakaoFriendsTalkTemplateController { /** - * @methodName : deleteKakaoFriendsImageDataAjax + * @methodName : selectKakaoFriendsTemplateListAjax * @author : 우영두 * @date : 2023.03.23 - * @description : deleteKakaoFriendsImageDataAjax 카카오 친구톡 이미지 삭제요청 + * @description : selectKakaoFriendsTemplateListAjax 카카오 친구톡 템플릿 하단 리스트 정보 조회 * @param kakaoVO * @param model * @param response diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp index c0315c2f..640b2077 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp @@ -102,6 +102,14 @@ $(function(){

'); return false;" style="cursor:pointer;"> + + + +
+ +
+
+

From 975f697910e669fa2f97be41fdae81b6c71ff62b Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 4 Jan 2024 12:10:46 +0900 Subject: [PATCH 02/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=83=AD=20=EB=B6=84=EA=B8=B0=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=20=20-=20=EC=9D=BC=EB=8B=A8=20rosewiper=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EB=94=94=20=EC=82=AC=EC=9A=A9=EC=9E=90=EB=A7=8C=20=ED=83=AD?= =?UTF-8?q?=EC=9D=B4=20=ED=91=9C=EC=8B=9C=20=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=ED=96=88=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp/web/kakao/include/KaKaoAlimtalkSubMenuTap.jsp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkSubMenuTap.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkSubMenuTap.jsp index 78a7e4e6..d276e16d 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkSubMenuTap.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkSubMenuTap.jsp @@ -1,4 +1,6 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> + + + + +
+
+
+
Loading
+
+
+ + +
+ +
+ + <%@include file="/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp" %> + + +
+
+

카카오톡 설정

+ +
+
+ + <%@include file="/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkSubMenuTap.jsp" %> + +
+
+ + + + + + + + + + + + + +
+
+

친구톡 템플릿 상세

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
채널ID + +
템플릿명 + +

최대 100자, 템플릿 관리용

+
이미지 첨부 +
+ + + +
+

* 이미지 첨부 안내

+
    +
  • - 권장사이즈 : 720px * 720px
  • +
  • - 제한사이즈 : 가로 500px 미만, 가로:세로 비율이 2:1 미만 또는 3:4 초과시 업로드 불가
  • +
  • - 파일형식 : jpg, png (최대 500kb)
  • +
  • - 이미지 첨부시 메시지 내용은 최대 400자까지 입력할 수 있습니다.
  • +
+
+
+

* 와이드 이미지 첨부 안내

+
    +
  • - 권장사이즈 : 800px * 600px
  • + +
  • - 파일형식 : jpg, png (최대 2mb)
  • +
  • - 와이드 이미지 첨부시 메시지 내용은 최대 76자, 버튼 1개까지 입력할 수 있습니다.
  • +
+
+
+
+
    +
  • +

    이미지 제목

    + +
  • +
  • +

    이미지 클릭시 이동할 URL

    + +
  • +
  • +

    첨부파일 이미지

    + + +
  • +
+ +
+
광고포함 여부 + + +
내용 +
+ +
+
+

(광고) 채널ID

+
+ + +
+
+

수신거부 : 홈 > 채널차단

+
+
+

0 /1000

+
+
+
+
+
+
+ +
+ + +
+
+ + + + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + +
+
+
+ +
+
+
+ 특정문구 일괄변환이란? +

주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의 메시지를 발송하는 기능

+
+
+ +
+
+ + + + +
+
+ +
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+ +
+
+ + +
+
+
버튼 + + +
+
+
+
+
+
+
+

+ @채널ID +

+ +
+

(광고) 채널ID

+
+ +

내용 미리보기

+
+ +
+
+

수신거부 : 홈 > 채널차단

+ +
+ +
+

※ 단말기 설정에 따라 다르게 보일 수 있습니다

+

+
+ + +
+
+
+
+
+
+
+
+
+ diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp index 985eee2b..8ce249d7 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp @@ -297,15 +297,15 @@ function fnTemplateDelBtn(templateId){ } //알림톡 상세보기 화면 호출 -function fnTemplateDetail(templateCode){ +function fnTemplateDetail(friendId){ var form = document.templateForm; var selectAgentCode = $("select[name='selectAgentCode_select']").val(); // 선택 채널ID form.senderKey.value = selectAgentCode; - form.templateCode.value = templateCode; + form.friendId.value = friendId; - form.action="/web/mjon/kakao/template/requestKakaoApiTemplateDetail.do"; + form.action="/web/mjon/kakao/template/selectKakaoFriendsTemplateDataDetail.do"; form.submit(); } @@ -359,7 +359,7 @@ function fnGoSampleTemplate(){
- +
From 8cfee033ed3c960663901db708bd41db0e9cb9a1 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 4 Jan 2024 17:58:55 +0900 Subject: [PATCH 04/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EB=B3=B4=EA=B8=B0=20=ED=99=94=EB=A9=B4=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=91=9C=EC=8B=9C=20=EA=B8=B0=EB=8A=A5=20=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/itn/let/kakao/kakaoComm/KakaoVO.java | 9 + .../KakaoFriendsTalkTemplateService.java | 3 + .../impl/KakaoFriendsTalkTemplateDAO.java | 19 ++ .../KakaoFriendsTalkTemplateServiceImpl.java | 33 +++ .../KakaoFriendsTalkTemplateController.java | 8 +- .../let/mjo/kakao/Kakao_FT_SQL_Mysql.xml | 48 ++++ .../ft/KakaoFriendstalkTemplateDetail.jsp | 223 ++++++++++++++++-- .../ft/KakaoFriendstalkTemplateRegist.jsp | 5 +- 8 files changed, 320 insertions(+), 28 deletions(-) diff --git a/src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java b/src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java index c2a03178..e6dd28a3 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java +++ b/src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java @@ -238,6 +238,7 @@ public class KakaoVO extends MjonMsgVO{ private String imageTitle; //친구톡 이미지 제목 private String imageLink; //친구톡 이미지 클릭시 링크 주소 private String jsonText; //json 파일 생성시 내용 저장(혹시 몰라서 내용도 별도로 저장함) + private String imageFileName; //친구톡 이미지 원본 파일명 private String successDay; private String successMonth; @@ -1110,6 +1111,14 @@ public class KakaoVO extends MjonMsgVO{ this.jsonText = jsonText; } + public String getImageFileName() { + return imageFileName; + } + + public void setImageFileName(String imageFileName) { + this.imageFileName = imageFileName; + } + public String getSbscrbDe() { return sbscrbDe; } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java index 1c2e99aa..080cc18b 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java @@ -14,4 +14,7 @@ public interface KakaoFriendsTalkTemplateService { //친구톡 템플릿 삭제처리하기 int deleteKakaoFriendstalkTemplate(KakaoVO kakaoVO) throws Exception; + + //친구톡 템플릿 상세정보 조회 + KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception; } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java index bf289d51..9a53b3b8 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java @@ -107,4 +107,23 @@ public class KakaoFriendsTalkTemplateDAO extends EgovAbstractDAO{ return result; } + + + //친구톡 템플릿 상세정보 조회 + public KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception{ + + KakaoVO result = new KakaoVO(); + + try { + + result = (KakaoVO) select("kakaoFriendsTalkTemplateDAO.selectKakaoFriendsTemplateDetail", kakaoVO); + + } catch (Exception e) { + System.out.println("selectKakaoFriendsTemplateDetail DAO Error !!! " + e); + } + + return result; + + } + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java index 5bc426c7..e5fd4185 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java @@ -126,4 +126,37 @@ public class KakaoFriendsTalkTemplateServiceImpl extends EgovAbstractServiceImp return result; } + //친구톡 템플릿 상세정보 조회 + @Override + public KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception{ + + KakaoVO result = new KakaoVO(); + + try { + + result = kakaoFriendsTalkTemplateDAO.selectKakaoFriendsTemplateDetail(kakaoVO); + + //템플릿에 등록된 버튼정보가 있는지 확인하여 추가 + if(result != null) { + + List buttonList = new ArrayList(); + MjonKakaoTemplateButtonVO buttonVO = new MjonKakaoTemplateButtonVO(); + buttonVO.setTemplateId(kakaoVO.getFriendId()); + buttonVO.setTemplateUseType("F"); + buttonList = kakaoFriendsTalkTemplateDAO.selectKakaoFriendsTemplateButtons(buttonVO); + + if(buttonList != null) { + result.setButtonVOList(buttonList); + } + + } + + } catch (Exception e) { + System.out.println("selectKakaoFriendsTemplateDetail ServiceImple Error !!! " + e); + } + + return result; + + } + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java index 1593a5e0..936134cc 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java @@ -511,17 +511,17 @@ public class KakaoFriendsTalkTemplateController { List symbolList = mjonSymbolService.selectMjonSymbolList(symbolVO); model.addAttribute("symbolList", symbolList); + KakaoVO resultTemplateVO = kakaoFtTemplateService.selectKakaoFriendsTemplateDetail(kakaoVO); - - System.out.println("++++++++++++++++++ templateCode ::: "+kakaoVO.getTemplateCode()); + System.out.println("++++++++++++++++++ templateCode ::: "+kakaoVO.getFriendId()); System.out.println("++++++++++++++++++ senderKey ::: "+kakaoVO.getSenderKey()); + model.addAttribute("resultTemplateVO", resultTemplateVO); + } catch (Exception e) { System.out.println(" selectKakaoFriendsTemplateDataDetail Error ::: " + e); } - - return "/web/kakao/template/ft/KakaoFriendstalkTemplateDetail"; } diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml index dde21513..36d6c7c0 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml @@ -20,6 +20,7 @@ USER_ID, ATCH_FILE_ID, TEMPLATE_NAME, + IMAGE_FILE_NAME, IMAGE_URL, IMAGE_TYPE, IMAGE_TITLE, @@ -38,6 +39,7 @@ , #userId# , #bizJsonName# , #templateName# + , #imageFileName# , #templateImageUrl# , #imageType# , #imgTitle# @@ -100,6 +102,7 @@ A.SENDER_KEY AS senderKey, KPI.YELLOW_ID AS yellowId, A.TEMPLATE_NAME AS templateName, + A.IMAGE_FILE_NAME AS imageFileName, A.IMAGE_URL AS templateImageUrl, A.IMAGE_TYPE AS imageType, A.IMAGE_TITLE AS imgTitle, @@ -114,6 +117,7 @@ KFT.USER_ID, KFT.SENDER_KEY, KFT.TEMPLATE_NAME, + KFT.IMAGE_FILE_NAME, KFT.IMAGE_URL, KFT.IMAGE_TYPE, KFT.IMAGE_TITLE, @@ -199,5 +203,49 @@ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp index 7a3cafc1..bfd87243 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp @@ -14,14 +14,9 @@ var fileExt = ""; // 첨부파일 확장자 $(document).ready(function (){ - //첫로딩시 우측 미리보기 화면 숨김처리 - $('.emphasis_title_text').hide(); //강조유형 타이틀 - $('.emphasis_side_text').hide(); //강조유형 보조문구 - //$('.template_text').hide(); //내용 미리보기 - $('.side_info_text').hide(); //부가정보 내용 - $('.channel_info_text').hide(); //채널추가 텍스트 내용 - $('.btnAd').hide(); //샘플 채널추가 버튼 - $('.btnEmpty').hide(); //샘플 버튼 + //화면 초기 로딩시 화면 처리해주기 + initFormChk(); + //템플릿명 입력 글자수 체크 해주기 $("#inputTemplateName").keyup(function(e){ @@ -44,13 +39,63 @@ $(document).ready(function (){ $("#inputTemplateContent").keyup(function(e){ var contents = $('#inputTemplateContent').val(); - console.log(contents); setContentsLengForFriends(contents); }); + }); + +function initFormChk(){ + + //첫로딩시 우측 미리보기 화면 숨김처리 + $('.emphasis_title_text').hide(); //강조유형 타이틀 + $('.emphasis_side_text').hide(); //강조유형 보조문구 + //$('.template_text').hide(); //내용 미리보기 + $('.side_info_text').hide(); //부가정보 내용 + $('.channel_info_text').hide(); //채널추가 텍스트 내용 + $('.btnAd').hide(); //샘플 채널추가 버튼 + $('.btnEmpty').hide(); //샘플 버튼 + + //채널ID 정보 미리보기에 표시해주기 + fnAgentCodeChg(); + + //템플릿 등록 이미지가 있는 경우 이미지 정보 표시해 주기 + var imgType = $("input[name=img_file_add]:checked").val(); + + if(!imgType == ''){ + + if($("input[name='img_file_add']:checked").attr("id")=="img_file_1"){ + $(".basic_img_add_wrap").show().siblings(".img_add_info_wrap").hide(); + $(".img_file_add_wrap").show(); + }else if($("input[name='img_file_add']:checked").attr("id")=="img_file_2"){ + $(".wide_img_add_wrap").show().siblings(".img_add_info_wrap").hide(); + $(".img_file_add_wrap").show(); + } else{ + $(".img_add_info_wrap, .img_file_add_wrap").hide(); + } + + } + var imageFileName = '${resultTemplateVO.imageFileName}'; + $("#imgNm").text(imageFileName); + + //미리보기에 이미지 표시해주기 + var imgUrl = '${resultTemplateVO.templateImageUrl}'; + $('.kakao_image').css("display", "block"); + $("#kakaoImg").attr("src", imgUrl); + + + //초기 템플릿 내용 글자수 처리해주기 + var tmpContents = $('#inputTemplateContent').val(); + setContentsLengForFriends(tmpContents); + + //초기 광고포함 여부 처리 + var adFlagVal = $("input[name=ad_flag]:checked").val(); + advTextChange(adFlagVal); + +} + //--------------첨부파일 처리 함수 시작-------------------------- /* 파일사이즈 가져오기 */ @@ -508,6 +553,12 @@ $(document).on('change', 'input[name=img_file_add]', function(){ $(document).on('change', '.inputAdFlag', function(){ var adFlagVal = $(this).val(); + advTextChange(adFlagVal); + +}); + +function advTextChange(adFlagVal){ + if(adFlagVal == 'N'){//광고 표시 숨김처리 $('.adFlag').hide(); @@ -522,7 +573,7 @@ $(document).on('change', '.inputAdFlag', function(){ $('.adFlagAfter').show(); } -}); +} //이모티콘 삽입 기능 처리 $(document).on('click', '.symbolButton, .changeWord', function (){ @@ -570,6 +621,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ + @@ -593,7 +645,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ @@ -601,7 +653,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ 템플릿명 - +

최대 100자, 템플릿 관리용

@@ -609,9 +661,9 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ 이미지 첨부
- - - + checked > + checked > + checked>

* 이미지 첨부 안내

    @@ -635,15 +687,15 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
    • 이미지 제목

      - +
    • 이미지 클릭시 이동할 URL

      - +
    • 첨부파일 이미지

      - + @@ -656,9 +708,9 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ 광고포함 여부 -
- +

수신거부 : 홈 > 채널차단

@@ -947,6 +999,131 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
+ + + + +
+
배송조회
+
+ + +

*이용가능 택배사 : KG로지스, 우체국택배,일양로지스, GTX로지스, FedEx, 경동택배, 합동택배, 롯데택배

+
+
+ +
+
+
+ + + +
+
웹링크
+
+
    +
  • + + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+ +
+
+
+ + + +
+
앱링크
+
+
    +
  • + + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+ +
+
+
+ + + +
+
봇키워드
+
+ + +
+
+
+
+ + + +
+
메시지전달
+
+ + +
+
+ +
+
+
+ + + +
+
상담톡전환
+
+ + +
+
+ +
+
+
+ + + +
+
챗봇전환
+
+ + +
+
+ +
+
+
+
@@ -968,7 +1145,9 @@ $(document).on('click', '.symbolButton, .changeWord', function (){

내용 미리보기

- + + +

수신거부 : 홈 > 채널차단

diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp index ec0fb166..b0052596 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp @@ -211,6 +211,7 @@ function getTemplateImagUrl(){ $('.kakao_image').css("display", "block"); $("#kakaoImg").attr("src", imgUrl); + $("#imageFileName").val(fileName); }else if(code == "2002"){//일반 이미지 가로 세로 크기 오류 발생 @@ -565,7 +566,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
- + @@ -576,7 +577,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ - +
From 69232f87f5a2bcea2b07a2862fafaf064f8482cd Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 5 Jan 2024 11:08:19 +0900 Subject: [PATCH 05/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EA=B8=B0=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 --- .../KakaoFriendsTalkTemplateService.java | 3 + .../impl/KakaoFriendsTalkTemplateDAO.java | 17 +++++ .../KakaoFriendsTalkTemplateServiceImpl.java | 53 +++++++++++++++ .../KakaoFriendsTalkTemplateController.java | 64 +++++++++++++++++++ .../let/mjo/kakao/Kakao_FT_SQL_Mysql.xml | 22 +++++++ .../ft/KakaoFriendstalkTemplateDetail.jsp | 23 ++++--- .../ft/KakaoFriendstalkTemplateRegist.jsp | 4 +- 7 files changed, 174 insertions(+), 12 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java index 080cc18b..c915e1c5 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java @@ -17,4 +17,7 @@ public interface KakaoFriendsTalkTemplateService { //친구톡 템플릿 상세정보 조회 KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception; + + //친구톡 템플릿 수정처리하기 + int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception; } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java index 9a53b3b8..7d8e1f2c 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java @@ -126,4 +126,21 @@ public class KakaoFriendsTalkTemplateDAO extends EgovAbstractDAO{ } + //친구톡 템플릿 수정처리하기 + public int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception{ + + int result = 0; + + try { + + result = update("kakaoFriendsTalkTemplateDAO.updateKakaoFriendsTemplateData", kakaoVO); + + } catch (Exception e) { + System.out.println("updateKakaoFriendsTemplateData DAO Error !!! " + e); + } + + return result; + + } + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java index e5fd4185..5091834b 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java @@ -159,4 +159,57 @@ public class KakaoFriendsTalkTemplateServiceImpl extends EgovAbstractServiceImp } + //친구톡 템플릿 수정처리하기 + @Override + public int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception{ + + int result = 0; + int resultBtn = 0; + + try { + + //템플릿 정보 수정 + result = kakaoFriendsTalkTemplateDAO.updateKakaoFriendsTemplateData(kakaoVO); + + String friendId = kakaoVO.getFriendId(); + if(result > 0) { + + int buttonSize = kakaoVO.getButtonVOList().size(); + + if(buttonSize > 0) { + + //기존 버튼 정보 삭제 + int resultBtnCnt = kakaoFriendsTalkTemplateDAO.deleteKakaoFriendstalkButtons(kakaoVO); + + //신규 버튼 정보 입력 + for(KakaoButtonVO button: kakaoVO.getButtonVOList()) { + + MjonKakaoTemplateButtonVO tmpButtonVO = new MjonKakaoTemplateButtonVO(); + + tmpButtonVO.setTemplateId(friendId); + tmpButtonVO.setTemplateUseType("F"); + tmpButtonVO.setButtonName(button.getName()); + tmpButtonVO.setButtonLinktype(button.getLinkType()); + tmpButtonVO.setButtonLinkpc(button.getLinkPc()); + tmpButtonVO.setButtonLinkmo(button.getLinkMo()); + tmpButtonVO.setButtonLinkios(button.getLinkIos()); + tmpButtonVO.setButtonLinkand(button.getLinkAnd()); + tmpButtonVO.setUserId(kakaoVO.getUserId()); + + int resultCnt = kakaoFriendsTalkTemplateDAO.insertKakaoFriendsTemplateButtonData(tmpButtonVO); + resultBtn = resultBtn + resultCnt; + + } + + } + + } + + } catch (Exception e) { + System.out.println("updateKakaoFriendsTemplateData ServiceImple Error !!! " + e); + } + + return result; + } + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java index 936134cc..ab3964cb 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java @@ -525,4 +525,68 @@ public class KakaoFriendsTalkTemplateController { return "/web/kakao/template/ft/KakaoFriendstalkTemplateDetail"; } + // 카카오 친구톡 템플릿 수정요청 + /** + * @methodName : updateKakaoFriendsTemplateDataAjax + * @author : 우영두 + * @date : 2024.01.05 + * @description : updateKakaoFriendsTemplateDataAjax 카카오 친구톡 템플릿 수정요청 + * @param kakaoVO + * @param model + * @param response + * @return + * @throws Exception + */ + @RequestMapping(value= {"/web/mjon/kakao/template/updateKakaoFriendsTemplateDataAjax.do"}) + public ModelAndView updateKakaoFriendsTemplateDataAjax( + @ModelAttribute("kakaoVO") KakaoVO kakaoVO + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + try { + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == "") { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + }else { + + kakaoVO.setUserId(userId); + kakaoVO.setUserCallbackYn(userId); + kakaoVO.setFrstRegisterId(userId); + kakaoVO.setLastUpdusrId(userId); + kakaoVO.setSendType("FT"); + + String imgUrl = kakaoVO.getTemplateImageUrl(); + int buttonSize = kakaoVO.getButtonVOList().size(); + + if(!imgUrl.equals("") || buttonSize > 0) { + + //json 파일 생성 처리 + String resultJsonPath = kakaoFTJsonSave.kakaoApiJsonSave(kakaoVO); + kakaoVO.setBizJsonName(resultJsonPath); + + } + + int result = kakaoFtTemplateService.updateKakaoFriendsTemplateData(kakaoVO); + + if(result > 0) { + modelAndView.addObject("result", "success"); + }else { + modelAndView.addObject("result", "fail"); + } + } + }catch(Exception ex){ + ex.printStackTrace(); + modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.update")); + modelAndView.addObject("result", "fail"); + return modelAndView; + } + + return modelAndView; + } + } diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml index 36d6c7c0..5c566a6b 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml @@ -247,5 +247,27 @@ + + + UPDATE MJ_KAKAO_FRIENDS_TEMPLATE + SET ATCH_FILE_ID = #bizJsonName#, + TEMPLATE_NAME = #templateName#, + IMAGE_FILE_NAME = #imageFileName#, + IMAGE_URL = #templateImageUrl#, + IMAGE_TYPE = #imageType#, + IMAGE_TITLE = #imgTitle#, + IMAGE_LINK = #imgLink#, + SENDER_KEY = #senderKey#, + TEMPLATE_CONTENTS = #templateContent#, + AD_FLAG = #adFlag#, + LAST_UPDT_PNTTM = NOW(), + LAST_UPDUSR_ID = #lastUpdusrId# + WHERE + FRIEND_ID = #friendId# + AND USER_ID = #userId# + AND SENDER_KEY = #senderKey# + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp index bfd87243..5785e555 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp @@ -256,6 +256,7 @@ function getTemplateImagUrl(){ $('.kakao_image').css("display", "block"); $("#kakaoImg").attr("src", imgUrl); + $("#imageFileName").val(fileName); }else if(code == "2002"){//일반 이미지 가로 세로 크기 오류 발생 @@ -313,7 +314,7 @@ function getTemplateImagUrl(){ //발신 템플릿 등록 -function addTemplate(){ +function updateTemplate(){ var selectAgentCode = $("select[name='selectAgentCode']").val(); // 선택 채널ID var yellowId = $("select[name='selectAgentCode'] option:selected").text().replaceAll('@',''); // 선택 채널명 @@ -386,11 +387,11 @@ function addTemplate(){ var data = new FormData(bizForm); - if(confirm("템플릿을 저장하시겠습니까?")){ + if(confirm("템플릿을 수정하시겠습니까?")){ $.ajax({ type: "POST" - , url: "/web/mjon/kakao/template/insertKakaoFriendsTemplateDataAjax.do" + , url: "/web/mjon/kakao/template/updateKakaoFriendsTemplateDataAjax.do" , data: data , dataType: 'json' , async: false @@ -401,22 +402,23 @@ function addTemplate(){ var result = returnData.result; - if(result == "notLogin") {//차단 발신번호인 경우 등록 불가 + if(result == "loginFail") {//차단 발신번호인 경우 등록 불가 alert("로그인후 진행이 가능합니다."); }else if(returnData.result == "success") { - alert("템플릿 저장이 완료되었습니다."); - location.href="/web/mjon/kakao/template/selectKakaoFriendsTemplateList.do"; - return false; + alert("템플릿 수정이 완료되었습니다."); + //location.href="/web/mjon/kakao/template/selectKakaoFriendsTemplateList.do"; + //return false; + location.reload(); }else{ - alert("템플릿 저장에 오류가 발생하였습니다."); + alert("템플릿 수정에 오류가 발생하였습니다."); return false; } } ,error: function (e) { console.log("ERROR : ", e); - alert("템플릿 저장에 오류가 발생하였습니다."); + alert("템플릿 수정에 오류가 발생하였습니다."); } }); @@ -458,7 +460,7 @@ function fnImageDel(){ var code = returnData.code; var msg = returnData.msg; - if(result == "notLogin") {//차단 발신번호인 경우 등록 불가 + if(result == "loginFail") {//차단 발신번호인 경우 등록 불가 alert("로그인후 진행이 가능합니다."); }else if(returnData.result == "success") { @@ -619,6 +621,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ + diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp index b0052596..e3b8e147 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp @@ -357,7 +357,7 @@ function addTemplate(){ var result = returnData.result; - if(result == "notLogin") {//차단 발신번호인 경우 등록 불가 + if(result == "loginFail") {//차단 발신번호인 경우 등록 불가 alert("로그인후 진행이 가능합니다."); }else if(returnData.result == "success") { alert("템플릿 저장이 완료되었습니다."); @@ -414,7 +414,7 @@ function fnImageDel(){ var code = returnData.code; var msg = returnData.msg; - if(result == "notLogin") {//차단 발신번호인 경우 등록 불가 + if(result == "loginFail") {//차단 발신번호인 경우 등록 불가 alert("로그인후 진행이 가능합니다."); }else if(returnData.result == "success") { From 44bdab3e44f09ca2dad6cc0d99a190b38488780a Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 5 Jan 2024 11:58:03 +0900 Subject: [PATCH 06/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EA=B8=B0=EB=8A=A5=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=20-=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=EC=8B=9C=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EC=9D=98=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EC=A0=95=EB=B3=B4=EB=8F=84=20=ED=95=A8=EA=BB=98=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EC=B2=98=EB=A6=AC=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KakaoFriendsTalkTemplateService.java | 3 + .../impl/KakaoFriendsTalkTemplateDAO.java | 17 ++++++ .../KakaoFriendsTalkTemplateServiceImpl.java | 58 +++++++++++-------- .../KakaoFriendsTalkTemplateController.java | 12 +++- .../let/mjo/kakao/Kakao_FT_SQL_Mysql.xml | 16 +++++ .../ft/KakaoFriendstalkTemplateDetail.jsp | 2 +- 6 files changed, 83 insertions(+), 25 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java index c915e1c5..696dca96 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java @@ -20,4 +20,7 @@ public interface KakaoFriendsTalkTemplateService { //친구톡 템플릿 수정처리하기 int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception; + + //친구톡 템플릿 이미지 삭제시 템플릿 데이터 변경 처리 + int updateKakaoFriendsTemplateImageDataDel(KakaoVO kakaoVO) throws Exception; } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java index 7d8e1f2c..b9eff615 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java @@ -143,4 +143,21 @@ public class KakaoFriendsTalkTemplateDAO extends EgovAbstractDAO{ } + //친구톡 템플릿 이미지 삭제시 템플릿 데이터 변경 처리 + public int updateKakaoFriendsTemplateImageDataDel(KakaoVO kakaoVO) throws Exception{ + + int result = 0; + + try { + + result = update("kakaoFriendsTalkTemplateDAO.updateKakaoFriendsTemplateImageDataDel",kakaoVO); + + } catch (Exception e) { + System.out.println("updateKakaoFriendsTemplateData DAO Error !!! " + e); + } + + return result; + + } + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java index 5091834b..74b4e8c9 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java @@ -174,32 +174,26 @@ public class KakaoFriendsTalkTemplateServiceImpl extends EgovAbstractServiceImp String friendId = kakaoVO.getFriendId(); if(result > 0) { - int buttonSize = kakaoVO.getButtonVOList().size(); + //기존 버튼 정보 삭제 + int resultBtnCnt = kakaoFriendsTalkTemplateDAO.deleteKakaoFriendstalkButtons(kakaoVO); - if(buttonSize > 0) { + //신규 버튼 정보 입력 + for(KakaoButtonVO button: kakaoVO.getButtonVOList()) { - //기존 버튼 정보 삭제 - int resultBtnCnt = kakaoFriendsTalkTemplateDAO.deleteKakaoFriendstalkButtons(kakaoVO); + MjonKakaoTemplateButtonVO tmpButtonVO = new MjonKakaoTemplateButtonVO(); - //신규 버튼 정보 입력 - for(KakaoButtonVO button: kakaoVO.getButtonVOList()) { - - MjonKakaoTemplateButtonVO tmpButtonVO = new MjonKakaoTemplateButtonVO(); - - tmpButtonVO.setTemplateId(friendId); - tmpButtonVO.setTemplateUseType("F"); - tmpButtonVO.setButtonName(button.getName()); - tmpButtonVO.setButtonLinktype(button.getLinkType()); - tmpButtonVO.setButtonLinkpc(button.getLinkPc()); - tmpButtonVO.setButtonLinkmo(button.getLinkMo()); - tmpButtonVO.setButtonLinkios(button.getLinkIos()); - tmpButtonVO.setButtonLinkand(button.getLinkAnd()); - tmpButtonVO.setUserId(kakaoVO.getUserId()); - - int resultCnt = kakaoFriendsTalkTemplateDAO.insertKakaoFriendsTemplateButtonData(tmpButtonVO); - resultBtn = resultBtn + resultCnt; - - } + tmpButtonVO.setTemplateId(friendId); + tmpButtonVO.setTemplateUseType("F"); + tmpButtonVO.setButtonName(button.getName()); + tmpButtonVO.setButtonLinktype(button.getLinkType()); + tmpButtonVO.setButtonLinkpc(button.getLinkPc()); + tmpButtonVO.setButtonLinkmo(button.getLinkMo()); + tmpButtonVO.setButtonLinkios(button.getLinkIos()); + tmpButtonVO.setButtonLinkand(button.getLinkAnd()); + tmpButtonVO.setUserId(kakaoVO.getUserId()); + + int resultCnt = kakaoFriendsTalkTemplateDAO.insertKakaoFriendsTemplateButtonData(tmpButtonVO); + resultBtn = resultBtn + resultCnt; } @@ -212,4 +206,22 @@ public class KakaoFriendsTalkTemplateServiceImpl extends EgovAbstractServiceImp return result; } + //친구톡 템플릿 이미지 삭제시 템플릿 데이터 변경 처리 + @Override + public int updateKakaoFriendsTemplateImageDataDel(KakaoVO kakaoVO) throws Exception{ + + int result = 0; + + try { + + result = kakaoFriendsTalkTemplateDAO.updateKakaoFriendsTemplateImageDataDel(kakaoVO); + + } catch (Exception e) { + System.out.println("updateKakaoFriendsTemplateData ServiceImple Error !!! " + e); + } + + return result; + + } + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java index ab3964cb..c8a7c879 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java @@ -267,11 +267,21 @@ public class KakaoFriendsTalkTemplateController { KakaoReturnVO result = kakaoApiImageUpload.kakaoApiImageDelete(kakaoVO); + String code = result.getBizReturnCode(); + + if(code.equals("200")) {//이미지 삭제 성공시 템플릿 디비에 있는 이미지 정보도 함께 지워준다. + + kakaoVO.setUserId(userId); + kakaoVO.setLastUpdusrId(userId); + kakaoFtTemplateService.updateKakaoFriendsTemplateImageDataDel(kakaoVO); + + } + modelAndView.addObject("code", result.getBizReturnCode()); modelAndView.addObject("msg", result.getBizReturnMsg()); modelAndView.addObject("result", "success"); } - }catch(Exception ex){ + }catch(Exception ex){ ex.printStackTrace(); modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.update")); modelAndView.addObject("result", "fail"); diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml index 5c566a6b..3b780ebc 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml @@ -269,5 +269,21 @@ + + + UPDATE MJ_KAKAO_FRIENDS_TEMPLATE + SET IMAGE_FILE_NAME = '', + IMAGE_URL = '', + IMAGE_TYPE = '', + IMAGE_TITLE = '', + IMAGE_LINK = '', + LAST_UPDT_PNTTM = NOW(), + LAST_UPDUSR_ID = #lastUpdusrId# + WHERE + FRIEND_ID = #friendId# + AND USER_ID = #userId# + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp index 5785e555..94ad53c5 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp @@ -629,7 +629,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ - + From db1ebefc1eafd4b3f703550f045f4082a9b01789 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 5 Jan 2024 12:47:59 +0900 Subject: [PATCH 07/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=A0=95=EB=A0=AC=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/mjo/kakao/Kakao_FT_SQL_Mysql.xml | 120 ++++++++---------- .../ft/KakaoFriendstalkTemplateDetail.jsp | 8 ++ .../ft/KakaoFriendstalkTemplateListAjax.jsp | 2 +- .../ft/KakaoFriendstalkTemplateRegist.jsp | 7 + 4 files changed, 68 insertions(+), 69 deletions(-) diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml index 3b780ebc..f50fe008 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml @@ -96,74 +96,58 @@ diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp index 94ad53c5..45ccabf7 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp @@ -365,6 +365,13 @@ function updateTemplate(){ } + if(inputTemplateImageUrl == ''){ + + alert("이미지를 선택해 주세요."); + return false; + + } + } @@ -474,6 +481,7 @@ function fnImageDel(){ $("#templateImageUrl").val(""); $('.kakao_image').css("display", "none"); $("#kakaoImg").attr("src", ""); + $("#imageFileName").val(""); return false; }else{ diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp index 640b2077..87bfae14 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp @@ -184,7 +184,7 @@ $(function(){ - + diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp index e3b8e147..20bad5cb 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp @@ -320,6 +320,13 @@ function addTemplate(){ } + if(inputTemplateImageUrl == ''){ + + alert("이미지를 선택해 주세요."); + return false; + + } + } From 08b1d094b9723765995fddcfeef7a6888e7a5ee1 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 5 Jan 2024 18:31:52 +0900 Subject: [PATCH 08/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EB=B0=9C=EC=86=A1=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EB=B0=8F=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=ED=8C=9D=EC=97=85=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EC=9D=BC=EB=B6=80=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/KakaoAlimTalkTemplateController.java | 2 + .../web/KakaoFriendsTalkSendController.java | 114 ++++++++-- .../KakaoFriendsTalkTemplateController.java | 60 ++++++ .../let/mjo/kakao/Kakao_FT_SQL_Mysql.xml | 4 +- .../kakao/include/KaKaoAlimtalkTopMenuTap.jsp | 18 +- .../kakao/include/KakaoSentImoticonInfo.jsp | 122 +++++++++++ .../ft/KakaoFriendsTalkMsgDataView.jsp | 141 ++---------- .../at/KakaoAlimtalkTemplateDetail.jsp | 124 +---------- .../at/KakaoAlimtalkTemplateRegist.jsp | 124 +---------- .../KakaoAlimtalkTemplateSampleToRegist.jsp | 124 +---------- .../ft/KakaoFriendstalkTemplateDetail.jsp | 125 +---------- .../ft/KakaoFriendstalkTemplateListAjax.jsp | 8 +- .../KakaoFriendstalkTemplateListPopupAjax.jsp | 203 ++++++++++++++++++ .../ft/KakaoFriendstalkTemplateRegist.jsp | 125 +---------- 14 files changed, 539 insertions(+), 755 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkTemplateController.java index 6ffe730c..f6a3a06e 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkTemplateController.java @@ -871,6 +871,8 @@ public class KakaoAlimTalkTemplateController { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + model.addAttribute("loginVO", loginVO); + if(userId == "") { model.addAttribute("message", "로그인 후 이용이 가능합니다."); return "redirect:/web/user/login/login.do"; diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 9f9f4f03..18bcdead 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -1,10 +1,16 @@ package itn.let.kakao.user.kakaoFt.web; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.List; import javax.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; @@ -16,11 +22,14 @@ import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.util.MJUtil; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.kakao.kakaoComm.KakaoSendUtil; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; import itn.let.mjo.msgdata.service.MjonMsgDataService; +import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.symbol.service.MjonSymbolService; import itn.let.mjo.symbol.service.MjonSymbolVO; +import itn.let.uss.umt.service.MberManageVO; @Controller public class KakaoFriendsTalkSendController { @@ -38,37 +47,95 @@ public class KakaoFriendsTalkSendController { @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; + @Autowired + KakaoSendUtil kakaoSendUtil; + + + + /** + * @methodName : kakaoFriendsTalkMsgDataView + * @author : 우영두 + * @date : 2024.01.05 + * @description : kakaoFriendsTalkMsgDataView 카카오 친구톡 발송 화면 + * @param kakaoVO + * @param model + * @param response + * @return + * @throws Exception + */ + @RequestMapping(value= {"/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgDataView.do"}) public String KakaoAlimtalkMsgDataView(ModelMap model , @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String author = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + if(userId == "") { return "redirect:/web/user/login/login.do"; } try { - //사용자 등록 발신프로필 정보 조회해오기 - kakaoVO.setUserId(userId); - List resultProfileList = kakaoApiService.selectKakaoProfileList(kakaoVO); - model.addAttribute("resultProfileList", resultProfileList); + if(!userId.equals("") && !author.equals("ROLE_ADMIN")) { - // 특수문자 리스트 불러오기 - MjonSymbolVO symbolVO = new MjonSymbolVO(); - List symbolList = mjonSymbolService.selectMjonSymbolList(symbolVO); - model.addAttribute("symbolList", symbolList); + //사용자 등록 발신프로필 정보 조회해오기 + kakaoVO.setUserId(userId); + List resultProfileList = kakaoApiService.selectKakaoProfileList(kakaoVO); + model.addAttribute("resultProfileList", resultProfileList); + + // 특수문자 리스트 불러오기 + MjonSymbolVO symbolVO = new MjonSymbolVO(); + List symbolList = mjonSymbolService.selectMjonSymbolList(symbolVO); + model.addAttribute("symbolList", symbolList); + + //아이디 발신번호 리스트 불러오기. + List resultSendPhonList = mjonMsgDataService.selectSendPhonNumList(userId); + List resultPhonList = new ArrayList(); + MJUtil mjUtil = new MJUtil(); + for(String phone : resultSendPhonList) { + resultPhonList.add(mjUtil.addDash(phone)); + } + model.addAttribute("resultPhonList", resultPhonList); + + + MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(userId); + + model.addAttribute("atSmishingYn", mberManageVO.getAtSmishingYn()); + + //3.사용자 개인단가 정보가 0이 아니면 개인단가 사용, 없으면 시스템 기본 단가 사용 + /*Float shortPrice = mberManageVO.getShortPrice(); + Float longPrice = mberManageVO.getLongPrice(); + Float picturePrice = mberManageVO.getPicturePrice(); + Float picture2Price = mberManageVO.getPicture2Price(); + Float picture3Price = mberManageVO.getPicture3Price();*/ + BigDecimal userMoney = new BigDecimal(mberManageVO.getUserMoney()).setScale(2, RoundingMode.HALF_EVEN); + + model.addAttribute("userMoney", userMoney); + + + ////////////////////////////////////////////////////////////////// + + //최근 전송 내역 + MjonMsgDataVO searchVO = new MjonMsgDataVO(); + Calendar cal = Calendar.getInstance(); + Date now = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); + cal.setTime(now); + cal.add(Calendar.DATE, -3); + String chkDate = format.format(cal.getTime()); + searchVO.setUserId(userId); + searchVO.setMyMsgStDt(chkDate); //검색 시작일 저장 - 현재날짜로 부터 3일 이전 날짜로 시작 + model.addAttribute("resultLatestMsgList", mjonMsgDataService.selectLatestMsgList(searchVO)); + + //자주보내는 번호 + model.addAttribute("resultBookMarkMsgList", mjonMsgDataService.selectBookMarkMsgList(searchVO)); + + // 사용자 정의 단가 정보 불러오기(시스템 단가 혹은 협의 단가) + model.addAttribute("sendPrice", kakaoSendUtil.selectSendPriceOfKakaoAtAndSmsAndMms(userId)); - //아이디 발신번호 리스트 불러오기. - List resultSendPhonList = mjonMsgDataService.selectSendPhonNumList(userId); - List resultPhonList = new ArrayList(); - MJUtil mjUtil = new MJUtil(); - for(String phone : resultSendPhonList) { - resultPhonList.add(mjUtil.addDash(phone)); } - model.addAttribute("resultPhonList", resultPhonList); - } catch (Exception e) { System.out.println(" kakaoFriendsTalkMsgDataViewDataRegist Error ::: " + e); @@ -104,4 +171,19 @@ public class KakaoFriendsTalkSendController { return modelAndView; } + + /** + * @methodName : kakaoFriendsTalkMsgDataView + * @author : 우영두 + * @date : 2024.01.05 + * @description : kakaoFriendsTalkMsgDataView 카카오 친구톡 발송 화면 템플릿 팝업 리스트 조회 + * @param kakaoVO + * @param model + * @param response + * @return + * @throws Exception + */ + + + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java index c8a7c879..669d5f0f 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java @@ -599,4 +599,64 @@ public class KakaoFriendsTalkTemplateController { return modelAndView; } + + /** + * @methodName : selectKakaoFriendsTemplateListPopupAjax + * @author : 우영두 + * @date : 2024.01.05 + * @description : selectKakaoFriendsTemplateListPopupAjax 카카오 친구톡 발송화면 템플릿 팝업 리스트 화면 + * @param kakaoVO + * @param model + * @param response + * @return + * @throws Exception + */ + @RequestMapping(value= {"/web/mjon/kakao/template/selectKakaoFriendsTemplateListPopupAjax.do"}) + public String selectKakaoFriendsTemplateListPopupAjax(@ModelAttribute("searchVO") KakaoVO searchVO, + HttpServletRequest request , + ModelMap model) throws Exception{ + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + if(userId == "") { + return "redirect:/uat/uia/EgovLoginUsr.do"; + } + + try { + + searchVO.setUserId(userId); + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(6); + paginationInfo.setPageSize(searchVO.getPageSize()); + + searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + searchVO.setSearchSortCnd("FRIEND_ID"); + searchVO.setSearchSortOrd("desc"); + } + + List kakaoTemplateInfoList = new ArrayList(); + // 문자발송 완료건은 모두 보이도록 처리 + searchVO.setUserId(userId); + kakaoTemplateInfoList = kakaoFtTemplateService.selectKakaoFriendsTemplateList(searchVO); + model.addAttribute("kakaoTemplateInfoList", kakaoTemplateInfoList); + model.addAttribute("searchVO", searchVO); + + paginationInfo.setTotalRecordCount(kakaoTemplateInfoList.size() > 0 ? ((KakaoVO)kakaoTemplateInfoList.get(0)).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + } catch (Exception e) { + System.out.println("selectKakaoFriendsTemplateListAjax Controller Error !!! " + e); + } + + return "/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax"; + + } + } diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml index f50fe008..e2a3a345 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml @@ -119,7 +119,9 @@ AND KFT.SENDER_KEY = KPI.SENDER_KEY WHERE KFT.DELETE_YN = 'N' AND KFT.USER_ID = #userId# - AND KFT.SENDER_KEY = #senderKey# + + AND KFT.SENDER_KEY = #senderKey# + AND KFT.TEMPLATE_NAME LIKE CONCAT ('%', #searchKeyword#,'%') diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp index 55927ac7..ba4e3c51 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp @@ -1,4 +1,7 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ page import="itn.com.cmm.LoginVO" %>
  • + +
  • +
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp new file mode 100644 index 00000000..e7da84e7 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp @@ -0,0 +1,122 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index 516d1a84..f296ceb6 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -219,6 +219,7 @@ function getTemplateImagUrl(){ $('.kakao_image').css("display", "block"); $("#kakaoImg").attr("src", imgUrl); + $("#imageFileName").val(fileName); }else if(code == "2002"){//일반 이미지 가로 세로 크기 오류 발생 @@ -319,6 +320,8 @@ function fnImageDel(){ $("#templateImageUrl").val(""); $('.kakao_image').css("display", "none"); $("#kakaoImg").attr("src", ""); + $("#imageFileName").val(""); //이미지 파일명 삭제 + $("#img_file_0").click(); //이미지 첨부 안함 선택 return false; }else{ @@ -365,13 +368,22 @@ function fnContentsReset(){

친구톡 전송

+ + + + + + + + + - + + -
@@ -563,7 +575,7 @@ function fnContentsReset(){

주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의 메시지를 발송하는 기능

- +
@@ -578,131 +590,12 @@ function fnContentsReset(){
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
+ <%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %>
- +
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateDetail.jsp index 335c9c5d..e6821266 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateDetail.jsp @@ -972,128 +972,8 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- + <%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %> +
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateRegist.jsp index fda86741..075dabd1 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateRegist.jsp @@ -886,128 +886,8 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- + <%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %> +
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateSampleToRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateSampleToRegist.jsp index e3f53e64..7b6e09c0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateSampleToRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/at/KakaoAlimtalkTemplateSampleToRegist.jsp @@ -895,128 +895,8 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- + <%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %> +
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp index 45ccabf7..d967af8e 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp @@ -482,6 +482,7 @@ function fnImageDel(){ $('.kakao_image').css("display", "none"); $("#kakaoImg").attr("src", ""); $("#imageFileName").val(""); + $("#img_file_0").click(); //이미지첨부 안함 라이오 선택해주기 return false; }else{ @@ -861,128 +862,8 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- + <%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %> +
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp index 87bfae14..cdefd3a5 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListAjax.jsp @@ -122,9 +122,15 @@ $(function(){
+
+
템플릿명
+
+ +
+
등록일
-
+
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp new file mode 100644 index 00000000..415fa9b3 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp @@ -0,0 +1,203 @@ +<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<% pageContext.setAttribute("newLineChar", "\r\n"); %> +<% pageContext.setAttribute("newLineChar2", "\n"); %> + + + + + + 문자온 - 친구톡 템플릿 선택 + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
    + + + +
  • +
    +
    +
    +
    + +
    +

    '); return false;" style="cursor:pointer;"> + (광고) + +

    +
    + + +
    + +
    +
    +
    '); return false;" style="cursor:pointer;"> +

    + + + + +
    +
    + +

    수신거부 | 홈 > 채널차단

    +
    +
    +
    +
    +
    템플릿명
    +
    + +
    +
    +
    +
    등록일
    +
    +
    +
    +
  • +
    +
    + +
  • 등록된 템플릿이 없습니다.
  • +
    +
    +
+
+ + +
    + +
+
+
+ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp index 20bad5cb..a9636c48 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp @@ -435,6 +435,7 @@ function fnImageDel(){ $("#templateImageUrl").val(""); $('.kakao_image').css("display", "none"); $("#kakaoImg").attr("src", ""); + $("#img_file_0").click(); //이미지첨부 안함 라이오 선택해주기 return false; }else{ @@ -806,128 +807,8 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- + <%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %> +
From 56469d64d8acdbee48b43afaaa3ff641703337d5 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Tue, 9 Jan 2024 13:28:20 +0900 Subject: [PATCH 09/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EB=B0=9C=EC=86=A1=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EA=B0=9C=EB=B0=9C=20=EC=A7=84=ED=96=89=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/KakaoFriendsTalkSendController.java | 19 + .../kakao/include/KaKaoAlimtalkTopMenuTap.jsp | 1 + .../ft/KakaoFriendsTalkMsgDataView.jsp | 550 ++++++++++++++++-- .../KakaoFriendstalkTemplateListPopupAjax.jsp | 22 +- .../ft/KakaoFriendstalkTemplateRegist.jsp | 2 +- .../webapp/js/kakao/at/friendstalkExcel.js | 180 ++++++ 6 files changed, 733 insertions(+), 41 deletions(-) create mode 100644 src/main/webapp/js/kakao/at/friendstalkExcel.js diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 18bcdead..15bf7ad6 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -25,6 +25,7 @@ import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.kakao.kakaoComm.KakaoSendUtil; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; +import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.symbol.service.MjonSymbolService; @@ -47,6 +48,9 @@ public class KakaoFriendsTalkSendController { @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; + @Resource(name = "kakaoFriendsTalkTemplateService") + private KakaoFriendsTalkTemplateService kakaoFtTemplateService; + @Autowired KakaoSendUtil kakaoSendUtil; @@ -134,6 +138,21 @@ public class KakaoFriendsTalkSendController { // 사용자 정의 단가 정보 불러오기(시스템 단가 혹은 협의 단가) model.addAttribute("sendPrice", kakaoSendUtil.selectSendPriceOfKakaoAtAndSmsAndMms(userId)); + + + //사용자 템플릿 정보 조회 + String friendId = kakaoVO.getFriendId(); + KakaoVO resultTemplateVO = new KakaoVO(); + + if(!friendId.equals("") || friendId != null) { + + System.out.println("+++++++++++++++++++++++ friendId ::: "+friendId); + + resultTemplateVO = kakaoFtTemplateService.selectKakaoFriendsTemplateDetail(kakaoVO); + + } + + model.addAttribute("resultTemplateVO", resultTemplateVO); } diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp index ba4e3c51..d5247db8 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp @@ -60,6 +60,7 @@ function fnLinkPageTopTab(tabInfo){ }else if(tabInfo == 'tabFriend'){ /* alert("친구톡 메뉴는 현재 개발이 진행 중입니다."); */ + $("input[name=friendId]").val(""); url = ""; }else if(tabInfo == 'tabAlimtalkIntrd'){ diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index f296ceb6..1d986aad 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -6,6 +6,10 @@ + + + + @@ -379,10 +617,14 @@ function fnContentsReset(){
- - - - + + + + + + + +
@@ -399,18 +641,25 @@ function fnContentsReset(){
+ + + + @@ -655,7 +1028,7 @@ function fnContentsReset(){
- +
@@ -802,7 +1175,9 @@ function fnContentsReset(){

내용 미리보기

- + + +

수신거부 : 홈 > 채널차단

@@ -891,4 +1266,111 @@ function fnContentsReset(){ - \ No newline at end of file + + + +
+ +
+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp index 415fa9b3..2a508ce7 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp @@ -112,6 +112,13 @@ form.submit(); } + + function fnTemplateDetail(ftId){ + + opener.parent.myTemplateSelect(ftId); + self.close(); + + } @@ -144,10 +151,10 @@
-
+ <%--
-
-

'); return false;" style="cursor:pointer;"> +

--%> +

(광고)

@@ -158,7 +165,7 @@
-
'); return false;" style="cursor:pointer;"> +

@@ -170,7 +177,10 @@

수신거부 | 홈 > 채널차단

-
+
+ +
+ <%--
템플릿명
@@ -181,7 +191,7 @@
등록일
-
+
--%> diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp index a9636c48..1addf48b 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp @@ -611,7 +611,7 @@ $(document).on('click', '.symbolButton, .changeWord', function (){
diff --git a/src/main/webapp/js/kakao/at/friendstalkExcel.js b/src/main/webapp/js/kakao/at/friendstalkExcel.js new file mode 100644 index 00000000..db222e58 --- /dev/null +++ b/src/main/webapp/js/kakao/at/friendstalkExcel.js @@ -0,0 +1,180 @@ +/** + * + * @author : 우영두 + * @fileName : friendstalkExcel.js + * @date : 2024.01.08 + * @description : 친구톡 excel 관련된 fuction .js + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.01.08 우영두 최초 생성 + * + * + * + */ + + +$(document).ready(function(){ + + //치환문자 없는 엑섹불러오기 버튼 클릭시 파일 첨부 실행 + $('.c1').click(function(){ // 엑셀파일 불러오기 선택 시 + + $("#excelFile").click(); + + }); + +}); + + +//엑셀 파일 불러오기 +function excelExport(event){ + + var fileValue = $("#excelFile").val().split("\\"); + var fileName = fileValue[fileValue.length-1]; + + var fileExt = fileName.split('.').pop().toLowerCase(); + + if(fileExt.length > 0){ + if($.inArray(fileExt, ['txt','xls','xlsx']) == -1) { + + alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); + return false; + + } + + //$("#excelFile").val(""); + //선택 파일명 화면에 표시해주기 + $("#excelNm").val(fileName); + + } + +} + + +//엑셀파일 자료 데이터베이스에 입력해주기 +function fnInsertAttchFileData(){ + + var data = new FormData(document.excelForm); + data.append("file0", $('#excelFile').prop('files')[0]); + + var fileValue = $("#excelFile").val().split("\\"); + var fileName = fileValue[fileValue.length-1]; + + var fileExt = fileName.split('.').pop().toLowerCase(); + + var url = ""; + + if(fileExt == "xls" || fileExt == "xlsx"){ + + //url = "/web/mjon/msgcampain/insertExelFileTWCallToAjax.do"; + + }else if(fileExt = "txt"){ + + //url = "/web/mjon/msgcampain/insertTxtFileTWCallToAjax.do"; + + }else{ + + alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); + return; + + } + + //엑셀 데이터 변수에 자료가 있으면 지워준다. + if(excelAddr.length > 0){ + + excelAddr = []; + + } + + $.ajax({ + type: "POST", + enctype: 'multipart/form-data', + url: url, + data: data, + dataType:'json', + async: true, + processData: false, + contentType: false, + cache: false, + //timeout: 600000, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + + if(returnData.success){ + + var data = returnData.data; + var message = returnData.message; + + if(message != '' ){ + alert(returnData.message); + } + + + if(data != null){ + + $.each(data, function(i, item){ + + //form 데이터 callSeq에 순번 입력해주기 + $("#callSeq").val(item.callSeq); + + }); + + } + + //입력된 데이터베이스에서 받는사람 20건 불러와서 화면에 표시해주기 + var callSeq = $("#callSeq").val(); + if(callSeq > 0){ + + //첨부파일로 불러온 데이터를 받는사람 목록에 추가해 준다. + addTWCallToInfo(); + + //첨부파일 초기화 시켜주기 + $("#excelFile").val(""); + $("#excelNm").val(""); + + }else{ + + alert("추가 엑셀 데이터가 없습니다."); + return false; + + } + + }else{ + alert(returnData.message); + excelAddr = []; //엑셀 데이터 저장 변수 초기화 + $("#excelFile").val(""); //첨부파일 input 초기화 + $("#excelNm").val(""); // 첨부파일 명 초기화 + fileName = ""; + return; + + } + } else if(status== 'fail'){ + alert("첨부파일 불러오는 중 오류가 발생하였습니다."); + console.log("status : fail ~"); + } + }, + error: function (e) { + alert("첨부파일 불러오는 중 오류가 발생하였습니다."); + console.log("ERROR : ", e); + }, + beforeSend : function(xmlHttpRequest) { + //로딩창 show + $('.loading_layer').addClass('active'); + }, + complete : function(xhr, textStatus) { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + }); + +} + +//엑셀 불러오기 팝업의 추가 버튼 처리 +$("#excelAdd").click(function(){ + + var callSeq = $("#callSeq").val(); + + //엑셀파일 자료 데이터베이스에 입력해주기 + fnInsertAttchFileData(); + +}); \ No newline at end of file From e9f6eabb282ce94e25696cc5b03487b10342d257 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Tue, 9 Jan 2024 18:34:22 +0900 Subject: [PATCH 10/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ft/KakaoFriendsTalkMsgDataView.jsp | 13 +- .../js/kakao/{at => ft}/friendstalkExcel.js | 0 src/main/webapp/js/kakao/ft/ftTabulator.js | 516 ++++++++++++++++++ 3 files changed, 522 insertions(+), 7 deletions(-) rename src/main/webapp/js/kakao/{at => ft}/friendstalkExcel.js (100%) create mode 100644 src/main/webapp/js/kakao/ft/ftTabulator.js diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index 1d986aad..89141b86 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -9,7 +9,7 @@ - +
  • - +
  • From a94a7529cddea0876130ec2a187ecfe438f530bc Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 12 Jan 2024 09:04:49 +0900 Subject: [PATCH 12/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EB=B0=9C=EC=86=A1=ED=99=94=EB=A9=B4=20Tab?= =?UTF-8?q?ulator=20=EC=A0=81=EC=9A=A9=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/KakaoFriendsTalkSendController.java | 6 +- .../KakaoFriendsTalkTemplateController.java | 5 + .../kakao/include/KaKaoAlimtalkTopMenuTap.jsp | 1 - .../ft/KakaoFriendsTalkMsgDataView.jsp | 87 +++++-- .../ft/KakaoFriendstalkTemplateList.jsp | 2 +- .../KakaoFriendstalkTemplateListPopupAjax.jsp | 32 +-- .../webapp/js/kakao/ft/friendstalkExcel.js | 126 +++++++++- src/main/webapp/js/kakao/ft/ftTabulator.js | 237 +++++++++++------- 8 files changed, 367 insertions(+), 129 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 15bf7ad6..749f614d 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -76,9 +76,11 @@ public class KakaoFriendsTalkSendController { String author = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); - if(userId == "") { + /*if(userId == "") { return "redirect:/web/user/login/login.do"; - } + }*/ + + model.addAttribute("loginVO", loginVO); try { diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java index 669d5f0f..737aee6c 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java @@ -651,6 +651,11 @@ public class KakaoFriendsTalkTemplateController { paginationInfo.setTotalRecordCount(kakaoTemplateInfoList.size() > 0 ? ((KakaoVO)kakaoTemplateInfoList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); + //사용자 등록 발신프로필 정보 조회해오기 + searchVO.setUserId(userId); + List resultProfileList = kakaoApiService.selectKakaoProfileList(searchVO); + model.addAttribute("resultProfileList", resultProfileList); + } catch (Exception e) { System.out.println("selectKakaoFriendsTemplateListAjax Controller Error !!! " + e); } diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp index da076590..5ca30dcb 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp @@ -1,7 +1,6 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> -<%@ page import="itn.com.cmm.LoginVO" %> - + + + @@ -636,7 +669,7 @@ $('.popupAddr').click(function(){
+ @@ -204,6 +220,7 @@ function fnSelectMber(mberId) { + @@ -226,7 +243,7 @@ function fnSelectMber(mberId) { - + - +
템플릿명 + +

최대 50자, 템플릿 관리용

+
이미지 첨부
- - - + checked > + checked > + checked >

* 이미지 첨부 안내

    @@ -434,11 +683,11 @@ function fnContentsReset(){
    • 이미지 제목

      - +
    • 이미지 클릭시 이동할 URL

      - +
    • 첨부파일 이미지

      @@ -455,21 +704,20 @@ function fnContentsReset(){
광고포함 여부 - - + checked > + checked >
내용
-

(광고) 채널ID

- +

수신거부 : 홈 > 채널차단

@@ -598,7 +846,7 @@ function fnContentsReset(){
- +
@@ -619,7 +867,132 @@ function fnContentsReset(){ * 버튼 타입중 봇키워드, 메시지전달카카오톡 채널 관리자센터(https://center-pf.kakao.com)에서 설정을 직접 한 후 이용하셔야 동작합니다. (최대 5개까지 등록가능)

-
+ + + + +
+
배송조회
+
+ + +

*이용가능 택배사 : KG로지스, 우체국택배,일양로지스, GTX로지스, FedEx, 경동택배, 합동택배, 롯데택배

+
+
+ +
+
+
+ + + +
+
웹링크
+
+
    +
  • + + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+ +
+
+
+ + + +
+
앱링크
+
+
    +
  • + + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+ +
+
+
+ + + +
+
봇키워드
+
+ + +
+
+
+
+ + + +
+
메시지전달
+
+ + +
+
+ +
+
+
+ + + +
+
상담톡전환
+
+ + +
+
+ +
+
+
+ + + +
+
챗봇전환
+
+ + +
+
+ +
+
+
+
+
템플릿명 -

최대 100자, 템플릿 관리용

+

최대 50자, 템플릿 관리용

채널ID - +
버튼 - @@ -999,16 +1047,16 @@ $('.popupAddr').click(function(){
- - - + + + * 중복번호는 한번만 발송됩니다.
- +
@@ -1091,7 +1139,8 @@ $('.popupAddr').click(function(){

대체문자

- + +
@@ -1103,7 +1152,7 @@ $('.popupAddr').click(function(){ diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp index ce81deff..129ed125 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -541,9 +541,6 @@ $(document).ready(function (){ } - - - });//문자 바이트수 계산하기 끝 diff --git a/src/main/webapp/js/kakao/ft/friendstalkExcel.js b/src/main/webapp/js/kakao/ft/friendstalkExcel.js index 3ea21885..0e8b382b 100644 --- a/src/main/webapp/js/kakao/ft/friendstalkExcel.js +++ b/src/main/webapp/js/kakao/ft/friendstalkExcel.js @@ -151,154 +151,3 @@ function excelExport(event){ } } -/*function excelExport(event){ - - var fileValue = $("#excelFile").val().split("\\"); - var fileName = fileValue[fileValue.length-1]; - - var fileExt = fileName.split('.').pop().toLowerCase(); - - if(fileExt.length > 0){ - if($.inArray(fileExt, ['txt','xls','xlsx']) == -1) { - - alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); - return false; - - } - - //$("#excelFile").val(""); - //선택 파일명 화면에 표시해주기 - $("#excelNm").val(fileName); - - } - -}*/ - - -//엑셀파일 자료 데이터베이스에 입력해주기 -function fnInsertAttchFileData(){ - - var data = new FormData(document.excelForm); - data.append("file0", $('#excelFile').prop('files')[0]); - - var fileValue = $("#excelFile").val().split("\\"); - var fileName = fileValue[fileValue.length-1]; - - var fileExt = fileName.split('.').pop().toLowerCase(); - - var url = ""; - - if(fileExt == "xls" || fileExt == "xlsx"){ - - //url = "/web/mjon/msgcampain/insertExelFileTWCallToAjax.do"; - - }else if(fileExt = "txt"){ - - //url = "/web/mjon/msgcampain/insertTxtFileTWCallToAjax.do"; - - }else{ - - alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); - return; - - } - - //엑셀 데이터 변수에 자료가 있으면 지워준다. - if(excelAddr.length > 0){ - - excelAddr = []; - - } - - $.ajax({ - type: "POST", - enctype: 'multipart/form-data', - url: url, - data: data, - dataType:'json', - async: true, - processData: false, - contentType: false, - cache: false, - //timeout: 600000, - success: function (returnData, status) { - if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 - - if(returnData.success){ - - var data = returnData.data; - var message = returnData.message; - - if(message != '' ){ - alert(returnData.message); - } - - - if(data != null){ - - $.each(data, function(i, item){ - - //form 데이터 callSeq에 순번 입력해주기 - $("#callSeq").val(item.callSeq); - - }); - - } - - //입력된 데이터베이스에서 받는사람 20건 불러와서 화면에 표시해주기 - var callSeq = $("#callSeq").val(); - if(callSeq > 0){ - - //첨부파일로 불러온 데이터를 받는사람 목록에 추가해 준다. - addTWCallToInfo(); - - //첨부파일 초기화 시켜주기 - $("#excelFile").val(""); - $("#excelNm").val(""); - - }else{ - - alert("추가 엑셀 데이터가 없습니다."); - return false; - - } - - }else{ - alert(returnData.message); - excelAddr = []; //엑셀 데이터 저장 변수 초기화 - $("#excelFile").val(""); //첨부파일 input 초기화 - $("#excelNm").val(""); // 첨부파일 명 초기화 - fileName = ""; - return; - - } - } else if(status== 'fail'){ - alert("첨부파일 불러오는 중 오류가 발생하였습니다."); - console.log("status : fail ~"); - } - }, - error: function (e) { - alert("첨부파일 불러오는 중 오류가 발생하였습니다."); - console.log("ERROR : ", e); - }, - beforeSend : function(xmlHttpRequest) { - //로딩창 show - $('.loading_layer').addClass('active'); - }, - complete : function(xhr, textStatus) { - //로딩창 hide - $('.loading_layer').removeClass('active'); - } - }); - -} - -//엑셀 불러오기 팝업의 추가 버튼 처리 -$("#excelAdd").click(function(){ - - var callSeq = $("#callSeq").val(); - - //엑셀파일 자료 데이터베이스에 입력해주기 - fnInsertAttchFileData(); - -}); \ No newline at end of file diff --git a/src/main/webapp/js/kakao/ft/ftPriceClclt.js b/src/main/webapp/js/kakao/ft/ftPriceClclt.js index aad451e5..6a55e149 100644 --- a/src/main/webapp/js/kakao/ft/ftPriceClclt.js +++ b/src/main/webapp/js/kakao/ft/ftPriceClclt.js @@ -41,6 +41,20 @@ function totalFtPriceSum(totRows){ } + //대체문자가 있는 경우 대체문자의 단/장문에 따른 금액 계산 + var subMsgSts = $("#send_fail_check").is(":checked"); + + if(subMsgSts){ + + var conLeng = conByteLeng($('#smsTxtArea').val()); // 내용 문자 입력 바이트 수 계산하기 + if(conLeng > 90){ + price = $("#longPrice").val(); + }else{ + price = $("#shortPrice").val(); + } + + } + totalPrice = price * collNumCnt; // 소수점 첫째자리 까지 표시 diff --git a/src/main/webapp/js/kakao/ft/ftTabulator.js b/src/main/webapp/js/kakao/ft/ftTabulator.js index 3da934e5..537eef95 100644 --- a/src/main/webapp/js/kakao/ft/ftTabulator.js +++ b/src/main/webapp/js/kakao/ft/ftTabulator.js @@ -653,6 +653,7 @@ function fnFtReplCell(){ var rep2Status = false; var rep3Status = false; var rep4Status = false; + var varValStatus = true; if(smsTxtArea.indexOf("#{이름}") > -1){ @@ -692,6 +693,14 @@ function fnFtReplCell(){ var name = recTableData[j].getData().name; smsTxt = stringReplaceAll(smsTxt, "#{이름}", name); + }else{ + + if(nmStatus){ + //alert("#{이름} 변수에 데이터가 없는 항목이 있습니다. 받는사람 변수 데이터를 확인해 주세요."); + varValStatus = false; + //break; + } + } if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null && recTableData[j].getData().rep1 != ""){ @@ -699,6 +708,14 @@ function fnFtReplCell(){ var rep1 = recTableData[j].getData().rep1; smsTxt = stringReplaceAll(smsTxt, "#{1}", rep1); + }else{ + + if(rep1Status){ + //alert("#{1} 변수에 데이터가 없는 항목이 있습니다. 받는사람 변수 데이터를 확인해 주세요."); + varValStatus = false; + //break; + } + } if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null && recTableData[j].getData().rep2 != ""){ @@ -706,6 +723,14 @@ function fnFtReplCell(){ var rep2 = recTableData[j].getData().rep2; smsTxt = stringReplaceAll(smsTxt, "#{2}", rep2); + }else{ + + if(rep2Status){ + //alert("#{2} 변수에 데이터가 없는 항목이 있습니다. 받는사람 변수 데이터를 확인해 주세요."); + varValStatus = false; + //break; + } + } if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null && recTableData[j].getData().rep3 != ""){ @@ -713,6 +738,14 @@ function fnFtReplCell(){ var rep3 = recTableData[j].getData().rep3; smsTxt = stringReplaceAll(smsTxt, "#{3}", rep3); + }else{ + + if(rep3Status){ + //alert("#{3} 변수에 데이터가 없는 항목이 있습니다. 받는사람 변수 데이터를 확인해 주세요."); + varValStatus = false; + //break; + } + } if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null && recTableData[j].getData().rep4 != ""){ @@ -720,9 +753,16 @@ function fnFtReplCell(){ var rep4 = recTableData[j].getData().rep4; smsTxt = stringReplaceAll(smsTxt, "#{4}", rep4); + }else{ + + if(rep4Status){ + //alert("#{4} 변수에 데이터가 없는 항목이 있습니다. 받는사람 변수 데이터를 확인해 주세요."); + varValStatus = false; + //break; + } + } - var msgLen = strMaxCharacterCnt(smsTxt); var maxLenChar = 1000; @@ -750,16 +790,17 @@ function fnFtReplCell(){ } - //첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자. - if(j == 0){ - - //미리보기에 내용 입력해 주기 - $('.template_text').text(smsTxt); - - } - } - + + //치환문자에 데이터가 누락된 경우 알림 메세지를 보여주고 받는사람 목록을 지워준다. + /*if(!varValStatus){ + + alert("치환변수 데이터가 없는 항목이 있습니다. 받는사람 변수 데이터를 확인해 주세요."); + tableL.clearData(); //기존 받는사람 목록을 삭제. + return false; + + }*/ + } //결제 금액 구하기 From 2627b4a1c709c37c3ac50d583e88051748b9c2fc Mon Sep 17 00:00:00 2001 From: rosewiper Date: Wed, 17 Jan 2024 09:27:27 +0900 Subject: [PATCH 16/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EB=B0=9C=EC=86=A1=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=A0=84=EB=8B=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/kakao/kakaoComm/KakaoSendUtil.java | 7 +-- .../web/KakaoFriendsTalkSendController.java | 47 +++++++++++++++++-- .../ft/KakaoFriendsTalkMsgDataView.jsp | 33 +++++++++++-- 3 files changed, 75 insertions(+), 12 deletions(-) diff --git a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java index c7c91967..fd701f62 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java +++ b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java @@ -382,8 +382,6 @@ public class KakaoSendUtil { } - System.out.println(tmpContents); - return tmpContents; } @@ -396,17 +394,14 @@ public class KakaoSendUtil { public String getKakaoFTCntRepToSpamFilter(List varValList, List resultSpamTxt, String contents) throws Exception { String spmFilterTxt = ""; for(int i=0; i < varValList.size(); i++) { - //String[] array = varValList.get(i)[0].split("¶"); + String tmpContents = getKakaoFTCntReplace(varValList.get(i)[0], contents); - System.out.println(tmpContents); //입력 문장에 대해서 우회 문장 또는 특수 기호 입력 제거 등 문장 재구성 처리, 한글 자모음 분리 및 재조함도 함께 처리함. String resultParser = ComGetSpamStringParser.getSpamTextParse(tmpContents).trim(); //List jasoList = HangulParser.disassemble(resultParser); //String assembleStr = HangulParser.assemble(jasoList); - System.out.println("++++++++++++++ spam resultParser ::: "+resultParser); - //데이터베이스에 등록된 스팸문구와 일치하는 단어/문구가 있는지 체크함. int spmCnt = 0; for(String spmTxt : resultSpamTxt) { diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 98cb0762..5d13a94a 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -22,6 +22,7 @@ import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.util.MJUtil; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.kakao.kakaoComm.KakaoButtonVO; import itn.let.kakao.kakaoComm.KakaoSendUtil; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; @@ -335,20 +336,60 @@ public class KakaoFriendsTalkSendController { System.out.println("++++++++++++++++++++++ imageFileName ::: "+kakaoVO.getImageFileName()); System.out.println("++++++++++++++++++++++ adFlag ::: "+kakaoVO.getAdFlag()); System.out.println("++++++++++++++++++++++ templateContents ::: "+kakaoVO.getTemplateContent()); + System.out.println("++++++++++++++++++++++ templateImageUrl ::: "+kakaoVO.getTemplateImageUrl()); System.out.println("++++++++++++++++++++++ kakaoFtPrice ::: "+kakaoVO.getKakaoFtPrice()); System.out.println("++++++++++++++++++++++ eachPrice ::: "+kakaoVO.getEachPrice()); System.out.println("++++++++++++++++++++++ totPrice ::: "+kakaoVO.getTotalPrice()); + + for(KakaoButtonVO buttonVO : kakaoVO.getButtonVOList()) { + + System.out.println("++++++++++++++ button Name ::: "+buttonVO.getName()); + System.out.println("++++++++++++++ button type :::"+ buttonVO.getLinkType()); + System.out.println("++++++++++++++ button pc :::"+ buttonVO.getLinkPc()); + System.out.println("++++++++++++++ button mobile :::"+ buttonVO.getLinkMo()); + System.out.println("++++++++++++++ button android :::"+ buttonVO.getLinkAnd()); + System.out.println("++++++++++++++ button ios :::"+ buttonVO.getLinkIos()); + + } + List varValList = new ArrayList(); - System.out.println(kakaoVO.getTxtReplYn()); + System.out.println("+++++++++++++++ txtReplYn ::: "+kakaoVO.getTxtReplYn()); - /*for(List varValList : kakaoVO.getVarValList()) { + varValList = kakaoVO.getVarValList(); + + for(int i=0; i < varValList.size(); i++) { - } */ + String tmpVar = varValList.get(i)[0]; + System.out.println("+++++++++++++ tmpVar ::: "+tmpVar); + + } + + for(String callTo : kakaoVO.getCallToList()) { + + System.out.println("++++++++++++ callTo ::: "+callTo); + + } + + System.out.println("++++++++++++++++ spamStatus ::: "+kakaoVO.getSpamStatus()); + + System.out.println("++++++++++++++++ 대체문자 사용 여부 ::: "+kakaoVO.getSubMsgSendYn()); + + System.out.println("++++++++++++++++ 발신번호 ::: "+kakaoVO.getCallFrom()); + System.out.println("++++++++++++++++ 대체문자 내용 ::: "+kakaoVO.getSmsTxtArea()); + + System.out.println("++++++++++++++++ 대체문자 타입 ::: "+kakaoVO.getSubMsgType()); + + System.out.println("++++++++++++++++ 예약문자 여부 ::: "+kakaoVO.getReserveYn()); + + System.out.println("++++++++++++++++ 예약 시간 ::: "+kakaoVO.getReqDate()); + + modelAndView.addObject("result", "success"); + modelAndView.addObject("resultSts", kakaoVO.getCallToList().length); return modelAndView; } diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index a86bda38..a31025cb 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -806,9 +806,6 @@ function fn_sendMsgData(){ var rtnStr = strChinJpnCheck(tmpContents); - console.log(tmpContents); - console.log("+++++++++++ emojiCheck ::: "+emojiCheck(tmpContents)); - //문자내용에 이모지가 있는지 체크 if(!emojiCheck(tmpContents)) return false; @@ -1130,6 +1127,7 @@ function fn_sendMsgData(){ var adFlag = $("input[name=ad_flag]:checked").val(); $("#adFlag").val(adFlag); + //치환문자에 대한 데이터 누락 체크 if(!varValStatus){ alert("특정문구 일괄변환에 대한 일부 데이터가 누락된 부분이 있습니다. 데이터를 확인해 주세요."); @@ -1349,6 +1347,8 @@ function thisFnByteString(contents){ // $('.msg_title').addClass('active'); //document.getElementById("mmsSubject").disabled = false; + $("#subMsgType").val("LMS"); + }else{ $('#msgLeng').html(conLeng + " / "); @@ -1360,11 +1360,18 @@ function thisFnByteString(contents){ $('.msg_com').addClass("msg_short"); // 장문 클래스 삽입 // $('.put_left').addClass("short"); // 내용 입력 박스에 클래스 삽입 // $('.msg_title, .title_wrap .textbox').removeClass('active'); + $("#subMsgType").val("SMS"); } } +function msgSuccessClose(obj){ + $(obj).closest('.pop_msg_success').attr('style',''); + location.reload(true); + $('html').scrollTop(0); +} + @@ -1424,11 +1431,14 @@ function thisFnByteString(contents){ + + + @@ -2093,6 +2103,23 @@ function thisFnByteString(contents){ + +
+ +
+
발신번호 - +
- + - + - +
@@ -1353,7 +1402,7 @@ $('.popupAddr').click(function(){
- + @@ -1362,7 +1411,7 @@ $('.popupAddr').click(function(){
diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp index 8ce249d7..ad13ecf2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp @@ -426,7 +426,7 @@ function fnGoSampleTemplate(){ diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp index 2a508ce7..a90629b6 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateListPopupAjax.jsp @@ -106,7 +106,8 @@ function selectTemplateListLoad(page){ var form = document.listForm; - + form.searchKeyword.value = $("#inputSearchKeyword").val(); + form.senderKey.value = $("select[name='selectAgentCode_select']").val(); form.pageIndex.value = page; form.action = "/web/mjon/kakao/template/selectKakaoFriendsTemplateListPopupAjax.do"; form.submit(); @@ -123,9 +124,11 @@ +
- + +
    -
  • +
  • '); return false;" style="cursor:pointer;">
    @@ -177,10 +181,10 @@

    수신거부 | 홈 > 채널차단

    -
    + <%--
    -
    - <%--
    +
    --%> +
    템플릿명
    @@ -191,7 +195,7 @@
    등록일
    -
    --%> +
  • diff --git a/src/main/webapp/js/kakao/ft/friendstalkExcel.js b/src/main/webapp/js/kakao/ft/friendstalkExcel.js index db222e58..cad5ebba 100644 --- a/src/main/webapp/js/kakao/ft/friendstalkExcel.js +++ b/src/main/webapp/js/kakao/ft/friendstalkExcel.js @@ -29,6 +29,130 @@ $(document).ready(function(){ //엑셀 파일 불러오기 function excelExport(event){ + var data = new FormData(document.excelForm); + data.append("file0", $('#excelFile').prop('files')[0]); + + var fileValue = $("#excelFile").val().split("\\"); + var fileName = fileValue[fileValue.length-1]; + + var fileExt = fileName.split('.').pop().toLowerCase(); + + if(fileExt.length > 0){ + if($.inArray(fileExt, ['txt','xls','xlsx']) == -1) { + + alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); + return false; + + } + + + var url = ""; + + if(fileExt == "xls" || fileExt == "xlsx"){ + + url = "/web/mjon/msgdata/sendExelFilePhoneNumAjax.do"; + + }else if(fileExt = "txt"){ + + url = "/web/mjon/msgdata/sendTxtFilePhoneNumAjax.do"; + + }else{ + + alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.'); + return; + + } + + //엑셀 데이터 변수에 자료가 있으면 지워준다. + if(excelAddr.length > 0){ + + excelAddr = []; + + } + + $.ajax({ + type: "POST", + enctype: 'multipart/form-data', + url: url, + data: data, + dataType:'json', + async: true, + processData: false, + contentType: false, + cache: false, + //timeout: 600000, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + + if(returnData.success){ + + var data = returnData.data; + var message = returnData.message; + + if(message != '' ){ + alert(returnData.message); + } + + if(data != null){ + + $.each(data, function(i, item){ + + if(checkHpNum(item.phone)){ + + excelAddr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4}); + console.log(item.phone); + }/* else{ + + alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다."); + excelAddr = []; //엑셀 데이터 저장 변수 초기화 + $("#excelFile").val(""); //첨부파일 input 초기화 + $("#excelNm").val(""); // 첨부파일 명 초기화 + fileName = ""; + return; + + } */ + + }); + + } + + }else{ + alert(returnData.message); +// alert("첨부파일 불러오는 중 오류가 발생하였습니다."); + excelAddr = []; //엑셀 데이터 저장 변수 초기화 + $("#excelFile").val(""); //첨부파일 input 초기화 + $("#excelNm").val(""); // 첨부파일 명 초기화 + fileName = ""; + return; + + } + } else if(status== 'fail'){ + alert("첨부파일 불러오는 중 오류가 발생하였습니다."); + console.log("status : fail ~"); + } + }, + error: function (e) { + alert("첨부파일 불러오는 중 오류가 발생하였습니다."); + console.log("ERROR : ", e); + }, + beforeSend : function(xmlHttpRequest) { + //로딩창 show + $('.loading_layer').addClass('active'); + }, + complete : function(xhr, textStatus) { + //로딩창 hide + $('.loading_layer').removeClass('active'); + } + }); + + $("#excelFile").val(""); + $("#excelNm").val(fileName); + + } + +} +/*function excelExport(event){ + var fileValue = $("#excelFile").val().split("\\"); var fileName = fileValue[fileValue.length-1]; @@ -48,7 +172,7 @@ function excelExport(event){ } -} +}*/ //엑셀파일 자료 데이터베이스에 입력해주기 diff --git a/src/main/webapp/js/kakao/ft/ftTabulator.js b/src/main/webapp/js/kakao/ft/ftTabulator.js index 28218ece..d091e2fb 100644 --- a/src/main/webapp/js/kakao/ft/ftTabulator.js +++ b/src/main/webapp/js/kakao/ft/ftTabulator.js @@ -3,7 +3,7 @@ * @author : 우영두 * @fileName : ftTabulator.js * @date : 2024.01.09 - * @description : tabulator 관련 js + * @description : 받는사람 목록 tabulator 관련 js * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * @@ -14,7 +14,7 @@ */ $(document).ready(function (){ - /** + //받는사람 연락처 내용 처리 //Tabulator AJAX Data Loading tableL = new Tabulator(".callList_box", { @@ -88,7 +88,7 @@ $(document).ready(function (){ }); - */ + //주소록 불러오기 팝업 내용 //Tabulator AJAX Data Loading tableAddr = new Tabulator(".callAddr_box", { @@ -147,38 +147,57 @@ $(document).ready(function (){ //핸드폰 번호에 '-' 문자 제거하기 callToNum = removeDash(callToNum); - - var dpCnt = 0; - $(".phoneArea p").each(function(index, item){ - if(this.textContent == callToNum){ - - dpCnt++; - - alert("받는사람 리스트에 동일한 연락처가 있습니다."); - $('#callTo').val(""); - return false; - } - }); + + //기존 받는사람 연락처 모두 불러오기 + var data = tableL.getRows(); + var tableData = []; + var dpCnt = 0; + for(var i=0; i < tableL.getRows().length; i++){ + + if(callToNum == data[i].getData().phone){ + + dpCnt++; + + } + + } + + if(dpCnt > 0){ + + alert("받는사람 리스트에 동일한 연락처가 있습니다."); + $('#callTo').val(""); + return false; + + }else{ + + tabledata = [{phone: callToNum},]; + + //빈 row 데이터 삭제하기 + var befData = tableL.getRows(); + var totLen = tableL.getRows().length; + + for(var i=0; i < totLen; i++){ + + tableData.push({phone: data[i].getData().phone.trim(), name: data[i].getData().name}); + + } + + //연락처 추가해 주기 + addPhoneInfo(tabledata); + + //tableL.addData(tabledata); + + //전체 데이터 갯수 구하기 + //totRows = tableL.getRows().length; + //updateTotCnt(totRows); + + //결제 금액 구하기 + totalPriceSum(totRows); + + $('#callTo').val(""); + + } - if(dpCnt > 0){ - alert("받는사람 리스트에 동일한 연락처가 있습니다."); - $('#callTo').val(""); - return false; - }else{ - // fn_displayJsonToHtmlTable 재사용을 위한 - // 파라미터 형변환 - var data =[]; - data.push({ phone: callToNum, name: ''}); - fn_displayJsonToHtmlTable(data); - - /* - * 토탈 카운트 화면에 노출 - */ - updateTotCnt(); - - // 번호 추가란 초기화 - $('#callTo').val(''); - } }); @@ -449,68 +468,104 @@ function updateTotCnt(){ } //주소록 불러오기에서 수신자 리스트 화면에 추가해주기 -function addPhoneInfo(taData){ +function addPhoneInfo(data){ - if(taData == null){ + if(data == null){ + alert("연락처 정보가 없습니다."); return; + + }else{ + + var idx = 0; + var newData = data;//중복 연락처는 하나만 남기고 모두 제거 + + var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장 + var tableData = []; + + //기존 받는사람 리스트를 배열에 미리 담아둔다. + if(recTableData.length > 0){ + + for(var j=0; j < recTableData.length; j++){ + + tableData.push({phone: removeDash(recTableData[j].getData().phone) , name: recTableData[j].getData().name, rep1: recTableData[j].getData().rep1, rep2: recTableData[j].getData().rep2, rep3: recTableData[j].getData().rep3, rep4: recTableData[j].getData().rep4}); + + } + + } + + //받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. + for(var i=0; i < newData.length; i++){ + + tableData.push({phone: removeDash(newData[i].phone) , name: newData[i].name, rep1: newData[i].rep1, rep2: newData[i].rep2, rep3: newData[i].rep3, rep4: newData[i].rep4}); + + } + + var temp = tableData.length; + + //기존 수신 리스트를 지워준 후 신규 전체 리스트를 추가해준다. + tableL.clearData(); //기존 받는사람 목록을 삭제. + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 + _fileForm2 = []; //form file data 초기화 + _fileIdx = 0; //form file idx 초기화 + + totRows = tableL.getRows().length; + updateTotCnt(totRows); //전체 데이터 갯수 구하기 + + var smsTxtArea = $('#smsTxtArea').val(); + //일괄변환 문구 결제금액 처리 + if(smsTxtArea.indexOf("[*이름*]") > -1 + || smsTxtArea.indexOf("[*1*]") > -1 + || smsTxtArea.indexOf("[*2*]") > -1 + || smsTxtArea.indexOf("[*3*]") > -1 + || smsTxtArea.indexOf("[*4*]") > -1){ + + fnReplCell(); + + }else{ + + //결제 금액 구하기 + totalPriceSum(totRows); + + } + } - /* - * 주소록 데이터 화면에 추가 - */ - this.fn_displayJsonToHtmlTable(taData); +} - /* - * 토탈 카운트 화면에 노출 - */ - this.updateTotCnt(); + +function addrToList(){ + + var selectedData = tableAddr.getSelectedRows(); + var tableData = []; + + if(selectedData == "" || selectedData == null){ + alert("주소록을 선택해 주세요."); + return false; + + }else{ // 선택한 Row 데이터 저장해주기 + + for(var i=0; i < selectedData.length; i++){ + + //좌측 받는사람 리스트를 담아둔 배열에 데이터를 추가해 준다. + tableData.push({phone: removeDash(selectedData[i].getData().addrPhone), + name: selectedData[i].getData().addrName, + rep1: selectedData[i].getData().addrRep1, + rep2: selectedData[i].getData().addrRep2, + rep3: selectedData[i].getData().addrRep3, + rep4: selectedData[i].getData().addrRep4} + ); + + } + + //선택한 데이터 받는사람 리스트에 추가해 주기 + addPhoneInfo(tableData); + $(".closeAddr").trigger("click"); + + //주소록 레이어 팝업의 Tabulator 데이터 지워주기 + tableAddr.clearData(); + + } + } - -/* -* 주소록 데이터 화면에 추가 -*/ -function fn_displayJsonToHtmlTable(taData){ - - // fn_viewDataInit01(); - // 치환문자가 있으면 데이터 초기화 - - - var $htmlBody = $('#wrap01_body'); - - var addHtml = '
    ' - +'\t
    ' - +'\t\t' - +'\t\t' - +'\t
    ' - +'\t
    ' - +'\t\t

    $PHONE$

    ' - +'\t
    ' - /*23.04.06 이름제거 요청으로인한 화면 이름 제거*/ - /*+'\t
    ' - +'\t\t

    $NAME$

    ' - +'\t
    '*/ - +'
    '; - - - - - var totalDuplCnt = $('#rowDupCnt').text(); - - var itemPhone; - var itemName; - $.each(taData, function(index, item){ - itemPhone = item.phone; - itemName = item.name; - // == null ? '': item.name; - if(!phoneDupl(itemPhone)) - /*23.04.06 이름제거 요청으로인한 화면 이름 제거*/ -// $htmlBody.append(addHtml.replace('$PHONE$', itemPhone).replace('$NAME$', itemName ??= '')); - $htmlBody.append(addHtml.replace('$PHONE$', itemPhone)); - else - totalDuplCnt++; - }); - $('#rowDupCnt').text(totalDuplCnt); -} - From 9a9977af1af1c8c4a328b3f6bc007885566ccf41 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Mon, 15 Jan 2024 11:29:25 +0900 Subject: [PATCH 13/33] =?UTF-8?q?=EC=B9=9C=EA=B5=AC=ED=86=A1=20=EC=9A=94?= =?UTF-8?q?=EA=B8=88=20=EA=B3=84=EC=82=B0=20=EB=B0=8F=20=EB=B0=9C=EC=86=A1?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=20=EC=A0=9C=ED=95=9C=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/kakao/kakaoComm/KakaoSendUtil.java | 4 + .../web/KakaoFriendsTalkSendController.java | 37 ++- .../let/sym/site/service/JoinSettingVO.java | 9 + .../sqlmap/let/msg/MjonMsgData_SQL_mysql.xml | 2 + .../kakao/include/KaKaoAlimtalkTopMenuTap.jsp | 4 +- .../ft/KakaoFriendsTalkMsgDataView.jsp | 124 ++++++-- .../webapp/js/kakao/ft/friendstalkExcel.js | 2 +- src/main/webapp/js/kakao/ft/ftTabulator.js | 297 ++++++++++++++++-- src/main/webapp/js/kakao/templateComm.js | 31 +- 9 files changed, 443 insertions(+), 67 deletions(-) diff --git a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java index afdbea95..e1df6029 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java +++ b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java @@ -171,6 +171,10 @@ public class KakaoSendUtil { if(mberManageVO.getKakaoAtPrice() == 0.0f) mberManageVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); + //카카오 친구톡 개인 단가가 없는 경우 시스템 단가로 + if(mberManageVO.getKakaoFtPrice() == 0.0f) + mberManageVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); + // SMS 인경우 // 사용자 개인 단가가 없으면 시스템 단가로 diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 749f614d..201b4c64 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -146,7 +146,7 @@ public class KakaoFriendsTalkSendController { String friendId = kakaoVO.getFriendId(); KakaoVO resultTemplateVO = new KakaoVO(); - if(!friendId.equals("") || friendId != null) { + if(friendId != null) { System.out.println("+++++++++++++++++++++++ friendId ::: "+friendId); @@ -155,6 +155,41 @@ public class KakaoFriendsTalkSendController { } model.addAttribute("resultTemplateVO", resultTemplateVO); + + + //친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지 + + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + Date nows = new Date(); + String nowDate = sdf1.format(nows); + cal.setTime(nows); + + int hours = cal.get(Calendar.HOUR_OF_DAY); + int minuts = cal.get(Calendar.MINUTE); + + boolean sendStatus = true; + + if(hours >= 20) { + + if(minuts >= 50) { + + System.out.println("발송금지 시간" + hours + ":" + minuts); + sendStatus = false; + + } + + } + + if(hours < 8) { + + System.out.println("발송금지 시간" + hours + ":" + minuts); + sendStatus = false; + + } + + System.out.println("발송상태는 ::: "+sendStatus); + model.addAttribute("sendStatus", sendStatus); } diff --git a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java index 0fe89cea..452c3f5a 100644 --- a/src/main/java/itn/let/sym/site/service/JoinSettingVO.java +++ b/src/main/java/itn/let/sym/site/service/JoinSettingVO.java @@ -36,6 +36,7 @@ public class JoinSettingVO { private float customEdit3Price; // 이미지 편집(첨부이미지 3장이하) private float customTextPrice; // 텍스트 단순수정 private float kakaoAtPrice; // 카카오 알림톡 단가 + private float kakaoFtPrice; // 카카오 친구톡 단가 private float faxPrice; // 팩스 단가 private float refundPer; //환불 비율 @@ -209,6 +210,14 @@ public class JoinSettingVO { this.kakaoAtPrice = kakaoAtPrice; } + public float getKakaoFtPrice() { + return kakaoFtPrice; + } + + public void setKakaoFtPrice(float kakaoFtPrice) { + this.kakaoFtPrice = kakaoFtPrice; + } + public float getFaxPrice() { return faxPrice; } diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index f187073c..5b3e333c 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -2104,6 +2104,7 @@ , CUSTOM_TEXT_PRICE AS customTextPrice , POINT_PER AS pointPer , KAKAO_AT_PRICE AS kakaoAtPrice + , KAKAO_FT_PRICE AS kakaoFtPrice , FAX_PRICE AS faxPrice FROM MJ_MBER_SETTING @@ -2120,6 +2121,7 @@ , PICTURE2_PRICE AS picture2Price , PICTURE3_PRICE AS picture3Price , KAKAO_AT_PRICE AS kakaoAtPrice + , KAKAO_FT_PRICE AS kakaoFtPrice , FAX_PRICE AS faxPrice , USER_MONEY AS userMoney , USER_POINT AS userPoint diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp index 5ca30dcb..691c2830 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp @@ -94,7 +94,9 @@ function usrDeptChk(){
    • - +
    • diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index 8f492aae..f9cb8fb5 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -2,12 +2,15 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> + + @@ -42,6 +45,14 @@ $(document).ready(function (){ $('#bizForm #reserveYn').val($(this).val()); }); + //예약 발송 라디오 버튼 선택시 숨김 해제처리 + $("#reserYnY").on('click', function(){ + $('.rev_selected').show(); + $('.send_rev .send_content').css('padding-bottom','0'); + $('.send_btn .btnType:first-child').html('예약하기'); + $('#bizForm #reserveYn').val($(this).val()); + }); + //템플릿 내용 입력 글자수 체크 해주기 $("#inputTemplateContent").keyup(function(e){ @@ -68,7 +79,6 @@ $(document).ready(function (){ } - }); }); @@ -125,6 +135,16 @@ function initFormChk(){ var adFlagVal = $("input[name=ad_flag]:checked").val(); advTextChange(adFlagVal); + var reserYn = $("input[name=reserYn]:checked").val(); + if(reserYn == 'N'){ + + $('.rev_selected').hide(); + $('.send_rev .send_content').css('padding-bottom','108px'); + $('.send_btn .btnType:first-child').html('발송하기'); + $('#bizForm #reserveYn').val('N'); + + } + } //우측 미리보기 화면 채널 아이디 정보 변경해 주기 @@ -430,9 +450,6 @@ function fnContentsReset(){ //저장 템플릿 불러오기 선택시 function myTemplateSelect(ftId){ - //alert(ftId); - console.log(ftId); - var form = document.templateForm; form.friendId.value = ftId; @@ -618,6 +635,48 @@ function fnEmptyId(){ } +//분할전송 건수 데이터 체크 +function checkNumber(event) { + var divideCnt = $('#frmDivideCnt').val(); + if(!(event.key >= 0 && event.key <= 9)) { + return false; + } + + var totCnt = divideCnt + "" + event.key; + if(Number(totCnt) > 5000){ + alert("분할전송 건수는 5,000건을 초과할 수 없습니다."); + $('#frmDivideCnt').val("20"); + return false; + } + + return true; +} + +function fnSelectMinChk(){ + + var resHour = $("#msgResHour option:selected").val(); + var resMin = $("#msgResMin option:selected").val(); + + if(resHour == '20'){ + + if(resMin >= 50 && resMin <= 59){ + + alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다."); + $("#msgResMin").val("40").prop("selected", true); + + } + + } + +} + +function fn_noTimeSend(){ + + alert("친구톡은 20:50 ~ 익일 08:00까지 발송할 수 없습니다."); + return false; + +} + @@ -640,12 +699,12 @@ function fnEmptyId(){
- + - - - + + +
@@ -658,6 +717,11 @@ function fnEmptyId(){ + + + + +
@@ -1087,18 +1151,18 @@ function fnEmptyId(){
- +
-

등록하신 전화번호(형식 등)가 정확하게 입력되었는지 오류여부를 자동으로 검사할 수 있습니다.

- (예시) 010-1234-0001(O),
010-123-0001(X)
+

휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능

+ (예시) 010-1234-0001(O) / 010-12345-0001(X)
- - + +

0건 / 중복 0

@@ -1127,7 +1191,8 @@ function fnEmptyId(){ - + +
@@ -1205,7 +1270,7 @@ function fnEmptyId(){
-
+

@@ -1248,11 +1313,19 @@ function fnEmptyId(){

- + <%-- 친구톡 발송시간 체크 하기 - 20:50 ~ 익일 08:00 사이에는 발송 금지 --%> + + + + + + + +
-
+
날짜 :
@@ -1261,7 +1334,7 @@ function fnEmptyId(){
- + @@ -1287,15 +1360,10 @@ function fnEmptyId(){
-
+ <%--
- + -
+
--%>
diff --git a/src/main/webapp/js/kakao/ft/friendstalkExcel.js b/src/main/webapp/js/kakao/ft/friendstalkExcel.js index cad5ebba..3ea21885 100644 --- a/src/main/webapp/js/kakao/ft/friendstalkExcel.js +++ b/src/main/webapp/js/kakao/ft/friendstalkExcel.js @@ -100,7 +100,7 @@ function excelExport(event){ if(checkHpNum(item.phone)){ excelAddr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4}); - console.log(item.phone); + }/* else{ alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다."); diff --git a/src/main/webapp/js/kakao/ft/ftTabulator.js b/src/main/webapp/js/kakao/ft/ftTabulator.js index d091e2fb..3da934e5 100644 --- a/src/main/webapp/js/kakao/ft/ftTabulator.js +++ b/src/main/webapp/js/kakao/ft/ftTabulator.js @@ -185,15 +185,6 @@ $(document).ready(function (){ //연락처 추가해 주기 addPhoneInfo(tabledata); - //tableL.addData(tabledata); - - //전체 데이터 갯수 구하기 - //totRows = tableL.getRows().length; - //updateTotCnt(totRows); - - //결제 금액 구하기 - totalPriceSum(totRows); - $('#callTo').val(""); } @@ -217,13 +208,67 @@ $(document).ready(function (){ tableL.clearData(); $("#rowTotCnt").text(0); //총건수 수정 $("#rowDupCnt").text(0); //중복건수 수정 - totalPriceSum(0); //결제 금액 수정 + totalFtPriceSum(0); //결제 금액 수정 } } }); + // 받는사람 선택삭제 버튼 처리해주기 + $('.select_del').click(function(){ + + if(tableL == null || tableL == ""){ + + alert("받는사람을 추가해 주세요."); + return false; + + } + + var selectedData = tableL.getSelectedRows(); + + if(selectedData == "" || selectedData == null){ + + alert("삭제할 연락처를 선택해주세요."); + return false; + + }else{ // 선택한 Row 데이터 삭제하기 + + if(confirm("선택하신 받는 사람을 삭제하시겠습니까?")){ + + for(var i=0; i < selectedData.length; i++){ + + selectedData[i].delete(); + + } + + totRows = tableL.getRows().length; + + var smsTxtArea = $('#inputTemplateContent').val(); + + //일괄변환 문구 결제금액 처리 + if(smsTxtArea.indexOf("#{이름}") > -1 + || smsTxtArea.indexOf("#{1}") > -1 + || smsTxtArea.indexOf("#{2}") > -1 + || smsTxtArea.indexOf("#{3}") > -1 + || smsTxtArea.indexOf("#{4}") > -1){ + + fnFtReplCell(); + + }else{ + //결제 금액 구하기 + totalFtPriceSum(totRows); + } + + //결제금액 합계 파라이터에 입력 + $('#rowTotCnt').text(numberWithCommas(totRows)); + + } + + } + + }); + //주소록 불러오기 버튼 클릭시 @@ -510,25 +555,28 @@ function addPhoneInfo(data){ _fileIdx = 0; //form file idx 초기화 totRows = tableL.getRows().length; - updateTotCnt(totRows); //전체 데이터 갯수 구하기 - var smsTxtArea = $('#smsTxtArea').val(); + var smsTxtArea = $('#inputTemplateContent').val(); + //일괄변환 문구 결제금액 처리 - if(smsTxtArea.indexOf("[*이름*]") > -1 - || smsTxtArea.indexOf("[*1*]") > -1 - || smsTxtArea.indexOf("[*2*]") > -1 - || smsTxtArea.indexOf("[*3*]") > -1 - || smsTxtArea.indexOf("[*4*]") > -1){ - - fnReplCell(); + if(smsTxtArea.indexOf("#{이름}") > -1 + || smsTxtArea.indexOf("#{1}") > -1 + || smsTxtArea.indexOf("#{2}") > -1 + || smsTxtArea.indexOf("#{3}") > -1 + || smsTxtArea.indexOf("#{4}") > -1){ + + fnFtReplCell(); }else{ //결제 금액 구하기 - totalPriceSum(totRows); + totalFtPriceSum(totRows); } + //결제금액 합계 파라이터에 입력 + $('#rowTotCnt').text(numberWithCommas(totRows)); + } } @@ -569,3 +617,212 @@ function addrToList(){ } } + + +//특정문구 일괄변환 문자길이 체크 하기 +function fnFtReplCell(){ + + var smsTxtArea = $('#inputTemplateContent').val(); + + //이벤트 잔여 캐시 자동 처리 관련 변수 + var eachPrice = parseFloat($("#eachPrice").val()); + var kakaoFtPrice = parseFloat($("#kakaoFtPrice").val()); + var shortPrice = parseFloat($("#shortPrice").val()); + var longPrice = parseFloat($("#longPrice").val()); + + if(smsTxtArea.indexOf("#{이름}") > -1 + || smsTxtArea.indexOf("#{1}") > -1 + || smsTxtArea.indexOf("#{2}") > -1 + || smsTxtArea.indexOf("#{3}") > -1 + || smsTxtArea.indexOf("#{4}") > -1){ + + + var rowData = tableL.getRows(); + var recTableData = tableL.getRows(); // 받는사람 리스트의 전체 목록을 저장 + //var tableData = []; + + var msg_short = 0; //단문문자 갯수 + var msg_long = 0; //장문문자 갯수 + + //일괄변환문자 포함 여부 변경 - 문자내용에 치환변환 문자는 있지만 받는사람 데이터에 치환 데이터를 안넣는 경우 오류가 발생하여 상태값 입력 위치 상단으로 변경함. + //치환데이터가 없는 경우 Alert 띄우고 빠져나가기 때문에 치환문자 상태 체크값이 누락되어서 변경함 - 20230407 우영두 + $('#txtReplYn').val("Y"); + + var nmStatus = false; + var rep1Status = false; + var rep2Status = false; + var rep3Status = false; + var rep4Status = false; + + if(smsTxtArea.indexOf("#{이름}") > -1){ + + nmStatus = true; + } + + if(smsTxtArea.indexOf("#{1}") > -1){ + + rep1Status = true; + } + + if(smsTxtArea.indexOf("#{2}") > -1){ + + rep2Status = true; + } + + if(smsTxtArea.indexOf("#{3}") > -1){ + + rep3Status = true; + } + + if(smsTxtArea.indexOf("#{4}") > -1){ + + rep4Status = true; + } + + + //기존 받는사람 리스트를 배열에 미리 담아둔다. + if(recTableData.length > 0){ + + for(var j=0; j < recTableData.length; j++){ + + var smsTxt = smsTxtArea; + + if(typeof recTableData[j].getData().name != 'undefined' && recTableData[j].getData().name != null && recTableData[j].getData().name != ""){ + + var name = recTableData[j].getData().name; + smsTxt = stringReplaceAll(smsTxt, "#{이름}", name); + + } + + if(typeof recTableData[j].getData().rep1 != 'undefined' && recTableData[j].getData().rep1 != null && recTableData[j].getData().rep1 != ""){ + + var rep1 = recTableData[j].getData().rep1; + smsTxt = stringReplaceAll(smsTxt, "#{1}", rep1); + + } + + if(typeof recTableData[j].getData().rep2 != 'undefined' && recTableData[j].getData().rep2 != null && recTableData[j].getData().rep2 != ""){ + + var rep2 = recTableData[j].getData().rep2; + smsTxt = stringReplaceAll(smsTxt, "#{2}", rep2); + + } + + if(typeof recTableData[j].getData().rep3 != 'undefined' && recTableData[j].getData().rep3 != null && recTableData[j].getData().rep3 != ""){ + + var rep3 = recTableData[j].getData().rep3; + smsTxt = stringReplaceAll(smsTxt, "#{3}", rep3); + + } + + if(typeof recTableData[j].getData().rep4 != 'undefined' && recTableData[j].getData().rep4 != null && recTableData[j].getData().rep4 != ""){ + + var rep4 = recTableData[j].getData().rep4; + smsTxt = stringReplaceAll(smsTxt, "#{4}", rep4); + + } + + + var msgLen = strMaxCharacterCnt(smsTxt); + var maxLenChar = 1000; + + var imgType = $("#imageType").val(); + + //일반 이미지 첨부시 글자수 최대 400글자 + if(imgType == "I"){ + + maxLenChar = 400; + + }else if(imgType == "W"){ + //와이드 이미지 첨부시 글자수 최대 76글자 + maxLenChar = 76; + + } + + if(msgLen < 1){ + + + }else if(msgLen > maxLenChar){ + + alert("친구톡 내용은 "+ maxLenChar +" 자를 넘을 수 없습니다."); + tableL.clearData(); //기존 받는사람 목록을 삭제. + return false; + + } + + //첫번째 수신자의 변환 텍스트 내용을 적용하여 미리보기 문자내용에 보여주자. + if(j == 0){ + + //미리보기에 내용 입력해 주기 + $('.template_text').text(smsTxt); + + } + + } + + } + + //결제 금액 구하기 + totalFtPriceSum(tableL.getRows().length); + + } + +} + + +//오류 검사 버튼 처리 +$('.check_validity').click(function(){ + + var invalid = tableL.getInvalidCells(); //오류 데이터 체크 + var dataLen = tableL.getRows().length; //연락처 데이터 갯수 + var totLen = invalid.length; //오류 데이터 갯수 + var errMsg = ""; //최종 alert에 표시할 메시지 저장 변수 + + if(dataLen > 0){ //연락처 정보가 있으면 수행 + + if(totLen > 0){ //내용에 오류가 있으면 수행 + + //오류 데이터 값 저장 + for(var i=0; i < totLen; i++){ + + var cellValue = invalid[i].getValue(); + + if(i == 0){ + + errMsg = cellValue; + + }else{ + + errMsg = errMsg +", "+ cellValue; + + } + + } + + if(errMsg == "" || errMsg == null){ + + alert("내용에 오류가 있습니다."); + return false; + + }else{ + + alert(errMsg + "의 내용에 오류가 있습니다."); + return false; + + } + + }else{ + + alert("오류 데이터가 없습니다."); + return false; + + } + + }else{ + + alert("연락처를 입력해 주세요."); + return false; + + } + +}); diff --git a/src/main/webapp/js/kakao/templateComm.js b/src/main/webapp/js/kakao/templateComm.js index a88e42cc..793eb7bb 100644 --- a/src/main/webapp/js/kakao/templateComm.js +++ b/src/main/webapp/js/kakao/templateComm.js @@ -70,27 +70,26 @@ function setContentsLengForFriends(contents){ } - + //제한글자수를 넘겼을 경우 최대 글자수까지 잘라주고 미리보기 및 글자수 표시처리 if(conLeng > limitLeng){ var splicecon = strMaxLengthSubstring(contents, limitLeng-1); $('#inputTemplateContent').val(splicecon); - return false; - - }else{//현재 입력한 글자수 우측 하단에 표시해 주기 - - var repContent = ""; - repContent = contents.replace(/(?:\r\n|\r|\n)/g, '
'); - - $('.nowChar').text(conLeng + " /"); - $('.totChar').text(" "+limitLeng); - $('.template_text').show(); - if(repContent != ''){ - $('.template_text').html(repContent); - }else{ - $('.template_text').html("내용 미리보기"); - } + contents = splicecon; + conLeng = strMaxCharacterCnt(contents); } + var repContent = ""; + repContent = contents.replace(/(?:\r\n|\r|\n)/g, '
'); + + $('.nowChar').text(conLeng + " /"); + $('.totChar').text(" "+limitLeng); + $('.template_text').show(); + if(repContent != ''){ + $('.template_text').html(repContent); + }else{ + $('.template_text').html("내용 미리보기"); + } + } \ No newline at end of file From 297e46ce88b871d81df8e4d4a55236ed3292394f Mon Sep 17 00:00:00 2001 From: rosewiper Date: Mon, 15 Jan 2024 11:29:45 +0900 Subject: [PATCH 14/33] =?UTF-8?q?=EC=B9=9C=EA=B5=AC=ED=86=A1=20=EC=9A=94?= =?UTF-8?q?=EA=B8=88=20=EA=B3=84=EC=82=B0=20js=20cnrk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/js/kakao/ft/ftPriceClclt.js | 315 ++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 src/main/webapp/js/kakao/ft/ftPriceClclt.js diff --git a/src/main/webapp/js/kakao/ft/ftPriceClclt.js b/src/main/webapp/js/kakao/ft/ftPriceClclt.js new file mode 100644 index 00000000..aad451e5 --- /dev/null +++ b/src/main/webapp/js/kakao/ft/ftPriceClclt.js @@ -0,0 +1,315 @@ +/** + * + * @author : 우영두 + * @fileName : ftPriceClclt.js + * @date : 2024.01.12 + * @description : 친구톡 및 대체문자 금액 연산.js + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.01.12 우영두 최초 생성 + * + * + * + */ + + +/** + * + * @param {*} totRows 수신자 수 + * @description 금액 계산 function + * 대체 문자 X + * 카카오 금액 * 수신자 수 계산 + */ +function totalFtPriceSum(totRows){ + + var collNumCnt = parseInt(totRows); //받는사람 건수 + var price = $("#kakaoFtPrice").val(); //개별 건수 금액 + var totalPrice = 0; //전체 금액 + var totalStr = "0"; //전체 합계 금액 + var userMoney = $('#hdUserMoney').text(); //헤더 영역 보유 금액 불러오기 + + if(!userMoney > 0){ + + userMoney = 0; + + } + //헤더 영역 보유 금액 콤마 문자 제거 + if(userMoney != ''){ + + userMoney = userMoney.replaceAll("," , ""); + + } + + totalPrice = price * collNumCnt; + + // 소수점 첫째자리 까지 표시 + totalPrice = totalPrice.toFixed(1); + + if(totalPrice > 0){ + + //totalStr = totalPrice.toFixed(2); + totalStr = totalPrice; + + } + + //개별 문자 단가 파라미터에 입력 + $('#eachPrice').val(numberWithCommas(price)); + + //결제금액 합계 파라이터에 입력 + $('#totPrice').val(numberWithCommas(totalStr)); + + //결제금액 합계 화면에 표시 + $('#totalPriceTxt').text(numberWithCommas(totalStr)); + + $('#repPriceTxt').hide(); + + return totalStr; + +} + + + +/* + * ====================================================================================================================== + * + * */ + +//카카오 mms sms 단가 셋팅 +var KAKAO_FT_PRICE = ''; +var SHORT_PRICE = ''; +var LONG_PRICE = ''; + +/*$(document).ready(function(){ + + // 카카오 mms sms 단가 셋팅 + KAKAO_FT_PRICE = $('#kakaoFtPrice').val(); + SHORT_PRICE = $('#shortPrice').val(); + LONG_PRICE = $('#longPrice').val(); + + ///////////////////////////////////////// Mutation Observer + // 감시 대상 node 선택 + // 변수X 수신자 목록 + let target01 = document.getElementById('wrap01_body'); + // 변수O 수신자 목록 + let target02 = document.getElementById('wrap02'); + // 대체 문자 단문 장문 텍스트 노드 + let target03 = document.getElementById('afterDeny'); + + // 감시자의 설정 + let option = { + subtree : true // 대상 노드의 자식 요소뿐만 아니라 후손 요소의 변화까지 감지 + , childList : true // 대상 노드의 자식 요소(텍스트 포함)의 변화 감지 + , attributes : true // 해당 노드의 attribute 속성 + + // , characterData: true // 대상 노드의 데이터 변화 감지 + }; + + + // wrap01 감시자 인스턴스 만들기 + let observer_wrap01 = new MutationObserver((mutations) => { + // 노드가 변경 됐을 때의 작업 + fn_priceClclt(); + }); + + // wrap02 감시자 인스턴스 만들기 + let observer_wrap02 = new MutationObserver((mutations) => { + // 노드가 변경 됐을 때의 작업 + fn_priceClclt(); + }); + + // wrap03 감시자 인스턴스 만들기 + let observer_wrap03 = new MutationObserver((mutations) => { + // 노드가 변경 됐을 때의 작업 + fn_priceClclt(); + }); + + + + + // 대상 노드에 감시자 전달 + observer_wrap01.observe(target01, option); + observer_wrap02.observe(target02, option); + observer_wrap03.observe(target03, option); + + ///////////////////////////////////////// //Mutation Observer + +});*/ + +/** + * @description 금액 계산 function + */ +function fn_priceClclt(){ + + // 미리보기 텍스트 + var templateHtml = $('#smsTxtArea').val(); + // var templateHtml = $('.template_text').html(); + + // 수신 번호 개수 + var phoneSu = $('.phoneArea').length; + // 대체문자 있는지 확인 + var isSendFailChecked = $("#send_fail_check").is(":checked"); + // 치환문자 여부 확인 + var txtReplYn = $('#txtReplYn').val() + // 대체문자 하위에 장문 / 단문 select + var msgTypeText = $('.msg_com').text().trim(); + + if(typeof templateHtml == 'undefined') return false; + else if(isSendFailChecked && txtReplYn=='Y') fn_sendFailCheckedAndTxtRepl_Y(templateHtml, msgTypeText, phoneSu); // 대체문자 체크 & 치환문자 Y + else if(isSendFailChecked && txtReplYn=='N') fn_sendFailCheckedAndTxtRepl_N(msgTypeText, phoneSu); // 대체문자 체크 & 치환문자 N + else fn_sendFailUnChecked(phoneSu); + +} + +/** + * + * @param {*} phoneSu 수신자 수 + * @description 금액 계산 function + * 대체 문자 X + * 카카오 금액 * 수신자 수 계산 + */ +function fn_sendFailUnChecked(phoneSu){ + + // 카카오 금액 * 수신자 수 + // fn_writePriceText() 첫 파라미터가 null이면 카카오 전송으로 인식 + fn_writePriceText('', phoneSu); + // $('#totalPriceTxt').text((KAKAO_AT_PRICE * phoneSu).toFixed(1)); + fn_priceText('알림톡', phoneSu); +} + +/** + * + * @param {*} templateHtml 템플릿html + * @param {*} msgTypeText 발송 타입 + * @param {*} phoneSu 수신자 수 + * @description 금액 계산 function + * 대체 문자 O + * 치환 문자 O + */ +function fn_sendFailCheckedAndTxtRepl_Y(templateHtml, msgTypeText, phoneSu){ + + // 대체문자 하위에 html 그대로의 byte 계산이 단문일 경우에만 치환 후 장문이 있는지 확인 + if(msgTypeText == '단문'){ + msgTypeText = fn_transHtml(msgTypeText, templateHtml); + } + + fn_writePriceText(msgTypeText, phoneSu); + fn_priceText(msgTypeText, phoneSu); + + + +} + +/** + * + * @param {*} msgTypeText 발송 타입 + * @param {*} phoneSu 수신자 수 + * @description 금액 계산 function + * 대체 문자 O + * 치환 문자 X + */ +function fn_sendFailCheckedAndTxtRepl_N(msgTypeText, phoneSu){ + + fn_priceText(msgTypeText, phoneSu); + fn_writePriceText(msgTypeText, phoneSu); +} + + +/** + * + * @param {*} msgTypeText 발송 타입 + * @param {*} phoneSu 수신자 수 + * @returns + * @description 발송 금액 계산 / 노출 + */ +function fn_priceText(msgTypeText, phoneSu){ + + // $("#repPriceTxt").is(":visible") => 발송 금액 show hide 여부 + if(phoneSu === 0){ + + $('#repPriceTxt').empty(); + $('#repPriceTxt').hide(); + return false; + } + // 텍스트 초기화 + $('#repPriceTxt').show(); + $('#repPriceTxt').empty(); + + var priceText = '$SENDTYPE$ :$SU$건'; + priceText = priceText.replace('$SENDTYPE$', msgTypeText).replace('$SU$', phoneSu); + + $('#repPriceTxt').append(priceText); +} + +/** + * @description 발송금액 라인 text / 금액 초기화 + */ +function priceInit(){ + if($("#repPriceTxt").is(":visible")){ + $('#repPriceTxt').empty(); + $('#repPriceTxt').hide(); + } + $('#totalPriceTxt').text(0.0); + +} + +/** + * + * @param {*} msgTypeText 발송 타입 + * @param {*} phoneSu 수신자 수 + * @description 발송 금액 '발송타입:00건' 노출 + */ +function fn_writePriceText(msgTypeText, phoneSu){ + + var price; + msgTypeText = msgTypeText.trim(); + if(msgTypeText == '단문') price = SHORT_PRICE * phoneSu; + else if(msgTypeText == '장문') price = LONG_PRICE * phoneSu; + else price = KAKAO_AT_PRICE * phoneSu; // 카카오 + + $('#totalPriceTxt').text((price).toFixed(1)); +} + + +/** + * + * @param {*} msgTypeText 발송 타입 : 단문 + * @param {*} templateHtml 템플릿 html + * @returns msgTypeText : 단문 or 장문 + * @description 치환 데이터 있는 경우 단문일 경우만 호출 + * 치환 후 장문 데이터일경우 'returns 장문'으로 끝남 + */ +function fn_transHtml(msgTypeText, templateHtml){ + + // 템플릿 + templateHtml = templateHtml.trim().replace(/(
||
)/g, '\n'); + // 치환 부분 '#{내용}'만 추출 + var varList = $("#excelTemplateContent").val().match(/#\{([^}]+)\}/g); + // 템플릿을 반복할때마다 담는 temp 선언 + var tempTemplateHtml; + // 치환 데이터 담는 변수 선언 + var replaceStr; + + // excelBody 부분 반복 시작 + $('.excelBody').each(function(i, t){ + tempTemplateHtml = templateHtml; + + $(this).find('.transData').each(function(index, item){ + // console.log('item text :: ', $(item).text().trim()); + replaceStr = $(item).text().trim(); + tempTemplateHtml = tempTemplateHtml.replace(varList[index], replaceStr); + }); + // 치환 후 byte 계산 + // 장문이면 break; + if(90 < conByteLeng(tempTemplateHtml)) + { + msgTypeText = '장문'; + return false; + } + }); + + + return msgTypeText; +} + + \ No newline at end of file From 1b04bc71048de2cf00687a9c2bc73350349e1bb0 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Tue, 16 Jan 2024 16:02:04 +0900 Subject: [PATCH 15/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EC=8A=A4=ED=8C=B8=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/kakao/kakaoComm/KakaoSendUtil.java | 152 ++++ .../web/KakaoFriendsTalkSendController.java | 132 +++- .../ft/KakaoFriendsTalkMsgDataView.jsp | 717 +++++++++++++++++- .../jsp/web/msgdata/MsgDataSMLView.jsp | 3 - .../webapp/js/kakao/ft/friendstalkExcel.js | 151 ---- src/main/webapp/js/kakao/ft/ftPriceClclt.js | 14 + src/main/webapp/js/kakao/ft/ftTabulator.js | 61 +- 7 files changed, 1051 insertions(+), 179 deletions(-) diff --git a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java index e1df6029..c7c91967 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java +++ b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java @@ -12,6 +12,7 @@ import itn.com.cmm.util.StringUtil; import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiJsonSave; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; +import itn.let.mjo.spammsg.web.ComGetSpamStringParser; import itn.let.sym.site.service.JoinSettingVO; import itn.let.uss.umt.service.MberManageVO; @@ -341,4 +342,155 @@ public class KakaoSendUtil { } return tempSubMagTxt; } + + /* + * 카카오 친구톡 치환 내용에 대한 변환 처리 + * + * + * */ + public String getKakaoFTCntReplace(String varValStr, String contents) throws Exception{ + + String[] array = varValStr.split("¶"); + String tmpContents = contents; + for(int j=0; j < array.length; j++) { + String tmpVarVal = array[j].replaceAll("§", ","); + if(tmpVarVal.length() > 0) { + + if(tmpContents.contains("#{이름}") && j == 0) { + tmpContents = tmpContents.replaceAll("\\#\\{이름\\}", tmpVarVal); + } + + //1번째에 핸드폰 번호가 포함 되어 있어서 건너뜀 + + if(tmpContents.contains("#{1}") && j == 2) { + tmpContents = tmpContents.replaceAll("\\#\\{1\\}", tmpVarVal); + } + + if(tmpContents.contains("#{2}") && j == 3) { + tmpContents = tmpContents.replaceAll("\\#\\{2\\}", tmpVarVal); + } + + if(tmpContents.contains("#{3}") && j == 4) { + tmpContents = tmpContents.replaceAll("\\#\\{3\\}", tmpVarVal); + } + + if(tmpContents.contains("#{4}") && j == 5) { + tmpContents = tmpContents.replaceAll("\\#\\{4\\}", tmpVarVal); + } + + } + + } + + System.out.println(tmpContents); + + return tmpContents; + } + + /* + * 카카오 친구톡 치환문자 내용 스팸 필터 + * 치환변수 내용 및 템플릿 내용, 스팸필터 단어 리스트를 전달하면 스팸 문구 포함 문구 리턴 + * 없으면 공백을 리턴 + * + * */ + public String getKakaoFTCntRepToSpamFilter(List varValList, List resultSpamTxt, String contents) throws Exception { + String spmFilterTxt = ""; + for(int i=0; i < varValList.size(); i++) { + //String[] array = varValList.get(i)[0].split("¶"); + String tmpContents = getKakaoFTCntReplace(varValList.get(i)[0], contents); + System.out.println(tmpContents); + + //입력 문장에 대해서 우회 문장 또는 특수 기호 입력 제거 등 문장 재구성 처리, 한글 자모음 분리 및 재조함도 함께 처리함. + String resultParser = ComGetSpamStringParser.getSpamTextParse(tmpContents).trim(); + //List jasoList = HangulParser.disassemble(resultParser); + //String assembleStr = HangulParser.assemble(jasoList); + + System.out.println("++++++++++++++ spam resultParser ::: "+resultParser); + + //데이터베이스에 등록된 스팸문구와 일치하는 단어/문구가 있는지 체크함. + int spmCnt = 0; + for(String spmTxt : resultSpamTxt) { + + String parserStr = ComGetSpamStringParser.getSpamTextParse(spmTxt).trim(); + + if(resultParser.contains(parserStr)) { + + //스팸 단어/문구가 있으면 콤마로 연결시킨 후 리턴해줌. + spmFilterTxt += spmTxt + ","; + spmCnt++; + + } + + } + + if(spmCnt > 0) {//스팸문자가 포함되어 있으면 문자열 끝 , 단어 삭제 처리 + + if (StringUtil.getWordRight(spmFilterTxt.trim(), 1).equals(",")) { + // 처음부터 idx 만큼 잘라낸 나머지 글자 + spmFilterTxt = StringUtil.getWordLeft(spmFilterTxt.trim(), 1); + + } + + System.out.println("++++++++++++++ spmFilterTxt ::: "+spmFilterTxt); + + return spmFilterTxt; + + } + + } + return ""; + } + + /* + * 치환문자가 없는 내용에 대한 스팸필터링 처리 + * + * */ + public String getKakaoFTCntToSpamFilter(List resultSpamTxt, String contents) throws Exception { + String spmFilterTxt = ""; + //for(int i=0; i < varValList.size(); i++) { + //String[] array = varValList.get(i)[0].split("¶"); + String tmpContents = contents; + System.out.println(tmpContents); + + //입력 문장에 대해서 우회 문장 또는 특수 기호 입력 제거 등 문장 재구성 처리, 한글 자모음 분리 및 재조함도 함께 처리함. + String resultParser = ComGetSpamStringParser.getSpamTextParse(tmpContents).trim(); + //List jasoList = HangulParser.disassemble(resultParser); + //String assembleStr = HangulParser.assemble(jasoList); + + System.out.println("++++++++++++++ spam resultParser ::: "+resultParser); + + //데이터베이스에 등록된 스팸문구와 일치하는 단어/문구가 있는지 체크함. + int spmCnt = 0; + for(String spmTxt : resultSpamTxt) { + + String parserStr = ComGetSpamStringParser.getSpamTextParse(spmTxt).trim(); + + if(resultParser.contains(parserStr)) { + + //스팸 단어/문구가 있으면 콤마로 연결시킨 후 리턴해줌. + spmFilterTxt += spmTxt + ","; + spmCnt++; + + } + + } + + if(spmCnt > 0) {//스팸문자가 포함되어 있으면 문자열 끝 , 단어 삭제 처리 + + if (StringUtil.getWordRight(spmFilterTxt.trim(), 1).equals(",")) { + // 처음부터 idx 만큼 잘라낸 나머지 글자 + spmFilterTxt = StringUtil.getWordLeft(spmFilterTxt.trim(), 1); + + } + + System.out.println("++++++++++++++ spmFilterTxt ::: "+spmFilterTxt); + + return spmFilterTxt; + + } + + //} + return ""; + } + } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 201b4c64..98cb0762 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -228,18 +228,128 @@ public class KakaoFriendsTalkSendController { } - /** - * @methodName : kakaoFriendsTalkMsgDataView - * @author : 우영두 - * @date : 2024.01.05 - * @description : kakaoFriendsTalkMsgDataView 카카오 친구톡 발송 화면 템플릿 팝업 리스트 조회 - * @param kakaoVO - * @param model - * @param response - * @return - * @throws Exception - */ + /** + * @Method Name : selectSpamKakaoFriendsTalkMsgChkAjax + * @작성일 : 2024. 1. 15. + * @작성자 : 우영두 + * @Method 설명 : 카카오 친구톡 전송시 스팸문구 확인 체크 + */ + @RequestMapping(value= {"/web/mjon/kakao/friendstalk/selectSpamKakaoFriendsTalkMsgChkAjax.do"}) + public ModelAndView selectSpamKakaoFriendsTalkMsgChkAjax(ModelMap model + , @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + try { + List resultSpamTxt = mjonMsgDataService.selectSpamKeywordList(); + System.out.println("친구톡 스팸 필터링"); + + if(resultSpamTxt == null) { + modelAndView.addObject("result", "listEmpty"); + return modelAndView; + }else { + //변환변수 포함(Y) 미포함(N) + String spmFilterTxt = ""; + + if(kakaoVO.getTxtReplYn().equals("Y")) { + List varValList = kakaoVO.getVarValList(); // value 값 + + String resultSpam = kakaoSendUtil.getKakaoFTCntRepToSpamFilter(varValList, resultSpamTxt, kakaoVO.getTemplateContent()); + + if(resultSpam.length() > 0) { + + modelAndView.addObject("result", "spams"); + return modelAndView; + + } + + if(kakaoVO.getSubMsgSendYn().equals("Y")) { + + String resultSmsTxtSpam = kakaoSendUtil.getKakaoFTCntRepToSpamFilter(varValList, resultSpamTxt, kakaoVO.getSmsTxtArea()); + + if(resultSmsTxtSpam.length() > 0) { + + modelAndView.addObject("result", "spams"); + return modelAndView; + + } + + } + + }else {//치환문자가 없는 경우 스팸 필터링 + + String resultSpam = kakaoSendUtil.getKakaoFTCntToSpamFilter(resultSpamTxt, kakaoVO.getTemplateContent()); + + if(resultSpam.length() > 0) { + + modelAndView.addObject("result", "spams"); + return modelAndView; + + } + + if(kakaoVO.getSubMsgSendYn().equals("Y")) { + + String resultSmsTxtSpam = kakaoSendUtil.getKakaoFTCntToSpamFilter(resultSpamTxt, kakaoVO.getSmsTxtArea()); + + if(resultSmsTxtSpam.length() > 0) { + + modelAndView.addObject("result", "spams"); + return modelAndView; + + } + + } + + } + + } + + }catch (Exception e) { + e.printStackTrace(); + modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.select")); + modelAndView.addObject("result", "fail"); + return modelAndView; + } + + return modelAndView; + } + /** + * @Method Name : kakaoFriendsTalkMsgSendAjax + * @작성일 : 2024. 1. 16. + * @작성자 : 우영두 + * @Method 설명 : 카카오 친구톡 전송 + */ + @RequestMapping(value= {"/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgSendAjax.do"}) + public ModelAndView kakaoFriendsTalkMsgSendAjax(ModelMap model + , @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + System.out.println("++++++++++++++++++++++ senderKey ::: "+kakaoVO.getSenderKey()); + System.out.println("++++++++++++++++++++++ imageType ::: "+kakaoVO.getImageType()); + System.out.println("++++++++++++++++++++++ imageTitle ::: "+kakaoVO.getImageTitle()); + System.out.println("++++++++++++++++++++++ imageLink ::: "+kakaoVO.getImageLink()); + System.out.println("++++++++++++++++++++++ imageFileName ::: "+kakaoVO.getImageFileName()); + System.out.println("++++++++++++++++++++++ adFlag ::: "+kakaoVO.getAdFlag()); + System.out.println("++++++++++++++++++++++ templateContents ::: "+kakaoVO.getTemplateContent()); + System.out.println("++++++++++++++++++++++ kakaoFtPrice ::: "+kakaoVO.getKakaoFtPrice()); + System.out.println("++++++++++++++++++++++ eachPrice ::: "+kakaoVO.getEachPrice()); + System.out.println("++++++++++++++++++++++ totPrice ::: "+kakaoVO.getTotalPrice()); + + List varValList = new ArrayList(); + + System.out.println(kakaoVO.getTxtReplYn()); + + /*for(List varValList : kakaoVO.getVarValList()) { + + + } */ + + + return modelAndView; + } + } diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index f9cb8fb5..a86bda38 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -4,7 +4,7 @@ <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> - +<%@ page import="itn.com.cmm.LoginVO" %> @@ -17,6 +17,8 @@ @@ -719,8 +1407,30 @@ function fn_noTimeSend(){ + + + + + + + + + + + + + + + + + + + + + +
@@ -1204,7 +1914,7 @@ function fn_noTimeSend(){

대체문자

- +
@@ -1249,7 +1959,7 @@ function fn_noTimeSend(){ 0 / 90byte

- 단문 + 단문
@@ -1258,7 +1968,6 @@ function fn_noTimeSend(){ -

* 현재 [단문] 0건 발송 가능합니다.

From 0e09cb08869bd317ab797a4e12e764f28ed73956 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Wed, 17 Jan 2024 16:49:59 +0900 Subject: [PATCH 18/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=B0=8F=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80=EC=8B=9C=20Json=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1=20=EA=B0=9C=EB=B0=9C=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/kakao/kakaoComm/KakaoSendUtil.java | 2 +- .../kakaoComm/kakaoApi/KakaoApiJsonSave.java | 113 +++++++++++++++++- 2 files changed, 109 insertions(+), 6 deletions(-) diff --git a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java index c48c9030..3b148446 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java +++ b/src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java @@ -475,7 +475,7 @@ public class KakaoSendUtil { if( kakaoVO.getVarValList().size() != 0) { varValInfo = kakaoVO.getVarValList().get(count); } - String jsonFileName = kakaoApiJsonSave.kakaoApiJsonSave(kakaoVO, varValInfo); + String jsonFileName = kakaoApiJsonSave.kakaoApiFTJsonSave(kakaoVO); // String jsonFileName = kakaoApiJsonSave.kakaoApiJsonSave(kakaoVO, kakaoVO.getVarValList().get(count)); setSendMsgVO.setBizJsonName(jsonFileName); //json 파일명 } diff --git a/src/main/java/itn/let/kakao/kakaoComm/kakaoApi/KakaoApiJsonSave.java b/src/main/java/itn/let/kakao/kakaoComm/kakaoApi/KakaoApiJsonSave.java index 53b6cb92..2312ac1a 100644 --- a/src/main/java/itn/let/kakao/kakaoComm/kakaoApi/KakaoApiJsonSave.java +++ b/src/main/java/itn/let/kakao/kakaoComm/kakaoApi/KakaoApiJsonSave.java @@ -3,18 +3,14 @@ package itn.let.kakao.kakaoComm.kakaoApi; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; -import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; -import org.json.simple.JSONObject; import org.json.simple.JSONArray; - +import org.json.simple.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -159,4 +155,111 @@ public class KakaoApiJsonSave { } return jsonFileName; } + + /* + * 친구톡 발송시 이미지, 버튼 추가에 따른 Json 파일 생성 + * 2024.01.17 + * 우영두 + * 파일은 하나만 생성해서 동일하게 사용함. + * + * */ + @SuppressWarnings("unchecked") + public String kakaoApiFTJsonSave(KakaoVO kakaoVO) { + // json파일 저장 + + Date nowDate = new Date(); + SimpleDateFormat todayFrom = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat timeFrom = new SimpleDateFormat("HHmmss"); + String jsonFileName = mjonBizJsonDir+"/"+kakaoVO.getUserId()+"/"+todayFrom.format(nowDate)+"/"+kakaoVO.getSendType(); // 아이디/날짜/타입 + + String fileName = timeFrom.format(nowDate)+"_"+kakaoVO.getMsgGroupId()+".json"; + + try { + + File userIdFile = new File(jsonFileName); + if(!userIdFile.exists()) { + userIdFile.mkdirs(); // 없으면 하위 디렉토리 까지 생성 + jsonFileName = jsonFileName +"/"+fileName; + }else { + + jsonFileName = jsonFileName +"/"+fileName; + System.out.println("jsonFileName : "+jsonFileName); + File file1 = new File(jsonFileName); + if (file1.isFile()) { + return jsonFileName; + } + } + + //KakaoReturnVO templateDetail = kakaoApiTemplate.selectKakaoApiTemplateDetail(kakaoVO); + + // 버튼리스트 JSON 생성 + JSONArray buttonList = new JSONArray(); + for(KakaoButtonVO buttonInfoVO : kakaoVO.getButtonVOList()) { + JSONObject buttonInfo = new JSONObject(); + + buttonInfo.put("name", buttonInfoVO.getName()); + buttonInfo.put("type", buttonInfoVO.getLinkType()); + + if(buttonInfoVO.getLinkType().equals("WL")) { + buttonInfo.put("url_mobile", buttonInfoVO.getLinkMo()); + buttonInfo.put("url_pc", buttonInfoVO.getLinkPc()); + }else if(buttonInfoVO.getLinkType().equals("AL")) { + buttonInfo.put("scheme_ios", buttonInfoVO.getLinkIos()); + buttonInfo.put("scheme_android", buttonInfoVO.getLinkAnd()); + }else if(buttonInfoVO.getLinkType().equals("BC")) { + // 상담톡 진행시 등록해야함 + }else if(buttonInfoVO.getLinkType().equals("BT")) { + // 봇 전환 시 전달 + } + buttonList.add(buttonInfo); + } + + // 강조유형 JSON 생성 + JSONObject templateImageInfo = new JSONObject(); + JSONObject templateImageExtInfo = new JSONObject(); + String imageType = kakaoVO.getImageType(); + + if(!imageType.equals("")) { + templateImageInfo.put("img_url", kakaoVO.getTemplateImageUrl()); + templateImageInfo.put("img_link", kakaoVO.getImgLink()); + } + + if(imageType.equals("W")) { + templateImageExtInfo.put("wide", "Y"); + } + + + JSONObject jo = new JSONObject(); + + if(buttonList.size() != 0) { + jo.put("button", buttonList); + } + + if(templateImageInfo.size() != 0) { + jo.put("image", templateImageInfo); + } + + if(templateImageExtInfo.size() != 0) { + jo.put("extra", templateImageExtInfo); + } + + // 입력 json 데이터를 파일로 변경 + String jsonStr = jo.toString(); + System.out.println("jsonFileName : "+jsonFileName); + + File outPut = new File(jsonFileName); + outPut.createNewFile(); + + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outPut), "utf-8")); + bw.write(jsonStr); + bw.close(); + + } catch (IOException e) { + System.out.println("json 생성 실패"); + e.printStackTrace(); + } + return jsonFileName; + } + + } From 97e46070598a75ea830cdef37286b06ce9744cee Mon Sep 17 00:00:00 2001 From: rosewiper Date: Wed, 17 Jan 2024 17:46:24 +0900 Subject: [PATCH 19/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=ED=86=A1=20label=20=ED=83=9C=EA=B7=B8=20=EA=B0=92=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=20-=20id=EA=B0=92=EA=B3=BC=20=EB=B6=88?= =?UTF-8?q?=EC=9D=BC=EC=B9=98=20=ED=95=98=EA=B1=B0=EB=82=98=20=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=B6=94=EA=B0=80=ED=95=98?= =?UTF-8?q?=EC=98=80=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msgdata/at/KakaoAlimtalkMsgDataView.jsp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp index 3aab2cc0..a4a8d23c 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp @@ -1239,7 +1239,7 @@ function checkNumber(event) { diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp index d967af8e..278ab422 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp @@ -720,9 +720,8 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp index 1addf48b..d7accea9 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp @@ -665,9 +665,8 @@ $(document).on('click', '.symbolButton, .changeWord', function (){ From dbc65c55670d6c54b11424cd23374954ae3192f3 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 19 Jan 2024 15:38:14 +0900 Subject: [PATCH 25/33] =?UTF-8?q?=EC=95=8C=EB=A6=BC=ED=86=A1=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=EA=B2=B0=EA=B3=BC=20=EB=A9=94=EC=84=B8=EC=A7=80=20?= =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp | 4 ++-- .../jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp index a4a8d23c..2efc0a9e 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp @@ -1178,11 +1178,11 @@ function checkNumber(event) { - - - - + + + + + + + <%-- - - - - + + + + + + + <%-- - + @@ -5254,7 +5254,7 @@ function fnInputSmiBlockMemo(){ - + @@ -5263,7 +5263,7 @@ function fnInputSmiBlockMemo(){ - + @@ -5729,6 +5729,10 @@ function fnInputSmiBlockMemo(){ + + + +
채널ID - +
- + @@ -1285,7 +1285,7 @@ function checkNumber(event) {
- +
@@ -1399,7 +1399,7 @@ function checkNumber(event) {
발신번호 - + - +
- + - + - +
@@ -1720,7 +1720,7 @@ function checkNumber(event) {
- + From 11e92e351cdddf1ad4bc80b23f826c75a9b6443e Mon Sep 17 00:00:00 2001 From: rosewiper Date: Wed, 17 Jan 2024 18:13:17 +0900 Subject: [PATCH 20/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EB=B0=9C=EC=86=A1=20=EB=8B=A8=EA=B0=80=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EC=A3=BC=EC=84=9D=20=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java index 13a1e918..57f01b11 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java @@ -569,6 +569,13 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements // 등록되어 있는 그룹데이터가 없으면 insert, 있으면 update를 진행한다. if(msgGroupDataCnt < 1) { mjonMsgDAO.insertGroupMsgData(mjonMsgVO); + + /* + * 현재 발송하는 카카오 친구톡 및 문자(단/장문) 발송 금액 정보를 mj_msg_group_id와 함께 디비에 저장해준다. + * 환불할 때 각 단가를 사용하기 때문에 별도로 저장함. + * 히스토리 기록을 위해서도 사용할 수 있을것 같음 + * + * */ kakaoAlimTalkDAO.insertKakaoSendPrice(kakaoVO); }else { mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO); From e357b1436ae3754d31996242149b2384d6e9890f Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 18 Jan 2024 14:25:11 +0900 Subject: [PATCH 21/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=99=98=EB=B6=88=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=B6=94=EA=B0=80=20=20-=20?= =?UTF-8?q?=EC=95=84=EC=A7=81=20=EC=8A=A4=EC=BC=80=EC=A4=84=EB=9F=AC?= =?UTF-8?q?=EC=97=90=EB=8A=94=20=EC=B6=94=EA=B0=80=20=EC=95=88=ED=96=88?= =?UTF-8?q?=EC=9D=8C=20=20-=20=EC=A0=84=EC=86=A1=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=EC=97=90=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20URL?= =?UTF-8?q?=EB=A1=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kakaoAt/service/KakaoAlimTalkService.java | 3 + .../service/impl/KakaoAlimTalkDAO.java | 19 ++- .../impl/KakaoAlimTalkServiceImpl.java | 46 ++++++- .../web/KakaoFriendsTalkSendController.java | 116 ++++++++++-------- .../itn/let/mjo/mjocommon/MjonCommon.java | 2 +- .../let/mjo/kakao/Kakao_AT_SQL_Mysql.xml | 44 +++++++ .../ft/KakaoFriendsTalkMsgDataView.jsp | 15 ++- 7 files changed, 183 insertions(+), 62 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java index 95a8160d..c19695ea 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java @@ -22,4 +22,7 @@ public interface KakaoAlimTalkService { //카카오 알림톡 전송 실패 환불리스트 조회 public void selectKakaoAtSentRefundList() throws Exception; + //카카오 친구톡 전송 실패 환불리스트 조회 + public void selectKakaoFtSentRefundList() throws Exception; + } diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java index ed896167..6a661ac3 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java @@ -7,7 +7,6 @@ import org.springframework.stereotype.Repository; import egovframework.rte.psl.dataaccess.EgovAbstractDAO; import itn.let.kakao.kakaoComm.KakaoVO; -import itn.let.mjo.msg.service.MjonMsgVO; @Repository("kakaoAlimTalkDAO") public class KakaoAlimTalkDAO extends EgovAbstractDAO { @@ -62,6 +61,11 @@ public class KakaoAlimTalkDAO extends EgovAbstractDAO { return (List) list("kakaoAlimTalkDAO.selectKakaoAtSentRefundList"); } + @SuppressWarnings("unchecked") + public List selectKakaoFtSentRefundList() throws Exception{ + return (List) list("kakaoAlimTalkDAO.selectKakaoFtSentRefundList"); + } + public KakaoVO selectKakaoAtUmid(KakaoVO kakaoVO) throws Exception{ return (KakaoVO) select("kakaoAlimTalkDAO.selectKakaoAtUmid", kakaoVO); } @@ -77,4 +81,17 @@ public class KakaoAlimTalkDAO extends EgovAbstractDAO { public void updateKakaoAtNotSend(KakaoVO kakaoVO) { select("kakaoAlimTalkDAO.updateKakaoAtNotSend", kakaoVO); } + + + public void updateKakaoFtSend(KakaoVO kakaoVO) { + select("kakaoAlimTalkDAO.updateKakaoFtSend", kakaoVO); + } + + public void updateKakaoFtSubMsgSend(KakaoVO kakaoVO) { + select("kakaoAlimTalkDAO.updateKakaoFtSubMsgSend", kakaoVO); + } + + public void updateKakaoFtNotSend(KakaoVO kakaoVO) { + select("kakaoAlimTalkDAO.updateKakaoFtNotSend", kakaoVO); + } } diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java index 57f01b11..71a171a3 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java @@ -599,7 +599,10 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements } - + /* + * 카카오 알림톡 발송 실패에 따른 금액 환불 처리 + * + * */ @Override public void selectKakaoAtSentRefundList() throws Exception { @@ -629,4 +632,45 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements } } } + + + /* + * 카카오 친구톡 발송 실패에 따른 금액 환불 처리 + * 카카오 친구톡 대체문자 선택에 대해 성공시 친구톡과 문자 간 금액 차액의 환불도 처리 됨. + * */ + @Override + public void selectKakaoFtSentRefundList() throws Exception { + + /** + * 1. 카카오 FT 전송성공 확인 + * 2. 카카오 FT 전송실패, 대채문자 전송확인 + * 3. 카카오 FT 전송 실패 확인 + */ + List kakaoFtSentRefundList = kakaoAlimTalkDAO.selectKakaoFtSentRefundList(); + + for(KakaoVO vo : kakaoFtSentRefundList) { + System.out.println(vo.getMsgGroupId() +"________결과 : " +vo.getRsltCode() +" 대체문자 전송 : "+vo.getSubMsgSendYn()); + + if(vo.getRsltCode().equals("7000")) {//친구톡 발송 성공시 + + kakaoAlimTalkDAO.updateKakaoFtSend(vo); + + }else if(vo.getSubMsgSendYn().equals("Y")) {//친구톡 발송 실패 했을 경우 + + //대체문자 발송 UMID 번호 조회 - 알림톡 쿼리 동일하게 사용 + KakaoVO info = kakaoAlimTalkDAO.selectKakaoAtUmid(vo); + + System.out.println("대체문자 전송 : " + info.getBizUmid()); + + if (info.getBizUmid() != null) {//대체문자 발송 완료인 경우 + kakaoAlimTalkDAO.updateKakaoAtSubMsgSend(vo); + }else { + kakaoAlimTalkDAO.updateKakaoFtNotSend(vo); + } + + }else { + kakaoAlimTalkDAO.updateKakaoFtNotSend(vo); + } + } + } } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 79d41766..e479e055 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -25,19 +25,22 @@ import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.util.MJUtil; import itn.com.utl.fcc.service.EgovStringUtil; -import itn.let.kakao.kakaoComm.KakaoButtonVO; import itn.let.kakao.kakaoComm.KakaoSendUtil; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService; +import itn.let.mjo.mjocommon.MjonCommon; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; import itn.let.mjo.symbol.service.MjonSymbolService; import itn.let.mjo.symbol.service.MjonSymbolVO; +import itn.let.sym.site.service.EgovSiteManagerService; +import itn.let.sym.site.service.JoinSettingVO; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; +import itn.let.uss.umt.service.UserManageVO; @Controller public class KakaoFriendsTalkSendController { @@ -68,6 +71,10 @@ public class KakaoFriendsTalkSendController { @Resource(name = "kakaoAlimTalkService") private KakaoAlimTalkService kakaoAlimTalkService; + /** 사이트 설정 */ + @Resource(name = "egovSiteManagerService") + EgovSiteManagerService egovSiteManagerService; + @Autowired KakaoSendUtil kakaoSendUtil; @@ -583,71 +590,74 @@ public class KakaoFriendsTalkSendController { } catch (Exception e) { System.out.println("kakaoFriendsTalkMsgSendAjax Controller Error !!!! "+e); + modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.update")); + modelAndView.addObject("result", "fail"); + return modelAndView; } - System.out.println("++++++++++++++++++++++ senderKey ::: "+kakaoVO.getSenderKey()); - System.out.println("++++++++++++++++++++++ imageType ::: "+kakaoVO.getImageType()); - System.out.println("++++++++++++++++++++++ imageTitle ::: "+kakaoVO.getImageTitle()); - System.out.println("++++++++++++++++++++++ imageLink ::: "+kakaoVO.getImageLink()); - System.out.println("++++++++++++++++++++++ imageFileName ::: "+kakaoVO.getImageFileName()); - System.out.println("++++++++++++++++++++++ adFlag ::: "+kakaoVO.getAdFlag()); - System.out.println("++++++++++++++++++++++ templateContents ::: "+kakaoVO.getTemplateContent()); - System.out.println("++++++++++++++++++++++ templateImageUrl ::: "+kakaoVO.getTemplateImageUrl()); - System.out.println("++++++++++++++++++++++ kakaoFtPrice ::: "+kakaoVO.getKakaoFtPrice()); - System.out.println("++++++++++++++++++++++ eachPrice ::: "+kakaoVO.getEachPrice()); - System.out.println("++++++++++++++++++++++ totPrice ::: "+kakaoVO.getTotalPrice()); + modelAndView.addObject("message", "친구톡 전송이 완료되었습니다."); + modelAndView.addObject("result", "success"); + modelAndView.addObject("resultSts", resultSts); - for(KakaoButtonVO buttonVO : kakaoVO.getButtonVOList()) { +/** 카카오 친구톡 발송 내용 법인폰, 친구톡 결과 처리 --------------------------------------------------*/ + try { + String adminSmsNoticeYn = "Y"; + String spamStatus = kakaoVO.getAtSmishingYn(); // 스미싱 의심으로 체크된 고객 정보 - System.out.println("++++++++++++++ button Name ::: "+buttonVO.getName()); - System.out.println("++++++++++++++ button type :::"+ buttonVO.getLinkType()); - System.out.println("++++++++++++++ button pc :::"+ buttonVO.getLinkPc()); - System.out.println("++++++++++++++ button mobile :::"+ buttonVO.getLinkMo()); - System.out.println("++++++++++++++ button android :::"+ buttonVO.getLinkAnd()); - System.out.println("++++++++++++++ button ios :::"+ buttonVO.getLinkIos()); + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberId(userId); + if(!userId.equals("")) { + userManageVO = userManageService.selectAdminSmsNoticeYn(userManageVO); + adminSmsNoticeYn = userManageVO.getAdminSmsNoticeYn(); + } + + //법인폰 알림 온 이거나 스미싱의심 문자인 경우 법인폰으로 발송 + if(adminSmsNoticeYn.equals("Y") || spamStatus.equals("Y")) { + + if(spamStatus.equals("Y")) { + kakaoVO.setAtDelayYn("Y"); + } + + // 법인폰 알람여부 체크 + JoinSettingVO joinSettingVO = new JoinSettingVO(); + joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + //Slack으로 메세지 전송 처리 + MjonCommon comm = new MjonCommon(); + comm.getAdminKakaoAtSandSlack(kakaoVO); + } + } + + } catch (Exception e) { + throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e); } - List varValList = new ArrayList(); - System.out.println("+++++++++++++++ txtReplYn ::: "+kakaoVO.getTxtReplYn()); - - varValList = kakaoVO.getVarValList(); - - for(int i=0; i < varValList.size(); i++) { - - - String tmpVar = varValList.get(i)[0]; - System.out.println("+++++++++++++ tmpVar ::: "+tmpVar); - - } - - for(String callTo : kakaoVO.getCallToList()) { - - System.out.println("++++++++++++ callTo ::: "+callTo); - - } - - System.out.println("++++++++++++++++ spamStatus ::: "+kakaoVO.getSpamStatus()); - - System.out.println("++++++++++++++++ 대체문자 사용 여부 ::: "+kakaoVO.getSubMsgSendYn()); - - System.out.println("++++++++++++++++ 발신번호 ::: "+kakaoVO.getCallFrom()); - System.out.println("++++++++++++++++ 대체문자 내용 ::: "+kakaoVO.getSmsTxtArea()); - - System.out.println("++++++++++++++++ 대체문자 타입 ::: "+kakaoVO.getSubMsgType()); - - System.out.println("++++++++++++++++ 예약문자 여부 ::: "+kakaoVO.getReserveYn()); - - System.out.println("++++++++++++++++ 예약 시간 ::: "+kakaoVO.getReqDate()); - - System.out.println("++++++++++++++++ json 필요 유무 ::: "+kakaoVO.getBizJsonYn()); + return modelAndView; + } + + + /** + * @Method Name : kakaoFriendsTalkMsgSendRefundTestAjax + * @작성일 : 2024. 1. 18. + * @작성자 : 우영두 + * @Method 설명 : 카카오 친구톡 전송 환불 스케줄러 서비스 테스트 + */ + @RequestMapping(value= {"/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgSendRefundTestAjax.do"}) + public ModelAndView kakaoFriendsTalkMsgSendRefundTestAjax(ModelMap model + , HttpServletRequest request + , @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + kakaoAlimTalkService.selectKakaoFtSentRefundList(); modelAndView.addObject("result", "success"); - modelAndView.addObject("resultSts", kakaoVO.getCallToList().length); return modelAndView; } diff --git a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java index 05fe6224..72e3d3f7 100644 --- a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java +++ b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java @@ -280,7 +280,7 @@ public class MjonCommon { if(kakaoVO.getMsgType().equals("8")) { msgType = "[알림톡]"; }else if(kakaoVO.getMsgType().equals("9")){ - + msgType = "[테스트중][친구톡]"; } sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType; diff --git a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_AT_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_AT_SQL_Mysql.xml index 77ea6d3a..9ff146a3 100644 --- a/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_AT_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_AT_SQL_Mysql.xml @@ -103,6 +103,32 @@ AND MMD.MSG_TYPE = 8 + + - + @@ -1501,8 +1503,8 @@ function msgSuccessClose(obj){ - - + + @@ -2074,7 +2076,7 @@ function msgSuccessClose(obj){

내용 미리보기

- +
diff --git a/src/main/webapp/js/kakao/templateComm.js b/src/main/webapp/js/kakao/templateComm.js index 793eb7bb..a327838e 100644 --- a/src/main/webapp/js/kakao/templateComm.js +++ b/src/main/webapp/js/kakao/templateComm.js @@ -88,6 +88,9 @@ function setContentsLengForFriends(contents){ $('.template_text').show(); if(repContent != ''){ $('.template_text').html(repContent); + $('#smsTxtArea').val( + $('.template_text').html().trim().replace(/(
||
)/g, '\r\n') + ); }else{ $('.template_text').html("내용 미리보기"); } From feb9d37202add0e1cbf5f1fe446b9e0343ce8a1b Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 19 Jan 2024 14:48:44 +0900 Subject: [PATCH 23/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=ED=8C=9D=EC=97=85=20=EB=B0=8F=20=EB=B0=9C=EC=86=A1?= =?UTF-8?q?=20=EC=B2=98=EB=A6=AC=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/KakaoFriendsTalkSendController.java | 52 +++ src/main/webapp/WEB-INF/decorators.xml | 1 + .../at/KakaoAlimtalkMsgDataTestPop.jsp | 6 +- .../ft/KakaoFriendsTalkMsgDataTestPop.jsp | 221 +++++++++++++ .../ft/KakaoFriendsTalkMsgDataView.jsp | 306 ++++++++++++++++-- 5 files changed, 551 insertions(+), 35 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataTestPop.jsp diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index e479e055..c45ab844 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -661,4 +661,56 @@ public class KakaoFriendsTalkSendController { return modelAndView; } + /** + * @Method Name : kakaoFriendsTalkMsgSendRefundTestAjax + * @작성일 : 2024. 1. 18. + * @작성자 : 우영두 + * @Method 설명 : 카카오 친구톡 전송 환불 스케줄러 서비스 테스트 + */ + @RequestMapping(value= {"/web/mjon/kakao/friendstalk/selectKakaoFriendsTalkTestSendPopup.do"}) + public String selectKakaoFriendsTalkTestSendPopup(ModelMap model + , @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception { + + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + if(userId == "") { + return "redirect:/web/user/login/login.do"; + }else { + //1.시스템 기본 단가 정보 불러오기 + JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); + + //2.사용자 개인 단가 정보 불러오기 + MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(userId); + Float kakaoFtPrice = mberManageVO.getKakaoFtPrice(); + + if(kakaoFtPrice < 1) { + kakaoFtPrice = sysJoinSetVO.getKakaoFtPrice(); + } + + BigDecimal userMoney = new BigDecimal(mberManageVO.getUserMoney()).setScale(2, RoundingMode.HALF_EVEN); + model.addAttribute("userMoney", userMoney); + model.addAttribute("kakaoFtPrice", kakaoFtPrice); + } + + String tmpContents = kakaoVO.getTemplateContent(); + String txtReplYn = kakaoVO.getTxtReplYn(); + + if(txtReplYn.equals("Y")) { + + String[] varValStr = kakaoVO.getVarValList().get(0); + tmpContents = kakaoSendUtil.getKakaoFTCntReplace(varValStr[0], tmpContents); + + kakaoVO.setTemplateContent(tmpContents); + + } + + System.out.println("++++++++++++++ tmpContents ::: "+tmpContents); + + model.addAttribute("kakaoVO", kakaoVO); + + return "web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataTestPop"; + } + + } diff --git a/src/main/webapp/WEB-INF/decorators.xml b/src/main/webapp/WEB-INF/decorators.xml index 78fdba3c..38c86778 100644 --- a/src/main/webapp/WEB-INF/decorators.xml +++ b/src/main/webapp/WEB-INF/decorators.xml @@ -183,6 +183,7 @@ */web/pop/* /web/mjon/kakao/template/selectKakaoAlimtalkTemplateListPopupAjax.do /web/mjon/kakao/alimtalk/selectKakaoAlimtalkTemplateDataTestPopup.do + /web/mjon/kakao/friendstalk/selectKakaoFriendsTalkTestSendPopup.do /web/mjon/fax/faxSendDetailPopup.do diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataTestPop.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataTestPop.jsp index bca84c71..1978ab87 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataTestPop.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataTestPop.jsp @@ -134,7 +134,7 @@
- 친구톡 수정 + 알림톡 도착
@@ -195,10 +195,10 @@ -
+

※ 단말기 설정에 따라 다르게 보일 수 있습니다

diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataTestPop.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataTestPop.jsp new file mode 100644 index 00000000..06ba0dd7 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataTestPop.jsp @@ -0,0 +1,221 @@ +<%@ 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 prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> +<% pageContext.setAttribute("newLineChar", "\r\n"); %> +<% pageContext.setAttribute("newLineChar2", "\n"); %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
    +
  • 테스트 발송은 친구톡을 본인에게 발송하여 친구톡 내용을 미리 확인하는 서비스 입니다.
  • +
+
+
+
+
+
+
수신번호
+
+ +
+
+
+
발송금액
+
${kakaoFtPrice}
+
+

발송하시겠습니까?※ 친구톡 발송과 동일하게 요금이 차감됩니다.

+ +
+
+
+

+ ${kakaoVO.yellowId} +

+ +
+
+ 친구톡 +
+
+ + +
+ +
+
+ +

+ +

+ + + + + +
+
+ + + + +
+

※ 단말기 설정에 따라 다르게 보일 수 있습니다

+

+
+
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index 1a848ef5..670e84fa 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -785,37 +785,8 @@ function fn_sendMsgData(){ //이미지 첨부 체크 var imgChk = $("input[name=img_file_add]:checked").val(); - if(imgChk == 'I' || imgChk == 'W'){ - - var imgTitle = $("#imgTitle").val(); - var imgLink = $("#imgLink").val(); - var imgFileName = $("#imageFileName").val(); - - if(imgTitle == ''){ - - alert("친구톡 이미지 제목정보를 입력해 주세요."); - return false; - - } - - if(imgLink == ''){ - - alert("친구톡 이미지 선택시 이동할 링크 주소를 입력해 주세요."); - return false; - - } - - if(imgFileName == ''){ - - alert("친구톡 이미지를 등록해 주세요."); - return false; - - } - - $("#imageType").val(imgChk); - - //json 파일 필요 유무 셋팅 - $("#bizJsonYn").val("Y"); + if(!getFtImageType(imgChk)){ + return false; } //템플릿 버튼 갯수 체크 @@ -1434,6 +1405,275 @@ function msgSuccessClose(obj){ $('html').scrollTop(0); } +function getFtImageType(imgChk){ + + if(imgChk == 'I' || imgChk == 'W'){ + + var imgTitle = $("#imgTitle").val(); + var imgLink = $("#imgLink").val(); + var imgFileName = $("#imageFileName").val(); + + if(imgTitle == ''){ + + alert("친구톡 이미지 제목정보를 입력해 주세요."); + return false; + + } + + if(imgLink == ''){ + + alert("친구톡 이미지 선택시 이동할 링크 주소를 입력해 주세요."); + return false; + + } + + if(imgFileName == ''){ + + alert("친구톡 이미지를 등록해 주세요."); + return false; + + } + + $("#imageType").val(imgChk); + + //json 파일 필요 유무 셋팅 + $("#bizJsonYn").val("Y"); + } + + return true; + +} + + +function goToKakaoTestPopUp(){ + + if(loginVO == "" || loginVO == null){ + alert("테스트 발송 서비스는 로그인 후 이용 가능합니다."); + location.href=""; + return false; + } + + //기업회원 체크 + if(!usrDeptChk()){ + return false; + } + + var form = document.bizForm; + var senderKey = $("#selectAgentCode option:checked").val(); + var yellowId = $("#selectAgentCode option:checked").text(); + + if(senderKey == ''){ + alert("채널ID를 선택해 주세요."); + return false; + }else{ + $("#inputSenderKey").val(senderKey); + $("#yellowId").val(yellowId); + } + + var imgChk = $("input[name=img_file_add]:checked").val(); + if(!getFtImageType(imgChk)){ + return false; + } + + //템플릿 버튼 갯수 체크 + var buttonCnt = $(".btn_kakao_type").length; + + if(buttonCnt > 0){ + //json 파일 필요 유무 셋팅 + $("#bizJsonYn").val("Y"); + } + + //친구톡 내용 체크 + var tmpContents = $('#inputTemplateContent').val(); + + if(tmpContents == ""){ + + alert("친구톡 내용을 입력해 주세요."); + return false; + + }else{ + + //템플릿 내용 입력 + $("#templateContent").val(tmpContents); + + } + + var rtnStr = strChinJpnCheck(tmpContents); + + //문자내용에 이모지가 있는지 체크 + if(!emojiCheck(tmpContents)) return false; + + if(rtnStr.length > 0){ + + alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다."); + + } + + + var selectedData = tableL.getRows(); + + if(selectedData == "" || selectedData == null){ + + alert("받는사람 주소를 한 건 이상 입력해주세요."); + return false; + + }else{ + + //치환문구 변환 + var txtReplYn = $("#txtReplYn").val(); + + if(txtReplYn == 'Y'){ + + var name = tableL.getRows()[0].getData().name; + var phone = removeDash(tableL.getRows()[0].getData().phone); + var rep1 = tableL.getRows()[0].getData().rep1; + var rep2 = tableL.getRows()[0].getData().rep2; + var rep3 = tableL.getRows()[0].getData().rep3; + var rep4 = tableL.getRows()[0].getData().rep4; + + var varValList = []; //치환문자 연결시킬 변수 셋팅 + + + var nmStatus = false; + var rep1Status = false; + var rep2Status = false; + var rep3Status = false; + var rep4Status = false; + + var varValStr = ""; + var varValStatus = true; + + + if(tmpContents.indexOf("\#{이름}") > -1){ + nmStatus = true; + } + + if(tmpContents.indexOf("\#{1}") > -1){ + rep1Status = true; + } + + if(tmpContents.indexOf("\#{2}") > -1){ + rep2Status = true; + } + + if(tmpContents.indexOf("\#{3}") > -1){ + rep3Status = true; + } + + if(tmpContents.indexOf("\#{4}") > -1){ + rep4Status = true; + } + + + if(nmStatus && (typeof(name) != 'undefined' && name != null && name !="")){ + + if(varValStr == ''){ + varValStr = name.replaceAll(",","§"); + }else{ + varValStr = varValStr + "¶" + name.replaceAll(",","§"); + } + + }else{ + + if(nmStatus){ + varValStatus = false; + } + + } + + if(varValStr == ''){ + varValStr = phone; + }else{ + varValStr = varValStr + "¶" + phone; + } + + if(rep1Status && (typeof(rep1) != 'undefined' && rep1 != null && rep1 !="")){ + + if(varValStr == ''){ + varValStr = rep1.replaceAll(",","§"); + }else{ + varValStr = varValStr + "¶" + rep1.replaceAll(",","§"); + } + + }else{ + + if(rep1Status){ + varValStatus = false; + } + + } + + + if(rep2Status && (typeof(rep2) != 'undefined' && rep2 != null && rep2 !="")){ + + if(varValStr == ''){ + varValStr = rep2.replaceAll(",","§"); + }else{ + varValStr = varValStr + "¶" + rep2.replaceAll(",","§"); + } + + }else{ + + if(rep2Status){ + varValStatus = false; + } + + } + + if(rep3Status && (typeof(rep3) != 'undefined' && rep3 != null && rep3 !="")){ + + if(varValStr == ''){ + varValStr = rep3.replaceAll(",","§"); + }else{ + varValStr = varValStr + "¶" + rep3.replaceAll(",","§"); + } + + }else{ + + if(rep3Status){ + varValStatus = false; + } + + } + + if(rep4Status && (typeof(rep4) != 'undefined' && rep4 != null && rep4 !="")){ + + if(varValStr == ''){ + varValStr = rep4.replaceAll(",","§"); + }else{ + varValStr = varValStr + "¶" + rep4.replaceAll(",","§"); + } + + }else{ + + if(rep4Status){ + varValStatus = false; + } + + } + + if(!varValStatus){ + + alert("특정문구 일괄변환에 대한 일부 데이터가 누락된 부분이 있습니다. 데이터를 확인해 주세요."); + return false; + + } + + varValList[0] = varValStr; + + $("#varValList").val(varValList); + } + + } + + form.method = "post"; + window.open("about:blank", 'testSendPop', 'width=770, height=850, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1'); + form.target = "testSendPop"; + form.action = "/web/mjon/kakao/friendstalk/selectKakaoFriendsTalkTestSendPopup.do"; + form.submit(); +} + + @@ -1509,6 +1749,8 @@ function msgSuccessClose(obj){ + +
@@ -2109,7 +2351,7 @@ function msgSuccessClose(obj){ - +
From ed83ac15db8c5cdc05ac594db37ec3065ca12c83 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Fri, 19 Jan 2024 15:32:16 +0900 Subject: [PATCH 24/33] =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EA=B4=91=EA=B3=A0=20=EB=A9=94=EC=84=B8?= =?UTF-8?q?=EC=A7=80=20=ED=94=BD=EC=8A=A4=20=EB=B0=8F=20=EB=B0=9C=EC=86=A1?= =?UTF-8?q?=20=EC=8B=A4=ED=8C=A8=20=ED=99=98=EB=B6=88=20=EC=8A=A4=EC=BC=80?= =?UTF-8?q?=EC=A4=84=EB=9F=AC=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kakaoFt/web/KakaoFriendsTalkSendController.java | 2 -- .../service/impl/SchdlrManageServiceImpl.java | 4 ++++ .../msgdata/ft/KakaoFriendsTalkMsgDataView.jsp | 13 ++++++++++++- .../template/ft/KakaoFriendstalkTemplateDetail.jsp | 5 ++--- .../template/ft/KakaoFriendstalkTemplateRegist.jsp | 5 ++--- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index c45ab844..5f294815 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -705,8 +705,6 @@ public class KakaoFriendsTalkSendController { } - System.out.println("++++++++++++++ tmpContents ::: "+tmpContents); - model.addAttribute("kakaoVO", kakaoVO); return "web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataTestPop"; diff --git a/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java b/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java index 1cf03a14..ac33f8b4 100644 --- a/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java +++ b/src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java @@ -420,8 +420,12 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements //카카오 환불 처리 리스트 public void kakaoFailPayBack() throws Exception { + //카카오 알림톡 환불 처리 kakaoAlimTalkService.selectKakaoAtSentRefundList(); + //카카오 친구톡 환불 처리 + kakaoAlimTalkService.selectKakaoFtSentRefundList(); + } } diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp index 670e84fa..71a62deb 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp @@ -1674,6 +1674,17 @@ function goToKakaoTestPopUp(){ } +function msgResultLink(){ + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 + if(reserYn == 'Y'){ + + location.href="/web/mjon/reservmsg/selectReservKaKaoView.do"; + + }else{ + location.href="/web/kakao/sent/selectKakaoSentView.do"; + } +} + @@ -1831,7 +1842,7 @@ function goToKakaoTestPopUp(){
광고포함 여부 checked > - checked > + <%-- checked > --%>
광고포함 여부 - checked > - checked > + checked > + <%-- checked > --%>
광고포함 여부 - - + +
템플릿명 -
- '); return false;" value="템플릿 상세보기"> -
-
템플릿명 +
+ '); return false;" value="템플릿 상세보기"> +
+
발신번호 diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATModify.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATModify.jsp index b0a91382..d75bf37b 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATModify.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATModify.jsp @@ -358,14 +358,17 @@ function fnTemplateDetail(templateCode){
템플릿명 -
- '); return false;" value="템플릿 상세보기"> -
-
템플릿명 +
+ '); return false;" value="템플릿 상세보기"> +
+
발신번호 From 2fdf104101e13a33ba77295e0ef0efcc8d0795b9 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Mon, 22 Jan 2024 17:03:21 +0900 Subject: [PATCH 29/33] =?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){
  • - + +
  • +
From 2c39b33086f0cc7643e0f1e98e43afb6e1182fab Mon Sep 17 00:00:00 2001 From: rosewiper Date: Mon, 22 Jan 2024 18:01:44 +0900 Subject: [PATCH 30/33] =?UTF-8?q?=EC=98=88=EC=95=BD=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20=EC=B9=B4=EC=B9=B4=EC=98=A4=ED=86=A1=20?= =?UTF-8?q?=EC=98=88=EC=95=BD=20=EC=B7=A8=EC=86=8C=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=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp/web/reservedmsg/ReservedKakaoCancelListAjax.jsp | 1 + .../WEB-INF/jsp/web/reservedmsg/ReservedKakaoView.jsp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoCancelListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoCancelListAjax.jsp index 86391651..8a4bec78 100644 --- a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoCancelListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoCancelListAjax.jsp @@ -53,6 +53,7 @@ $(document).ready(function(){ }); +

diff --git a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoView.jsp b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoView.jsp index 22e20474..b13e79e2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoView.jsp @@ -394,6 +394,7 @@ function fnRevDetailPop02(msgGroupId){ // 전송건별 $("#msgSentDetailPopLoad").load("/web/kakao/sent/selectKakaoSentDetailDataAjax.do", sendData ,function(response, status, xhr){ + // 상세보기 클릭때마다 툴팁 1 tab이 열리게 설정 popupTab($('#atBtn'),'1'); $('#tooltopClick').trigger('click'); @@ -683,7 +684,11 @@ function enterKey() {
  • - + +
  • +
From e7e0c044300fe066d14cb42788ffa16781f56543 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 12 Sep 2024 11:33:45 +0900 Subject: [PATCH 31/33] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=EC=8A=A4=EB=AF=B8=EC=8B=B1=20=EC=9D=98?= =?UTF-8?q?=EC=8B=AC=EC=97=90=20=EB=8C=80=ED=95=9C=2030=EB=B6=84=20?= =?UTF-8?q?=EC=A7=80=EC=97=B0=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95=20=20=20-=20=EC=A7=80=EC=97=B0?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=EA=B0=80=20=EC=95=88=EB=90=98=EA=B3=A0=20?= =?UTF-8?q?=EC=9E=88=EC=96=B4=EC=84=9C=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=99=84=EB=A3=8C(at=5Fdelay=5Fyn=20=EA=B0=92?= =?UTF-8?q?=EC=9D=B4=20=EB=B3=80=EA=B2=BD=EC=9D=B4=20=EC=95=88=EB=90=98?= =?UTF-8?q?=EB=8D=98=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95)=20=20=20-?= =?UTF-8?q?=20=EC=95=BC=EA=B0=84=EC=8A=A4=EB=AF=B8=EC=8B=B1=EC=9D=98?= =?UTF-8?q?=EC=8B=AC=20=EB=AF=B8=EC=B2=98=EB=A6=AC=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 관리자 - 사용자 상세 팝업에 친구톡 단가 및 마진률 표시, 협의단가 입력 팝업에 친구톡 항목 추가 및 수정 기능 변경 --- .../impl/KakaoAlimTalkServiceImpl.java | 67 ++++++++++++++++++- .../web/KakaoFriendsTalkSendController.java | 4 +- .../uss/umt/web/EgovUserManageController.java | 37 +++++++++- .../let/uss/umt/EgovMberManage_SQL_Mysql.xml | 1 + .../cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp | 12 ++-- 5 files changed, 111 insertions(+), 10 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java index 9776ef74..61f0cd6a 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java @@ -432,6 +432,51 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements //카카오 알림톡 전송 리스트 List kakaoFtSendList = new ArrayList(); + + //야간스미싱 알림여부 정보 불러오기 + JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail(); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + //스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수 + boolean spamSmishingPassStatus = false; //야간스미싱 알림여부가 활성화인 경우 false, 비활성화인경우 true 값을 가지도록 한다. + + //야간스미싱알리 여부가 비활성화 인경우 무조건 문자를 즉시 보내도록 한다. + //현재는 평일, 주말, 휴일 상관없이 N 이면 30분 딜레이 없이 발송 처리하도록 함. + if(holiSmishingNoti.equals("Y")) { + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + spamSmishingPassStatus = smishingAlarmPassSts; + }else { + + spamSmishingPassStatus = true; + + } + + String atSmishingYn = kakaoVO.getAtSmishingYn(); + + if(spamSmishingPassStatus) { + atSmishingYn = "N"; + } /** 카카오 알림톡 전송 리스트 생성 (시작)-------------------------------------------*/ for(int i = 0; i < callToCnt; i++) { @@ -496,7 +541,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements } - if(kakaoVO.getAtSmishingYn().equals("Y")) { + if(atSmishingYn.equals("Y")) { String sandDate = ""; if(kakaoVO.getDivideChk().equals("Y")) { @@ -632,6 +677,12 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements mjonMsgVO.setKakaoSubMagOrgnlTxt(kakaoVO.getKakaoSubMagOrgnlTxt()); mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn()); + //야간 스미싱 알림 비활성화인 경우 딜레이처리 안하도록 함 20240912 우영두 수정 + if(spamSmishingPassStatus) { + mjonMsgVO.setAtDelayYn("N"); + }else { + mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn()); + } if(kakaoVO.getBizJsonYn().equals("Y")) { mjonMsgVO.setFileCnt("1"); @@ -655,6 +706,20 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements * * */ kakaoAlimTalkDAO.insertKakaoSendPrice(kakaoVO); + + + try { + + //야간 스미싱 알림이 활성화 이고 알림 예외 일정에 포함되고, 스팸 또는 스미싱 의심 상태일 경우 문자정보 별도 저장처리 - 20240821 우영두 추가 + if(holiSmishingNoti.equals("Y") && spamSmishingPassStatus && kakaoVO.getAtSmishingYn().equals("Y")) { + mjonMsgDAO.insertSpamPassMsgData(mjonMsgVO); + } + + } catch (Exception e) { + System.out.println("++++++++++++++++++++++++++++++ spamSmishingPassStatus 친구톡 야간 스미싱 알림 데이터 입력 오류 발생 !!!!"); + } + + }else { mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO); } diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 5f294815..2e0892d1 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -409,9 +409,9 @@ public class KakaoFriendsTalkSendController { //스미싱 의심이 아니면 delayYn 값 셋팅 if(kakaoVO.getAtSmishingYn().equals("N")) { - kakaoVO.setDelayYn("N"); + kakaoVO.setAtDelayYn("N"); }else { - kakaoVO.setDelayYn("Y"); + kakaoVO.setAtDelayYn("Y"); } //분할발송 여부 - 친구톡은 분할 발송이 없기애 N으로 픽스 diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index 0ff37d34..86e8afa6 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -1099,6 +1099,7 @@ public class EgovUserManageController { model.addAttribute("sysPicture3Price", sysJoinSetVO.getPicture3Price()); model.addAttribute("sysPicture3Price", sysJoinSetVO.getPicture3Price()); model.addAttribute("sysKakaoAtPrice", sysJoinSetVO.getKakaoAtPrice()); + model.addAttribute("sysKakaoFtPrice", sysJoinSetVO.getKakaoFtPrice()); // 등급제 단가 추출 => 시스템 단가에 적용 sysJoinSetVO = mberGrdService.selectMberGrdDefaultInfo(sysJoinSetVO, userId); @@ -1110,6 +1111,7 @@ public class EgovUserManageController { Float picture2Price = mberManageVO.getPicture2Price(); Float picture3Price = mberManageVO.getPicture3Price(); Float kakaoAtPrice = mberManageVO.getKakaoAtPrice(); + Float kakaoFtPrice = mberManageVO.getKakaoFtPrice(); Float faxPrice = mberManageVO.getFaxPrice(); System.out.println("mberManageVO.getFaxPrice() : " + mberManageVO.getFaxPrice()); @@ -1125,6 +1127,11 @@ public class EgovUserManageController { if(kakaoAtPrice < 1) { kakaoAtPrice = sysJoinSetVO.getKakaoAtPrice(); } + + if(kakaoFtPrice < 1) { + kakaoFtPrice = sysJoinSetVO.getKakaoFtPrice(); + } + if(faxPrice < 1) { faxPrice = sysJoinSetVO.getFaxPrice(); } @@ -1135,6 +1142,7 @@ public class EgovUserManageController { model.addAttribute("picture2Price", picture2Price); model.addAttribute("picture3Price", picture3Price); model.addAttribute("kakaoAtPrice", kakaoAtPrice); + model.addAttribute("kakaoFtPrice", kakaoFtPrice); model.addAttribute("faxPrice", faxPrice); model.addAttribute("sysJoinSetVO", sysJoinSetVO); @@ -1313,6 +1321,9 @@ public class EgovUserManageController { double kakaoAtCost = 0.00; double kakaoAtMargin = 0.00; + double kakaoFtCost = 0.00; + double kakaoFtMargin = 0.00; + double faxCost = 0.00; double faxMargin = 0.00; @@ -1345,11 +1356,24 @@ public class EgovUserManageController { avgPriceP = Double.parseDouble(item.getAgentPrice()); } } + + /* + * 알림톡,친구톡 원가 정보 조회 + * Agent 코드 번호를 넘겨준다. + * 다우기술 04번으로 넘겨줌 + * */ - // kakao 원가 - kakaoAtCost = kakaoApiService.selectKakaoCost(); + MjonMsgAgentStsVO resultAgentCost = mjonMsgAgentStsService.selectHotLineAgentCost("04"); + kakaoAtCost = resultAgentCost.getKakaoAtCost(); //알림톡 원가 + kakaoFtCost = resultAgentCost.getKakaoFtCost(); //친구톡 원가 + + // kakao 알림톡 마진률 계산 + //kakaoAtCost = kakaoApiService.selectKakaoCost(); kakaoAtMargin = (1-(kakaoAtCost / kakaoAtPrice))*100; + //kakao 친구톡 마진률 계산 + kakaoFtMargin = (1-(kakaoFtCost / kakaoFtPrice))*100; + // fax 원가 SELECT faxCost = faxService.getFaxCost(); // fax 마직 계산 :: 1-원가/단가 @@ -1366,7 +1390,9 @@ public class EgovUserManageController { model.addAttribute("avgPriceL", avgPriceL); model.addAttribute("avgPriceP", avgPriceP); model.addAttribute("kakaoAtCost", kakaoAtCost); + model.addAttribute("kakaoFtCost", kakaoFtCost); model.addAttribute("kakaoAtMargin", kakaoAtMargin); + model.addAttribute("kakaoFtMargin", kakaoFtMargin); model.addAttribute("faxCost", faxCost); model.addAttribute("faxMargin", faxMargin); } @@ -2894,6 +2920,11 @@ public class EgovUserManageController { mberManageVO.setKakaoAtPrice(0); } + // 친구톡 => 수정하려는 단가가 시스템기본단가와 동일할경우 0으로 세팅 + if (Float.compare(sysJoinSetVO.getKakaoFtPrice(), mberManageVO.getKakaoFtPrice()) == 0) { + mberManageVO.setKakaoFtPrice(0); + } + int resultCnt = mberManageService.updateUserPrice(mberManageVO); if(resultCnt > 0) { @@ -4789,7 +4820,7 @@ public class EgovUserManageController { * 회원 이용정지 사유 조회하기 * @param searchVO * @param model - * @return "/uss/umt/user/uss/umt/user/EgovGnrlselectedUserView.do.do" + * @return "/uss/umt/user/uss/umt/user/selectMberSpamBlockMemoDetailAjax.do" * @throws Exception */ @RequestMapping(value = {"/uss/umt/user/selectMberSpamBlockMemoDetailAjax.do"}) diff --git a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml index 8e721c86..39465903 100644 --- a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml @@ -1217,6 +1217,7 @@ , PICTURE2_PRICE = #picture2Price# , PICTURE3_PRICE = #picture3Price# , KAKAO_AT_PRICE = #kakaoAtPrice# + , KAKAO_FT_PRICE = #kakaoFtPrice# , KAKAO_FT_IMG_PRICE = #kakaoFtImgPrice# , KAKAO_FT_WIDE_IMG_PRICE = #kakaoFtWideImgPrice# WHERE MBER_ID = #mberId# diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp index 1a52cfed..5047f2a8 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp @@ -5246,7 +5246,7 @@ function fnInputSmiBlockMemo(){
구분 알림톡(원)친구톡(준비중)친구톡(원) 팩스(원)
문자온 원가 준비중
- 준비중 + @@ -5272,7 +5272,7 @@ function fnInputSmiBlockMemo(){
마진률 %준비중% %
알림톡 금액
친구톡 금액
From a32df2c7dce6aa560241204c7721f5da02886519 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 12 Sep 2024 17:42:02 +0900 Subject: [PATCH 32/33] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=20=20-=20?= =?UTF-8?q?=EC=B9=B4=EC=B9=B4=EC=98=A4=20=EC=B9=9C=EA=B5=AC=ED=86=A1=20?= =?UTF-8?q?=ED=85=9C=ED=94=8C=EB=A6=BF=20=EA=B4=80=EB=A6=AC=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=95=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 관리자 - 채널아이디 목록 화면 템플릿 항목 추가 및 알림톡, 친구톡 템블릿 팝업 기능 추가 - 친구톡 등록 템플릿 리스트 및 상세화면 팝업 추가 - 기존 알림톡 템플릿 리스트 오류 수정 --- .../kakaoAt/web/MjonKakaoATController.java | 1 + .../kakaoFt/web/MjonKakaoFTController.java | 132 ++ .../web/KakaoFriendsTalkSendController.java | 51 +- .../KakaoFriendsTalkTemplateController.java | 4 +- .../itn/let/mjo/mjocommon/MjonCommon.java | 9 +- .../uss/ion/kakaoat/KakaoATChannelIDList.jsp | 35 +- .../KakaoFTChannelIDTemplateDetailPop.jsp | 1112 +++++++++++++++++ .../popup/KakaoFTChannelIDTemplateListPop.jsp | 190 +++ .../ft/KakaoFriendstalkTemplateList.jsp | 2 +- 9 files changed, 1522 insertions(+), 14 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateDetailPop.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java b/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java index fc5bfecd..900b889f 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java @@ -851,6 +851,7 @@ public class MjonKakaoATController { kakaoVO.setPage(Integer.toString(channelIDVO.getPageIndex())); kakaoVO.setKeyword(channelIDVO.getSearchKeyword()); kakaoVO.setUserId(channelIDVO.getUserId()); + kakaoVO.setYellowId(channelIDVO.getYellowId()); String templateStatus = channelIDVO.getTemplateStatus(); String keyword = channelIDVO.getSearchKeyword(); diff --git a/src/main/java/itn/let/kakao/admin/kakaoFt/web/MjonKakaoFTController.java b/src/main/java/itn/let/kakao/admin/kakaoFt/web/MjonKakaoFTController.java index 4ffa631b..e2498ee4 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoFt/web/MjonKakaoFTController.java +++ b/src/main/java/itn/let/kakao/admin/kakaoFt/web/MjonKakaoFTController.java @@ -13,14 +13,21 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.HandlerMapping; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import itn.com.cmm.LoginVO; import itn.com.cmm.service.FileVO; import itn.com.cmm.util.StringUtil; +import itn.let.kakao.admin.kakaoAt.service.ChannelIDVO; import itn.let.kakao.admin.kakaoFt.service.MjonKakaoFTService; import itn.let.kakao.admin.kakaoFt.service.MjonKakaoFTVO; +import itn.let.kakao.kakaoComm.KakaoVO; +import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; +import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService; import itn.let.mjo.msg.service.MjonMsgResultCodeVO; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.reservmsg.service.MjonReservMsgService; +import itn.let.utl.fcc.service.EgovStringUtil; /** * @@ -52,6 +59,12 @@ public class MjonKakaoFTController { @Resource(name = "MjonReservMsgService") private MjonReservMsgService mjonReservMsgService; + @Resource(name = "kakaoFriendsTalkTemplateService") + private KakaoFriendsTalkTemplateService kakaoFtTemplateService; + + @Resource(name = "kakaoApiService") + private KakaoApiService kakaoApiService; + /* @Resource(name = "EgovCmmUseService") private EgovCmmUseService cmmUseService; @@ -501,6 +514,125 @@ public class MjonKakaoFTController { return "/uss/ion/kakaoft/ReserveKakaoFTModify"; } + + /** + * 채널 아이디별 등록 친구톡 템플릿 목록 팝업화면 관리자페이지 + * @param ChannelIDVO + * @param request + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/uss/ion/kakaoft/KakaoFTChannelIDTemplateListPopupAjax.do") + public String KakaoFTChannelIDTemplateListPopupAjax(@ModelAttribute("searchVO") ChannelIDVO channelIDVO, + HttpServletRequest request , + ModelMap model) throws Exception { + + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String id = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + if(id == "") { + return "redirect:/uat/uia/EgovLoginUsr.do"; + } + + KakaoVO kakaoVO = new KakaoVO(); + + //페이징 처리 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(channelIDVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(9); + paginationInfo.setPageSize(channelIDVO.getPageSize()); + + kakaoVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + kakaoVO.setLastIndex(paginationInfo.getLastRecordIndex()); + kakaoVO.setRecordCountPerPage(9); + + kakaoVO.setSenderKey(channelIDVO.getSenderKey()); + kakaoVO.setPage(Integer.toString(channelIDVO.getPageIndex())); + kakaoVO.setSearchKeyword(channelIDVO.getSearchKeyword()); + kakaoVO.setUserId(channelIDVO.getUserId()); + + String templateStatus = channelIDVO.getTemplateStatus(); + String keyword = channelIDVO.getSearchKeyword(); + + /*if(keyword != null && keyword != "") { + kakaoVO.setSearchKeyword(keyword); + }else { + kakaoVO.setSearchKeyword(""); + }*/ + + if("".equals(kakaoVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + kakaoVO.setSearchSortCnd("friendId"); + kakaoVO.setSearchSortOrd("desc"); + } + + //채널 아이디 정보 + String yellowId = kakaoVO.getYellowId(); + + kakaoVO.setCount("9"); //페이지 별 템플릿 개수 9개로 + List kakaoTemplateInfoList = new ArrayList(); + kakaoTemplateInfoList = kakaoFtTemplateService.selectKakaoFriendsTemplateList(kakaoVO); + + model.addAttribute("kakaoVO", kakaoVO); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("kakaoTemplateInfoList", kakaoTemplateInfoList); //친구톡 템플릿 리스트 + paginationInfo.setTotalRecordCount(kakaoTemplateInfoList.size() > 0 ? ((KakaoVO)kakaoTemplateInfoList.get(0)).getTotCnt() : 0); + + } catch (Exception e) { + System.out.println("KakaoFTChannelIDTemplateListPopupAjax Contrller Error ::: " + e); + } + + return "uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop"; + } + + /** + * 채널 아이디별 등록 친구톡 템플릿 상세내용 팝업화면 관리자페이지 + * @param ChannelIDVO + * @param request + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/uss/ion/kakaoft/KakaoFTChannelIDTemplateDetailPopupAjax.do") + public String KakaoFTChannelIDTemplateDetailPopupAjax(@ModelAttribute("searchVO") ChannelIDVO channelIDVO, + HttpServletRequest request , + ModelMap model) throws Exception { + + + try { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String id = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + if(id == "") { + return "redirect:/uat/uia/EgovLoginUsr.do"; + } + + KakaoVO kakaoVO = new KakaoVO(); + kakaoVO.setSenderKey(channelIDVO.getSenderKey()); + kakaoVO.setFriendId(channelIDVO.getTemplateCode()); + kakaoVO.setUserId(channelIDVO.getUserId()); + + String senderKey = kakaoVO.getSenderKey(); + model.addAttribute("senderKey", senderKey); + + //친구톡 템플릿 조회하기 + KakaoVO resultTemplateVO = kakaoFtTemplateService.selectKakaoFriendsTemplateDetail(kakaoVO); + model.addAttribute("resultTemplateVO", resultTemplateVO); + + // 사용자 아이디를 이용한 발신프로필 조회 + kakaoVO.setUserId(channelIDVO.getUserId()); + List selectKakaoProfileList = kakaoApiService.selectKakaoProfileList(kakaoVO); + model.addAttribute("kakaoProfileList", selectKakaoProfileList); + + } catch (Exception e) { + System.out.println("KakaoFTChannelIDTemplateDetailPopupAjax Contrller Error ::: " + e); + } + + return "uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateDetailPop"; + } + /** * 카톡 전송사 발송 결과 코드 리스트 * @param MjonMsgResultCodeVO diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java index 2e0892d1..e47e6a88 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java @@ -31,9 +31,13 @@ import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService; import itn.let.mjo.mjocommon.MjonCommon; +import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.MjonMsgDataVO; import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; +import itn.let.mjo.msgholiday.service.MsgHolidayService; +import itn.let.mjo.msgholiday.service.MsgHolidayVO; import itn.let.mjo.symbol.service.MjonSymbolService; import itn.let.mjo.symbol.service.MjonSymbolVO; import itn.let.sym.site.service.EgovSiteManagerService; @@ -75,6 +79,9 @@ public class KakaoFriendsTalkSendController { @Resource(name = "egovSiteManagerService") EgovSiteManagerService egovSiteManagerService; + @Resource(name = "MsgHolidayService") + private MsgHolidayService msgHolidayService; + @Autowired KakaoSendUtil kakaoSendUtil; @@ -624,12 +631,52 @@ public class KakaoFriendsTalkSendController { JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + //야간 스미싱의심 알림이 활성화 되어있는 경우 예외 알림 시간대가 아닌경우 슬랙 알림 발송 처리한다. + if(holiSmishingNoti.equals("Y")) { + + // SLACK 체크 + if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); + + if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송 + + MjonCommon comm = new MjonCommon(); + comm.getAdminKakaoAtSandSlack(kakaoVO); + + } + + } + + } + // SLACK 체크 - if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { + /*if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { //Slack으로 메세지 전송 처리 MjonCommon comm = new MjonCommon(); comm.getAdminKakaoAtSandSlack(kakaoVO); - } + }*/ } } catch (Exception e) { diff --git a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java index 737aee6c..9b9540bd 100644 --- a/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java +++ b/src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java @@ -373,12 +373,12 @@ public class KakaoFriendsTalkTemplateController { /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); + paginationInfo.setRecordCountPerPage(9); paginationInfo.setPageSize(searchVO.getPageSize()); searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); - searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + searchVO.setRecordCountPerPage(9); if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List searchVO.setSearchSortCnd("FRIEND_ID"); diff --git a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java index 09e316a4..5979cde6 100644 --- a/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java +++ b/src/main/java/itn/let/mjo/mjocommon/MjonCommon.java @@ -265,7 +265,12 @@ public class MjonCommon { String smisingSmsTxt = ""; //예약문자를 발송하는 경우 문자 내용 앞에 "[예약]" 표시되도록 처리 if(reserveYn.equals("Y")) { - reservSmsTxt = "[예약]" + smsTxt; + + if(atDelayYn.equals("Y")) {//예약문자 중 스미싱의심 일 경우 + reservSmsTxt = "[스미싱의심][예약]" + smsTxt; + }else { + reservSmsTxt = "[예약]" + smsTxt; + } smsTxt = reservSmsTxt; }else if(atDelayYn.equals("Y")) { @@ -280,7 +285,7 @@ public class MjonCommon { if(kakaoVO.getMsgType().equals("8")) { msgType = "[알림톡]"; }else if(kakaoVO.getMsgType().equals("9")){ - msgType = "[테스트중][친구톡]"; + msgType = "[친구톡]"; } sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType; diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoATChannelIDList.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoATChannelIDList.jsp index bd264762..96b6fe35 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoATChannelIDList.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoATChannelIDList.jsp @@ -83,13 +83,27 @@ function fnSetCalMonth(val) { } //선택 채널 알림톡 템플릿 리스트 불러오기 -function fnTemplateListPop(senderKey, userId){ +function fnAtTemplateListPop(yellowId, senderKey, userId){ + + document.popupForm.senderKey.value = senderKey; + document.popupForm.userId.value = userId; + document.popupForm.yellowId.value = yellowId; + + window.open("about:blank", 'listPopup', 'width=930, height=860, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes'); + document.popupForm.action = ""; + document.popupForm.target = "listPopup"; + document.popupForm.submit(); + +} + +//선택 채널 친구톡 템플릿 리스트 불러오기 +function fnFtTemplateListPop(senderKey, userId){ document.popupForm.senderKey.value = senderKey; document.popupForm.userId.value = userId; window.open("about:blank", 'listPopup', 'width=930, height=860, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes'); - document.popupForm.action = ""; + document.popupForm.action = ""; document.popupForm.target = "listPopup"; document.popupForm.submit(); @@ -118,6 +132,7 @@ function fnSelectMber(mberId) { + @@ -193,6 +208,7 @@ function fnSelectMber(mberId) {
채널ID 채널명 등록상태템플릿 채널생성일 채널등록일 삭제여부', '');" style="cursor:pointer;"> ', '');" style="cursor:pointer;"> + @@ -250,6 +267,10 @@ function fnSelectMber(mberId) { + ','', '');" value="AT"/> + ', '');" value="FT"/> + @@ -342,14 +363,14 @@ function fnSelectMber(mberId) {
- +
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateDetailPop.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateDetailPop.jsp new file mode 100644 index 00000000..5a88dbd9 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateDetailPop.jsp @@ -0,0 +1,1112 @@ +<%@ 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="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> + + + + 친구톡 템플릿 상세보기 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+ +
+ + <%-- <%@include file="/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp" %> --%> + + +
+
+

카카오 친구톡 템플릿 상세보기

+ +
+
+ + <%-- <%@include file="/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkSubMenuTap.jsp" %> --%> + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
채널ID + +
템플릿명 + +

최대 50자, 템플릿 관리용

+
이미지 첨부 +
+ checked > + checked > + checked> +
+

* 이미지 첨부 안내

+
    +
  • - 권장사이즈 : 720px * 720px
  • +
  • - 제한사이즈 : 가로 500px 미만, 가로:세로 비율이 2:1 미만 또는 3:4 초과시 업로드 불가
  • +
  • - 파일형식 : jpg, png (최대 500kb)
  • +
  • - 이미지 첨부시 메시지 내용은 최대 400자까지 입력할 수 있습니다.
  • +
+
+
+

* 와이드 이미지 첨부 안내

+
    +
  • - 권장사이즈 : 800px * 600px
  • + +
  • - 파일형식 : jpg, png (최대 2mb)
  • +
  • - 와이드 이미지 첨부시 메시지 내용은 최대 76자, 버튼 1개까지 입력할 수 있습니다.
  • +
+
+
+
+
    +
  • +

    이미지 제목

    + +
  • +
  • +

    이미지 클릭시 이동할 URL

    + +
  • +
  • +

    첨부파일 이미지

    + + +
  • +
+ +
+
광고포함 여부 + checked > + <%-- checked > --%> +
내용 +
+ +
+
+

(광고) 채널ID

+
+ + +
+
+

수신거부 : 홈 > 채널차단

+
+
+

0 /1000

+
+
+
+
+
+
+ +
+ + +
+
+ + + + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + + +
+
+ + + ${symbolList.symbol} + + +
+
+ + +
+
+
+ +
+
+
+ 특정문구 일괄변환이란? +

주소록, 엑셀에 입력된 내용을 이용해 수신자마다 다른 내용의 메시지를 발송하는 기능

+
+
+ +
+
+ + + + +
+
+ +
+
+
+ +
+ <%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentImoticonInfo.jsp" %> + +
+
+
+ +
+
+ + +
+
+
버튼 + <%-- + --%> +
+ + + +
+
배송조회
+
+ + +

*이용가능 택배사 : KG로지스, 우체국택배,일양로지스, GTX로지스, FedEx, 경동택배, 합동택배, 롯데택배

+
+
+ +
+
+
+ + + +
+
웹링크
+
+
    +
  • + + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+ +
+
+
+ + + +
+
앱링크
+
+
    +
  • + + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+ +
+
+
+ + + +
+
봇키워드
+
+ + +
+
+ +
+
+
+ + + +
+
메시지전달
+
+ + +
+
+ +
+
+
+ + + +
+
상담톡전환
+
+ + +
+
+ +
+
+
+ + + +
+
챗봇전환
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+

+ @채널ID +

+ +
+

(광고) 채널ID

+
+ +

내용 미리보기

+
+ + + +
+
+

수신거부 : 홈 > 채널차단

+ +
+ +
+

※ 단말기 설정에 따라 다르게 보일 수 있습니다

+

+
+ + +
+
+
+
+
+
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp new file mode 100644 index 00000000..0d647da5 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp @@ -0,0 +1,190 @@ +<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<% pageContext.setAttribute("newLineChar", "\r\n"); %> +<% pageContext.setAttribute("newLineChar2", "\n"); %> + + + + +친구톡 템플릿 등록 + + + + + + + + + + + + + + + + + + + + + +
+
+
+
Loading
+
+
+
+
+ "> + + "> +
+
+ "> + "> + + + + + + "> +
+
+
+ +
+ +
+
    + + + +
  • +
    +
    +
    +
    +
    +

    '); return false;" style="cursor:pointer;"> + (광고) + +

    +
    +
    '); return false;" style="cursor:pointer;"> + + +
    + +
    +
    + +

    + + + + +
    +
    + +

    수신거부 | 홈 > 채널차단

    +
    +
    +
    +
    +
    템플릿명
    +
    + +
    +
    +
    +
    등록일
    +
    + <%--
    + + +
    --%> +
    +
    +
    +
  • +
    +
    + +
  • 등록된 템플릿이 없습니다.
  • +
    +
    +
+
+ + +
    + +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp index ad13ecf2..5e6bf1a3 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateList.jsp @@ -41,7 +41,7 @@ function selectTemplateListLoad(page){ //화면 로딩바 보여주기 $('.loading_layer').addClass('active'); - $("#templateList").load("/web/mjon/kakao/template/selectKakaoFriendsTemplateListAjax.do", {"senderKey":selectAgentCode, "categoryCode" : selectTemplateSecondCatagory, "templateStatus" : selectTemplateStatus, "searchKeyword" : keyword, "page" : page, "yellowId" : yellowId, "formListType" : formListType} ,function(){ + $("#templateList").load("/web/mjon/kakao/template/selectKakaoFriendsTemplateListAjax.do", {"senderKey":selectAgentCode, "categoryCode" : selectTemplateSecondCatagory, "templateStatus" : selectTemplateStatus, "searchKeyword" : keyword, "pageIndex" : page, "yellowId" : yellowId, "formListType" : formListType} ,function(){ //썸네일 박스 스크롤 적용해주기 $(".kakao_template_wrap").mCustomScrollbar({ From 5f61b8d4a2f9a238ec3548aeec5f228a9309e0b0 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 12 Sep 2024 17:48:20 +0900 Subject: [PATCH 33/33] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=ED=86=A1=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=ED=99=94=EB=A9=B4=20=ED=8C=9D=EC=97=85=20=ED=83=80?= =?UTF-8?q?=EC=9D=B4=ED=8B=80=20=EB=AC=B8=EA=B5=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp index 0d647da5..58eaa918 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoft/popup/KakaoFTChannelIDTemplateListPop.jsp @@ -10,7 +10,7 @@ -친구톡 템플릿 등록 +친구톡 템플릿 목록