woo 2023-07-11
Merge branch 'master' of http://rosewiper@vcs.iten.co.kr:9999/hylee/mjon_git
@25f6864f0c42f0ad14960277e1e87a310959dd6b
src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
@@ -753,7 +753,7 @@
 				if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
 					//Slack으로 메세지 전송 처리
 					MjonCommon comm = new MjonCommon();
-//					comm.getAdminKakaoAtSandSlack(kakaoVO);
+					comm.getAdminKakaoAtSandSlack(kakaoVO);
 				}
 			}
 			
src/main/java/itn/let/mjo/pay/web/MjonKGMPayController.java
--- src/main/java/itn/let/mjo/pay/web/MjonKGMPayController.java
+++ src/main/java/itn/let/mjo/pay/web/MjonKGMPayController.java
@@ -313,8 +313,42 @@
     		UserManageVO userManageVO = new UserManageVO();
     		userManageVO.setSmishingYn("Y");
     		userManageVO.setMberId(Userid);
-    		userManageService.updateOneUserSmishingYn(userManageVO);
+    		userManageService.updateOneUserSmishingYnNotAlert(userManageVO);
     	}
+    	else {
+    		// 대상 : 휴대폰결제, 즉시이체, 전용계좌
+    		// Step 1. 스미싱의심 지정 여부
+    		JoinSettingVO joinSettingVO = new JoinSettingVO();
+    		joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+    		if (joinSettingVO != null && joinSettingVO.getSmishingNoti().equals("Y")) {
+	    		// Step 1. 개인회원 여부 체크
+    			int isPersnalMemberCnt = egovSiteManagerService.selectPersnalMemberCnt(Userid);
+	    		if (isPersnalMemberCnt == 1) {
+	    			// Step 2. 첫결제 여부 체크
+	    			int isFirstPayCnt = egovSiteManagerService.selectFirstPayCnt(Userid);
+	    			if (isFirstPayCnt == 1) {
+			    		// SMS 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+			    			// 스미싱의심 SMS 알림전송
+			    			mjonNoticeSendUtil.smishingSmsNoticeSend("스미싱의심/휴대폰 첫결제", Userid, mberNm);    		
+			    		}    								    		
+	    				
+	    				// SLACK 체크
+			    		if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {    		
+				    		// Slack 메시지 발송(단순본문)
+				    		String msg = "[문자온] 스미싱의심/휴대폰 첫결제 - " + mberNm +"("+ Userid + ")";
+				    		mjonCommon.sendSimpleSlackMsg(msg);    		
+			    		}
+			    		
+			    		// 스미싱 의심회원으로 변경
+			    		UserManageVO userManageVO = new UserManageVO();
+			    		userManageVO.setSmishingYn("Y");
+			    		userManageVO.setMberId(Userid);
+			    		userManageService.updateOneUserSmishingYnNotAlert(userManageVO);				    				
+	    			}
+	    		}
+    		}			    		
+    	}    	
     	
     	redirect.addAttribute("Resultcd", Resultcd);
     	redirect.addAttribute("Tradeid", Tradeid);
src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
--- src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
+++ src/main/java/itn/let/schdlr/service/impl/SchdlrManageServiceImpl.java
@@ -28,7 +28,9 @@
 import itn.let.schdlr.service.SchdlrManageService;
 import itn.let.schdlr.service.SchdlrVO;
 import itn.let.sym.site.service.EgovSiteManagerService;
+import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.uss.umt.service.EgovUserManageService;
+import itn.let.uss.umt.service.UserManageVO;
 import itn.let.utl.user.service.MjonNoticeSendUtil;
 
 @Service("SchdlrManageService")
@@ -362,7 +364,6 @@
 				//세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기
 				vacsAhstService.updateVacsAhstCashComplete(temp);
 				
-				/*
 				try {
 					String Userid = temp.getMberId();
 					String mberNm = "";
@@ -407,7 +408,7 @@
 					System.out.println("전용계좌 TrNo : " + temp.getTrNo());
 					System.out.println("전용계좌 e.getMessage() : " + e.getMessage());		    		
 		    	}
-		    	*/				
+			
 				
 			}
 			
