이지우 - 알림톡 환불 프로세스 수정 및 친구톡 환불과 통합 작업 중
This commit is contained in:
parent
d1e1244cd5
commit
c80bf91d85
@ -31,4 +31,7 @@ public interface KakaoAlimTalkService {
|
||||
|
||||
StatusResponse insertKakaoAtSandAjax_advc(KakaoVO kakaoVO, HttpServletRequest request) throws Exception;
|
||||
|
||||
//카카오(알림톡, 친구톡 통합) 전송 실패 환불리스트 조회
|
||||
public void selectKakaoSentRefundList() throws Exception;
|
||||
|
||||
}
|
||||
|
||||
@ -58,6 +58,11 @@ public class KakaoAlimTalkDAO extends EgovAbstractDAO {
|
||||
return (List<KakaoVO>) list("kakaoAlimTalkDAO.selectKakaoFtSentRefundList");
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<KakaoVO> selectKakaoSentRefundList() throws Exception{
|
||||
return (List<KakaoVO>) list("kakaoAlimTalkDAO.selectKakaoSentRefundList");
|
||||
}
|
||||
|
||||
public KakaoVO selectKakaoAtUmid(KakaoVO kakaoVO) throws Exception{
|
||||
return (KakaoVO) select("kakaoAlimTalkDAO.selectKakaoAtUmid", kakaoVO);
|
||||
}
|
||||
|
||||
@ -105,6 +105,8 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
final String RESEND_YN_YES = "Y";
|
||||
final String SMS_SUCCESS_CODE = "4100"; // SMS 성공 코드
|
||||
final String MMS_SUCCESS_CODE = "6600"; // MMS 성공 코드
|
||||
final String AT_MSG_TYPE = "8"; // MSG 타입 알림톡
|
||||
final String FT_MSG_TYPE = "9"; // MSG 타입 친구톡
|
||||
|
||||
//발신프로필 상태값 변경(삭제/복구 기능)
|
||||
@Override
|
||||
@ -808,23 +810,19 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
*/
|
||||
List<KakaoVO> kakaoAtSentRefundList = kakaoAlimTalkDAO.selectKakaoAtSentRefundList();
|
||||
|
||||
for(KakaoVO vo : kakaoAtSentRefundList) {
|
||||
System.out.println(vo.getMsgGroupId() +"________결과 : " +vo.getRsltCode() +" 대체문자 전송 : "+vo.getSubMsgSendYn());
|
||||
if(vo.getRsltCode().equals("7000")) {
|
||||
kakaoAlimTalkDAO.updateKakaoAtSend(vo);
|
||||
}else if(vo.getSubMsgSendYn().equals("Y")) {
|
||||
KakaoVO info = kakaoAlimTalkDAO.selectKakaoAtUmid(vo);
|
||||
for(KakaoVO kakaoVO : kakaoAtSentRefundList) {
|
||||
|
||||
if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//알림톡 발송 성공시
|
||||
|
||||
System.out.println("대체문자 전송 : " + info.getBizUmid());
|
||||
if (info.getBizUmid() != null) {
|
||||
kakaoAlimTalkDAO.updateKakaoAtSubMsgSend(vo);
|
||||
}else {
|
||||
kakaoAlimTalkDAO.updateKakaoAtNotSend(vo);
|
||||
}
|
||||
processKakaoSendCharge(kakaoVO);
|
||||
|
||||
}else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
||||
//알림톡 발송 실패 했고 , 대체문자 발송 했을 경우
|
||||
handleAlternativeMessageScenario(kakaoVO);
|
||||
}else {
|
||||
kakaoAlimTalkDAO.updateKakaoAtNotSend(vo);
|
||||
handleRefund(kakaoVO, "카카오 알림톡 전송 실패로 인한 결재 금액 환불");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -842,7 +840,32 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
|
||||
if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//친구톡 발송 성공시
|
||||
|
||||
processFtSendCharge(kakaoVO);
|
||||
processKakaoSendCharge(kakaoVO);
|
||||
|
||||
}else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
||||
//친구톡 발송 실패 했고, 대체문자 발송 했을 경우
|
||||
handleAlternativeMessageScenario(kakaoVO);
|
||||
|
||||
}else {
|
||||
handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @ 카카오 알림톡, 친구톡 통합 환불
|
||||
*/
|
||||
@Override
|
||||
public void selectKakaoSentRefundList() throws Exception {
|
||||
|
||||
List<KakaoVO> kakaoFtSentRefundList = kakaoAlimTalkDAO.selectKakaoSentRefundList();
|
||||
|
||||
for(KakaoVO kakaoVO : kakaoFtSentRefundList) {
|
||||
System.out.println(kakaoVO.getMsgGroupId() +"________결과 : " +kakaoVO.getRsltCode() +" 대체문자 전송 : "+kakaoVO.getSubMsgSendYn());
|
||||
|
||||
if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//친구톡 발송 성공시
|
||||
|
||||
processKakaoSendCharge(kakaoVO);
|
||||
|
||||
}else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
||||
//친구톡 발송 실패 했고, 대체문자 발송 했을 경우
|
||||
@ -855,7 +878,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
}
|
||||
|
||||
|
||||
private void processFtSendCharge(KakaoVO kakaoVO) throws Exception {
|
||||
private void processKakaoSendCharge(KakaoVO kakaoVO) throws Exception {
|
||||
|
||||
|
||||
if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
||||
@ -863,14 +886,21 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
BizKakaoPriceVO bizKakaoPriceVO = mjonPayDAO.selectBizKakaoPrice(kakaoVO.getMsgGroupId());
|
||||
|
||||
BigDecimal sendPrice = null;
|
||||
if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){
|
||||
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice());
|
||||
}else if("I".equals(kakaoVO.getBizKakaoImageType())){
|
||||
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtImgPrice());
|
||||
}else if("W".equals(kakaoVO.getBizKakaoImageType())){
|
||||
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice());
|
||||
String kakaoType = "";
|
||||
|
||||
if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
|
||||
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoAtPrice());
|
||||
kakaoType = "알림톡";
|
||||
}else {
|
||||
if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){
|
||||
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice());
|
||||
}else if("I".equals(kakaoVO.getBizKakaoImageType())){
|
||||
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtImgPrice());
|
||||
}else if("W".equals(kakaoVO.getBizKakaoImageType())){
|
||||
sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice());
|
||||
}
|
||||
kakaoType = "친구톡";
|
||||
}
|
||||
|
||||
// 예시: 각 건당 가격이 이미 String 형태라면 변환
|
||||
BigDecimal eachPrice = new BigDecimal(kakaoVO.getEachPrice());
|
||||
|
||||
@ -881,8 +911,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
if (diffPrice.compareTo(BigDecimal.ZERO) > 0) {
|
||||
String result = diffPrice.toString();
|
||||
kakaoVO.setEachPrice(result);
|
||||
|
||||
handleRefund(kakaoVO, "카카오 친구톡 전송으로 인한 결재 차액 환불");
|
||||
handleRefund(kakaoVO, "카카오 " + kakaoType + " 전송으로 인한 결재 차액 환불");
|
||||
}
|
||||
|
||||
}else {
|
||||
@ -897,6 +926,13 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
KakaoVO bizLogVO = kakaoAlimTalkDAO.selectBizLog(kakaoVO.getBizUmid());
|
||||
log.info("대체문자 전송 UMID: {}", kakaoVO.getBizUmid());
|
||||
|
||||
// 알림톡 or 친구톡 구분
|
||||
String kakaoType = "";
|
||||
if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
|
||||
kakaoType = "알림톡";
|
||||
}else {
|
||||
kakaoType = "친구톡";
|
||||
}
|
||||
// 대체문자가 성공적으로 발송되었는지 확인 (SMS 또는 MMS 성공)
|
||||
boolean isAlternativeMessageSuccessful = false;
|
||||
if (bizLogVO != null && StringUtils.isNotEmpty(bizLogVO.getBizLogCallStatus())) {
|
||||
@ -914,7 +950,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
|
||||
mjonMsgDAO.updateRefundY(kakaoVO);
|
||||
} else {
|
||||
// 대체문자 발송 실패 된 경우 (친구톡 비용 환불 필요)
|
||||
handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불");
|
||||
handleRefund(kakaoVO, "카카오 " + kakaoType + " 전송 실패로 인한 결재 금액 환불");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1540,4 +1540,24 @@ public class KakaoAlimTalkSendController {
|
||||
|
||||
return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView_tmp";
|
||||
}
|
||||
|
||||
/**
|
||||
* @Method Name : kakaoMsgSendRefundTestAjax
|
||||
* @작성일 : 2025. 8. 6.
|
||||
* @작성자 : 이지우
|
||||
* @Method 설명 : 카카오 친구톡 전송 환불 스케줄러 서비스 테스트
|
||||
*/
|
||||
@RequestMapping(value= {"/web/mjon/kakao/alimtalk/kakaoMsgSendRefundTestAjax.do"})
|
||||
public ModelAndView kakaoMsgSendRefundTestAjax(ModelMap model
|
||||
, HttpServletRequest request
|
||||
, @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
kakaoAlimTalkService.selectKakaoSentRefundList();
|
||||
|
||||
modelAndView.addObject("result", "success");
|
||||
return modelAndView;
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,11 +205,13 @@
|
||||
)
|
||||
</insert>
|
||||
|
||||
<select id="kakaoAlimTalkDAO.selectKakaoAtSentRefundList" resultClass="kakaoVO">
|
||||
<select id="kakaoAlimTalkDAO.selectKakaoSentRefundList" resultClass="kakaoVO">
|
||||
SELECT
|
||||
MMD.USER_ID AS userId
|
||||
, MMD.MSG_GROUP_ID AS msgGroupId
|
||||
, MMD.MSG_SEQ AS msgSeq
|
||||
, MMGD.BIZ_KAKAO_IMAGE_TYPE AS bizKakaoImageType
|
||||
, MMGD.EACH_PRICE AS eachPrice
|
||||
, MMD.USERDATA AS userData
|
||||
, MMD.REFUND_YN AS refundYn
|
||||
, MMD.RSLT_CODE AS rsltCode
|
||||
@ -219,11 +221,47 @@
|
||||
, DATE_FORMAT(MMD.RSLT_DATE,'%Y-%m-%d %T') AS rsltDate
|
||||
, MMD.BIZ_KAKAO_RESEND_YN AS subMsgSendYn
|
||||
, MMD.BIZ_KAKAO_RESEND_TYPE AS subMsgType
|
||||
|
||||
, MMD.FILE_CNT AS fileCnt
|
||||
, MMD.BIZ_UMID AS bizUmid
|
||||
, MMD.MSG_TYPE AS msgType
|
||||
FROM
|
||||
MJ_MSG_DATA MMD
|
||||
INNER JOIN LETTNGNRLMBER MB
|
||||
ON MMD.USER_ID = MB.MBER_ID
|
||||
INNER JOIN mj_msg_group_data MMGD
|
||||
on MMD.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
|
||||
WHERE 1=1
|
||||
AND MMD.CUR_STATE = '3'
|
||||
AND MMD.REFUND_YN = 'N'
|
||||
AND MMD.RESERVE_C_YN = 'N'
|
||||
AND MMD.MSG_TYPE IN(8, 9)
|
||||
</select>
|
||||
|
||||
<select id="kakaoAlimTalkDAO.selectKakaoAtSentRefundList" resultClass="kakaoVO">
|
||||
SELECT
|
||||
MMD.USER_ID AS userId
|
||||
, MMD.MSG_GROUP_ID AS msgGroupId
|
||||
, MMD.MSG_SEQ AS msgSeq
|
||||
, MMGD.BIZ_KAKAO_IMAGE_TYPE AS bizKakaoImageType
|
||||
, MMGD.EACH_PRICE AS eachPrice
|
||||
, MMD.USERDATA AS userData
|
||||
, MMD.REFUND_YN AS refundYn
|
||||
, MMD.RSLT_CODE AS rsltCode
|
||||
, MMD.RSLT_CODE2 AS rsltCode2
|
||||
, MMD.AGENT_CODE AS agentCode
|
||||
, DATE_FORMAT(MMD.SENT_DATE,'%Y-%m-%d %T') AS sentDate
|
||||
, DATE_FORMAT(MMD.RSLT_DATE,'%Y-%m-%d %T') AS rsltDate
|
||||
, MMD.BIZ_KAKAO_RESEND_YN AS subMsgSendYn
|
||||
, MMD.BIZ_KAKAO_RESEND_TYPE AS subMsgType
|
||||
, MMD.FILE_CNT AS fileCnt
|
||||
, MMD.BIZ_UMID AS bizUmid
|
||||
, MMD.MSG_TYPE AS msgType
|
||||
FROM
|
||||
MJ_MSG_DATA MMD
|
||||
INNER JOIN LETTNGNRLMBER MB
|
||||
ON MMD.USER_ID = MB.MBER_ID
|
||||
INNER JOIN mj_msg_group_data MMGD
|
||||
on MMD.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
|
||||
WHERE 1=1
|
||||
AND MMD.CUR_STATE = '3'
|
||||
AND MMD.REFUND_YN = 'N'
|
||||
@ -249,6 +287,7 @@
|
||||
, MMD.BIZ_KAKAO_RESEND_TYPE AS subMsgType
|
||||
, MMD.FILE_CNT AS fileCnt
|
||||
, MMD.BIZ_UMID AS bizUmid
|
||||
, MMD.MSG_TYPE AS msgType
|
||||
FROM
|
||||
MJ_MSG_DATA MMD
|
||||
INNER JOIN LETTNGNRLMBER MB
|
||||
|
||||
Loading…
Reference in New Issue
Block a user