환불 스케줄러 변경
This commit is contained in:
parent
da5253894d
commit
7e2b27f673
@ -260,9 +260,9 @@ public class MjonMsgDataDAO extends EgovAbstractDAO {
|
|||||||
|
|
||||||
//문자검색 전송 실패 리스트 불러오기
|
//문자검색 전송 실패 리스트 불러오기
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public List<MjonMsgVO> selectMsgSentFailList()throws Exception{
|
public List<MjonMsgVO> selectMsgSentFailList(MjonMsgVO mjonMsgVO)throws Exception{
|
||||||
|
|
||||||
return (List<MjonMsgVO>) list("MjonMsgDataDAO.selectMsgSentFailList");
|
return (List<MjonMsgVO>) list("MjonMsgDataDAO.selectMsgSentFailList", mjonMsgVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|||||||
@ -50,4 +50,6 @@ public interface SchdlrManageService {
|
|||||||
//문자온 카카오톡 실패 건수 환불 배치
|
//문자온 카카오톡 실패 건수 환불 배치
|
||||||
public void kakaoFailPayBack() throws Exception;
|
public void kakaoFailPayBack() throws Exception;
|
||||||
|
|
||||||
|
//문자온 문자전송 실패 건수 환불 배치
|
||||||
|
public void payBack(String type, int limitCout) throws Exception;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -91,8 +91,8 @@ public class SchedulerUtil {
|
|||||||
/*
|
/*
|
||||||
* 2분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
|
* 2분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
|
||||||
* */
|
* */
|
||||||
// Schdule Lock (2분동안)
|
// Schdule Lock (5분동안)
|
||||||
@Scheduled(cron = "0 0/2 * * * ?")
|
@Scheduled(cron = "0 0/5 * * * ?")
|
||||||
@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 {
|
||||||
|
|
||||||
@ -102,8 +102,8 @@ public class SchedulerUtil {
|
|||||||
|
|
||||||
//문자 환불, 팩스 환불
|
//문자 환불, 팩스 환불
|
||||||
|
|
||||||
//임시 주석처리
|
|
||||||
//PayBack("");
|
PayBack("");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// 문자 환불
|
// 문자 환불
|
||||||
@ -484,18 +484,35 @@ public class SchedulerUtil {
|
|||||||
}else { //2분 마다는 7일을 대상으로 실행
|
}else { //2분 마다는 7일을 대상으로 실행
|
||||||
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14
|
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14
|
||||||
//schdlrManageService.msgFailPayBack();
|
//schdlrManageService.msgFailPayBack();
|
||||||
|
MjonMsgVO mjonMsgVO = new MjonMsgVO();
|
||||||
|
mjonMsgVO.setRecordCountPerPage(1000);
|
||||||
|
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList(mjonMsgVO);
|
||||||
|
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
|
int batchSize = 300;
|
||||||
|
int totalSize = msgFailList.size();
|
||||||
|
int endj =0;
|
||||||
|
for (int i = 0; i < totalSize; i += batchSize) {
|
||||||
|
int end = Math.min(i + batchSize, totalSize);
|
||||||
|
long beforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
|
for(int j=endj; j < end; j++) {
|
||||||
|
System.out.println(j+" : "+ end);
|
||||||
|
try {
|
||||||
|
mjonMsgDataDAO.updateMsgSentFailPayBack(msgFailList.get(j));
|
||||||
|
}catch(Exception ex) {
|
||||||
|
System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
||||||
|
System.out.println(msgFailList.get(j).getUserId()+" : "+ msgFailList.get(j).getMsgGroupId() +" : "+ msgFailList.get(j).getUserData());
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endj = end;
|
||||||
|
|
||||||
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList();
|
long afterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
|
long secDiffTime = (afterTime - beforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
for(MjonMsgVO vo : msgFailList) {
|
System.out.println("==PayBack for 1 =============> : " + secDiffTime +"초");
|
||||||
try {
|
}
|
||||||
mjonMsgDataDAO.updateMsgSentFailPayBack(vo);
|
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
}catch(Exception ex) {
|
long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초");
|
||||||
System.out.println(vo.getUserId()+" : "+ vo.getMsgGroupId() +" : "+ vo.getUserData());
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("==== faxFailPayBack ====");
|
System.out.println("==== faxFailPayBack ====");
|
||||||
|
|||||||
@ -20,7 +20,9 @@ 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.mjo.mjocommon.MjonCommon;
|
import itn.let.mjo.mjocommon.MjonCommon;
|
||||||
|
import itn.let.mjo.msg.service.MjonMsgVO;
|
||||||
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.pay.service.MjonPayService;
|
import itn.let.mjo.pay.service.MjonPayService;
|
||||||
import itn.let.mjo.pay.service.StVcVO;
|
import itn.let.mjo.pay.service.StVcVO;
|
||||||
import itn.let.mjo.payva.service.VacsAhstService;
|
import itn.let.mjo.payva.service.VacsAhstService;
|
||||||
@ -63,6 +65,9 @@ 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")
|
||||||
|
private MjonMsgDataDAO mjonMsgDataDAO;
|
||||||
|
|
||||||
//문자온 카카오 알림톡 발송 서비스
|
//문자온 카카오 알림톡 발송 서비스
|
||||||
@Resource(name = "kakaoAlimTalkService")
|
@Resource(name = "kakaoAlimTalkService")
|
||||||
private KakaoAlimTalkService kakaoAlimTalkService;
|
private KakaoAlimTalkService kakaoAlimTalkService;
|
||||||
@ -424,4 +429,44 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void payBack(String type, int limitCout) throws Exception {
|
||||||
|
// 문자 환불
|
||||||
|
if ("ONE".equals(type)) { //하루에 한번만 31일 대상으로 실행
|
||||||
|
msgFailPayBackOneByDay();
|
||||||
|
|
||||||
|
}else { //2분 마다는 7일을 대상으로 실행
|
||||||
|
MjonMsgVO mjonMsgVO = new MjonMsgVO();
|
||||||
|
mjonMsgVO.setRecordCountPerPage(limitCout);
|
||||||
|
|
||||||
|
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList(mjonMsgVO);
|
||||||
|
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
|
int batchSize = 300;
|
||||||
|
int totalSize = msgFailList.size();
|
||||||
|
int endj =0;
|
||||||
|
for (int i = 0; i < totalSize; i += batchSize) {
|
||||||
|
int end = Math.min(i + batchSize, totalSize);
|
||||||
|
long beforeTime = System.currentTimeMillis(); // 코드 실행 전 시간
|
||||||
|
for(int j=endj; j < end; j++) {
|
||||||
|
System.out.println(j+" : "+ end);
|
||||||
|
try {
|
||||||
|
mjonMsgDataDAO.updateMsgSentFailPayBack(msgFailList.get(j));
|
||||||
|
}catch(Exception ex) {
|
||||||
|
System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
||||||
|
System.out.println(msgFailList.get(j).getUserId()+" : "+ msgFailList.get(j).getMsgGroupId() +" : "+ msgFailList.get(j).getUserData());
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endj = end;
|
||||||
|
|
||||||
|
long afterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
|
long secDiffTime = (afterTime - beforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
|
System.out.println("==PayBack for 1 =============> : " + secDiffTime +"초");
|
||||||
|
}
|
||||||
|
long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간
|
||||||
|
long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위)
|
||||||
|
System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,6 +36,7 @@ import itn.let.lett.service.LetterService;
|
|||||||
import itn.let.lett.service.LetterVO;
|
import itn.let.lett.service.LetterVO;
|
||||||
import itn.let.mjo.pay.service.MjonPayVO;
|
import itn.let.mjo.pay.service.MjonPayVO;
|
||||||
import itn.let.schdlr.service.SchdlrManageService;
|
import itn.let.schdlr.service.SchdlrManageService;
|
||||||
|
import itn.let.schdlr.service.SchedulerUtil;
|
||||||
import itn.let.uss.ion.cnt.service.CntManageVO;
|
import itn.let.uss.ion.cnt.service.CntManageVO;
|
||||||
import itn.let.uss.ion.cnt.service.EgovCntManageService;
|
import itn.let.uss.ion.cnt.service.EgovCntManageService;
|
||||||
|
|
||||||
@ -768,4 +769,41 @@ public class ContentController{
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// 전용계좌 스케줄러 실행
|
||||||
|
@RequestMapping(value= {"/web/main/payBackAutoChargeAjax.do"})
|
||||||
|
public ModelAndView payBackAutoChargeAjax(HttpServletRequest request,
|
||||||
|
ModelMap model) throws Exception{
|
||||||
|
|
||||||
|
ModelAndView modelAndView = new ModelAndView();
|
||||||
|
modelAndView.setViewName("jsonView");
|
||||||
|
|
||||||
|
boolean isSuccess = true;
|
||||||
|
String msg = "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
String pageType = "";
|
||||||
|
if(request.getParameter("type") != null) {
|
||||||
|
pageType = request.getParameter("type");
|
||||||
|
}
|
||||||
|
|
||||||
|
int limitCout = 1000;
|
||||||
|
if(request.getParameter("limitCout") != null) {
|
||||||
|
limitCout = Integer.parseInt(request.getParameter("limitCout"));
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("type : " + pageType);
|
||||||
|
System.out.println("limitCout : " + limitCout);
|
||||||
|
|
||||||
|
schdlrManageService.payBack(pageType, limitCout);
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
isSuccess = false;
|
||||||
|
msg = e.getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
modelAndView.addObject("isSuccess", isSuccess);
|
||||||
|
modelAndView.addObject("msg", msg);
|
||||||
|
|
||||||
|
return modelAndView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3951,7 +3951,7 @@
|
|||||||
THEN 'W'
|
THEN 'W'
|
||||||
ELSE 'F'
|
ELSE 'F'
|
||||||
END) IN ('F')
|
END) IN ('F')
|
||||||
|
LIMIT #recordCountPerPage#
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들(하루에 한번은 31일 실행) -->
|
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들(하루에 한번은 31일 실행) -->
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user