src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
@@ -517,9 +517,14 @@
 				AND MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
 				AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
 				AND MD.DEL_FLAG = 'N'
-				<!-- JSPark 2023.03.24 알림톡 전송완료 목록은 (즉시 + 예약 발송완료) 노출 -->
+				<!-- JSPark 2023.07.10 알림톡 전송완료 목록은 (즉시 + 예약 발송완료 + 처리안된 지연문자(즉시,예약) 노출 -->
 				<![CDATA[
-				AND MG.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE) 
+			    AND CASE 
+			    	WHEN MG.RESERVE_YN = 'N' 
+			      		THEN (MG.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)) 
+			    	WHEN MG.RESERVE_YN = 'Y' 
+			      		THEN (MG.REQ_DATE <= NOW() OR (MG.AT_DELAY_YN = 'Y' AND MG.AT_DELAY_COMPLETE_YN = 'N'))					
+			    END								
 				]]>
 				<isNotEmpty property="userId">
 				AND MG.USER_ID = #userId#
@@ -740,9 +745,9 @@
 					THEN '단문'
 					ELSE '장문'
 				END BIZ_KAKAO_RESEND_TYPE
-                , A.BIZ_KAKAO_RESEND_DATA
-                , A.BIZ_KAKAO_JSON_FILE
-                , A.BIZ_UMID
+				, A.BIZ_KAKAO_RESEND_DATA
+				, A.BIZ_KAKAO_JSON_FILE
+				, A.BIZ_UMID
 				<include refid="KakaoSentDAO.selectJoinQuery"/>
 				<isNotEmpty property="userId">
 					AND B.USER_ID = #userId#
@@ -762,7 +767,12 @@
 					AND A.MSG_TYPE IN ('8','9')
 			</isEmpty>
 				<![CDATA[ 
-					AND B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
+					AND CASE 
+						WHEN B.RESERVE_YN = 'N' 
+							THEN (B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)) 
+						WHEN B.RESERVE_YN = 'Y' 
+							THEN (B.REQ_DATE <= NOW() OR (B.AT_DELAY_YN = 'Y' AND B.AT_DELAY_COMPLETE_YN = 'N'))
+					END
 				]]>
 			)M
 			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
src/main/webapp/WEB-INF/jsp/agent/MjonMsgAgentStsMultiUpdate.jsp
--- src/main/webapp/WEB-INF/jsp/agent/MjonMsgAgentStsMultiUpdate.jsp
+++ src/main/webapp/WEB-INF/jsp/agent/MjonMsgAgentStsMultiUpdate.jsp
@@ -275,7 +275,7 @@
 		var confCode = $("#confCode").val();
 		
 		
-		if (!confirm('문자발송 사용여부는 전송사 비율과 상관없이\n사용자 문자 발송 사용여부가 일괄 적용됩니다.(주의)\n\n수정 하시겠습니까?')){
+		if (!confirm('문자, 알림톡 사용자화면 발송 사용여부가 변경됩니다.\n긴급 시스템작업시에만 사용해주세요.\n수정 하시겠습니까?')){
 			return false;
 		}
 		
@@ -374,7 +374,7 @@
 			<br><br />
 			<div class="listTop maxWth">
 				<span class="tType4 c_e40000 fwBold">
-					<p >문자발송 사용여부 - 전송사 비율과 상관없이, 사용자 문자 발송 사용여부 일괄 적용(주의)</p>
+					<p>문자, 알림톡 발송 사용여부 - 문자, 알림톡 사용자화면 발송 사용여부(주의)</p>
 				</span>
 			</div>
 			<div class="tableWrap maxWth">
@@ -386,7 +386,7 @@
 					<tbody>
 						<tr>
 							<th>
-								문자발송 사용여부
+								문자, 알림톡 발송 사용여부
 							</th>
 							<td>
 								<ec:select codeId="CONF01" name="confCode" id="confCode" css="class='select'" selectedValue="${confVO.confCode}" />
src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
--- src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
+++ src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
@@ -3689,7 +3689,7 @@
 																	<c:otherwise>
 																		그림문자
 																	</c:otherwise>
-																</c:choose>
+																</c:choose>	
 																<div class="sms_detail_hover">
 																	<c:if test="${not empty fn:split(mjonMsgSentList.atchFiles, '^')[0]}">
 																		<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(mjonMsgSentList.atchFiles, '^')[0]}&fileSn=0" style="width: 110px;">
