이호영 이호영 2025-09-03
api 친구톡 완료
@c1defb3498d62b8628f33a3e97a3d2e454f4d77e
src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
--- src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoVO.java
@@ -336,30 +336,33 @@
 	
 	public String ftToString() {
 		StringBuilder sb = new StringBuilder("KakaoFTSendVO[");
-		sb.append("\n senderKey=[").append(senderKey).append("]");
+		sb.append("\n sendKind=[").append(getSendKind()).append("]");
+		sb.append("\n , senderKey=[").append(senderKey).append("]");
 		sb.append("\n , imageFileName=[").append(imageFileName).append("]");
 		sb.append("\n , imageType=[").append(imageType).append("]");
-		sb.append("\n , imgTitle=[").append(imgTitle).append("]");
-		sb.append("\n , imgLink=[").append(imgLink).append("]");
+		sb.append("\n , atchFileId=[").append(atchFileId).append("]");
+//		sb.append("\n , imgTitle=[").append(imgTitle).append("]");
+//		sb.append("\n , imgLink=[").append(imgLink).append("]");
 		sb.append("\n , templateContent=[").append(templateContent).append("]");
 		sb.append("\n , templateImageUrl=[").append(templateImageUrl).append("]");
-		sb.append("\n , smsTxtArea=[").append(getSubMsgTxt()).append("]");
-		sb.append("\n , subMsgSendYn=[").append(subMsgSendYn).append("]");
-		sb.append("\n , subMsgTxtReplYn=[").append(subMsgTxtReplYn).append("]");
-		sb.append("\n , subMsgType=[").append(subMsgType).append("]");
+//		sb.append("\n , imgLink=[").append(imgLink).append("]");
+//		sb.append("\n , smsTxtArea=[").append(getSubMsgTxt()).append("]");
+//		sb.append("\n , subMsgSendYn=[").append(subMsgSendYn).append("]");
+//		sb.append("\n , subMsgTxtReplYn=[").append(subMsgTxtReplYn).append("]");
+//		sb.append("\n , subMsgType=[").append(subMsgType).append("]");
 		sb.append("\n , subMsgTxt=[").append(subMsgTxt).append("]");
+		sb.append("\n , subMsgSendYn=[").append(subMsgSendYn).append("]");
 		sb.append("\n , reserveYn=[").append(getReserveYn()).append("]");
-		sb.append("\n , menuTopTab=[").append(menuTopTab).append("]");
-		sb.append("\n , bizJsonYn=[").append(bizJsonYn).append("]");
-		sb.append("\n , senderKey=[").append(senderKey).append("]");
+//		sb.append("\n , menuTopTab=[").append(menuTopTab).append("]");
+//		sb.append("\n , bizJsonYn=[").append(bizJsonYn).append("]");
 		sb.append("\n , callFrom=[").append(getCallFrom()).append("]");
-		sb.append("\n , kakaoFtPrice=[").append(getEachPrice()).append("]");
+//		sb.append("\n , kakaoFtPrice=[").append(getEachPrice()).append("]");
 		sb.append("\n , reqDate=[").append(getReqDate()).append("]");
-		sb.append("\n , spamStatus=[").append(getSpamStatus()).append("]");
-		sb.append("\n , txtReplYn=[").append(getTxtReplYn()).append("]");
-		sb.append("\n , atSmishingYn=[").append(getAtSmishingYn()).append("]");
-		sb.append("\n , atDelayYn=[").append(getAtDelayYn()).append("]");
-		sb.append("\n , filePath1=[").append(getFilePath1()).append("]");
+//		sb.append("\n , spamStatus=[").append(getSpamStatus()).append("]");
+//		sb.append("\n , txtReplYn=[").append(getTxtReplYn()).append("]");
+//		sb.append("\n , atSmishingYn=[").append(getAtSmishingYn()).append("]");
+//		sb.append("\n , atDelayYn=[").append(getAtDelayYn()).append("]");
+//		sb.append("\n , filePath1=[").append(getFilePath1()).append("]");
 //		sb.append("\n , tmpBtnSelect=[").append(getTmpBtnSelect()).append("]");
 		StringBuilder btnListSb = new StringBuilder("[");
 		if (buttonVOList != null && !buttonVOList.isEmpty()) {
@@ -389,4 +392,7 @@
 		return sb.toString();
 	}
 	
+	
+
+	
 }
src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkServiceImpl.java
--- src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkServiceImpl.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/service/impl/KakaoFriendsTalkServiceImpl.java
@@ -11,6 +11,7 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
@@ -80,20 +81,32 @@
 		log.info(" + kakaoVO.toString() :: [{}]", kakaoVO.ftToString()); 
 		
 
