친구톡 발송 처리 1차 개발 완료 - json 파일 생성 제외 전송 부분 완료 - 환불 처리 미 적용
- json 파일 생성 제외 전송 부분 완료 - 환불 처리 미 적용
@eb1d385d15aa4946741f95d14c33a79d1465d158
--- src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
... | ... | @@ -150,6 +150,134 @@ |
| 150 | 150 |
return kakaoVO; |
| 151 | 151 |
} |
| 152 | 152 |
|
| 153 |
+ |
|
| 154 |
+ /** |
|
| 155 |
+ * @Method Name : kakaoFTSendPrice |
|
| 156 |
+ * @작성일 : 2024. 1. 17. |
|
| 157 |
+ * @작성자 : WYH |
|
| 158 |
+ * @Method 설명 : 카카오 친구톡 전송 가격 설정 |
|
| 159 |
+ */ |
|
| 160 |
+ public KakaoVO kakaoFTSendPrice(KakaoVO kakaoVO) throws Exception {
|
|
| 161 |
+ |
|
| 162 |
+ //사용자 현재 보유 금액 불러오기(문자 발송 금액 차감 이전 금액) |
|
| 163 |
+ String befCash = kakaoVO.getBefCash(); |
|
| 164 |
+ |
|
| 165 |
+ //VO에서 현재 보유금액이 없으면 디비에서 조회해서 불러옴 |
|
| 166 |
+ if("".equals(befCash) || befCash == null) {
|
|
| 167 |
+ |
|
| 168 |
+ } |
|
| 169 |
+ MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
|
| 170 |
+ mjonMsgVO.setUserId(kakaoVO.getUserId()); |
|
| 171 |
+ String userMoney = mjonMsgDataService.selectBeforeCashData(mjonMsgVO); |
|
| 172 |
+ String userPoint = mjonMsgDataService.selectBeforePointData(mjonMsgVO); |
|
| 173 |
+ |
|
| 174 |
+ //1.시스템 기본 단가 정보 불러오기 |
|
| 175 |
+ JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); |
|
| 176 |
+ |
|
| 177 |
+ //2.사용자 개인 단가 정보 불러오기 |
|
| 178 |
+ MberManageVO mberManageVO = mjonMsgDataService.selectMberManageInfo(kakaoVO.getUserId()); |
|
| 179 |
+ Float kakaoFtPrice = mberManageVO.getKakaoFtPrice(); |
|
| 180 |
+ |
|
| 181 |
+ /** 대체문자 여부 체크(있으면 대체문자 가격으로 없으면 카카오톡 가격으로) */ |
|
| 182 |
+ //대체문자 발송 여부 확인 |
|
| 183 |
+ if(kakaoVO.getSubMsgSendYn().equals("Y")) {
|
|
| 184 |
+ |
|
| 185 |
+ |
|
| 186 |
+ String charset = "euc-kr"; //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산 |
|
| 187 |
+ int callToCnt = kakaoVO.getCallToList().length; |
|
| 188 |
+ String sendType = ""; |
|
| 189 |
+ |
|
| 190 |
+ for(int count =0; count < callToCnt; count++) {
|
|
| 191 |
+ String tempSubMagTxt = kakaoVO.getSubMsgTxt().replace("\r\n", "\n");
|
|
| 192 |
+ if(kakaoVO.getSubMsgTxtReplYn().equals("Y")) {
|
|
| 193 |
+ tempSubMagTxt = kakaoFTSubMagTxtRepl(tempSubMagTxt, kakaoVO, count); |
|
| 194 |
+ } |
|
| 195 |
+ int bytes = tempSubMagTxt.getBytes(charset).length; |
|
| 196 |
+ |
|
| 197 |
+ if(bytes < 2000) {
|
|
| 198 |
+ if(bytes > 90) {
|
|
| 199 |
+ sendType = "MMS"; |
|
| 200 |
+ break; |
|
| 201 |
+ }else {
|
|
| 202 |
+ sendType = "SMS"; |
|
| 203 |
+ } |
|
| 204 |
+ }else {
|
|
| 205 |
+ kakaoVO.setResultCode("2000");
|
|
| 206 |
+ return kakaoVO; |
|
| 207 |
+ } |
|
| 208 |
+ } |
|
| 209 |
+ |
|
| 210 |
+ if(sendType.equals("MMS")) {
|
|
| 211 |
+ //협의 단가가 없으면 시스템 단가로 지정 |
|
| 212 |
+ if(mberManageVO.getLongPrice() < 1) {
|
|
| 213 |
+ kakaoFtPrice = sysJoinSetVO.getLongPrice(); |
|
| 214 |
+ |
|
| 215 |
+ kakaoVO.setSmsPrice(sysJoinSetVO.getShortPrice()); |
|
| 216 |
+ kakaoVO.setMmsPrice(sysJoinSetVO.getLongPrice()); |
|
| 217 |
+ kakaoVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); |
|
| 218 |
+ }else {
|
|
| 219 |
+ kakaoFtPrice = mberManageVO.getLongPrice(); |
|
| 220 |
+ |
|
| 221 |
+ kakaoVO.setSmsPrice(mberManageVO.getShortPrice()); |
|
| 222 |
+ kakaoVO.setMmsPrice(mberManageVO.getLongPrice()); |
|
| 223 |
+ |
|
| 224 |
+ if(mberManageVO.getKakaoFtPrice() < 1) {
|
|
| 225 |
+ kakaoVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); |
|
| 226 |
+ }else {
|
|
| 227 |
+ kakaoVO.setKakaoFtPrice(mberManageVO.getKakaoFtPrice()); |
|
| 228 |
+ } |
|
| 229 |
+ } |
|
| 230 |
+ }else {
|
|
| 231 |
+ //협의 단가가 없으면 시스템 단가로 지정 |
|
| 232 |
+ if(mberManageVO.getShortPrice() < 1) {
|
|
| 233 |
+ kakaoFtPrice = sysJoinSetVO.getShortPrice(); |
|
| 234 |
+ |
|
| 235 |
+ kakaoVO.setSmsPrice(sysJoinSetVO.getShortPrice()); |
|
| 236 |
+ kakaoVO.setMmsPrice(sysJoinSetVO.getLongPrice()); |
|
| 237 |
+ kakaoVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); |
|
| 238 |
+ }else {
|
|
| 239 |
+ kakaoFtPrice = mberManageVO.getShortPrice(); |
|
| 240 |
+ |
|
| 241 |
+ kakaoVO.setSmsPrice(mberManageVO.getShortPrice()); |
|
| 242 |
+ kakaoVO.setMmsPrice(mberManageVO.getLongPrice()); |
|
| 243 |
+ |
|
| 244 |
+ if(mberManageVO.getKakaoFtPrice() < 1) {
|
|
| 245 |
+ kakaoVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); |
|
| 246 |
+ }else {
|
|
| 247 |
+ kakaoVO.setKakaoFtPrice(mberManageVO.getKakaoFtPrice()); |
|
| 248 |
+ } |
|
| 249 |
+ } |
|
| 250 |
+ } |
|
| 251 |
+ }else {
|
|
| 252 |
+ |
|
| 253 |
+ if(kakaoFtPrice < 1) { //협의 단가가 없으면 시스템 단가로 지정
|
|
| 254 |
+ kakaoFtPrice = sysJoinSetVO.getKakaoFtPrice(); |
|
| 255 |
+ |
|
| 256 |
+ kakaoVO.setSmsPrice(sysJoinSetVO.getShortPrice()); |
|
| 257 |
+ kakaoVO.setMmsPrice(sysJoinSetVO.getLongPrice()); |
|
| 258 |
+ kakaoVO.setKakaoFtPrice(sysJoinSetVO.getKakaoFtPrice()); |
|
| 259 |
+ }else {
|
|
| 260 |
+ kakaoVO.setSmsPrice(mberManageVO.getShortPrice()); |
|
| 261 |
+ kakaoVO.setMmsPrice(mberManageVO.getLongPrice()); |
|
| 262 |
+ kakaoVO.setKakaoFtPrice(mberManageVO.getKakaoFtPrice()); |
|
| 263 |
+ } |
|
| 264 |
+ } |
|
| 265 |
+ |
|
| 266 |
+ /** 전송인원 확인*/ |
|
| 267 |
+ int totCallCnt = kakaoVO.getCallToList().length; |
|
| 268 |
+ Float kakaoTotPrice = totCallCnt * kakaoFtPrice; // 총결제 금액 = 총 전송수량 * 카카오 친구톡 단가 |
|
| 269 |
+ String totPrice = kakaoTotPrice.toString(); |
|
| 270 |
+ System.out.println("@@@@@@@ : "+kakaoTotPrice +" = "+totCallCnt+" * "+kakaoFtPrice);
|
|
| 271 |
+ |
|
| 272 |
+ kakaoVO.setEachPrice(kakaoFtPrice.toString()); |
|
| 273 |
+ kakaoVO.setBefCash(userMoney); // 고객 충전금액 |
|
| 274 |
+ kakaoVO.setBefPoint(userPoint); // 고객 충전 포인트 |
|
| 275 |
+ kakaoVO.setTotPrice(totPrice); // 총 카카오 전송 금액 |
|
| 276 |
+ |
|
| 277 |
+ return kakaoVO; |
|
| 278 |
+ } |
|
| 279 |
+ |
|
| 280 |
+ |
|
| 153 | 281 |
/** |
| 154 | 282 |
* @methodName : selectSendPriceOfKakaoAtAndSmsAndMms |
| 155 | 283 |
* @author : 이호영 |
... | ... | @@ -287,6 +415,84 @@ |
| 287 | 415 |
return kakaoVO; |
| 288 | 416 |
} |
| 289 | 417 |
|
| 418 |
+ |
|
| 419 |
+ /** |
|
| 420 |
+ * @Method Name : kakaoFTSendMsg |
|
| 421 |
+ * @작성일 : 2024. 1. 17. |
|
| 422 |
+ * @작성자 : 우영두 |
|
| 423 |
+ * @Method 설명 : 카카오 친톡 전송 메세지 설정 |
|
| 424 |
+ */ |
|
| 425 |
+ public KakaoVO kakaoFTSendMsg(KakaoVO kakaoVO) throws Exception {
|
|
| 426 |
+ List<KakaoVO> kakaoSendList = new ArrayList<KakaoVO>(); |
|
| 427 |
+ //전체 받는사람 수량만큼 반복 확인 |
|
| 428 |
+ int callToCnt = kakaoVO.getCallToList().length; |
|
| 429 |
+ try {
|
|
| 430 |
+ for(int count =0; count < callToCnt; count++) {
|
|
| 431 |
+ |
|
| 432 |
+ KakaoVO setSendMsgVO = new KakaoVO(); |
|
| 433 |
+ |
|
| 434 |
+ setSendMsgVO.setDestPhone(kakaoVO.getCallToList()[count]); // 수신 번호 |
|
| 435 |
+ // 카카오 전송내용 설정 |
|
| 436 |
+ // 변환문자 포함(Y), 미포함(N) |
|
| 437 |
+ if(kakaoVO.getTxtReplYn().equals("Y")) {
|
|
| 438 |
+ |
|
| 439 |
+ String templateContent = kakaoFTSubMagTxtRepl(kakaoVO.getTemplateContent(), kakaoVO, count); |
|
| 440 |
+ setSendMsgVO.setTemplateContent(templateContent); |
|
| 441 |
+ |
|
| 442 |
+ }else {
|
|
| 443 |
+ |
|
| 444 |
+ // 템플릿 내용 설정 |
|
| 445 |
+ setSendMsgVO.setTemplateContent(kakaoVO.getTemplateContent()); |
|
| 446 |
+ } |
|
| 447 |
+ |
|
| 448 |
+ //대체문자 포함(Y), 미포함(N) |
|
| 449 |
+ if(kakaoVO.getSubMsgSendYn().equals("Y")) {
|
|
| 450 |
+ |
|
| 451 |
+ String charset = "euc-kr"; //문자 바이트 계산에 필요한 캐릭터 셋 : 한글 2Byte로 계산 |
|
| 452 |
+ |
|
| 453 |
+ String tempSubMagTxt = kakaoVO.getSubMsgTxt().replace("\r\n", "\n");
|
|
| 454 |
+ kakaoVO.setKakaoSubMagOrgnlTxt(tempSubMagTxt); |
|
| 455 |
+ if(kakaoVO.getSubMsgTxtReplYn().equals("Y")) {
|
|
| 456 |
+ tempSubMagTxt = kakaoFTSubMagTxtRepl(tempSubMagTxt, kakaoVO, count); |
|
| 457 |
+ } |
|
| 458 |
+ |
|
| 459 |
+ setSendMsgVO.setSubMsgTxt(tempSubMagTxt); |
|
| 460 |
+ |
|
| 461 |
+ int FrBytes = tempSubMagTxt.getBytes(charset).length; |
|
| 462 |
+ |
|
| 463 |
+ //메세지 길이가 90Byte가 초과시 MMS |
|
| 464 |
+ if(FrBytes > 90) {
|
|
| 465 |
+ setSendMsgVO.setSubMsgType("MMS");
|
|
| 466 |
+ }else {// 아니면 SMS
|
|
| 467 |
+ setSendMsgVO.setSubMsgType("SMS");
|
|
| 468 |
+ } |
|
| 469 |
+ } |
|
| 470 |
+ |
|
| 471 |
+ if(kakaoVO.getBizJsonYn().equals("Y")) {
|
|
| 472 |
+ kakaoVO.setDestPhone(kakaoVO.getCallToList()[count]); // 수신 번호 |
|
| 473 |
+ |
|
| 474 |
+ String[] varValInfo = null; |
|
| 475 |
+ if( kakaoVO.getVarValList().size() != 0) {
|
|
| 476 |
+ varValInfo = kakaoVO.getVarValList().get(count); |
|
| 477 |
+ } |
|
| 478 |
+ String jsonFileName = kakaoApiJsonSave.kakaoApiJsonSave(kakaoVO, varValInfo); |
|
| 479 |
+// String jsonFileName = kakaoApiJsonSave.kakaoApiJsonSave(kakaoVO, kakaoVO.getVarValList().get(count)); |
|
| 480 |
+ setSendMsgVO.setBizJsonName(jsonFileName); //json 파일명 |
|
| 481 |
+ } |
|
| 482 |
+ |
|
| 483 |
+ kakaoSendList.add(setSendMsgVO); |
|
| 484 |
+ } |
|
| 485 |
+ kakaoVO.setKakaoSendList(kakaoSendList); |
|
| 486 |
+ |
|
| 487 |
+ } catch (Exception e) {
|
|
| 488 |
+ System.out.println(e.toString()); |
|
| 489 |
+ e.printStackTrace(); |
|
| 490 |
+ } |
|
| 491 |
+ |
|
| 492 |
+ return kakaoVO; |
|
| 493 |
+ } |
|
| 494 |
+ |
|
| 495 |
+ |
|
| 290 | 496 |
public String kakaoSendMsgTest(KakaoVO kakaoVO) throws Exception {
|
| 291 | 497 |
String templateContent = ""; |
| 292 | 498 |
try {
|
... | ... | @@ -343,6 +549,15 @@ |
| 343 | 549 |
return tempSubMagTxt; |
| 344 | 550 |
} |
| 345 | 551 |
|
| 552 |
+ public String kakaoFTSubMagTxtRepl(String tempSubMagTxt, KakaoVO kakaoVO, int count) throws Exception{
|
|
| 553 |
+ |
|
| 554 |
+ List<String[]> varValList = kakaoVO.getVarValList(); |
|
| 555 |
+ |
|
| 556 |
+ tempSubMagTxt = getKakaoFTCntReplace(varValList.get(count)[0], tempSubMagTxt); |
|
| 557 |
+ |
|
| 558 |
+ return tempSubMagTxt; |
|
| 559 |
+ } |
|
| 560 |
+ |
|
| 346 | 561 |
/* |
| 347 | 562 |
* 카카오 친구톡 치환 내용에 대한 변환 처리 |
| 348 | 563 |
* |
--- src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java
... | ... | @@ -15,6 +15,9 @@ |
| 15 | 15 |
|
| 16 | 16 |
//카카오 알림톡 발신 |
| 17 | 17 |
public MjonMsgReturnVO insertKakaoAtSandAjax(KakaoVO kakaoVO) throws Exception; |
| 18 |
+ |
|
| 19 |
+ //카카오 친구톡 발신 |
|
| 20 |
+ public MjonMsgReturnVO insertKakaoFtSendAjax(KakaoVO kakaoVO) throws Exception; |
|
| 18 | 21 |
|
| 19 | 22 |
//카카오 알림톡 전송 실패 환불리스트 조회 |
| 20 | 23 |
public void selectKakaoAtSentRefundList() throws Exception; |
--- src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
... | ... | @@ -331,6 +331,267 @@ |
| 331 | 331 |
} |
| 332 | 332 |
return returnVO; |
| 333 | 333 |
} |
| 334 |
+ |
|
| 335 |
+ |
|
| 336 |
+ |
|
| 337 |
+ //카카오 친구톡 발신 |
|
| 338 |
+ @Override |
|
| 339 |
+ public MjonMsgReturnVO insertKakaoFtSendAjax(KakaoVO kakaoVO) throws Exception {
|
|
| 340 |
+ |
|
| 341 |
+ MjonMsgReturnVO returnVO = new MjonMsgReturnVO(); |
|
| 342 |
+ try {
|
|
| 343 |
+ String agentCode = "04"; // 다우기술 agent 코드 고정 |
|
| 344 |
+ String msgType = "9"; // 카카오 알림톡 전송 코드 : 8번 |
|
| 345 |
+ |
|
| 346 |
+ int totCnt = 1; // 문자 리스트 추가 수량 |
|
| 347 |
+ int resultCnt = 0; // 최종전송 수량 |
|
| 348 |
+ int callToCnt = kakaoVO.getCallToList().length; // 전체 받는사람 건수 |
|
| 349 |
+ |
|
| 350 |
+ //Controller에서 전달 받은 분할 시간 정보 리스트 |
|
| 351 |
+ List<String> dividDayList = kakaoVO.getDividDay(); |
|
| 352 |
+ //String sendTime = kakaoVO.getReqDate(); |
|
| 353 |
+ String[] phoneList = kakaoVO.getCallToList(); //받는사람 연락처 리스트 |
|
| 354 |
+ |
|
| 355 |
+ //카카오 알림톡 전송 리스트 |
|
| 356 |
+ List<KakaoVO> kakaoFtSendList = new ArrayList<KakaoVO>(); |
|
| 357 |
+ |
|
| 358 |
+/** 카카오 알림톡 전송 리스트 생성 (시작)-------------------------------------------*/ |
|
| 359 |
+ for(int i = 0; i < callToCnt; i++) {
|
|
| 360 |
+ |
|
| 361 |
+ KakaoVO kakaoSandInfo = new KakaoVO(); // 전송설정VO |
|
| 362 |
+ |
|
| 363 |
+ kakaoSandInfo.setMsgId(idgenMsgId.getNextStringId()); // 문자 Id 설정 |
|
| 364 |
+ kakaoSandInfo.setMsgGroupId(kakaoVO.getMsgGroupId()); // 문자 그룹ID 설정 |
|
| 365 |
+ kakaoSandInfo.setUserId(kakaoVO.getUserId()); // 사용자 ID |
|
| 366 |
+ kakaoSandInfo.setAgentCode(agentCode); // 전송 agent 설정 |
|
| 367 |
+ |
|
| 368 |
+ kakaoSandInfo.setSenderKey(kakaoVO.getSenderKey()); |
|
| 369 |
+ kakaoSandInfo.setTemplateCode(kakaoVO.getTemplateCode()); |
|
| 370 |
+ |
|
| 371 |
+ |
|
| 372 |
+ kakaoSandInfo.setCallTo(phoneList[i]); // 받는사람 전화번호 |
|
| 373 |
+ kakaoSandInfo.setCallFrom(kakaoVO.getCallFrom()); // 보내는사람 전화전호 |
|
| 374 |
+ kakaoSandInfo.setMsgType(msgType); // 문자전송 타입 설정 |
|
| 375 |
+ |
|
| 376 |
+ |
|
| 377 |
+ List<KakaoVO> kakaoSendMsgList = kakaoVO.getKakaoSendList(); |
|
| 378 |
+ /**문자내용 치환 처리 (시작) --------------------------------------------*/ |
|
| 379 |
+ kakaoSandInfo.setTemplateContent(kakaoSendMsgList.get(i).getTemplateContent()); //템플릿 내용 또는 치환 템플릿 내용 |
|
| 380 |
+ /**문자내용 치환 처리 (끝) ---------------------------------------------*/ |
|
| 381 |
+ |
|
| 382 |
+ kakaoSandInfo.setTemplateTitle(kakaoSendMsgList.get(i).getTemplateTitle()); |
|
| 383 |
+ |
|
| 384 |
+ /**json파일 여부 (시작) --------------------------------------------*/ |
|
| 385 |
+ kakaoSandInfo.setBizJsonYn(kakaoVO.getBizJsonYn()); |
|
| 386 |
+ if(kakaoVO.getBizJsonYn().equals("Y")){
|
|
| 387 |
+ kakaoSandInfo.setBizJsonName(kakaoSendMsgList.get(i).getBizJsonName()); |
|
| 388 |
+ } |
|
| 389 |
+ /**json파일 여부 (끝) ---------------------------------------------*/ |
|
| 390 |
+ |
|
| 391 |
+ /**대체문자 처리 (시작) --------------------------------------------*/ |
|
| 392 |
+ kakaoSandInfo.setSubMsgSendYn(kakaoVO.getSubMsgSendYn()); // 대체문자 전송여부 설정 |
|
| 393 |
+ if(kakaoVO.getSubMsgSendYn().equals("Y")) {
|
|
| 394 |
+ kakaoSandInfo.setSubMsgType(kakaoSendMsgList.get(i).getSubMsgType()); // 대체문자 전송 타입 |
|
| 395 |
+ kakaoSandInfo.setSubMsgTxt(kakaoSendMsgList.get(i).getSubMsgTxt()); // 대체문자 전송 내용 |
|
| 396 |
+ } |
|
| 397 |
+ /**대체문자 처리 (끝) ---------------------------------------------*/ |
|
| 398 |
+ |
|
| 399 |
+ /**전송시간 설정 (시작)------------------------------------------------*/ |
|
| 400 |
+ if(!kakaoVO.getReserveYn().equals("N")) {
|
|
| 401 |
+ /** 예약 발송 설정 */ |
|
| 402 |
+ //분할 발송을 체크 한 경우 |
|
| 403 |
+ if(kakaoVO.getDivideChk().equals("Y")) {
|
|
| 404 |
+ |
|
| 405 |
+ kakaoSandInfo.setReqDate(dividDayList.get(i)); //분할 문자 예약 시간 입력해주기 |
|
| 406 |
+ |
|
| 407 |
+ }else {
|
|
| 408 |
+ |
|
| 409 |
+ kakaoSandInfo.setReqDate(kakaoVO.getReqDate()); |
|
| 410 |
+ |
|
| 411 |
+ } |
|
| 412 |
+ }else {
|
|
| 413 |
+ /** 즉시 발송 설정 */ |
|
| 414 |
+ Date now = new Date(); |
|
| 415 |
+ SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
| 416 |
+ kakaoVO.setReqDate(sdFormat.format(now)); |
|
| 417 |
+ kakaoSandInfo.setReqDate(sdFormat.format(now)); |
|
| 418 |
+ |
|
| 419 |
+ } |
|
| 420 |
+ |
|
| 421 |
+ if(kakaoVO.getAtSmishingYn().equals("Y")) {
|
|
| 422 |
+ String sandDate = ""; |
|
| 423 |
+ |
|
| 424 |
+ if(kakaoVO.getDivideChk().equals("Y")) {
|
|
| 425 |
+ //분할 문자 예약 시간 입력해주기 |
|
| 426 |
+ sandDate = dividDayList.get(i); |
|
| 427 |
+ }else {
|
|
| 428 |
+ //예약 시간 입력해주기 |
|
| 429 |
+ sandDate = kakaoVO.getReqDate(); |
|
| 430 |
+ } |
|
| 431 |
+ |
|
| 432 |
+ if(!kakaoVO.getReserveYn().equals("N")) {
|
|
| 433 |
+ /** 예약 발송 설정 */ |
|
| 434 |
+ if (i == 0) {
|
|
| 435 |
+ SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
| 436 |
+ Date date = sdFormat.parse(sandDate); |
|
| 437 |
+ |
|
| 438 |
+ Calendar cal1 = Calendar.getInstance(); |
|
| 439 |
+ cal1.setTime(date); // 시간 설정 |
|
| 440 |
+ cal1.add(Calendar.MINUTE, 30); // 30분 연산 |
|
| 441 |
+ |
|
| 442 |
+ String reqDate = sdFormat.format(cal1.getTime()); |
|
| 443 |
+ |
|
| 444 |
+ System.out.println("@@@@@@@@@@@@@@ reqDate : "+reqDate);
|
|
| 445 |
+ kakaoVO.setReqDate(reqDate); |
|
| 446 |
+ kakaoSandInfo.setReqDate(reqDate); |
|
| 447 |
+ } |
|
| 448 |
+ else {
|
|
| 449 |
+ if(kakaoVO.getDivideChk().equals("Y")) {
|
|
| 450 |
+ SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
| 451 |
+ Date date = sdFormat.parse(sandDate); |
|
| 452 |
+ |
|
| 453 |
+ Calendar cal1 = Calendar.getInstance(); |
|
| 454 |
+ cal1.setTime(date); // 시간 설정 |
|
| 455 |
+ cal1.add(Calendar.MINUTE, 30); // 30분 연산 |
|
| 456 |
+ |
|
| 457 |
+ String reqDate = sdFormat.format(cal1.getTime()); |
|
| 458 |
+ |
|
| 459 |
+ System.out.println("@@@@@@@@@@@@@@ reqDate : "+reqDate);
|
|
| 460 |
+ kakaoVO.setReqDate(reqDate); |
|
| 461 |
+ kakaoSandInfo.setReqDate(reqDate); |
|
| 462 |
+ } |
|
| 463 |
+ } |
|
| 464 |
+ }else {
|
|
| 465 |
+ /** 즉시 발송 설정 */ |
|
| 466 |
+ SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
| 467 |
+ Date date = sdFormat.parse(sandDate); |
|
| 468 |
+ |
|
| 469 |
+ Calendar cal1 = Calendar.getInstance(); |
|
| 470 |
+ cal1.setTime(date); // 시간 설정 |
|
| 471 |
+ cal1.add(Calendar.MINUTE, 30); // 30분 연산 |
|
| 472 |
+ |
|
| 473 |
+ String reqDate = sdFormat.format(cal1.getTime()); |
|
| 474 |
+ |
|
| 475 |
+ System.out.println("@@@@@@@@@@@@@@ reqDate : "+reqDate);
|
|
| 476 |
+ kakaoVO.setReqDate(reqDate); |
|
| 477 |
+ kakaoSandInfo.setReqDate(reqDate); |
|
| 478 |
+ } |
|
| 479 |
+ } |
|
| 480 |
+ |
|
| 481 |
+ /**전송시간 설정 (끝)------------------------------------------------*/ |
|
| 482 |
+ |
|
| 483 |
+ /**카카오 전송 데이터 추가*/ |
|
| 484 |
+ kakaoFtSendList.add(kakaoSandInfo); |
|
| 485 |
+ |
|
| 486 |
+ |
|
| 487 |
+ int instCnt = 0; // DB등록 완료 수량 |
|
| 488 |
+ //지금까지 루프 돌아간 것이 전체 수신자 갯수와 같으면 추가가 완료된 것으로 판단 되어 전송 해줌 |
|
| 489 |
+ if(totCnt == callToCnt) {
|
|
| 490 |
+ |
|
| 491 |
+ if(kakaoFtSendList.size() > 0) {
|
|
| 492 |
+ instCnt = kakaoAlimTalkDAO.insertKakaoAtDataInfo(kakaoFtSendList); |
|
| 493 |
+ } |
|
| 494 |
+ //총 디비 입력 건수 저장하기 |
|
| 495 |
+ resultCnt = resultCnt + instCnt; |
|
| 496 |
+ |
|
| 497 |
+ }else {
|
|
| 498 |
+ |
|
| 499 |
+ } |
|
| 500 |
+ totCnt++; |
|
| 501 |
+ |
|
| 502 |
+ } |
|
| 503 |
+/** 카카오 알림톡 전송 리스트 (종료)-------------------------------------------*/ |
|
| 504 |
+ |
|
| 505 |
+/** |
|
| 506 |
+ * 1. 문자 발송 캐시 차감 ---------------------------------------------- |
|
| 507 |
+ * 2. 문자 그룹 테이블 등록 -------------------------------------------- |
|
| 508 |
+ */ |
|
| 509 |
+ |
|
| 510 |
+ //문자 발송 캐시 차감 해주기 |
|
| 511 |
+ MjonPayVO mjonPayVO = new MjonPayVO(); |
|
| 512 |
+ |
|
| 513 |
+ MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
|
| 514 |
+ |
|
| 515 |
+ //1건 이상 발송이 있는 경우만 캐쉬를 차감 시킨다. |
|
| 516 |
+ //문자 발송 그룹 데이블에 추가 |
|
| 517 |
+ if(resultCnt > 0) {
|
|
| 518 |
+ |
|
| 519 |
+ |
|
| 520 |
+/** 발송 캐시 차감---------------------------------------------*/ |
|
| 521 |
+ |
|
| 522 |
+ |
|
| 523 |
+ int totSendCnt = kakaoVO.getCallToList().length; |
|
| 524 |
+ Float eachPrice = Float.parseFloat(kakaoVO.getEachPrice()); |
|
| 525 |
+ Float totPrice = eachPrice * resultCnt; |
|
| 526 |
+ String strTotPrice = String.format("%.1f", totPrice);
|
|
| 527 |
+ |
|
| 528 |
+ mjonMsgVO.setTotPrice(strTotPrice);//현재 합산 금액 셋팅 |
|
| 529 |
+ mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()); |
|
| 530 |
+ mjonPayVO.setUserId(kakaoVO.getUserId()); |
|
| 531 |
+ mjonPayVO.setCash(-Float.parseFloat(strTotPrice)); |
|
| 532 |
+ mjonPayVO.setFrstRegisterId(kakaoVO.getUserId()); |
|
| 533 |
+ mjonPayVO.setMemo("카카오 친구톡 총 "+totSendCnt+"건 중 " + resultCnt + "건 발송");
|
|
| 534 |
+ mjonPayVO.setMsgGroupId(kakaoVO.getMsgGroupId()); |
|
| 535 |
+ |
|
| 536 |
+ |
|
| 537 |
+ mjonPayService.insertCash(mjonPayVO); //캐시차감 |
|
| 538 |
+ mjonPayService.updateMemberCash(mjonPayVO); //회원정보 업데이트 |
|
| 539 |
+ |
|
| 540 |
+/** 그룹 테이블 등록-------------------------------------------*/ |
|
| 541 |
+ |
|
| 542 |
+ mjonMsgVO.setUserId(kakaoVO.getUserId()); |
|
| 543 |
+ mjonMsgVO.setMsgGroupId(kakaoVO.getMsgGroupId()); |
|
| 544 |
+ mjonMsgVO.setCallFrom(kakaoVO.getCallFrom()); |
|
| 545 |
+ mjonMsgVO.setSmsTxt(kakaoVO.getTemplateContent()); |
|
| 546 |
+ mjonMsgVO.setReqDate(kakaoVO.getReqDate()); |
|
| 547 |
+ mjonMsgVO.setMsgGroupCnt(Integer.toString(resultCnt)); |
|
| 548 |
+ mjonMsgVO.setMsgType(msgType); |
|
| 549 |
+ mjonMsgVO.setAgentCode(agentCode); |
|
| 550 |
+ mjonMsgVO.setEachPrice(kakaoVO.getEachPrice()); |
|
| 551 |
+ mjonMsgVO.setReserveYn(kakaoVO.getReserveYn()); |
|
| 552 |
+ mjonMsgVO.setBefCash(kakaoVO.getBefCash()); |
|
| 553 |
+ mjonMsgVO.setBefPoint(kakaoVO.getBefPoint()); |
|
| 554 |
+ mjonMsgVO.setKakaoSubMagOrgnlTxt(kakaoVO.getKakaoSubMagOrgnlTxt()); |
|
| 555 |
+ mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn()); |
|
| 556 |
+ |
|
| 557 |
+ |
|
| 558 |
+ if(kakaoVO.getBizJsonYn().equals("Y")) {
|
|
| 559 |
+ mjonMsgVO.setFileCnt("1");
|
|
| 560 |
+ }else {
|
|
| 561 |
+ mjonMsgVO.setFileCnt("0");
|
|
| 562 |
+ } |
|
| 563 |
+ |
|
| 564 |
+ mjonMsgVO.setDelayYn(kakaoVO.getDelayYn()); |
|
| 565 |
+ |
|
| 566 |
+ // 등록되어있는 그룹데이터가 있는지 조회 |
|
| 567 |
+ int msgGroupDataCnt = mjonMsgDAO.selectMsgGroupDataCntByGroupId(mjonMsgVO); |
|
| 568 |
+ |
|
| 569 |
+ // 등록되어 있는 그룹데이터가 없으면 insert, 있으면 update를 진행한다. |
|
| 570 |
+ if(msgGroupDataCnt < 1) {
|
|
| 571 |
+ mjonMsgDAO.insertGroupMsgData(mjonMsgVO); |
|
| 572 |
+ kakaoAlimTalkDAO.insertKakaoSendPrice(kakaoVO); |
|
| 573 |
+ }else {
|
|
| 574 |
+ mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO); |
|
| 575 |
+ } |
|
| 576 |
+ } |
|
| 577 |
+ |
|
| 578 |
+ returnVO.setSendMsgCnt(Integer.toString(resultCnt)); |
|
| 579 |
+ |
|
| 580 |
+ } catch (Exception e) {
|
|
| 581 |
+ // 실패 |
|
| 582 |
+ returnVO.setSendMsgCnt(Integer.toString(0)); //발송 건수 저장 |
|
| 583 |
+ returnVO.setSendMsgBlockCnt(Integer.toString(0)); //수신차단 건수 저장 |
|
| 584 |
+ returnVO.setAgentCode("01");
|
|
| 585 |
+ |
|
| 586 |
+ System.out.println("=========================================================================");
|
|
| 587 |
+ System.out.println("+++++++++++++++++++++++++++++ 문자발송 ==> insertMsgDataInfo ERROR !!! : " + e);
|
|
| 588 |
+ System.out.println("=========================================================================");
|
|
| 589 |
+ return returnVO; |
|
| 590 |
+ } |
|
| 591 |
+ return returnVO; |
|
| 592 |
+ } |
|
| 593 |
+ |
|
| 594 |
+ |
|
| 334 | 595 |
|
| 335 | 596 |
@Override |
| 336 | 597 |
public void selectKakaoAtSentRefundList() throws Exception {
|
--- src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
... | ... | @@ -4,11 +4,13 @@ |
| 4 | 4 |
import java.math.RoundingMode; |
| 5 | 5 |
import java.text.SimpleDateFormat; |
| 6 | 6 |
import java.util.ArrayList; |
| 7 |
+import java.util.Arrays; |
|
| 7 | 8 |
import java.util.Calendar; |
| 8 | 9 |
import java.util.Date; |
| 9 | 10 |
import java.util.List; |
| 10 | 11 |
|
| 11 | 12 |
import javax.annotation.Resource; |
| 13 |
+import javax.servlet.http.HttpServletRequest; |
|
| 12 | 14 |
|
| 13 | 15 |
import org.springframework.beans.factory.annotation.Autowired; |
| 14 | 16 |
import org.springframework.stereotype.Controller; |
... | ... | @@ -17,6 +19,7 @@ |
| 17 | 19 |
import org.springframework.web.bind.annotation.RequestMapping; |
| 18 | 20 |
import org.springframework.web.servlet.ModelAndView; |
| 19 | 21 |
|
| 22 |
+import egovframework.rte.fdl.idgnr.EgovIdGnrService; |
|
| 20 | 23 |
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
| 21 | 24 |
import itn.com.cmm.EgovMessageSource; |
| 22 | 25 |
import itn.com.cmm.LoginVO; |
... | ... | @@ -26,16 +29,22 @@ |
| 26 | 29 |
import itn.let.kakao.kakaoComm.KakaoSendUtil; |
| 27 | 30 |
import itn.let.kakao.kakaoComm.KakaoVO; |
| 28 | 31 |
import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; |
| 32 |
+import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; |
|
| 29 | 33 |
import itn.let.kakao.user.kakaoFt.service.KakaoFriendsTalkTemplateService; |
| 30 | 34 |
import itn.let.mjo.msgdata.service.MjonMsgDataService; |
| 31 | 35 |
import itn.let.mjo.msgdata.service.MjonMsgDataVO; |
| 36 |
+import itn.let.mjo.msgdata.service.MjonMsgReturnVO; |
|
| 32 | 37 |
import itn.let.mjo.symbol.service.MjonSymbolService; |
| 33 | 38 |
import itn.let.mjo.symbol.service.MjonSymbolVO; |
| 39 |
+import itn.let.uss.umt.service.EgovUserManageService; |
|
| 34 | 40 |
import itn.let.uss.umt.service.MberManageVO; |
| 35 | 41 |
|
| 36 | 42 |
@Controller |
| 37 | 43 |
public class KakaoFriendsTalkSendController {
|
| 38 | 44 |
|
| 45 |
+ @Resource(name = "egovMjonMsgGroupIdGnrService") |
|
| 46 |
+ private EgovIdGnrService idgenMjonMsgGroupId; |
|
| 47 |
+ |
|
| 39 | 48 |
/** EgovMessageSource */ |
| 40 | 49 |
@Resource(name="egovMessageSource") |
| 41 | 50 |
EgovMessageSource egovMessageSource; |
... | ... | @@ -51,6 +60,13 @@ |
| 51 | 60 |
|
| 52 | 61 |
@Resource(name = "kakaoFriendsTalkTemplateService") |
| 53 | 62 |
private KakaoFriendsTalkTemplateService kakaoFtTemplateService; |
| 63 |
+ |
|
| 64 |
+ /** userManageService */ |
|
| 65 |
+ @Resource(name = "userManageService") |
|
| 66 |
+ private EgovUserManageService userManageService; |
|
| 67 |
+ |
|
| 68 |
+ @Resource(name = "kakaoAlimTalkService") |
|
| 69 |
+ private KakaoAlimTalkService kakaoAlimTalkService; |
|
| 54 | 70 |
|
| 55 | 71 |
@Autowired |
| 56 | 72 |
KakaoSendUtil kakaoSendUtil; |
... | ... | @@ -148,13 +164,8 @@ |
| 148 | 164 |
KakaoVO resultTemplateVO = new KakaoVO(); |
| 149 | 165 |
|
| 150 | 166 |
if(friendId != null) {
|
| 151 |
- |
|
| 152 |
- System.out.println("+++++++++++++++++++++++ friendId ::: "+friendId);
|
|
| 153 |
- |
|
| 154 | 167 |
resultTemplateVO = kakaoFtTemplateService.selectKakaoFriendsTemplateDetail(kakaoVO); |
| 155 |
- |
|
| 156 | 168 |
} |
| 157 |
- |
|
| 158 | 169 |
model.addAttribute("resultTemplateVO", resultTemplateVO);
|
| 159 | 170 |
|
| 160 | 171 |
|
... | ... | @@ -199,33 +210,6 @@ |
| 199 | 210 |
} |
| 200 | 211 |
|
| 201 | 212 |
return "web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView"; |
| 202 |
- } |
|
| 203 |
- |
|
| 204 |
- |
|
| 205 |
- @RequestMapping(value= {"/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgSendAjax.do"})
|
|
| 206 |
- public ModelAndView kakaoFriendsTalkMsgSendAjax( |
|
| 207 |
- @ModelAttribute("kakaoVO") KakaoVO kakaoVO
|
|
| 208 |
- ) throws Exception {
|
|
| 209 |
- ModelAndView modelAndView = new ModelAndView(); |
|
| 210 |
- modelAndView.setViewName("jsonView");
|
|
| 211 |
- |
|
| 212 |
- int sendCount = 0; //발송결과 건수 |
|
| 213 |
- try {
|
|
| 214 |
- |
|
| 215 |
- /** 카카오톡 전송 기본 설정 -------------------------------------------*/ |
|
| 216 |
- /** 카카오톡 전송 금액 설정 -------------------------------------------*/ |
|
| 217 |
- /** 카카오톡 전송 분할 설정 -------------------------------------------*/ |
|
| 218 |
- /** 카카오톡 예약 전송 설정 -------------------------------------------*/ |
|
| 219 |
- /** 카카오톡 전송 메시지 설정 ------------------------------------------*/ |
|
| 220 |
- /** 카카오톡 발송 처리 -----------------------------------------------*/ |
|
| 221 |
- |
|
| 222 |
- }catch (Exception e) {
|
|
| 223 |
- System.out.println(" kakaoFriendsTalkMsgSendAjax Error ::: " + e);
|
|
| 224 |
- modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.update"));
|
|
| 225 |
- modelAndView.addObject("result", "fail");
|
|
| 226 |
- return modelAndView; |
|
| 227 |
- } |
|
| 228 |
- return modelAndView; |
|
| 229 | 213 |
} |
| 230 | 214 |
|
| 231 | 215 |
|
... | ... | @@ -325,9 +309,281 @@ |
| 325 | 309 |
*/ |
| 326 | 310 |
@RequestMapping(value= {"/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgSendAjax.do"})
|
| 327 | 311 |
public ModelAndView kakaoFriendsTalkMsgSendAjax(ModelMap model |
| 312 |
+ , HttpServletRequest request |
|
| 328 | 313 |
, @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception {
|
| 329 | 314 |
ModelAndView modelAndView = new ModelAndView(); |
| 330 | 315 |
modelAndView.setViewName("jsonView");
|
| 316 |
+ |
|
| 317 |
+ |
|
| 318 |
+ int resultSts = 0; //발송결과 건수 |
|
| 319 |
+ int resultBlockSts = 0; //수신거부 등록번호로 발송을 안한 건수 |
|
| 320 |
+ |
|
| 321 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 322 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 323 |
+ |
|
| 324 |
+ try {
|
|
| 325 |
+ |
|
| 326 |
+ if(userId == "") {
|
|
| 327 |
+ modelAndView.addObject("message", "로그인 후 이용이 가능합니다.");
|
|
| 328 |
+ modelAndView.addObject("result", "loginFail");
|
|
| 329 |
+ return modelAndView; |
|
| 330 |
+ }else {
|
|
| 331 |
+ |
|
| 332 |
+ /** |
|
| 333 |
+ * 회원 정지된 상태이면 알림톡 발송이 안되도록 처리함 |
|
| 334 |
+ * 현재 로그인 세션도 만료 처리함 |
|
| 335 |
+ * */ |
|
| 336 |
+ boolean mberSttus = userManageService.selectUserStatusInfo(userId); |
|
| 337 |
+ |
|
| 338 |
+ if(!mberSttus) {
|
|
| 339 |
+ |
|
| 340 |
+ modelAndView.addObject("message", "현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 알림톡을 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다.");
|
|
| 341 |
+ modelAndView.addObject("result", "authFail");
|
|
| 342 |
+ |
|
| 343 |
+ request.getSession().invalidate(); |
|
| 344 |
+ |
|
| 345 |
+ return modelAndView; |
|
| 346 |
+ |
|
| 347 |
+ } |
|
| 348 |
+ } |
|
| 349 |
+ |
|
| 350 |
+/** 카카오톡 전송 기본 설정 -------------------------------------------*/ |
|
| 351 |
+ kakaoVO.setSendType("FT");
|
|
| 352 |
+ kakaoVO.setMsgType("9");
|
|
| 353 |
+ kakaoVO.setUserId(userId); |
|
| 354 |
+ |
|
| 355 |
+ |
|
| 356 |
+/** 전송금액 설정 --------------------------------------------------*/ |
|
| 357 |
+ KakaoVO priceSet = kakaoSendUtil.kakaoFTSendPrice(kakaoVO); |
|
| 358 |
+ |
|
| 359 |
+ if(priceSet.getResultCode() != null && priceSet.getResultCode().equals("2000")) {
|
|
| 360 |
+ |
|
| 361 |
+ modelAndView.addObject("message", "대체문자 치환 후 전송 문자 길이를 초과하였습니다.");
|
|
| 362 |
+ modelAndView.addObject("result", "fail");
|
|
| 363 |
+ return modelAndView; |
|
| 364 |
+ } |
|
| 365 |
+ |
|
| 366 |
+ BigDecimal befCash = new BigDecimal(priceSet.getBefCash()).setScale(2, RoundingMode.HALF_EVEN); |
|
| 367 |
+ BigDecimal totMsgPrice = new BigDecimal(priceSet.getTotPrice()).setScale(2, RoundingMode.HALF_EVEN); |
|
| 368 |
+ |
|
| 369 |
+ kakaoVO.setEachPrice(priceSet.getEachPrice()); |
|
| 370 |
+ kakaoVO.setBefCash(befCash.toString()); |
|
| 371 |
+ kakaoVO.setTotPrice(totMsgPrice.toString()); |
|
| 372 |
+ |
|
| 373 |
+ //현재 보유 금액이 발송 문자 총 금액보다 클 경우만 문자 발송 |
|
| 374 |
+ //BigDecimal 비교 연산 |
|
| 375 |
+ // befCash(현재 보유금액) 값이 totMsgPrice(문자전송 금액) 보다 많으면 문자 전송 |
|
| 376 |
+ if(befCash.compareTo(totMsgPrice) != -1) { // -1 : befCash < totMsgPrice, 0 : befCash = totMsgPrice, 1 : befCash > totMsgPrice,
|
|
| 377 |
+ |
|
| 378 |
+ kakaoVO.setMsgGroupId(idgenMjonMsgGroupId.getNextStringId()); // 문자 그룹ID 설정 |
|
| 379 |
+ |
|
| 380 |
+/** 카카오톡 전송 분할 설정 ----------------------------------------------*/ |
|
| 381 |
+ |
|
| 382 |
+ String[] tempPhoneList = new String[200]; //임시 수신번호 리스트 저장용 배열 |
|
| 383 |
+ List<String[]> tempVarValList = new ArrayList<String[]>(); //임시 변수 리스트 저장용 |
|
| 384 |
+ |
|
| 385 |
+ String[] phoneList = kakaoVO.getCallToList(); |
|
| 386 |
+ List<String[]> varValList = null; |
|
| 387 |
+ |
|
| 388 |
+ |
|
| 389 |
+ //치환문자 포함 여부 |
|
| 390 |
+ if(kakaoVO.getTxtReplYn().equals("Y")) {
|
|
| 391 |
+ varValList = kakaoVO.getVarValList(); |
|
| 392 |
+ } |
|
| 393 |
+ |
|
| 394 |
+ System.out.println("+++++++++++++++++ 회원 스미싱 의심 온/오프 ::: "+kakaoVO.getAtSmishingYn());
|
|
| 395 |
+ |
|
| 396 |
+ //스팸 스미싱 여부 - 내용에 스팸 문자열 유무 체크 |
|
| 397 |
+ if(kakaoVO.getSpamStatus().equals("Y") || kakaoVO.getAtSmishingYn().equals("Y")) {
|
|
| 398 |
+ kakaoVO.setAtSmishingYn("Y");
|
|
| 399 |
+ }else {
|
|
| 400 |
+ kakaoVO.setAtSmishingYn("N");
|
|
| 401 |
+ } |
|
| 402 |
+ |
|
| 403 |
+ //스미싱 의심이 아니면 delayYn 값 셋팅 |
|
| 404 |
+ if(kakaoVO.getAtSmishingYn().equals("N")) {
|
|
| 405 |
+ kakaoVO.setDelayYn("N");
|
|
| 406 |
+ }else {
|
|
| 407 |
+ kakaoVO.setDelayYn("Y");
|
|
| 408 |
+ } |
|
| 409 |
+ |
|
| 410 |
+ //분할발송 여부 - 친구톡은 분할 발송이 없기애 N으로 픽스 |
|
| 411 |
+ kakaoVO.setDivideChk("N");
|
|
| 412 |
+ |
|
| 413 |
+ int callToListCnt = kakaoVO.getCallToList().length; |
|
| 414 |
+ kakaoVO.setTotalCallCnt(callToListCnt); |
|
| 415 |
+ |
|
| 416 |
+/** 예약 문자인 경우 설정 ----------------------------------------------*/ |
|
| 417 |
+ //분할문자 시간에 간격시간 더해주기 |
|
| 418 |
+ String dividDay = null; |
|
| 419 |
+ Calendar cal = Calendar.getInstance(); |
|
| 420 |
+ |
|
| 421 |
+ //예약시간 변환 |
|
| 422 |
+ SimpleDateFormat transFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
|
| 423 |
+ |
|
| 424 |
+ int turmMin = 0; |
|
| 425 |
+ int totalCallCnt = 0; // 수신자 전체 갯수 |
|
| 426 |
+ int divideCnt = 0; |
|
| 427 |
+ int count = 1; //분할 카운트 |
|
| 428 |
+ |
|
| 429 |
+ if(!kakaoVO.getReserveYn().equals("N")) {//예약문자인 경우 시간 셋팅
|
|
| 430 |
+ |
|
| 431 |
+ Date toDate = transFormat.parse(kakaoVO.getReqDate()); |
|
| 432 |
+ cal.setTime(toDate); //예약 시간 캘린터 변수에 입력 |
|
| 433 |
+ |
|
| 434 |
+ //turmMin = Integer.parseInt(kakaoVO.getDivideTime()); //분할발송 시간 간격 |
|
| 435 |
+ //dividDay = transFormat.format(cal.getTime()); |
|
| 436 |
+ |
|
| 437 |
+ totalCallCnt = kakaoVO.getCallToList().length; // 수신자 전체 갯수 |
|
| 438 |
+ //divideCnt = Integer.parseInt(kakaoVO.getDivideCnt()); //분할 발송 갯수 |
|
| 439 |
+ |
|
| 440 |
+ } |
|
| 441 |
+ |
|
| 442 |
+ //분할 예약 시간 저장 리스트 생성 |
|
| 443 |
+ List<String> dividDayList = new ArrayList<String>(); |
|
| 444 |
+ |
|
| 445 |
+ if(callToListCnt > 200) {
|
|
| 446 |
+ |
|
| 447 |
+ int sendCnt = 0; |
|
| 448 |
+ /** 카카오톡 전송 200개 이상일때 ----------------------------------------------*/ |
|
| 449 |
+ for(int i =0; i < callToListCnt; i++) {
|
|
| 450 |
+ |
|
| 451 |
+ //분할 발송을 체크 한 경우 |
|
| 452 |
+ /*if(kakaoVO.getDivideChk().equals("Y")) {
|
|
| 453 |
+ if(count > divideCnt) {
|
|
| 454 |
+ count = 1; |
|
| 455 |
+ cal.add(Calendar.MINUTE, turmMin); //분할 시간 간격을 증가시켜 준다. |
|
| 456 |
+ dividDay = transFormat.format(cal.getTime()); |
|
| 457 |
+ dividDayList.add(dividDay); |
|
| 458 |
+ count++; |
|
| 459 |
+ }else {
|
|
| 460 |
+ dividDayList.add(dividDay); |
|
| 461 |
+ count++; |
|
| 462 |
+ } |
|
| 463 |
+ }*/ |
|
| 464 |
+ |
|
| 465 |
+ |
|
| 466 |
+ if((i < callToListCnt -1) && sendCnt == 199) {
|
|
| 467 |
+ |
|
| 468 |
+ tempPhoneList[sendCnt] = phoneList[i]; |
|
| 469 |
+ |
|
| 470 |
+ if(varValList != null) {
|
|
| 471 |
+ tempVarValList.add(varValList.get(i)); |
|
| 472 |
+ } |
|
| 473 |
+ |
|
| 474 |
+ List<String> arrPhoneList = new ArrayList<String>(); |
|
| 475 |
+ for(String temp : tempPhoneList) {
|
|
| 476 |
+ if(temp != null) {
|
|
| 477 |
+ arrPhoneList.add(temp); |
|
| 478 |
+ } |
|
| 479 |
+ } |
|
| 480 |
+ |
|
| 481 |
+ String[] sendPhoneList = new String[arrPhoneList.size()]; |
|
| 482 |
+ for(int j=0; j< arrPhoneList.size(); j++) {
|
|
| 483 |
+ sendPhoneList[j] = arrPhoneList.get(j); |
|
| 484 |
+ } |
|
| 485 |
+ |
|
| 486 |
+/** 카카오톡 전송 메시지 설정 ----------------------------------------------*/ |
|
| 487 |
+ kakaoVO.setCallToList(sendPhoneList); |
|
| 488 |
+ kakaoVO.setVarValList(tempVarValList); |
|
| 489 |
+ KakaoVO kakaoSendMsgSet = kakaoSendUtil.kakaoFTSendMsg(kakaoVO); |
|
| 490 |
+ kakaoVO.setKakaoSendList(kakaoSendMsgSet.getKakaoSendList()); |
|
| 491 |
+ |
|
| 492 |
+/** 카카오톡 발송 처리 --------------------------------------------------*/ |
|
| 493 |
+ kakaoVO.setDividDay(dividDayList); |
|
| 494 |
+ MjonMsgReturnVO returnVO = kakaoAlimTalkService.insertKakaoFtSendAjax(kakaoVO); |
|
| 495 |
+ resultSts = resultSts + Integer.parseInt(returnVO.getSendMsgCnt()); |
|
| 496 |
+ //전송 초기화 |
|
| 497 |
+ sendCnt = 0; |
|
| 498 |
+ Arrays.fill(tempPhoneList, null); |
|
| 499 |
+ tempVarValList.clear(); |
|
| 500 |
+ dividDayList.clear(); |
|
| 501 |
+ |
|
| 502 |
+ }else if((i == callToListCnt -1) && sendCnt < 200){//200개의 마지막일 경우 처리
|
|
| 503 |
+ |
|
| 504 |
+ tempPhoneList[sendCnt] = phoneList[i]; |
|
| 505 |
+ |
|
| 506 |
+ if(varValList != null) {
|
|
| 507 |
+ |
|
| 508 |
+ tempVarValList.add(varValList.get(i)); |
|
| 509 |
+ |
|
| 510 |
+ } |
|
| 511 |
+ |
|
| 512 |
+ List<String> arrPhoneList = new ArrayList<String>(); |
|
| 513 |
+ for(String temp : tempPhoneList) {
|
|
| 514 |
+ if(temp != null) {
|
|
| 515 |
+ arrPhoneList.add(temp); |
|
| 516 |
+ } |
|
| 517 |
+ } |
|
| 518 |
+ |
|
| 519 |
+ String[] sendPhoneList = new String[arrPhoneList.size()]; |
|
| 520 |
+ for(int j=0; j< arrPhoneList.size(); j++) {
|
|
| 521 |
+ sendPhoneList[j] = arrPhoneList.get(j); |
|
| 522 |
+ } |
|
| 523 |
+ |
|
| 524 |
+/** 카카오톡 전송 메시지 설정 ----------------------------------------------*/ |
|
| 525 |
+ kakaoVO.setCallToList(sendPhoneList); |
|
| 526 |
+ kakaoVO.setVarValList(tempVarValList); |
|
| 527 |
+ KakaoVO kakaoSendMsgSet = kakaoSendUtil.kakaoFTSendMsg(kakaoVO); |
|
| 528 |
+ kakaoVO.setKakaoSendList(kakaoSendMsgSet.getKakaoSendList()); |
|
| 529 |
+ kakaoVO.setKakaoSubMagOrgnlTxt(kakaoSendMsgSet.getKakaoSubMagOrgnlTxt()); |
|
| 530 |
+/** 카카오톡 발송 처리 --------------------------------------------------*/ |
|
| 531 |
+ kakaoVO.setDividDay(dividDayList); |
|
| 532 |
+ MjonMsgReturnVO returnVO = kakaoAlimTalkService.insertKakaoFtSendAjax(kakaoVO); |
|
| 533 |
+ resultSts = resultSts + Integer.parseInt(returnVO.getSendMsgCnt()); |
|
| 534 |
+ }else {//198개가 될때까지 배열에 데이터를 쌓는다
|
|
| 535 |
+ |
|
| 536 |
+ tempPhoneList[sendCnt] = phoneList[i]; |
|
| 537 |
+ |
|
| 538 |
+ if(varValList != null && varValList.get(i).length > 0) {
|
|
| 539 |
+ tempVarValList.add(varValList.get(i)); |
|
| 540 |
+ } |
|
| 541 |
+ |
|
| 542 |
+ sendCnt++; |
|
| 543 |
+ } |
|
| 544 |
+ } |
|
| 545 |
+ }else {
|
|
| 546 |
+ /** 카카오톡 전송 200개 미만일때 ----------------------------------------------*/ |
|
| 547 |
+ //분할 발송을 체크 한 경우 |
|
| 548 |
+ /*if(kakaoVO.getDivideChk().equals("Y")) {
|
|
| 549 |
+ for(int i =0; i < callToListCnt; i++) {
|
|
| 550 |
+ if(count > divideCnt) {
|
|
| 551 |
+ count = 1; |
|
| 552 |
+ cal.add(Calendar.MINUTE, turmMin); //분할 시간 간격을 증가시켜 준다. |
|
| 553 |
+ dividDay = transFormat.format(cal.getTime()); |
|
| 554 |
+ dividDayList.add(dividDay); |
|
| 555 |
+ count++; |
|
| 556 |
+ }else {
|
|
| 557 |
+ dividDayList.add(dividDay); |
|
| 558 |
+ count++; |
|
| 559 |
+ } |
|
| 560 |
+ } |
|
| 561 |
+ }*/ |
|
| 562 |
+ |
|
| 563 |
+ |
|
| 564 |
+ |
|
| 565 |
+/** 카카오톡 전송 메시지 설정 ----------------------------------------------*/ |
|
| 566 |
+ KakaoVO kakaoSendMsgSet = kakaoSendUtil.kakaoFTSendMsg(kakaoVO); |
|
| 567 |
+ kakaoVO.setKakaoSendList(kakaoSendMsgSet.getKakaoSendList()); |
|
| 568 |
+ kakaoVO.setKakaoSubMagOrgnlTxt(kakaoSendMsgSet.getKakaoSubMagOrgnlTxt()); |
|
| 569 |
+ |
|
| 570 |
+/** 카카오톡 발송 처리 --------------------------------------------------*/ |
|
| 571 |
+ kakaoVO.setDividDay(dividDayList); |
|
| 572 |
+ MjonMsgReturnVO returnVO = kakaoAlimTalkService.insertKakaoFtSendAjax(kakaoVO); |
|
| 573 |
+ resultSts = Integer.parseInt(returnVO.getSendMsgCnt()); |
|
| 574 |
+ |
|
| 575 |
+ } |
|
| 576 |
+ |
|
| 577 |
+/** 카카오톡 결과 처리 --------------------------------------------------*/ |
|
| 578 |
+ }else {
|
|
| 579 |
+ modelAndView.addObject("message", "친구톡 발송에 필요한 보유 잔액이 부족 합니다.");
|
|
| 580 |
+ modelAndView.addObject("result", "fail");
|
|
| 581 |
+ return modelAndView; |
|
| 582 |
+ } |
|
| 583 |
+ |
|
| 584 |
+ } catch (Exception e) {
|
|
| 585 |
+ System.out.println("kakaoFriendsTalkMsgSendAjax Controller Error !!!! "+e);
|
|
| 586 |
+ } |
|
| 331 | 587 |
|
| 332 | 588 |
System.out.println("++++++++++++++++++++++ senderKey ::: "+kakaoVO.getSenderKey());
|
| 333 | 589 |
System.out.println("++++++++++++++++++++++ imageType ::: "+kakaoVO.getImageType());
|
... | ... | @@ -386,6 +642,8 @@ |
| 386 | 642 |
|
| 387 | 643 |
System.out.println("++++++++++++++++ 예약 시간 ::: "+kakaoVO.getReqDate());
|
| 388 | 644 |
|
| 645 |
+ System.out.println("++++++++++++++++ json 필요 유무 ::: "+kakaoVO.getBizJsonYn());
|
|
| 646 |
+ |
|
| 389 | 647 |
|
| 390 | 648 |
|
| 391 | 649 |
modelAndView.addObject("result", "success");
|
--- src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/include/KaKaoAlimtalkTopMenuTap.jsp
... | ... | @@ -58,8 +58,6 @@ |
| 58 | 58 |
|
| 59 | 59 |
}else if(tabInfo == 'tabFriend'){
|
| 60 | 60 |
|
| 61 |
- /* alert("친구톡 메뉴는 현재 개발이 진행 중입니다."); */
|
|
| 62 |
- $("input[name=friendId]").val("");
|
|
| 63 | 61 |
url = "<c:url value='/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgDataView.do'/>"; |
| 64 | 62 |
|
| 65 | 63 |
}else if(tabInfo == 'tabAlimtalkIntrd'){
|
... | ... | @@ -68,8 +66,10 @@ |
| 68 | 66 |
|
| 69 | 67 |
} |
| 70 | 68 |
|
| 71 |
- form.action =url; |
|
| 72 |
- form.submit(); |
|
| 69 |
+ //form.action =url; |
|
| 70 |
+ //form.submit(); |
|
| 71 |
+ //메뉴 선택시 폼 데이터로 인한 오류 발생하여 location으로 변경 - 20240117 우영두 |
|
| 72 |
+ location.href=url; |
|
| 73 | 73 |
|
| 74 | 74 |
} |
| 75 | 75 |
|
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
... | ... | @@ -761,6 +761,19 @@ |
| 761 | 761 |
//친구톡 데이터 전송 처리 |
| 762 | 762 |
function fn_sendMsgData(){
|
| 763 | 763 |
|
| 764 |
+ var senderKey = $("#selectAgentCode option:checked").val();
|
|
| 765 |
+ |
|
| 766 |
+ if(senderKey == ''){
|
|
| 767 |
+ |
|
| 768 |
+ alert("채널ID를 선택해 주세요.");
|
|
| 769 |
+ return false; |
|
| 770 |
+ |
|
| 771 |
+ }else{
|
|
| 772 |
+ |
|
| 773 |
+ $("#inputSenderKey").val(senderKey);
|
|
| 774 |
+ |
|
| 775 |
+ } |
|
| 776 |
+ |
|
| 764 | 777 |
//이미지 첨부 체크 |
| 765 | 778 |
var imgChk = $("input[name=img_file_add]:checked").val();
|
| 766 | 779 |
if(imgChk == 'I' || imgChk == 'W'){
|
... | ... | @@ -792,6 +805,16 @@ |
| 792 | 805 |
|
| 793 | 806 |
$("#imageType").val(imgChk);
|
| 794 | 807 |
|
| 808 |
+ //json 파일 필요 유무 셋팅 |
|
| 809 |
+ $("#bizJsonYn").val("Y");
|
|
| 810 |
+ } |
|
| 811 |
+ |
|
| 812 |
+ //템플릿 버튼 갯수 체크 |
|
| 813 |
+ var buttonCnt = $(".btn_kakao_type").length;
|
|
| 814 |
+ |
|
| 815 |
+ if(buttonCnt > 0){
|
|
| 816 |
+ //json 파일 필요 유무 셋팅 |
|
| 817 |
+ $("#bizJsonYn").val("Y");
|
|
| 795 | 818 |
} |
| 796 | 819 |
|
| 797 | 820 |
//친구톡 내용 체크 |
... | ... | @@ -814,7 +837,6 @@ |
| 814 | 837 |
alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다.");
|
| 815 | 838 |
|
| 816 | 839 |
} |
| 817 |
- |
|
| 818 | 840 |
|
| 819 | 841 |
|
| 820 | 842 |
//수신번호 리스트 체크하기 |
... | ... | @@ -1308,7 +1330,42 @@ |
| 1308 | 1330 |
alert("대체문자 내용을 입력해 주세요.");
|
| 1309 | 1331 |
return false; |
| 1310 | 1332 |
|
| 1333 |
+ }else{//대체문자에 치환문자 여부 체크
|
|
| 1334 |
+ |
|
| 1335 |
+ var smsTxtArea = $("#smsTxtArea").val();
|
|
| 1336 |
+ var replStatus = false; |
|
| 1337 |
+ |
|
| 1338 |
+ if(smsTxtArea.indexOf("\#{이름}") > -1){
|
|
| 1339 |
+ replStatus = true; |
|
| 1340 |
+ } |
|
| 1341 |
+ |
|
| 1342 |
+ if(smsTxtArea.indexOf("\#{1}") > -1){
|
|
| 1343 |
+ replStatus = true; |
|
| 1344 |
+ } |
|
| 1345 |
+ |
|
| 1346 |
+ if(smsTxtArea.indexOf("\#{2}") > -1){
|
|
| 1347 |
+ replStatus = true; |
|
| 1348 |
+ } |
|
| 1349 |
+ |
|
| 1350 |
+ if(smsTxtArea.indexOf("\#{3}") > -1){
|
|
| 1351 |
+ replStatus = true; |
|
| 1352 |
+ } |
|
| 1353 |
+ |
|
| 1354 |
+ if(smsTxtArea.indexOf("\#{4}") > -1){
|
|
| 1355 |
+ replStatus = true; |
|
| 1356 |
+ } |
|
| 1357 |
+ |
|
| 1358 |
+ if(replStatus){
|
|
| 1359 |
+ $("#subMsgTxtReplYn").val("Y");
|
|
| 1360 |
+ }else{
|
|
| 1361 |
+ $("#subMsgTxtReplYn").val("N");
|
|
| 1362 |
+ } |
|
| 1363 |
+ |
|
| 1364 |
+ $("#subMsgTxt").val(smsTxtArea);
|
|
| 1365 |
+ |
|
| 1311 | 1366 |
} |
| 1367 |
+ |
|
| 1368 |
+ |
|
| 1312 | 1369 |
|
| 1313 | 1370 |
return true; |
| 1314 | 1371 |
|
... | ... | @@ -1425,6 +1482,7 @@ |
| 1425 | 1482 |
|
| 1426 | 1483 |
<!-- 스팸 문구 유무 --> |
| 1427 | 1484 |
<input type="hidden" id="spamStatus" name="spamStatus" value="N"/> |
| 1485 |
+ <input type="hidden" id="atSmishingYn" name="atSmishingYn" value="<c:out value='${atSmishingYn}' />"/>
|
|
| 1428 | 1486 |
|
| 1429 | 1487 |
<!-- 오류 체크 --> |
| 1430 | 1488 |
<input type="hidden" id="errorChk" name="errorChk" value="N"/> |
... | ... | @@ -1432,7 +1490,8 @@ |
| 1432 | 1490 |
<!-- 대체문자 여부 --> |
| 1433 | 1491 |
<input type="hidden" id="subMsgSendYn" name="subMsgSendYn" value="N"/> |
| 1434 | 1492 |
<input type="hidden" id="subMsgType" name="subMsgType" value="SMS"/> |
| 1435 |
- |
|
| 1493 |
+ <input type="hidden" id="subMsgTxtReplYn" name="subMsgTxtReplYn" value="N"/> |
|
| 1494 |
+ <input type="hidden" id="subMsgTxt" name="subMsgTxt" value=""/> |
|
| 1436 | 1495 |
|
| 1437 | 1496 |
<!-- 발신번호정보 --> |
| 1438 | 1497 |
<input type="hidden" id="callFrom" name="callFrom" value=""/> |
... | ... | @@ -1442,6 +1501,10 @@ |
| 1442 | 1501 |
<input type="hidden" id="eachPrice" name="eachPrice" value=""/> |
| 1443 | 1502 |
<input type="hidden" id="totPrice" name="totalPrice" value=""/> |
| 1444 | 1503 |
|
| 1504 |
+ <!-- 친구톡 발송 json 파일 필요 유무 --> |
|
| 1505 |
+ <input type="hidden" id="bizJsonYn" name="bizJsonYn" value="N"/> |
|
| 1506 |
+ |
|
| 1507 |
+ |
|
| 1445 | 1508 |
<div class="send_general friend_talk_wrap kakao_wrap"> |
| 1446 | 1509 |
<div class="send_left"> |
| 1447 | 1510 |
<table class="tType1"> |
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?