카톡발송진행중
This commit is contained in:
parent
11e32cd532
commit
2bb22a522f
@ -630,7 +630,7 @@ public final class MsgSendUtils {
|
||||
// 각 가격을 합산
|
||||
totalPrice += Float.parseFloat(eachPrice);
|
||||
}
|
||||
|
||||
mjonMsgVO.setTotalPrice(totalPrice);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@ public class KakaoSendAdvcVO implements Serializable {
|
||||
// Insert 데이터
|
||||
private String msgId; // 문자ID
|
||||
private String msgGroupId; // 전송그룹ID
|
||||
private String msgGroupCnt; // 전송그룹ID
|
||||
private String userId; // 사용자ID
|
||||
private String agentCode; // 전송사코드
|
||||
private String senderKey; // 발신프로필 키
|
||||
@ -52,8 +53,17 @@ public class KakaoSendAdvcVO implements Serializable {
|
||||
private String eachPrice; // sms 단가
|
||||
private String smsPrice; // sms 단가
|
||||
private String mmsPrice; // mms 단가
|
||||
private String totPrice; // mms 단가
|
||||
private String befCash; // mms 단가
|
||||
private String befPoint; // mms 단가
|
||||
private String kakaoAtPrice; // 카카오 알림톡 단가
|
||||
private String bizJsonName; // 카카오 알림톡 단가
|
||||
private String reserveYn; // 카카오 알림톡 단가
|
||||
private String atDelayYn; // 카카오 알림톡 단가
|
||||
private String bizKakaoResendOrgnlTxt; // 카카오 알림톡 단가
|
||||
private String bizKakaoResendType; // 카카오 알림톡 단가
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -63,6 +73,7 @@ public class KakaoSendAdvcVO implements Serializable {
|
||||
return "MsgSendVO[" +
|
||||
"\n msgId=[" + msgId + "]" +
|
||||
"\n , msgGroupId=[" + msgGroupId + "]" +
|
||||
"\n , msgGroupCnt=[" + msgGroupCnt + "]" +
|
||||
"\n , userId=[" + userId + "]" +
|
||||
"\n , agentCode=[" + agentCode + "]" +
|
||||
"\n , senderKey=[" + senderKey + "]" +
|
||||
@ -83,10 +94,23 @@ public class KakaoSendAdvcVO implements Serializable {
|
||||
"\n , eachPrice=[" + eachPrice + "]" +
|
||||
"\n , smsPrice=[" + smsPrice + "]" +
|
||||
"\n , mmsPrice=[" + mmsPrice + "]" +
|
||||
"\n , totPrice=[" + totPrice + "]" +
|
||||
"\n , befCash=[" + befCash + "]" +
|
||||
"\n , befPoint=[" + befPoint + "]" +
|
||||
"\n , kakaoAtPrice=[" + kakaoAtPrice + "]" +
|
||||
"\n , bizJsonName=[" + bizJsonName + "]" +
|
||||
"\n , reserveYn=[" + reserveYn + "]" +
|
||||
"\n , atDelayYn=[" + atDelayYn + "]" +
|
||||
"\n , bizKakaoResendOrgnlTxt=[" + bizKakaoResendOrgnlTxt + "]" +
|
||||
"\n , bizKakaoResendType=[" + bizKakaoResendType + "]" +
|
||||
"\n ]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -141,7 +141,8 @@ public class KakaoSendUtil {
|
||||
|
||||
/** @공통 기본값 */
|
||||
KakaoSendAdvcVO sendVO = createSendVO(kakaoVO);
|
||||
|
||||
String msgId = idList.get(i);
|
||||
sendVO.setMsgId(msgId);
|
||||
|
||||
// step1
|
||||
// Step 1-1: 값 치환 및 수신번호 셋팅
|
||||
@ -176,6 +177,7 @@ public class KakaoSendUtil {
|
||||
}
|
||||
sendVO.setSubMsgTxt(subMsgTxt);// 실패
|
||||
}
|
||||
sendVO.setSubMsgSendYn(kakaoVO.getSubMsgSendYn());
|
||||
|
||||
|
||||
/*
|
||||
@ -242,21 +244,23 @@ public class KakaoSendUtil {
|
||||
sendVO.setReqDate(DATE_FORMATTER.format(calendar.getTime()));
|
||||
|
||||
|
||||
|
||||
/** @step5 전송 메세지 설정 json파일 만들기*/
|
||||
// 타이틀과 버튼이 있고
|
||||
String msgId = idList.get(i);
|
||||
sendVO.setMsgId(msgId);
|
||||
if(hasTitleOrButtons) {
|
||||
// 버튼과 타이틀에 치환데이터가 있으면 json String을 계속 생성
|
||||
if(needsJsonReplacement) {
|
||||
sharedJsonStr = kakaoApiJsonSave.kakaoApiJsonSave_advc(sendVO, templateDetail);
|
||||
sendVO.setBizJsonName(msgId);
|
||||
sendVO.setJsonStr(sharedJsonStr);
|
||||
} else if (StringUtils.isEmpty(sharedJsonStr)) {
|
||||
// 치환 데이터가 없고 아직 생성되지 않았으면 한 번만 생성
|
||||
sharedJsonStr = kakaoApiJsonSave.kakaoApiJsonSave_advc(sendVO, templateDetail);
|
||||
sendVO.setBizJsonName(idList.get(0));
|
||||
sendVO.setJsonStr(sharedJsonStr);
|
||||
}else {
|
||||
sendVO.setBizJsonName(idList.get(0));
|
||||
}
|
||||
sendVO.setJsonStr(sharedJsonStr);
|
||||
|
||||
}
|
||||
kakaoSendAdvcListVO.add(sendVO);
|
||||
|
||||
@ -302,6 +302,8 @@ public class KakaoVO extends MjonMsgVO{
|
||||
"\n , msgType=[" + getMsgType() + "]" +
|
||||
"\n , userId=[" + userId + "]" +
|
||||
"\n , varListMap=[" + varListMapString + "]" +
|
||||
"\n , befCash=[" + getBefCash() + "]" +
|
||||
"\n , befPoint=[" + getBefPoint() + "]" +
|
||||
"\n ]";
|
||||
}
|
||||
|
||||
|
||||
@ -104,4 +104,8 @@ public class KakaoAlimTalkDAO extends EgovAbstractDAO {
|
||||
public void insertKakaoAtDataJsonInfo_advc(List<KakaoSendAdvcVO> kakaoSendAdvcVOList) {
|
||||
insert("kakaoAlimTalkDAO.insertKakaoAtDataJsonInfo_advc", kakaoSendAdvcVOList);
|
||||
}
|
||||
|
||||
public void insertKakaoGroupDataTb_advc(KakaoSendAdvcVO sendVO) {
|
||||
insert("kakaoAlimTalkDAO.insertKakaoGroupDataTb_advc", sendVO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -926,23 +926,12 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
Map<String, List<KakaoSendAdvcVO>> priceGroupedMessages = kakaoSendAdvcListVO.stream()
|
||||
.collect(Collectors.groupingBy(KakaoSendAdvcVO::getEachPrice));
|
||||
|
||||
// json Str이 있는지 확인
|
||||
Boolean isJsonNotEmpty = StringUtils.isNotEmpty(kakaoSendAdvcListVO.get(0).getJsonStr());
|
||||
// json Str 값이 list에서 다른지 확인
|
||||
Boolean isJsonNameAllSame = false;
|
||||
if(isJsonNotEmpty) {
|
||||
String firstBizJsonName = kakaoSendAdvcListVO.get(0).getBizJsonName();
|
||||
isJsonNameAllSame = kakaoSendAdvcListVO.stream()
|
||||
.allMatch(t -> Objects.equals(t.getBizJsonName(), firstBizJsonName));
|
||||
}
|
||||
|
||||
|
||||
// instTotalCnt : 화면에서 보여줄 총 발송건수
|
||||
int instTotalCnt = 0;
|
||||
List<Map.Entry<String, List<KakaoSendAdvcVO>>> entryList = new ArrayList<>(priceGroupedMessages.entrySet());
|
||||
// 기본 for문으로 반복 카운트를 사용하기 위해 foreach -> for 수정
|
||||
for (int i = 0; i < entryList.size(); i++) {
|
||||
Map.Entry<String, List<KakaoSendAdvcVO>> entry = entryList.get(i);
|
||||
// 대안: entrySet() 직접 사용
|
||||
for (Map.Entry<String, List<KakaoSendAdvcVO>> entry : priceGroupedMessages.entrySet()) {
|
||||
// entry 사용
|
||||
|
||||
List<KakaoSendAdvcVO> groupedMsgList = entry.getValue(); // 해당 가격의 메시지 리스트
|
||||
|
||||
@ -951,14 +940,36 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
|
||||
|
||||
// 발송 데이터 삽입
|
||||
// int instCnt = this.insertKakaoData_advc(groupedMsgList, i, isJsonNotEmpty, isJsonNameAllSame);
|
||||
int instCnt = 6;
|
||||
int instCnt = this.insertKakaoData_advc(groupedMsgList);
|
||||
// int instCnt = 6;
|
||||
|
||||
if(instCnt > 0) {
|
||||
|
||||
instTotalCnt += instCnt;
|
||||
// this.insertMsgGroupDataTb_advc(instCnt, mjonMsgVO, groupedMsgList);
|
||||
this.insertKakaoGroupDataTb_advc(instCnt, kakaoVO, groupedMsgList);
|
||||
|
||||
KakaoSendAdvcVO sendVO = groupedMsgList.get(0);
|
||||
|
||||
/** @groupData 테이블 insert */
|
||||
this.insertKakaoGroupDataTb_advc(instCnt, kakaoVO, sendVO);
|
||||
|
||||
|
||||
/** @biz_kakao_price에 insert (대체문자 환불관련 테이블)*/
|
||||
kakaoVO.setMsgGroupId(sendVO.getMsgGroupId());
|
||||
kakaoVO.setKakaoAtPrice(Float.parseFloat(sendVO.getEachPrice()));
|
||||
kakaoVO.setSmsPrice(Float.parseFloat(sendVO.getSmsPrice()));
|
||||
kakaoVO.setMmsPrice(Float.parseFloat(sendVO.getMmsPrice()));
|
||||
|
||||
kakaoAlimTalkDAO.insertKakaoSendPrice(kakaoVO);
|
||||
|
||||
|
||||
priceAndPoint.insertCashAndPoint(kakaoVO.getUserId()
|
||||
, -Float.parseFloat(sendVO.getTotPrice())
|
||||
// , "SMS 문자 " + groupedMsgList.size() + "건 발송"
|
||||
, "카카오 알림톡 총 "+groupedMsgList.size()+"건 중 " + instCnt + "건 발송"
|
||||
, nextMsgGroupId
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -972,7 +983,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
// 실행 시간 계산 (나노초, 밀리초, 초)
|
||||
System.out.println("메소드 실행 시간 (초): " + Duration.between(start, end).getSeconds() + " s");
|
||||
System.out.println("메소드 실행 시간 (Nano): " + Duration.between(start, end).getNano() + " Nano");
|
||||
kakaoSendAdvcListVO.forEach(t-> log.info(" + t.toString() :: [{}]", t.toString()) );
|
||||
// kakaoSendAdvcListVO.forEach(t-> log.info(" + t.toString() :: [{}]", t.toString()) );
|
||||
|
||||
// idgenMjonMsgGroupId.getNextStringId();
|
||||
|
||||
@ -995,41 +1006,27 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
|
||||
|
||||
|
||||
private void insertKakaoGroupDataTb_advc(int instCnt, KakaoVO kakaoVO, List<KakaoSendAdvcVO> kakaoSendAdvcVOList) {
|
||||
private void insertKakaoGroupDataTb_advc(int instCnt, KakaoVO kakaoVO, KakaoSendAdvcVO sendVO) throws Exception {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
log.info(" + insertKakaoGroupDataTb_advc kakaoVO :: \n[{}]", kakaoVO.toString());;
|
||||
log.info(" + insertKakaoGroupDataTb_advc kakaoSendAdvcVOList :: \n[{}]", kakaoSendAdvcVOList.get(0).toString());
|
||||
// log.info(" + insertKakaoGroupDataTb_advc kakaoVO :: \n[{}]", kakaoVO.toString());;
|
||||
// log.info(" + insertKakaoGroupDataTb_advc kakaoSendAdvcVOList :: \n[{}]", sendVO.toString());
|
||||
|
||||
sendVO.setMsgGroupCnt(Integer.toString(instCnt));
|
||||
sendVO.setReserveYn(kakaoVO.getReserveYn());
|
||||
sendVO.setBefCash(priceAndPoint.getBefCash(sendVO.getUserId()));
|
||||
sendVO.setBefPoint(priceAndPoint.getBefPoint(sendVO.getUserId()));
|
||||
|
||||
/*
|
||||
#msgGroupId#,
|
||||
#userId#,
|
||||
#callFrom#,
|
||||
#smsTxt#, mjonMsgVO.setSmsTxt(kakaoVO.getTemplateContent());
|
||||
// #mmsSubject#,
|
||||
|
||||
#reqDate#,
|
||||
#msgGroupCnt#,
|
||||
// #conectMthd#,
|
||||
#msgType#,
|
||||
// #msgKind#,
|
||||
|
||||
#agentCode#,
|
||||
#eachPrice#,
|
||||
#reserveYn#,
|
||||
#befCash#,
|
||||
#befPoint#,
|
||||
|
||||
// #recommId#,
|
||||
// #fileCnt#,
|
||||
#totPrice#,
|
||||
// #eventYn#,
|
||||
// #delayYn#,
|
||||
Float eachPrice = Float.parseFloat(sendVO.getEachPrice());
|
||||
|
||||
#atDelayYn#,
|
||||
#kakaoSubMagOrgnlTxt#
|
||||
*/
|
||||
Float totPrice = eachPrice * instCnt;
|
||||
sendVO.setTotPrice(String.format("%.1f", totPrice));
|
||||
|
||||
sendVO.setAtDelayYn(kakaoVO.getAtSmishingYn());
|
||||
sendVO.setBizKakaoResendOrgnlTxt(kakaoVO.getSubMsgTxt());
|
||||
sendVO.setBizKakaoResendType(sendVO.getSubMsgType());
|
||||
kakaoAlimTalkDAO.insertKakaoGroupDataTb_advc(sendVO);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1045,7 +1042,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
private int insertKakaoData_advc(List<KakaoSendAdvcVO> kakaoSendAdvcVOList, int parentLoopCount, Boolean isJsonNotEmpty, Boolean isJsonNameAllSame) {
|
||||
private int insertKakaoData_advc(List<KakaoSendAdvcVO> kakaoSendAdvcVOList) {
|
||||
|
||||
|
||||
// 시작 시간 측정
|
||||
@ -1068,7 +1065,6 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
|
||||
|
||||
// 첫 번째 배치에서만 삽입했는지 추적하는 플래그
|
||||
boolean isJsonInserted = false;
|
||||
for (int i = 0; i < totalSize; i += batchSize) {
|
||||
// Batch 시작 시간 측정
|
||||
long batchStartTime = System.currentTimeMillis();
|
||||
@ -1079,15 +1075,14 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
|
||||
// mj_msg_data 테이블 insert
|
||||
int insertedCount = kakaoAlimTalkDAO.insertKakaoAtDataInfo_advc(batchList);
|
||||
if (isJsonNotEmpty) {
|
||||
if (!isJsonNameAllSame) {
|
||||
// BizJsonName이 동일하지 않으면 매번 삽입
|
||||
kakaoAlimTalkDAO.insertKakaoAtDataJsonInfo_advc(batchList);
|
||||
} else if (parentLoopCount==0) {
|
||||
// BizJsonName이 동일하면 첫 번째 배치에서만 삽입
|
||||
kakaoAlimTalkDAO.insertKakaoAtDataJsonInfo_advc(batchList);
|
||||
isJsonInserted = true; // 삽입 완료 플래그 설정
|
||||
}
|
||||
|
||||
/** @kakaoSendUtil.populateSendLists
|
||||
* 하단에서
|
||||
* getJsonStr 데이터 처리 후 활용
|
||||
* */
|
||||
batchList.removeIf(t -> StringUtils.isBlank(t.getJsonStr()));
|
||||
if(batchList.size() > 0) {
|
||||
kakaoAlimTalkDAO.insertKakaoAtDataJsonInfo_advc(batchList);
|
||||
}
|
||||
instCnt += insertedCount;
|
||||
|
||||
@ -1131,7 +1126,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
|
||||
// 사용자 보유 금액 BigDecimal 변환 (HALF_EVEN 적용)
|
||||
BigDecimal befCash = new BigDecimal(userMoney).setScale(2, RoundingMode.HALF_EVEN);
|
||||
|
||||
|
||||
// 총 메시지 금액 계산 (HALF_EVEN 적용)
|
||||
BigDecimal totalEachPrice = kakaoSendAdvcListVO.stream()
|
||||
.map(msg -> new BigDecimal(String.valueOf(msg.getEachPrice()))) // 변환 오류 방지
|
||||
|
||||
@ -120,6 +120,54 @@
|
||||
</iterate>
|
||||
</insert>
|
||||
|
||||
<insert id="kakaoAlimTalkDAO.insertKakaoGroupDataTb_advc" parameterClass="kakaoSendAdvcVO">
|
||||
INSERT INTO MJ_MSG_GROUP_DATA
|
||||
(
|
||||
MSG_GROUP_ID,
|
||||
USER_ID,
|
||||
CALL_FROM,
|
||||
SMS_TXT,
|
||||
|
||||
REQ_DATE,
|
||||
MSG_GROUP_CNT,
|
||||
MSG_TYPE,
|
||||
|
||||
AGENT_CODE,
|
||||
EACH_PRICE,
|
||||
RESERVE_YN,
|
||||
BEF_CASH,
|
||||
BEF_POINT,
|
||||
|
||||
TOT_PRICE,
|
||||
|
||||
AT_DELAY_YN,
|
||||
BIZ_KAKAO_RESEND_ORGNL_TXT,
|
||||
BIZ_KAKAO_RESEND_TYPE
|
||||
)VALUES
|
||||
(
|
||||
#msgGroupId#,
|
||||
#userId#,
|
||||
#callFrom#,
|
||||
#templateContent#,
|
||||
|
||||
#reqDate#,
|
||||
#msgGroupCnt#,
|
||||
#msgType#,
|
||||
|
||||
#agentCode#,
|
||||
#eachPrice#,
|
||||
#reserveYn#,
|
||||
#befCash#,
|
||||
#befPoint#,
|
||||
|
||||
#totPrice#,
|
||||
|
||||
#atDelayYn#,
|
||||
#bizKakaoResendOrgnlTxt#,
|
||||
#bizKakaoResendType#
|
||||
)
|
||||
</insert>
|
||||
|
||||
<insert id="kakaoAlimTalkDAO.insertKakaoSendPrice" parameterClass="kakaoVO">
|
||||
INSERT INTO BIZ_KAKAO_PRICE
|
||||
(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user