팩스 환불 로직 개선
This commit is contained in:
parent
187f11057e
commit
2ac147144c
20
src/main/java/itn/let/mjo/msg/service/RefundDTO.java
Normal file
20
src/main/java/itn/let/mjo/msg/service/RefundDTO.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package itn.let.mjo.msg.service;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class RefundDTO {
|
||||||
|
private String userId;
|
||||||
|
private String msgGroupId;
|
||||||
|
private int userData;
|
||||||
|
private String eachPrice ; // 전송문자 개별가격
|
||||||
|
|
||||||
|
public RefundDTO(String userId, String msgGroupId, int userData, String eachPrice) {
|
||||||
|
this.userId = userId;
|
||||||
|
this.msgGroupId = msgGroupId;
|
||||||
|
this.userData = userData;
|
||||||
|
this.eachPrice = eachPrice;
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -17,6 +17,7 @@ import java.util.Date;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
@ -84,6 +85,7 @@ import itn.let.mjo.mjocommon.MjonCommon;
|
|||||||
import itn.let.mjo.mjocommon.MjonHolidayApi;
|
import itn.let.mjo.mjocommon.MjonHolidayApi;
|
||||||
import itn.let.mjo.msg.service.MjonMsgService;
|
import itn.let.mjo.msg.service.MjonMsgService;
|
||||||
import itn.let.mjo.msg.service.MjonMsgVO;
|
import itn.let.mjo.msg.service.MjonMsgVO;
|
||||||
|
import itn.let.mjo.msg.service.RefundDTO;
|
||||||
import itn.let.mjo.msgdata.service.MjonMsgDataService;
|
import itn.let.mjo.msgdata.service.MjonMsgDataService;
|
||||||
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
|
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
|
||||||
import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
|
import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
|
||||||
@ -3434,8 +3436,14 @@ public class TestController {
|
|||||||
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14
|
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14
|
||||||
//schdlrManageService.msgFailPayBack();
|
//schdlrManageService.msgFailPayBack();
|
||||||
|
|
||||||
|
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList();
|
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList();
|
||||||
|
|
||||||
|
|
||||||
|
long forAfterTime1 = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
|
long forSecDiffTime1 = (forAfterTime1 - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
|
System.out.println("==PayBack list =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime1 +"초");
|
||||||
|
|
||||||
// 리스트가 비어있는 경우 종료
|
// 리스트가 비어있는 경우 종료
|
||||||
if (msgFailList == null || msgFailList.isEmpty()) {
|
if (msgFailList == null || msgFailList.isEmpty()) {
|
||||||
System.out.println("No messages to process.");
|
System.out.println("No messages to process.");
|
||||||
@ -3443,29 +3451,22 @@ public class TestController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
|
||||||
// int count = 0;
|
|
||||||
System.out.println("== msgFailList =============> : "+ msgFailList.size());
|
System.out.println("== msgFailList =============> : "+ msgFailList.size());
|
||||||
// for(MjonMsgVO vo : msgFailList) {
|
try {
|
||||||
// System.out.println(count + " : "+ msgFailList.size());
|
// 필요한 필드만 DTO로 매핑
|
||||||
|
List<RefundDTO> dtoList = msgFailList.stream()
|
||||||
|
.map(msg -> new RefundDTO(msg.getUserId(), msg.getMsgGroupId(), Integer.parseInt(msg.getUserData()), msg.getEachPrice()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// JSON 변환
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
String msgFailListJson = objectMapper.writeValueAsString(dtoList);
|
||||||
|
|
||||||
try {
|
mjonMsgDataDAO.updateMsgSentFailPayBackBatch(msgFailListJson);
|
||||||
|
|
||||||
// JSON 변환
|
}catch(Exception ex) {
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
ex.printStackTrace();
|
||||||
String msgFailListJson = objectMapper.writeValueAsString(msgFailList);
|
}
|
||||||
|
|
||||||
System.out.println("JSON Data: " + msgFailListJson);
|
|
||||||
|
|
||||||
|
|
||||||
mjonMsgDataDAO.updateMsgSentFailPayBackBatch(msgFailListJson);
|
|
||||||
|
|
||||||
// mjonMsgDataDAO.updateMsgSentFailPayBack(vo);
|
|
||||||
}catch(Exception ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
// count = count + 1;
|
|
||||||
// }
|
// }
|
||||||
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
|
|||||||
@ -52,4 +52,6 @@ public interface SchdlrManageService {
|
|||||||
|
|
||||||
//문자온 문자전송 실패 건수 환불 배치
|
//문자온 문자전송 실패 건수 환불 배치
|
||||||
public void payBack(String type, int limitCout) throws Exception;
|
public void payBack(String type, int limitCout) throws Exception;
|
||||||
|
|
||||||
|
public void payBack_advc(String p_type) throws Exception;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,8 +92,8 @@ public class SchedulerUtil {
|
|||||||
* 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
|
* 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
|
||||||
* */
|
* */
|
||||||
// Schdule Lock (10분동안)
|
// Schdule Lock (10분동안)
|
||||||
// @Scheduled(cron = "0 0/10 * * * ?")
|
@Scheduled(cron = "0 0/10 * * * ?")
|
||||||
// @SchedulerLock(name = "runScenarioOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
|
@SchedulerLock(name = "runScenarioOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
|
||||||
public void runScenarioOneTime() throws Exception {
|
public void runScenarioOneTime() throws Exception {
|
||||||
|
|
||||||
// do something...
|
// do something...
|
||||||
@ -119,10 +119,10 @@ public class SchedulerUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 매일 5시20분에 31일전 데이터에서 환불 대상을 찾아서 환불 한다.
|
* 매일 5시20분 20초에 31일전 데이터에서 환불 대상을 찾아서 환불 한다.
|
||||||
* */
|
* */
|
||||||
// @Scheduled(cron = "20 20 5 * * ?")
|
@Scheduled(cron = "20 25 5 * * ?")
|
||||||
// @SchedulerLock(name = "runScenarioOneTimeOneByDay", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
|
@SchedulerLock(name = "runScenarioOneTimeOneByDay", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
|
||||||
public void runScenarioOneTimeOneByDay() throws Exception {
|
public void runScenarioOneTimeOneByDay() throws Exception {
|
||||||
|
|
||||||
// do something...
|
// do something...
|
||||||
@ -477,10 +477,14 @@ public class SchedulerUtil {
|
|||||||
|
|
||||||
//환불 실행
|
//환불 실행
|
||||||
private void PayBack(String p_type) throws Exception {
|
private void PayBack(String p_type) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
// 문자 환불
|
// 문자 환불
|
||||||
|
schdlrManageService.payBack_advc(p_type);
|
||||||
|
|
||||||
|
/*
|
||||||
if ("ONE".equals(p_type)) { //하루에 한번만 31일 대상으로 실행
|
if ("ONE".equals(p_type)) { //하루에 한번만 31일 대상으로 실행
|
||||||
schdlrManageService.msgFailPayBackOneByDay();
|
schdlrManageService.msgFailPayBackOneByDay();
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
// 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
|
// 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
|
||||||
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14
|
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14
|
||||||
@ -489,10 +493,8 @@ public class SchedulerUtil {
|
|||||||
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList();
|
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList();
|
||||||
|
|
||||||
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
int count = 0;
|
|
||||||
System.out.println("== msgFailList =============> : "+ msgFailList.size());
|
System.out.println("== msgFailList =============> : "+ msgFailList.size());
|
||||||
for(MjonMsgVO vo : msgFailList) {
|
for(MjonMsgVO vo : msgFailList) {
|
||||||
System.out.println(count + " : "+ msgFailList.size());
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mjonMsgDataDAO.updateMsgSentFailPayBack(vo);
|
mjonMsgDataDAO.updateMsgSentFailPayBack(vo);
|
||||||
@ -502,15 +504,16 @@ public class SchedulerUtil {
|
|||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
count = count + 1;
|
|
||||||
}
|
}
|
||||||
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초");
|
System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
System.out.println("==== faxFailPayBack ====");
|
System.out.println("==== faxFailPayBack ====");
|
||||||
// 팩스 환불
|
// 팩스 환불
|
||||||
schdlrManageService.faxFailPayBack();
|
schdlrManageService.faxFailPayBack();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
package itn.let.schdlr.service.impl;
|
package itn.let.schdlr.service.impl;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
@ -10,8 +12,12 @@ import org.jsoup.Jsoup;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||||
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
||||||
import itn.com.cmm.EgovMultiPartEmail;
|
import itn.com.cmm.EgovMultiPartEmail;
|
||||||
@ -19,8 +25,10 @@ import itn.com.cmm.service.EgovFileMngService;
|
|||||||
import itn.com.cmm.service.impl.FileManageDAO;
|
import itn.com.cmm.service.impl.FileManageDAO;
|
||||||
import itn.let.fax.user.service.impl.FaxDAO;
|
import itn.let.fax.user.service.impl.FaxDAO;
|
||||||
import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService;
|
import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService;
|
||||||
|
import itn.let.mail.service.StatusResponse;
|
||||||
import itn.let.mjo.mjocommon.MjonCommon;
|
import itn.let.mjo.mjocommon.MjonCommon;
|
||||||
import itn.let.mjo.msg.service.MjonMsgVO;
|
import itn.let.mjo.msg.service.MjonMsgVO;
|
||||||
|
import itn.let.mjo.msg.service.RefundDTO;
|
||||||
import itn.let.mjo.msgdata.service.MjonMsgDataService;
|
import itn.let.mjo.msgdata.service.MjonMsgDataService;
|
||||||
import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
|
import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
|
||||||
import itn.let.mjo.pay.service.MjonPayService;
|
import itn.let.mjo.pay.service.MjonPayService;
|
||||||
@ -47,14 +55,14 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
@Resource(name = "egovItsmSchdlrShareIdGnrService")
|
@Resource(name = "egovItsmSchdlrShareIdGnrService")
|
||||||
private EgovIdGnrService idgenSchdlrShareId;
|
private EgovIdGnrService idgenSchdlrShareId;
|
||||||
|
|
||||||
@Resource(name="SchdlrManageDAO")
|
@Resource(name = "SchdlrManageDAO")
|
||||||
private SchdlrManageDAO schdlrManageDAO;
|
private SchdlrManageDAO schdlrManageDAO;
|
||||||
|
|
||||||
@Resource(name = "FileManageDAO")
|
@Resource(name = "FileManageDAO")
|
||||||
private FileManageDAO fileMngDAO;
|
private FileManageDAO fileMngDAO;
|
||||||
|
|
||||||
@Resource(name="EgovFileMngService")
|
@Resource(name = "EgovFileMngService")
|
||||||
private EgovFileMngService fileMngService;
|
private EgovFileMngService fileMngService;
|
||||||
|
|
||||||
@Resource(name = "egovMultiPartEmail")
|
@Resource(name = "egovMultiPartEmail")
|
||||||
private EgovMultiPartEmail egovMultiPartEmail;
|
private EgovMultiPartEmail egovMultiPartEmail;
|
||||||
@ -65,26 +73,26 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
@Value("#{globalSettings['Globals.HOMPAGE_URL']}")
|
@Value("#{globalSettings['Globals.HOMPAGE_URL']}")
|
||||||
private String HOMPAGE_URL;
|
private String HOMPAGE_URL;
|
||||||
|
|
||||||
@Resource(name="MjonMsgDataDAO")
|
@Resource(name = "MjonMsgDataDAO")
|
||||||
private MjonMsgDataDAO mjonMsgDataDAO;
|
private MjonMsgDataDAO mjonMsgDataDAO;
|
||||||
|
|
||||||
//문자온 카카오 알림톡 발송 서비스
|
// 문자온 카카오 알림톡 발송 서비스
|
||||||
@Resource(name = "kakaoAlimTalkService")
|
@Resource(name = "kakaoAlimTalkService")
|
||||||
private KakaoAlimTalkService kakaoAlimTalkService;
|
private KakaoAlimTalkService kakaoAlimTalkService;
|
||||||
|
|
||||||
//문자온 문자 발송 서비스
|
// 문자온 문자 발송 서비스
|
||||||
@Resource(name = "MjonMsgDataService")
|
@Resource(name = "MjonMsgDataService")
|
||||||
private MjonMsgDataService mjonMsgDataService;
|
private MjonMsgDataService mjonMsgDataService;
|
||||||
|
|
||||||
//세틀뱅크 입금전문 서비스
|
// 세틀뱅크 입금전문 서비스
|
||||||
@Resource(name = "vacsAhstService")
|
@Resource(name = "vacsAhstService")
|
||||||
private VacsAhstService vacsAhstService;
|
private VacsAhstService vacsAhstService;
|
||||||
|
|
||||||
//문자온 결제 서비스
|
// 문자온 결제 서비스
|
||||||
@Resource(name = "mjonPayService")
|
@Resource(name = "mjonPayService")
|
||||||
private MjonPayService mjonPayService;
|
private MjonPayService mjonPayService;
|
||||||
|
|
||||||
/** userManageService */
|
/** userManageService */
|
||||||
@Resource(name = "userManageService")
|
@Resource(name = "userManageService")
|
||||||
private EgovUserManageService userManageService;
|
private EgovUserManageService userManageService;
|
||||||
|
|
||||||
@ -96,7 +104,7 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
@Resource(name = "mjonNoticeSendUtil")
|
@Resource(name = "mjonNoticeSendUtil")
|
||||||
private MjonNoticeSendUtil mjonNoticeSendUtil;
|
private MjonNoticeSendUtil mjonNoticeSendUtil;
|
||||||
|
|
||||||
@Resource(name="MjonCommon")
|
@Resource(name = "MjonCommon")
|
||||||
private MjonCommon mjonCommon;
|
private MjonCommon mjonCommon;
|
||||||
|
|
||||||
@Resource(name = "faxDAO")
|
@Resource(name = "faxDAO")
|
||||||
@ -105,7 +113,7 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
private static final Logger LOGGER = LoggerFactory.getLogger(SchdlrManageServiceImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(SchdlrManageServiceImpl.class);
|
||||||
|
|
||||||
// 스케줄달력 목록(월별)
|
// 스케줄달력 목록(월별)
|
||||||
public List<SchdlrVO> selectSchdlrList(SchdlrVO schdlrVO) throws Exception {
|
public List<SchdlrVO> selectSchdlrList(SchdlrVO schdlrVO) throws Exception {
|
||||||
return schdlrManageDAO.selectSchdlrList(schdlrVO);
|
return schdlrManageDAO.selectSchdlrList(schdlrVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,11 +122,11 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
schdlrVO.setSchdlrId(idgenSchdlrId.getNextStringId()); // 신규 키
|
schdlrVO.setSchdlrId(idgenSchdlrId.getNextStringId()); // 신규 키
|
||||||
schdlrManageDAO.schdlrInsert(schdlrVO); // 등록
|
schdlrManageDAO.schdlrInsert(schdlrVO); // 등록
|
||||||
|
|
||||||
if(schdlrVO.getSchdlrUserId() != null && schdlrVO.getSchdlrUserId().length() != 0) {
|
if (schdlrVO.getSchdlrUserId() != null && schdlrVO.getSchdlrUserId().length() != 0) {
|
||||||
String userId[] = schdlrVO.getSchdlrUserId().split(",");
|
String userId[] = schdlrVO.getSchdlrUserId().split(",");
|
||||||
String userName[] = schdlrVO.getSchdlrUserName().split(",");
|
String userName[] = schdlrVO.getSchdlrUserName().split(",");
|
||||||
|
|
||||||
for(int i=0; i <userId.length; i++ ) {
|
for (int i = 0; i < userId.length; i++) {
|
||||||
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userID : "+userId[i]);
|
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userID : "+userId[i]);
|
||||||
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userName : "+userName[i]);
|
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userName : "+userName[i]);
|
||||||
schdlrVO.setSchdlrUserId(userId[i]);
|
schdlrVO.setSchdlrUserId(userId[i]);
|
||||||
@ -133,17 +141,17 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
public void schdlrUpdate(SchdlrVO schdlrVO) throws Exception {
|
public void schdlrUpdate(SchdlrVO schdlrVO) throws Exception {
|
||||||
schdlrManageDAO.schdlrUpdate(schdlrVO);
|
schdlrManageDAO.schdlrUpdate(schdlrVO);
|
||||||
|
|
||||||
if(!("").equals(schdlrVO.getSchdlrUserId())) {
|
if (!("").equals(schdlrVO.getSchdlrUserId())) {
|
||||||
String userId[] = schdlrVO.getSchdlrUserId().split(",");
|
String userId[] = schdlrVO.getSchdlrUserId().split(",");
|
||||||
String userName[] = schdlrVO.getSchdlrUserName().split(",");
|
String userName[] = schdlrVO.getSchdlrUserName().split(",");
|
||||||
|
|
||||||
int schdlrShareCount = schdlrManageDAO.selectSchdlrShareCount(schdlrVO);
|
int schdlrShareCount = schdlrManageDAO.selectSchdlrShareCount(schdlrVO);
|
||||||
|
|
||||||
if(schdlrShareCount != 0) {
|
if (schdlrShareCount != 0) {
|
||||||
schdlrManageDAO.deleteSchdlrShare(schdlrVO.getSchdlrId());
|
schdlrManageDAO.deleteSchdlrShare(schdlrVO.getSchdlrId());
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i=0; i <userId.length; i++ ) {
|
for (int i = 0; i < userId.length; i++) {
|
||||||
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userID : "+userId[i]);
|
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userID : "+userId[i]);
|
||||||
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userName : "+userName[i]);
|
// System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@ userName : "+userName[i]);
|
||||||
schdlrVO.setSchdlrUserId(userId[i]);
|
schdlrVO.setSchdlrUserId(userId[i]);
|
||||||
@ -164,9 +172,8 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
return schdlrManageDAO.selectSchdlrShare(schdlrVO);
|
return schdlrManageDAO.selectSchdlrShare(schdlrVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 일정 목록 조회
|
// 일정 목록 조회
|
||||||
public List<SchdlrVO> selectSchList(SchdlrVO schdlrVO) throws Exception {
|
public List<SchdlrVO> selectSchList(SchdlrVO schdlrVO) throws Exception {
|
||||||
return schdlrManageDAO.selectSchList(schdlrVO);
|
return schdlrManageDAO.selectSchList(schdlrVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,18 +213,20 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
List<SchdlrVO> mailList = schdlrManageDAO.selectMailSendList(bgnDateTime);
|
List<SchdlrVO> mailList = schdlrManageDAO.selectMailSendList(bgnDateTime);
|
||||||
|
|
||||||
for (SchdlrVO vo : mailList) {
|
for (SchdlrVO vo : mailList) {
|
||||||
if (("").equals(vo.getEmailAdres())) continue;
|
if (("").equals(vo.getEmailAdres()))
|
||||||
|
continue;
|
||||||
|
|
||||||
boolean result = sendMail(vo);
|
boolean result = sendMail(vo);
|
||||||
LOGGER.debug("send succ update:", result);
|
LOGGER.debug("send succ update:", result);
|
||||||
|
|
||||||
if (result) schdlrManageDAO.updateMailSend(vo);
|
if (result)
|
||||||
|
schdlrManageDAO.updateMailSend(vo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 일정 알림 메일 전송
|
* 일정 알림 메일 전송
|
||||||
|
*
|
||||||
* @param SchdlrVO schdlrVO
|
* @param SchdlrVO schdlrVO
|
||||||
* @return boolean
|
* @return boolean
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@ -225,7 +234,7 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
private boolean sendMail(SchdlrVO schdlrVO) throws Exception {
|
private boolean sendMail(SchdlrVO schdlrVO) throws Exception {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
try {
|
try {
|
||||||
String mailSj = "["+schdlrVO.getSchdlrTitle()+"] N-CMS 스케줄러 일정 메일 알림입니다.";
|
String mailSj = "[" + schdlrVO.getSchdlrTitle() + "] N-CMS 스케줄러 일정 메일 알림입니다.";
|
||||||
String alram = "";
|
String alram = "";
|
||||||
|
|
||||||
// // 알림설정 표시
|
// // 알림설정 표시
|
||||||
@ -234,17 +243,30 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
// } else if (schdlrVO.getSchdlrAlarmCnd().equals("etc")) {
|
// } else if (schdlrVO.getSchdlrAlarmCnd().equals("etc")) {
|
||||||
// alram = schdlrVO.getSchdlrAlarmDatetime();
|
// alram = schdlrVO.getSchdlrAlarmDatetime();
|
||||||
// }
|
// }
|
||||||
switch(schdlrVO.getSchdlrAlarmCnd()) {
|
switch (schdlrVO.getSchdlrAlarmCnd()) {
|
||||||
case "0" : alram = "정시"; break;
|
case "0":
|
||||||
case "10" : alram = "십분 전"; break;
|
alram = "정시";
|
||||||
case "30" : alram = "삼십분 전"; break;
|
break;
|
||||||
case "60" : alram = "한시간 전"; break;
|
case "10":
|
||||||
case "etc" : alram = schdlrVO.getSchdlrAlarmDatetime(); break;
|
alram = "십분 전";
|
||||||
|
break;
|
||||||
|
case "30":
|
||||||
|
alram = "삼십분 전";
|
||||||
|
break;
|
||||||
|
case "60":
|
||||||
|
alram = "한시간 전";
|
||||||
|
break;
|
||||||
|
case "etc":
|
||||||
|
alram = schdlrVO.getSchdlrAlarmDatetime();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
String mailContent = Jsoup.parse(new File(MAIL_CONTENT_PATH + "/direct/mail_template/sch_alrm_cont.html"), "UTF-8").toString();
|
String mailContent = Jsoup
|
||||||
|
.parse(new File(MAIL_CONTENT_PATH + "/direct/mail_template/sch_alrm_cont.html"), "UTF-8")
|
||||||
|
.toString();
|
||||||
mailContent = mailContent.replace("#일정명", schdlrVO.getSchdlrTitle());
|
mailContent = mailContent.replace("#일정명", schdlrVO.getSchdlrTitle());
|
||||||
mailContent = mailContent.replace("#일시", schdlrVO.getSchdlrBgnDatetime() + " ~ " + schdlrVO.getSchdlrEndDatetime());
|
mailContent = mailContent.replace("#일시",
|
||||||
|
schdlrVO.getSchdlrBgnDatetime() + " ~ " + schdlrVO.getSchdlrEndDatetime());
|
||||||
mailContent = mailContent.replace("#장소", schdlrVO.getSchdlrPlace());
|
mailContent = mailContent.replace("#장소", schdlrVO.getSchdlrPlace());
|
||||||
mailContent = mailContent.replace("#내용", schdlrVO.getSchdlrCn().replaceAll("(\r\n|\r|\n|\n\r)", "<br>"));
|
mailContent = mailContent.replace("#내용", schdlrVO.getSchdlrCn().replaceAll("(\r\n|\r|\n|\n\r)", "<br>"));
|
||||||
mailContent = mailContent.replace("#알림설정", alram);
|
mailContent = mailContent.replace("#알림설정", alram);
|
||||||
@ -256,75 +278,71 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
LOGGER.debug("mail send resultMsg: ", resultMsg);
|
LOGGER.debug("mail send resultMsg: ", resultMsg);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
LOGGER.error("Sending Mail Exception : {} [unknown Exception]", ex.getCause());
|
LOGGER.error("Sending Mail Exception : {} [unknown Exception]", ex.getCause());
|
||||||
//LOGGER.error(ex.getMessage());
|
// LOGGER.error(ex.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 메인화면 > 전체일정
|
// 메인화면 > 전체일정
|
||||||
public List<SchdlrVO> selectMainSchList(SchdlrVO schdlrVO) throws Exception {
|
public List<SchdlrVO> selectMainSchList(SchdlrVO schdlrVO) throws Exception {
|
||||||
return schdlrManageDAO.selectMainSchList(schdlrVO);
|
return schdlrManageDAO.selectMainSchList(schdlrVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
//문자온 문자발송 실패 건수 환불 배치(1주 대상)
|
// 문자온 문자발송 실패 건수 환불 배치(1주 대상)
|
||||||
public void msgFailPayBack() throws Exception{
|
public void msgFailPayBack() throws Exception {
|
||||||
|
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
System.out.println("문자온 실패 건수 환불 스케줄러 실행!!!(1weeks)" + now);
|
System.out.println("문자온 실패 건수 환불 스케줄러 실행!!!(1weeks)" + now);
|
||||||
/*
|
/*
|
||||||
* 문자발송 실패 건수 확인 및 캐시 환불 처리
|
* 문자발송 실패 건수 확인 및 캐시 환불 처리
|
||||||
* */
|
*/
|
||||||
mjonMsgDataService.selectMsgSentFailList();
|
mjonMsgDataService.selectMsgSentFailList();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 세틀뱅크 입금 확인 및 캐시 충전 배치 프로세스
|
* 세틀뱅크 입금 확인 및 캐시 충전 배치 프로세스
|
||||||
* */
|
*/
|
||||||
/*VacsAhstVO vacsAhstVO = new VacsAhstVO();
|
/*
|
||||||
List<VacsAhstVO> resultBeforCashList = vacsAhstService.selectBeforCashList(vacsAhstVO);
|
* VacsAhstVO vacsAhstVO = new VacsAhstVO(); List<VacsAhstVO>
|
||||||
|
* resultBeforCashList = vacsAhstService.selectBeforCashList(vacsAhstVO);
|
||||||
if(resultBeforCashList != null) {
|
*
|
||||||
|
* if(resultBeforCashList != null) {
|
||||||
for(VacsAhstVO temp : resultBeforCashList) {
|
*
|
||||||
|
* for(VacsAhstVO temp : resultBeforCashList) {
|
||||||
StVcVO stvcVO = new StVcVO();
|
*
|
||||||
|
* StVcVO stvcVO = new StVcVO();
|
||||||
stvcVO.setOrgCd(temp.getOrgCd());
|
*
|
||||||
stvcVO.setBankCd(temp.getBankCd());
|
* stvcVO.setOrgCd(temp.getOrgCd()); stvcVO.setBankCd(temp.getBankCd());
|
||||||
stvcVO.setIacctNo(temp.getIacctNo());
|
* stvcVO.setIacctNo(temp.getIacctNo()); stvcVO.setTrNo(temp.getTrNo());
|
||||||
stvcVO.setTrNo(temp.getTrNo());
|
* stvcVO.setTrIl(temp.getTrIl()); stvcVO.setTrAmt(temp.getTrAmt());
|
||||||
stvcVO.setTrIl(temp.getTrIl());
|
* stvcVO.setIacctNm(temp.getIacctNm()); stvcVO.setMberId(temp.getMberId());
|
||||||
stvcVO.setTrAmt(temp.getTrAmt());
|
*
|
||||||
stvcVO.setIacctNm(temp.getIacctNm());
|
* //세틀뱅크 입금 내역 자동 충전하기 mjonPayService.insertVcCharge(stvcVO);
|
||||||
stvcVO.setMberId(temp.getMberId());
|
*
|
||||||
|
* //세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기
|
||||||
//세틀뱅크 입금 내역 자동 충전하기
|
* vacsAhstService.updateVacsAhstCashComplete(temp);
|
||||||
mjonPayService.insertVcCharge(stvcVO);
|
*
|
||||||
|
* }
|
||||||
//세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기
|
*
|
||||||
vacsAhstService.updateVacsAhstCashComplete(temp);
|
* }
|
||||||
|
*/
|
||||||
}
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//문자온 문자발송 실패 건수 환불 배치(31일)
|
// 문자온 문자발송 실패 건수 환불 배치(31일)
|
||||||
public void msgFailPayBackOneByDay() throws Exception{
|
public void msgFailPayBackOneByDay() throws Exception {
|
||||||
|
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
System.out.println("문자온 실패 건수 환불 스케줄러 실행!!!(31days)" + now);
|
System.out.println("문자온 실패 건수 환불 스케줄러 실행!!!(31days)" + now);
|
||||||
/*
|
/*
|
||||||
* 문자발송 실패 건수 확인 및 캐시 환불 처리
|
* 문자발송 실패 건수 확인 및 캐시 환불 처리
|
||||||
* */
|
*/
|
||||||
mjonMsgDataService.selectMsgSentFailListOneByDay();
|
// mjonMsgDataService.selectMsgSentFailListOneByDay();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 팩스 발송 실패 건수 환불 배치
|
// 팩스 발송 실패 건수 환불 배치
|
||||||
public void faxFailPayBack() throws Exception{
|
public void faxFailPayBack() throws Exception {
|
||||||
|
|
||||||
System.out.println("팩스 실패 건수 환불 스케줄러 실행!!!" + new Date());
|
System.out.println("팩스 실패 건수 환불 스케줄러 실행!!!" + new Date());
|
||||||
|
|
||||||
@ -332,25 +350,25 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
faxDao.selectFaxSentFailList();
|
faxDao.selectFaxSentFailList();
|
||||||
}
|
}
|
||||||
|
|
||||||
//전용계좌 자동 충전 배치
|
// 전용계좌 자동 충전 배치
|
||||||
public void vacsAutoCharge() throws Exception{
|
public void vacsAutoCharge() throws Exception {
|
||||||
|
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
System.out.println("문자온 전용계좌 자동 충전 스케줄러 실행 !!!" + now);
|
System.out.println("문자온 전용계좌 자동 충전 스케줄러 실행 !!!" + now);
|
||||||
/*
|
/*
|
||||||
* 문자발송 실패 건수 확인 및 캐시 환불 처리
|
* 문자발송 실패 건수 확인 및 캐시 환불 처리
|
||||||
* */
|
*/
|
||||||
//mjonMsgDataService.selectMsgSentFailList();
|
// mjonMsgDataService.selectMsgSentFailList();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 세틀뱅크 입금 확인 및 캐시 충전 배치 프로세스
|
* 세틀뱅크 입금 확인 및 캐시 충전 배치 프로세스
|
||||||
* */
|
*/
|
||||||
VacsAhstVO vacsAhstVO = new VacsAhstVO();
|
VacsAhstVO vacsAhstVO = new VacsAhstVO();
|
||||||
List<VacsAhstVO> resultBeforCashList = vacsAhstService.selectBeforCashList(vacsAhstVO);
|
List<VacsAhstVO> resultBeforCashList = vacsAhstService.selectBeforCashList(vacsAhstVO);
|
||||||
|
|
||||||
if(resultBeforCashList != null) {
|
if (resultBeforCashList != null) {
|
||||||
|
|
||||||
for(VacsAhstVO temp : resultBeforCashList) {
|
for (VacsAhstVO temp : resultBeforCashList) {
|
||||||
|
|
||||||
StVcVO stvcVO = new StVcVO();
|
StVcVO stvcVO = new StVcVO();
|
||||||
|
|
||||||
@ -363,57 +381,55 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
stvcVO.setIacctNm(temp.getIacctNm());
|
stvcVO.setIacctNm(temp.getIacctNm());
|
||||||
stvcVO.setMberId(temp.getMberId());
|
stvcVO.setMberId(temp.getMberId());
|
||||||
|
|
||||||
//세틀뱅크 입금 내역 자동 충전하기
|
// 세틀뱅크 입금 내역 자동 충전하기
|
||||||
mjonPayService.insertVcCharge(stvcVO);
|
mjonPayService.insertVcCharge(stvcVO);
|
||||||
|
|
||||||
//세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기
|
// 세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기
|
||||||
vacsAhstService.updateVacsAhstCashComplete(temp);
|
vacsAhstService.updateVacsAhstCashComplete(temp);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String Userid = temp.getMberId();
|
String Userid = temp.getMberId();
|
||||||
String mberNm = "";
|
String mberNm = "";
|
||||||
|
|
||||||
// 대상 : 휴대폰결제, 즉시이체, 전용계좌
|
// 대상 : 휴대폰결제, 즉시이체, 전용계좌
|
||||||
// Step 1. 스미싱의심 지정 여부
|
// Step 1. 스미싱의심 지정 여부
|
||||||
JoinSettingVO joinSettingVO = new JoinSettingVO();
|
JoinSettingVO joinSettingVO = new JoinSettingVO();
|
||||||
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
|
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
|
||||||
if (joinSettingVO != null && joinSettingVO.getSmishingNoti().equals("Y")) {
|
if (joinSettingVO != null && joinSettingVO.getSmishingNoti().equals("Y")) {
|
||||||
// Step 1. 개인회원 여부 체크
|
// Step 1. 개인회원 여부 체크
|
||||||
int isPersnalMemberCnt = egovSiteManagerService.selectPersnalMemberCnt(Userid);
|
int isPersnalMemberCnt = egovSiteManagerService.selectPersnalMemberCnt(Userid);
|
||||||
if (isPersnalMemberCnt == 1) {
|
if (isPersnalMemberCnt == 1) {
|
||||||
// Step 2. 첫결제 여부 체크
|
// Step 2. 첫결제 여부 체크
|
||||||
int isFirstPayCnt = egovSiteManagerService.selectFirstPayCnt(Userid);
|
int isFirstPayCnt = egovSiteManagerService.selectFirstPayCnt(Userid);
|
||||||
if (isFirstPayCnt == 1) {
|
if (isFirstPayCnt == 1) {
|
||||||
// SMS 체크
|
// SMS 체크
|
||||||
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
|
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
|
||||||
// 스미싱의심 SMS 알림전송
|
// 스미싱의심 SMS 알림전송
|
||||||
mjonNoticeSendUtil.smishingSmsNoticeSend("스미싱의심/전용계좌 첫결제", Userid, mberNm);
|
mjonNoticeSendUtil.smishingSmsNoticeSend("스미싱의심/전용계좌 첫결제", Userid, mberNm);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SLACK 체크
|
// SLACK 체크
|
||||||
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
|
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
|
||||||
// Slack 메시지 발송(단순본문)
|
// Slack 메시지 발송(단순본문)
|
||||||
String msg = "[문자온] 스미싱의심/전용계좌 첫결제 - " + mberNm +"("+ Userid + ")";
|
String msg = "[문자온] 스미싱의심/전용계좌 첫결제 - " + mberNm + "(" + Userid + ")";
|
||||||
mjonCommon.sendSimpleSlackMsg(msg);
|
mjonCommon.sendSimpleSlackMsg(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 스미싱 의심회원으로 변경
|
// 스미싱 의심회원으로 변경
|
||||||
UserManageVO userManageVO = new UserManageVO();
|
UserManageVO userManageVO = new UserManageVO();
|
||||||
userManageVO.setSmishingYn("Y");
|
userManageVO.setSmishingYn("Y");
|
||||||
userManageVO.setMberId(Userid);
|
userManageVO.setMberId(Userid);
|
||||||
userManageService.updateOneUserSmishingYnNotAlert(userManageVO);
|
userManageService.updateOneUserSmishingYnNotAlert(userManageVO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch (Exception e) {
|
|
||||||
System.out.println("#############################################################");
|
System.out.println("#############################################################");
|
||||||
System.out.println("전용계좌 슬랙알림 & 스미싱의심 처리 Error");
|
System.out.println("전용계좌 슬랙알림 & 스미싱의심 처리 Error");
|
||||||
System.out.println("전용계좌 TrNo : " + temp.getTrNo());
|
System.out.println("전용계좌 TrNo : " + temp.getTrNo());
|
||||||
System.out.println("전용계좌 e.getMessage() : " + e.getMessage());
|
System.out.println("전용계좌 e.getMessage() : " + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,14 +437,13 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 카카오 환불 처리 리스트
|
||||||
//카카오 환불 처리 리스트
|
|
||||||
public void kakaoFailPayBack() throws Exception {
|
public void kakaoFailPayBack() throws Exception {
|
||||||
|
|
||||||
//카카오 알림톡 환불 처리
|
// 카카오 알림톡 환불 처리
|
||||||
kakaoAlimTalkService.selectKakaoAtSentRefundList();
|
kakaoAlimTalkService.selectKakaoAtSentRefundList();
|
||||||
|
|
||||||
//카카오 친구톡 환불 처리
|
// 카카오 친구톡 환불 처리
|
||||||
kakaoAlimTalkService.selectKakaoFtSentRefundList();
|
kakaoAlimTalkService.selectKakaoFtSentRefundList();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -436,41 +451,109 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
@Override
|
@Override
|
||||||
public void payBack(String type, int limitCout) throws Exception {
|
public void payBack(String type, int limitCout) throws Exception {
|
||||||
// 문자 환불
|
// 문자 환불
|
||||||
if ("ONE".equals(type)) { //하루에 한번만 31일 대상으로 실행
|
if ("ONE".equals(type)) { // 하루에 한번만 31일 대상으로 실행
|
||||||
msgFailPayBackOneByDay();
|
msgFailPayBackOneByDay();
|
||||||
|
|
||||||
}else { //2분 마다는 7일을 대상으로 실행
|
} else { // 2분 마다는 7일을 대상으로 실행
|
||||||
MjonMsgVO mjonMsgVO = new MjonMsgVO();
|
MjonMsgVO mjonMsgVO = new MjonMsgVO();
|
||||||
mjonMsgVO.setRecordCountPerPage(limitCout);
|
mjonMsgVO.setRecordCountPerPage(limitCout);
|
||||||
|
|
||||||
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailSchedulerList(mjonMsgVO);
|
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailSchedulerList(mjonMsgVO);
|
||||||
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
int batchSize = 300;
|
int batchSize = 300;
|
||||||
int totalSize = msgFailList.size();
|
int totalSize = msgFailList.size();
|
||||||
int endj =0;
|
int endj = 0;
|
||||||
for (int i = 0; i < totalSize; i += batchSize) {
|
for (int i = 0; i < totalSize; i += batchSize) {
|
||||||
int end = Math.min(i + batchSize, totalSize);
|
int end = Math.min(i + batchSize, totalSize);
|
||||||
long beforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
long beforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
for(int j=endj; j < end; j++) {
|
for (int j = endj; j < end; j++) {
|
||||||
System.out.println(j+" : "+ end);
|
System.out.println(j + " : " + end);
|
||||||
try {
|
try {
|
||||||
mjonMsgDataDAO.updateMsgSentFailPayBack(msgFailList.get(j));
|
mjonMsgDataDAO.updateMsgSentFailPayBack(msgFailList.get(j));
|
||||||
}catch(Exception ex) {
|
} catch (Exception ex) {
|
||||||
System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
||||||
System.out.println(msgFailList.get(j).getUserId()+" : "+ msgFailList.get(j).getMsgGroupId() +" : "+ msgFailList.get(j).getUserData());
|
System.out.println(msgFailList.get(j).getUserId() + " : "
|
||||||
|
+ msgFailList.get(j).getMsgGroupId() + " : " + msgFailList.get(j).getUserData());
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
endj = end;
|
endj = end;
|
||||||
|
|
||||||
long afterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
long afterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
long secDiffTime = (afterTime - beforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
long secDiffTime = (afterTime - beforeTime) / 1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
System.out.println("==PayBack for 1 =============> : " + secDiffTime +"초");
|
System.out.println("==PayBack for 1 =============> : " + secDiffTime + "초");
|
||||||
}
|
}
|
||||||
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
long forSecDiffTime = (forAfterTime - forBeforeTime) / 1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초");
|
System.out.println(
|
||||||
|
"==PayBack for 2 =============> 수량 : " + msgFailList.size() + " ===== " + forSecDiffTime + "초");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @methodName : refundTest
|
||||||
|
* @author : 이호영
|
||||||
|
* @date : 2024.12.12
|
||||||
|
* @description : 환불 데이터
|
||||||
|
* @param p_type
|
||||||
|
* @param request
|
||||||
|
* @param model
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void payBack_advc(String p_type) throws Exception {
|
||||||
|
List<MjonMsgVO> msgFailList = new ArrayList<>();
|
||||||
|
|
||||||
|
msgFailList = getMsgFailList(p_type);
|
||||||
|
|
||||||
|
// 리스트가 비어있는 경우 종료
|
||||||
|
if (msgFailList == null || msgFailList.isEmpty()) {
|
||||||
|
System.out.println("No payBack messages empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 필요한 필드만 DTO로 매핑
|
||||||
|
List<RefundDTO> dtoList = msgFailList.stream().map(msg -> new RefundDTO(msg.getUserId(),
|
||||||
|
msg.getMsgGroupId(), Integer.parseInt(msg.getUserData()), msg.getEachPrice()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// JSON 변환
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
String msgFailListJson = objectMapper.writeValueAsString(dtoList);
|
||||||
|
|
||||||
|
mjonMsgDataDAO.updateMsgSentFailPayBackBatch(msgFailListJson);
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @methodName : getMsgFailList
|
||||||
|
* @author : 이호영
|
||||||
|
* @date : 2024.12.12
|
||||||
|
* @description : 파라미터에 따라 환불 데이터 가져오기
|
||||||
|
* @param p_type
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
private List<MjonMsgVO> getMsgFailList(String p_type) throws Exception {
|
||||||
|
List<MjonMsgVO> msgFailList = new ArrayList<>();
|
||||||
|
// 문자 환불
|
||||||
|
if ("ONE".equals(p_type)) { // 하루에 한번만 31일 대상으로 실행
|
||||||
|
|
||||||
|
msgFailList = mjonMsgDataDAO.selectMsgSentFailListOneByDay();
|
||||||
|
} else {
|
||||||
|
// 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
|
||||||
|
// schdlrManageService.msgFailPayBack();
|
||||||
|
|
||||||
|
msgFailList = mjonMsgDataDAO.selectMsgSentFailList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return msgFailList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4040,28 +4040,38 @@
|
|||||||
</update>
|
</update>
|
||||||
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들 -->
|
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들 -->
|
||||||
<select id="MjonMsgDataDAO.selectMsgSentFailList" resultClass="mjonMsgVO">
|
<select id="MjonMsgDataDAO.selectMsgSentFailList" resultClass="mjonMsgVO">
|
||||||
|
/*MjonMsgDataDAO.selectMsgSentFailList*/
|
||||||
|
|
||||||
SELECT USER_ID AS userId,
|
|
||||||
MSG_GROUP_ID AS msgGroupId,
|
SELECT MMD.USER_ID AS userId
|
||||||
MSG_SEQ AS msgSeq,
|
, MMD.MSG_GROUP_ID AS msgGroupId
|
||||||
USERDATA AS userData,
|
, MMD.MSG_SEQ AS msgSeq
|
||||||
REFUND_YN AS refundYn,
|
, MMD.USERDATA AS userData
|
||||||
RSLT_CODE AS rsltCode,
|
, MMD.REFUND_YN AS refundYn
|
||||||
RSLT_CODE2 AS rsltCode2,
|
, MMD.RSLT_CODE AS rsltCode
|
||||||
AGENT_CODE AS agentCode,
|
, MMD.RSLT_CODE2 AS rsltCode2
|
||||||
DATE_FORMAT(SENT_DATE,'%Y-%m-%d %T') AS sentDate,
|
, MMD.AGENT_CODE AS agentCode
|
||||||
DATE_FORMAT(RSLT_DATE,'%Y-%m-%d %T') AS rsltDate
|
, DATE_FORMAT(MMD.SENT_DATE,'%Y-%m-%d %T') AS sentDate
|
||||||
FROM MJ_MSG_DATA MMD
|
, DATE_FORMAT(MMD.RSLT_DATE,'%Y-%m-%d %T') AS rsltDate
|
||||||
INNER JOIN LETTNGNRLMBER MB
|
, MGD.EACH_PRICE AS eachPrice
|
||||||
ON MMD.USER_ID = MB.MBER_ID
|
FROM MJ_MSG_DATA MMD
|
||||||
WHERE 1=1
|
INNER JOIN LETTNGNRLMBER MB
|
||||||
AND MMD.SENT_DATE > date_add(now(), interval -7 day)
|
ON MMD.USER_ID = MB.MBER_ID
|
||||||
AND MMD.CUR_STATE = '3'
|
LEFT JOIN MJ_MSG_GROUP_DATA MGD
|
||||||
AND MMD.REFUND_YN = 'N'
|
ON MMD.MSG_GROUP_ID = MGD.MSG_GROUP_ID
|
||||||
AND MMD.RESERVE_C_YN = 'N'
|
LEFT JOIN MJ_CASH MC
|
||||||
AND MMD.MSG_TYPE IN ('4','6')
|
ON MC.ORDER_ID = MMD.USERDATA
|
||||||
AND MMD.USER_ID NOT IN ('hftest', 'itntest', 'imotest', 'itntestBatch')
|
AND MC.USER_ID = MMD.USER_ID
|
||||||
AND
|
WHERE 1=1
|
||||||
|
AND MMD.SENT_DATE > date_add(now(), interval -7 day)
|
||||||
|
AND MMD.CUR_STATE = '3'
|
||||||
|
AND MMD.REFUND_YN = 'N'
|
||||||
|
AND MMD.RESERVE_C_YN = 'N'
|
||||||
|
AND MMD.MSG_TYPE IN ('4','6')
|
||||||
|
AND MMD.USER_ID NOT IN ('hftest', 'itntest', 'imotest', 'itntestBatch')
|
||||||
|
AND MGD.EACH_PRICE != 0
|
||||||
|
AND MC.ORDER_ID IS NULL
|
||||||
|
AND
|
||||||
(CASE
|
(CASE
|
||||||
WHEN MMD.AGENT_CODE = '01' AND ( MMD.RSLT_CODE = '100' AND (MMD.RSLT_CODE2 = '0'))
|
WHEN MMD.AGENT_CODE = '01' AND ( MMD.RSLT_CODE = '100' AND (MMD.RSLT_CODE2 = '0'))
|
||||||
THEN 'S'
|
THEN 'S'
|
||||||
@ -4088,6 +4098,9 @@
|
|||||||
THEN 'W'
|
THEN 'W'
|
||||||
ELSE 'F'
|
ELSE 'F'
|
||||||
END) IN ('F')
|
END) IN ('F')
|
||||||
|
ORDER BY MMD.USER_ID
|
||||||
|
LIMIT 10000
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들 -->
|
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들 -->
|
||||||
@ -4145,54 +4158,65 @@
|
|||||||
|
|
||||||
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들(하루에 한번은 31일 실행) -->
|
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들(하루에 한번은 31일 실행) -->
|
||||||
<select id="MjonMsgDataDAO.selectMsgSentFailListOneByDay" resultClass="mjonMsgVO">
|
<select id="MjonMsgDataDAO.selectMsgSentFailListOneByDay" resultClass="mjonMsgVO">
|
||||||
|
/*MjonMsgDataDAO.selectMsgSentFailListOneByDay*/
|
||||||
|
|
||||||
SELECT USER_ID AS userId,
|
SELECT MMD.USER_ID AS userId
|
||||||
MSG_GROUP_ID AS msgGroupId,
|
, MMD.MSG_GROUP_ID AS msgGroupId
|
||||||
MSG_SEQ AS msgSeq,
|
, MMD.MSG_SEQ AS msgSeq
|
||||||
USERDATA AS userData,
|
, MMD.USERDATA AS userData
|
||||||
REFUND_YN AS refundYn,
|
, MMD.REFUND_YN AS refundYn
|
||||||
RSLT_CODE AS rsltCode,
|
, MMD.RSLT_CODE AS rsltCode
|
||||||
RSLT_CODE2 AS rsltCode2,
|
, MMD.RSLT_CODE2 AS rsltCode2
|
||||||
AGENT_CODE AS agentCode,
|
, MMD.AGENT_CODE AS agentCode
|
||||||
DATE_FORMAT(SENT_DATE,'%Y-%m-%d %T') AS sentDate,
|
, DATE_FORMAT(MMD.SENT_DATE,'%Y-%m-%d %T') AS sentDate
|
||||||
DATE_FORMAT(RSLT_DATE,'%Y-%m-%d %T') AS rsltDate
|
, DATE_FORMAT(MMD.RSLT_DATE,'%Y-%m-%d %T') AS rsltDate
|
||||||
FROM MJ_MSG_DATA MMD
|
, MGD.EACH_PRICE AS eachPrice
|
||||||
INNER JOIN LETTNGNRLMBER MB
|
FROM MJ_MSG_DATA MMD
|
||||||
ON MMD.USER_ID = MB.MBER_ID
|
INNER JOIN LETTNGNRLMBER MB
|
||||||
WHERE 1=1
|
ON MMD.USER_ID = MB.MBER_ID
|
||||||
AND MMD.SENT_DATE > date_add(now(), interval -40 day)
|
LEFT JOIN MJ_MSG_GROUP_DATA MGD
|
||||||
AND MMD.CUR_STATE = '3'
|
ON MMD.MSG_GROUP_ID = MGD.MSG_GROUP_ID
|
||||||
AND MMD.REFUND_YN = 'N'
|
LEFT JOIN MJ_CASH MC
|
||||||
AND MMD.RESERVE_C_YN = 'N'
|
ON MC.ORDER_ID = MMD.USERDATA
|
||||||
AND MMD.MSG_TYPE IN ('4','6')
|
AND MC.USER_ID = MMD.USER_ID
|
||||||
AND MMD.USER_ID NOT IN ('hftest', 'itntest', 'imotest', 'itntestBatch')
|
WHERE 1=1
|
||||||
AND
|
AND MMD.SENT_DATE > date_add(now(), interval -40 day)
|
||||||
(CASE
|
AND MMD.CUR_STATE = '3'
|
||||||
WHEN MMD.AGENT_CODE = '01' AND ( MMD.RSLT_CODE = '100' AND (MMD.RSLT_CODE2 = '0'))
|
AND MMD.REFUND_YN = 'N'
|
||||||
THEN 'S'
|
AND MMD.RESERVE_C_YN = 'N'
|
||||||
WHEN MMD.AGENT_CODE = '02' AND (MMD.RSLT_CODE = '0')
|
AND MMD.MSG_TYPE IN ('4','6')
|
||||||
THEN 'S'
|
AND MMD.USER_ID NOT IN ('hftest', 'itntest', 'imotest', 'itntestBatch')
|
||||||
WHEN MMD.AGENT_CODE = '03' AND (MMD.RSLT_CODE = '100' OR MMD.RSLT_CODE = '101' OR MMD.RSLT_CODE = '110' OR MMD.RSLT_CODE = '800')
|
AND MGD.EACH_PRICE != 0
|
||||||
THEN 'S'
|
AND MC.ORDER_ID IS NULL
|
||||||
WHEN MMD.AGENT_CODE = '04' AND (MMD.RSLT_CODE = '4100' OR MMD.RSLT_CODE = '6600')
|
AND
|
||||||
THEN 'S'
|
(CASE
|
||||||
WHEN MMD.AGENT_CODE = '05' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001')
|
WHEN MMD.AGENT_CODE = '01' AND ( MMD.RSLT_CODE = '100' AND (MMD.RSLT_CODE2 = '0'))
|
||||||
THEN 'S'
|
THEN 'S'
|
||||||
WHEN MMD.AGENT_CODE = '07' AND (MMD.RSLT_CODE = '6' OR MMD.RSLT_CODE = '1000')
|
WHEN MMD.AGENT_CODE = '02' AND (MMD.RSLT_CODE = '0')
|
||||||
THEN 'S'
|
THEN 'S'
|
||||||
WHEN MMD.AGENT_CODE = '08' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001')
|
WHEN MMD.AGENT_CODE = '03' AND (MMD.RSLT_CODE = '100' OR MMD.RSLT_CODE = '101' OR MMD.RSLT_CODE = '110' OR MMD.RSLT_CODE = '800')
|
||||||
THEN 'S'
|
THEN 'S'
|
||||||
WHEN MMD.AGENT_CODE = '09' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001')
|
WHEN MMD.AGENT_CODE = '04' AND (MMD.RSLT_CODE = '4100' OR MMD.RSLT_CODE = '6600')
|
||||||
THEN 'S'
|
THEN 'S'
|
||||||
WHEN (
|
WHEN MMD.AGENT_CODE = '05' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001')
|
||||||
MMD.RSLT_CODE IS NULL
|
THEN 'S'
|
||||||
AND MMD.RSLT_CODE2 IS NULL
|
WHEN MMD.AGENT_CODE = '07' AND (MMD.RSLT_CODE = '6' OR MMD.RSLT_CODE = '1000')
|
||||||
AND MMD.SENT_DATE IS NULL
|
THEN 'S'
|
||||||
AND MMD.RSLT_DATE IS NULL
|
WHEN MMD.AGENT_CODE = '08' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001')
|
||||||
|
THEN 'S'
|
||||||
|
WHEN MMD.AGENT_CODE = '09' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001')
|
||||||
|
THEN 'S'
|
||||||
|
WHEN (
|
||||||
|
MMD.RSLT_CODE IS NULL
|
||||||
|
AND MMD.RSLT_CODE2 IS NULL
|
||||||
|
AND MMD.SENT_DATE IS NULL
|
||||||
|
AND MMD.RSLT_DATE IS NULL
|
||||||
)
|
)
|
||||||
THEN 'W'
|
THEN 'W'
|
||||||
ELSE 'F'
|
ELSE 'F'
|
||||||
END) IN ('F')
|
END) IN ('F')
|
||||||
|
ORDER BY MMD.USER_ID
|
||||||
|
LIMIT 10000
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
@ -55,12 +55,12 @@ function checkOnlyHpNum(str) {
|
|||||||
|
|
||||||
위 번호로 시작하는 팩스 번호만 허용함.
|
위 번호로 시작하는 팩스 번호만 허용함.
|
||||||
*/
|
*/
|
||||||
function checkFaxNum(str) {
|
function checkFaxNum(str) {
|
||||||
str = removeDash(str);
|
str = removeDash(str);
|
||||||
var subNum = str.substring(0,3);
|
var subNum = str.substring(0,3);
|
||||||
var regExp = /^(02|0[3-6][1-4]|030|050|060|070|080|1\d{2})$/;
|
var regExp = /^(02|03[1-3]|04[1-4]|05[1-5]|06[1-4]|030|050|060|070|080|1\d{2})$/;
|
||||||
return regExp.test(subNum);
|
return regExp.test(subNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 일반전화 유효성 체크
|
* 일반전화 유효성 체크
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user