@@ -3870,9 +3870,9 @@
 																	<c:otherwise>
 																		-
 																	</c:otherwise>
-																</c:choose>											
+																</c:choose>
 															</c:otherwise>
-														</c:choose>													</td>
+														</c:choose>
 													</td>
 													<td><c:out value="${mjonMsgSentList.callFrom}"/></td>
 													<td class="sms_detail" style="text-align: left;">
@@ -3885,7 +3885,7 @@
 																	<c:otherwise>
 																		그림문자
 																	</c:otherwise>
-																</c:choose>
+																</c:choose>	
 																<div class="sms_detail_hover">
 																	<c:if test="${not empty fn:split(mjonMsgSentList.atchFiles, '^')[0]}">
 																		<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(mjonMsgSentList.atchFiles, '^')[0]}&fileSn=0" style="width: 110px;">
@@ -4066,24 +4066,16 @@
 												</td>
 												<td><c:out value="${mjonMsgDelaySentList.callFrom}"/></td>
 												<td class="sms_detail" style="text-align: left;">
-													<%--
-													<div class="ellipsis_line">
-														<!-- 그림문자 중 텍스트 내용은 없고 그림 이미지만 있는경우 처리 -->
-														<c:choose>
-															<c:when test="${empty mjonMsgDelaySentList.smsTxt && not empty mjonMsgDelaySentList.filePath1}">
-																그림이미지
-															</c:when>
-															<c:otherwise>
-																<c:out value="${mjonMsgDelaySentList.smsTxt}"/>
-															</c:otherwise>
-														</c:choose>
-														
-													</div>
-													--%>
-													
 													<c:choose>
 														<c:when test="${empty mjonMsgDelaySentList.smsTxt}">
-															그림문자
+															<c:choose>
+																<c:when test="${mjonMsgDelaySentList.msgType eq '4'}">
+																	내용없음
+																</c:when>
+																<c:otherwise>
+																	그림문자
+																</c:otherwise>
+															</c:choose>	
 															<div class="sms_detail_hover">
 																<c:if test="${not empty fn:split(mjonMsgDelaySentList.atchFiles, '^')[0]}">
 																	<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(mjonMsgDelaySentList.atchFiles, '^')[0]}&fileSn=0" style="width: 120px;">
@@ -5252,7 +5244,7 @@
 								<br>
 								작성 : <c:out value="${result.frstRegisterId}"/>(<c:out value="${result.mberNm}"/> <c:out value="${result.ofcpsNm}"/>)
 								<br> 
-								일시 : <c:out value="${result.frstRegistPnttm}"/>								
+								일시 : <c:out value="${result.frstRegistPnttm}"/>
 							</li>
 						</c:forEach>
 						</ul>
src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/ReserveKakaoATList.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/ReserveKakaoATList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/ReserveKakaoATList.jsp
@@ -582,7 +582,7 @@
 								<fmt:parseDate value="${result.reqDate}" var="reqDateValue" pattern="yyyy-MM-dd HH:mm"/>
 								<fmt:formatDate value="${reqDateValue}" pattern="MM-dd HH:mm"/>
 							</td>
-							<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
+							<td onclick="fn_detail_list('${result.msgGroupId}', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
 								<c:choose>
 									<c:when test="${result.reserveYn eq 'Y'}">
 										예약
src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
@@ -498,10 +498,10 @@
 									</a>
 								</div>
 							</td>
-							<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
+							<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
 								<c:out value="${result.yellowId}"/>							
 							</td>
-							<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
+							<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
 								<c:choose>
 									<c:when test="${result.successCount > 0}">
 										<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
@@ -550,11 +550,11 @@
 									</c:otherwise>
 								</c:choose>
 							</td>
-							<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" title="<c:out value="${result.rsltDate}"/>" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
+							<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" title="<c:out value="${result.rsltDate}"/>" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
 								<fmt:parseDate value="${result.reqDate}" var="reqDateValue" pattern="yyyy-MM-dd HH:mm"/>
 								<fmt:formatDate value="${reqDateValue}" pattern="MM-dd HH:mm"/>								
 							</td>
