+++ src/main/java/itn/let/kakao/kakaoComm/KakaoSendAdvcVO.java
... | ... | @@ -0,0 +1,68 @@ |
| 1 | +package itn.let.kakao.kakaoComm; | |
| 2 | + | |
| 3 | +import java.io.Serializable; | |
| 4 | +import java.util.List; | |
| 5 | +import java.util.Map; | |
| 6 | + | |
| 7 | +import lombok.Getter; | |
| 8 | +import lombok.Setter; | |
| 9 | + | |
| 10 | +/** | |
| 11 | +* @FileName : KakaoSendVO.java | |
| 12 | +* @Project : mjon | |
| 13 | +* @Date : 2025. 3. 25. | |
| 14 | +* @작성자 : 이호영 | |
| 15 | + | |
| 16 | +* @프로그램 설명 : 문자온 발송부분만 ADVC | |
| 17 | +*/ | |
| 18 | +@Getter | |
| 19 | +@Setter | |
| 20 | +public class KakaoSendAdvcVO implements Serializable { | |
| 21 | + | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * | |
| 25 | + */ | |
| 26 | + private static final long serialVersionUID = 343099046833205405L; | |
| 27 | + | |
| 28 | + private String msgId; // 문자ID | |
| 29 | + private String msgGroupId; // 전송그룹ID | |
| 30 | + private String userId; // 사용자ID | |
| 31 | + private String agentCode; // 전송사코드 | |
| 32 | + private String senderKey; // 발신프로필 키 | |
| 33 | + private String templateCode; // 템플릿 코드 | |
| 34 | + private String callTo; // 수신번호 | |
| 35 | + private String callFrom; // 발신번호 | |
| 36 | + private String msgType; // 메시지 타입 | |
| 37 | + private String templateContent; // 템플릿 내용 | |
| 38 | + private String templateTitle; // 템플릿 제목 | |
| 39 | + private String subMsgSendYn; // 대체문자 전송 여부 | |
| 40 | + private String subMsgTxt; // 대체문자 내용 | |
| 41 | + private String subMsgType; // 대체문자 타입 | |
| 42 | + private String bizJsonName; // JSON 파일명 | |
| 43 | + private String reqDate; // 예약일시 | |
| 44 | + | |
| 45 | + @Override | |
| 46 | + public String toString() { | |
| 47 | + return "MsgSendVO[" + | |
| 48 | + "\n msgId=[" + msgId + "]" + | |
| 49 | + "\n , msgGroupId=[" + msgGroupId + "]" + | |
| 50 | + "\n , userId=[" + userId + "]" + | |
| 51 | + "\n , agentCode=[" + agentCode + "]" + | |
| 52 | + "\n , senderKey=[" + senderKey + "]" + | |
| 53 | + "\n , templateCode=[" + templateCode + "]" + | |
| 54 | + "\n , callTo=[" + callTo + "]" + | |
| 55 | + "\n , callFrom=[" + callFrom + "]" + | |
| 56 | + "\n , msgType=[" + msgType + "]" + | |
| 57 | + "\n , templateContent=[" + templateContent + "]" + | |
| 58 | + "\n , templateTitle=[" + templateTitle + "]" + | |
| 59 | + "\n , subMsgSendYn=[" + subMsgSendYn + "]" + | |
| 60 | + "\n , subMsgTxt=[" + subMsgTxt + "]" + | |
| 61 | + "\n , subMsgType=[" + subMsgType + "]" + | |
| 62 | + "\n , bizJsonName=[" + bizJsonName + "]" + | |
| 63 | + "\n , reqDate=[" + reqDate + "]" + | |
| 64 | + "\n ]"; | |
| 65 | + } | |
| 66 | + | |
| 67 | + | |
| 68 | +} |
--- src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
... | ... | @@ -1,7 +1,10 @@ |
| 1 | 1 |
package itn.let.kakao.kakaoComm; |
| 2 | 2 |
|
| 3 | 3 |
import java.util.ArrayList; |
| 4 |
+import java.util.Arrays; |
|
| 5 |
+import java.util.HashMap; |
|
| 4 | 6 |
import java.util.List; |
| 7 |
+import java.util.Map; |
|
| 5 | 8 |
|
| 6 | 9 |
import javax.annotation.Resource; |
| 7 | 10 |
|
... | ... | @@ -10,9 +13,11 @@ |
| 10 | 13 |
|
| 11 | 14 |
import itn.com.cmm.util.StringUtil; |
| 12 | 15 |
import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiJsonSave; |
| 16 |
+import itn.let.mail.service.StatusResponse; |
|
| 13 | 17 |
import itn.let.mjo.msg.service.MjonMsgVO; |
| 14 | 18 |
import itn.let.mjo.msgdata.service.MjonMsgDataService; |
| 15 | 19 |
import itn.let.mjo.spammsg.web.ComGetSpamStringParser; |
| 20 |
+import itn.let.module.base.PriceAndPoint; |
|
| 16 | 21 |
import itn.let.sym.site.service.JoinSettingVO; |
| 17 | 22 |
import itn.let.uss.umt.service.MberManageVO; |
| 18 | 23 |
|
... | ... | @@ -24,7 +29,141 @@ |
| 24 | 29 |
|
| 25 | 30 |
@Resource(name = "MjonMsgDataService") |
| 26 | 31 |
private MjonMsgDataService mjonMsgDataService; |
| 32 |
+ |
|
| 33 |
+ @Autowired |
|
| 34 |
+ private PriceAndPoint priceAndPoint; |
|
| 27 | 35 |
|
| 36 |
+ /** |
|
| 37 |
+ * @methodName : kakaoSendPrice_advc |
|
| 38 |
+ * @author : 이호영 |
|
| 39 |
+ * @date : 2025. 3. 7. |
|
| 40 |
+ * @description : 기존 kakaoSendPrice 개선 |
|
| 41 |
+ * @return : KakaoVO |
|
| 42 |
+ * @param kakaoVO |
|
| 43 |
+ * @param statusResponse |
|
| 44 |
+ * @return |
|
| 45 |
+ * @throws Exception |
|
| 46 |
+ * |
|
| 47 |
+ */ |
|
| 48 |
+ public KakaoVO populateSendLists(KakaoVO kakaoVO, StatusResponse statusResponse) throws Exception {
|
|
| 49 |
+ |
|
| 50 |
+ //사용자 현재 보유 금액 불러오기(문자 발송 금액 차감 이전 금액) |
|
| 51 |
+// String befCash = kakaoVO.getBefCash(); |
|
| 52 |
+ |
|
| 53 |
+ MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
|
| 54 |
+ mjonMsgVO.setUserId(kakaoVO.getUserId()); |
|
| 55 |
+ String userMoney = priceAndPoint.getBefCash(kakaoVO.getUserId()); |
|
| 56 |
+ String userPoint = priceAndPoint.getBefPoint(kakaoVO.getUserId()); |
|
| 57 |
+ |
|
| 58 |
+ //1.시스템 기본 단가 정보 불러오기 |
|
| 59 |
+ JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); |
|
| 60 |
+ |
|
| 61 |
+ //2.사용자 개인 단가 정보 불러오기 |
|
| 62 |
+ MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(kakaoVO.getUserId()); |
|
| 63 |
+ Float kakaoAtPrice = mberManageVO.getKakaoAtPrice(); |
|
| 64 |
+ |
|
| 65 |
+ /** 대체문자 여부 체크(있으면 대체문자 가격으로 없으면 카카오톡 가격으로) */ |
|
| 66 |
+ //대체문자 발송 여부 확인 |
|
| 67 |
+ if("Y".equals(kakaoVO.getSubMsgSendYn())) {
|
|
| 68 |
+ |
|
| 69 |
+// MsgSendUtils.getSmsTxtBytes |
|
| 70 |
+ |
|
| 71 |
+ |
|
| 72 |
+ String charset = "euc-kr"; //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산 |
|
| 73 |
+ int callToCnt = kakaoVO.getCallToList().length; |
|
| 74 |
+ String sendType = ""; |
|
| 75 |
+ |
|
| 76 |
+ for(int count =0; count < callToCnt; count++) {
|
|
| 77 |
+ |
|
| 78 |
+ |
|
| 79 |
+ String tempSubMagTxt = kakaoVO.getSubMsgTxt().replace("\r\n", "\n");
|
|
| 80 |
+ |
|
| 81 |
+ |
|
| 82 |
+ if(kakaoVO.getSubMsgTxtReplYn().equals("Y")) {
|
|
| 83 |
+ tempSubMagTxt = kakaoSubMagTxtRepl(tempSubMagTxt, kakaoVO, count); |
|
| 84 |
+ } |
|
| 85 |
+ int bytes = tempSubMagTxt.getBytes(charset).length; |
|
| 86 |
+ |
|
| 87 |
+ if(bytes < 2000) {
|
|
| 88 |
+ if(bytes > 90) {
|
|
| 89 |
+ sendType = "MMS"; |
|
| 90 |
+ break; |
|
| 91 |
+ }else {
|
|
| 92 |
+ sendType = "SMS"; |
|
| 93 |
+ } |
|
| 94 |
+ }else {
|
|
| 95 |
+ kakaoVO.setResultCode("2000");
|
|
| 96 |
+ return kakaoVO; |
|
| 97 |
+ } |
|
| 98 |
+ } |
|
| 99 |
+ |
|
| 100 |
+ if(sendType.equals("MMS")) {
|
|
| 101 |
+ //협의 단가가 없으면 시스템 단가로 지정 |
|
| 102 |
+ if(mberManageVO.getLongPrice() < 1) {
|
|
| 103 |
+ kakaoAtPrice = sysJoinSetVO.getLongPrice(); |
|
| 104 |
+ |
|
| 105 |
+ kakaoVO.setSmsPrice(sysJoinSetVO.getShortPrice()); |
|
| 106 |
+ kakaoVO.setMmsPrice(sysJoinSetVO.getLongPrice()); |
|
| 107 |
+ kakaoVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); |
|
| 108 |
+ }else {
|
|
| 109 |
+ kakaoAtPrice = mberManageVO.getLongPrice(); |
|
| 110 |
+ |
|
| 111 |
+ kakaoVO.setSmsPrice(mberManageVO.getShortPrice()); |
|
| 112 |
+ kakaoVO.setMmsPrice(mberManageVO.getLongPrice()); |
|
| 113 |
+ |
|
| 114 |
+ if(mberManageVO.getKakaoAtPrice() < 1) {
|
|
| 115 |
+ kakaoVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); |
|
| 116 |
+ }else {
|
|
| 117 |
+ kakaoVO.setKakaoAtPrice(mberManageVO.getKakaoAtPrice()); |
|
| 118 |
+ } |
|
| 119 |
+ } |
|
| 120 |
+ }else {
|
|
| 121 |
+ //협의 단가가 없으면 시스템 단가로 지정 |
|
| 122 |
+ if(mberManageVO.getShortPrice() < 1) {
|
|
| 123 |
+ kakaoAtPrice = sysJoinSetVO.getShortPrice(); |
|
| 124 |
+ |
|
| 125 |
+ kakaoVO.setSmsPrice(sysJoinSetVO.getShortPrice()); |
|
| 126 |
+ kakaoVO.setMmsPrice(sysJoinSetVO.getLongPrice()); |
|
| 127 |
+ kakaoVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); |
|
| 128 |
+ }else {
|
|
| 129 |
+ kakaoAtPrice = mberManageVO.getShortPrice(); |
|
| 130 |
+ |
|
| 131 |
+ kakaoVO.setSmsPrice(mberManageVO.getShortPrice()); |
|
| 132 |
+ kakaoVO.setMmsPrice(mberManageVO.getLongPrice()); |
|
| 133 |
+ if(mberManageVO.getKakaoAtPrice() < 1) {
|
|
| 134 |
+ kakaoVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); |
|
| 135 |
+ }else {
|
|
| 136 |
+ kakaoVO.setKakaoAtPrice(mberManageVO.getKakaoAtPrice()); |
|
| 137 |
+ } |
|
| 138 |
+ } |
|
| 139 |
+ } |
|
| 140 |
+ }else {
|
|
| 141 |
+ if(kakaoAtPrice < 1) { //협의 단가가 없으면 시스템 단가로 지정
|
|
| 142 |
+ kakaoAtPrice = sysJoinSetVO.getKakaoAtPrice(); |
|
| 143 |
+ |
|
| 144 |
+ kakaoVO.setSmsPrice(sysJoinSetVO.getShortPrice()); |
|
| 145 |
+ kakaoVO.setMmsPrice(sysJoinSetVO.getLongPrice()); |
|
| 146 |
+ kakaoVO.setKakaoAtPrice(sysJoinSetVO.getKakaoAtPrice()); |
|
| 147 |
+ }else {
|
|
| 148 |
+ kakaoVO.setSmsPrice(mberManageVO.getShortPrice()); |
|
| 149 |
+ kakaoVO.setMmsPrice(mberManageVO.getLongPrice()); |
|
| 150 |
+ kakaoVO.setKakaoAtPrice(mberManageVO.getKakaoAtPrice()); |
|
| 151 |
+ } |
|
| 152 |
+ } |
|
| 153 |
+ |
|
| 154 |
+ /** 전송인원 확인*/ |
|
| 155 |
+ int totCallCnt = kakaoVO.getCallToList().length; |
|
| 156 |
+ Float kakaoTotPrice = totCallCnt * kakaoAtPrice; // 총결제 금액 = 총 전송수량 * 카카오 알림톡 단가 |
|
| 157 |
+ String totPrice = kakaoTotPrice.toString(); |
|
| 158 |
+ System.out.println("@@@@@@@ : "+kakaoTotPrice +" = "+totCallCnt+" * "+kakaoAtPrice);
|
|
| 159 |
+ |
|
| 160 |
+ kakaoVO.setEachPrice(kakaoAtPrice.toString()); |
|
| 161 |
+ kakaoVO.setBefCash(userMoney); // 고객 충전금액 |
|
| 162 |
+ kakaoVO.setBefPoint(userPoint); // 고객 충전 포인트 |
|
| 163 |
+ kakaoVO.setTotPrice(totPrice); // 총 카카오 전송 금액 |
|
| 164 |
+ |
|
| 165 |
+ return kakaoVO; |
|
| 166 |
+ } |
|
| 28 | 167 |
|
| 29 | 168 |
/** |
| 30 | 169 |
* @Method Name : kakaoSendPrice |
... | ... | @@ -34,13 +173,11 @@ |
| 34 | 173 |
*/ |
| 35 | 174 |
public KakaoVO kakaoSendPrice(KakaoVO kakaoVO) throws Exception {
|
| 36 | 175 |
|
| 37 |
- //사용자 현재 보유 금액 불러오기(문자 발송 금액 차감 이전 금액) |
|
| 38 |
- String befCash = kakaoVO.getBefCash(); |
|
| 176 |
+ System.out.println(" :: kakaoSendPrice :: ");
|
|
| 39 | 177 |
|
| 40 |
- //VO에서 현재 보유금액이 없으면 디비에서 조회해서 불러옴 |
|
| 41 |
- if("".equals(befCash) || befCash == null) {
|
|
| 42 |
- |
|
| 43 |
- } |
|
| 178 |
+ //사용자 현재 보유 금액 불러오기(문자 발송 금액 차감 이전 금액) |
|
| 179 |
+// String befCash = kakaoVO.getBefCash(); |
|
| 180 |
+ |
|
| 44 | 181 |
MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
| 45 | 182 |
mjonMsgVO.setUserId(kakaoVO.getUserId()); |
| 46 | 183 |
String userMoney = mjonMsgDataService.selectBeforeCashData(mjonMsgVO); |
... | ... | @@ -55,6 +192,7 @@ |
| 55 | 192 |
|
| 56 | 193 |
/** 대체문자 여부 체크(있으면 대체문자 가격으로 없으면 카카오톡 가격으로) */ |
| 57 | 194 |
//대체문자 발송 여부 확인 |
| 195 |
+ System.out.println(" :: kakaoVO.getSubMsgSendYn() :: "+ kakaoVO.getSubMsgSendYn());
|
|
| 58 | 196 |
if(kakaoVO.getSubMsgSendYn().equals("Y")) {
|
| 59 | 197 |
|
| 60 | 198 |
|
... | ... | @@ -66,6 +204,8 @@ |
| 66 | 204 |
String tempSubMagTxt = kakaoVO.getSubMsgTxt().replace("\r\n", "\n");
|
| 67 | 205 |
if(kakaoVO.getSubMsgTxtReplYn().equals("Y")) {
|
| 68 | 206 |
tempSubMagTxt = kakaoSubMagTxtRepl(tempSubMagTxt, kakaoVO, count); |
| 207 |
+// tempSubMagTxt = kakaoSubMagTxtRepl_advc(tempSubMagTxt, kakaoVO, count); |
|
| 208 |
+ System.out.println("+ tempSubMagTxt :: "+ tempSubMagTxt);
|
|
| 69 | 209 |
} |
| 70 | 210 |
int bytes = tempSubMagTxt.getBytes(charset).length; |
| 71 | 211 |
|
... | ... | @@ -401,6 +541,7 @@ |
| 401 | 541 |
varValInfo = kakaoVO.getVarValList().get(count); |
| 402 | 542 |
} |
| 403 | 543 |
String jsonFileName = kakaoApiJsonSave.kakaoApiJsonSave(kakaoVO, varValInfo); |
| 544 |
+// String jsonFileName = kakaoApiJsonSave.kakaoApiJsonSave_advc(kakaoVO, varValInfo); |
|
| 404 | 545 |
// String jsonFileName = kakaoApiJsonSave.kakaoApiJsonSave(kakaoVO, kakaoVO.getVarValList().get(count)); |
| 405 | 546 |
setSendMsgVO.setBizJsonName(jsonFileName); //json 파일명 |
| 406 | 547 |
} |
... | ... | @@ -509,6 +650,7 @@ |
| 509 | 650 |
|
| 510 | 651 |
|
| 511 | 652 |
public String kakaoSubMagTxtRepl(String tempSubMagTxt, KakaoVO kakaoVO, int count) {
|
| 653 |
+ System.out.println("tempSubMagTxt : "+ tempSubMagTxt);
|
|
| 512 | 654 |
|
| 513 | 655 |
// String tempSubMagTxt = kakaoVO.getSubMsgTxt().replace("\r\n", "\n");
|
| 514 | 656 |
// String tempSubMagTxt = msgTxt; |
... | ... | @@ -551,6 +693,7 @@ |
| 551 | 693 |
return tempSubMagTxt; |
| 552 | 694 |
} |
| 553 | 695 |
|
| 696 |
+ |
|
| 554 | 697 |
public String kakaoFTSubMagTxtRepl(String tempSubMagTxt, KakaoVO kakaoVO, int count) throws Exception{
|
| 555 | 698 |
|
| 556 | 699 |
List<String[]> varValList = kakaoVO.getVarValList(); |
--- src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
... | ... | @@ -2,8 +2,11 @@ |
| 2 | 2 |
|
| 3 | 3 |
import java.util.ArrayList; |
| 4 | 4 |
import java.util.List; |
| 5 |
+import java.util.Map; |
|
| 5 | 6 |
|
| 6 | 7 |
import itn.let.mjo.msg.service.MjonMsgVO; |
| 8 |
+import lombok.Getter; |
|
| 9 |
+import lombok.Setter; |
|
| 7 | 10 |
|
| 8 | 11 |
/** |
| 9 | 12 |
* @FileName : KakaoVO.java |
... | ... | @@ -13,6 +16,8 @@ |
| 13 | 16 |
|
| 14 | 17 |
* @프로그램 설명 : 카카오톡 요청 변수 목록 (문자온VO를 상속 받음) |
| 15 | 18 |
*/ |
| 19 |
+@Getter |
|
| 20 |
+@Setter |
|
| 16 | 21 |
public class KakaoVO extends MjonMsgVO{
|
| 17 | 22 |
|
| 18 | 23 |
private static final long serialVersionUID = 536382850588307019L; |
... | ... | @@ -247,995 +252,58 @@ |
| 247 | 252 |
private String successCntMonth; |
| 248 | 253 |
private String successCntYear; |
| 249 | 254 |
|
| 250 |
- public String getSuccessDay() {
|
|
| 251 |
- return successDay; |
|
| 252 |
- } |
|
| 255 |
+ private List<Map<String, String>> varListMap; |
|
| 253 | 256 |
|
| 254 |
- public void setSuccessDay(String successDay) {
|
|
| 255 |
- this.successDay = successDay; |
|
| 256 |
- } |
|
| 257 |
- |
|
| 258 |
- public String getSuccessMonth() {
|
|
| 259 |
- return successMonth; |
|
| 260 |
- } |
|
| 261 |
- |
|
| 262 |
- public void setSuccessMonth(String successMonth) {
|
|
| 263 |
- this.successMonth = successMonth; |
|
| 264 |
- } |
|
| 265 |
- |
|
| 266 |
- public String getSuccessYear() {
|
|
| 267 |
- return successYear; |
|
| 268 |
- } |
|
| 269 |
- |
|
| 270 |
- public void setSuccessYear(String successYear) {
|
|
| 271 |
- this.successYear = successYear; |
|
| 272 |
- } |
|
| 273 |
- |
|
| 274 |
- public String getSuccessCntDay() {
|
|
| 275 |
- return successCntDay; |
|
| 276 |
- } |
|
| 277 |
- |
|
| 278 |
- public void setSuccessCntDay(String successCntDay) {
|
|
| 279 |
- this.successCntDay = successCntDay; |
|
| 280 |
- } |
|
| 281 |
- |
|
| 282 |
- public String getSuccessCntMonth() {
|
|
| 283 |
- return successCntMonth; |
|
| 284 |
- } |
|
| 285 |
- |
|
| 286 |
- public void setSuccessCntMonth(String successCntMonth) {
|
|
| 287 |
- this.successCntMonth = successCntMonth; |
|
| 288 |
- } |
|
| 289 |
- |
|
| 290 |
- public String getSuccessCntYear() {
|
|
| 291 |
- return successCntYear; |
|
| 292 |
- } |
|
| 293 |
- |
|
| 294 |
- public void setSuccessCntYear(String successCntYear) {
|
|
| 295 |
- this.successCntYear = successCntYear; |
|
| 296 |
- } |
|
| 297 |
- |
|
| 298 |
- public static long getSerialversionuid() {
|
|
| 299 |
- return serialVersionUID; |
|
| 300 |
- } |
|
| 301 |
- |
|
| 302 |
- public String getCategoryDepth() {
|
|
| 303 |
- return categoryDepth; |
|
| 304 |
- } |
|
| 305 |
- |
|
| 306 |
- public void setCategoryDepth(String categoryDepth) {
|
|
| 307 |
- this.categoryDepth = categoryDepth; |
|
| 308 |
- } |
|
| 309 |
- |
|
| 310 |
- public String getCategoryType() {
|
|
| 311 |
- return categoryType; |
|
| 312 |
- } |
|
| 313 |
- |
|
| 314 |
- public void setCategoryType(String categoryType) {
|
|
| 315 |
- this.categoryType = categoryType; |
|
| 316 |
- } |
|
| 317 |
- |
|
| 318 |
- public String getCategoryCode() {
|
|
| 319 |
- return categoryCode; |
|
| 320 |
- } |
|
| 321 |
- |
|
| 322 |
- public void setCategoryCode(String categoryCode) {
|
|
| 323 |
- this.categoryCode = categoryCode; |
|
| 324 |
- } |
|
| 325 |
- |
|
| 326 |
- public String getCategoryGroupName() {
|
|
| 327 |
- return categoryGroupName; |
|
| 328 |
- } |
|
| 329 |
- |
|
| 330 |
- public void setCategoryGroupName(String categoryGroupName) {
|
|
| 331 |
- this.categoryGroupName = categoryGroupName; |
|
| 332 |
- } |
|
| 333 |
- |
|
| 334 |
- public String getCategoryName() {
|
|
| 335 |
- return categoryName; |
|
| 336 |
- } |
|
| 337 |
- |
|
| 338 |
- public void setCategoryName(String categoryName) {
|
|
| 339 |
- this.categoryName = categoryName; |
|
| 340 |
- } |
|
| 341 |
- |
|
| 342 |
- public String getCategoryInclusion() {
|
|
| 343 |
- return categoryInclusion; |
|
| 344 |
- } |
|
| 345 |
- |
|
| 346 |
- public void setCategoryInclusion(String categoryInclusion) {
|
|
| 347 |
- this.categoryInclusion = categoryInclusion; |
|
| 348 |
- } |
|
| 349 |
- |
|
| 350 |
- public String getCategoryExclusion() {
|
|
| 351 |
- return categoryExclusion; |
|
| 352 |
- } |
|
| 353 |
- |
|
| 354 |
- public void setCategoryExclusion(String categoryExclusion) {
|
|
| 355 |
- this.categoryExclusion = categoryExclusion; |
|
| 356 |
- } |
|
| 357 |
- |
|
| 358 |
- public String getBizUrl() {
|
|
| 359 |
- return bizUrl; |
|
| 360 |
- } |
|
| 361 |
- |
|
| 362 |
- public void setBizUrl(String bizUrl) {
|
|
| 363 |
- this.bizUrl = bizUrl; |
|
| 364 |
- } |
|
| 365 |
- |
|
| 366 |
- public String getBizReturnMsg() {
|
|
| 367 |
- return bizReturnMsg; |
|
| 368 |
- } |
|
| 369 |
- |
|
| 370 |
- public void setBizReturnMsg(String bizReturnMsg) {
|
|
| 371 |
- this.bizReturnMsg = bizReturnMsg; |
|
| 372 |
- } |
|
| 373 |
- |
|
| 374 |
- public String getBizReturnCode() {
|
|
| 375 |
- return bizReturnCode; |
|
| 376 |
- } |
|
| 377 |
- |
|
| 378 |
- public void setBizReturnCode(String bizReturnCode) {
|
|
| 379 |
- this.bizReturnCode = bizReturnCode; |
|
| 380 |
- } |
|
| 381 |
- |
|
| 382 |
- public String getPhoneNumber() {
|
|
| 383 |
- return phoneNumber; |
|
| 384 |
- } |
|
| 385 |
- |
|
| 386 |
- public void setPhoneNumber(String phoneNumber) {
|
|
| 387 |
- this.phoneNumber = phoneNumber; |
|
| 388 |
- } |
|
| 389 |
- |
|
| 390 |
- public String getYellowId() {
|
|
| 391 |
- return yellowId; |
|
| 392 |
- } |
|
| 393 |
- |
|
| 394 |
- public void setYellowId(String yellowId) {
|
|
| 395 |
- this.yellowId = yellowId; |
|
| 396 |
- } |
|
| 397 |
- |
|
| 398 |
- public String getBizJsonName() {
|
|
| 399 |
- return bizJsonName; |
|
| 400 |
- } |
|
| 401 |
- |
|
| 402 |
- public void setBizJsonName(String bizJsonName) {
|
|
| 403 |
- this.bizJsonName = bizJsonName; |
|
| 404 |
- } |
|
| 405 |
- |
|
| 406 |
- public String getToken() {
|
|
| 407 |
- return token; |
|
| 408 |
- } |
|
| 409 |
- |
|
| 410 |
- public void setToken(String token) {
|
|
| 411 |
- this.token = token; |
|
| 412 |
- } |
|
| 413 |
- |
|
| 414 |
- public String getSenderKey() {
|
|
| 415 |
- return senderKey; |
|
| 416 |
- } |
|
| 417 |
- |
|
| 418 |
- public void setSenderKey(String senderKey) {
|
|
| 419 |
- this.senderKey = senderKey; |
|
| 420 |
- } |
|
| 421 |
- |
|
| 422 |
- public String getProfileId() {
|
|
| 423 |
- return profileId; |
|
| 424 |
- } |
|
| 425 |
- |
|
| 426 |
- public void setProfileId(String profileId) {
|
|
| 427 |
- this.profileId = profileId; |
|
| 428 |
- } |
|
| 429 |
- |
|
| 430 |
- public String getUserId() {
|
|
| 431 |
- return userId; |
|
| 432 |
- } |
|
| 433 |
- |
|
| 434 |
- public void setUserId(String userId) {
|
|
| 435 |
- this.userId = userId; |
|
| 436 |
- } |
|
| 437 |
- |
|
| 438 |
- public String getImgTitle() {
|
|
| 439 |
- return imgTitle; |
|
| 440 |
- } |
|
| 441 |
- |
|
| 442 |
- public void setImgTitle(String imgTitle) {
|
|
| 443 |
- this.imgTitle = imgTitle; |
|
| 444 |
- } |
|
| 445 |
- |
|
| 446 |
- public String getImageType() {
|
|
| 447 |
- return imageType; |
|
| 448 |
- } |
|
| 449 |
- |
|
| 450 |
- public void setImageType(String imageType) {
|
|
| 451 |
- this.imageType = imageType; |
|
| 452 |
- } |
|
| 453 |
- |
|
| 454 |
- public String getImgLink() {
|
|
| 455 |
- return imgLink; |
|
| 456 |
- } |
|
| 457 |
- |
|
| 458 |
- public void setImgLink(String imgLink) {
|
|
| 459 |
- this.imgLink = imgLink; |
|
| 460 |
- } |
|
| 461 |
- |
|
| 462 |
- public String getTemplateName() {
|
|
| 463 |
- return templateName; |
|
| 464 |
- } |
|
| 465 |
- |
|
| 466 |
- public void setTemplateName(String templateName) {
|
|
| 467 |
- this.templateName = templateName; |
|
| 468 |
- } |
|
| 469 |
- |
|
| 470 |
- public String getTemplateMessageType() {
|
|
| 471 |
- return templateMessageType; |
|
| 472 |
- } |
|
| 473 |
- |
|
| 474 |
- public void setTemplateMessageType(String templateMessageType) {
|
|
| 475 |
- this.templateMessageType = templateMessageType; |
|
| 476 |
- } |
|
| 477 |
- |
|
| 478 |
- public String getTemplateEmphasizeType() {
|
|
| 479 |
- return templateEmphasizeType; |
|
| 480 |
- } |
|
| 481 |
- |
|
| 482 |
- public void setTemplateEmphasizeType(String templateEmphasizeType) {
|
|
| 483 |
- this.templateEmphasizeType = templateEmphasizeType; |
|
| 484 |
- } |
|
| 485 |
- |
|
| 486 |
- public String getTemplateContent() {
|
|
| 487 |
- return templateContent; |
|
| 488 |
- } |
|
| 489 |
- |
|
| 490 |
- public void setTemplateContent(String templateContent) {
|
|
| 491 |
- this.templateContent = templateContent; |
|
| 492 |
- } |
|
| 493 |
- |
|
| 494 |
- public String getTemplateExtra() {
|
|
| 495 |
- return templateExtra; |
|
| 496 |
- } |
|
| 497 |
- |
|
| 498 |
- public void setTemplateExtra(String templateExtra) {
|
|
| 499 |
- this.templateExtra = templateExtra; |
|
| 500 |
- } |
|
| 501 |
- |
|
| 502 |
- public String getTamplateAd() {
|
|
| 503 |
- return tamplateAd; |
|
| 504 |
- } |
|
| 505 |
- |
|
| 506 |
- public void setTamplateAd(String tamplateAd) {
|
|
| 507 |
- this.tamplateAd = tamplateAd; |
|
| 508 |
- } |
|
| 509 |
- |
|
| 510 |
- public String getTemplateImageName() {
|
|
| 511 |
- return templateImageName; |
|
| 512 |
- } |
|
| 513 |
- |
|
| 514 |
- public void setTemplateImageName(String templateImageName) {
|
|
| 515 |
- this.templateImageName = templateImageName; |
|
| 516 |
- } |
|
| 517 |
- |
|
| 518 |
- public String getTemplateImageUrl() {
|
|
| 519 |
- return templateImageUrl; |
|
| 520 |
- } |
|
| 521 |
- |
|
| 522 |
- public void setTemplateImageUrl(String templateImageUrl) {
|
|
| 523 |
- this.templateImageUrl = templateImageUrl; |
|
| 524 |
- } |
|
| 525 |
- |
|
| 526 |
- public String getTemplateTitle() {
|
|
| 527 |
- return templateTitle; |
|
| 528 |
- } |
|
| 529 |
- |
|
| 530 |
- public void setTemplateTitle(String templateTitle) {
|
|
| 531 |
- this.templateTitle = templateTitle; |
|
| 532 |
- } |
|
| 533 |
- |
|
| 534 |
- public String getTemplateSubtitle() {
|
|
| 535 |
- return templateSubtitle; |
|
| 536 |
- } |
|
| 537 |
- |
|
| 538 |
- public void setTemplateSubtitle(String templateSubtitle) {
|
|
| 539 |
- this.templateSubtitle = templateSubtitle; |
|
| 540 |
- } |
|
| 541 |
- |
|
| 542 |
- public String getTemplateHeader() {
|
|
| 543 |
- return templateHeader; |
|
| 544 |
- } |
|
| 545 |
- |
|
| 546 |
- public void setTemplateHeader(String templateHeader) {
|
|
| 547 |
- this.templateHeader = templateHeader; |
|
| 548 |
- } |
|
| 549 |
- |
|
| 550 |
- public Boolean getSecurityFlag() {
|
|
| 551 |
- return securityFlag; |
|
| 552 |
- } |
|
| 553 |
- |
|
| 554 |
- public void setSecurityFlag(Boolean securityFlag) {
|
|
| 555 |
- this.securityFlag = securityFlag; |
|
| 556 |
- } |
|
| 557 |
- |
|
| 558 |
- public List<KakaoButtonVO> getButtonVOList() {
|
|
| 559 |
- return buttonVOList; |
|
| 560 |
- } |
|
| 561 |
- |
|
| 562 |
- public void setButtonVOList(List<KakaoButtonVO> buttonVOList) {
|
|
| 563 |
- this.buttonVOList = buttonVOList; |
|
| 564 |
- } |
|
| 565 |
- |
|
| 566 |
- public String getButtonName() {
|
|
| 567 |
- return buttonName; |
|
| 568 |
- } |
|
| 569 |
- |
|
| 570 |
- public void setButtonName(String buttonName) {
|
|
| 571 |
- this.buttonName = buttonName; |
|
| 572 |
- } |
|
| 573 |
- |
|
| 574 |
- public String getButtonLinkType() {
|
|
| 575 |
- return buttonLinkType; |
|
| 576 |
- } |
|
| 577 |
- |
|
| 578 |
- public void setButtonLinkType(String buttonLinkType) {
|
|
| 579 |
- this.buttonLinkType = buttonLinkType; |
|
| 580 |
- } |
|
| 581 |
- |
|
| 582 |
- public String getButtonLinkAnd() {
|
|
| 583 |
- return buttonLinkAnd; |
|
| 584 |
- } |
|
| 585 |
- |
|
| 586 |
- public void setButtonLinkAnd(String buttonLinkAnd) {
|
|
| 587 |
- this.buttonLinkAnd = buttonLinkAnd; |
|
| 588 |
- } |
|
| 589 |
- |
|
| 590 |
- public String getButtonLinkIos() {
|
|
| 591 |
- return buttonLinkIos; |
|
| 592 |
- } |
|
| 593 |
- |
|
| 594 |
- public void setButtonLinkIos(String buttonLinkIos) {
|
|
| 595 |
- this.buttonLinkIos = buttonLinkIos; |
|
| 596 |
- } |
|
| 597 |
- |
|
| 598 |
- public String getButtonLinkMo() {
|
|
| 599 |
- return buttonLinkMo; |
|
| 600 |
- } |
|
| 601 |
- |
|
| 602 |
- public void setButtonLinkMo(String buttonLinkMo) {
|
|
| 603 |
- this.buttonLinkMo = buttonLinkMo; |
|
| 604 |
- } |
|
| 605 |
- |
|
| 606 |
- public String getButtonLinkPc() {
|
|
| 607 |
- return buttonLinkPc; |
|
| 608 |
- } |
|
| 609 |
- |
|
| 610 |
- public void setButtonLinkPc(String buttonLinkPc) {
|
|
| 611 |
- this.buttonLinkPc = buttonLinkPc; |
|
| 612 |
- } |
|
| 613 |
- |
|
| 614 |
- public String getButtonPluginId() {
|
|
| 615 |
- return buttonPluginId; |
|
| 616 |
- } |
|
| 617 |
- |
|
| 618 |
- public void setButtonPluginId(String buttonPluginId) {
|
|
| 619 |
- this.buttonPluginId = buttonPluginId; |
|
| 620 |
- } |
|
| 621 |
- |
|
| 622 |
- public String getQuickName() {
|
|
| 623 |
- return quickName; |
|
| 624 |
- } |
|
| 625 |
- |
|
| 626 |
- public void setQuickName(String quickName) {
|
|
| 627 |
- this.quickName = quickName; |
|
| 628 |
- } |
|
| 629 |
- |
|
| 630 |
- public String getQuickLinkType() {
|
|
| 631 |
- return quickLinkType; |
|
| 632 |
- } |
|
| 633 |
- |
|
| 634 |
- public void setQuickLinkType(String quickLinkType) {
|
|
| 635 |
- this.quickLinkType = quickLinkType; |
|
| 636 |
- } |
|
| 637 |
- |
|
| 638 |
- public String getQuickLinkAnd() {
|
|
| 639 |
- return quickLinkAnd; |
|
| 640 |
- } |
|
| 641 |
- |
|
| 642 |
- public void setQuickLinkAnd(String quickLinkAnd) {
|
|
| 643 |
- this.quickLinkAnd = quickLinkAnd; |
|
| 644 |
- } |
|
| 645 |
- |
|
| 646 |
- public String getQuickLinkIos() {
|
|
| 647 |
- return quickLinkIos; |
|
| 648 |
- } |
|
| 649 |
- |
|
| 650 |
- public void setQuickLinkIos(String quickLinkIos) {
|
|
| 651 |
- this.quickLinkIos = quickLinkIos; |
|
| 652 |
- } |
|
| 653 |
- |
|
| 654 |
- public String getQuickLinkMo() {
|
|
| 655 |
- return quickLinkMo; |
|
| 656 |
- } |
|
| 657 |
- |
|
| 658 |
- public void setQuickLinkMo(String quickLinkMo) {
|
|
| 659 |
- this.quickLinkMo = quickLinkMo; |
|
| 660 |
- } |
|
| 661 |
- |
|
| 662 |
- public String getQuickLinkPc() {
|
|
| 663 |
- return quickLinkPc; |
|
| 664 |
- } |
|
| 665 |
- |
|
| 666 |
- public void setQuickLinkPc(String quickLinkPc) {
|
|
| 667 |
- this.quickLinkPc = quickLinkPc; |
|
| 668 |
- } |
|
| 669 |
- |
|
| 670 |
- public String getSenderKeyType() {
|
|
| 671 |
- return senderKeyType; |
|
| 672 |
- } |
|
| 673 |
- |
|
| 674 |
- public void setSenderKeyType(String senderKeyType) {
|
|
| 675 |
- this.senderKeyType = senderKeyType; |
|
| 676 |
- } |
|
| 677 |
- |
|
| 678 |
- public String getDeleteYn() {
|
|
| 679 |
- return deleteYn; |
|
| 680 |
- } |
|
| 681 |
- |
|
| 682 |
- public void setDeleteYn(String deleteYn) {
|
|
| 683 |
- this.deleteYn = deleteYn; |
|
| 684 |
- } |
|
| 685 |
- |
|
| 686 |
- public String getTemplateCode() {
|
|
| 687 |
- return templateCode; |
|
| 688 |
- } |
|
| 689 |
- |
|
| 690 |
- public void setTemplateCode(String templateCode) {
|
|
| 691 |
- this.templateCode = templateCode; |
|
| 692 |
- } |
|
| 693 |
- |
|
| 694 |
- public String getNewTemplateCode() {
|
|
| 695 |
- return newTemplateCode; |
|
| 696 |
- } |
|
| 697 |
- |
|
| 698 |
- public void setNewTemplateCode(String newTemplateCode) {
|
|
| 699 |
- this.newTemplateCode = newTemplateCode; |
|
| 700 |
- } |
|
| 701 |
- |
|
| 702 |
- public String[] getArrTemplateCode() {
|
|
| 703 |
- return arrTemplateCode; |
|
| 704 |
- } |
|
| 705 |
- |
|
| 706 |
- public void setArrTemplateCode(String[] arrTemplateCode) {
|
|
| 707 |
- this.arrTemplateCode = arrTemplateCode; |
|
| 708 |
- } |
|
| 709 |
- |
|
| 710 |
- public String getTemplateStatus() {
|
|
| 711 |
- return templateStatus; |
|
| 712 |
- } |
|
| 713 |
- |
|
| 714 |
- public void setTemplateStatus(String templateStatus) {
|
|
| 715 |
- this.templateStatus = templateStatus; |
|
| 716 |
- } |
|
| 717 |
- |
|
| 718 |
- public String getKeyword() {
|
|
| 719 |
- return keyword; |
|
| 720 |
- } |
|
| 721 |
- |
|
| 722 |
- public void setKeyword(String keyword) {
|
|
| 723 |
- this.keyword = keyword; |
|
| 724 |
- } |
|
| 725 |
- |
|
| 726 |
- public String getSendPhone() {
|
|
| 727 |
- return sendPhone; |
|
| 728 |
- } |
|
| 729 |
- |
|
| 730 |
- public void setSendPhone(String sendPhone) {
|
|
| 731 |
- this.sendPhone = sendPhone; |
|
| 732 |
- } |
|
| 733 |
- |
|
| 734 |
- public String getDestPhone() {
|
|
| 735 |
- return destPhone; |
|
| 736 |
- } |
|
| 737 |
- |
|
| 738 |
- public void setDestPhone(String destPhone) {
|
|
| 739 |
- this.destPhone = destPhone; |
|
| 740 |
- } |
|
| 741 |
- |
|
| 742 |
- public String getSubMsgSendYn() {
|
|
| 743 |
- return subMsgSendYn; |
|
| 744 |
- } |
|
| 745 |
- |
|
| 746 |
- public void setSubMsgSendYn(String subMsgSendYn) {
|
|
| 747 |
- this.subMsgSendYn = subMsgSendYn; |
|
| 748 |
- } |
|
| 749 |
- |
|
| 750 |
- public String getCount() {
|
|
| 751 |
- return count; |
|
| 752 |
- } |
|
| 753 |
- |
|
| 754 |
- public void setCount(String count) {
|
|
| 755 |
- this.count = count; |
|
| 756 |
- } |
|
| 757 |
- |
|
| 758 |
- public String getPage() {
|
|
| 759 |
- return page; |
|
| 760 |
- } |
|
| 761 |
- |
|
| 762 |
- public void setPage(String page) {
|
|
| 763 |
- this.page = page; |
|
| 764 |
- } |
|
| 765 |
- |
|
| 766 |
- public String getBizUmid() {
|
|
| 767 |
- return bizUmid; |
|
| 768 |
- } |
|
| 769 |
- |
|
| 770 |
- public void setBizUmid(String bizUmid) {
|
|
| 771 |
- this.bizUmid = bizUmid; |
|
| 772 |
- } |
|
| 773 |
- |
|
| 774 |
- public List<String> getVarNmList() {
|
|
| 775 |
- return varNmList; |
|
| 776 |
- } |
|
| 777 |
- |
|
| 778 |
- public void setVarNmList(List<String> varNmList) {
|
|
| 779 |
- this.varNmList = varNmList; |
|
| 780 |
- } |
|
| 781 |
- |
|
| 782 |
- public List<String[]> getVarValList() {
|
|
| 783 |
- return varValList; |
|
| 784 |
- } |
|
| 785 |
- |
|
| 786 |
- public void setVarValList(List<String[]> varValList) {
|
|
| 787 |
- this.varValList = varValList; |
|
| 788 |
- } |
|
| 789 |
- |
|
| 790 |
- public String getFormListType() {
|
|
| 791 |
- return formListType; |
|
| 792 |
- } |
|
| 793 |
- |
|
| 794 |
- public void setFormListType(String formListType) {
|
|
| 795 |
- this.formListType = formListType; |
|
| 796 |
- } |
|
| 797 |
- |
|
| 798 |
- public String getSubMsgTxt() {
|
|
| 799 |
- return subMsgTxt; |
|
| 800 |
- } |
|
| 801 |
- |
|
| 802 |
- public void setSubMsgTxt(String subMsgTxt) {
|
|
| 803 |
- this.subMsgTxt = subMsgTxt; |
|
| 804 |
- } |
|
| 805 |
- |
|
| 806 |
- public String getBizJsonYn() {
|
|
| 807 |
- return bizJsonYn; |
|
| 808 |
- } |
|
| 809 |
- |
|
| 810 |
- public void setBizJsonYn(String bizJsonYn) {
|
|
| 811 |
- this.bizJsonYn = bizJsonYn; |
|
| 812 |
- } |
|
| 813 |
- |
|
| 814 |
- public String getSendType() {
|
|
| 815 |
- return sendType; |
|
| 816 |
- } |
|
| 817 |
- |
|
| 818 |
- public void setSendType(String sendType) {
|
|
| 819 |
- this.sendType = sendType; |
|
| 820 |
- } |
|
| 821 |
- |
|
| 822 |
- public String getAdFlag() {
|
|
| 823 |
- return adFlag; |
|
| 824 |
- } |
|
| 825 |
- |
|
| 826 |
- public void setAdFlag(String adFlag) {
|
|
| 827 |
- this.adFlag = adFlag; |
|
| 828 |
- } |
|
| 829 |
- |
|
| 830 |
- public List<KakaoVO> getKakaoSendList() {
|
|
| 831 |
- return kakaoSendList; |
|
| 832 |
- } |
|
| 833 |
- |
|
| 834 |
- public void setKakaoSendList(List<KakaoVO> kakaoSendList) {
|
|
| 835 |
- this.kakaoSendList = kakaoSendList; |
|
| 836 |
- } |
|
| 837 |
- |
|
| 838 |
- public String getSubMsgTxtReplYn() {
|
|
| 839 |
- return subMsgTxtReplYn; |
|
| 840 |
- } |
|
| 841 |
- |
|
| 842 |
- public void setSubMsgTxtReplYn(String subMsgTxtReplYn) {
|
|
| 843 |
- this.subMsgTxtReplYn = subMsgTxtReplYn; |
|
| 844 |
- } |
|
| 845 |
- |
|
| 846 |
- public String getSubMsgType() {
|
|
| 847 |
- return subMsgType; |
|
| 848 |
- } |
|
| 849 |
- |
|
| 850 |
- public void setSubMsgType(String subMsgType) {
|
|
| 851 |
- this.subMsgType = subMsgType; |
|
| 852 |
- } |
|
| 853 |
- public List<String[]> varValPaser(String[] varValList){
|
|
| 854 |
- |
|
| 855 |
- List<String[]> returnVarVal = new ArrayList<>(); |
|
| 856 |
- |
|
| 857 |
- for(String varVal : varValList) |
|
| 858 |
- {
|
|
| 859 |
- String[] strList = varVal.split("§");
|
|
| 860 |
- returnVarVal.add(strList); |
|
| 257 |
+ @Override |
|
| 258 |
+ public String toString() {
|
|
| 259 |
+ String varListMapString = "["; |
|
| 260 |
+ if (varListMap != null && !varListMap.isEmpty()) {
|
|
| 261 |
+ StringBuilder sb = new StringBuilder(); |
|
| 262 |
+ for (Map<String, String> map : varListMap) {
|
|
| 263 |
+ if (sb.length() > 0) |
|
| 264 |
+ sb.append(", ");
|
|
| 265 |
+ if (map == null) {
|
|
| 266 |
+ sb.append("null");
|
|
| 267 |
+ } else {
|
|
| 268 |
+ sb.append("{");
|
|
| 269 |
+ String prefix = ""; |
|
| 270 |
+ for (Map.Entry<String, String> entry : map.entrySet()) {
|
|
| 271 |
+ sb.append(prefix).append(entry.getKey()).append("=").append(entry.getValue());
|
|
| 272 |
+ prefix = ", "; |
|
| 273 |
+ } |
|
| 274 |
+ sb.append("}");
|
|
| 275 |
+ } |
|
| 276 |
+ } |
|
| 277 |
+ varListMapString += sb.toString(); |
|
| 861 | 278 |
} |
| 279 |
+ varListMapString += "]"; |
|
| 862 | 280 |
|
| 863 |
- return returnVarVal; |
|
| 281 |
+ return "KakaoSendAdvcVO[" + |
|
| 282 |
+ "\n senderKey=[" + senderKey + "]" + |
|
| 283 |
+ "\n , subMsgTxtReplYn=[" + subMsgTxtReplYn + "]" + |
|
| 284 |
+ "\n , subMsgSendYn=[" + subMsgSendYn + "]" + |
|
| 285 |
+ "\n , reserveYn=[" + getReserveYn() + "]" + |
|
| 286 |
+ "\n , divideCnt=[" + getDivideCnt() + "]" + |
|
| 287 |
+ "\n , bizJsonYn=[" + bizJsonYn + "]" + |
|
| 288 |
+ "\n , templateEmphasizeType=[" + templateEmphasizeType + "]" + |
|
| 289 |
+ "\n , templateSubtitle=[" + templateSubtitle + "]" + |
|
| 290 |
+ "\n , txtReplYn=[" + getTxtReplYn() + "]" + |
|
| 291 |
+ "\n , callFrom=[" + getCallFrom() + "]" + |
|
| 292 |
+ "\n , templateCode=[" + templateCode + "]" + |
|
| 293 |
+ "\n , divideTime=[" + getDivideTime() + "]" + |
|
| 294 |
+ "\n , reqDate=[" + getReqDate() + "]" + |
|
| 295 |
+ "\n , atSmishingYn=[" + getAtSmishingYn() + "]" + |
|
| 296 |
+ "\n , menuTopTab=[" + menuTopTab + "]" + |
|
| 297 |
+ "\n , templateContent=[" + templateContent + "]" + |
|
| 298 |
+ "\n , templateTitle=[" + templateTitle + "]" + |
|
| 299 |
+ "\n , subMsgTxt=[" + subMsgTxt + "]" + |
|
| 300 |
+ "\n , divideChk=[" + getDivideChk() + "]" + |
|
| 301 |
+ "\n , sendType=[" + sendType + "]" + |
|
| 302 |
+ "\n , msgType=[" + getMsgType() + "]" + |
|
| 303 |
+ "\n , userId=[" + userId + "]" + |
|
| 304 |
+ "\n , varListMap=[" + varListMapString + "]" + |
|
| 305 |
+ "\n ]"; |
|
| 864 | 306 |
} |
| 865 |
- |
|
| 866 |
- public String getMenuTopTab() {
|
|
| 867 |
- return menuTopTab; |
|
| 868 |
- } |
|
| 869 |
- |
|
| 870 |
- public void setMenuTopTab(String menuTopTab) {
|
|
| 871 |
- this.menuTopTab = menuTopTab; |
|
| 872 |
- } |
|
| 873 |
- |
|
| 874 |
- public String getMenuSubTab() {
|
|
| 875 |
- return menuSubTab; |
|
| 876 |
- } |
|
| 877 |
- |
|
| 878 |
- public void setMenuSubTab(String menuSubTab) {
|
|
| 879 |
- this.menuSubTab = menuSubTab; |
|
| 880 |
- } |
|
| 881 |
- |
|
| 882 |
- public String getSearchCondition2() {
|
|
| 883 |
- return searchCondition2; |
|
| 884 |
- } |
|
| 885 |
- |
|
| 886 |
- public void setSearchCondition2(String searchCondition2) {
|
|
| 887 |
- this.searchCondition2 = searchCondition2; |
|
| 888 |
- } |
|
| 889 |
- |
|
| 890 |
- public String getKakaoResendSuccCount() {
|
|
| 891 |
- return kakaoResendSuccCount; |
|
| 892 |
- } |
|
| 893 |
- |
|
| 894 |
- public void setKakaoResendSuccCount(String kakaoResendSuccCount) {
|
|
| 895 |
- this.kakaoResendSuccCount = kakaoResendSuccCount; |
|
| 896 |
- } |
|
| 897 |
- |
|
| 898 |
- public String getKakaoResendFailCount() {
|
|
| 899 |
- return kakaoResendFailCount; |
|
| 900 |
- } |
|
| 901 |
- |
|
| 902 |
- public void setKakaoResendFailCount(String kakaoResendFailCount) {
|
|
| 903 |
- this.kakaoResendFailCount = kakaoResendFailCount; |
|
| 904 |
- } |
|
| 905 |
- |
|
| 906 |
- public String getAtSuccessCount() {
|
|
| 907 |
- return atSuccessCount; |
|
| 908 |
- } |
|
| 909 |
- |
|
| 910 |
- public void setAtSuccessCount(String atSuccessCount) {
|
|
| 911 |
- this.atSuccessCount = atSuccessCount; |
|
| 912 |
- } |
|
| 913 |
- |
|
| 914 |
- public String getFtSuccessCount() {
|
|
| 915 |
- return ftSuccessCount; |
|
| 916 |
- } |
|
| 917 |
- |
|
| 918 |
- public void setFtSuccessCount(String ftSuccessCount) {
|
|
| 919 |
- this.ftSuccessCount = ftSuccessCount; |
|
| 920 |
- } |
|
| 921 |
- |
|
| 922 |
- public String getAtFailCount() {
|
|
| 923 |
- return atFailCount; |
|
| 924 |
- } |
|
| 925 |
- |
|
| 926 |
- public void setAtFailCount(String atFailCount) {
|
|
| 927 |
- this.atFailCount = atFailCount; |
|
| 928 |
- } |
|
| 929 |
- |
|
| 930 |
- public String getFtFailCount() {
|
|
| 931 |
- return ftFailCount; |
|
| 932 |
- } |
|
| 933 |
- |
|
| 934 |
- public void setFtFailCount(String ftFailCount) {
|
|
| 935 |
- this.ftFailCount = ftFailCount; |
|
| 936 |
- } |
|
| 937 |
- |
|
| 938 |
- public String getAtSuccPrice() {
|
|
| 939 |
- return atSuccPrice; |
|
| 940 |
- } |
|
| 941 |
- |
|
| 942 |
- public void setAtSuccPrice(String atSuccPrice) {
|
|
| 943 |
- this.atSuccPrice = atSuccPrice; |
|
| 944 |
- } |
|
| 945 |
- |
|
| 946 |
- public String getFtSuccPrice() {
|
|
| 947 |
- return ftSuccPrice; |
|
| 948 |
- } |
|
| 949 |
- |
|
| 950 |
- public void setFtSuccPrice(String ftSuccPrice) {
|
|
| 951 |
- this.ftSuccPrice = ftSuccPrice; |
|
| 952 |
- } |
|
| 953 |
- |
|
| 954 |
- public String getAtFailPrice() {
|
|
| 955 |
- return atFailPrice; |
|
| 956 |
- } |
|
| 957 |
- |
|
| 958 |
- public void setAtFailPrice(String atFailPrice) {
|
|
| 959 |
- this.atFailPrice = atFailPrice; |
|
| 960 |
- } |
|
| 961 |
- |
|
| 962 |
- public String getFtFailPrice() {
|
|
| 963 |
- return ftFailPrice; |
|
| 964 |
- } |
|
| 965 |
- |
|
| 966 |
- public void setFtFailPrice(String ftFailPrice) {
|
|
| 967 |
- this.ftFailPrice = ftFailPrice; |
|
| 968 |
- } |
|
| 969 |
- |
|
| 970 |
- public String getKakaoResendSuccPrice() {
|
|
| 971 |
- return kakaoResendSuccPrice; |
|
| 972 |
- } |
|
| 973 |
- |
|
| 974 |
- public void setKakaoResendSuccPrice(String kakaoResendSuccPrice) {
|
|
| 975 |
- this.kakaoResendSuccPrice = kakaoResendSuccPrice; |
|
| 976 |
- } |
|
| 977 |
- |
|
| 978 |
- public String getKakaoResendFailPrice() {
|
|
| 979 |
- return kakaoResendFailPrice; |
|
| 980 |
- } |
|
| 981 |
- |
|
| 982 |
- public void setKakaoResendFailPrice(String kakaoResendFailPrice) {
|
|
| 983 |
- this.kakaoResendFailPrice = kakaoResendFailPrice; |
|
| 984 |
- } |
|
| 985 |
- |
|
| 986 |
- public String getAtSuccCntSum() {
|
|
| 987 |
- return atSuccCntSum; |
|
| 988 |
- } |
|
| 989 |
- |
|
| 990 |
- public void setAtSuccCntSum(String atSuccCntSum) {
|
|
| 991 |
- this.atSuccCntSum = atSuccCntSum; |
|
| 992 |
- } |
|
| 993 |
- |
|
| 994 |
- public String getFtSuccCntSum() {
|
|
| 995 |
- return ftSuccCntSum; |
|
| 996 |
- } |
|
| 997 |
- |
|
| 998 |
- public void setFtSuccCntSum(String ftSuccCntSum) {
|
|
| 999 |
- this.ftSuccCntSum = ftSuccCntSum; |
|
| 1000 |
- } |
|
| 1001 |
- |
|
| 1002 |
- public String getAtFailCntSum() {
|
|
| 1003 |
- return atFailCntSum; |
|
| 1004 |
- } |
|
| 1005 |
- |
|
| 1006 |
- public void setAtFailCntSum(String atFailCntSum) {
|
|
| 1007 |
- this.atFailCntSum = atFailCntSum; |
|
| 1008 |
- } |
|
| 1009 |
- |
|
| 1010 |
- public String getFtFailCntSum() {
|
|
| 1011 |
- return ftFailCntSum; |
|
| 1012 |
- } |
|
| 1013 |
- |
|
| 1014 |
- public void setFtFailCntSum(String ftFailCntSum) {
|
|
| 1015 |
- this.ftFailCntSum = ftFailCntSum; |
|
| 1016 |
- } |
|
| 1017 |
- |
|
| 1018 |
- public String getKakaoResenSuccSum() {
|
|
| 1019 |
- return kakaoResenSuccSum; |
|
| 1020 |
- } |
|
| 1021 |
- |
|
| 1022 |
- public void setKakaoResenSuccSum(String kakaoResenSuccSum) {
|
|
| 1023 |
- this.kakaoResenSuccSum = kakaoResenSuccSum; |
|
| 1024 |
- } |
|
| 1025 |
- |
|
| 1026 |
- public String getKakaoResenFailSum() {
|
|
| 1027 |
- return kakaoResenFailSum; |
|
| 1028 |
- } |
|
| 1029 |
- |
|
| 1030 |
- public void setKakaoResenFailSum(String kakaoResenFailSum) {
|
|
| 1031 |
- this.kakaoResenFailSum = kakaoResenFailSum; |
|
| 1032 |
- } |
|
| 1033 |
- |
|
| 1034 |
- public String getAtSuccPriceSum() {
|
|
| 1035 |
- return atSuccPriceSum; |
|
| 1036 |
- } |
|
| 1037 |
- |
|
| 1038 |
- public void setAtSuccPriceSum(String atSuccPriceSum) {
|
|
| 1039 |
- this.atSuccPriceSum = atSuccPriceSum; |
|
| 1040 |
- } |
|
| 1041 |
- |
|
| 1042 |
- public String getFtSuccPriceSum() {
|
|
| 1043 |
- return ftSuccPriceSum; |
|
| 1044 |
- } |
|
| 1045 |
- |
|
| 1046 |
- public void setFtSuccPriceSum(String ftSuccPriceSum) {
|
|
| 1047 |
- this.ftSuccPriceSum = ftSuccPriceSum; |
|
| 1048 |
- } |
|
| 1049 |
- |
|
| 1050 |
- public String getAtFailPriceSum() {
|
|
| 1051 |
- return atFailPriceSum; |
|
| 1052 |
- } |
|
| 1053 |
- |
|
| 1054 |
- public void setAtFailPriceSum(String atFailPriceSum) {
|
|
| 1055 |
- this.atFailPriceSum = atFailPriceSum; |
|
| 1056 |
- } |
|
| 1057 |
- |
|
| 1058 |
- public String getFtFailPriceSum() {
|
|
| 1059 |
- return ftFailPriceSum; |
|
| 1060 |
- } |
|
| 1061 |
- |
|
| 1062 |
- public void setFtFailPriceSum(String ftFailPriceSum) {
|
|
| 1063 |
- this.ftFailPriceSum = ftFailPriceSum; |
|
| 1064 |
- } |
|
| 1065 |
- |
|
| 1066 |
- public String getKakaoResendSuccPriceSum() {
|
|
| 1067 |
- return kakaoResendSuccPriceSum; |
|
| 1068 |
- } |
|
| 1069 |
- |
|
| 1070 |
- public void setKakaoResendSuccPriceSum(String kakaoResendSuccPriceSum) {
|
|
| 1071 |
- this.kakaoResendSuccPriceSum = kakaoResendSuccPriceSum; |
|
| 1072 |
- } |
|
| 1073 |
- |
|
| 1074 |
- public String getKakaoResendFailPriceSum() {
|
|
| 1075 |
- return kakaoResendFailPriceSum; |
|
| 1076 |
- } |
|
| 1077 |
- |
|
| 1078 |
- public void setKakaoResendFailPriceSum(String kakaoResendFailPriceSum) {
|
|
| 1079 |
- this.kakaoResendFailPriceSum = kakaoResendFailPriceSum; |
|
| 1080 |
- } |
|
| 1081 |
- |
|
| 1082 |
- public String getFriendId() {
|
|
| 1083 |
- return friendId; |
|
| 1084 |
- } |
|
| 1085 |
- |
|
| 1086 |
- public void setFriendId(String friendId) {
|
|
| 1087 |
- this.friendId = friendId; |
|
| 1088 |
- } |
|
| 1089 |
- |
|
| 1090 |
- public String getImageTitle() {
|
|
| 1091 |
- return imageTitle; |
|
| 1092 |
- } |
|
| 1093 |
- |
|
| 1094 |
- public void setImageTitle(String imageTitle) {
|
|
| 1095 |
- this.imageTitle = imageTitle; |
|
| 1096 |
- } |
|
| 1097 |
- |
|
| 1098 |
- public String getImageLink() {
|
|
| 1099 |
- return imageLink; |
|
| 1100 |
- } |
|
| 1101 |
- |
|
| 1102 |
- public void setImageLink(String imageLink) {
|
|
| 1103 |
- this.imageLink = imageLink; |
|
| 1104 |
- } |
|
| 1105 |
- |
|
| 1106 |
- public String getJsonText() {
|
|
| 1107 |
- return jsonText; |
|
| 1108 |
- } |
|
| 1109 |
- |
|
| 1110 |
- public void setJsonText(String jsonText) {
|
|
| 1111 |
- this.jsonText = jsonText; |
|
| 1112 |
- } |
|
| 1113 |
- |
|
| 1114 |
- public String getImageFileName() {
|
|
| 1115 |
- return imageFileName; |
|
| 1116 |
- } |
|
| 1117 |
- |
|
| 1118 |
- public void setImageFileName(String imageFileName) {
|
|
| 1119 |
- this.imageFileName = imageFileName; |
|
| 1120 |
- } |
|
| 1121 |
- |
|
| 1122 |
- public String getSbscrbDe() {
|
|
| 1123 |
- return sbscrbDe; |
|
| 1124 |
- } |
|
| 1125 |
- |
|
| 1126 |
- public void setSbscrbDe(String sbscrbDe) {
|
|
| 1127 |
- this.sbscrbDe = sbscrbDe; |
|
| 1128 |
- } |
|
| 1129 |
- |
|
| 1130 |
- public String getMoblphonNo() {
|
|
| 1131 |
- return moblphonNo; |
|
| 1132 |
- } |
|
| 1133 |
- |
|
| 1134 |
- public void setMoblphonNo(String moblphonNo) {
|
|
| 1135 |
- this.moblphonNo = moblphonNo; |
|
| 1136 |
- } |
|
| 1137 |
- |
|
| 1138 |
- public String getDept() {
|
|
| 1139 |
- return dept; |
|
| 1140 |
- } |
|
| 1141 |
- |
|
| 1142 |
- public void setDept(String dept) {
|
|
| 1143 |
- this.dept = dept; |
|
| 1144 |
- } |
|
| 1145 |
- |
|
| 1146 |
- public String getAtchFileId() {
|
|
| 1147 |
- return atchFileId; |
|
| 1148 |
- } |
|
| 1149 |
- |
|
| 1150 |
- public void setAtchFileId(String atchFileId) {
|
|
| 1151 |
- this.atchFileId = atchFileId; |
|
| 1152 |
- } |
|
| 1153 |
- |
|
| 1154 |
- public String getWorkAtchFileId() {
|
|
| 1155 |
- return workAtchFileId; |
|
| 1156 |
- } |
|
| 1157 |
- |
|
| 1158 |
- public void setWorkAtchFileId(String workAtchFileId) {
|
|
| 1159 |
- this.workAtchFileId = workAtchFileId; |
|
| 1160 |
- } |
|
| 1161 |
- |
|
| 1162 |
- public String getFileSn() {
|
|
| 1163 |
- return fileSn; |
|
| 1164 |
- } |
|
| 1165 |
- |
|
| 1166 |
- public void setFileSn(String fileSn) {
|
|
| 1167 |
- this.fileSn = fileSn; |
|
| 1168 |
- } |
|
| 1169 |
- |
|
| 1170 |
- public String getFileCn() {
|
|
| 1171 |
- return fileCn; |
|
| 1172 |
- } |
|
| 1173 |
- |
|
| 1174 |
- public void setFileCn(String fileCn) {
|
|
| 1175 |
- this.fileCn = fileCn; |
|
| 1176 |
- } |
|
| 1177 |
- |
|
| 1178 |
- public String getFileStreCours() {
|
|
| 1179 |
- return fileStreCours; |
|
| 1180 |
- } |
|
| 1181 |
- |
|
| 1182 |
- public void setFileStreCours(String fileStreCours) {
|
|
| 1183 |
- this.fileStreCours = fileStreCours; |
|
| 1184 |
- } |
|
| 1185 |
- |
|
| 1186 |
- public String getOrignlFileNm() {
|
|
| 1187 |
- return orignlFileNm; |
|
| 1188 |
- } |
|
| 1189 |
- |
|
| 1190 |
- public void setOrignlFileNm(String orignlFileNm) {
|
|
| 1191 |
- this.orignlFileNm = orignlFileNm; |
|
| 1192 |
- } |
|
| 1193 |
- |
|
| 1194 |
- public String getStreFileNm() {
|
|
| 1195 |
- return streFileNm; |
|
| 1196 |
- } |
|
| 1197 |
- |
|
| 1198 |
- public void setStreFileNm(String streFileNm) {
|
|
| 1199 |
- this.streFileNm = streFileNm; |
|
| 1200 |
- } |
|
| 1201 |
- |
|
| 1202 |
- public String getFileExtsn() {
|
|
| 1203 |
- return fileExtsn; |
|
| 1204 |
- } |
|
| 1205 |
- |
|
| 1206 |
- public void setFileExtsn(String fileExtsn) {
|
|
| 1207 |
- this.fileExtsn = fileExtsn; |
|
| 1208 |
- } |
|
| 1209 |
- |
|
| 1210 |
- public String getFileSize() {
|
|
| 1211 |
- return fileSize; |
|
| 1212 |
- } |
|
| 1213 |
- |
|
| 1214 |
- public void setFileSize(String fileSize) {
|
|
| 1215 |
- this.fileSize = fileSize; |
|
| 1216 |
- } |
|
| 1217 |
- |
|
| 1218 |
- public int getStartCount() {
|
|
| 1219 |
- return startCount; |
|
| 1220 |
- } |
|
| 1221 |
- |
|
| 1222 |
- public void setStartCount(int startCount) {
|
|
| 1223 |
- this.startCount = startCount; |
|
| 1224 |
- } |
|
| 1225 |
- |
|
| 1226 |
- public int getEndCount() {
|
|
| 1227 |
- return endCount; |
|
| 1228 |
- } |
|
| 1229 |
- |
|
| 1230 |
- public void setEndCount(int endCount) {
|
|
| 1231 |
- this.endCount = endCount; |
|
| 1232 |
- } |
|
| 1233 |
- |
|
| 1234 |
- public String getPhmType() {
|
|
| 1235 |
- return phmType; |
|
| 1236 |
- } |
|
| 1237 |
- |
|
| 1238 |
- public void setPhmType(String phmType) {
|
|
| 1239 |
- this.phmType = phmType; |
|
| 1240 |
- } |
|
| 307 |
+ |
|
| 308 |
+ |
|
| 1241 | 309 |
} |
--- src/main/java/itn/let/kakao/kakaoComm/kakaoApi/KakaoApiJsonSave.java
+++ src/main/java/itn/let/kakao/kakaoComm/kakaoApi/KakaoApiJsonSave.java
... | ... | @@ -32,7 +32,124 @@ |
| 32 | 32 |
|
| 33 | 33 |
static String json; |
| 34 | 34 |
|
| 35 |
- @SuppressWarnings("unchecked")
|
|
| 35 |
+ public String kakaoApiJsonSave_advc(KakaoVO kakaoVO, String[] varValInfo) {
|
|
| 36 |
+ // json파일 저장 |
|
| 37 |
+ |
|
| 38 |
+ |
|
| 39 |
+ Date nowDate = new Date(); |
|
| 40 |
+ SimpleDateFormat todayFrom = new SimpleDateFormat("yyyyMMdd");
|
|
| 41 |
+ SimpleDateFormat timeFrom = new SimpleDateFormat("HHmmss");
|
|
| 42 |
+ String jsonFileName = mjonBizJsonDir+"/"+kakaoVO.getUserId()+"/"+todayFrom.format(nowDate)+"/"+kakaoVO.getSendType(); // 아이디/날짜/타입 |
|
| 43 |
+ |
|
| 44 |
+ String fileName = timeFrom.format(nowDate)+"_"+kakaoVO.getDestPhone()+".json"; |
|
| 45 |
+ |
|
| 46 |
+ |
|
| 47 |
+// File userIdFile = new File(jsonFileName); |
|
| 48 |
+// if(!userIdFile.exists()) {
|
|
| 49 |
+// userIdFile.mkdirs(); // 없으면 하위 디렉토리 까지 생성 |
|
| 50 |
+// jsonFileName = jsonFileName +"/"+fileName; |
|
| 51 |
+// }else {
|
|
| 52 |
+// |
|
| 53 |
+// jsonFileName = jsonFileName +"/"+fileName; |
|
| 54 |
+// System.out.println("jsonFileName : "+jsonFileName);
|
|
| 55 |
+// File file1 = new File(jsonFileName); |
|
| 56 |
+// if (file1.isFile()) {
|
|
| 57 |
+// return jsonFileName; |
|
| 58 |
+// } |
|
| 59 |
+// } |
|
| 60 |
+ |
|
| 61 |
+ KakaoReturnVO templateDetail = kakaoApiTemplate.selectKakaoApiTemplateDetail(kakaoVO); |
|
| 62 |
+ |
|
| 63 |
+ // 버튼리스트 JSON 생성 |
|
| 64 |
+ JSONArray buttonList = new JSONArray(); |
|
| 65 |
+ for(KakaoButtonVO buttonInfoVO : templateDetail.getButtonList()) {
|
|
| 66 |
+ JSONObject buttonInfo = new JSONObject(); |
|
| 67 |
+ |
|
| 68 |
+ buttonInfo.put("name", buttonInfoVO.getName());
|
|
| 69 |
+ buttonInfo.put("type", buttonInfoVO.getLinkType());
|
|
| 70 |
+ |
|
| 71 |
+ if(buttonInfoVO.getLinkType().equals("WL")) {
|
|
| 72 |
+ buttonInfo.put("url_mobile", buttonInfoVO.getLinkMo());
|
|
| 73 |
+ buttonInfo.put("url_pc", buttonInfoVO.getLinkPc());
|
|
| 74 |
+ }else if(buttonInfoVO.getLinkType().equals("AL")) {
|
|
| 75 |
+ buttonInfo.put("scheme_ios", buttonInfoVO.getLinkIos());
|
|
| 76 |
+ buttonInfo.put("scheme_android", buttonInfoVO.getLinkAnd());
|
|
| 77 |
+ }else if(buttonInfoVO.getLinkType().equals("BC")) {
|
|
| 78 |
+ // 상담톡 진행시 등록해야함 |
|
| 79 |
+ }else if(buttonInfoVO.getLinkType().equals("BT")) {
|
|
| 80 |
+ // 봇 전환 시 전달 |
|
| 81 |
+ } |
|
| 82 |
+ buttonList.add(buttonInfo); |
|
| 83 |
+ } |
|
| 84 |
+ |
|
| 85 |
+ // 강조유형 JSON 생성 |
|
| 86 |
+ JSONObject templateDetailInfo = new JSONObject(); |
|
| 87 |
+ String emphasizeType = templateDetail.getTemplateEmphasizeType(); |
|
| 88 |
+ |
|
| 89 |
+ if(emphasizeType.equals("TEXT")) {
|
|
| 90 |
+ |
|
| 91 |
+ String templateTitle = templateDetail.getTemplateTitle(); |
|
| 92 |
+ if(kakaoVO.getVarNmList().size() != 0) {
|
|
| 93 |
+ String[] varNm = new String[kakaoVO.getVarNmList().size()]; |
|
| 94 |
+ int q=0; |
|
| 95 |
+ for(String temp : kakaoVO.getVarNmList()) {
|
|
| 96 |
+ temp = temp.replaceAll("\\#\\{" , "§§");
|
|
| 97 |
+ temp = temp.replaceAll("\\}" , "§");
|
|
| 98 |
+ varNm[q] = temp; |
|
| 99 |
+ q++; |
|
| 100 |
+ } |
|
| 101 |
+ List<String[]> varValList = kakaoVO.getVarValList(); // value 값 |
|
| 102 |
+ |
|
| 103 |
+ templateTitle = templateTitle.replaceAll(String.valueOf((char)13), ""); |
|
| 104 |
+ templateTitle = templateTitle.replaceAll("\\#\\{" , "§§");
|
|
| 105 |
+ templateTitle = templateTitle.replaceAll("\\}" , "§");
|
|
| 106 |
+ |
|
| 107 |
+ for(int i=0; i < varNm.length; i++) {
|
|
| 108 |
+ for(int j=0; j < varValInfo.length; j++) {
|
|
| 109 |
+ if (templateTitle.indexOf(varNm[i]) > -1) {
|
|
| 110 |
+ if(varValInfo[j] != null) {
|
|
| 111 |
+ templateTitle = templateTitle.replaceAll(varNm[i] , StringUtil.getString(varValInfo[j])); |
|
| 112 |
+ }else {
|
|
| 113 |
+ templateTitle = templateTitle.replaceAll(varNm[i] , ""); |
|
| 114 |
+ } |
|
| 115 |
+ } |
|
| 116 |
+ } |
|
| 117 |
+ } |
|
| 118 |
+ |
|
| 119 |
+ templateDetailInfo.put("title", templateTitle);
|
|
| 120 |
+ }else {
|
|
| 121 |
+ templateDetailInfo.put("title", templateTitle);
|
|
| 122 |
+ } |
|
| 123 |
+ }else if(emphasizeType.equals("IMAGE")) {
|
|
| 124 |
+ templateDetailInfo.put("msg_type", "ai");
|
|
| 125 |
+ }else if(emphasizeType.equals("NONE")) {
|
|
| 126 |
+ |
|
| 127 |
+ } |
|
| 128 |
+ |
|
| 129 |
+ |
|
| 130 |
+ JSONObject jo = new JSONObject(); |
|
| 131 |
+ |
|
| 132 |
+ if(buttonList.size() != 0) {
|
|
| 133 |
+ jo.put("button", buttonList);
|
|
| 134 |
+ } |
|
| 135 |
+ if(templateDetailInfo.size() != 0) {
|
|
| 136 |
+ jo.put("extra", templateDetailInfo);
|
|
| 137 |
+ } |
|
| 138 |
+ |
|
| 139 |
+ // 입력 json 데이터를 파일로 변경 |
|
| 140 |
+ String jsonStr = jo.toString(); |
|
| 141 |
+// System.out.println("jsonStr : "+jsonStr);
|
|
| 142 |
+ |
|
| 143 |
+// File outPut = new File(jsonFileName); |
|
| 144 |
+// outPut.createNewFile(); |
|
| 145 |
+ |
|
| 146 |
+// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outPut), "utf-8")); |
|
| 147 |
+// bw.write(jsonStr); |
|
| 148 |
+// bw.close(); |
|
| 149 |
+ |
|
| 150 |
+ return jsonFileName; |
|
| 151 |
+ } |
|
| 152 |
+ |
|
| 36 | 153 |
public String kakaoApiJsonSave(KakaoVO kakaoVO, String[] varValInfo) {
|
| 37 | 154 |
// json파일 저장 |
| 38 | 155 |
|
... | ... | @@ -109,12 +226,12 @@ |
| 109 | 226 |
for(int i=0; i < varNm.length; i++) {
|
| 110 | 227 |
for(int j=0; j < varValInfo.length; j++) {
|
| 111 | 228 |
if (templateTitle.indexOf(varNm[i]) > -1) {
|
| 112 |
- if(varValInfo[j] != null) {
|
|
| 113 |
- templateTitle = templateTitle.replaceAll(varNm[i] , StringUtil.getString(varValInfo[j])); |
|
| 114 |
- }else {
|
|
| 115 |
- templateTitle = templateTitle.replaceAll(varNm[i] , ""); |
|
| 116 |
- } |
|
| 117 |
- } |
|
| 229 |
+ if(varValInfo[j] != null) {
|
|
| 230 |
+ templateTitle = templateTitle.replaceAll(varNm[i] , StringUtil.getString(varValInfo[j])); |
|
| 231 |
+ }else {
|
|
| 232 |
+ templateTitle = templateTitle.replaceAll(varNm[i] , ""); |
|
| 233 |
+ } |
|
| 234 |
+ } |
|
| 118 | 235 |
} |
| 119 | 236 |
} |
| 120 | 237 |
|
... | ... | @@ -140,8 +257,8 @@ |
| 140 | 257 |
|
| 141 | 258 |
// 입력 json 데이터를 파일로 변경 |
| 142 | 259 |
String jsonStr = jo.toString(); |
| 143 |
- System.out.println("jsonFileName : "+jsonFileName);
|
|
| 144 |
- |
|
| 260 |
+// System.out.println("jsonFileName : "+jsonFileName);
|
|
| 261 |
+ |
|
| 145 | 262 |
File outPut = new File(jsonFileName); |
| 146 | 263 |
outPut.createNewFile(); |
| 147 | 264 |
|
--- src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java
... | ... | @@ -2,7 +2,11 @@ |
| 2 | 2 |
|
| 3 | 3 |
import java.util.List; |
| 4 | 4 |
|
| 5 |
+import javax.servlet.http.HttpServletRequest; |
|
| 6 |
+ |
|
| 7 |
+import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; |
|
| 5 | 8 |
import itn.let.kakao.kakaoComm.KakaoVO; |
| 9 |
+import itn.let.mail.service.StatusResponse; |
|
| 6 | 10 |
import itn.let.mjo.msgdata.service.MjonMsgReturnVO; |
| 7 | 11 |
|
| 8 | 12 |
public interface KakaoAlimTalkService {
|
... | ... | @@ -24,5 +28,7 @@ |
| 24 | 28 |
|
| 25 | 29 |
//카카오 친구톡 전송 실패 환불리스트 조회 |
| 26 | 30 |
public void selectKakaoFtSentRefundList() throws Exception; |
| 31 |
+ |
|
| 32 |
+ StatusResponse insertKakaoAtSandAjax_advc(KakaoVO kakaoVO, HttpServletRequest request) throws Exception; |
|
| 27 | 33 |
|
| 28 | 34 |
} |
--- src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
... | ... | @@ -4,16 +4,27 @@ |
| 4 | 4 |
import java.util.ArrayList; |
| 5 | 5 |
import java.util.Calendar; |
| 6 | 6 |
import java.util.Date; |
| 7 |
+import java.util.HashMap; |
|
| 7 | 8 |
import java.util.List; |
| 9 |
+import java.util.Map; |
|
| 8 | 10 |
|
| 9 | 11 |
import javax.annotation.Resource; |
| 12 |
+import javax.servlet.http.HttpServletRequest; |
|
| 10 | 13 |
|
| 14 |
+import org.springframework.beans.factory.annotation.Autowired; |
|
| 15 |
+import org.springframework.http.HttpStatus; |
|
| 11 | 16 |
import org.springframework.stereotype.Service; |
| 12 | 17 |
|
| 13 | 18 |
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; |
| 14 | 19 |
import egovframework.rte.fdl.idgnr.EgovIdGnrService; |
| 20 |
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
|
| 21 |
+import itn.com.cmm.LoginVO; |
|
| 22 |
+import itn.com.utl.fcc.service.EgovStringUtil; |
|
| 23 |
+import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; |
|
| 24 |
+import itn.let.kakao.kakaoComm.KakaoSendUtil; |
|
| 15 | 25 |
import itn.let.kakao.kakaoComm.KakaoVO; |
| 16 | 26 |
import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; |
| 27 |
+import itn.let.mail.service.StatusResponse; |
|
| 17 | 28 |
import itn.let.mjo.mjocommon.MjonHolidayApi; |
| 18 | 29 |
import itn.let.mjo.msg.service.MjonMsgVO; |
| 19 | 30 |
import itn.let.mjo.msg.service.impl.MjonMsgDAO; |
... | ... | @@ -24,9 +35,13 @@ |
| 24 | 35 |
import itn.let.mjo.msgholiday.service.impl.MsgHolidayDAO; |
| 25 | 36 |
import itn.let.mjo.pay.service.MjonPayService; |
| 26 | 37 |
import itn.let.mjo.pay.service.MjonPayVO; |
| 38 |
+import itn.let.module.base.PriceAndPoint; |
|
| 27 | 39 |
import itn.let.sym.site.service.JoinSettingVO; |
| 28 | 40 |
import itn.let.sym.site.service.impl.SiteManagerDAO; |
| 41 |
+import itn.let.uss.umt.service.EgovUserManageService; |
|
| 42 |
+import lombok.extern.slf4j.Slf4j; |
|
| 29 | 43 |
|
| 44 |
+@Slf4j |
|
| 30 | 45 |
@Service("kakaoAlimTalkService")
|
| 31 | 46 |
public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements KakaoAlimTalkService{
|
| 32 | 47 |
|
... | ... | @@ -53,6 +68,16 @@ |
| 53 | 68 |
|
| 54 | 69 |
@Resource(name = "egovMjonCashIdGnrService") |
| 55 | 70 |
private EgovIdGnrService idgenMjonCashId; |
| 71 |
+ |
|
| 72 |
+ /** userManageService */ |
|
| 73 |
+ @Resource(name = "userManageService") |
|
| 74 |
+ private EgovUserManageService userManageService; |
|
| 75 |
+ |
|
| 76 |
+ @Autowired |
|
| 77 |
+ private PriceAndPoint priceAndPoint; |
|
| 78 |
+ |
|
| 79 |
+ @Autowired |
|
| 80 |
+ KakaoSendUtil kakaoSendUtil; |
|
| 56 | 81 |
|
| 57 | 82 |
//발신프로필 상태값 변경(삭제/복구 기능) |
| 58 | 83 |
@Override |
... | ... | @@ -816,4 +841,119 @@ |
| 816 | 841 |
} |
| 817 | 842 |
} |
| 818 | 843 |
} |
| 844 |
+ |
|
| 845 |
+ @Override |
|
| 846 |
+ public StatusResponse insertKakaoAtSandAjax_advc(KakaoVO kakaoVO, HttpServletRequest request) throws Exception {
|
|
| 847 |
+ |
|
| 848 |
+// log.info(" :: [{}]", kakaoVO.toString());
|
|
| 849 |
+ |
|
| 850 |
+// KakaoSendAdvcVO |
|
| 851 |
+ |
|
| 852 |
+ Map<String, Object> returnMap = new HashMap<>(); |
|
| 853 |
+ |
|
| 854 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() |
|
| 855 |
+ ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() |
|
| 856 |
+ : null; |
|
| 857 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 858 |
+ |
|
| 859 |
+ if (userId.equals("")) {
|
|
| 860 |
+ return new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용이 가능합니다."); |
|
| 861 |
+ } |
|
| 862 |
+ |
|
| 863 |
+ |
|
| 864 |
+ /** |
|
| 865 |
+ * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 현재 로그인 세션도 만료 처리함 |
|
| 866 |
+ */ |
|
| 867 |
+ boolean mberSttus = userManageService.selectUserStatusInfo(userId); |
|
| 868 |
+ if (!mberSttus) {
|
|
| 869 |
+ request.getSession().invalidate(); |
|
| 870 |
+ // UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때 |
|
| 871 |
+ return new StatusResponse(HttpStatus.UNAUTHORIZED, |
|
| 872 |
+ "현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 알림톡을 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다."); |
|
| 873 |
+ } |
|
| 874 |
+ |
|
| 875 |
+ |
|
| 876 |
+ StatusResponse statusResponse = new StatusResponse(); |
|
| 877 |
+ |
|
| 878 |
+ |
|
| 879 |
+/** 카카오톡 전송 기본 설정 -------------------------------------------*/ |
|
| 880 |
+ kakaoVO.setSendType("AT");
|
|
| 881 |
+ kakaoVO.setMsgType("8");
|
|
| 882 |
+ kakaoVO.setUserId(userId); |
|
| 883 |
+ |
|
| 884 |
+ |
|
| 885 |
+/** 전송금액 설정 --------------------------------------------------*/ |
|
| 886 |
+// KakaoVO priceSet = kakaoSendUtil.populateSendLists(kakaoVO, statusResponse); |
|
| 887 |
+ |
|
| 888 |
+ |
|
| 889 |
+ |
|
| 890 |
+ |
|
| 891 |
+ |
|
| 892 |
+ |
|
| 893 |
+ |
|
| 894 |
+ |
|
| 895 |
+ |
|
| 896 |
+ |
|
| 897 |
+ |
|
| 898 |
+ |
|
| 899 |
+ |
|
| 900 |
+ |
|
| 901 |
+ |
|
| 902 |
+ |
|
| 903 |
+ |
|
| 904 |
+ |
|
| 905 |
+ |
|
| 906 |
+ |
|
| 907 |
+ |
|
| 908 |
+ |
|
| 909 |
+ |
|
| 910 |
+/** 카카오톡 전송 기본 설정 -------------------------------------------*/ |
|
| 911 |
+ kakaoVO.setSendType("AT");
|
|
| 912 |
+ kakaoVO.setMsgType("8");
|
|
| 913 |
+ kakaoVO.setUserId(userId); |
|
| 914 |
+ |
|
| 915 |
+ |
|
| 916 |
+ |
|
| 917 |
+// priceAndPoint.getBefCash(userId); |
|
| 918 |
+ |
|
| 919 |
+ |
|
| 920 |
+ |
|
| 921 |
+ |
|
| 922 |
+ |
|
| 923 |
+ return statusResponse; |
|
| 924 |
+ } |
|
| 925 |
+ |
|
| 926 |
+ |
|
| 927 |
+ |
|
| 928 |
+ |
|
| 929 |
+ |
|
| 930 |
+ |
|
| 931 |
+ |
|
| 932 |
+ |
|
| 933 |
+ |
|
| 934 |
+ |
|
| 935 |
+ |
|
| 936 |
+ |
|
| 937 |
+ |
|
| 938 |
+ |
|
| 939 |
+ |
|
| 940 |
+ |
|
| 941 |
+ |
|
| 942 |
+ |
|
| 943 |
+ |
|
| 944 |
+ |
|
| 945 |
+ |
|
| 946 |
+ |
|
| 947 |
+ |
|
| 948 |
+ |
|
| 949 |
+ |
|
| 950 |
+ |
|
| 951 |
+ |
|
| 952 |
+ |
|
| 953 |
+ |
|
| 954 |
+ |
|
| 955 |
+ |
|
| 956 |
+ |
|
| 957 |
+ |
|
| 958 |
+ |
|
| 819 | 959 |
} |
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
... | ... | @@ -35,9 +35,11 @@ |
| 35 | 35 |
import org.apache.poi.xssf.usermodel.XSSFSheet; |
| 36 | 36 |
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| 37 | 37 |
import org.springframework.beans.factory.annotation.Autowired; |
| 38 |
+import org.springframework.http.ResponseEntity; |
|
| 38 | 39 |
import org.springframework.stereotype.Controller; |
| 39 | 40 |
import org.springframework.ui.ModelMap; |
| 40 | 41 |
import org.springframework.web.bind.annotation.ModelAttribute; |
| 42 |
+import org.springframework.web.bind.annotation.RequestBody; |
|
| 41 | 43 |
import org.springframework.web.bind.annotation.RequestMapping; |
| 42 | 44 |
import org.springframework.web.bind.annotation.RequestMethod; |
| 43 | 45 |
import org.springframework.web.bind.annotation.RequestParam; |
... | ... | @@ -57,6 +59,7 @@ |
| 57 | 59 |
import itn.com.cmm.util.StringUtil; |
| 58 | 60 |
import itn.com.utl.fcc.service.EgovStringUtil; |
| 59 | 61 |
import itn.let.kakao.kakaoComm.KakaoReturnVO; |
| 62 |
+import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; |
|
| 60 | 63 |
import itn.let.kakao.kakaoComm.KakaoSendUtil; |
| 61 | 64 |
import itn.let.kakao.kakaoComm.KakaoVO; |
| 62 | 65 |
import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiJsonSave; |
... | ... | @@ -65,6 +68,7 @@ |
| 65 | 68 |
import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate; |
| 66 | 69 |
import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; |
| 67 | 70 |
import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; |
| 71 |
+import itn.let.mail.service.StatusResponse; |
|
| 68 | 72 |
import itn.let.mjo.mjocommon.MjonCommon; |
| 69 | 73 |
import itn.let.mjo.mjocommon.MjonHolidayApi; |
| 70 | 74 |
import itn.let.mjo.msgdata.service.MjonMsgDataService; |
... | ... | @@ -1057,6 +1061,16 @@ |
| 1057 | 1061 |
return modelAndView; |
| 1058 | 1062 |
} |
| 1059 | 1063 |
|
| 1064 |
+ @RequestMapping(value= {"/web/mjon/kakao/alimtalk/kakaoAlimTalkMsgSendAjax_advc.do"}, method = RequestMethod.POST)
|
|
| 1065 |
+ public ResponseEntity<StatusResponse> kakaoAlimTalkMsgSendAjax_advc( |
|
| 1066 |
+ @RequestBody KakaoVO kakaoVO, |
|
| 1067 |
+ HttpServletRequest request |
|
| 1068 |
+ ) throws Exception {
|
|
| 1069 |
+ |
|
| 1070 |
+ System.out.println(" + kakaoAlimTalkMsgSendAjax_advc + ");
|
|
| 1071 |
+ return ResponseEntity.ok().body(kakaoAlimTalkService.insertKakaoAtSandAjax_advc(kakaoVO, request)) ; |
|
| 1072 |
+ } |
|
| 1073 |
+ |
|
| 1060 | 1074 |
@RequestMapping(value= {"/web/mjon/kakao/alimtalk/kakaoAlimTalkMsgSendAjax.do"}, method = RequestMethod.POST)
|
| 1061 | 1075 |
// @ResponseBody |
| 1062 | 1076 |
public ModelAndView kakaoAlimTalkMsgSendAjax( |
... | ... | @@ -1064,6 +1078,10 @@ |
| 1064 | 1078 |
HttpServletRequest request, |
| 1065 | 1079 |
@ModelAttribute("kakaoVO") KakaoVO kakaoVO
|
| 1066 | 1080 |
) throws Exception {
|
| 1081 |
+ // 시작 시간 |
|
| 1082 |
+ long startTime = System.currentTimeMillis(); |
|
| 1083 |
+ |
|
| 1084 |
+ System.out.println(" :: kakaoAlimTalkMsgSendAjax :: ");
|
|
| 1067 | 1085 |
ModelAndView modelAndView = new ModelAndView(); |
| 1068 | 1086 |
modelAndView.setViewName("jsonView");
|
| 1069 | 1087 |
|
... | ... | @@ -1108,6 +1126,10 @@ |
| 1108 | 1126 |
|
| 1109 | 1127 |
/** 전송금액 설정 --------------------------------------------------*/ |
| 1110 | 1128 |
KakaoVO priceSet = kakaoSendUtil.kakaoSendPrice(kakaoVO); |
| 1129 |
+ |
|
| 1130 |
+ if (true) {
|
|
| 1131 |
+ throw new IllegalStateException("배열 크기 초과");
|
|
| 1132 |
+ } |
|
| 1111 | 1133 |
|
| 1112 | 1134 |
|
| 1113 | 1135 |
if(priceSet.getResultCode() != null && priceSet.getResultCode().equals("2000")) {
|
... | ... | @@ -1400,6 +1422,17 @@ |
| 1400 | 1422 |
} catch (Exception e) {
|
| 1401 | 1423 |
throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e);
|
| 1402 | 1424 |
} |
| 1425 |
+ // 종료 시간 |
|
| 1426 |
+ long endTime = System.currentTimeMillis(); |
|
| 1427 |
+ |
|
| 1428 |
+// 실행 시간 계산 (초 단위) |
|
| 1429 |
+ double executionTimeSeconds = (endTime - startTime) / 1000.0; |
|
| 1430 |
+ |
|
| 1431 |
+ System.out.println("실행 시간: " + String.format("%.3f", executionTimeSeconds) + "초");
|
|
| 1432 |
+ |
|
| 1433 |
+ |
|
| 1434 |
+ String returnTxt = String.format("%.3f", executionTimeSeconds) + "초";
|
|
| 1435 |
+ modelAndView.addObject("seconds", returnTxt);
|
|
| 1403 | 1436 |
|
| 1404 | 1437 |
return modelAndView; |
| 1405 | 1438 |
} |
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp
... | ... | @@ -550,7 +550,7 @@ |
| 550 | 550 |
|
| 551 | 551 |
// 초기화 |
| 552 | 552 |
$('.varValList').remove();
|
| 553 |
- $('#bizForm #varNmList').val('');
|
|
| 553 |
+// $('#bizForm #varNmList').val('');
|
|
| 554 | 554 |
|
| 555 | 555 |
|
| 556 | 556 |
// 대체문자 전송 확인 |
... | ... | @@ -613,125 +613,110 @@ |
| 613 | 613 |
}else{
|
| 614 | 614 |
$('#bizForm #reqDate').val("");
|
| 615 | 615 |
} |
| 616 |
- |
|
| 616 |
+ |
|
| 617 |
+ var dataList = []; |
|
| 617 | 618 |
// 치환문자 있는 데이터 파씽 |
| 618 | 619 |
if($('#bizForm #txtReplYn').val() === 'Y'){
|
| 619 |
- fn_excelDataTransParsing(); |
|
| 620 |
+ // fn_excelDataTransParsing(); |
|
| 620 | 621 |
// 치환문자 있는 수신자 리스트 |
| 621 |
- fn_transCallToListParsing(); |
|
| 622 |
+ dataList = fn_transCallToListParsing(); |
|
| 622 | 623 |
}else{
|
| 623 |
- // 치환문자 없는 수신자 리스트 |
|
| 624 |
- fn_callToListParsing(); |
|
| 624 |
+ // 치환문자 없는 수신자 리스트 |
|
| 625 |
+ dataList = fn_callToListParsing(); |
|
| 625 | 626 |
} |
| 626 | 627 |
|
| 627 |
- $('#bizForm #senderKey').val($('#selectKakaoProfileList').val());
|
|
| 628 |
- $('#bizForm #templateCode').val($('#selectTemplateList').val());
|
|
| 629 | 628 |
|
| 629 |
+ |
|
| 630 |
+ |
|
| 631 |
+ |
|
| 632 |
+ // 채널 ID |
|
| 633 |
+ $('#bizForm #senderKey').val($('#selectKakaoProfileList').val());
|
|
| 634 |
+ // 채널 > 템플릿 |
|
| 635 |
+ $('#bizForm #templateCode').val($('#selectTemplateList').val());
|
|
| 630 | 636 |
// 발신번호 |
| 631 | 637 |
$('#bizForm #callFrom').val(removeDash($('#callFromList option:selected').val()));
|
| 632 | 638 |
|
| 633 |
- if(confirm("알림톡을 발송하시겠습니까?")){
|
|
| 634 |
- var spamChk = true; |
|
| 635 |
- //2023.09.06 알림톡 스팸체크 기능 제거요청으로 인한 주석처리 |
|
| 636 |
- /*var spamChk = false; |
|
| 637 |
- var spmData = new FormData(document.bizForm); |
|
| 638 |
- $.ajax({
|
|
| 639 |
- type: "POST" |
|
| 640 |
- , url: "/web/mjon/alimtalk/selectSpamKakaoAlimtalkMsgChkAjax.do" |
|
| 641 |
- , data: spmData |
|
| 642 |
- , dataType:'json' |
|
| 643 |
- , async: false |
|
| 644 |
- , processData: false |
|
| 645 |
- , contentType: false |
|
| 646 |
- , cache: false |
|
| 647 |
- , success: function (returnData, status) {
|
|
| 648 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 649 |
- |
|
| 650 |
- if("fail" == returnData.result){
|
|
| 651 |
- alert(returnData.message); |
|
| 652 |
- return false; |
|
| 653 |
- }else if("loginFail" == returnData.result){
|
|
| 654 |
- alert(returnData.message); |
|
| 655 |
- return false; |
|
| 656 |
- }else if("spams" == returnData.result){
|
|
| 657 |
- alert("전송 내용에 스팸문구가 포함되어 있습니다.")
|
|
| 658 |
- return false; |
|
| 659 |
- }else{
|
|
| 660 |
- spamChk = true; |
|
| 661 |
- return false; |
|
| 662 |
- } |
|
| 663 |
- |
|
| 664 |
- } else if(status== 'fail'){
|
|
| 665 |
- alert(returnData.message); |
|
| 666 |
- return false; |
|
| 667 |
- } |
|
| 668 |
- } |
|
| 669 |
- , error: function (e) {
|
|
| 670 |
- alert("문자 발송에 실패하였습니다.");
|
|
| 671 |
- console.log("ERROR : ", e);
|
|
| 672 |
- return false; |
|
| 673 |
- } |
|
| 674 |
- }); */ |
|
| 675 |
- |
|
| 676 |
- if(spamChk){
|
|
| 677 |
- var data = new FormData(document.bizForm); |
|
| 678 |
- $.ajax({
|
|
| 679 |
- type: "POST" |
|
| 680 |
- , url: "/web/mjon/kakao/alimtalk/kakaoAlimTalkMsgSendAjax.do" |
|
| 681 |
- , data: data |
|
| 682 |
- , dataType: 'json' |
|
| 683 |
- , async: true |
|
| 684 |
- , processData: false |
|
| 685 |
- , contentType: false |
|
| 686 |
- , cache: false |
|
| 687 |
- , success: function (returnData, status) {
|
|
| 688 |
- if(status == 'success'){
|
|
| 689 |
- if("loginFail" == returnData.result){
|
|
| 690 |
- |
|
| 691 |
- alert(returnData.message); |
|
| 692 |
- return false; |
|
| 693 |
- |
|
| 694 |
- }else if('fail' == returnData.result){
|
|
| 695 |
- |
|
| 696 |
- alert(returnData.message); |
|
| 697 |
- return false; |
|
| 698 |
- |
|
| 699 |
- }else if('authFail' == returnData.result){
|
|
| 700 |
- |
|
| 701 |
- alert(returnData.message); |
|
| 702 |
- location.reload(); |
|
| 703 |
- |
|
| 704 |
- } else if(status == 'success'){
|
|
| 705 |
- |
|
| 706 |
- var kakaoSendCnt = returnData.resultSts; |
|
| 707 |
- |
|
| 708 |
- $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 709 |
- |
|
| 710 |
- //예약발송 건의 경우 결과 팝업 문구 변경 |
|
| 711 |
- if(reserYn == 'Y'){
|
|
| 712 |
- $('.pop_msg_success .msg_text').html("예약 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>알림톡이 예약 되었습니다.");
|
|
| 713 |
- }else{
|
|
| 714 |
- $('.pop_msg_success .msg_text').html("발송 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>알림톡이 발송 되었습니다.");
|
|
| 715 |
- } |
|
| 716 |
- |
|
| 717 |
- $('.mask').addClass('on');
|
|
| 718 |
- } |
|
| 719 |
- } |
|
| 720 |
- } |
|
| 721 |
- ,beforeSend : function(xmlHttpRequest) {
|
|
| 722 |
- //로딩창 show |
|
| 723 |
- $('.loading_layer').addClass('active');
|
|
| 724 |
- } |
|
| 725 |
- ,complete : function(xhr, textStatus) {
|
|
| 726 |
- //로딩창 hide |
|
| 727 |
- $('.loading_layer').removeClass('active');
|
|
| 728 |
- } |
|
| 729 |
- ,error: function (e) {
|
|
| 730 |
- console.log("ERROR : ", e);
|
|
| 731 |
- alert("카카오 알림톡 전송에 실패하였습니다.");
|
|
| 732 |
- } |
|
| 733 |
- }); |
|
| 639 |
+ // 폼 데이터를 배열로 직렬화 |
|
| 640 |
+ var form = $('#bizForm');
|
|
| 641 |
+ var formDataArray = form.serializeArray(); |
|
| 642 |
+ |
|
| 643 |
+ // 배열을 객체로 변환 |
|
| 644 |
+ var formData = {};
|
|
| 645 |
+ $.each(formDataArray, function(index, field) {
|
|
| 646 |
+ formData[field.name] = field.value; |
|
| 647 |
+ }); |
|
| 648 |
+ |
|
| 649 |
+ // 빈 값 제거 (참고 코드 기반) |
|
| 650 |
+ for (var key in formData) {
|
|
| 651 |
+ if (formData[key] === '' || formData[key] === null || formData[key] === undefined) {
|
|
| 652 |
+ delete formData[key]; |
|
| 734 | 653 |
} |
| 654 |
+ } |
|
| 655 |
+ |
|
| 656 |
+// delete formData['varNmList']; |
|
| 657 |
+ |
|
| 658 |
+ // 선택된 데이터 추가 (varListMap) |
|
| 659 |
+ formData["varListMap"] = dataList; |
|
| 660 |
+ console.log('formData : ', formData);
|
|
| 661 |
+ |
|
| 662 |
+ if(confirm("알림톡을 발송하시겠습니까?")){
|
|
| 663 |
+ |
|
| 664 |
+ |
|
| 665 |
+ |
|
| 666 |
+ $.ajax({
|
|
| 667 |
+ type: "POST", |
|
| 668 |
+ url: "/web/mjon/kakao/alimtalk/kakaoAlimTalkMsgSendAjax_advc.do", |
|
| 669 |
+ data: JSON.stringify(formData), |
|
| 670 |
+ contentType: 'application/json', |
|
| 671 |
+ dataType: 'json', |
|
| 672 |
+ success: function (data) {
|
|
| 673 |
+ console.log('data : ', data);
|
|
| 674 |
+// if(data == 'success'){
|
|
| 675 |
+ /* if("loginFail" == returnData.result){
|
|
| 676 |
+ |
|
| 677 |
+ alert(returnData.message); |
|
| 678 |
+ return false; |
|
| 679 |
+ |
|
| 680 |
+ }else if('fail' == returnData.result){
|
|
| 681 |
+ |
|
| 682 |
+ alert(returnData.message); |
|
| 683 |
+ return false; |
|
| 684 |
+ |
|
| 685 |
+ }else if('authFail' == returnData.result){
|
|
| 686 |
+ |
|
| 687 |
+ alert(returnData.message); |
|
| 688 |
+ location.reload(); |
|
| 689 |
+ |
|
| 690 |
+ } else if(status == 'success'){
|
|
| 691 |
+ |
|
| 692 |
+ var kakaoSendCnt = returnData.resultSts; |
|
| 693 |
+ |
|
| 694 |
+ $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 695 |
+ |
|
| 696 |
+ //예약발송 건의 경우 결과 팝업 문구 변경 |
|
| 697 |
+ if(reserYn == 'Y'){
|
|
| 698 |
+ $('.pop_msg_success .msg_text').html("예약 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>알림톡이 예약 되었습니다.");
|
|
| 699 |
+ }else{
|
|
| 700 |
+ $('.pop_msg_success .msg_text').html("발송 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>알림톡이 발송 되었습니다.");
|
|
| 701 |
+ } |
|
| 702 |
+ |
|
| 703 |
+ $('.mask').addClass('on');
|
|
| 704 |
+ } */ |
|
| 705 |
+// } |
|
| 706 |
+ } |
|
| 707 |
+ ,beforeSend : function(xmlHttpRequest) {
|
|
| 708 |
+ //로딩창 show |
|
| 709 |
+ $('.loading_layer').addClass('active');
|
|
| 710 |
+ } |
|
| 711 |
+ ,complete : function(xhr, textStatus) {
|
|
| 712 |
+ //로딩창 hide |
|
| 713 |
+ $('.loading_layer').removeClass('active');
|
|
| 714 |
+ } |
|
| 715 |
+ ,error: function (e) {
|
|
| 716 |
+ console.log("ERROR : ", e);
|
|
| 717 |
+ alert("카카오 알림톡 전송에 실패하였습니다.");
|
|
| 718 |
+ } |
|
| 719 |
+ }); |
|
| 735 | 720 |
} |
| 736 | 721 |
} |
| 737 | 722 |
|
... | ... | @@ -739,7 +724,7 @@ |
| 739 | 724 |
* 치환문자 있는 수신자 목록 파씽 |
| 740 | 725 |
*/ |
| 741 | 726 |
function fn_transCallToListParsing(){
|
| 742 |
- var callToList = []; |
|
| 727 |
+/* var callToList = []; |
|
| 743 | 728 |
// excel body |
| 744 | 729 |
$('.excelBody').each(function(indexBody, itemBody){
|
| 745 | 730 |
$(itemBody).find('.list_table_name').each(function(indexRow, itemRow){
|
... | ... | @@ -750,7 +735,31 @@ |
| 750 | 735 |
}); |
| 751 | 736 |
}); |
| 752 | 737 |
$('#bizForm #callToList').val(callToList);
|
| 738 |
+ */ |
|
| 753 | 739 |
|
| 740 |
+ var dataList = []; |
|
| 741 |
+ |
|
| 742 |
+ var headers = []; |
|
| 743 |
+ $('#excelHead .list_table_name').each(function() {
|
|
| 744 |
+ headers.push($(this).text().trim()); |
|
| 745 |
+ }); |
|
| 746 |
+ |
|
| 747 |
+ $('.excelBody').each(function() {
|
|
| 748 |
+ var row = {};
|
|
| 749 |
+ $(this).find('.list_table_name').each(function(index) {
|
|
| 750 |
+ var key = headers[index]; |
|
| 751 |
+ var value = $(this).text().trim(); |
|
| 752 |
+ if (index === 0) {
|
|
| 753 |
+ row["callToList"] = value; // 수신번호는 별도로 처리 |
|
| 754 |
+ } else {
|
|
| 755 |
+ row[key] = value; // |
|
| 756 |
+ } |
|
| 757 |
+ }); |
|
| 758 |
+ console.log(row) |
|
| 759 |
+ dataList.push(row); |
|
| 760 |
+ }); |
|
| 761 |
+ |
|
| 762 |
+ return dataList; |
|
| 754 | 763 |
} |
| 755 | 764 |
|
| 756 | 765 |
/* |
... | ... | @@ -758,13 +767,25 @@ |
| 758 | 767 |
*/ |
| 759 | 768 |
function fn_callToListParsing(){
|
| 760 | 769 |
|
| 761 |
- var callToList = []; |
|
| 770 |
+ var dataList = []; |
|
| 771 |
+ /* var callToList = []; |
|
| 762 | 772 |
// excel body |
| 763 | 773 |
$('.phoneArea').each(function(index, item){
|
| 764 | 774 |
callToList.push($(item).text().replaceAll('\\t', ''));
|
| 765 | 775 |
}); |
| 766 | 776 |
|
| 767 |
- $('#bizForm #callToList').val(callToList);
|
|
| 777 |
+ $('#bizForm #callToList').val(callToList); */
|
|
| 778 |
+ |
|
| 779 |
+ $('.phoneArea').each(function(index, item){
|
|
| 780 |
+ var row = {};
|
|
| 781 |
+ var value = $(item).text().replaceAll('\\t', '')
|
|
| 782 |
+ row["callToList"] = value; // 수신번호는 별도로 처리 |
|
| 783 |
+ dataList.push(row); |
|
| 784 |
+ }); |
|
| 785 |
+ |
|
| 786 |
+ return dataList; |
|
| 787 |
+ |
|
| 788 |
+ |
|
| 768 | 789 |
|
| 769 | 790 |
} |
| 770 | 791 |
|
... | ... | @@ -777,9 +798,8 @@ |
| 777 | 798 |
// title 배열 |
| 778 | 799 |
var varHead = []; |
| 779 | 800 |
// 값 배열 |
| 780 |
- var varVal = []; |
|
| 801 |
+// var varVal = []; |
|
| 781 | 802 |
|
| 782 |
- var inputTag = '<input type="hidden" class="varValList" name="varValList[$INDEX$]" value="$VAL$">'; |
|
| 783 | 803 |
|
| 784 | 804 |
// excel title |
| 785 | 805 |
$('#excelHead').find('div').each(function(index, item){
|
... | ... | @@ -803,7 +823,7 @@ |
| 803 | 823 |
$("#bizForm").append(inputTag.replace('$VAL$',varValTemp ).replace('$INDEX$',index ));
|
| 804 | 824 |
}); */ |
| 805 | 825 |
|
| 806 |
- $('.excelBody').each(function(index, item){
|
|
| 826 |
+/* $('.excelBody').each(function(index, item){
|
|
| 807 | 827 |
|
| 808 | 828 |
var valLeng = $('#excelHead').find('.list_table_name').length-1;
|
| 809 | 829 |
varValTemp = ''; |
... | ... | @@ -821,7 +841,7 @@ |
| 821 | 841 |
console.log('varValTemp : ',varValTemp);
|
| 822 | 842 |
varVal.push(varValTemp); |
| 823 | 843 |
}); |
| 824 |
- $('#bizForm #varValList').val(varVal);
|
|
| 844 |
+ $('#bizForm #varValList').val(varVal); */
|
|
| 825 | 845 |
} |
| 826 | 846 |
|
| 827 | 847 |
|
... | ... | @@ -1136,8 +1156,8 @@ |
| 1136 | 1156 |
<input type="hidden" id="divideTime" name="divideTime" value=""> <!--전송일자--> |
| 1137 | 1157 |
|
| 1138 | 1158 |
<input type="hidden" id="callFrom" name="callFrom" value=""> <!--완 보내는사람 --> |
| 1139 |
- <input type="hidden" id="callToList" name="callToList" value=""> <!--완 받는사람 리스트--> |
|
| 1140 |
- <input type="hidden" id="varNmList" name="varNmList" value=""> <!--완 변수 이름 리스트--> |
|
| 1159 |
+<!-- <input type="hidden" id="callToList" name="callToList" value=""> 완 받는사람 리스트 --> |
|
| 1160 |
+<!-- <input type="hidden" id="varNmList" name="varNmList" value=""> 완 변수 이름 리스트 --> |
|
| 1141 | 1161 |
<input type="hidden" id="varValList" name="varValList" value=""> <!--완 변수 리스트--> |
| 1142 | 1162 |
|
| 1143 | 1163 |
<input type="hidden" id="atSmishingYn" name="atSmishingYn" value="${atSmishingYn}"> <!--알림톡 스미싱 여부-->
|
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView_advcbackup_20250310.jsp
... | ... | @@ -0,0 +1,1773 @@ |
| 1 | +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> | |
| 2 | +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> | |
| 3 | +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> | |
| 4 | +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> | |
| 5 | +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> | |
| 6 | +<%@ page import="itn.com.cmm.LoginVO" %> | |
| 7 | + | |
| 8 | +<!-- <script src="/publish/js/content.js"></script> --> | |
| 9 | +<!-- 주소록관련 js --> | |
| 10 | +<script type="text/javascript" defer src="<c:out value='/js/kakao/at/init.js' />"></script> | |
| 11 | +<script type="text/javascript" src="<c:out value='/js/kakao/at/tabulator.js' />"></script> | |
| 12 | +<script type="text/javascript" src="<c:out value='/js/kakao/at/addr.js' />"></script> | |
| 13 | +<script type="text/javascript" src="<c:out value='/js/kakao/at/alimtalkExcel.js' />"></script> | |
| 14 | +<script type="text/javascript" src="<c:out value='/js/kakao/at/priceClclt.js' />"></script> | |
| 15 | +<script type="text/javascript" src="<c:out value='/js/common/popup.js' />"></script> | |
| 16 | +<script type="text/javascript"> | |
| 17 | +var loginVO = '${loginVO}'; | |
| 18 | + | |
| 19 | +// 체크박스 동적 바인딩 | |
| 20 | +$(document).on('click','.wrap01C', function(){ | |
| 21 | + var total = $(".wrap01C").length; | |
| 22 | + var checked = $(".wrap01C:checked").length; | |
| 23 | + if(total != checked) $("#select_all").prop("checked", false); | |
| 24 | + else $("#select_all").prop("checked", true); | |
| 25 | +}); | |
| 26 | + | |
| 27 | +$(document).ready(function(){ | |
| 28 | + | |
| 29 | + //채널 ID change function | |
| 30 | + $("#selectKakaoProfileList").on("change", function(){ | |
| 31 | + | |
| 32 | + if(usrDeptChk()){ | |
| 33 | + | |
| 34 | + $("#selectTemplateList option").remove(); | |
| 35 | + selectTemplateList(); | |
| 36 | + | |
| 37 | + }else { | |
| 38 | + | |
| 39 | + $("#selectKakaoProfileList option:eq(0)").prop("selected", true); | |
| 40 | + | |
| 41 | + } | |
| 42 | + | |
| 43 | + }); | |
| 44 | + | |
| 45 | + //템플릿 change function | |
| 46 | + $("#selectTemplateList").on("change", function(){ | |
| 47 | + selectTemplateInfo($(this).val()); | |
| 48 | + fn_viewDataInit02(); | |
| 49 | + priceInit(); // 발송금액 라인 text / 금액 초기화 | |
| 50 | + }); | |
| 51 | + | |
| 52 | + $("#fileClick").click(function(){ | |
| 53 | + if($('#selectTemplateList').val() == '') | |
| 54 | + { | |
| 55 | + alert('템플릿을 선택 후 진행해 주세요.'); | |
| 56 | + return false; | |
| 57 | + } | |
| 58 | + if($("#tpButtonTypeDs").val() == "DS"){ | |
| 59 | + alert("템플릿 내용에 배송조회 버튼이 포함되어 있습니다. \n운송장 번호는 숫자만 등록해주세요") | |
| 60 | + } | |
| 61 | + $('#excelFile').val(''); | |
| 62 | + $("#excelFile").click(); | |
| 63 | + }); | |
| 64 | + | |
| 65 | + //즉시 발송 라디오 버튼 선택시 숨김처리 | |
| 66 | + $("#reserYnN").on('click', function(){ | |
| 67 | + $('.rev_selected').hide(); | |
| 68 | + $('.send_rev .send_content').css('padding-bottom','108px'); | |
| 69 | + $('.send_btn .btnType:first-child').html('발송하기'); | |
| 70 | + $('#bizForm #reserveYn').val($(this).val()); | |
| 71 | + }); | |
| 72 | + | |
| 73 | + //예약 발송 라디오 버튼 선택시 숨김 해제처리 | |
| 74 | + $("#reserYnY").on('click', function(){ | |
| 75 | + $('.rev_selected').show(); | |
| 76 | + $('.send_rev .send_content').css('padding-bottom','0'); | |
| 77 | + $('.send_btn .btnType:first-child').html('예약하기'); | |
| 78 | + $('#bizForm #reserveYn').val($(this).val()); | |
| 79 | + }); | |
| 80 | + | |
| 81 | + //전체선색 버튼 이벤트 | |
| 82 | + $("#select_all").on('click', function(){ | |
| 83 | + if($("#select_all").is(":checked")) $(".wrap01C").prop("checked", true); | |
| 84 | + else $(".wrap01C").prop("checked", false); | |
| 85 | + | |
| 86 | + }); | |
| 87 | + | |
| 88 | + //선택삭제 버튼 클릭 이벤트 | |
| 89 | + $("#select_del").on('click', function(){ | |
| 90 | + | |
| 91 | + if($('.wrap01C:checkbox:checked').length < 1) | |
| 92 | + { | |
| 93 | + alert("삭제할 연락처를 선택해주세요.!!"); | |
| 94 | + return false; | |
| 95 | + } | |
| 96 | + | |
| 97 | + $('.wrap01C').each(function(index, item){ | |
| 98 | + if($(item).is(':checked')) | |
| 99 | + $(item).parent().parent().remove(); | |
| 100 | + }); | |
| 101 | + updateTotCnt(); | |
| 102 | + }); | |
| 103 | + | |
| 104 | + //선택삭제 버튼 클릭 이벤트 | |
| 105 | + $("#all_del").on('click', function(){ | |
| 106 | + | |
| 107 | + if(!confirm("받는사람 목록을 모두 삭제하시겠습니까?")) | |
| 108 | + return false; | |
| 109 | + | |
| 110 | + $('#wrap01_body .list_body').remove(); | |
| 111 | + | |
| 112 | + $('#rowTotCnt').text(0); | |
| 113 | + $('#rowDupCnt').text(0); | |
| 114 | + }); | |
| 115 | + | |
| 116 | + /* | |
| 117 | + * 오류 검사 | |
| 118 | + */ | |
| 119 | + $('#check_validity').click(function(){ | |
| 120 | + var regExp_ctn = /^(01[016789]{1}|02|0[3-9]{1}[0-9]{1})([0-9]{3,4})([0-9]{4})$/; | |
| 121 | + // 치환문자 있는 데이터 | |
| 122 | + if($('#bizForm #txtReplYn').val() === 'N'){ | |
| 123 | + | |
| 124 | + if($('.phoneArea').length < 1){ | |
| 125 | + alert("등록된 연락처가 없습니다.") | |
| 126 | + return false; | |
| 127 | + } | |
| 128 | + | |
| 129 | + $('.phoneArea').each(function(index, item){ | |
| 130 | + var phoneVal = $(item).text().trim(); | |
| 131 | + if(phoneVal.length==11 || phoneVal.length==10) | |
| 132 | + { | |
| 133 | + if(!regExp_ctn.test(phoneVal)) | |
| 134 | + { | |
| 135 | + alert(phoneVal+"는 유효하지 않은 전화번호 입니다."); | |
| 136 | + return false; | |
| 137 | + } | |
| 138 | + } | |
| 139 | + else | |
| 140 | + { | |
| 141 | + alert("유효하지 않은 전화번호 입니다."); | |
| 142 | + return false; | |
| 143 | + } | |
| 144 | + }); | |
| 145 | + alert("오류 데이터가 없습니다."); | |
| 146 | + } | |
| 147 | + }); | |
| 148 | + | |
| 149 | + /** | |
| 150 | + * 템플릿 재선택 버튼 function | |
| 151 | + */ | |
| 152 | + $('#reSelectBtn').click(function(){ | |
| 153 | + var senderKey = $('#selectKakaoProfileList option:selected').val(); | |
| 154 | + | |
| 155 | + if(!senderKey) | |
| 156 | + { | |
| 157 | + alert("채널ID를 선택하고 다시 시도해 주세요."); | |
| 158 | + return false; | |
| 159 | + } | |
| 160 | + | |
| 161 | + | |
| 162 | + var url = ""; | |
| 163 | + var windowTargetName = "KakaoAlimtalkTemplateListPopupAjax"; | |
| 164 | +// var features = "width=930, height=860, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes"; | |
| 165 | + // 2.POST로 데이터 전달 | |
| 166 | + document.templateListPopup.senderKey.value=$('#selectKakaoProfileList option:selected').val(); | |
| 167 | + document.templateListPopup.yellowId.value=$('#selectKakaoProfileList option:selected').text(); | |
| 168 | + document.templateListPopup.target=windowTargetName; | |
| 169 | + showPopup2('',windowTargetName ,'930','860'); | |
| 170 | + document.templateListPopup.submit(); | |
| 171 | + | |
| 172 | + }); | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + $("#send_fail_check").change(function(){ | |
| 177 | + if($("#send_fail_check").is(":checked")){ | |
| 178 | + | |
| 179 | + | |
| 180 | + if(loginVO == "" || loginVO == null){ | |
| 181 | + alert("로그인 후 사용 가능한 기능입니다."); | |
| 182 | + location.href="<c:url value='/web/user/login/login.do'/>"; | |
| 183 | + return false; | |
| 184 | + | |
| 185 | + $("#send_fail_check").prop("checked", false); | |
| 186 | + } | |
| 187 | + | |
| 188 | + if($('#callFromList').val() === ''){ | |
| 189 | + | |
| 190 | + if(confirm('대체문자 전송을 위한 발신번호가 등록되지 않았습니다. \n대체문자 발신번호를 지금 등록하시겠습니까?')){ | |
| 191 | + window.location="<c:out value='/web/user/sendNumberManage.do' />"; | |
| 192 | + } | |
| 193 | + $("#send_fail_check").prop("checked", false); | |
| 194 | + | |
| 195 | + }else if($('#selectTemplateList').val() == '') | |
| 196 | + { | |
| 197 | + alert('템플릿을 선택 후 진행해 주세요.'); | |
| 198 | + $("#send_fail_check").prop("checked", false); | |
| 199 | + return false; | |
| 200 | + }else{ | |
| 201 | + // 에러버튼 체크 초기화 | |
| 202 | + fn_insertErrorYN('N'); | |
| 203 | + | |
| 204 | + $('#smsTxtArea').val(''); | |
| 205 | +// // 미리보기 텍스트를 가져와 줄바꿈 처리 후 대체문자 내용으로 입력 | |
| 206 | + var template_text = $('.template_text').html().trim(); | |
| 207 | + template_text = XSSChange(template_text); | |
| 208 | + $('#smsTxtArea').val(template_text); | |
| 209 | + | |
| 210 | +// //문자 내용 입력시 바이트수 계산하기 | |
| 211 | + | |
| 212 | + $(".replace_send_wrap").slideDown(400); | |
| 213 | + thisFnByteString($('#smsTxtArea').val()); | |
| 214 | + } | |
| 215 | + }else{ | |
| 216 | + $(".replace_send_wrap").slideUp(400); | |
| 217 | + // 초기화 버튼 클릭 | |
| 218 | + $('#failCheckInit').click(); | |
| 219 | + $('.send_top .send_right .phone').css({'top': '0','transition': 'top .4s linear'}); | |
| 220 | + } | |
| 221 | + | |
| 222 | + // 금액 계산 fn 호출 | |
| 223 | + fn_priceClclt(); | |
| 224 | + }); | |
| 225 | + | |
| 226 | + // 대체문자 내용 수정 | |
| 227 | + $('#smsTxtArea').keyup(function(){ | |
| 228 | + // 금액 계산 fn 호출 | |
| 229 | + fn_priceClclt(); | |
| 230 | + // 문자 바이트수 체크 | |
| 231 | + thisFnByteString($('#smsTxtArea').val()); | |
| 232 | + // 에러버튼 체크 초기화 | |
| 233 | + fn_insertErrorYN('N'); | |
| 234 | + | |
| 235 | + }); | |
| 236 | +}); | |
| 237 | +function sendFailCheckInit(){ | |
| 238 | + | |
| 239 | + $("#send_fail_check").prop("checked", false); | |
| 240 | + | |
| 241 | +} | |
| 242 | + | |
| 243 | +function fnTemplateReg(){ | |
| 244 | + if(loginVO == "" || loginVO == null){ | |
| 245 | + alert("신규 템플릿 등록 서비스는 로그인 후 이용 가능합니다."); | |
| 246 | + location.href="<c:url value='/web/user/login/login.do'/>"; | |
| 247 | + return false; | |
| 248 | + } | |
| 249 | + if(usrDeptChk()){ | |
| 250 | + | |
| 251 | + if(confirm('신규 템플릿 등록 화면으로 이동하시겠습니까?')){ | |
| 252 | + location.href="<c:url value='/web/mjon/kakao/template/selectKaKaoTemplateList.do'/>"; | |
| 253 | + } | |
| 254 | + } | |
| 255 | + | |
| 256 | +} | |
| 257 | + | |
| 258 | +/* | |
| 259 | + * 탬플릿 재선택 팝업에서 실행하는 function | |
| 260 | + */ | |
| 261 | +function call_templateChange(templateId){ | |
| 262 | + | |
| 263 | + $('#selectTemplateList').val(templateId).prop('selected', true); | |
| 264 | + selectTemplateInfo(templateId); | |
| 265 | +// $('#selectTemplateList').val('bizp_2023021711142018819557746').prop('selected', true); | |
| 266 | +} | |
| 267 | + | |
| 268 | + | |
| 269 | +/** | |
| 270 | + * 먼저 불러온 DATA가 있으면 삭제 | |
| 271 | + * !! 화면에 보이는 data만 삭제 !! | |
| 272 | + * 치환 데이터 | |
| 273 | + */ | |
| 274 | +function fn_viewDataInit01(){ | |
| 275 | + | |
| 276 | + // excel Data (치환 문자 table) 비우기 | |
| 277 | + $('#excelHead').empty(); | |
| 278 | + $('.excelBody').remove(); | |
| 279 | + $('#excelNm01').val(''); | |
| 280 | + // 치환문자 없을 경우 | |
| 281 | +// $('#wrap01_body .list_body').remove(); | |
| 282 | +} | |
| 283 | + | |
| 284 | +/** | |
| 285 | + * 먼저 불러온 DATA가 있으면 삭제 | |
| 286 | + * !! 화면에 보이는 data만 삭제 !! | |
| 287 | + * 총건수, 중복건수 데이터 0으로 초기화 | |
| 288 | + * 엑셀 불러오기 데이터 | |
| 289 | + */ | |
| 290 | +function fn_viewDataInit02(){ | |
| 291 | + $('.excelBody').remove(); | |
| 292 | + $('#excelHead').empty(); | |
| 293 | + $('#rowTotCnt').text("0"); | |
| 294 | + $('#rowDupCnt').text("0"); | |
| 295 | +} | |
| 296 | + | |
| 297 | +/* | |
| 298 | + *변수 다운로드 excel show function | |
| 299 | + */ | |
| 300 | +function variableWrapShow(){ | |
| 301 | + $(".receiver_wrap02").attr("style","display: block !important;"); | |
| 302 | + $(".receiver_wrap01").attr("style","display: none !important;"); | |
| 303 | + $(".variable_wrap").show(); | |
| 304 | + $('#bizForm #txtReplYn').val('Y'); | |
| 305 | + | |
| 306 | +} | |
| 307 | + | |
| 308 | +/* | |
| 309 | + * 변수 다운로드 excel hide function | |
| 310 | + */ | |
| 311 | +function variableWrapHide(){ | |
| 312 | + $(".receiver_wrap01").attr("style","display: block !important;"); | |
| 313 | + $(".receiver_wrap02").attr("style","display: none !important;"); | |
| 314 | + $(".variable_wrap").hide(); | |
| 315 | + $('#bizForm #txtReplYn').val('N'); | |
| 316 | + | |
| 317 | +} | |
| 318 | + | |
| 319 | + | |
| 320 | +/* | |
| 321 | + * 등록된 발신 탬플릿 목록 조회 function | |
| 322 | + */ | |
| 323 | +function selectTemplateList(){ | |
| 324 | + var selectAgentCode = $("select[name='selectKakaoProfileList']").val(); | |
| 325 | + $.ajax({ | |
| 326 | + type: "POST" | |
| 327 | + , url: "<c:out value ='/web/mjon/kakao/alimtalk/selectKakaoApiTemplateAjax.do' />" | |
| 328 | + , data:{ "senderKey":selectAgentCode, "pageType":"notityTalk"} | |
| 329 | + , dataType:'json' | |
| 330 | + , cache: false | |
| 331 | + , async: false | |
| 332 | + , timeout: 600000 | |
| 333 | + , success: function (returnData, status) { | |
| 334 | + if(status == 'success'){ | |
| 335 | + | |
| 336 | + $("#selectTemplateList option").remove(); | |
| 337 | + $("#selectTemplateList").append("<option value=''>알림톡 템플릿 선택</option>"); | |
| 338 | + | |
| 339 | + var list = returnData.kakaoTemplateList; | |
| 340 | + for(var i=0; i < list.templatList.length; i++){ | |
| 341 | + $("#selectTemplateList").append("<option value='"+list.templatList[i].templateCode+"'>"+list.templatList[i].templateName+"</option>"); | |
| 342 | + } | |
| 343 | + | |
| 344 | + } else if(status== 'fail'){ | |
| 345 | + alert(returnData.message); | |
| 346 | + } | |
| 347 | + } | |
| 348 | + ,error: function (e) { | |
| 349 | + console.log("ERROR : ", e); | |
| 350 | + alert("관리자에게 문의해 주세요"); | |
| 351 | + } | |
| 352 | + }); | |
| 353 | +} | |
| 354 | + | |
| 355 | +/* | |
| 356 | + * 템플릿 선택하여 정보 가져오는 function | |
| 357 | + */ | |
| 358 | +function selectTemplateInfo(id){ | |
| 359 | + | |
| 360 | + var selectAgentCode = $("select[name='selectKakaoProfileList']").val(); | |
| 361 | + | |
| 362 | + $("#alimtalkTemplate").empty(); | |
| 363 | + | |
| 364 | + // 우측 본문내용 만들기 | |
| 365 | + $("#alimtalkTemplate").load("/web/mjon/kakao/template/selectKakaoApiTemplateDataViewLoadAjax.do" | |
| 366 | + , { | |
| 367 | + "senderKey":selectAgentCode | |
| 368 | + , "templateCode" : id | |
| 369 | + },function(){ | |
| 370 | + | |
| 371 | + | |
| 372 | + // =================== 대체문자 숨김 / html 초기화 | |
| 373 | + $(".replace_send_wrap").slideUp(400); | |
| 374 | + // 초기화 버튼 클릭 | |
| 375 | + $('#failCheckInit').click(); | |
| 376 | + $('.send_top .send_right .phone').css({'top': '0','transition': 'top .4s linear'}); | |
| 377 | + $("#send_fail_check").prop("checked", false); | |
| 378 | + // //=================== 대체문자 숨김 / html 초기화 | |
| 379 | + | |
| 380 | + | |
| 381 | + // 미리보기에 채널ID 노출 | |
| 382 | + $('#prev_p_top').text($('#selectKakaoProfileList option:selected').text()); | |
| 383 | + | |
| 384 | + | |
| 385 | + var tpTemplateContent = $('#tpTemplateContent').val(); | |
| 386 | + $("#senderKeyInfo").val(selectAgentCode); | |
| 387 | + $("#templateCodeInfo").val($('#tpTemplateCode').val()); | |
| 388 | + | |
| 389 | + //엑셀 샘플 정보 - 내용만 변수처리하기 | |
| 390 | + $("#excelTemplateContent").val(tpTemplateContent); | |
| 391 | + $("#excelTemplateSubtitle").val($('#tpTemplateSubtitle').val()); | |
| 392 | + $("#excelTemplateTitle").val($('#tpTemplateTitle').val()); | |
| 393 | + | |
| 394 | + if(($('#tpTemplateEmphasizeType').val() != "NONE") || $('#tpBottonListSize').val() != "0"){ | |
| 395 | + $('#bizForm #bizJsonYn').val('Y'); | |
| 396 | + }else{ | |
| 397 | + $('#bizForm #bizJsonYn').val('N'); | |
| 398 | + } | |
| 399 | + | |
| 400 | + | |
| 401 | + if($('#tpTemplateEmphasizeType').val() == "TEXT"){ | |
| 402 | + $("#templateEmphasizeType").val($('#tpTemplateEmphasizeType').val()); | |
| 403 | + $("#templateTitle").val($('#tpTemplateTitle').val()); | |
| 404 | + $("#templateSubtitle").val($('#tpTemplateSubtitle').val()); | |
| 405 | + } | |
| 406 | + | |
| 407 | + $("#bizForm #templateContent").val(tpTemplateContent); | |
| 408 | + templateChange(); | |
| 409 | + | |
| 410 | + }); | |
| 411 | +} | |
| 412 | + | |
| 413 | +/* | |
| 414 | + * 알림톡 변수가 있는지 체크해서 변수 다운로드 excel show / hide 하는 function | |
| 415 | + */ | |
| 416 | +function templateChange(){ | |
| 417 | + var varList = $("#excelTemplateContent").val().match(/#\{([^}]+)\}/g); | |
| 418 | + if(varList == null) | |
| 419 | + variableWrapHide(); | |
| 420 | + else | |
| 421 | + variableWrapShow(); | |
| 422 | + | |
| 423 | +} | |
| 424 | +//엑셀 업로드 양식 다운로드 받기 | |
| 425 | +function excelDownload(){ | |
| 426 | + | |
| 427 | + if(loginVO == "" || loginVO == null){ | |
| 428 | + alert("변수설정 엑셀파일 다운로드는 서비스는 로그인 후 이용 가능합니다."); | |
| 429 | + location.href="<c:url value='/web/user/login/login.do'/>"; | |
| 430 | + return false; | |
| 431 | + } | |
| 432 | + | |
| 433 | + var profile = $("#selectKakaoProfileList").val(); | |
| 434 | + var template = $("#selectTemplateList").val(); | |
| 435 | + | |
| 436 | + if(profile == ''){ | |
| 437 | + | |
| 438 | + alert("채널ID를 선택해주세요."); | |
| 439 | + return false; | |
| 440 | + | |
| 441 | + } | |
| 442 | + | |
| 443 | + if(template == ''){ | |
| 444 | + | |
| 445 | + alert("알림톡 템플릿을 선택해주세요."); | |
| 446 | + return false; | |
| 447 | + | |
| 448 | + } | |
| 449 | + | |
| 450 | + //합친 내용에서 변수 문자열 뽑기 - #과{}미포함 | |
| 451 | + var fullVarList = $("#excelTemplateContent").val().match(/(?<=\#\{)(.*?)(?=\})/g); | |
| 452 | + $('#excelForm #varNmList').val(fullVarList); | |
| 453 | + $('#excelForm').submit(); | |
| 454 | + | |
| 455 | +} | |
| 456 | + | |
| 457 | +function checkConf() { | |
| 458 | + var confCheck = false; | |
| 459 | + | |
| 460 | + $.ajax({ | |
| 461 | + type: "POST", | |
| 462 | + url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do", | |
| 463 | + data: {}, | |
| 464 | + dataType:'json', | |
| 465 | + async: false, | |
| 466 | + success: function (returnData, status) { | |
| 467 | + if(returnData.result == "fail") { | |
| 468 | + console.log(returnData.message); | |
| 469 | + }else if(returnData.result == "success"){ | |
| 470 | + confCheck = true; | |
| 471 | + } | |
| 472 | + } | |
| 473 | + ,error: function (e) {console.log("ERROR : ", e); } | |
| 474 | + }); | |
| 475 | + | |
| 476 | + return confCheck; | |
| 477 | +} | |
| 478 | + | |
| 479 | +/* | |
| 480 | + * 등록된 발신 탬플릿 카카오톡 전송 | |
| 481 | + */ | |
| 482 | +function sendTemplateInfo(){ | |
| 483 | + | |
| 484 | + if(!checkConf()){ //문자온 conf-check | |
| 485 | + alert("현재 알림톡 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요."); | |
| 486 | + return false; | |
| 487 | + } | |
| 488 | + | |
| 489 | + if(loginVO == "" || loginVO == null){ | |
| 490 | + alert("카카오톡 발송 서비스는 로그인 후 이용 가능합니다."); | |
| 491 | + location.href="<c:url value='/web/user/login/login.do'/>"; | |
| 492 | + return false; | |
| 493 | + } | |
| 494 | + | |
| 495 | + if(!usrDeptChk()){ | |
| 496 | + return false; | |
| 497 | + } | |
| 498 | + | |
| 499 | + //채널ID / 템플릿 선택 | |
| 500 | + if(!$('#selectKakaoProfileList').val()) | |
| 501 | + { | |
| 502 | + alert('채널ID를 선택 후 발송해 주세요'); | |
| 503 | + return false; | |
| 504 | + } | |
| 505 | + | |
| 506 | + if(!$('#selectTemplateList').val() ) | |
| 507 | + { | |
| 508 | + alert('템플릿을 선택 후 발송해 주세요'); | |
| 509 | + return false; | |
| 510 | + } | |
| 511 | + | |
| 512 | + //수신자 목록 체크 | |
| 513 | + if($('.phoneArea').length < 1) | |
| 514 | + { | |
| 515 | + alert('받는 사람 입력 후 발송해 주세요'); | |
| 516 | + return false; | |
| 517 | + } | |
| 518 | + | |
| 519 | + //수신자 목록 체크 | |
| 520 | + if($('.phoneArea').length > 500) | |
| 521 | + { | |
| 522 | + alert("최대 발송 건수는 500건 입니다."); | |
| 523 | + return false; | |
| 524 | + } | |
| 525 | + | |
| 526 | + | |
| 527 | + if($('#errorChk').val() === 'N' | |
| 528 | + && $("#send_fail_check").is(":checked") | |
| 529 | + && $('#txtReplYn').val() === 'Y' | |
| 530 | + ) | |
| 531 | + { | |
| 532 | + alert('대체문자 전송을 원하시면 오류검사 버튼을 확인해 주세요.'); | |
| 533 | + return false; | |
| 534 | + } | |
| 535 | + | |
| 536 | + // 금액 확인 | |
| 537 | + // 사용자 금액 | |
| 538 | + var userMoney = $('#oriUserMoney').val(); | |
| 539 | + // 발송 금액 | |
| 540 | + var totalPriceTxt = $('#totalPriceTxt').text(); | |
| 541 | + // 금액 확인 | |
| 542 | + var resutlPrice = parseFloat(userMoney)-parseFloat(totalPriceTxt); | |
| 543 | + | |
| 544 | + // 음수면 -1 값 | |
| 545 | + if(Math.sign(resutlPrice) < 0) | |
| 546 | + { | |
| 547 | + alert("발송에 필요한 회원님의 보유 잔액이 부족 합니다."); | |
| 548 | + return false; | |
| 549 | + } | |
| 550 | + | |
| 551 | + // 초기화 | |
| 552 | + $('.varValList').remove(); | |
| 553 | + $('#bizForm #varNmList').val(''); | |
| 554 | + | |
| 555 | + | |
| 556 | + // 대체문자 전송 확인 | |
| 557 | + if($('#send_fail_check').is(':checked')){ | |
| 558 | + $('#bizForm #subMsgSendYn').val("Y"); | |
| 559 | + $('#bizForm #subMsgTxt').val($("#smsTxtArea").val()); | |
| 560 | + | |
| 561 | + var subMsgTxt = $("#smsTxtArea").val().match(/#\{([^}]+)\}/g); | |
| 562 | + if(subMsgTxt == null){ | |
| 563 | + $('#bizForm #subMsgTxtReplYn').val("N"); | |
| 564 | + }else{ | |
| 565 | + $('#bizForm #subMsgTxtReplYn').val("Y"); | |
| 566 | + } | |
| 567 | + }else{ | |
| 568 | + $('#bizForm #subMsgSendYn').val("N"); | |
| 569 | + } | |
| 570 | + | |
| 571 | + // 예약문자 및 분할전송 확인 | |
| 572 | + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 | |
| 573 | + $('#bizForm #reserveYn').val(reserYn); | |
| 574 | + if(reserYn == 'Y'){ | |
| 575 | + | |
| 576 | + var date = $(".resDate").val();//form.msgResDate.value; | |
| 577 | + var hour = $("select[name='msgResHour']").val(); | |
| 578 | + var min = $("select[name='msgResMin']").val(); | |
| 579 | + | |
| 580 | + if(date == ""){ | |
| 581 | + alert("예약전송 날짜를 선택해 주세요."); | |
| 582 | + return false; | |
| 583 | + | |
| 584 | + }else{ | |
| 585 | + | |
| 586 | + var now = new Date(); | |
| 587 | + var reqDate = date + " " + hour + ":" + min + ":00"; | |
| 588 | + var gapDate = getGapDayTime(date, hour, min); | |
| 589 | + | |
| 590 | + if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜. | |
| 591 | + alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요."); | |
| 592 | + return false; | |
| 593 | + }else{ | |
| 594 | + $('#bizForm #reqDate').val(reqDate); | |
| 595 | + } | |
| 596 | + } | |
| 597 | + | |
| 598 | + var divideChk = ""; | |
| 599 | + if($('#inputDivideChk').is(':checked')){ | |
| 600 | + divideChk = "Y"; | |
| 601 | + }else{ | |
| 602 | + divideChk = "N" | |
| 603 | + } | |
| 604 | + | |
| 605 | + //var divideCnt = $("select[name='frmDivideCnt']").val(); | |
| 606 | + var divideCnt = $('#frmDivideCnt').val(); | |
| 607 | + var divideTime = $("select[name='divideTime']").val(); | |
| 608 | + | |
| 609 | + $('#bizForm #divideChk').val(divideChk); | |
| 610 | + $('#bizForm #divideCnt').val(divideCnt); | |
| 611 | + $('#bizForm #divideTime').val(divideTime); | |
| 612 | + | |
| 613 | + }else{ | |
| 614 | + $('#bizForm #reqDate').val(""); | |
| 615 | + } | |
| 616 | + | |
| 617 | + // 치환문자 있는 데이터 파씽 | |
| 618 | + if($('#bizForm #txtReplYn').val() === 'Y'){ | |
| 619 | + fn_excelDataTransParsing(); | |
| 620 | + // 치환문자 있는 수신자 리스트 | |
| 621 | + fn_transCallToListParsing(); | |
| 622 | + }else{ | |
| 623 | + // 치환문자 없는 수신자 리스트 | |
| 624 | + fn_callToListParsing(); | |
| 625 | + } | |
| 626 | + | |
| 627 | + $('#bizForm #senderKey').val($('#selectKakaoProfileList').val()); | |
| 628 | + $('#bizForm #templateCode').val($('#selectTemplateList').val()); | |
| 629 | + | |
| 630 | + // 발신번호 | |
| 631 | + $('#bizForm #callFrom').val(removeDash($('#callFromList option:selected').val())); | |
| 632 | + | |
| 633 | + if(confirm("알림톡을 발송하시겠습니까?")){ | |
| 634 | + var spamChk = true; | |
| 635 | + //2023.09.06 알림톡 스팸체크 기능 제거요청으로 인한 주석처리 | |
| 636 | + /*var spamChk = false; | |
| 637 | + var spmData = new FormData(document.bizForm); | |
| 638 | + $.ajax({ | |
| 639 | + type: "POST" | |
| 640 | + , url: "/web/mjon/alimtalk/selectSpamKakaoAlimtalkMsgChkAjax.do" | |
| 641 | + , data: spmData | |
| 642 | + , dataType:'json' | |
| 643 | + , async: false | |
| 644 | + , processData: false | |
| 645 | + , contentType: false | |
| 646 | + , cache: false | |
| 647 | + , success: function (returnData, status) { | |
| 648 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 649 | + | |
| 650 | + if("fail" == returnData.result){ | |
| 651 | + alert(returnData.message); | |
| 652 | + return false; | |
| 653 | + }else if("loginFail" == returnData.result){ | |
| 654 | + alert(returnData.message); | |
| 655 | + return false; | |
| 656 | + }else if("spams" == returnData.result){ | |
| 657 | + alert("전송 내용에 스팸문구가 포함되어 있습니다.") | |
| 658 | + return false; | |
| 659 | + }else{ | |
| 660 | + spamChk = true; | |
| 661 | + return false; | |
| 662 | + } | |
| 663 | + | |
| 664 | + } else if(status== 'fail'){ | |
| 665 | + alert(returnData.message); | |
| 666 | + return false; | |
| 667 | + } | |
| 668 | + } | |
| 669 | + , error: function (e) { | |
| 670 | + alert("문자 발송에 실패하였습니다."); | |
| 671 | + console.log("ERROR : ", e); | |
| 672 | + return false; | |
| 673 | + } | |
| 674 | + }); */ | |
| 675 | + | |
| 676 | + if(spamChk){ | |
| 677 | + var data = new FormData(document.bizForm); | |
| 678 | + $.ajax({ | |
| 679 | + type: "POST" | |
| 680 | + , url: "/web/mjon/kakao/alimtalk/kakaoAlimTalkMsgSendAjax.do" | |
| 681 | +// , url: "/web/mjon/kakao/alimtalk/kakaoAlimTalkMsgSendAjax_advc.do" | |
| 682 | + , data: data | |
| 683 | + , dataType: 'json' | |
| 684 | + , async: true | |
| 685 | + , processData: false | |
| 686 | + , contentType: false | |
| 687 | + , cache: false | |
| 688 | + , success: function (returnData, status) { | |
| 689 | + console.log('returnData : ', returnData); | |
| 690 | + if(status == 'success'){ | |
| 691 | + /* if("loginFail" == returnData.result){ | |
| 692 | + | |
| 693 | + alert(returnData.message); | |
| 694 | + return false; | |
| 695 | + | |
| 696 | + }else if('fail' == returnData.result){ | |
| 697 | + | |
| 698 | + alert(returnData.message); | |
| 699 | + return false; | |
| 700 | + | |
| 701 | + }else if('authFail' == returnData.result){ | |
| 702 | + | |
| 703 | + alert(returnData.message); | |
| 704 | + location.reload(); | |
| 705 | + | |
| 706 | + } else if(status == 'success'){ | |
| 707 | + | |
| 708 | + var kakaoSendCnt = returnData.resultSts; | |
| 709 | + | |
| 710 | + $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 711 | + | |
| 712 | + //예약발송 건의 경우 결과 팝업 문구 변경 | |
| 713 | + if(reserYn == 'Y'){ | |
| 714 | + $('.pop_msg_success .msg_text').html("예약 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>알림톡이 예약 되었습니다."); | |
| 715 | + }else{ | |
| 716 | + $('.pop_msg_success .msg_text').html("발송 성공 : <strong>"+ kakaoSendCnt + "</strong>건의<br>알림톡이 발송 되었습니다."); | |
| 717 | + } | |
| 718 | + | |
| 719 | + $('.mask').addClass('on'); | |
| 720 | + } */ | |
| 721 | + } | |
| 722 | + } | |
| 723 | + ,beforeSend : function(xmlHttpRequest) { | |
| 724 | + //로딩창 show | |
| 725 | + $('.loading_layer').addClass('active'); | |
| 726 | + } | |
| 727 | + ,complete : function(xhr, textStatus) { | |
| 728 | + //로딩창 hide | |
| 729 | + $('.loading_layer').removeClass('active'); | |
| 730 | + } | |
| 731 | + ,error: function (e) { | |
| 732 | + console.log("ERROR : ", e); | |
| 733 | + alert("카카오 알림톡 전송에 실패하였습니다."); | |
| 734 | + } | |
| 735 | + }); | |
| 736 | + } | |
| 737 | + } | |
| 738 | +} | |
| 739 | + | |
| 740 | +/* | |
| 741 | + * 치환문자 있는 수신자 목록 파씽 | |
| 742 | + */ | |
| 743 | +function fn_transCallToListParsing(){ | |
| 744 | + var callToList = []; | |
| 745 | + // excel body | |
| 746 | + $('.excelBody').each(function(indexBody, itemBody){ | |
| 747 | + $(itemBody).find('.list_table_name').each(function(indexRow, itemRow){ | |
| 748 | + if(indexRow == 0) | |
| 749 | + { | |
| 750 | + callToList.push($(itemRow).text().replaceAll('\\t', '')); | |
| 751 | + } | |
| 752 | + }); | |
| 753 | + }); | |
| 754 | + $('#bizForm #callToList').val(callToList); | |
| 755 | + | |
| 756 | +} | |
| 757 | + | |
| 758 | +/* | |
| 759 | + * 치환문자 없는 수신자 목록 파씽 | |
| 760 | + */ | |
| 761 | +function fn_callToListParsing(){ | |
| 762 | + | |
| 763 | + var callToList = []; | |
| 764 | + // excel body | |
| 765 | + $('.phoneArea').each(function(index, item){ | |
| 766 | + callToList.push($(item).text().replaceAll('\\t', '')); | |
| 767 | + }); | |
| 768 | + | |
| 769 | + $('#bizForm #callToList').val(callToList); | |
| 770 | + | |
| 771 | +} | |
| 772 | + | |
| 773 | +/* | |
| 774 | + * 받는사람 excel data 파씽 | |
| 775 | + */ | |
| 776 | +function fn_excelDataTransParsing(){ | |
| 777 | + | |
| 778 | + | |
| 779 | + // title 배열 | |
| 780 | + var varHead = []; | |
| 781 | + // 값 배열 | |
| 782 | + var varVal = []; | |
| 783 | + | |
| 784 | + var inputTag = '<input type="hidden" class="varValList" name="varValList[$INDEX$]" value="$VAL$">'; | |
| 785 | + | |
| 786 | + // excel title | |
| 787 | + $('#excelHead').find('div').each(function(index, item){ | |
| 788 | + if(index != 0) | |
| 789 | + varHead.push($(item).text().replaceAll('\\t', '')); | |
| 790 | + }); | |
| 791 | + $('#bizForm #varNmList').val(varHead); | |
| 792 | + | |
| 793 | + // excel body | |
| 794 | +/* $('.excelBody').each(function(index, item){ | |
| 795 | + varValTemp = []; | |
| 796 | + $(item).find('.list_table_name').each(function(index, item){ | |
| 797 | + if(index != 0){ | |
| 798 | + if(index == 1){ | |
| 799 | + varValTemp = $(item).text().replaceAll('\\t', ''); | |
| 800 | + }else | |
| 801 | + varValTemp += ","+$(item).text().replaceAll('\\t', ''); | |
| 802 | + } | |
| 803 | + }); | |
| 804 | + | |
| 805 | + $("#bizForm").append(inputTag.replace('$VAL$',varValTemp ).replace('$INDEX$',index )); | |
| 806 | + }); */ | |
| 807 | + | |
| 808 | + $('.excelBody').each(function(index, item){ | |
| 809 | + | |
| 810 | + var valLeng = $('#excelHead').find('.list_table_name').length-1; | |
| 811 | + varValTemp = ''; | |
| 812 | + | |
| 813 | + $(item).find('.list_table_name').each(function(index, item){ | |
| 814 | + if(index != 0) | |
| 815 | + { | |
| 816 | + var itemText = $(item).text().replaceAll('\\t', ''); | |
| 817 | + if(index !== 1) | |
| 818 | + varValTemp += '§'+itemText.replaceAll(',', 'Ï'); | |
| 819 | + else | |
| 820 | + varValTemp += itemText.replaceAll(',', 'Ï'); | |
| 821 | + } | |
| 822 | + }); | |
| 823 | + console.log('varValTemp : ',varValTemp); | |
| 824 | + varVal.push(varValTemp); | |
| 825 | + }); | |
| 826 | + $('#bizForm #varValList').val(varVal); | |
| 827 | +} | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | +//주소록 불러오기 버튼 클릭시 | |
| 832 | +$('.popupAddr').click(function(){ | |
| 833 | + | |
| 834 | + if(loginVO == "" || loginVO == null){ | |
| 835 | + alert("주소록 불러오기 서비스는 로그인 후 이용 가능합니다."); | |
| 836 | + location.href="<c:url value='/web/user/login/login.do'/>"; | |
| 837 | + return false; | |
| 838 | + } | |
| 839 | + | |
| 840 | + $("#addrGroupLoad").load("/web/mjon/msgdata/selectAddrGroupListAjax.do", "" ,function(response, status, xhr){ | |
| 841 | + //리스트 스크롤 처리해주기 | |
| 842 | + $(".adr_pop_list").mCustomScrollbar({ | |
| 843 | + axis: 'y', | |
| 844 | + scrollbarPosition: "outside", | |
| 845 | + theme: "dark", | |
| 846 | + autoHideScrollbar: false | |
| 847 | + }); | |
| 848 | + }); | |
| 849 | + | |
| 850 | +}); | |
| 851 | + | |
| 852 | + | |
| 853 | +//알림톡 상세보기 화면 호출 | |
| 854 | +function fnTemplateDetail(templateCode){ | |
| 855 | + var form = document.templateForm; | |
| 856 | + var selectAgentCode = $("select[name='selectKakaoProfileList']").val(); // 선택 채널ID | |
| 857 | + | |
| 858 | + form.senderKey.value = selectAgentCode; | |
| 859 | + form.templateCode.value = templateCode; | |
| 860 | + form.target='_blank'; | |
| 861 | + form.action="/web/mjon/kakao/template/requestKakaoApiTemplateDetail.do"; | |
| 862 | + form.submit(); | |
| 863 | + | |
| 864 | +} | |
| 865 | + | |
| 866 | + | |
| 867 | +//문자 바이트수 계산하기 함수 | |
| 868 | +function thisFnByteString(contents){ | |
| 869 | + var totalByte = 0; | |
| 870 | + //var content = contents; | |
| 871 | + var adverYn = $("input[name='send_adYn']:checked").val(); | |
| 872 | + var adTxtLeng = 0; | |
| 873 | + var denyTxtLeng = 0; | |
| 874 | + | |
| 875 | + $('#msgLeng').html(""); | |
| 876 | + $('#limitLeng').html(""); | |
| 877 | + var conLeng = conByteLeng(contents); // 내용 문자 입력 바이트 수 계산하기 | |
| 878 | + | |
| 879 | + | |
| 880 | + $('#msgLeng').text(conLeng); | |
| 881 | + | |
| 882 | + //문자 길이 변수에 저장해주기 | |
| 883 | + $('#smsLen').val(conLeng); | |
| 884 | + | |
| 885 | + | |
| 886 | + if(conLeng > 90){ | |
| 887 | + | |
| 888 | + $('#msgLeng').html(conLeng + " / "); | |
| 889 | + $('#limitLeng').html("2000"); | |
| 890 | + $('.msg_com').html("장문"); | |
| 891 | + $('#msgType').val("6"); // 메세지 타입 설정 | |
| 892 | + | |
| 893 | + $('.msg_com').removeClass("msg_short"); //단문 클래스 삭제하고 | |
| 894 | + $('.put_left').removeClass("short"); //내용 입력 박스 클래스 삭제 | |
| 895 | + $('.msg_com').addClass("msg_long"); // 장문 클래스 삽입 | |
| 896 | +// $('.put_left').addClass("long"); // 내용 입력 박스에 클래스 삽입 | |
| 897 | +// $('.msg_title').addClass('active'); | |
| 898 | + //document.getElementById("mmsSubject").disabled = false; | |
| 899 | + | |
| 900 | + }else{ | |
| 901 | + | |
| 902 | + $('#msgLeng').html(conLeng + " / "); | |
| 903 | + $('#limitLeng').html("90"); | |
| 904 | + $('.msg_com').html("단문"); | |
| 905 | + $('#msgType').val("4"); // 메세지 타입 설정 | |
| 906 | + $('.msg_com').removeClass("msg_long"); //단문 클래스 삭제하고 | |
| 907 | + $('.put_left').removeClass("long"); //내용 입력 박스 클래스 삭제 | |
| 908 | + $('.msg_com').addClass("msg_short"); // 장문 클래스 삽입 | |
| 909 | +// $('.put_left').addClass("short"); // 내용 입력 박스에 클래스 삽입 | |
| 910 | +// $('.msg_title, .title_wrap .textbox').removeClass('active'); | |
| 911 | + | |
| 912 | + } | |
| 913 | + | |
| 914 | + //수신목록 전체 데이터 갯수 구하기 | |
| 915 | + updateTotCnt(totRows); | |
| 916 | +} | |
| 917 | + | |
| 918 | +/** | |
| 919 | + * @description 대체문자 오류체크 funciton | |
| 920 | + */ | |
| 921 | +function fn_errorChk(){ | |
| 922 | + | |
| 923 | + // 대체문자가 없을 시 return false; | |
| 924 | + if($('#txtReplYn').val() === 'N') | |
| 925 | + { | |
| 926 | + alert('오류가 없습니다.'); | |
| 927 | + return false; | |
| 928 | + } | |
| 929 | + | |
| 930 | + // 치환 부분 변수명만 추출 = 배열 | |
| 931 | + var varList = $("#excelTemplateContent").val().match(/#\{([^}]+)\}/g); | |
| 932 | + | |
| 933 | + var smsTxt = $('#smsTxtArea').val(); | |
| 934 | + for(var i=0; i < varList.length; i++){ | |
| 935 | + if(smsTxt.indexOf(varList[i]) < 0){ | |
| 936 | + if(confirm(varList[i] + '값이 없습니다. 치환문자 없이 진행하시겠습니까?')){ | |
| 937 | + fn_insertErrorYN('Y'); | |
| 938 | + }; | |
| 939 | + return false; | |
| 940 | + } | |
| 941 | + smsTxt = smsTxt.replace(varList[i], ''); | |
| 942 | + }; | |
| 943 | + alert('오류가 없습니다.'); | |
| 944 | + fn_insertErrorYN('Y'); | |
| 945 | +} | |
| 946 | + | |
| 947 | + | |
| 948 | +function fn_insertErrorYN(val){ | |
| 949 | + $('#errorChk').val(val); | |
| 950 | +} | |
| 951 | + | |
| 952 | +function msgResultLink(){ | |
| 953 | + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 | |
| 954 | + if(reserYn == 'Y'){ | |
| 955 | + | |
| 956 | + location.href="/web/mjon/reservmsg/selectReservKaKaoView.do"; | |
| 957 | + | |
| 958 | + }else{ | |
| 959 | + location.href="/web/kakao/sent/selectKakaoSentView.do"; | |
| 960 | + } | |
| 961 | +} | |
| 962 | + | |
| 963 | +function msgSuccessClose(obj){ | |
| 964 | + $(obj).closest('.pop_msg_success').attr('style',''); | |
| 965 | + location.reload(true); | |
| 966 | + $('html').scrollTop(0); | |
| 967 | +} | |
| 968 | + | |
| 969 | +function goToKakaoTestPopUp(){ | |
| 970 | + | |
| 971 | + if(loginVO == "" || loginVO == null){ | |
| 972 | + alert("테스트 발송 서비스는 로그인 후 이용 가능합니다."); | |
| 973 | + location.href="<c:url value='/web/user/login/login.do'/>"; | |
| 974 | + return false; | |
| 975 | + } | |
| 976 | + | |
| 977 | + //기업회원 체크 | |
| 978 | + if(!usrDeptChk()){ | |
| 979 | + return false; | |
| 980 | + } | |
| 981 | + | |
| 982 | + var form = document.kakaoAtDataTestPopupForm; | |
| 983 | + var selectAgentCode = $("select[name='selectKakaoProfileList']").val(); | |
| 984 | + var selectTemplateCode = $("select[name='selectTemplateList']").val(); | |
| 985 | + var selectAgentTxt = $('#selectKakaoProfileList option:selected').text() | |
| 986 | + var txtRepYn = $('#bizForm #txtReplYn').val(); | |
| 987 | + var tpTemplateContent = $('#tpTemplateContent').val(); | |
| 988 | + var jsonYn = $('#bizForm #bizJsonYn').val(); | |
| 989 | + | |
| 990 | + if(selectAgentCode == '') { | |
| 991 | + alert("채널ID를 선택하고 다시 시도해 주세요."); | |
| 992 | + return false; | |
| 993 | + } | |
| 994 | + | |
| 995 | + if(selectTemplateCode == ''){ | |
| 996 | + alert('템플릿을 선택 후 진행해 주세요.'); | |
| 997 | + return false; | |
| 998 | + } | |
| 999 | + | |
| 1000 | + // 치환문자 있는 데이터 파씽 | |
| 1001 | + if($('#bizForm #txtReplYn').val() === 'Y'){ | |
| 1002 | + | |
| 1003 | + //수신자 목록 체크 | |
| 1004 | + if($('.phoneArea').length < 1){ | |
| 1005 | + alert('받는 사람 입력 후 발송해 주세요'); | |
| 1006 | + return false; | |
| 1007 | + } | |
| 1008 | + | |
| 1009 | + // title 배열 | |
| 1010 | + var varHead = []; | |
| 1011 | + // 값 배열 | |
| 1012 | + var varVal = []; | |
| 1013 | + | |
| 1014 | + // excel title | |
| 1015 | + $('#excelHead').find('div').each(function(index, item){ | |
| 1016 | + if(index != 0) | |
| 1017 | + varHead.push($(item).text().replaceAll('\\t', '')); | |
| 1018 | + }); | |
| 1019 | + form.varNmList.value = varHead; | |
| 1020 | + | |
| 1021 | + $('.excelBody').each(function(index, item){ | |
| 1022 | + varValTemp = ''; | |
| 1023 | + | |
| 1024 | + if(index == 0){ | |
| 1025 | + $(item).find('.list_table_name').each(function(index, item){ | |
| 1026 | + if(index != 0) | |
| 1027 | + { | |
| 1028 | + if(index !== 1) | |
| 1029 | + varValTemp += '§'+$(item).text().replaceAll('\\t', ''); | |
| 1030 | + else | |
| 1031 | + varValTemp += $(item).text().replaceAll('\\t', ''); | |
| 1032 | + } | |
| 1033 | + }); | |
| 1034 | + varVal.push(varValTemp); | |
| 1035 | + } | |
| 1036 | + }); | |
| 1037 | + form.varValList.value = varVal; | |
| 1038 | + } | |
| 1039 | + | |
| 1040 | + form.senderKey.value = selectAgentCode; | |
| 1041 | + form.templateCode.value = selectTemplateCode; | |
| 1042 | + form.agentCodeTxt.value = selectAgentTxt; | |
| 1043 | + form.txtReplYn.value = txtRepYn; | |
| 1044 | + form.templateContent.value = tpTemplateContent; | |
| 1045 | + form.bizJsonYn.value = jsonYn; | |
| 1046 | + | |
| 1047 | + form.method = "post"; | |
| 1048 | + window.open("about:blank", 'testSendPop', 'width=770, height=850, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1'); | |
| 1049 | + form.target = "testSendPop"; | |
| 1050 | + form.action = "/web/mjon/kakao/alimtalk/selectKakaoAlimtalkTemplateDataTestPopup.do"; | |
| 1051 | + form.submit(); | |
| 1052 | +} | |
| 1053 | + | |
| 1054 | +function goToReservKaKaoView(){ | |
| 1055 | + location.href="/web/mjon/reservmsg/selectReservKaKaoView.do"; | |
| 1056 | +} | |
| 1057 | + | |
| 1058 | +function goToSendKaKaoView(){ | |
| 1059 | + location.href="/web/kakao/sent/selectKakaoSentView.do"; | |
| 1060 | +} | |
| 1061 | +function goToPayUserKaKaoView(){ | |
| 1062 | + location.href="/web/member/pay/PayUserWithKakaoList.do"; | |
| 1063 | +} | |
| 1064 | + | |
| 1065 | +function checkNumber(event) { | |
| 1066 | + var divideCnt = $('#frmDivideCnt').val(); | |
| 1067 | + if(!(event.key >= 0 && event.key <= 9)) { | |
| 1068 | + return false; | |
| 1069 | + } | |
| 1070 | + | |
| 1071 | + var totCnt = divideCnt + "" + event.key; | |
| 1072 | + if(Number(totCnt) > 5000){ | |
| 1073 | + alert("분할전송 건수는 5,000건을 초과할 수 없습니다."); | |
| 1074 | + $('#frmDivideCnt').val("20"); | |
| 1075 | + return false; | |
| 1076 | + } | |
| 1077 | + | |
| 1078 | + return true; | |
| 1079 | +} | |
| 1080 | + | |
| 1081 | +</script> | |
| 1082 | + | |
| 1083 | + <div class="loading_layer"> | |
| 1084 | + <div class="loading_container"> | |
| 1085 | + <div class="bar"></div> | |
| 1086 | + <div class="text">Loading</div> | |
| 1087 | + </div> | |
| 1088 | + </div> | |
| 1089 | + | |
| 1090 | + <!-- 기업회원 이동 팝업 --> | |
| 1091 | + <div class="tooltip-wrap cvt_member_popup_wrap"> | |
| 1092 | + <div class="popup-com cvt_member_layer" tabindex="0" data-tooltip-con="cvt_member_layer" data-focus="cvt_member_layer" data-focus-prev="cvt_member_layer-close"> | |
| 1093 | + <div class="popup_heading"> | |
| 1094 | + <p>알림</p> | |
| 1095 | + <button type="button" class="tooltip-close" data-focus="cvt_member_layer-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 1096 | + </div> | |
| 1097 | + <div class="layer_in"> | |
| 1098 | + <p>카카오톡 알림톡은 기업회원만 전송 가능합니다.<br>기업회원 전환 페이지로 이동하시겠습니까?</p> | |
| 1099 | + <div class="popup_btn_wrap2"> | |
| 1100 | + <button type="button" onclick="location.href='/web/user/membershipChange.do'">확인</button> | |
| 1101 | + <button type="button" class="tooltip-close" data-focus="cvt_member_layer-close" data-focus-next="cvt_member_layer">취소</button> | |
| 1102 | + </div> | |
| 1103 | + </div> | |
| 1104 | + </div> | |
| 1105 | + </div> | |
| 1106 | + <button type="button" id="btnDeptPop" data-tooltip="cvt_member_layer" style="display: none;"></button> | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + <!-- 템플릿 설정 디테일을 위한 FORM --> | |
| 1110 | + <form id="templateForm" name="templateForm" method="post"> | |
| 1111 | + <input type="hidden" name="senderKey" value=""/> | |
| 1112 | + <input type="hidden" name="templateCode" value=""/> | |
| 1113 | + <input type="hidden" name="arrTemplateCode" value=""/> | |
| 1114 | + </form> | |
| 1115 | + | |
| 1116 | + <form id="bizForm" name="bizForm" method="post"> | |
| 1117 | + <input type="hidden" id="menuTopTab" name="menuTopTab" value="tabAlim"> | |
| 1118 | + <input type="hidden" id="senderKey" name="senderKey" value=""> <!-- 카카오 보내는 사람 Key --> | |
| 1119 | + <input type="hidden" id="templateCode" name="templateCode" value=""> <!-- 카카오 전송 templat Code --> | |
| 1120 | + | |
| 1121 | + <input type="hidden" id="templateEmphasizeType" name="templateEmphasizeType" value=""> <!-- 카카오 전송 templateEmphasizeType 타입 --> | |
| 1122 | + | |
| 1123 | + <input type="hidden" id="templateContent" name="templateContent" value=""> <!-- 카카오 전송 templat내용 --> | |
| 1124 | + <input type="hidden" id="templateTitle" name="templateTitle" value=""> <!-- 카카오 전송 templat 타이틀 --> | |
| 1125 | + <input type="hidden" id="templateSubtitle" name="templateSubtitle" value=""> <!-- 카카오 전송 templat 서브 타이틀 --> | |
| 1126 | + | |
| 1127 | + <input type="hidden" id="subMsgTxtReplYn" name="subMsgTxtReplYn" value=""> <!-- 대체문자 전송내용에 변환문자가 있는지--> | |
| 1128 | + <input type="hidden" id="subMsgSendYn" name="subMsgSendYn" value=""> <!-- 대체문자 전송여부 - 알림톡 전송 실패 시 문자 전송--> | |
| 1129 | + <input type="hidden" id="subMsgTxt" name="subMsgTxt" value=""> <!-- 대체문자 전송내용 --> | |
| 1130 | + <input type="hidden" id="txtReplYn" name="txtReplYn" value="N"> <!-- 완 치환문자 여부 - --> | |
| 1131 | + <input type="hidden" id="bizJsonYn" name="bizJsonYn" value=""> <!-- JSON 생성 여부 --> | |
| 1132 | + | |
| 1133 | + <input type="hidden" id="reserveYn" name="reserveYn" value=""> <!-- 예약문자 여부 - 예약 선택 여부 // 아래 하단 화면 노출 여부도 같이--> | |
| 1134 | + <input type="hidden" id="reqDate" name="reqDate" value=""> <!--전송일자--> | |
| 1135 | + | |
| 1136 | + <input type="hidden" id="divideChk" name="divideChk" value=""> <!--전송일자--> | |
| 1137 | + <input type="hidden" id="divideCnt" name="divideCnt" value=""> <!--전송일자--> | |
| 1138 | + <input type="hidden" id="divideTime" name="divideTime" value=""> <!--전송일자--> | |
| 1139 | + | |
| 1140 | + <input type="hidden" id="callFrom" name="callFrom" value=""> <!--완 보내는사람 --> | |
| 1141 | + <input type="hidden" id="callToList" name="callToList" value=""> <!--완 받는사람 리스트--> | |
| 1142 | + <input type="hidden" id="varNmList" name="varNmList" value=""> <!--완 변수 이름 리스트--> | |
| 1143 | + <input type="hidden" id="varValList" name="varValList" value=""> <!--완 변수 리스트--> | |
| 1144 | + | |
| 1145 | + <input type="hidden" id="atSmishingYn" name="atSmishingYn" value="${atSmishingYn}"> <!--알림톡 스미싱 여부--> | |
| 1146 | + </form> | |
| 1147 | + | |
| 1148 | + <form id="excelForm" name="excelForm" action="<c:url value='/web/mjon/alimtalk/kakaoApiNotityTalkSampleExcelDownload.do'/>"> | |
| 1149 | + <input type="hidden" id="excelTemplateContent" name="excelTemplateContent" value=""> | |
| 1150 | + <input type="hidden" id="excelTemplateSubtitle" name="excelTemplateSubtitle" value=""> | |
| 1151 | + <input type="hidden" id="excelTemplateTitle" name="excelTemplateTitle" value=""> | |
| 1152 | + <input type="hidden" id="varNmList" name="varNmList" value=""> | |
| 1153 | + <input type="hidden" id="varValList" name="varValList[]" value=""> | |
| 1154 | + </form> | |
| 1155 | + | |
| 1156 | +<%-- <form id="templateListPopup" name="templateListPopup" action="<c:url value='/web/mjon/kakao/template/selectKakaoAlimtalkTemplateListPopupAjax.do'/>" method="post"> --%> | |
| 1157 | + <form id="templateListPopup" name="templateListPopup" action="<c:url value='/web/mjon/kakao/template/selectKakaoAlimtalkTemplateListPopupAjax.do'/>" method="post"> | |
| 1158 | + <input type="hidden" id="senderKey" name="senderKey" value=""> | |
| 1159 | + <input type="hidden" id="yellowId" name="yellowId" value=""> | |
| 1160 | + <input type="hidden" id="page" name="page" value="1"> | |
| 1161 | + <input type="hidden" id="formListType" name="formListType" value="thumbnail"> | |
| 1162 | + <input type="hidden" id="templateStatus" name="templateStatus" value="ACT"> <!-- 기본값 ACT:정상 --> | |
| 1163 | + </form> | |
| 1164 | + | |
| 1165 | + <!-- 테스트 전송 FORM --> | |
| 1166 | + <form id="kakaoAtDataTestPopupForm" name="kakaoAtDataTestPopupForm" method="post"> | |
| 1167 | + <input type="hidden" id="senderKey" name="senderKey" value=""> <!-- 카카오 보내는 사람 Key --> | |
| 1168 | + <input type="hidden" id="templateCode" name="templateCode" value=""> <!-- 카카오 전송 templat Code --> | |
| 1169 | + <input type="hidden" id="templateContent" name="templateContent" value=""> <!-- 카카오 전송 templat내용 --> | |
| 1170 | + <input type="hidden" id="agentCodeTxt" name="agentCodeTxt" value=""> <!-- 카카오 전송 templat Code --> | |
| 1171 | + <input type="hidden" id="txtReplYn" name="txtReplYn" value="N"> <!-- 치환문자 여부 - --> | |
| 1172 | + <input type="hidden" id="varNmList" name="varNmList" value=""> <!-- 변수 이름 리스트--> | |
| 1173 | + <input type="hidden" id="varValList" name="varValList" value=""> <!-- 변수 리스트--> | |
| 1174 | + <input type="hidden" id="bizJsonYn" name="bizJsonYn" value=""> <!-- 변수 리스트--> | |
| 1175 | + </form> | |
| 1176 | + | |
| 1177 | + <!-- 유저 보유잔액 --> | |
| 1178 | + <input type="hidden" id="oriUserMoney" value="<c:out value='${userMoney }' />"> | |
| 1179 | + | |
| 1180 | + <!-- 각 금액 단가 --> | |
| 1181 | + <input type="hidden" id="kakaoAtPrice" value="<c:out value='${sendPrice.kakaoAtPrice }' />"> <!-- 알림톡 단가 --> | |
| 1182 | + <input type="hidden" id="longPrice" value="<c:out value='${sendPrice.longPrice }' />"> <!-- mms 단가 --> | |
| 1183 | + <input type="hidden" id="shortPrice" value="<c:out value='${sendPrice.shortPrice }' />"> <!-- sms 단가 --> | |
| 1184 | + | |
| 1185 | + <!-- 각 금액 단가 --> | |
| 1186 | + <input type="hidden" id="errorChk" value="N"> <!-- sms 단가 --> | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + <div class="tooltip-wrap"> | |
| 1190 | + <!-- 문자발송 성공 레이어팝업 --> | |
| 1191 | + <div class="popup-com pop_msg_success"> | |
| 1192 | + <div class="popup_heading"> | |
| 1193 | + <p>알림톡 전송 결과</p> | |
| 1194 | + <button type="button" class="tooltip-close" onclick="msgSuccessClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 1195 | + </div> | |
| 1196 | + <div class="layer_in"> | |
| 1197 | + <div class="msg_text">발송 성공 : <strong>1</strong> 건,수신거부 : <span>0</span>건의<br>알림톡이 발송 되었습니다.</div> | |
| 1198 | + </div> | |
| 1199 | + <div class="popup_btn"> | |
| 1200 | + <button type="button" onclick="msgResultLink(); return false;">알림톡 발송결과 바로가기</button> | |
| 1201 | + <button type="button" class="tooltip-close" onclick="msgSuccessClose(this);">확인</button> | |
| 1202 | + </div> | |
| 1203 | + </div> | |
| 1204 | + </div> | |
| 1205 | + <div class="tooltip-wrap"> | |
| 1206 | + <!-- 문자발송 실패 레이어팝업 --> | |
| 1207 | + <div class="popup-com pop_msg_fails"> | |
| 1208 | + <div class="popup_heading"> | |
| 1209 | + <p>문자 전송 결과</p> | |
| 1210 | + <button type="button" class="tooltip-close" onclick="msgFailsClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 1211 | + </div> | |
| 1212 | + <div class="layer_in"> | |
| 1213 | + <div class="msg_text">발송 성공 : <strong>1</strong> 건,수신거부 : <span>0</span>건의<br>문자가 발송 되었습니다.</div> | |
| 1214 | + </div> | |
| 1215 | + <div class="popup_btn"> | |
| 1216 | + <button type="button" class="tooltip-close" onclick="msgFailsClose(this);">확인</button> | |
| 1217 | + </div> | |
| 1218 | + </div> | |
| 1219 | + </div> | |
| 1220 | + <div class="tooltip-wrap"> | |
| 1221 | + <!-- 문자발송 스팸 이용정지 레이어팝업 --> | |
| 1222 | + <div class="popup-com pop_msg_spam"> | |
| 1223 | + <div class="popup_heading"> | |
| 1224 | + <p>문자 전송 결과</p> | |
| 1225 | + <button type="button" class="tooltip-close" onclick="msgSpamClose(this);"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 1226 | + </div> | |
| 1227 | + <div class="layer_in"> | |
| 1228 | + <div class="msg_text"></div> | |
| 1229 | + </div> | |
| 1230 | + <div class="popup_btn"> | |
| 1231 | + <button type="button" class="tooltip-close" onclick="msgSpamClose(this);">확인</button> | |
| 1232 | + </div> | |
| 1233 | + </div> | |
| 1234 | + </div> | |
| 1235 | + <div class="inner"> | |
| 1236 | + <!-- send top --> | |
| 1237 | + <div class="send_top"> | |
| 1238 | + <!-- tab button --> | |
| 1239 | + <%@include file="/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp" %> | |
| 1240 | + <!--// tab button --> | |
| 1241 | + <!-- 카카오톡 설정 - 알림톡 템플릿 등록/관리 - 내템플릿 --> | |
| 1242 | + <div class="top_content kakaotalksend_cont current pay_tab_wrap"> | |
| 1243 | + <div class="send_general kakao_wrap"> | |
| 1244 | + <div class="send_left"> | |
| 1245 | + <table class="tType1"> | |
| 1246 | + <colgroup> | |
| 1247 | + <col style="width: 90px;"> | |
| 1248 | + <col style="width: auto;"> | |
| 1249 | + </colgroup> | |
| 1250 | + <tbody> | |
| 1251 | + <tr> | |
| 1252 | + <th>채널ID</th> | |
| 1253 | + <td> | |
| 1254 | + <label for="selectKakaoProfileList" class="채널ID 선택"></label> | |
| 1255 | + <select class="select_gray_type" id="selectKakaoProfileList" name="selectKakaoProfileList"> | |
| 1256 | + <option value="">채널ID 선택</option> | |
| 1257 | + <c:forEach var="kakaoProfileInfo" items="${kakaoProfileList}" varStatus="status"> | |
| 1258 | + <option value="${kakaoProfileInfo.senderKey}"><c:out value='${kakaoProfileInfo.yellowId}'/></option> | |
| 1259 | + </c:forEach> | |
| 1260 | + </select> | |
| 1261 | + | |
| 1262 | + </td> | |
| 1263 | + </tr> | |
| 1264 | + <tr> | |
| 1265 | + <th>템플릿</th> | |
| 1266 | + <td> | |
| 1267 | + <select class="select_gray_type" id="selectTemplateList" name="selectTemplateList"> | |
| 1268 | +<!-- <select name="" id="" class="select_gray_type"> --> | |
| 1269 | + <option value="">알림톡 템플릿 선택</option> | |
| 1270 | + </select> | |
| 1271 | +<!-- <button type="button" class="btnType btnType6" onclick="window.open('popup_allimtalk_template_choice.html','_blank','width=930, height=860, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes')">템플릿 선택</button> --> | |
| 1272 | + <button type="button" class="btnType btnType6" onclick="javascript:fnTemplateReg(); return false;">템플릿 등록</button> | |
| 1273 | + <div class="variable_wrap"> | |
| 1274 | + <ul> | |
| 1275 | + <li>* 변수명 설정파일을 다운로드 받으신 후 전송대상과 변수를 입력 후 업로드해주세요.</li> | |
| 1276 | + <li>* 엑셀서식은 반드시 <span>텍스트 서식으로 등록</span>해주세요.</li> | |
| 1277 | + <li>* 한번에 전송가능한 <span>최대 발송건은 500건</span>입니다.</li> | |
| 1278 | + <li>* 배송조회시 운송장 번호는 <span>숫자만 등록</span>해주세요.</li> | |
| 1279 | + </ul> | |
| 1280 | + <button type="button" class="excel_btn" onclick="excelDownload();"><i></i> <c:out value="#"/>{변수명} 설정 파일 다운로드</button> | |
| 1281 | +<!-- <button type="button" class="excel_btn"><i></i> 변수명 설정 파일 다운로드</button> --> | |
| 1282 | + </div> | |
| 1283 | + </td> | |
| 1284 | + </tr> | |
| 1285 | + <tr> | |
| 1286 | + <th>받는사람</th> | |
| 1287 | + <td class="putText"> | |
| 1288 | + <div class="clearfix receipt_num receiver_wrap01"> | |
| 1289 | + <div class="receipt_num_top"> | |
| 1290 | + <label for="callTo" class="label">받는 번호입력</label> | |
| 1291 | + <input type="text" id="callTo" name="callTo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="번호를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;"> | |
| 1292 | + <button type="button" class="btnType btnType6 addCallToF">번호추가</button> | |
| 1293 | + </br> | |
| 1294 | + <span> | |
| 1295 | + <span class="vMiddle">*</span> 중복번호는 한번만 발송됩니다. | |
| 1296 | + </span> | |
| 1297 | + </br> | |
| 1298 | + <span> | |
| 1299 | + <span class="vMiddle">*</span> 한번에 전송가능한 최대 발송건은 500건 입니다. | |
| 1300 | + </span> | |
| 1301 | + </div> | |
| 1302 | + <div class="receipt_num_midde"> | |
| 1303 | + <div class="listType list01" > | |
| 1304 | + <div class="list_table list_head"> | |
| 1305 | + <div class="cb_wrap"> | |
| 1306 | + <label for="select_all" class="label"></label> | |
| 1307 | + <input type="checkbox" id="select_all"> | |
| 1308 | + </div> | |
| 1309 | + <div class="list_table_num"> | |
| 1310 | + <p>휴대폰</p> | |
| 1311 | +<!-- <img src="/publish/images/sortUp.png"> --> | |
| 1312 | +<!-- <img src="/publish/images/sortDown.png"> --> | |
| 1313 | + </div> | |
| 1314 | +<!-- <div class="list_table_name"> --> | |
| 1315 | +<!-- <p>이름</p> --> | |
| 1316 | +<!-- <img src="/publish/images/sortUp.png"> --> | |
| 1317 | +<!-- <img src="/publish/images/sortDown.png"> --> | |
| 1318 | +<!-- </div> --> | |
| 1319 | + </div> | |
| 1320 | + <div class="list_body_wrap" id="wrap01_body"> | |
| 1321 | + </div> | |
| 1322 | + </div> | |
| 1323 | + <div class="put_right"> | |
| 1324 | + <div class="btn_popup_wrap spc_wrap"> | |
| 1325 | + <button type="button" data-tooltip="popup06" class="btnType btnType7 popupAddr">주소록 불러오기</button> | |
| 1326 | + </div> | |
| 1327 | + <div class="btn_popup_wrap"> | |
| 1328 | + <button type="button" data-tooltip="popup02" class="btnType btnType7">엑셀 불러오기</button> | |
| 1329 | + </div> | |
| 1330 | + <div class="btn_popup_wrap"> | |
| 1331 | + <button type="button" data-tooltip="popup03" class="btnType btnType7 tab1">최근 전송내역</button> | |
| 1332 | + </div> | |
| 1333 | + <div class="btn_popup_wrap"> | |
| 1334 | + <button type="button" data-tooltip="popup03" class="btnType btnType7 tab2">자주보내는 번호</button> | |
| 1335 | + </div> | |
| 1336 | + <div class="btn_popup_wrap check_validity_wrap"> | |
| 1337 | + <button type="button" class="btnType btnType7" id="check_validity">오류검사 <i class="qmMark"></i></button> | |
| 1338 | + <div class="error_hover_cont send_hover_cont"> | |
| 1339 | + <p>휴대폰 번호 입력 시 해당 휴대폰 번호에 대한 형식이 어긋나거나 휴대폰 번호에 오류가 있는지 등을 검사하는 기능</p> | |
| 1340 | + <span>(예시) 010-1234-0001(O) / 010-123-0001(X)</span> | |
| 1341 | + </div> | |
| 1342 | + </div> | |
| 1343 | + </div> | |
| 1344 | + </div> | |
| 1345 | + <div class="list_bottom clearfix"> | |
| 1346 | + <div class="remove_btnWrap"> | |
| 1347 | + <button type="button" class="btnType15" id="all_del"><i class="remove_img"></i>전체삭제</button> | |
| 1348 | + <button type="button" class="btnType15" id="select_del"><i class="remove_img"></i>선택삭제</button> | |
| 1349 | + </div> | |
| 1350 | + <div class="list_bottom_right"> | |
| 1351 | + <p>총 <span class="c_e40000" id="rowTotCnt">0</span>건 / 중복 <span class="c_002c9a" id="rowDupCnt">0</span>건</p> | |
| 1352 | +<!-- <button type="button" class="address_reg2">주소록에 등록</button> --> | |
| 1353 | + </div> | |
| 1354 | + </div> | |
| 1355 | + </div> | |
| 1356 | + <div class="clearfix receipt_num receiver_wrap02"> | |
| 1357 | + <div class="receipt_num_top"> | |
| 1358 | + <input type="text" placeholder="선택된 파일이 없습니다." onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;"> | |
| 1359 | + <button type="button" class="btnType btnType6" id="fileClick"/>파일선택</button> | |
| 1360 | + <input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExportVarAjax(event); return false;" style="display:none"/> | |
| 1361 | + <!-- <input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport02(event); return false;" style="display:none"/> --> | |
| 1362 | + </div> | |
| 1363 | + <div class="receipt_num_midde"> | |
| 1364 | + <div class="listType list01" id="wrap02"> | |
| 1365 | + <!-- /publish/kakao_allimtalk_send.html 참고 --> | |
| 1366 | + <div class="list_table list_head" id="excelHead"> | |
| 1367 | + </div> | |
| 1368 | + <div class="list_body_wrap" id="excelBody02"> | |
| 1369 | + </div> | |
| 1370 | + </div> | |
| 1371 | + </div> | |
| 1372 | + </div> | |
| 1373 | + </td> | |
| 1374 | + </tr> | |
| 1375 | + <tr> | |
| 1376 | + <th colspan="2" class="billingAmount"> | |
| 1377 | + <div> | |
| 1378 | + <div class="final_pay"> | |
| 1379 | + <div class="pay_info_list"> | |
| 1380 | + <p>발송금액 :</p> | |
| 1381 | + <div class="info" id="repPriceTxt" style="display: none;"> | |
| 1382 | +<!-- <div class="info" id="repPriceTxt"> --> | |
| 1383 | +<!-- 단문 : <strong>20</strong>건<span>/</span> --> | |
| 1384 | +<!-- 장문 :<strong>150</strong>건<span>/</span> --> | |
| 1385 | +<!-- 그림문자 :<strong>30</strong>건 --> | |
| 1386 | + </div> | |
| 1387 | + </div> | |
| 1388 | + <p class="price"><span id="repPriceTxt"></span><span id="totalPriceTxt">0.0</span> 원<span></span></p> | |
| 1389 | + </div> | |
| 1390 | + <div class="pay_type clearfix"> | |
| 1391 | + <fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" /> | |
| 1392 | + <div> | |
| 1393 | + <input type="radio" id="radio_bill_1" name="radio_bill" checked="checked"> | |
| 1394 | + <label for="radio_bill_1">보유잔액</label> | |
| 1395 | + <label for="userMoney" class="la bel">보유잔액</label> | |
| 1396 | + <input type="text" id="userMoney" name="userMoney" value="<c:out value='${commaPrice}'/>" readonly> | |
| 1397 | + <span class="won">원</span> | |
| 1398 | + <button type="button" class="btnType btnType21" onclick="location.href='/web/member/pay/PayView.do'">충전</button> | |
| 1399 | + </div> | |
| 1400 | + <div></div> | |
| 1401 | + </div> | |
| 1402 | + </div> | |
| 1403 | + </th> | |
| 1404 | + </tr> | |
| 1405 | + <tr> | |
| 1406 | + <th colspan="2" class="replace_send_th"> | |
| 1407 | + <div class="title_th"><p>대체문자</p> | |
| 1408 | + <input type="checkbox" id="send_fail_check" style="margin: 0 8px 0 0;"><label for="send_fail_check">알림톡 전송 실패 시 문자 전송</label> | |
| 1409 | + </div> | |
| 1410 | + <div class="replace_send_wrap"> | |
| 1411 | +<!-- <div class="replace_send_wrap" style="display: block;"> --> | |
| 1412 | + <table class="tType1"> | |
| 1413 | + <colgroup> | |
| 1414 | + <col style="width: 90px;"> | |
| 1415 | + <col style="width: auto;"> | |
| 1416 | + </colgroup> | |
| 1417 | + <tbody> | |
| 1418 | + <tr> | |
| 1419 | + <th>발신번호</th> | |
| 1420 | + <td class="put_num"> | |
| 1421 | + <label for="callFromList" class="label"></label> | |
| 1422 | + <select id="callFromList" name="callFromList" class="sel_number"> | |
| 1423 | + <c:choose> | |
| 1424 | + <c:when test="${not empty resultPhonList}"> | |
| 1425 | + <c:forEach var="phonList" items="${resultPhonList}" varStatus="status"> | |
| 1426 | + <option value="${phonList}">${phonList}</option> | |
| 1427 | + </c:forEach> | |
| 1428 | + </c:when> | |
| 1429 | + <c:otherwise> | |
| 1430 | + <option value="">등록된 발신 번호가 없습니다.</option> | |
| 1431 | + </c:otherwise> | |
| 1432 | + </c:choose> | |
| 1433 | + </select> | |
| 1434 | + <button type="button" class="btnType btnType6" onclick="location.href='/web/user/sendNumberManage.do'">번호등록</button> | |
| 1435 | + </td> | |
| 1436 | + </tr> | |
| 1437 | + <tr> | |
| 1438 | + <th>내용</th> | |
| 1439 | + <td class="putText"> | |
| 1440 | + <div class="clearfix"> | |
| 1441 | + <div class="put_left short"> | |
| 1442 | + <!-- 업로드한 이미지의 썸네일 영역 --> | |
| 1443 | + <ul class="thumb_wrap liOnImg ui-sortable"></ul> | |
| 1444 | + <!-- //업로드한 이미지의 썸네일 영역 --> | |
| 1445 | + <label for="smsTxtArea" class="label"></label> | |
| 1446 | + <textarea id="smsTxtArea" name="smsTxtArea" class="put_text"></textarea> | |
| 1447 | + <div class="text_length"> | |
| 1448 | + <div name="afterDeny" id="afterDeny"> | |
| 1449 | + <p> | |
| 1450 | + <span class="fwMd" id="msgLeng">0 / | |
| 1451 | + </span> | |
| 1452 | + <span class="c_002c9a fwMd" id="limitLeng">90</span>byte | |
| 1453 | + </p> | |
| 1454 | + <span | |
| 1455 | + class="msg_com msg_short">단문</span> | |
| 1456 | + </div> | |
| 1457 | + </div> | |
| 1458 | + </div> | |
| 1459 | + <div class="put_right"> | |
| 1460 | + <button type="button" class="btnType btnType9" id="failCheckInit">초기화</button> | |
| 1461 | + <button type="button" class="btnType btnType7" onclick="javascript:fn_errorChk(); return false;">오류검사<i class="qmMark"></i></button> | |
| 1462 | +<!-- <button type="button" class="btnType btnType8" onclick="showPotoediter();">이미지 불러오기</button> --> | |
| 1463 | +<!-- <div class="send_btnWrap"> --> | |
| 1464 | +<!-- <button type="button" class="btnType btnType9">문자저장</button> --> | |
| 1465 | +<!-- </div> --> | |
| 1466 | + </div> | |
| 1467 | + | |
| 1468 | + </div> | |
| 1469 | +<!-- <p id="lowText">* 현재 [<span id="nowMsgType">단문</span>] <span class="c_e40000 fwBold nowMsgCnt">0</span>건 발송 가능합니다.</p> --> | |
| 1470 | + </td> | |
| 1471 | + </tr> | |
| 1472 | + </tbody> | |
| 1473 | + </table> | |
| 1474 | + </div> | |
| 1475 | + </th> | |
| 1476 | + </tr> | |
| 1477 | + </tbody> | |
| 1478 | + </table> | |
| 1479 | + </div> | |
| 1480 | + <div class="send_right"> | |
| 1481 | + <div class="phone"> | |
| 1482 | + <div class="phoneIn"> | |
| 1483 | + <p class="prev_p" id="prev_p_top"><img src="/publish/images/content/kakao_prev_icon.png" alt=""></p> | |
| 1484 | + <!-- 텍스트 미리보기 --> | |
| 1485 | + <div class="text_preview"> | |
| 1486 | + <div class="allimtalk_title"> | |
| 1487 | + <img src="/publish/images/content/icon_allimtalk.png" alt="">알림톡 도착 | |
| 1488 | + </div> | |
| 1489 | + <div class="allimtalk_content" id="alimtalkTemplate"> | |
| 1490 | + <p class="emphasis_side_text">템플릿을 선택해 주세요</p> | |
| 1491 | + </div> | |
| 1492 | + </div> | |
| 1493 | + <!-- //텍스트 미리보기 --> | |
| 1494 | + <div class="template_info_wrap"> | |
| 1495 | + <div class="template_byte"> | |
| 1496 | +<!-- <p><span class="fwMd" id="msgLeng">50 / </span><span class="c_002c9a fwMd" id="limitLeng">2000</span>byte</p> --> | |
| 1497 | + </div> | |
| 1498 | + <button type="button" class="btn_template_choice" id="reSelectBtn">템플릿 재선택</button> | |
| 1499 | + </div> | |
| 1500 | + </div> | |
| 1501 | + <p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다<p> | |
| 1502 | + </div> | |
| 1503 | + <div class="phone_bottom"> | |
| 1504 | + <div class="send_rev"> | |
| 1505 | + <div class="send_content" style="padding-bottom: 0;"> | |
| 1506 | + <div class="rev_radio"> | |
| 1507 | + <ul> | |
| 1508 | + <li> | |
| 1509 | + <input type="radio" id="reserYnN" name="reserYn" value="N" checked="checked"><label for="reserYnN">즉시</label> | |
| 1510 | + </li> | |
| 1511 | + <li> | |
| 1512 | + <input type="radio" id="reserYnY" name="reserYn" value="Y"><label for="reserYnY">예약</label> | |
| 1513 | + </li> | |
| 1514 | + </ul> | |
| 1515 | + </div> | |
| 1516 | + <div class="send_btn"> | |
| 1517 | + <button type="button" class="btnType btnType11" onclick="javascript:sendTemplateInfo(); return false;">발송하기</button> | |
| 1518 | + <button type="button" class="btnType btnType10" onclick="javascript:goToKakaoTestPopUp(); return false;">테스트발송</button> | |
| 1519 | + </div> | |
| 1520 | + </div> | |
| 1521 | + <div class="rev_selected"> | |
| 1522 | + <div class="rev_top"> | |
| 1523 | + <span>날짜 :</span> | |
| 1524 | + <div class="calendar_wrap"> | |
| 1525 | + <input type="text" class="startDate2 inp resDate calendar picker__input picker__input--active" title="검색 시작일" id="startDate2" name="startDate2" value="" data-datecontrol="true" readonly="" aria-haspopup="true" aria-expanded="true" aria-readonly="false" aria-owns="startDate2_root"> | |
| 1526 | + </div> | |
| 1527 | + <label for="msgResHour" class="label">시 선택</label> | |
| 1528 | + <div class="selBox"> | |
| 1529 | + <select class="selType1" id="msgResHour" name="msgResHour"> | |
| 1530 | + <c:forEach var="hour" begin="0" end="23" step="1" varStatus="status"> | |
| 1531 | + <c:choose> | |
| 1532 | + <c:when test="${hour < 10}"> | |
| 1533 | + <option value="0${hour}">0${hour}시</option> | |
| 1534 | + </c:when> | |
| 1535 | + <c:otherwise> | |
| 1536 | + <option value="${hour}">${hour}시</option> | |
| 1537 | + </c:otherwise> | |
| 1538 | + </c:choose> | |
| 1539 | + </c:forEach> | |
| 1540 | + </select> | |
| 1541 | + <label for="msgResMin" class="label">분 선택</label> | |
| 1542 | + <select class="selType1" id="msgResMin" name="msgResMin"> | |
| 1543 | + <c:forEach var="min" begin="0" end="55" step="5"> | |
| 1544 | + <c:choose> | |
| 1545 | + <c:when test="${min < 10}"> | |
| 1546 | + <option value="0${min}">0${min}분</option> | |
| 1547 | + </c:when> | |
| 1548 | + <c:otherwise> | |
| 1549 | + <option value="${min}">${min}분</option> | |
| 1550 | + </c:otherwise> | |
| 1551 | + </c:choose> | |
| 1552 | + </c:forEach> | |
| 1553 | + </select> | |
| 1554 | + </div> | |
| 1555 | + </div> | |
| 1556 | + <div class="rev_bottom"> | |
| 1557 | + <input type="checkbox" id="inputDivideChk" name="inputDivideChk"> | |
| 1558 | + <label for="inputDivideChk">분할전송</label> | |
| 1559 | + <input type="text" class="dividType1" id="frmDivideCnt" name="frmDivideCnt" value="20" onkeypress='return checkNumber(event)' maxlength="4"/> | |
| 1560 | + <label for="frmDivideCnt">건씩</label> | |
| 1561 | + <select class="selType1" id="divideTime" name="divideTime"> | |
| 1562 | + <option value="5">05분</option> | |
| 1563 | + <option value="10">10분</option> | |
| 1564 | + <option value="15">15분</option> | |
| 1565 | + <option value="20">20분</option> | |
| 1566 | + <option value="30">30분</option> | |
| 1567 | + </select> | |
| 1568 | + <label for="divideTime">간격</label> | |
| 1569 | + </div> | |
| 1570 | + </div> | |
| 1571 | + </div> | |
| 1572 | + </div> | |
| 1573 | + </div> | |
| 1574 | + </div> | |
| 1575 | + </div> | |
| 1576 | + </div> | |
| 1577 | + </div> | |
| 1578 | + <!--// send top --> | |
| 1579 | + | |
| 1580 | +<!-- 주소록 불러오기 --> | |
| 1581 | +<div class="tooltip-wrap"> | |
| 1582 | + <div class="popup-com import_layer popup06" tabindex="0" data-tooltip-con="popup06" data-focus="popup06" data-focus-prev="popup06-close" style="width: 1000px"> | |
| 1583 | + <div class="popup_heading"> | |
| 1584 | + <p><span>주소록 불러오기</p> | |
| 1585 | + <button type="button" onClick="javascript:addrClose(); return false;"> | |
| 1586 | + <img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 1587 | + </div> | |
| 1588 | + <div class="layer_in"> | |
| 1589 | + <div class="titBox titBox_pad"> | |
| 1590 | + <p>- 주소록 수정 및 변경은 <span>[주소록 관리]</span>에서만 가능합니다.</p> | |
| 1591 | + <button type="button" class="adr_admin" onClick="location.href='/web/mjon/addr/selectAddrList.do'">주소록 관리</button> | |
| 1592 | + </div> | |
| 1593 | + <div class="adr_wrap"> | |
| 1594 | + <form id="searchAddrGrpForm" name="searchAddrGrpForm" method="post" style="display: flex; justify-content: space-between;"> | |
| 1595 | + <input type="hidden" id="searchAddrGrpId" name="searchAddrGrpId" value=""/> | |
| 1596 | + <input type="hidden" id="type" name="type" value="all"/> | |
| 1597 | + <input type="hidden" id="searchKeyword" name="searchKeyword" value=""/> | |
| 1598 | + <input type="hidden" name="searchCondition" id="searchCondition" value="0" /> | |
| 1599 | + <div class="adr_pop_left"> | |
| 1600 | + <div class="adr_left_search"> | |
| 1601 | + <label for="searchGrpKeyword" class="label">그룹명 검색</label> | |
| 1602 | + <input type="text" name="searchGrpKeyword" id="searchGrpKeyword" placeholder="그룹명 검색" onfocus="this.placeholder=''" onblur="this.placeholder='그룹명 검색'" class="inputLight"> | |
| 1603 | + <button type="button" onClick="javascrit:fnAddrGrpSearch(); return false;"><img src="/publish/images/popup/search.png" alt="검색"></button> | |
| 1604 | + </div> | |
| 1605 | + <div class="adr_pop_box"> | |
| 1606 | + <div id="addrGroupLoad"> | |
| 1607 | + </div> | |
| 1608 | + </div> | |
| 1609 | + <!-- <div class="popup_btn"> | |
| 1610 | + <button type="button" class="btnType" onClick="javascript:fnSelectAddrGrpList(); return false;">선택 그룹 추가</button> | |
| 1611 | + </div> --> | |
| 1612 | + </div> | |
| 1613 | + <div class="adr_pop_right"> | |
| 1614 | + <div class="clearfix"> | |
| 1615 | + <div class="btnWrap_last"> | |
| 1616 | + <label for="searchAddrCondition" class="label">카테고리 선택</label> | |
| 1617 | + <select id="searchAddrCondition" name="searchAddrCondition" class="selType2"> | |
| 1618 | + <option value='0'>전체</option> | |
| 1619 | + <option value='1'>그룹명</option> | |
| 1620 | + <option value='2'>이름</option> | |
| 1621 | + <option value='3'>핸드폰번호</option> | |
| 1622 | + </select> | |
| 1623 | + <label for="searchAddrKeyword" class="label">검색어 입력</label> | |
| 1624 | + <input type="text" id="searchAddrKeyword" name="searchAddrKeyword" placeholder="검색어를 입력하세요" onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요'" > | |
| 1625 | + <button type="button" class="btnType btnType17" onClick="javascrit:fnAddrSearch(); return false;">검색</button> | |
| 1626 | + </div> | |
| 1627 | + <!-- table --> | |
| 1628 | + <div class="adr_excel adr_pop_list2 callAddr_box"> | |
| 1629 | + </div> | |
| 1630 | + <!--// table --> | |
| 1631 | + </div> | |
| 1632 | + <div class="popup_btn_wrap2"> | |
| 1633 | + <button type="button" onClick="javascript:addrToList(); return false;">추가</button> | |
| 1634 | + <button type="button" onClick="javascript:addrClose(); return false;">닫기</button> | |
| 1635 | + </div> | |
| 1636 | + <%-- 주소록 레이어 팝업 닫기 실행 코드 --%> | |
| 1637 | + <input type="hidden" name="btnAddrClose" id="btnAddrClose" class="tooltip-close closeAddr" data-focus="popup06-close" /> | |
| 1638 | + </div> | |
| 1639 | + </form> | |
| 1640 | + </div> | |
| 1641 | + </div> | |
| 1642 | + </div> | |
| 1643 | +</div> | |
| 1644 | +<!--// 주소록 불러오기 --> | |
| 1645 | + | |
| 1646 | +<!-- 최근 전송 내역 --> | |
| 1647 | +<div class="tooltip-wrap"> | |
| 1648 | + <div class="popup-com history_layer popup03" tabindex="0" data-tooltip-con="popup03" data-focus="popup03" data-focus-prev="popup03-close"> | |
| 1649 | + <div class="popup_heading"> | |
| 1650 | + <p><span>전송내역</p> | |
| 1651 | + <button type="button" class="tooltip-close" data-focus="popup03-close" id="btnLatestAddPhoneClose"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 1652 | + </div> | |
| 1653 | + <div class="layer_in"> | |
| 1654 | + <!-- tab button --> | |
| 1655 | + <ul class="tabType6"> | |
| 1656 | + <li class="tab active"><button type="button" onclick="TabType(this,'1');">최근 전송내역</button></li> | |
| 1657 | + <li class="tab"><button type="button" onclick="TabType(this,'2');">자주보내는 번호</button></li> | |
| 1658 | + </ul><!--// tab button --> | |
| 1659 | + <!-- 최근 전송내역 --> | |
| 1660 | + <div class="history_cont hascont current"> | |
| 1661 | + <div class="histroy_trans latestMsgArea" id="latestMsgArea"> | |
| 1662 | + <ul id="latestMsgUl"> | |
| 1663 | + <c:choose> | |
| 1664 | + <c:when test="${not empty resultLatestMsgList}"> | |
| 1665 | + <c:forEach var="latestMsgList" items="${resultLatestMsgList}" varStatus="status"> | |
| 1666 | + <li id="latestLi"> | |
| 1667 | + <input type="checkbox" id="addrChk_${status.count}" name="latAddrChk" value="<c:out value='${latestMsgList.callTo}'/>"> | |
| 1668 | + <label for="addrChk_${status.count}" class="label">최근 전송내역</label> | |
| 1669 | + <p><c:out value="${latestMsgList.callTo}"/></p> | |
| 1670 | + <button type="button" id="latestAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> | |
| 1671 | + </li> | |
| 1672 | + </c:forEach> | |
| 1673 | + </c:when> | |
| 1674 | + <c:otherwise> | |
| 1675 | + <li> | |
| 1676 | + <p>최근 발송 내역이 없습니다.</p> | |
| 1677 | + </li> | |
| 1678 | + </c:otherwise> | |
| 1679 | + </c:choose> | |
| 1680 | + </ul> | |
| 1681 | + </div> | |
| 1682 | + <div class="popup_btn_wrap2 hisroy_btn"> | |
| 1683 | + <button type="button" id="latestAddPhone">선택추가</button> | |
| 1684 | + <button type="button" id="latestCancelPhone">선택취소</button> | |
| 1685 | + </div> | |
| 1686 | + </div><!--// 최근 전송내역 --> | |
| 1687 | + <!-- 자주보내는 번호 --> | |
| 1688 | + <div class="history_cont hascont"> | |
| 1689 | + <div class="histroy_trans" id="bookMarkMsgArea"> | |
| 1690 | + <ul id="bookMsgUl"> | |
| 1691 | + <c:choose> | |
| 1692 | + <c:when test="${not empty resultBookMarkMsgList}"> | |
| 1693 | + <c:forEach var="bookMarkMsgList" items="${resultBookMarkMsgList}" varStatus="status"> | |
| 1694 | + <li id="bookMarkLi"> | |
| 1695 | + <input type="checkbox" id="bokAddrChk_${status.count}" name="bookAddrChk" value="<c:out value='${bookMarkMsgList.addrPhoneNo}'/>"> | |
| 1696 | + <label for="addrChk_${status.count}" class="label">최근 전송내역</label> | |
| 1697 | + <p><c:out value="${bookMarkMsgList.addrPhoneNo}"/></p> | |
| 1698 | + <button type="button" id="bookMarkAddrDel"><img src="/publish/images/popup/close3.png" alt="전화번호 삭제"></button> | |
| 1699 | + </li> | |
| 1700 | + </c:forEach> | |
| 1701 | + </c:when> | |
| 1702 | + <c:otherwise> | |
| 1703 | + <li> | |
| 1704 | + <p>등록된 자주 보내는 번호 내역이 없습니다.</p> | |
| 1705 | + </li> | |
| 1706 | + </c:otherwise> | |
| 1707 | + </c:choose> | |
| 1708 | + </ul> | |
| 1709 | + </div> | |
| 1710 | + <div class="popup_btn_wrap2 hisroy_btn"> | |
| 1711 | + <button type="button" id="bookMarkAddPhone">선택추가</button> | |
| 1712 | + <button type="button" id="bookMarkCancelPhone">선택취소</button> | |
| 1713 | + </div> | |
| 1714 | + </div><!--// 자주보내는 번호 --> | |
| 1715 | + </div> | |
| 1716 | + </div> | |
| 1717 | +</div> | |
| 1718 | +<!--// 전송내역 팝업 --> | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | +<!-- 엑셀 불러오기 --> | |
| 1723 | +<form id="excelToolTipForm" name="excelToolTipForm" method="post"> | |
| 1724 | + <div class="tooltip-wrap"> | |
| 1725 | + <div class="popup-com import_layer popup02" tabindex="0" data-tooltip-con="popup02" data-focus="popup02" data-focus-prev="popup02-close"> | |
| 1726 | + <div class="popup_heading"> | |
| 1727 | + <p><span>엑셀</span> 불러오기</p> | |
| 1728 | + <button type="button" class="tooltip-close" data-focus="popup02-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button> | |
| 1729 | + </div> | |
| 1730 | + <div class="layer_in"> | |
| 1731 | + <!-- 엑셀파일 불러오기 --> | |
| 1732 | + <div class="hascont"> | |
| 1733 | + <div class="titBox"> | |
| 1734 | + <p>- 최대 2만 건까지 등록할 수 있습니다.</p> | |
| 1735 | + <p>- [엑셀 불러오기]시 문서의 A, B열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> | |
| 1736 | + <p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다. | |
| 1737 | + </p> | |
| 1738 | + <!-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --> | |
| 1739 | + <button type="button" class="excel_btn" onclick="location.href='/download/msg/알림톡_엑셀주소록_등록양식.xlsx'"><i class="downroad"></i>샘플파일 다운로드</button> | |
| 1740 | + </div> | |
| 1741 | + <div class="attachedFile"> | |
| 1742 | + <label for="excelNm01" class="attachedFile_label">첨부파일</label> | |
| 1743 | + <input type="text" id="excelNm01" value="" readonly> | |
| 1744 | + <input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExportAjax(event); return false;" style="display:none"/> | |
| 1745 | + <!-- <input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExport01(event); return false;" style="display:none"/> --> | |
| 1746 | + <button type="button" class="btnType btnType6 c1">찾아보기</button> | |
| 1747 | +<!-- <p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p> --> | |
| 1748 | + <p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p> | |
| 1749 | + </div> | |
| 1750 | + </div><!--// 엑셀파일 불러오기 --> | |
| 1751 | + <div class="popup_btn_wrap2"> | |
| 1752 | + <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAddAjax()">추가</button> | |
| 1753 | + <!-- <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAdd()">추가</button> --> | |
| 1754 | + <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02">닫기</button> | |
| 1755 | + </div> | |
| 1756 | + </div> | |
| 1757 | + </div> | |
| 1758 | + </div><!--// 엑셀 불러오기 --> | |
| 1759 | +</form> | |
| 1760 | +<form id="excelVarFileForm" name="excelVarFileForm" method="post"> | |
| 1761 | + <input type="hidden" id="excelVarCnt" name="excelVarCnt" value="0"/> | |
| 1762 | + <input type="hidden" id="excelVarList" name="excelVarList" value=""/> | |
| 1763 | + | |
| 1764 | +</form> | |
| 1765 | + | |
| 1766 | +<form id="msgResendForm" name="msgResendForm" method="post"> | |
| 1767 | + <input name="msgResendFlag" type="hidden" value="N"/> | |
| 1768 | + <input name="msgSeqList" type="hidden" value=""/> | |
| 1769 | +</form> | |
| 1770 | +<form id="moveAddrForm" name="moveAddrForm" method="post"> | |
| 1771 | + <input name="moveAddrFlag" type="hidden" value="N"/> | |
| 1772 | + <input name="addrIdList" type="hidden" value=""/> | |
| 1773 | +</form> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?