환불관련 작업중

This commit is contained in:
hehihoho3@gmail.com 2024-12-11 18:23:21 +09:00
parent b75a76c1b5
commit 187f11057e
5 changed files with 95 additions and 6 deletions

View File

@ -296,6 +296,11 @@ public class MjonMsgDataDAO extends EgovAbstractDAO {
select("MjonMsgDataDAO.updateMsgSentFailPayBack", mjonMsgVO);
}
public void updateMsgSentFailPayBackBatch(String msgFailListJson) {
select("MjonMsgDataDAO.updateMsgSentFailPayBackBatch", msgFailListJson);
}
//현재 발송 건수 합계 구하기
public String selectMsgSentSumData(String userId) throws Exception{
return (String) select("MjonMsgDataDAO.selectMsgSentSumData", userId);

View File

@ -3097,6 +3097,8 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
public void selectMsgSentFailListOneByDay()throws Exception{
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailListOneByDay();
System.out.println(" ++ msgFailList.size() : " + msgFailList.size());
for(MjonMsgVO vo : msgFailList) {

View File

@ -55,6 +55,8 @@ import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.util.UriUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
@ -84,6 +86,7 @@ import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
@ -232,7 +235,10 @@ public class TestController {
private EgovUserManageService egovUserManageService;
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
private MsgHolidayService msgHolidayService;
@Resource(name="MjonMsgDataDAO")
private MjonMsgDataDAO mjonMsgDataDAO;
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
@ -3411,5 +3417,75 @@ public class TestController {
}
@RequestMapping(value = "/web/mjon/test/refundTest.do")
public ResponseEntity<StatusResponse> refundTest(
@RequestParam String p_type,
HttpServletRequest request,
ModelMap model) throws Exception {
System.out.println(" p_type :: "+p_type);
long startTime = System.nanoTime(); // 시작 시간 기록
// 문자 환불
if ("ONE".equals(p_type)) { //하루에 한번만 31일 대상으로 실행
schdlrManageService.msgFailPayBackOneByDay();
}else {
// 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14
//schdlrManageService.msgFailPayBack();
List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList();
// 리스트가 비어있는 경우 종료
if (msgFailList == null || msgFailList.isEmpty()) {
System.out.println("No messages to process.");
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "데이터 없음", ""));
}
long forBeforeTime = System.currentTimeMillis(); // 코드 실행 시간
// int count = 0;
System.out.println("== msgFailList =============> : "+ msgFailList.size());
// for(MjonMsgVO vo : msgFailList) {
// System.out.println(count + " : "+ msgFailList.size());
try {
// JSON 변환
ObjectMapper objectMapper = new ObjectMapper();
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 forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산( 단위)
System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"");
}
long endTime = System.nanoTime(); // 종료 시간 기록
long executionTimeInSeconds = (endTime - startTime) / 1_000_000_000; // 실행 시간 ()
// 분과 초로 변환
long minutes = executionTimeInSeconds / 60; //
long seconds = executionTimeInSeconds % 60; //
System.out.println("Execution time: " + minutes + " minutes " + seconds + " seconds");
// return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "", ""));
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "테스트", ""));
}
}

View File

@ -39,7 +39,7 @@ import net.javacrumbs.shedlock.core.SchedulerLock;
import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider;
import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;
@Profile({"!local", "!dev"})
@Profile({"!local"})
@Service("SchedulerUtil")
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S") // Scheduler Lock 사용 가능 설정 (기본 30초동안 Lock)
@ -92,8 +92,8 @@ public class SchedulerUtil {
* 10분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다.
* */
// Schdule Lock (10분동안)
@Scheduled(cron = "0 0/10 * * * ?")
@SchedulerLock(name = "runScenarioOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
// @Scheduled(cron = "0 0/10 * * * ?")
// @SchedulerLock(name = "runScenarioOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
public void runScenarioOneTime() throws Exception {
// do something...
@ -121,8 +121,8 @@ public class SchedulerUtil {
/*
* 매일 5시20분에 31일전 데이터에서 환불 대상을 찾아서 환불 한다.
* */
@Scheduled(cron = "20 20 5 * * ?")
@SchedulerLock(name = "runScenarioOneTimeOneByDay", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
// @Scheduled(cron = "20 20 5 * * ?")
// @SchedulerLock(name = "runScenarioOneTimeOneByDay", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN)
public void runScenarioOneTimeOneByDay() throws Exception {
// do something...

View File

@ -4203,6 +4203,12 @@
</procedure>
<procedure id="MjonMsgDataDAO.updateMsgSentFailPayBackBatch" parameterClass="string">
{call procMsgRefundBatch(#msgFailListJson#)}
</procedure>
<select id="mjonMsgDAO.selectMsgResultCodeAllList" parameterClass="mjonMsgResultCodeVO" resultClass="mjonMsgResultCodeVO">
SELECT RESULT_ID AS resultId,