문자전송내역 발송승인, 승인취소 기능 작업중

This commit is contained in:
itn 2023-09-18 17:30:13 +09:00
parent 82c908e1d1
commit a6ea2795ff
2 changed files with 189 additions and 17 deletions

View File

@ -261,6 +261,11 @@ public class MjonMsgController {
paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo); 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"; return "/uss/ion/msg/SendMsgList";
} }

View File

@ -27,6 +27,8 @@
response.setDateHeader("Expires",0); response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
%> %>
<jsp:useBean id="now" class="java.util.Date" />
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko"> <html lang="ko">
<head> <head>
@ -394,6 +396,158 @@ function getDelayMsgData() {
linkPage(1); 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> </script>
<style> <style>
.calBtn{ .calBtn{
@ -414,6 +568,10 @@ function getDelayMsgData() {
.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 {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 .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.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> </style>
</head> </head>
<body> <body>
@ -526,11 +684,12 @@ function getDelayMsgData() {
<col style="width: 13%"> <col style="width: 13%">
<col style="width: 4%"> <col style="width: 4%">
<col style="width: 10%"> <col style="width: 10%">
<col style="width: 12%"> <col style="width: 13%">
<col style="width: 10%"> <col style="width: 14%">
<col style="width: 8%"> <col style="width: 9%">
<col style="width: 5%"> <col style="width: 4%">
<col style="width: auto"> <col style="width: *%">
<col style="width: 4%">
<col style="width: 4%"> <col style="width: 4%">
</colgroup> </colgroup>
<thead> <thead>
@ -547,8 +706,6 @@ function getDelayMsgData() {
<th>내용<input type="button" class="sort sortBtn" id="sort_smsTxt"></th> <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_msgTypeTxt"></th>
<th>방식<input type="button" class="sort sortBtn" id="sort_sendKind"></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> </tr>
</thead> </thead>
<tbody> <tbody>
@ -573,13 +730,15 @@ function getDelayMsgData() {
</a> </a>
</div> </div>
</td> </td>
<%--
<td <c:if test="${result.smishingYn eq 'Y'}">class="smishing"</c:if><c:if test="${result.smishingYn eq 'N'}"></c:if>> <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:choose>
<c:when test="${result.adminSmsNoticeYn eq 'Y'}"> <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>
<c:when test="${result.adminSmsNoticeYn eq 'N'}"> <c:when test="${result.adminSmsNoticeYn eq 'N'}">
오프 오프
@ -600,7 +759,7 @@ function getDelayMsgData() {
<span style="color: #0000FF;"> <span style="color: #0000FF;">
<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%) <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' }"> <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>
<c:if test="${result.callbackYn eq 'Y' }"> <c:if test="${result.callbackYn eq 'Y' }">
<span style="color: #0000FF;" title="번호도용 문자차단 안내문자 발송완료">안내완료</span> <span style="color: #0000FF;" title="번호도용 문자차단 안내문자 발송완료">안내완료</span>
@ -624,6 +783,19 @@ function getDelayMsgData() {
</c:when> </c:when>
<c:when test="${result.delayCompleteYn eq 'N'}"> <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="${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:when>
<c:otherwise> <c:otherwise>
<span style="color: #0000FF;"> <span style="color: #0000FF;">
@ -723,11 +895,6 @@ function getDelayMsgData() {
</c:when> </c:when>
</c:choose> </c:choose>
</td> </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> </tr>
</c:forEach> </c:forEach>
<c:if test="${empty resultList}"> <c:if test="${empty resultList}">