gagamel 5 лет назад
Родитель
Сommit
63812442ba

+ 27 - 15
src/main/java/com/style24/core/biz/thirdparty/SsgKakaoSender.java

@@ -1,22 +1,26 @@
 package com.style24.core.biz.thirdparty;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import javax.annotation.PostConstruct;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.google.gson.Gson;
 import com.style24.core.biz.dao.SsgDirectMessageDao;
 import com.style24.core.biz.dao.TscAnswerPhaseDao;
 import com.style24.core.support.env.TscConstants;
 import com.style24.persistence.domain.AnswerPhase;
 import com.style24.persistence.domain.SsgDirectMessage;
 
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.web.parameter.GagaMap;
@@ -130,20 +134,19 @@ public class SsgKakaoSender {
 		dm.setFcallback(callbackTelNo);
 
 		// 버튼생성
-//		if (StringUtils.isNotBlank(dm.getButtonNm())) {
-//			JSONObject button = new JSONObject();
-//			button.put("name", dm.getButtonNm());
-//			button.put("type", "WL");
-//			button.put("url_mobile", domainUrl + dm.getButtonUrl());
-//
-//			JSONObject jsonData = new JSONObject();
-//			jsonData.put("button", button);
-//
-//			JSONArray jsonArray = new JSONArray();
-//			jsonArray.add(button);
-//
-//			dm.setFkkobutton(jsonArray.toString());
-//		}
+		if (StringUtils.isNotBlank(ansPhase.getButtonNm())) {
+			Button button = new Button();
+			button.setName(ansPhase.getButtonNm());
+			button.setType("WL");
+			button.setUrl_pc(ansPhase.getButtonUrl());
+			button.setUrl_mobile(ansPhase.getButtonUrl());
+
+			Collection<Button> buttonList = new ArrayList<>();
+			buttonList.add(button);
+
+			Gson gson = new Gson();
+			dm.setFkkobutton("\"button\":" + gson.toJson(buttonList));
+		}
 
 		// 카카오 알림톡 발송
 		dmDao.createKakao(dm);
@@ -186,13 +189,14 @@ public class SsgKakaoSender {
 
 	/**
 	 * 답변문구 조회
+	 * 		어드민의 "운영관리 > 사이트설정 > 답변문구관리" 화면에서 등록/수정 시 answerPhase 캐시를 삭제
 	 * @param ansSq - 답변일련번호
 	 * @param replaceInfo - 메시지내용 중 대체할 정보
 	 * @return
 	 * @author gagamel
 	 * @since 2020. 11. 9
 	 */
-	@Cacheable(value = "common", key = "'answerPhase-'.concat(#ansSq)")
+	@Cacheable(value = "answerPhase", key = "#ansSq")
 	public AnswerPhase getAnswerPhase(Integer ansSq, GagaMap replaceInfo) {
 		AnswerPhase ansPhase = ansPhaseDao.getAnswerPhase(ansSq);
 		ansPhase.setAnsContent(GagaStringUtil.replace(this.mergeData(ansPhase.getAnsContent(), replaceInfo), "&gt;", ">"));
@@ -249,4 +253,12 @@ public class SsgKakaoSender {
 		return keyList;
 	}
 
+	@Data
+	class Button {
+		private String name;
+		private String type;
+		private String url_pc;
+		private String url_mobile;
+	}
+
 }

+ 9 - 6
src/main/java/com/style24/persistence/domain/AnswerPhase.java

@@ -14,11 +14,14 @@ import lombok.Data;
 @Data
 public class AnswerPhase extends TscBaseDomain {
 
-	private Integer ansSq;
-	private String siteCd;
-	private String ansClsf;
-	private String ansTitle;
-	private String ansContent;
-	private String useYn;
+	private Integer ansSq;		// 답변일련번호
+	private String siteCd;		// 사이트코드
+	private String ansClsf;		// 답변종류
+	private String ansTitle;	// 답변제목
+	private String ansContent;	// 답변내용
+	private String kakaoCd;		// 카카오템플릿코드
+	private String buttonNm;	// 카카오버튼명
+	private String buttonUrl;	// 카카오버튼URL
+	private String useYn;		// 사용여부
 
 }

+ 15 - 15
src/main/java/com/style24/persistence/mybatis/shop/SsgDirectMessage.xml

@@ -62,21 +62,21 @@
 	<insert id="createKakao" parameterType="SsgDirectMessage">
 		/* SsgDirectMessage.createKakao */
 		INSERT INTO SSG_SEND_TRAN_KKO (
-		       FSEQ            --메시지SEQ
-		     , FUSERID         --사용자계정
-		     , FSECTIONCODE    --계층코드(SINC로부터 부여받은 코드값)
-		     , FCAMPCODE       --캠페인코드(CRM전송 등에 이용)
-		     , FYELLOWID       --KKO발신프로필키(카카오 전송을 위해 승인받은 프로필키)
-		     , FKKOSUBJECT     --KKO친구툭전용제목
-		     , FTEMPLATEKEY    --KKO템플릿키
-		     , FKKOBUTTON      --KKO버튼(링크기능, JSON 이용)
-		     , FMSGTYPE        --메시지타입(4:KKO)
-		     , FMESSAGE        --메시지본문
-		     , FSENDDATE       --메시지발송시간(예약메시지인경우 해당 예약일시)
-		     , FKKORESENDTYPE  --KKO/KKF재발송메시지타입(SMS/LMS)
-		     , FKKORESENDMSG   --KKO/KKF재발송메시지내용
-		     , FDESTINE        --수신자전화번호
-		     , FCALLBACK       --발신자전화번호(회신번호)
+		       FSEQ            /*메시지SEQ*/
+		     , FUSERID         /*사용자계정*/
+		     , FSECTIONCODE    /*계층코드(SINC로부터 부여받은 코드값)*/
+		     , FCAMPCODE       /*캠페인코드(CRM전송 등에 이용)*/
+		     , FYELLOWID       /*KKO발신프로필키(카카오 전송을 위해 승인받은 프로필키)*/
+		     , FKKOSUBJECT     /*KKO친구툭전용제목*/
+		     , FTEMPLATEKEY    /*KKO템플릿키*/
+		     , FKKOBUTTON      /*KKO버튼(링크기능, JSON 이용)*/
+		     , FMSGTYPE        /*메시지타입(4:KKO)*/
+		     , FMESSAGE        /*메시지본문*/
+		     , FSENDDATE       /*메시지발송시간(예약메시지인경우 해당 예약일시)*/
+		     , FKKORESENDTYPE  /*KKO/KKF재발송메시지타입(SMS/LMS)*/
+		     , FKKORESENDMSG   /*KKO/KKF재발송메시지내용*/
+		     , FDESTINE        /*수신자전화번호*/
+		     , FCALLBACK       /*발신자전화번호(회신번호)*/
 		)
 		VALUES (
 		       NULL