package itn.let.kakao.kakaoComm.kakaoApi; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; 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; import itn.com.cmm.util.StringUtil; import itn.let.kakao.kakaoComm.KakaoButtonVO; import itn.let.kakao.kakaoComm.KakaoReturnVO; import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; 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; public String kakaoApiJsonSave_advc(KakaoSendAdvcVO sendVO, KakaoReturnVO templateDetail) { // 버튼리스트 JSON 생성 JSONArray buttonList = new JSONArray(); for(KakaoButtonVO buttonInfoVO : sendVO.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")) { templateDetailInfo.put("title", sendVO.getTemplateTitle()); }else if(emphasizeType.equals("IMAGE")) { templateDetailInfo.put("msg_type", "ai"); } 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(); return jsonStr; } 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 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; } /* * 친구톡 발송시 이미지, 버튼 추가에 따른 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; } }