itn 2023-09-18
문자전송내역 발송승인, 승인취소 기능 작업중
@a6ea2795ff8dd3b8853d9ee7914b53066bdc116b
src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
--- src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
+++ src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
@@ -261,6 +261,11 @@
         paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0);
 		model.addAttribute("paginationInfo", paginationInfo);
 		
+    	// 로그인VO에서  사용자 정보 가져오기
+    	LoginVO	loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
+    	String admId = loginVO == null ? "" : loginVO.getId();
+    	model.addAttribute("admId", admId);
+    	
 		return "/uss/ion/msg/SendMsgList";
         
 	}
src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgList.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgList.jsp
@@ -27,6 +27,8 @@
 	response.setDateHeader("Expires",0);   
 	if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); 
 %> 
+<jsp:useBean id="now" class="java.util.Date" />
+
 <!DOCTYPE html>
 <html lang="ko">
 <head>
@@ -394,6 +396,158 @@
 	linkPage(1);
 }
 
+
+//즉시 발송
+function fnMsgDelaySendArray(msgGroupId, userId) {
+    var msg = "";
+	var url = "/uss/ion/msg/updateMsgDelaySendRealTimeDataAjax.do";
+	var json = {"msgGroupId" : msgGroupId, "userId" : userId}; 
+	
+	if(confirm("해당 지연 문자를 즉시 발송 하시겠습니까?")){
+		$.ajax({
+	        type: "POST",
+	        url: url,
+	        data: json,
+	        dataType:'json',
+	        async: false,
+	        success: function (data, status) {
+	        	var result = data.isStatus;
+	        	var msg = data.msg;
+	        	
+				if (result == 'loginFail') {
+					alert(msg);
+					location.reload();
+				}else if(result == 'dateFail'){
+					alert(msg);
+					location.reload();
+				}else if(result == 'fail'){
+					alert(msg);
+					return false;
+				}else{
+					alert(msg);
+					location.reload();					
+				}
+			},
+	        beforeSend: function () {
+	        	//로딩창 show
+	        	$('.loading_layer').addClass('active');
+	        }, 
+	        complete: function () {
+	        	//로딩창 hide
+	        	$('.loading_layer').removeClass('active');
+	        },
+	        error: function (e) { 
+	        	alert("에러가 발생했습니다."); console.log("ERROR : ", e); 
+	        }
+	    });
+		
+	}
+	
+}
+
+// 발송 취소
+function fnMsgDelayCancelArray(msgGroupId, userId) {
+	var msg = "";
+	var url = "/uss/ion/msg/deleteMsgDelaySendCancelDataAjax.do";
+	var json = {"msgGroupId" : msgGroupId, "userId" : userId}; 
+	
+	if(confirm("해당 지연 문자를 발송 취소 하시겠습니까?")){
+		$.ajax({
+	        type: "POST",
+	        url: url,
+	        data: json,
+	        dataType:'json',
+	        async: false,
+	        success: function (data, status) {
+	        	var result = data.isStatus;
+	        	var msg = data.msg;
+	        	
+				if (result == 'loginFail') {
+					alert(msg);
+					location.reload();
+				}else if(result == 'dateFail'){
+					
+					alert(msg);
+					location.reload();
+					
+				}else if(result == 'fail'){
+					alert(msg);
+					return false;
+				}else{
+					alert(msg);
+					
+					//회원 이용정지 처리하기
+					fn_MsgDelayCancel_after(userId);
+				}
+			},
+	        beforeSend: function () {
+	        	//로딩창 show
+	        	$('.loading_layer').addClass('active');
+	        }, 
+	        complete: function () {
+	        	//로딩창 hide
+	        	$('.loading_layer').removeClass('active');
+	        },
+	        error: function (e) { 
+	        	alert("에러가 발생했습니다."); console.log("ERROR : ", e); 
+	        }
+	    });
+	}
+}
+
+//문자 지연 내역 발송 취소를 통한 회원 이용정지시
+function fn_MsgDelayCancel_after(userId){
+	var mberSttus = $('#mberSttus').val();
+	mberSttus = "B";	//이용자 정지 처리
+	var smiMemo = "관리자가 최근 문자 지연 내역에서 스미싱의심으로 판단하여 발송취소를 한 후 이용자 정지 처리함";
+	
+	fn_SpamMberUpdt(userId, mberSttus, smiMemo, "이용자 정지를 진행하시겠습니까?");
+}
+
+//회원 이용정지 처리
+function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
+	url = "/uss/umt/user/EgovGnrlUpdateUserMsttusAjax.do";
+	var json = {"mberId" : userId, "mberSttus" : p_mberSttus, "smiMemo" : p_smiMemo};
+	if(confirm(p_confirm_msg)){
+		$.ajax({
+	        type: "POST",
+	        url: url,
+	        data: json,
+	        dataType:'json',
+	        async: false,
+	        success: function (returnData, status) {
+				if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
+					if("fail"==returnData.result){
+						alert(returnData.message);
+						return false;
+					}else if("loginFail"==returnData.result){
+						alert(returnData.message);
+						return false;
+					}else{ //이용자 상태 변경 성공시 처리
+						alert(returnData.message);
+						location.reload();
+					}
+				
+				} else if(status== 'fail'){
+					alert("이용자 상태 변경에 실패하였습니다.");
+				}
+			},
+	        beforeSend: function () {
+	        	//로딩창 show
+	        	$('.loading_layer').addClass('active');
+	        }, 
+	        complete: function () {
+	        	//로딩창 hide
+	        	$('.loading_layer').removeClass('active');
+	        },
+	        error: function (e) { alert("이용자 상태 변경에 실패하였습니다."); console.log("ERROR : ", e); }
+	    });
+	}
+	else {
+		location.reload();
+	}
+}
+
 </script>
 <style>
 .calBtn{
@@ -414,6 +568,10 @@
 .pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-50px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
 .pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
 .pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
+
+.pageCont .tbType1 tbody tr td .fillBlue {margin-top:5px;height:25px;padding:3 3px;font-size:13px;text-align:center;color:#ffffff !important;background:#456ded;border-radius:3px;}
+.pageCont .tbType1 tbody tr td .fillRed {margin-top:5px;height:25px;padding:3 3px;font-size:13px;text-align:center;color:#ffffff !important;background:#e40000;border-radius:3px;}
+
 </style>
 </head>
 <body>
@@ -526,11 +684,12 @@
 						<col style="width: 13%">
 						<col style="width: 4%">
 						<col style="width: 10%">
-						<col style="width: 12%">
-						<col style="width: 10%">
-						<col style="width: 8%">
-						<col style="width: 5%">
-						<col style="width: auto">
+						<col style="width: 13%">
+						<col style="width: 14%">
+						<col style="width: 9%">
+						<col style="width: 4%">
+						<col style="width: *%">
+						<col style="width: 4%">
 						<col style="width: 4%">
 					</colgroup>
 					<thead>
@@ -547,8 +706,6 @@
 							<th>내용<input type="button" class="sort sortBtn" id="sort_smsTxt"></th>
 							<th>타입<input type="button" class="sort sortBtn" id="sort_msgTypeTxt"></th>
 							<th>방식<input type="button" class="sort sortBtn" id="sort_sendKind"></th>
-							<!-- <th>전송사<input type="button" class="sort sortBtn" id="sort_agentCodeTxt"></th> -->
-							<!-- <th>통신사<input type="button" class="sort sortBtn" id="sort_rsltNet"></th> -->
 						</tr>
 					</thead>
 					<tbody>
@@ -573,13 +730,15 @@
 									</a>
 								</div>
 							</td>
-							<%-- 
 							<td <c:if test="${result.smishingYn eq 'Y'}">class="smishing"</c:if><c:if test="${result.smishingYn eq 'N'}"></c:if>>
-							--%>
-							<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">class="smishing" style="cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
 								<c:choose>
 									<c:when test="${result.adminSmsNoticeYn eq 'Y'}">
-										온<%--<button class="btnType btnType20" onclick="setSmsNoticeUpdate('<c:out value="${result.userId}"/>', 'N'); return false;">온</button>--%>
+										<c:if test="${admId ne 'jsp'}">
+											온
+										</c:if>							
+										<c:if test="${admId eq 'jsp'}">
+											<input type="button" style="margin-left:3px;margin-right:0;vertical-align:top;color:#ffffff !important;" class="btnType1" onclick="setSmsNoticeUpdate('<c:out value="${result.userId}"/>', 'N'); return false;" value="온" />
+										</c:if>
 									</c:when>
 									<c:when test="${result.adminSmsNoticeYn eq 'N'}">
 										오프
@@ -600,7 +759,7 @@
 										<span style="color: #0000FF;">
 											<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
 											<c:if test="${result.msgGroupCnt eq result.callRejectionCount && result.callbackYn eq 'N' && result.userCallbackYn eq 'N' }">
-					                			<input type="button" style="margin-left:3px;margin-right:0;vertical-align:top;" class="btnType1" onclick="fn_sendMsgData('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.callFrom}"/>','<c:out value="${result.userId}"/>');" value="문자" />	
+					                			<input type="button" style="margin-left:3px;margin-right:0;vertical-align:top;color:#ffffff !important;" class="btnType1" onclick="fn_sendMsgData('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.callFrom}"/>','<c:out value="${result.userId}"/>');" value="문자" />	
 						                	</c:if>
 											<c:if test="${result.callbackYn eq 'Y' }">
 					                			<span style="color: #0000FF;" title="번호도용 문자차단 안내문자 발송완료">안내완료</span>
@@ -624,6 +783,19 @@
 											</c:when>
 											<c:when test="${result.delayCompleteYn eq 'N'}">
 												<c:if test="${result.smishingYn eq 'Y'}">온</c:if><c:if test="${result.smishingYn eq 'N'}">오프</c:if>[미처리]
+												
+												<c:if test="${admId eq 'jsp'}">
+												<c:if test="${result.reserveCYn eq 'N' && result.delayYn eq 'Y' && result.delayCompleteYn eq 'N'}">
+													<br />
+													<fmt:formatDate value="${now}" pattern="yyyyMMddhhmm" var="nowDate" />
+													<fmt:parseDate value="${result.reqFullDate}" pattern="yyyy-MM-dd HH:mm" var="checkValue" />
+													<fmt:formatDate value="${checkValue}" pattern="yyyyMMddhhmm" var="checkDate"/>																								
+													<c:if test="${nowDate < checkDate}">
+														<button type="button" class="fillBlue" onclick="fnMsgDelaySendArray('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.userId}"/>'); return false;">발송승인</button>
+														<button type="button" class="fillRed" onclick="fnMsgDelayCancelArray('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.userId}"/>'); return false;">발송취소</button>
+													</c:if>
+												</c:if>
+												</c:if>
 											</c:when>
 											<c:otherwise>
 												<span style="color: #0000FF;">
@@ -723,11 +895,6 @@
 									</c:when>
 								</c:choose>
 							</td>
-							<%-- <td><c:out value="${result.conectMthdTxt}"/></td> --%>
-							<%-- <td <c:if test="${result.smishingYn eq 'Y'}">class="smishing"</c:if>>
-								<c:out value="${result.agentCodeTxt}"/>
-							</td> --%>
-							<%-- <td><c:out value="${result.rsltNet}"/></td> --%>
 						</tr>
 						</c:forEach>
 						<c:if test="${empty resultList}">
Add a comment
List