File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import itn.com.cmm.util.StringUtil;
import itn.let.kakao.kakaoComm.KakaoButtonVO;
import itn.let.kakao.kakaoComm.KakaoReturnVO;
import itn.let.kakao.kakaoComm.KakaoVO;
@Component
public class KakaoApiJsonSave {
@Autowired
KakaoApiTemplate kakaoApiTemplate;
/** 비즈 JSON 파일저장 경로*/
@Value("#{globalSettings['Globals.mjon.kakao.dir']}")
private String mjonBizJsonDir;
static String json;
@SuppressWarnings("unchecked")
public String kakaoApiJsonSave(KakaoVO kakaoVO, String[] varValInfo) {
// 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.getDestPhone()+".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 : templateDetail.getButtonList()) {
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 templateDetailInfo = new JSONObject();
String emphasizeType = templateDetail.getTemplateEmphasizeType();
if(emphasizeType.equals("TEXT")) {
String templateTitle = templateDetail.getTemplateTitle();
if(kakaoVO.getVarNmList().size() != 0) {
String[] varNm = new String[kakaoVO.getVarNmList().size()];
int q=0;
for(String temp : kakaoVO.getVarNmList()) {
temp = temp.replaceAll("\\#\\{" , "§§");
temp = temp.replaceAll("\\}" , "§");
varNm[q] = temp;
q++;
}
List<String[]> varValList = kakaoVO.getVarValList(); // value 값
templateTitle = templateTitle.replaceAll(String.valueOf((char)13), "");
templateTitle = templateTitle.replaceAll("\\#\\{" , "§§");
templateTitle = templateTitle.replaceAll("\\}" , "§");
for(int i=0; i < varNm.length; i++) {
for(int j=0; j < varValInfo.length; j++) {
if (templateTitle.indexOf(varNm[i]) > -1) {
if(varValInfo[j] != null) {
templateTitle = templateTitle.replaceAll(varNm[i] , StringUtil.getString(varValInfo[j]));
}else {
templateTitle = templateTitle.replaceAll(varNm[i] , "");
}
}
}
}
templateDetailInfo.put("title", templateTitle);
}else {
templateDetailInfo.put("title", templateTitle);
}
}else if(emphasizeType.equals("IMAGE")) {
templateDetailInfo.put("msg_type", "ai");
}else if(emphasizeType.equals("NONE")) {
}
JSONObject jo = new JSONObject();
if(buttonList.size() != 0) {
jo.put("button", buttonList);
}
if(templateDetailInfo.size() != 0) {
jo.put("extra", templateDetailInfo);
}
// 입력 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;
}
}