rosewiper 2024-01-05
카카오 친구톡 템플릿 수정 기능 개발
@69232f87f5a2bcea2b07a2862fafaf064f8482cd
src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java
--- src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/service/KakaoFriendsTalkTemplateService.java
@@ -17,4 +17,7 @@
 	
 	//친구톡 템플릿 상세정보 조회
 	KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception;
+	
+	//친구톡 템플릿 수정처리하기
+	int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception;
 }
src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java
--- src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateDAO.java
@@ -126,4 +126,21 @@
 		
 	}
 	
+	//친구톡 템플릿 수정처리하기
+	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;
+		
+	}
+	
 }
src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java
--- src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkTemplateServiceImpl.java
@@ -159,4 +159,57 @@
 		
 	}
 	
+	//친구톡 템플릿 수정처리하기
+	@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;
+	}
+	
 }
src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java
--- src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkTemplateController.java
@@ -525,4 +525,68 @@
 		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;
+	}
+	
 }
src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_FT_SQL_Mysql.xml
@@ -247,5 +247,27 @@
 	
 	</select>
 	
+	<update id="kakaoFriendsTalkTemplateDAO.updateKakaoFriendsTemplateData" parameterClass="kakaoVO" >
+		
+		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#
+	
+	</update>
+	
 	
 </sqlMap>
(No newline at end of file)
src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateDetail.jsp
@@ -256,6 +256,7 @@
 				
 					$('.kakao_image').css("display", "block");
 					$("#kakaoImg").attr("src", imgUrl);
+					$("#imageFileName").val(fileName);
 					
 				}else if(code == "2002"){//일반 이미지 가로 세로 크기 오류 발생
 					
@@ -313,7 +314,7 @@
 
 
 //발신 템플릿 등록
-function addTemplate(){
+function updateTemplate(){
 	
 	var selectAgentCode = $("select[name='selectAgentCode']").val();	// 선택 채널ID
 	var yellowId = $("select[name='selectAgentCode'] option:selected").text().replaceAll('@','');			// 선택 채널명
@@ -386,11 +387,11 @@
 	
 	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 @@
 				
 				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 @@
 				var code = returnData.code;
 				var msg = returnData.msg;
 				
-				if(result == "notLogin") {//차단 발신번호인 경우 등록 불가
+				if(result == "loginFail") {//차단 발신번호인 경우 등록 불가
 					alert("로그인후 진행이 가능합니다.");
 				}else if(returnData.result == "success") {
 					
@@ -619,6 +621,7 @@
             <input type="hidden" id="menuTopTab" name="menuTopTab" value="tabConf">
 				<input type="hidden" id="menuSubTab" name="menuSubTab" value="tabSubFt">
             	<input type="hidden" id="inputSenderKey" name="senderKey" value=""/>
+            	<input type="hidden" id="friendId" name="friendId" value="<c:out value='${resultTemplateVO.friendId}'/>"/>
             	<input type="hidden" id="yellowId" name="yellowId" value=""/>
             	<input type="hidden" id="templateName" name="templateName" value=""/>
             	<input type="hidden" id="imageFileName" name="imageFileName" value="<c:out value='${resultTemplateVO.imageFileName}'/>"/>
src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/template/ft/KakaoFriendstalkTemplateRegist.jsp
@@ -357,7 +357,7 @@
 				
 				var result = returnData.result;
 				
-				if(result == "notLogin") {//차단 발신번호인 경우 등록 불가
+				if(result == "loginFail") {//차단 발신번호인 경우 등록 불가
 					alert("로그인후 진행이 가능합니다.");
 				}else if(returnData.result == "success") {
 					alert("템플릿 저장이 완료되었습니다.");
@@ -414,7 +414,7 @@
 				var code = returnData.code;
 				var msg = returnData.msg;
 				
-				if(result == "notLogin") {//차단 발신번호인 경우 등록 불가
+				if(result == "loginFail") {//차단 발신번호인 경우 등록 불가
 					alert("로그인후 진행이 가능합니다.");
 				}else if(returnData.result == "success") {
 					
Add a comment
List