+//		if(1==1) {
+//			throw new RuntimeException("강제로 발생시킨 예외");
+//		}
 		
 		// 측정할 메소드 호출 전 시간 기록
 		Instant start = Instant.now();
 //		KakaoSendAdvcVO
-		
+
 		Map<String, Object> returnMap = new HashMap<>();
+		Map<String, Object> apiReturnMap = new HashMap<>();
+		
+		String userId = "";
+		if("A".equals(kakaoVO.getSendKind()))
+		{
+			userId = kakaoVO.getMberId();
+		}else {
+	
+			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
+					? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
+					: null;
+			userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+	
+			if (userId.equals("")) {
+				return new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용이 가능합니다.");
+			}
 
-		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
-				? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
-				: null;
-		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
-
-		if (userId.equals("")) {
-			return new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용이 가능합니다.");
 		}
 		
 		kakaoVO.setUserId(userId);
@@ -106,7 +119,7 @@
 			request.getSession().invalidate();
 			// UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때
 			return new StatusResponse(HttpStatus.UNAUTHORIZED,
-					"현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 친구톡을 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다.");
+					"현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 친구톡을 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다.", "STAT_1070");
 		}
 		
 
@@ -116,7 +129,7 @@
 		if(kakaoSendUtil.isRestrictedFriendTalkTime(kakaoSendUtil.resolveBaseDate(kakaoVO))) {
 			// UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고 할 때
 			return new StatusResponse(HttpStatus.BAD_REQUEST,
-					"친구톡은 20시 50분부터 익일 08시까지 발송이 제한됩니다.");
+					"친구톡은 20시 50분부터 익일 08시까지 발송이 제한됩니다.","STAT_2080");
 		}
 		
 
@@ -139,12 +152,11 @@
 			return statusResponse;
 		}
 		
-		
-		
+
 /** @전송금액 확인 --------------------------------------------------*/
 		if (!kakaoSendUtil.isCashSufficient(userId, kakaoSendAdvcListVO)) {
 			log.error("Insufficient balance for message sending.");
-			return new StatusResponse(HttpStatus.BAD_REQUEST, "문자 발송에 필요한 보유 잔액이 부족 합니다.");
+			return new StatusResponse(HttpStatus.BAD_REQUEST, "문자 발송에 필요한 보유 잔액이 부족 합니다.", "STAT_1060");
 		}
 		
 
@@ -162,6 +174,8 @@
 		// 임시
 		List<String> nextMsgGroupIdA = new ArrayList<>();
 			// 대안: entrySet() 직접 사용
+		String apiMsgGroupId = "";
+		String apiMsgType = "";
 		for (Map.Entry<String, List<KakaoSendAdvcVO>> entry : priceGroupedMessages.entrySet()) {
 			    // entry 사용
 
@@ -169,7 +183,15 @@
 
 			String nextMsgGroupId = idgenMjonMsgGroupId.getNextStringId();
 			groupedMsgList.forEach(t -> t.setMsgGroupId(nextMsgGroupId));
+
+			// api 전달 값
+			apiMsgGroupId = StringUtils.isNotEmpty(apiMsgGroupId)
+					? apiMsgGroupId + "," + nextMsgGroupId
+					: nextMsgGroupId;
 			
+			apiMsgType = StringUtils.isNotEmpty(apiMsgType)
+					? apiMsgType + "," + kakaoSendAdvcListVO.get(0).getMsgType()
+							: kakaoSendAdvcListVO.get(0).getMsgType();
 
 			// 발송 데이터 삽입
 			int instCnt = kakaoSendUtil.insertKakaoData_advc(groupedMsgList);
@@ -224,6 +246,12 @@
 			
 		}
 
+		apiReturnMap.put("resultSts", instTotalCnt);
+		// 그룹 ID
+		apiReturnMap.put("msgGroupId", apiMsgGroupId);
+		// 메세지 타입
+		apiReturnMap.put("msgType", apiMsgType);
+		
 		returnMap.put("resultSts", instTotalCnt);
 		returnMap.put("reserYn", kakaoVO.getReserveYn());
 		returnMap.put("groupIds", nextMsgGroupIdA);
@@ -254,6 +282,9 @@
 
 		statusResponse.setStatus(HttpStatus.OK);
 		statusResponse.setObject(returnMap);
+		apiReturnMap.put("result", HttpStatus.OK);
+		apiReturnMap.put("message", "전송이 완료되었습니다.");
+		statusResponse.setApiReturn(apiReturnMap);
 		
 		return statusResponse;
 	}
Add a comment
List