+++ src/main/java/itn/let/kakao/kakaoComm/BizKakaoPriceVO.java
... | ... | @@ -0,0 +1,34 @@ |
| 1 | +package itn.let.kakao.kakaoComm; | |
| 2 | + | |
| 3 | +import java.math.BigDecimal; | |
| 4 | + | |
| 5 | +import lombok.AllArgsConstructor; | |
| 6 | +import lombok.Getter; | |
| 7 | +import lombok.NoArgsConstructor; | |
| 8 | +import lombok.Setter; | |
| 9 | +import lombok.ToString; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * @ BIZ_KAKAO_PRICE 테이블 관련 | |
| 13 | + */ | |
| 14 | +@Getter | |
| 15 | +@Setter | |
| 16 | +@NoArgsConstructor | |
| 17 | +@AllArgsConstructor | |
| 18 | +@ToString | |
| 19 | +public class BizKakaoPriceVO { | |
| 20 | + | |
| 21 | + private Long bizKakaoPriceId; | |
| 22 | + | |
| 23 | + private String bizKakaoAtPrice; // 알림톡 단가 | |
| 24 | + private String bizKakaoFtPrice; // 친구톡 단가 | |
| 25 | + private String bizKakaoFtImgPrice; // 친구톡 이미지 단가 | |
| 26 | + private String bizKakaoFtWideImgPrice; // 친구톡 와이드 이미지 단가 | |
| 27 | + private String bizSmsPrice; // SMS 단가 | |
| 28 | + private String bizMmsPrice; // MMS 단가 | |
| 29 | + | |
| 30 | + private String msgGroupId; // 메시지 그룹 ID | |
| 31 | + | |
| 32 | + | |
| 33 | + // getters and setters 생략 | |
| 34 | +}(No newline at end of file) |
--- src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkDAO.java
... | ... | @@ -108,4 +108,9 @@ |
| 108 | 108 |
public void insertKakaoGroupDataTb_advc(KakaoSendAdvcVO sendVO) {
|
| 109 | 109 |
insert("kakaoAlimTalkDAO.insertKakaoGroupDataTb_advc", sendVO);
|
| 110 | 110 |
} |
| 111 |
+ |
|
| 112 |
+ public KakaoVO selectBizLog(String bizUmid) {
|
|
| 113 |
+ return (KakaoVO) select("kakaoAlimTalkDAO.selectBizLog", bizUmid);
|
|
| 114 |
+// return (KakaoVO) select("kakaoAlimTalkDAO.selectKakaoAtUmid", bizUmid);
|
|
| 115 |
+ } |
|
| 111 | 116 |
} |
--- src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/service/impl/KakaoAlimTalkServiceImpl.java
... | ... | @@ -29,6 +29,7 @@ |
| 29 | 29 |
import itn.com.cmm.LoginVO; |
| 30 | 30 |
import itn.com.cmm.MjonMsgSendVO; |
| 31 | 31 |
import itn.com.utl.fcc.service.EgovStringUtil; |
| 32 |
+import itn.let.kakao.kakaoComm.BizKakaoPriceVO; |
|
| 32 | 33 |
import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; |
| 33 | 34 |
import itn.let.kakao.kakaoComm.KakaoSendUtil; |
| 34 | 35 |
import itn.let.kakao.kakaoComm.KakaoVO; |
... | ... | @@ -45,6 +46,7 @@ |
| 45 | 46 |
import itn.let.mjo.msgholiday.service.impl.MsgHolidayDAO; |
| 46 | 47 |
import itn.let.mjo.pay.service.MjonPayService; |
| 47 | 48 |
import itn.let.mjo.pay.service.MjonPayVO; |
| 49 |
+import itn.let.mjo.pay.service.impl.MjonPayDAO; |
|
| 48 | 50 |
import itn.let.module.base.PriceAndPoint; |
| 49 | 51 |
import itn.let.sym.site.service.JoinSettingVO; |
| 50 | 52 |
import itn.let.sym.site.service.impl.SiteManagerDAO; |
... | ... | @@ -86,6 +88,9 @@ |
| 86 | 88 |
/** userManageService */ |
| 87 | 89 |
@Resource(name = "userManageService") |
| 88 | 90 |
private EgovUserManageService userManageService; |
| 91 |
+ |
|
| 92 |
+ @Autowired |
|
| 93 |
+ private MjonPayDAO mjonPayDAO; |
|
| 89 | 94 |
|
| 90 | 95 |
@Autowired |
| 91 | 96 |
KakaoSendUtil kakaoSendUtil; |
... | ... | @@ -95,6 +100,11 @@ |
| 95 | 100 |
|
| 96 | 101 |
@Autowired |
| 97 | 102 |
private PriceAndPoint priceAndPoint; |
| 103 |
+ |
|
| 104 |
+ final String KAKAO_SUCCESS_CODE = "7000"; |
|
| 105 |
+ final String RESEND_YN_YES = "Y"; |
|
| 106 |
+ final String SMS_SUCCESS_CODE = "4100"; // SMS 성공 코드 |
|
| 107 |
+ final String MMS_SUCCESS_CODE = "6600"; // MMS 성공 코드 |
|
| 98 | 108 |
|
| 99 | 109 |
//발신프로필 상태값 변경(삭제/복구 기능) |
| 100 | 110 |
@Override |
... | ... | @@ -833,32 +843,98 @@ |
| 833 | 843 |
*/ |
| 834 | 844 |
List<KakaoVO> kakaoFtSentRefundList = kakaoAlimTalkDAO.selectKakaoFtSentRefundList(); |
| 835 | 845 |
|
| 836 |
- for(KakaoVO vo : kakaoFtSentRefundList) {
|
|
| 837 |
- System.out.println(vo.getMsgGroupId() +"________결과 : " +vo.getRsltCode() +" 대체문자 전송 : "+vo.getSubMsgSendYn()); |
|
| 846 |
+ for(KakaoVO kakaoVO : kakaoFtSentRefundList) {
|
|
| 847 |
+ System.out.println(kakaoVO.getMsgGroupId() +"________결과 : " +kakaoVO.getRsltCode() +" 대체문자 전송 : "+kakaoVO.getSubMsgSendYn()); |
|
| 838 | 848 |
|
| 839 |
- if("7000".equals(vo.getRsltCode())) {//친구톡 발송 성공시
|
|
| 849 |
+ if(KAKAO_SUCCESS_CODE.equals(kakaoVO.getRsltCode())) {//친구톡 발송 성공시
|
|
| 840 | 850 |
|
| 841 |
- kakaoAlimTalkDAO.updateKakaoFtSend(vo); |
|
| 851 |
+ processFtSendCharge(kakaoVO); |
|
| 842 | 852 |
|
| 843 |
- }else if("Y".equals(vo.getSubMsgSendYn())) {//친구톡 발송 실패 했을 경우
|
|
| 844 |
- |
|
| 845 |
- //대체문자 발송 UMID 번호 조회 - 알림톡 쿼리 동일하게 사용 |
|
| 846 |
- KakaoVO info = kakaoAlimTalkDAO.selectKakaoAtUmid(vo); |
|
| 847 |
- |
|
| 848 |
- System.out.println("대체문자 전송 : " + info.getBizUmid());
|
|
| 849 |
- |
|
| 850 |
-// if (info.getBizUmid() != null) {//대체문자 발송 완료인 경우
|
|
| 851 |
- if (StringUtils.isNotEmpty(info.getBizUmid())) {//대체문자 발송 완료인 경우
|
|
| 852 |
- kakaoAlimTalkDAO.updateKakaoFtSubMsgSend(vo); |
|
| 853 |
- }else {
|
|
| 854 |
- kakaoAlimTalkDAO.updateKakaoFtNotSend(vo); |
|
| 855 |
- } |
|
| 853 |
+ }else if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
|
| 854 |
+ //친구톡 발송 실패 했고, 대체문자 발송 했을 경우 |
|
| 855 |
+ handleAlternativeMessageScenario(kakaoVO); |
|
| 856 | 856 |
|
| 857 | 857 |
}else {
|
| 858 |
- kakaoAlimTalkDAO.updateKakaoFtNotSend(vo); |
|
| 858 |
+ handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불"); |
|
| 859 | 859 |
} |
| 860 | 860 |
} |
| 861 | 861 |
} |
| 862 |
+ |
|
| 863 |
+ |
|
| 864 |
+ private void processFtSendCharge(KakaoVO kakaoVO) throws Exception {
|
|
| 865 |
+ |
|
| 866 |
+ |
|
| 867 |
+ if(RESEND_YN_YES.equals(kakaoVO.getSubMsgSendYn())) {
|
|
| 868 |
+ |
|
| 869 |
+ BizKakaoPriceVO bizKakaoPriceVO = mjonPayDAO.selectBizKakaoPrice(kakaoVO.getMsgGroupId()); |
|
| 870 |
+ |
|
| 871 |
+ BigDecimal sendPrice = null; |
|
| 872 |
+ if(StringUtils.isEmpty(kakaoVO.getBizKakaoImageType())){
|
|
| 873 |
+ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtPrice()); |
|
| 874 |
+ }else if("I".equals(kakaoVO.getBizKakaoImageType())){
|
|
| 875 |
+ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtImgPrice()); |
|
| 876 |
+ }else if("W".equals(kakaoVO.getBizKakaoImageType())){
|
|
| 877 |
+ sendPrice = new BigDecimal(bizKakaoPriceVO.getBizKakaoFtWideImgPrice()); |
|
| 878 |
+ } |
|
| 879 |
+ |
|
| 880 |
+ // 예시: 각 건당 가격이 이미 String 형태라면 변환 |
|
| 881 |
+ BigDecimal eachPrice = new BigDecimal(kakaoVO.getEachPrice()); |
|
| 882 |
+ |
|
| 883 |
+ // 차이 계산 |
|
| 884 |
+ BigDecimal diffPrice = eachPrice.subtract(sendPrice); |
|
| 885 |
+ |
|
| 886 |
+ |
|
| 887 |
+ if (diffPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
| 888 |
+ String result = diffPrice.toString(); |
|
| 889 |
+ kakaoVO.setEachPrice(result); |
|
| 890 |
+ |
|
| 891 |
+ handleRefund(kakaoVO, "카카오 친구톡 전송으로 인한 결재 차액 환불"); |
|
| 892 |
+ } |
|
| 893 |
+ |
|
| 894 |
+ }else {
|
|
| 895 |
+ mjonMsgDAO.updateRefundY(kakaoVO); |
|
| 896 |
+ |
|
| 897 |
+ } |
|
| 898 |
+ // TODO Auto-generated method stub |
|
| 899 |
+ |
|
| 900 |
+ } |
|
| 901 |
+ |
|
| 902 |
+ private void handleAlternativeMessageScenario(KakaoVO kakaoVO) throws Exception {
|
|
| 903 |
+ KakaoVO bizLogVO = kakaoAlimTalkDAO.selectBizLog(kakaoVO.getBizUmid()); |
|
| 904 |
+ log.info("대체문자 전송 UMID: {}", kakaoVO.getBizUmid());
|
|
| 905 |
+ |
|
| 906 |
+ // 대체문자가 성공적으로 발송되었는지 확인 (SMS 또는 MMS 성공) |
|
| 907 |
+ boolean isAlternativeMessageSuccessful = false; |
|
| 908 |
+ if (bizLogVO != null && StringUtils.isNotEmpty(bizLogVO.getBizLogCallStatus())) {
|
|
| 909 |
+ if (SMS_SUCCESS_CODE.equals(bizLogVO.getBizLogCallStatus()) |
|
| 910 |
+ || MMS_SUCCESS_CODE.equals(bizLogVO.getBizLogCallStatus())) {
|
|
| 911 |
+ isAlternativeMessageSuccessful = true; |
|
| 912 |
+ } |
|
| 913 |
+ } |
|
| 914 |
+ |
|
| 915 |
+ // 대체문자 성공이면 환불 완료처리면 한다. |
|
| 916 |
+ if (isAlternativeMessageSuccessful) {
|
|
| 917 |
+ mjonMsgDAO.updateRefundY(kakaoVO); |
|
| 918 |
+ } else {
|
|
| 919 |
+ // 대체문자 발송 실패 된 경우 (친구톡 비용 환불 필요) |
|
| 920 |
+ handleRefund(kakaoVO, "카카오 친구톡 전송 실패로 인한 결재 금액 환불"); |
|
| 921 |
+ } |
|
| 922 |
+ } |
|
| 923 |
+ |
|
| 924 |
+ private void handleRefund(KakaoVO vo, String msg) throws Exception {
|
|
| 925 |
+ // mj_cash 테이블에 환불 내역 추가 및 회원 금액 업데이트 |
|
| 926 |
+ // eachPrice는 환불될 금액이므로 양수여야 합니다. |
|
| 927 |
+ priceAndPoint.insertCashAndPoint( |
|
| 928 |
+ vo.getUserId(), |
|
| 929 |
+ Float.parseFloat(vo.getEachPrice()), // 환불 금액은 양수 |
|
| 930 |
+ msg, |
|
| 931 |
+ vo.getMsgGroupId(), |
|
| 932 |
+ vo.getUserData() |
|
| 933 |
+ ); |
|
| 934 |
+ |
|
| 935 |
+ // 해당 row 환불 처리 (mj_msg_data.REFUND_YN = 'Y') |
|
| 936 |
+ mjonMsgDAO.updateRefundY(vo); |
|
| 937 |
+ } |
|
| 862 | 938 |
|
| 863 | 939 |
@Override |
| 864 | 940 |
public StatusResponse insertKakaoAtSandAjax_advc(KakaoVO kakaoVO, HttpServletRequest request) throws Exception {
|
--- src/main/java/itn/let/kakao/user/sent/service/KakaoSentVO.java
+++ src/main/java/itn/let/kakao/user/sent/service/KakaoSentVO.java
... | ... | @@ -90,7 +90,7 @@ |
| 90 | 90 |
private String bizKakaoFtPrice; |
| 91 | 91 |
private String bizSmsPrice; |
| 92 | 92 |
private String bizMmsPrice; |
| 93 |
- |
|
| 93 |
+ |
|
| 94 | 94 |
private int successCount; |
| 95 | 95 |
private int waitCount; |
| 96 | 96 |
private int failCount; |
... | ... | @@ -112,6 +112,7 @@ |
| 112 | 112 |
|
| 113 | 113 |
private String successPrice; |
| 114 | 114 |
private String kakaoResendSuccPrice; |
| 115 |
+ private String bizKakaoImageType; |
|
| 115 | 116 |
|
| 116 | 117 |
private String divideYn; |
| 117 | 118 |
|
--- src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java
+++ src/main/java/itn/let/mjo/msg/service/impl/MjonMsgDAO.java
... | ... | @@ -455,6 +455,11 @@ |
| 455 | 455 |
update("mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag", mjonMsgVO);
|
| 456 | 456 |
} |
| 457 | 457 |
|
| 458 |
+ // mj_msg_data 테이블 지연 알림톡 취소 값 수정 |
|
| 459 |
+ public void updateRefundY(MjonMsgVO mjonMsgVO) {
|
|
| 460 |
+ update("mjonMsgDAO.updateRefundY", mjonMsgVO);
|
|
| 461 |
+ } |
|
| 462 |
+ |
|
| 458 | 463 |
// mj_msg_group_data 테이블 지연 알림톡 취소 값 수정 |
| 459 | 464 |
public void updateKakaoAtDelayCancelMsgGroupDataFlag(MjonMsgVO mjonMsgVO) {
|
| 460 | 465 |
update("mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag", mjonMsgVO);
|
--- src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
+++ src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
... | ... | @@ -236,6 +236,8 @@ |
| 236 | 236 |
|
| 237 | 237 |
private int remainPoint; |
| 238 | 238 |
|
| 239 |
+ private String userData; |
|
| 240 |
+ |
|
| 239 | 241 |
|
| 240 | 242 |
private String totChgPay; // 간편결제분류 |
| 241 | 243 |
|
--- src/main/java/itn/let/mjo/pay/service/impl/MjonPayDAO.java
+++ src/main/java/itn/let/mjo/pay/service/impl/MjonPayDAO.java
... | ... | @@ -5,6 +5,7 @@ |
| 5 | 5 |
import org.springframework.stereotype.Repository; |
| 6 | 6 |
|
| 7 | 7 |
import egovframework.rte.psl.dataaccess.EgovAbstractDAO; |
| 8 |
+import itn.let.kakao.kakaoComm.BizKakaoPriceVO; |
|
| 8 | 9 |
import itn.let.mjo.pay.service.MjonPayVO; |
| 9 | 10 |
import itn.let.mjo.pay.service.MjonVaMsgLogVO; |
| 10 | 11 |
import itn.let.mjo.pay.service.RefundVO; |
... | ... | @@ -45,6 +46,10 @@ |
| 45 | 46 |
public MjonPayVO selectCashVO(MjonPayVO mjonPayVO) throws Exception{
|
| 46 | 47 |
return (MjonPayVO)select("mjonPayDAO.selectCashVO", mjonPayVO);
|
| 47 | 48 |
} |
| 49 |
+ |
|
| 50 |
+ public BizKakaoPriceVO selectBizKakaoPrice(String msgGroupId) throws Exception{
|
|
| 51 |
+ return (BizKakaoPriceVO)select("mjonPayDAO.selectBizKakaoPrice", msgGroupId);
|
|
| 52 |
+ } |
|
| 48 | 53 |
|
| 49 | 54 |
public void insertCash(MjonPayVO mjonPayVO) throws Exception{
|
| 50 | 55 |
|
--- src/main/java/itn/let/module/base/PriceAndPoint.java
+++ src/main/java/itn/let/module/base/PriceAndPoint.java
... | ... | @@ -5,9 +5,11 @@ |
| 5 | 5 |
|
| 6 | 6 |
import javax.annotation.Resource; |
| 7 | 7 |
|
| 8 |
+import org.apache.commons.lang.StringUtils; |
|
| 8 | 9 |
import org.springframework.beans.factory.annotation.Autowired; |
| 9 | 10 |
import org.springframework.stereotype.Component; |
| 10 | 11 |
|
| 12 |
+import egovframework.rte.fdl.cmmn.exception.FdlException; |
|
| 11 | 13 |
import egovframework.rte.fdl.idgnr.EgovIdGnrService; |
| 12 | 14 |
import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; |
| 13 | 15 |
import itn.let.kakao.kakaoComm.KakaoSendUtil; |
... | ... | @@ -127,23 +129,69 @@ |
| 127 | 129 |
, String msgGroupId |
| 128 | 130 |
) throws Exception {
|
| 129 | 131 |
|
| 130 |
- MjonPayVO mjonPayVO = new MjonPayVO(); |
|
| 131 |
- mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()); |
|
| 132 |
- mjonPayVO.setUserId(userId); |
|
| 133 |
- System.out.println(" + totPrice :: "+ totPrice);
|
|
| 134 |
- mjonPayVO.setCash(totPrice); |
|
| 135 |
- mjonPayVO.setFrstRegisterId(userId); |
|
| 136 |
- mjonPayVO.setMemo(memo); |
|
| 137 |
- mjonPayVO.setMsgGroupId(msgGroupId); |
|
| 132 |
+// MjonPayVO mjonPayVO = new MjonPayVO(); |
|
| 133 |
+// mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()); |
|
| 134 |
+// mjonPayVO.setUserId(userId); |
|
| 135 |
+// System.out.println(" + totPrice :: "+ totPrice);
|
|
| 136 |
+// mjonPayVO.setCash(totPrice); |
|
| 137 |
+// mjonPayVO.setFrstRegisterId(userId); |
|
| 138 |
+// mjonPayVO.setMemo(memo); |
|
| 139 |
+// mjonPayVO.setMsgGroupId(msgGroupId); |
|
| 138 | 140 |
|
| 141 |
+ insertCashAndPoint(userId, totPrice, memo, msgGroupId, null); |
|
| 142 |
+ |
|
| 143 |
+// mjonPayDAO.insertCash(mjonPayVO); //캐시 |
|
| 144 |
+// mjonPayDAO.updateMemberCash(mjonPayVO); //회원정보 업데이트 |
|
| 145 |
+ |
|
| 146 |
+ } |
|
| 147 |
+ /** |
|
| 148 |
+ * @methodName : insertCashAndPoint |
|
| 149 |
+ * @author : 이호영 |
|
| 150 |
+ * @date : 2025. 7. 17. |
|
| 151 |
+ * @description : insertCashAndPoint 에서 환불으로 인해 userData 추가 |
|
| 152 |
+ * @return : void |
|
| 153 |
+ * @param userId |
|
| 154 |
+ * @param totPrice |
|
| 155 |
+ * @param memo |
|
| 156 |
+ * @param msgGroupId |
|
| 157 |
+ * @param userData |
|
| 158 |
+ * @throws Exception |
|
| 159 |
+ * |
|
| 160 |
+ */ |
|
| 161 |
+ public void insertCashAndPoint( |
|
| 162 |
+ String userId |
|
| 163 |
+ , float totPrice |
|
| 164 |
+ , String memo |
|
| 165 |
+ , String msgGroupId |
|
| 166 |
+ , String userData |
|
| 167 |
+ ) throws Exception {
|
|
| 168 |
+ |
|
| 169 |
+ MjonPayVO mjonPayVO = buildPayVO(userId, totPrice, memo, msgGroupId); |
|
| 170 |
+ |
|
| 171 |
+// 환불로 인해 userData가 추후 사용될 경우 여기에 처리 |
|
| 172 |
+ if (StringUtils.isNotEmpty(userData)) { mjonPayVO.setOrderId(userData); }
|
|
| 173 |
+ |
|
| 139 | 174 |
mjonPayDAO.insertCash(mjonPayVO); //캐시 |
| 140 | 175 |
mjonPayDAO.updateMemberCash(mjonPayVO); //회원정보 업데이트 |
| 141 | 176 |
|
| 177 |
+ } |
|
| 178 |
+ |
|
| 179 |
+ private MjonPayVO buildPayVO(String userId, float totPrice, String memo, String msgGroupId) throws FdlException {
|
|
| 180 |
+ MjonPayVO vo = new MjonPayVO(); |
|
| 181 |
+ vo.setCashId(idgenMjonCashId.getNextStringId()); |
|
| 182 |
+ vo.setUserId(userId); |
|
| 183 |
+ vo.setCash(totPrice); |
|
| 184 |
+ vo.setFrstRegisterId(userId); |
|
| 185 |
+ vo.setMemo(memo); |
|
| 186 |
+ vo.setMsgGroupId(msgGroupId); |
|
| 187 |
+ System.out.println(" + totPrice :: " + totPrice);
|
|
| 188 |
+ return vo; |
|
| 142 | 189 |
} |
| 143 | 190 |
|
| 144 | 191 |
public void insertBizFtKakaoPrice(String userId, String msgGroupId) throws Exception {
|
| 145 | 192 |
KakaoVO kakaoVO = new KakaoVO(); |
| 146 | 193 |
|
| 194 |
+ System.out.println("=======================");
|
|
| 147 | 195 |
// 사용자 개인 단가 정보 불러오기 |
| 148 | 196 |
MberManageVO mberManageVO = mjonMsgDataDAO.selectMberManageInfo(userId); |
| 149 | 197 |
// 시스템 기본 단가 정보 불러오기 |
--- src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
... | ... | @@ -1398,6 +1398,7 @@ |
| 1398 | 1398 |
A.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn, |
| 1399 | 1399 |
A.BIZ_KAKAO_RESEND_DATA as bizKakaoResendData, |
| 1400 | 1400 |
B.AD_FLAG as adFlag , |
| 1401 |
+ B.BIZ_KAKAO_IMAGE_TYPE as bizKakaoImageType , |
|
| 1401 | 1402 |
CASE |
| 1402 | 1403 |
WHEN B.AT_DELAY_YN = 'Y' AND B.AT_DELAY_COMPLETE_YN = 'N' |
| 1403 | 1404 |
THEN DATE_ADD(B.REQ_DATE, INTERVAL -30 MINUTE) |
--- 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
... | ... | @@ -186,6 +186,8 @@ |
| 186 | 186 |
MSG_GROUP_ID |
| 187 | 187 |
, BIZ_KAKAO_AT_PRICE |
| 188 | 188 |
, BIZ_KAKAO_FT_PRICE |
| 189 |
+ , BIZ_KAKAO_FT_IMG_PRICE |
|
| 190 |
+ , BIZ_KAKAO_FT_WIDE_IMG_PRICE |
|
| 189 | 191 |
, BIZ_SMS_PRICE |
| 190 | 192 |
, BIZ_MMS_PRICE |
| 191 | 193 |
, BIZ_PICTURE_PRICE |
... | ... | @@ -195,6 +197,8 @@ |
| 195 | 197 |
#msgGroupId# |
| 196 | 198 |
,#kakaoAtPrice# |
| 197 | 199 |
,#kakaoFtPrice# |
| 200 |
+ ,#kakaoFtImgPrice# |
|
| 201 |
+ ,#kakaoFtWideImgPrice# |
|
| 198 | 202 |
,#smsPrice# |
| 199 | 203 |
,#mmsPrice# |
| 200 | 204 |
,#picturePrice# |
... | ... | @@ -233,6 +237,7 @@ |
| 233 | 237 |
, MMD.MSG_GROUP_ID AS msgGroupId |
| 234 | 238 |
, MMD.MSG_SEQ AS msgSeq |
| 235 | 239 |
, MMGD.BIZ_KAKAO_IMAGE_TYPE AS bizKakaoImageType |
| 240 |
+ , MMGD.EACH_PRICE AS eachPrice |
|
| 236 | 241 |
, MMD.USERDATA AS userData |
| 237 | 242 |
, MMD.REFUND_YN AS refundYn |
| 238 | 243 |
, MMD.RSLT_CODE AS rsltCode |
... | ... | @@ -243,7 +248,7 @@ |
| 243 | 248 |
, MMD.BIZ_KAKAO_RESEND_YN AS subMsgSendYn |
| 244 | 249 |
, MMD.BIZ_KAKAO_RESEND_TYPE AS subMsgType |
| 245 | 250 |
, MMD.FILE_CNT AS fileCnt |
| 246 |
- , MMD.BIZ_KAKAO_RESEND_TYPE AS bizKakaoResendType |
|
| 251 |
+ , MMD.BIZ_UMID AS bizUmid |
|
| 247 | 252 |
FROM |
| 248 | 253 |
MJ_MSG_DATA MMD |
| 249 | 254 |
INNER JOIN LETTNGNRLMBER MB |
... | ... | @@ -266,6 +271,15 @@ |
| 266 | 271 |
AND USERDATA = #userData# |
| 267 | 272 |
</select> |
| 268 | 273 |
|
| 274 |
+ <select id="kakaoAlimTalkDAO.selectBizLog" resultClass="kakaoVO" parameterClass="String"> |
|
| 275 |
+ SELECT |
|
| 276 |
+ CALL_STATUS AS bizLogCallStatus |
|
| 277 |
+ FROM |
|
| 278 |
+ BIZ_LOG |
|
| 279 |
+ WHERE 1=1 |
|
| 280 |
+ AND UMID = #umid# |
|
| 281 |
+ </select> |
|
| 282 |
+ |
|
| 269 | 283 |
<!-- 카카오 전송 환불 프로시저 실행 (카카오 전송 성공 관련) --> |
| 270 | 284 |
<procedure id="kakaoAlimTalkDAO.updateKakaoAtSend" parameterClass="kakaoVO"> |
| 271 | 285 |
{call kakaoAt_Send(#userId#, #msgGroupId#, #userData#)}
|
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
... | ... | @@ -7435,6 +7435,17 @@ |
| 7435 | 7435 |
|
| 7436 | 7436 |
</update> |
| 7437 | 7437 |
|
| 7438 |
+ <update id="mjonMsgDAO.updateRefundY" parameterClass="mjonMsgVO"> |
|
| 7439 |
+ |
|
| 7440 |
+ UPDATE MJ_MSG_DATA |
|
| 7441 |
+ SET REFUND_YN = 'Y' |
|
| 7442 |
+ WHERE |
|
| 7443 |
+ USER_ID = #userId# |
|
| 7444 |
+ AND USERDATA = #userData# |
|
| 7445 |
+ AND MSG_GROUP_ID = #msgGroupId# |
|
| 7446 |
+ |
|
| 7447 |
+ </update> |
|
| 7448 |
+ |
|
| 7438 | 7449 |
<update id="mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag" parameterClass="mjonMsgVO"> |
| 7439 | 7450 |
|
| 7440 | 7451 |
UPDATE |
--- src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
... | ... | @@ -3,10 +3,11 @@ |
| 3 | 3 |
========= ======= ================================================= |
| 4 | 4 |
2021.03.01 신명섭 |
| 5 | 5 |
--> |
| 6 |
-<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> |
|
| 6 |
+<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> |
|
| 7 | 7 |
<sqlMap namespace="Pay"> |
| 8 | 8 |
<typeAlias alias="mjonPayVO" type="itn.let.mjo.pay.service.MjonPayVO"/> |
| 9 | 9 |
<typeAlias alias="stVcVO" type="itn.let.mjo.pay.service.StVcVO"/> |
| 10 |
+ <typeAlias alias="bizKakaoPriceVO" type="itn.let.kakao.kakaoComm.BizKakaoPriceVO"/> |
|
| 10 | 11 |
<typeAlias alias="mjonVaMsgLogVO" type="itn.let.mjo.pay.service.MjonVaMsgLogVO"/> |
| 11 | 12 |
|
| 12 | 13 |
<!-- 공통 쿼리 부분 문자 발송 관련 --> |
... | ... | @@ -606,6 +607,7 @@ |
| 606 | 607 |
MEMO, |
| 607 | 608 |
ORDER_ID, |
| 608 | 609 |
MSG_GROUP_ID |
| 610 |
+ |
|
| 609 | 611 |
)VALUES |
| 610 | 612 |
( |
| 611 | 613 |
#userId#, |
... | ... | @@ -624,6 +626,22 @@ |
| 624 | 626 |
</update> |
| 625 | 627 |
|
| 626 | 628 |
|
| 629 |
+ |
|
| 630 |
+ <select id="mjonPayDAO.selectBizKakaoPrice" resultClass="bizKakaoPriceVO" parameterClass="String"> |
|
| 631 |
+ SELECT |
|
| 632 |
+ BIZ_KAKAO_PRICE_ID AS bizKakaoPriceId, |
|
| 633 |
+ BIZ_KAKAO_AT_PRICE AS bizKakaoAtPrice, |
|
| 634 |
+ BIZ_KAKAO_FT_PRICE AS bizKakaoFtPrice, |
|
| 635 |
+ BIZ_KAKAO_FT_IMG_PRICE AS bizKakaoFtImgPrice, |
|
| 636 |
+ BIZ_KAKAO_FT_WIDE_IMG_PRICE AS bizKakaoFtWideImgPrice, |
|
| 637 |
+ BIZ_SMS_PRICE AS bizSmsPrice, |
|
| 638 |
+ BIZ_MMS_PRICE AS bizMmsPrice, |
|
| 639 |
+ MSG_GROUP_ID AS msgGroupId |
|
| 640 |
+ FROM BIZ_KAKAO_PRICE |
|
| 641 |
+ WHERE MSG_GROUP_ID = #msgGroupId# |
|
| 642 |
+ </select> |
|
| 643 |
+ |
|
| 644 |
+ |
|
| 627 | 645 |
<insert id="mjonPayDAO.insertMjPg" parameterClass="mjonPayVO"> |
| 628 | 646 |
INSERT INTO MJ_PG |
| 629 | 647 |
( |
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
... | ... | @@ -1407,9 +1407,10 @@ |
| 1407 | 1407 |
$('#msgLeng').html("");
|
| 1408 | 1408 |
$('#limitLeng').html("");
|
| 1409 | 1409 |
|
| 1410 |
- if ($("#ad_Y").is(":checked")) {
|
|
| 1410 |
+ /* if ($("#ad_Y").is(":checked")) {
|
|
| 1411 | 1411 |
contents = "(광고)"+contents+"\n무료거부 0808800858" |
| 1412 |
- } |
|
| 1412 |
+ } */ |
|
| 1413 |
+ contents = adYChkAndMakeContents(contents); |
|
| 1413 | 1414 |
console.log(contents); |
| 1414 | 1415 |
var conLeng = conByteLeng(contents); // 내용 문자 입력 바이트 수 계산하기 |
| 1415 | 1416 |
|
... | ... | @@ -1444,6 +1445,7 @@ |
| 1444 | 1445 |
$("#subMsgType").val("SMS");
|
| 1445 | 1446 |
|
| 1446 | 1447 |
} |
| 1448 |
+ totalFtPriceSum(tableL.getRows().length); |
|
| 1447 | 1449 |
|
| 1448 | 1450 |
} |
| 1449 | 1451 |
|
--- src/main/webapp/js/kakao/ft/ftPriceClclt.js
+++ src/main/webapp/js/kakao/ft/ftPriceClclt.js
... | ... | @@ -49,7 +49,10 @@ |
| 49 | 49 |
if ($("#send_fail_check").is(":checked")) {
|
| 50 | 50 |
if (imgTypeId === "img_file_0") {
|
| 51 | 51 |
// 장문/단문 여부에 따라 가격 비교 후 더 큰 값으로 설정 |
| 52 |
- var len = conByteLeng($('#smsTxtArea').val());
|
|
| 52 |
+ |
|
| 53 |
+ var contents = adYChkAndMakeContents($('#smsTxtArea').val());
|
|
| 54 |
+ |
|
| 55 |
+ var len = conByteLeng(contents); |
|
| 53 | 56 |
var long = parseFloat($("#longPrice").val());
|
| 54 | 57 |
var short = parseFloat($("#shortPrice").val());
|
| 55 | 58 |
price = Math.max(price, len > 90 ? long : short); |
... | ... | @@ -76,7 +79,12 @@ |
| 76 | 79 |
return totalStr; // 계산된 총 금액 반환 |
| 77 | 80 |
} |
| 78 | 81 |
|
| 79 |
- |
|
| 82 |
+function adYChkAndMakeContents(contents){
|
|
| 83 |
+ if ($("#ad_Y").is(":checked")) {
|
|
| 84 |
+ contents = "(광고)"+contents+"\n무료거부 0808800858" |
|
| 85 |
+ } |
|
| 86 |
+ return contents; |
|
| 87 |
+} |
|
| 80 | 88 |
|
| 81 | 89 |
|
| 82 | 90 |
/* |
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?