-							<td onclick="fn_detail_list('${result.msgGroupId}', '<c:out value="${result.userId}"/>'); return false;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
+							<td onclick="fn_detail_list('${result.msgGroupId}', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
 								<c:choose>
 									<c:when test="${result.reserveYn eq 'Y'}">
 										예약
@@ -582,10 +582,8 @@
 				</table>
 			</div>
 			<div class="btnWrap" style="margin-bottom: 15px;">
-			<!--  
 				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('on'); return false;" value="알림톡 스미싱 ON">
 				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('off'); return false;" value="알림톡 스미싱 OFF">
-			-->
 			</div>
 			
 			<!-- 페이지 네비게이션 시작 -->
src/main/webapp/WEB-INF/jsp/web/event/pay/EventPayViewV2.jsp
--- src/main/webapp/WEB-INF/jsp/web/event/pay/EventPayViewV2.jsp
+++ src/main/webapp/WEB-INF/jsp/web/event/pay/EventPayViewV2.jsp
@@ -808,8 +808,8 @@
 					</div>--%>
 					<div>
 						<p class="tab_tit">충전수단 선택</p>
-						<ul class="area_tab type03">
-							<li class="btn_charge0 btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
+						<ul class="area_tab">
+							<li class="btn_charge_simple btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
 							<li class="btn_charge1 btn_tab"><button type="button" onclick="TabTypePay(this,'1');"><i></i>신용카드</button></li>
 							<li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'2');" id="btnDdedicatedAccount"><i></i>전용계좌</button></li>
 							<li class="btn_charge5 btn_tab"><button type="button" onclick="TabTypePay(this,'5');"><i></i>즉시이체</button></li>
src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/faxDataView.jsp
@@ -167,6 +167,8 @@
 			alert("팩스 발송에 필요한 회원님의 보유 잔액이 부족 합니다.");
 			return false;
 		}
+		
+		return true;
 	}
 	
 	
src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp
@@ -434,11 +434,38 @@
 	
 }
 
+function checkConf() {
+	var confCheck = false;
+	
+	$.ajax({
+		type: "POST",
+		url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do",
+		data: {},
+		dataType:'json',
+		async: false,
+		success: function (returnData, status) {
+			if(returnData.result == "fail") {
+				console.log(returnData.message);
+			}else if(returnData.result == "success"){
+				confCheck = true;
+			}
+		}
+		,error: function (e) {console.log("ERROR : ", e); }
+	});	
+	
+	return confCheck;
+}
+
 /*
  *	등록된 발신 탬플릿 카카오톡 전송 
  */
 function sendTemplateInfo(){
 
+	if(!checkConf()){	//문자온 conf-check
+		alert("현재 알림톡 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요.");
+		return false;
+	}
+	
 	if(!usrDeptChk()){
 		return false;
 	}
src/main/webapp/WEB-INF/jsp/web/pay/PayViewV2.jsp
--- src/main/webapp/WEB-INF/jsp/web/pay/PayViewV2.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayViewV2.jsp
@@ -6,6 +6,10 @@
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
 <%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
 
+<style>
+	.charg_cont .area_tab li{ width: calc((100% - 80px)/5);}
+</style>
+	
 <!-- KG 모빌리언스 -->
 <script src="https://mup.mobilians.co.kr/js/ext/ext_inc_comm.js"></script>
 <script type="text/javascript" src="<c:url value='/js/MJUtill.js'/>"></script>
@@ -639,7 +643,7 @@
 					<div>
 						<p class="tab_tit">충전수단 선택</p>
 						<ul class="area_tab">
-							<li class="btn_charge0 btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
+							<li class="btn_charge_simple btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
 							<li class="btn_charge1 btn_tab"><button type="button" onclick="TabTypePay(this,'1');"><i></i>신용카드</button></li>
 							<li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'2');" id="btnDdedicatedAccount"><i></i>전용계좌</button></li>
 							<!-- <li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'3');"><i></i>무통장입금</button></li> -->
Add a comment
List