Merge branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
@42ff118484c99222a9d54bddf529d1cd46ad67db
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
... | ... | @@ -264,7 +264,13 @@ |
| 264 | 264 |
|
| 265 | 265 |
return (List<MjonMsgVO>) list("MjonMsgDataDAO.selectMsgSentFailList");
|
| 266 | 266 |
} |
| 267 |
+ |
|
| 268 |
+ @SuppressWarnings("unchecked")
|
|
| 269 |
+ public List<MjonMsgVO> selectMsgSentFailSchedulerList(MjonMsgVO mjonMsgVO)throws Exception{
|
|
| 267 | 270 |
|
| 271 |
+ return (List<MjonMsgVO>) list("MjonMsgDataDAO.selectMsgSentFailSchedulerList", mjonMsgVO);
|
|
| 272 |
+ } |
|
| 273 |
+ |
|
| 268 | 274 |
@SuppressWarnings("unchecked")
|
| 269 | 275 |
public List<MjonMsgVO> selectMsgSentFailListOneByDay()throws Exception{
|
| 270 | 276 |
|
--- src/main/java/itn/let/schdlr/service/SchdlrManageService.java
+++ src/main/java/itn/let/schdlr/service/SchdlrManageService.java
... | ... | @@ -49,5 +49,7 @@ |
| 49 | 49 |
|
| 50 | 50 |
//문자온 카카오톡 실패 건수 환불 배치 |
| 51 | 51 |
public void kakaoFailPayBack() throws Exception; |
| 52 |
- |
|
| 52 |
+ |
|
| 53 |
+ //문자온 문자전송 실패 건수 환불 배치 |
|
| 54 |
+ public void payBack(String type, int limitCout) throws Exception; |
|
| 53 | 55 |
} |
--- src/main/java/itn/let/schdlr/service/SchedulerUtil.java
+++ src/main/java/itn/let/schdlr/service/SchedulerUtil.java
... | ... | @@ -91,8 +91,8 @@ |
| 91 | 91 |
/* |
| 92 | 92 |
* 2분 마다 1주일 데이터에서 환불 대상을 찾아서 환불 한다. |
| 93 | 93 |
* */ |
| 94 |
- // Schdule Lock (2분동안) |
|
| 95 |
- @Scheduled(cron = "0 0/2 * * * ?") |
|
| 94 |
+ // Schdule Lock (5분동안) |
|
| 95 |
+ @Scheduled(cron = "0 0/5 * * * ?") |
|
| 96 | 96 |
@SchedulerLock(name = "runScenarioOneTime", lockAtMostForString = ONE_MIN, lockAtLeastForString = ONE_MIN) |
| 97 | 97 |
public void runScenarioOneTime() throws Exception {
|
| 98 | 98 |
|
... | ... | @@ -101,7 +101,10 @@ |
| 101 | 101 |
System.out.println("=============SchedulerUtil=====runScenarioOneTime =============>");
|
| 102 | 102 |
|
| 103 | 103 |
//문자 환불, 팩스 환불 |
| 104 |
- PayBack("");
|
|
| 104 |
+ |
|
| 105 |
+ |
|
| 106 |
+ //PayBack("");
|
|
| 107 |
+ |
|
| 105 | 108 |
/* |
| 106 | 109 |
// 문자 환불 |
| 107 | 110 |
schdlrManageService.msgFailPayBack(); |
... | ... | @@ -481,18 +484,35 @@ |
| 481 | 484 |
}else { //2분 마다는 7일을 대상으로 실행
|
| 482 | 485 |
//어플리케이션 트랜잭션 문제가 있어 Util 단으로 DB 호출을 가져옴 - 2024-03-14 |
| 483 | 486 |
//schdlrManageService.msgFailPayBack(); |
| 484 |
- |
|
| 485 |
- List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailList(); |
|
| 486 |
- |
|
| 487 |
- for(MjonMsgVO vo : msgFailList) {
|
|
| 488 |
- try {
|
|
| 489 |
- mjonMsgDataDAO.updateMsgSentFailPayBack(vo); |
|
| 490 |
- }catch(Exception ex) {
|
|
| 491 |
- System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
|
| 492 |
- System.out.println(vo.getUserId()+" : "+ vo.getMsgGroupId() +" : "+ vo.getUserData()); |
|
| 493 |
- ex.printStackTrace(); |
|
| 494 |
- } |
|
| 495 |
- } |
|
| 487 |
+ MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
|
| 488 |
+ mjonMsgVO.setRecordCountPerPage(500); |
|
| 489 |
+ List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailSchedulerList(mjonMsgVO); |
|
| 490 |
+ long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간 |
|
| 491 |
+ int batchSize = 300; |
|
| 492 |
+ int totalSize = msgFailList.size(); |
|
| 493 |
+ int endj =0; |
|
| 494 |
+ for (int i = 0; i < totalSize; i += batchSize) {
|
|
| 495 |
+ int end = Math.min(i + batchSize, totalSize); |
|
| 496 |
+ long beforeTime = System.currentTimeMillis(); // 코드 실행 전 시간 |
|
| 497 |
+ for(int j=endj; j < end; j++) {
|
|
| 498 |
+ System.out.println(j+" : "+ end); |
|
| 499 |
+ try {
|
|
| 500 |
+ mjonMsgDataDAO.updateMsgSentFailPayBack(msgFailList.get(j)); |
|
| 501 |
+ }catch(Exception ex) {
|
|
| 502 |
+ System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
|
| 503 |
+ System.out.println(msgFailList.get(j).getUserId()+" : "+ msgFailList.get(j).getMsgGroupId() +" : "+ msgFailList.get(j).getUserData()); |
|
| 504 |
+ ex.printStackTrace(); |
|
| 505 |
+ } |
|
| 506 |
+ } |
|
| 507 |
+ endj = end; |
|
| 508 |
+ |
|
| 509 |
+ long afterTime = System.currentTimeMillis(); // 코드 실행 후 시간 |
|
| 510 |
+ long secDiffTime = (afterTime - beforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위) |
|
| 511 |
+ System.out.println("==PayBack for 1 =============> : " + secDiffTime +"초");
|
|
| 512 |
+ } |
|
| 513 |
+ long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간 |
|
| 514 |
+ long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위) |
|
| 515 |
+ System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초");
|
|
| 496 | 516 |
} |
| 497 | 517 |
|
| 498 | 518 |
System.out.println("==== faxFailPayBack ====");
|
--- src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
+++ src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
... | ... | @@ -20,7 +20,9 @@ |
| 20 | 20 |
import itn.let.fax.user.service.impl.FaxDAO; |
| 21 | 21 |
import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; |
| 22 | 22 |
import itn.let.mjo.mjocommon.MjonCommon; |
| 23 |
+import itn.let.mjo.msg.service.MjonMsgVO; |
|
| 23 | 24 |
import itn.let.mjo.msgdata.service.MjonMsgDataService; |
| 25 |
+import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO; |
|
| 24 | 26 |
import itn.let.mjo.pay.service.MjonPayService; |
| 25 | 27 |
import itn.let.mjo.pay.service.StVcVO; |
| 26 | 28 |
import itn.let.mjo.payva.service.VacsAhstService; |
... | ... | @@ -62,6 +64,9 @@ |
| 62 | 64 |
|
| 63 | 65 |
@Value("#{globalSettings['Globals.HOMPAGE_URL']}")
|
| 64 | 66 |
private String HOMPAGE_URL; |
| 67 |
+ |
|
| 68 |
+ @Resource(name="MjonMsgDataDAO") |
|
| 69 |
+ private MjonMsgDataDAO mjonMsgDataDAO; |
|
| 65 | 70 |
|
| 66 | 71 |
//문자온 카카오 알림톡 발송 서비스 |
| 67 | 72 |
@Resource(name = "kakaoAlimTalkService") |
... | ... | @@ -423,5 +428,45 @@ |
| 423 | 428 |
kakaoAlimTalkService.selectKakaoAtSentRefundList(); |
| 424 | 429 |
|
| 425 | 430 |
} |
| 426 |
- |
|
| 431 |
+ |
|
| 432 |
+ @Override |
|
| 433 |
+ public void payBack(String type, int limitCout) throws Exception {
|
|
| 434 |
+ // 문자 환불 |
|
| 435 |
+ if ("ONE".equals(type)) { //하루에 한번만 31일 대상으로 실행
|
|
| 436 |
+ msgFailPayBackOneByDay(); |
|
| 437 |
+ |
|
| 438 |
+ }else { //2분 마다는 7일을 대상으로 실행
|
|
| 439 |
+ MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
|
| 440 |
+ mjonMsgVO.setRecordCountPerPage(limitCout); |
|
| 441 |
+ |
|
| 442 |
+ List<MjonMsgVO> msgFailList = mjonMsgDataDAO.selectMsgSentFailSchedulerList(mjonMsgVO); |
|
| 443 |
+ long forBeforeTime = System.currentTimeMillis(); // 코드 실행 전 시간 |
|
| 444 |
+ int batchSize = 300; |
|
| 445 |
+ int totalSize = msgFailList.size(); |
|
| 446 |
+ int endj =0; |
|
| 447 |
+ for (int i = 0; i < totalSize; i += batchSize) {
|
|
| 448 |
+ int end = Math.min(i + batchSize, totalSize); |
|
| 449 |
+ long beforeTime = System.currentTimeMillis(); // 코드 실행 전 시간 |
|
| 450 |
+ for(int j=endj; j < end; j++) {
|
|
| 451 |
+ System.out.println(j+" : "+ end); |
|
| 452 |
+ try {
|
|
| 453 |
+ mjonMsgDataDAO.updateMsgSentFailPayBack(msgFailList.get(j)); |
|
| 454 |
+ }catch(Exception ex) {
|
|
| 455 |
+ System.out.println("=============SchedulerUtil=====PayBack Catch =============>");
|
|
| 456 |
+ System.out.println(msgFailList.get(j).getUserId()+" : "+ msgFailList.get(j).getMsgGroupId() +" : "+ msgFailList.get(j).getUserData()); |
|
| 457 |
+ ex.printStackTrace(); |
|
| 458 |
+ } |
|
| 459 |
+ } |
|
| 460 |
+ endj = end; |
|
| 461 |
+ |
|
| 462 |
+ long afterTime = System.currentTimeMillis(); // 코드 실행 후 시간 |
|
| 463 |
+ long secDiffTime = (afterTime - beforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위) |
|
| 464 |
+ System.out.println("==PayBack for 1 =============> : " + secDiffTime +"초");
|
|
| 465 |
+ } |
|
| 466 |
+ long forAfterTime = System.currentTimeMillis(); // 코드 실행 후 시간 |
|
| 467 |
+ long forSecDiffTime = (forAfterTime - forBeforeTime)/1000; // 코드 실행 전후 시간 차이 계산(초 단위) |
|
| 468 |
+ System.out.println("==PayBack for 2 =============> 수량 : "+msgFailList.size()+" ===== " + forSecDiffTime +"초");
|
|
| 469 |
+ |
|
| 470 |
+ } |
|
| 471 |
+ } |
|
| 427 | 472 |
} |
--- src/main/java/itn/web/ContentController.java
+++ src/main/java/itn/web/ContentController.java
... | ... | @@ -36,6 +36,7 @@ |
| 36 | 36 |
import itn.let.lett.service.LetterVO; |
| 37 | 37 |
import itn.let.mjo.pay.service.MjonPayVO; |
| 38 | 38 |
import itn.let.schdlr.service.SchdlrManageService; |
| 39 |
+import itn.let.schdlr.service.SchedulerUtil; |
|
| 39 | 40 |
import itn.let.uss.ion.cnt.service.CntManageVO; |
| 40 | 41 |
import itn.let.uss.ion.cnt.service.EgovCntManageService; |
| 41 | 42 |
|
... | ... | @@ -768,4 +769,41 @@ |
| 768 | 769 |
} |
| 769 | 770 |
*/ |
| 770 | 771 |
|
| 772 |
+ // 전용계좌 스케줄러 실행 |
|
| 773 |
+ @RequestMapping(value= {"/web/main/payBackAutoChargeAjax.do"})
|
|
| 774 |
+ public ModelAndView payBackAutoChargeAjax(HttpServletRequest request, |
|
| 775 |
+ ModelMap model) throws Exception{
|
|
| 776 |
+ |
|
| 777 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 778 |
+ modelAndView.setViewName("jsonView");
|
|
| 779 |
+ |
|
| 780 |
+ boolean isSuccess = true; |
|
| 781 |
+ String msg = ""; |
|
| 782 |
+ |
|
| 783 |
+ try {
|
|
| 784 |
+ String pageType = ""; |
|
| 785 |
+ if(request.getParameter("type") != null) {
|
|
| 786 |
+ pageType = request.getParameter("type");
|
|
| 787 |
+ } |
|
| 788 |
+ |
|
| 789 |
+ int limitCout = 500; |
|
| 790 |
+ if(request.getParameter("limitCout") != null) {
|
|
| 791 |
+ limitCout = Integer.parseInt(request.getParameter("limitCout"));
|
|
| 792 |
+ } |
|
| 793 |
+ |
|
| 794 |
+ System.out.println("type : " + pageType);
|
|
| 795 |
+ System.out.println("limitCout : " + limitCout);
|
|
| 796 |
+ |
|
| 797 |
+ schdlrManageService.payBack(pageType, limitCout); |
|
| 798 |
+ } |
|
| 799 |
+ catch(Exception e) {
|
|
| 800 |
+ isSuccess = false; |
|
| 801 |
+ msg = e.getMessage(); |
|
| 802 |
+ } |
|
| 803 |
+ |
|
| 804 |
+ modelAndView.addObject("isSuccess", isSuccess);
|
|
| 805 |
+ modelAndView.addObject("msg", msg);
|
|
| 806 |
+ |
|
| 807 |
+ return modelAndView; |
|
| 808 |
+ } |
|
| 771 | 809 |
} |
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
... | ... | @@ -4006,9 +4006,8 @@ |
| 4006 | 4006 |
WHERE SEARCH_WORD = #searchKeyword# |
| 4007 | 4007 |
|
| 4008 | 4008 |
</update> |
| 4009 |
- |
|
| 4010 | 4009 |
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들 --> |
| 4011 |
- <select id="MjonMsgDataDAO.selectMsgSentFailList" resultClass="mjonMsgVO"> |
|
| 4010 |
+ <select id="MjonMsgDataDAO.selectMsgSentFailList"> |
|
| 4012 | 4011 |
|
| 4013 | 4012 |
SELECT USER_ID AS userId, |
| 4014 | 4013 |
MSG_GROUP_ID AS msgGroupId, |
... | ... | @@ -4057,7 +4056,59 @@ |
| 4057 | 4056 |
THEN 'W' |
| 4058 | 4057 |
ELSE 'F' |
| 4059 | 4058 |
END) IN ('F')
|
| 4059 |
+ </select> |
|
| 4060 | 4060 |
|
| 4061 |
+ <!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들 --> |
|
| 4062 |
+ <select id="MjonMsgDataDAO.selectMsgSentFailSchedulerList" resultClass="mjonMsgVO"> |
|
| 4063 |
+ |
|
| 4064 |
+ SELECT USER_ID AS userId, |
|
| 4065 |
+ MSG_GROUP_ID AS msgGroupId, |
|
| 4066 |
+ MSG_SEQ AS msgSeq, |
|
| 4067 |
+ USERDATA AS userData, |
|
| 4068 |
+ REFUND_YN AS refundYn, |
|
| 4069 |
+ RSLT_CODE AS rsltCode, |
|
| 4070 |
+ RSLT_CODE2 AS rsltCode2, |
|
| 4071 |
+ AGENT_CODE AS agentCode, |
|
| 4072 |
+ DATE_FORMAT(SENT_DATE,'%Y-%m-%d %T') AS sentDate, |
|
| 4073 |
+ DATE_FORMAT(RSLT_DATE,'%Y-%m-%d %T') AS rsltDate |
|
| 4074 |
+ FROM MJ_MSG_DATA MMD |
|
| 4075 |
+ INNER JOIN LETTNGNRLMBER MB |
|
| 4076 |
+ ON MMD.USER_ID = MB.MBER_ID |
|
| 4077 |
+ WHERE 1=1 |
|
| 4078 |
+ AND MMD.SENT_DATE > date_add(now(), interval -7 day) |
|
| 4079 |
+ AND MMD.CUR_STATE = '3' |
|
| 4080 |
+ AND MMD.REFUND_YN = 'N' |
|
| 4081 |
+ AND MMD.RESERVE_C_YN = 'N' |
|
| 4082 |
+ AND MMD.MSG_TYPE IN ('4','6')
|
|
| 4083 |
+ AND MMD.USER_ID NOT IN ('hftest', 'itntest', 'imotest', 'itntestBatch')
|
|
| 4084 |
+ AND |
|
| 4085 |
+ (CASE |
|
| 4086 |
+ WHEN MMD.AGENT_CODE = '01' AND ( MMD.RSLT_CODE = '100' AND (MMD.RSLT_CODE2 = '0')) |
|
| 4087 |
+ THEN 'S' |
|
| 4088 |
+ WHEN MMD.AGENT_CODE = '02' AND (MMD.RSLT_CODE = '0') |
|
| 4089 |
+ THEN 'S' |
|
| 4090 |
+ 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') |
|
| 4091 |
+ THEN 'S' |
|
| 4092 |
+ WHEN MMD.AGENT_CODE = '04' AND (MMD.RSLT_CODE = '4100' OR MMD.RSLT_CODE = '6600') |
|
| 4093 |
+ THEN 'S' |
|
| 4094 |
+ WHEN MMD.AGENT_CODE = '05' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001') |
|
| 4095 |
+ THEN 'S' |
|
| 4096 |
+ WHEN MMD.AGENT_CODE = '07' AND (MMD.RSLT_CODE = '6' OR MMD.RSLT_CODE = '1000') |
|
| 4097 |
+ THEN 'S' |
|
| 4098 |
+ WHEN MMD.AGENT_CODE = '08' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001') |
|
| 4099 |
+ THEN 'S' |
|
| 4100 |
+ WHEN MMD.AGENT_CODE = '09' AND (MMD.RSLT_CODE = '1000' OR MMD.RSLT_CODE = '1001') |
|
| 4101 |
+ THEN 'S' |
|
| 4102 |
+ WHEN ( |
|
| 4103 |
+ MMD.RSLT_CODE IS NULL |
|
| 4104 |
+ AND MMD.RSLT_CODE2 IS NULL |
|
| 4105 |
+ AND MMD.SENT_DATE IS NULL |
|
| 4106 |
+ AND MMD.RSLT_DATE IS NULL |
|
| 4107 |
+ ) |
|
| 4108 |
+ THEN 'W' |
|
| 4109 |
+ ELSE 'F' |
|
| 4110 |
+ END) IN ('F')
|
|
| 4111 |
+ LIMIT #recordCountPerPage# |
|
| 4061 | 4112 |
</select> |
| 4062 | 4113 |
|
| 4063 | 4114 |
<!-- 문자발송 실패건에 대한 환불 대상 리스트 : 발송 완료되었고, 결과코드가 실패이고, 예약 취소가 아닌건들(하루에 한번은 31일 실행) --> |
--- src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp
... | ... | @@ -472,17 +472,18 @@ |
| 472 | 472 |
</div> |
| 473 | 473 |
</div> |
| 474 | 474 |
<ul class="clause_list"> |
| 475 |
+ <c:set var="clause_count" value="0" /> |
|
| 475 | 476 |
<c:forEach var="result" items="${termsList}" varStatus="status">
|
| 476 | 477 |
|
| 477 | 478 |
<!-- 광고성 정보 수신 제외한 약관 --> |
| 478 | 479 |
<c:if test="${result.termsId ne 'TERMS_00000025' && result.termsId ne 'TERMS_00000026' && result.termsId ne 'TERMS_00000027' && result.termsId ne 'TERMS_00000028' && result.termsId ne 'TERMS_00000029'}" >
|
| 479 |
- <c:if test="${status.index eq '0'}">
|
|
| 480 |
+ <c:if test="${clause_count eq '0'}">
|
|
| 480 | 481 |
<li class="list_open on"> |
| 481 | 482 |
</c:if> |
| 482 |
- <c:if test="${status.index ne '0'}">
|
|
| 483 |
+ <c:if test="${clause_count ne '0'}">
|
|
| 483 | 484 |
<li class="list_open"> |
| 484 | 485 |
</c:if> |
| 485 |
- |
|
| 486 |
+ <c:set var="clause_count" value="${clause_count + 1}"/>
|
|
| 486 | 487 |
<!--필수인지 체크 후 본인인증 화면 전 필수 약관들 체크했는지 확인 --> |
| 487 | 488 |
<c:set var="necCheck" value="" /> |
| 488 | 489 |
<c:if test="${result.necYn eq 'Y' }">
|
--- src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
+++ src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
... | ... | @@ -62,8 +62,8 @@ |
| 62 | 62 |
|
| 63 | 63 |
|
| 64 | 64 |
if(agreePrivatePopCk != null){//개인정보 및 이용약관 개정 팝업 노출, 3일안보기 쿠키 있으면 팝업 안모여준다.
|
| 65 |
- // $(".agreePrivatePop").css("display","none");
|
|
| 66 |
- // $(".agreePrivatePop").hide();
|
|
| 65 |
+ $(".agreePrivatePop").css("display","none");
|
|
| 66 |
+ $(".agreePrivatePop").hide();
|
|
| 67 | 67 |
} |
| 68 | 68 |
|
| 69 | 69 |
if(evntPopCk != null && pointPopCk != null){//팝업 쿠키가 모두 있는 경우 안보여준다.
|
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?