카카오 친구톡 템플릿 수정 기능 개발

This commit is contained in:
rosewiper 2024-01-05 11:08:19 +09:00
parent 532e1f533a
commit 69232f87f5
7 changed files with 174 additions and 12 deletions

View File

@ -17,4 +17,7 @@ public interface KakaoFriendsTalkTemplateService {
//친구톡 템플릿 상세정보 조회
KakaoVO selectKakaoFriendsTemplateDetail(KakaoVO kakaoVO) throws Exception;
//친구톡 템플릿 수정처리하기
int updateKakaoFriendsTemplateData(KakaoVO kakaoVO) throws Exception;
}

View File

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

View File

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

View File

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

View File

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

View File

@ -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 (){
<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}'/>"/>

View File

@ -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") {