이지우 - 알림톡 환불 프로세스 수정 및 친구톡 환불과 통합 작업 중
@c80bf91d8576199f9f3d0d5cc10d960a0c98b355
--- src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/KakaoAlimTalkService.java
... | ... | @@ -31,4 +31,7 @@ |
| 31 | 31 |
|
| 32 | 32 |
StatusResponse insertKakaoAtSandAjax_advc(KakaoVO kakaoVO, HttpServletRequest request) throws Exception; |
| 33 | 33 |
|
| 34 |
+ //카카오(알림톡, 친구톡 통합) 전송 실패 환불리스트 조회 |
|
| 35 |
+ public void selectKakaoSentRefundList() throws Exception; |
|
| 36 |
+ |
|
| 34 | 37 |
} |
--- src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java
... | ... | @@ -58,6 +58,11 @@ |
| 58 | 58 |
return (List<KakaoVO>) list("kakaoAlimTalkDAO.selectKakaoFtSentRefundList");
|
| 59 | 59 |
} |
| 60 | 60 |
|
| 61 |
+ @SuppressWarnings("unchecked")
|
|
| 62 |
+ public List<KakaoVO> selectKakaoSentRefundList() throws Exception{
|
|
| 63 |
+ return (List<KakaoVO>) list("kakaoAlimTalkDAO.selectKakaoSentRefundList");
|
|
| 64 |
+ } |
|
| 65 |
+ |
|
| 61 | 66 |
public KakaoVO selectKakaoAtUmid(KakaoVO kakaoVO) throws Exception{
|
| 62 | 67 |
return (KakaoVO) select("kakaoAlimTalkDAO.selectKakaoAtUmid", kakaoVO);
|
| 63 | 68 |
} |
--- src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
... | ... | @@ -105,6 +105,8 @@ |
| 105 | 105 |
final String RESEND_YN_YES = "Y"; |
| 106 | 106 |
final String SMS_SUCCESS_CODE = "4100"; // SMS 성공 코드 |
| 107 | 107 |
final String MMS_SUCCESS_CODE = "6600"; // MMS 성공 코드 |
| 108 |
+ final String AT_MSG_TYPE = "8"; // MSG 타입 알림톡 |
|
| 109 |
+ final String FT_MSG_TYPE = "9"; // MSG 타입 친구톡 |
|
| 108 | 110 |
|
| 109 | 111 |
//발신프로필 상태값 변경(삭제/복구 기능) |
| 110 | 112 |
@Override |
... | ... | @@ -808,23 +810,19 @@ |
| 808 | 810 |
*/ |
| 809 | 811 |
List<KakaoVO> kakaoAtSentRefundList = kakaoAlimTalkDAO.selectKakaoAtSentRefundList(); |
| 810 | 812 |
|
| 811 |
- for(KakaoVO vo : kakaoAtSentRefundList) {
|
|
| 812 |
- System.out.println(vo.getMsgGroupId() +"________결과 : " +vo.getRsltCode() +" 대체문자 전송 : "+vo.getSubMsgSendYn()); |
|
| 813 |
- if(vo.getRsltCode().equals("7000")) {
|
|
| 814 |
- kakaoAlimTalkDAO.updateKakaoAtSend(vo); |
|
| 815 |
- }else if(vo.getSubMsgSendYn().equals("Y")) {
|
|
| 816 |
- KakaoVO info = kakaoAlimTalkDAO.selectKakaoAtUmid(vo); |
|
| 813 |
+ for(KakaoVO kakaoVO : kakaoAtSentRefundList) {
|
|
| 814 |
+ |
|
| 815 |
+ if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//알림톡 발송 성공시
|
|
| 817 | 816 |
|
| 818 |
- System.out.println("대체문자 전송 : " + info.getBizUmid());
|
|
| 819 |
- if (info.getBizUmid() != null) {
|
|
| 820 |
- kakaoAlimTalkDAO.updateKakaoAtSubMsgSend(vo); |
|
| 821 |
- }else {
|
|
| 822 |
- kakaoAlimTalkDAO.updateKakaoAtNotSend(vo); |
|
| 823 |
- } |
|
| 817 |
+ processKakaoSendCharge(kakaoVO); |
|
| 824 | 818 |
|
| 819 |
+ }else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
|
| 820 |
+ //알림톡 발송 실패 했고 , 대체문자 발송 했을 경우 |
|
| 821 |
+ handleAlternativeMessageScenario(kakaoVO); |
|
| 825 | 822 |
}else {
|
| 826 |
- kakaoAlimTalkDAO.updateKakaoAtNotSend(vo); |
|
| 823 |
+ handleRefund(kakaoVO, "카카오 알림톡 전송 실패로 인한 결재 금액 환불"); |
|
| 827 | 824 |
} |
| 825 |
+ |
|
| 828 | 826 |
} |
| 829 | 827 |
} |
| 830 | 828 |
|
... | ... | @@ -842,7 +840,32 @@ |
| 842 | 840 |
|
| 843 | 841 |
if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//친구톡 발송 성공시
|
| 844 | 842 |
|
| 845 |
- processFtSendCharge(kakaoVO); |
|
| 843 |
+ processKakaoSendCharge(kakaoVO); |
|
| 844 |
+ |
|
| 845 |
+ }else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
|
| 846 |
+ //친구톡 발송 실패 했고, 대체문자 발송 했을 경우 |
|
| 847 |
+ handleAlternativeMessageScenario(kakaoVO); |
|
| 848 |
+ |
|
| 849 |
+ }else {
|
|
| 850 |
+ handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불"); |
|
| 851 |
+ } |
|
| 852 |
+ } |
|
| 853 |
+ } |
|
| 854 |
+ |
|
| 855 |
+ /** |
|
| 856 |
+ * @ 카카오 알림톡, 친구톡 통합 환불 |
|
| 857 |
+ */ |
|
| 858 |
+ @Override |
|
| 859 |
+ public void selectKakaoSentRefundList() throws Exception {
|
|
| 860 |
+ |
|
| 861 |
+ List<KakaoVO> kakaoFtSentRefundList = kakaoAlimTalkDAO.selectKakaoSentRefundList(); |
|
| 862 |
+ |
|
| 863 |
+ for(KakaoVO kakaoVO : kakaoFtSentRefundList) {
|
|
| 864 |
+ System.out.println(kakaoVO.getMsgGroupId() +"________결과 : " +kakaoVO.getRsltCode() +" 대체문자 전송 : "+kakaoVO.getSubMsgSendYn()); |
|
| 865 |
+ |
|
| 866 |
+ if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//친구톡 발송 성공시
|
|
| 867 |
+ |
|
| 868 |
+ processKakaoSendCharge(kakaoVO); |
|
| 846 | 869 |
|
| 847 | 870 |
}else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
| 848 | 871 |
//친구톡 발송 실패 했고, 대체문자 발송 했을 경우 |
... | ... | @@ -855,7 +878,7 @@ |
| 855 | 878 |
} |
| 856 | 879 |
|
| 857 | 880 |
|
| 858 |
- private void processFtSendCharge(KakaoVO kakaoVO) throws Exception {
|
|
| 881 |
+ private void processKakaoSendCharge(KakaoVO kakaoVO) throws Exception {
|
|
| 859 | 882 |
|
| 860 | 883 |
|
| 861 | 884 |
if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
... | ... | @@ -863,14 +886,21 @@ |
| 863 | 886 |
BizKakaoPriceVO bizKakaoPriceVO = mjonPayDAO.selectBizKakaoPrice(kakaoVO.getMsgGroupId()); |
| 864 | 887 |
|
| 865 | 888 |
BigDecimal sendPrice = null; |
| 866 |
- if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){
|
|
| 867 |
- sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice()); |
|
| 868 |
- }else if("I".equals(kakaoVO.getBizKakaoImageType())){
|
|
| 869 |
- sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtImgPrice()); |
|
| 870 |
- }else if("W".equals(kakaoVO.getBizKakaoImageType())){
|
|
| 871 |
- sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice()); |
|
| 889 |
+ String kakaoType = ""; |
|
| 890 |
+ |
|
| 891 |
+ if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
|
|
| 892 |
+ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoAtPrice()); |
|
| 893 |
+ kakaoType = "알림톡"; |
|
| 894 |
+ }else {
|
|
| 895 |
+ if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){
|
|
| 896 |
+ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice()); |
|
| 897 |
+ }else if("I".equals(kakaoVO.getBizKakaoImageType())){
|
|
| 898 |
+ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtImgPrice()); |
|
| 899 |
+ }else if("W".equals(kakaoVO.getBizKakaoImageType())){
|
|
| 900 |
+ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice()); |
|
| 901 |
+ } |
|
| 902 |
+ kakaoType = "친구톡"; |
|
| 872 | 903 |
} |
| 873 |
- |
|
| 874 | 904 |
// 예시: 각 건당 가격이 이미 String 형태라면 변환 |
| 875 | 905 |
BigDecimal eachPrice = new BigDecimal(kakaoVO.getEachPrice()); |
| 876 | 906 |
|
... | ... | @@ -881,8 +911,7 @@ |
| 881 | 911 |
if (diffPrice.compareTo(BigDecimal.ZERO) > 0) {
|
| 882 | 912 |
String result = diffPrice.toString(); |
| 883 | 913 |
kakaoVO.setEachPrice(result); |
| 884 |
- |
|
| 885 |
- handleRefund(kakaoVO, "카카오 친구톡 전송으로 인한 결재 차액 환불"); |
|
| 914 |
+ handleRefund(kakaoVO, "카카오 " + kakaoType + " 전송으로 인한 결재 차액 환불"); |
|
| 886 | 915 |
} |
| 887 | 916 |
|
| 888 | 917 |
}else {
|
... | ... | @@ -897,6 +926,13 @@ |
| 897 | 926 |
KakaoVO bizLogVO = kakaoAlimTalkDAO.selectBizLog(kakaoVO.getBizUmid()); |
| 898 | 927 |
log.info("대체문자 전송 UMID: {}", kakaoVO.getBizUmid());
|
| 899 | 928 |
|
| 929 |
+ // 알림톡 or 친구톡 구분 |
|
| 930 |
+ String kakaoType = ""; |
|
| 931 |
+ if(AT_MSG_TYPE.equals(kakaoVO.getMsgType())){
|
|
| 932 |
+ kakaoType = "알림톡"; |
|
| 933 |
+ }else {
|
|
| 934 |
+ kakaoType = "친구톡"; |
|
| 935 |
+ } |
|
| 900 | 936 |
// 대체문자가 성공적으로 발송되었는지 확인 (SMS 또는 MMS 성공) |
| 901 | 937 |
boolean isAlternativeMessageSuccessful = false; |
| 902 | 938 |
if (bizLogVO != null && StringUtils.isNotEmpty(bizLogVO.getBizLogCallStatus())) {
|
... | ... | @@ -914,7 +950,7 @@ |
| 914 | 950 |
mjonMsgDAO.updateRefundY(kakaoVO); |
| 915 | 951 |
} else {
|
| 916 | 952 |
// 대체문자 발송 실패 된 경우 (친구톡 비용 환불 필요) |
| 917 |
- handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불"); |
|
| 953 |
+ handleRefund(kakaoVO, "카카오 " + kakaoType + " 전송 실패로 인한 결재 금액 환불"); |
|
| 918 | 954 |
} |
| 919 | 955 |
} |
| 920 | 956 |
|
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
... | ... | @@ -1540,4 +1540,24 @@ |
| 1540 | 1540 |
|
| 1541 | 1541 |
return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView_tmp"; |
| 1542 | 1542 |
} |
| 1543 |
+ |
|
| 1544 |
+ /** |
|
| 1545 |
+ * @Method Name : kakaoMsgSendRefundTestAjax |
|
| 1546 |
+ * @작성일 : 2025. 8. 6. |
|
| 1547 |
+ * @작성자 : 이지우 |
|
| 1548 |
+ * @Method 설명 : 카카오 친구톡 전송 환불 스케줄러 서비스 테스트 |
|
| 1549 |
+ */ |
|
| 1550 |
+ @RequestMapping(value= {"/web/mjon/kakao/alimtalk/kakaoMsgSendRefundTestAjax.do"})
|
|
| 1551 |
+ public ModelAndView kakaoMsgSendRefundTestAjax(ModelMap model |
|
| 1552 |
+ , HttpServletRequest request |
|
| 1553 |
+ , @ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception {
|
|
| 1554 |
+ |
|
| 1555 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 1556 |
+ modelAndView.setViewName("jsonView");
|
|
| 1557 |
+ |
|
| 1558 |
+ kakaoAlimTalkService.selectKakaoSentRefundList(); |
|
| 1559 |
+ |
|
| 1560 |
+ modelAndView.addObject("result", "success");
|
|
| 1561 |
+ return modelAndView; |
|
| 1562 |
+ } |
|
| 1543 | 1563 |
} |
--- src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_AT_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/kakao/Kakao_AT_SQL_Mysql.xml
... | ... | @@ -205,11 +205,13 @@ |
| 205 | 205 |
) |
| 206 | 206 |
</insert> |
| 207 | 207 |
|
| 208 |
- <select id="kakaoAlimTalkDAO.selectKakaoAtSentRefundList" resultClass="kakaoVO"> |
|
| 208 |
+ <select id="kakaoAlimTalkDAO.selectKakaoSentRefundList" resultClass="kakaoVO"> |
|
| 209 | 209 |
SELECT |
| 210 | 210 |
MMD.USER_ID AS userId |
| 211 | 211 |
, MMD.MSG_GROUP_ID AS msgGroupId |
| 212 | 212 |
, MMD.MSG_SEQ AS msgSeq |
| 213 |
+ , MMGD.BIZ_KAKAO_IMAGE_TYPE AS bizKakaoImageType |
|
| 214 |
+ , MMGD.EACH_PRICE AS eachPrice |
|
| 213 | 215 |
, MMD.USERDATA AS userData |
| 214 | 216 |
, MMD.REFUND_YN AS refundYn |
| 215 | 217 |
, MMD.RSLT_CODE AS rsltCode |
... | ... | @@ -219,11 +221,47 @@ |
| 219 | 221 |
, DATE_FORMAT(MMD.RSLT_DATE,'%Y-%m-%d %T') AS rsltDate |
| 220 | 222 |
, MMD.BIZ_KAKAO_RESEND_YN AS subMsgSendYn |
| 221 | 223 |
, MMD.BIZ_KAKAO_RESEND_TYPE AS subMsgType |
| 222 |
- |
|
| 224 |
+ , MMD.FILE_CNT AS fileCnt |
|
| 225 |
+ , MMD.BIZ_UMID AS bizUmid |
|
| 226 |
+ , MMD.MSG_TYPE AS msgType |
|
| 223 | 227 |
FROM |
| 224 | 228 |
MJ_MSG_DATA MMD |
| 225 | 229 |
INNER JOIN LETTNGNRLMBER MB |
| 226 | 230 |
ON MMD.USER_ID = MB.MBER_ID |
| 231 |
+ INNER JOIN mj_msg_group_data MMGD |
|
| 232 |
+ on MMD.MSG_GROUP_ID = MMGD.MSG_GROUP_ID |
|
| 233 |
+ WHERE 1=1 |
|
| 234 |
+ AND MMD.CUR_STATE = '3' |
|
| 235 |
+ AND MMD.REFUND_YN = 'N' |
|
| 236 |
+ AND MMD.RESERVE_C_YN = 'N' |
|
| 237 |
+ AND MMD.MSG_TYPE IN(8, 9) |
|
| 238 |
+ </select> |
|
| 239 |
+ |
|
| 240 |
+ <select id="kakaoAlimTalkDAO.selectKakaoAtSentRefundList" resultClass="kakaoVO"> |
|
| 241 |
+ SELECT |
|
| 242 |
+ MMD.USER_ID AS userId |
|
| 243 |
+ , MMD.MSG_GROUP_ID AS msgGroupId |
|
| 244 |
+ , MMD.MSG_SEQ AS msgSeq |
|
| 245 |
+ , MMGD.BIZ_KAKAO_IMAGE_TYPE AS bizKakaoImageType |
|
| 246 |
+ , MMGD.EACH_PRICE AS eachPrice |
|
| 247 |
+ , MMD.USERDATA AS userData |
|
| 248 |
+ , MMD.REFUND_YN AS refundYn |
|
| 249 |
+ , MMD.RSLT_CODE AS rsltCode |
|
| 250 |
+ , MMD.RSLT_CODE2 AS rsltCode2 |
|
| 251 |
+ , MMD.AGENT_CODE AS agentCode |
|
| 252 |
+ , DATE_FORMAT(MMD.SENT_DATE,'%Y-%m-%d %T') AS sentDate |
|
| 253 |
+ , DATE_FORMAT(MMD.RSLT_DATE,'%Y-%m-%d %T') AS rsltDate |
|
| 254 |
+ , MMD.BIZ_KAKAO_RESEND_YN AS subMsgSendYn |
|
| 255 |
+ , MMD.BIZ_KAKAO_RESEND_TYPE AS subMsgType |
|
| 256 |
+ , MMD.FILE_CNT AS fileCnt |
|
| 257 |
+ , MMD.BIZ_UMID AS bizUmid |
|
| 258 |
+ , MMD.MSG_TYPE AS msgType |
|
| 259 |
+ FROM |
|
| 260 |
+ MJ_MSG_DATA MMD |
|
| 261 |
+ INNER JOIN LETTNGNRLMBER MB |
|
| 262 |
+ ON MMD.USER_ID = MB.MBER_ID |
|
| 263 |
+ INNER JOIN mj_msg_group_data MMGD |
|
| 264 |
+ on MMD.MSG_GROUP_ID = MMGD.MSG_GROUP_ID |
|
| 227 | 265 |
WHERE 1=1 |
| 228 | 266 |
AND MMD.CUR_STATE = '3' |
| 229 | 267 |
AND MMD.REFUND_YN = 'N' |
... | ... | @@ -249,6 +287,7 @@ |
| 249 | 287 |
, MMD.BIZ_KAKAO_RESEND_TYPE AS subMsgType |
| 250 | 288 |
, MMD.FILE_CNT AS fileCnt |
| 251 | 289 |
, MMD.BIZ_UMID AS bizUmid |
| 290 |
+ , MMD.MSG_TYPE AS msgType |
|
| 252 | 291 |
FROM |
| 253 | 292 |
MJ_MSG_DATA MMD |
| 254 | 293 |
INNER JOIN LETTNGNRLMBER MB |
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?