api 친구톡 완료

This commit is contained in:
hehihoho3@gmail.com 2025-09-03 11:44:43 +09:00
parent 054ee00b6d
commit c1defb3498
2 changed files with 66 additions and 29 deletions

View File

@ -336,30 +336,33 @@ public class KakaoVO extends MjonMsgVO{
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 @@ public class KakaoVO extends MjonMsgVO{
return sb.toString();
}
}

View File

@ -11,6 +11,7 @@ import java.util.stream.Collectors;
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 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
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<>();
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
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, "로그인 후 이용이 가능합니다.");
}
if (userId.equals("")) {
return new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용이 가능합니다.");
}
kakaoVO.setUserId(userId);
@ -106,7 +119,7 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
request.getSession().invalidate();
// UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고
return new StatusResponse(HttpStatus.UNAUTHORIZED,
"현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 친구톡을 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다.");
"현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 친구톡을 발송하실 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다.", "STAT_1070");
}
@ -116,7 +129,7 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
if(kakaoSendUtil.isRestrictedFriendTalkTime(kakaoSendUtil.resolveBaseDate(kakaoVO))) {
// UNAUTHORIZED : 인증되지 않은 사용자가 접근하려고
return new StatusResponse(HttpStatus.BAD_REQUEST,
"친구톡은 20시 50분부터 익일 08시까지 발송이 제한됩니다.");
"친구톡은 20시 50분부터 익일 08시까지 발송이 제한됩니다.","STAT_2080");
}
@ -140,11 +153,10 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
}
/** @전송금액 확인 --------------------------------------------------*/
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 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
// 임시
List<String> nextMsgGroupIdA = new ArrayList<>();
// 대안: entrySet() 직접 사용
String apiMsgGroupId = "";
String apiMsgType = "";
for (Map.Entry<String, List<KakaoSendAdvcVO>> entry : priceGroupedMessages.entrySet()) {
// entry 사용
@ -170,6 +184,14 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
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 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
}
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 @@ public class KakaoFriendsTalkServiceImpl extends EgovAbstractServiceImpl implem
statusResponse.setStatus(HttpStatus.OK);
statusResponse.setObject(returnMap);
apiReturnMap.put("result", HttpStatus.OK);
apiReturnMap.put("message", "전송이 완료되었습니다.");
statusResponse.setApiReturn(apiReturnMap);
return statusResponse;
}