일, 월 회원 로그인 통계 화면 및 기능 추가
This commit is contained in:
parent
c287701e1a
commit
1d57ffaed1
@ -99,5 +99,7 @@ public interface EgovLoginLogService {
|
|||||||
|
|
||||||
public List<LoginLog> selectDeviceLogList(LoginLog loginLog) throws Exception;
|
public List<LoginLog> selectDeviceLogList(LoginLog loginLog) throws Exception;
|
||||||
|
|
||||||
|
public List<LoginLog> SelectDauLoginLogList(LoginLog loginLog) throws Exception;
|
||||||
|
|
||||||
|
public List<LoginLog> SelectMauLoginLogList(LoginLog loginLog) throws Exception;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -128,6 +128,7 @@ public class LoginLog extends ComDefaultVO implements Serializable {
|
|||||||
private String conectId ;
|
private String conectId ;
|
||||||
|
|
||||||
/*관리자 메소드 부분 추가*/
|
/*관리자 메소드 부분 추가*/
|
||||||
|
|
||||||
private String methodNm; //메소드 이름
|
private String methodNm; //메소드 이름
|
||||||
|
|
||||||
private String param; //파라미터
|
private String param; //파라미터
|
||||||
@ -153,6 +154,39 @@ public class LoginLog extends ComDefaultVO implements Serializable {
|
|||||||
private int visitCnt; // 방문수
|
private int visitCnt; // 방문수
|
||||||
private String startDateType; // 시작날짜
|
private String startDateType; // 시작날짜
|
||||||
|
|
||||||
|
|
||||||
|
private String regDate; // 일자
|
||||||
|
|
||||||
|
private String joinUserCnt; // 회원가입 회원수
|
||||||
|
|
||||||
|
private String loginUserCnt; // 로그인 회원수
|
||||||
|
|
||||||
|
private String userRatio; // 이용자 비율
|
||||||
|
|
||||||
|
public String getRegDate() {
|
||||||
|
return regDate;
|
||||||
|
}
|
||||||
|
public void setRegDate(String regDate) {
|
||||||
|
this.regDate = regDate;
|
||||||
|
}
|
||||||
|
public String getJoinUserCnt() {
|
||||||
|
return joinUserCnt;
|
||||||
|
}
|
||||||
|
public void setJoinUserCnt(String joinUserCnt) {
|
||||||
|
this.joinUserCnt = joinUserCnt;
|
||||||
|
}
|
||||||
|
public String getLoginUserCnt() {
|
||||||
|
return loginUserCnt;
|
||||||
|
}
|
||||||
|
public void setLoginUserCnt(String loginUserCnt) {
|
||||||
|
this.loginUserCnt = loginUserCnt;
|
||||||
|
}
|
||||||
|
public String getUserRatio() {
|
||||||
|
return userRatio;
|
||||||
|
}
|
||||||
|
public void setUserRatio(String userRatio) {
|
||||||
|
this.userRatio = userRatio;
|
||||||
|
}
|
||||||
public String getStartDateType() {
|
public String getStartDateType() {
|
||||||
return startDateType;
|
return startDateType;
|
||||||
}
|
}
|
||||||
@ -522,6 +556,4 @@ public class LoginLog extends ComDefaultVO implements Serializable {
|
|||||||
public void setmCnt(String mCnt) {
|
public void setmCnt(String mCnt) {
|
||||||
this.mCnt = mCnt;
|
this.mCnt = mCnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -224,4 +224,14 @@ public class EgovLoginLogServiceImpl extends EgovAbstractServiceImpl implements
|
|||||||
return loginLogDAO.selectDeviceLogList(loginLog);
|
return loginLogDAO.selectDeviceLogList(loginLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<LoginLog> SelectDauLoginLogList(LoginLog loginLog) throws Exception {
|
||||||
|
return loginLogDAO.SelectDauLoginLogList(loginLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<LoginLog> SelectMauLoginLogList(LoginLog loginLog) throws Exception {
|
||||||
|
return loginLogDAO.SelectMauLoginLogList(loginLog);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -198,4 +198,14 @@ public class LoginLogDAO extends EgovAbstractDAO {
|
|||||||
return (List<LoginLog>)list("LoginLogDAO.selectDeviceLogList", loginLog);
|
return (List<LoginLog>)list("LoginLogDAO.selectDeviceLogList", loginLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<LoginLog> SelectDauLoginLogList(LoginLog loginLog) throws Exception {
|
||||||
|
return (List<LoginLog>)list("LoginLogDAO.SelectDauLoginLogList", loginLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<LoginLog> SelectMauLoginLogList(LoginLog loginLog) throws Exception {
|
||||||
|
return (List<LoginLog>)list("LoginLogDAO.SelectMauLoginLogList", loginLog);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
|||||||
import itn.com.cmm.EgovMessageSource;
|
import itn.com.cmm.EgovMessageSource;
|
||||||
import itn.com.cmm.LoginVO;
|
import itn.com.cmm.LoginVO;
|
||||||
import itn.com.cmm.util.RedirectUrlMaker;
|
import itn.com.cmm.util.RedirectUrlMaker;
|
||||||
|
import itn.let.mjo.msg.service.MjonMsgVO;
|
||||||
import itn.let.sym.log.clg.service.EgovLoginLogService;
|
import itn.let.sym.log.clg.service.EgovLoginLogService;
|
||||||
import itn.let.sym.log.clg.service.LoginLog;
|
import itn.let.sym.log.clg.service.LoginLog;
|
||||||
import itn.let.sym.log.clg.service.MsgLog;
|
import itn.let.sym.log.clg.service.MsgLog;
|
||||||
@ -426,7 +427,6 @@ public class EgovLoginLogController {
|
|||||||
return redirectUrlMaker.getRedirectUrl();
|
return redirectUrlMaker.getRedirectUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*관리자로그설정관리 수정/view*/
|
/*관리자로그설정관리 수정/view*/
|
||||||
@RequestMapping(value="/sym/log/clg/ViewLogMethod.do")
|
@RequestMapping(value="/sym/log/clg/ViewLogMethod.do")
|
||||||
public String viewLogMethod(@RequestParam Map<?, ?> commandMap,
|
public String viewLogMethod(@RequestParam Map<?, ?> commandMap,
|
||||||
@ -441,7 +441,6 @@ public class EgovLoginLogController {
|
|||||||
return "sym/log/clg/ViewLogMethod";
|
return "sym/log/clg/ViewLogMethod";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 관리자로그설정관리 등록*/
|
/* 관리자로그설정관리 등록*/
|
||||||
@RequestMapping(value="/sym/log/clg/InsertLogMethod.do")
|
@RequestMapping(value="/sym/log/clg/InsertLogMethod.do")
|
||||||
public String insertLogMethod(@RequestParam Map<?, ?> commandMap,
|
public String insertLogMethod(@RequestParam Map<?, ?> commandMap,
|
||||||
@ -951,4 +950,64 @@ public class EgovLoginLogController {
|
|||||||
//model.addAttribute("paginationInfo", paginationInfo);
|
//model.addAttribute("paginationInfo", paginationInfo);
|
||||||
return "sym/log/clg/SelectMsgLogList";
|
return "sym/log/clg/SelectMsgLogList";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Method Name : SelectDauLoginLogList
|
||||||
|
* @작성일 : 2023. 8. 22.
|
||||||
|
* @작성자 : WYH
|
||||||
|
* @변경이력 :
|
||||||
|
* @Method 설명 : 일 이용자 수 통계
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/sym/log/clg/SelectDauLoginLogList.do")
|
||||||
|
public String SelectDauLoginLogList(
|
||||||
|
@ModelAttribute("searchVO") LoginLog loginLog
|
||||||
|
, @RequestParam Map<String, Object> commandMap
|
||||||
|
, ModelMap model) throws Exception {
|
||||||
|
|
||||||
|
/** pageing */
|
||||||
|
PaginationInfo paginationInfo = new PaginationInfo();
|
||||||
|
paginationInfo.setCurrentPageNo(loginLog.getPageIndex());
|
||||||
|
paginationInfo.setRecordCountPerPage(loginLog.getPageUnit());
|
||||||
|
paginationInfo.setPageSize(loginLog.getPageSize());
|
||||||
|
|
||||||
|
loginLog.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||||
|
loginLog.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||||
|
loginLog.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||||
|
|
||||||
|
List<LoginLog> dauLoginLogList = loginLogService.SelectDauLoginLogList(loginLog);
|
||||||
|
|
||||||
|
model.addAttribute("dauLoginLogList", dauLoginLogList);
|
||||||
|
paginationInfo.setTotalRecordCount(dauLoginLogList.size() > 0 ? ((LoginLog)dauLoginLogList.get(0)).getTotCnt() : 0);
|
||||||
|
model.addAttribute("paginationInfo", paginationInfo);
|
||||||
|
|
||||||
|
return "sym/log/clg/SelectDauLoginLogList";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Method Name : SelectMauLoginLogList
|
||||||
|
* @작성일 : 2023. 8. 22.
|
||||||
|
* @작성자 : WYH
|
||||||
|
* @변경이력 :
|
||||||
|
* @Method 설명 : 월 이용자 수 통계
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/sym/log/clg/SelectMauLoginLogList.do")
|
||||||
|
public String SelectMauLoginLogList(
|
||||||
|
@ModelAttribute("searchVO") LoginLog loginLog
|
||||||
|
, @RequestParam Map<String, Object> commandMap
|
||||||
|
, ModelMap model) throws Exception {
|
||||||
|
|
||||||
|
if("".equals(loginLog.getSearchCnd()) || loginLog.getSearchCnd() == null){ //최초조회시 현재년도 조회
|
||||||
|
LocalDate now = LocalDate.now();
|
||||||
|
int year = now.getYear();
|
||||||
|
loginLog.setSearchCnd(Integer.toString(year));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<LoginLog> mauLoginLogList = loginLogService.SelectMauLoginLogList(loginLog);
|
||||||
|
|
||||||
|
model.addAttribute("mauLoginLogList", mauLoginLogList);
|
||||||
|
|
||||||
|
return "sym/log/clg/SelectMauLoginLogList";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -975,5 +975,63 @@
|
|||||||
ORDER BY days DESC
|
ORDER BY days DESC
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="LoginLogDAO.SelectDauLoginLogList" parameterClass="loginLog" resultClass="loginLog">
|
||||||
|
SELECT
|
||||||
|
COUNT(0) OVER() AS totCnt
|
||||||
|
, M.REG_DATE AS regDate
|
||||||
|
, M.REG_STEP_SUM AS joinUserCnt
|
||||||
|
, D.TDAY_U_CNT AS loginUserCnt
|
||||||
|
, ROUND((D.TDAY_U_CNT / M.REG_STEP_SUM) * 100,2) AS userRatio
|
||||||
|
FROM
|
||||||
|
(SELECT
|
||||||
|
DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m-%d') AS REG_DATE
|
||||||
|
, SUM(COUNT(0)) OVER(ORDER BY DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m-%d') ASC) AS REG_STEP_SUM
|
||||||
|
FROM LETTNGNRLMBER L
|
||||||
|
WHERE 1=1
|
||||||
|
AND L.MBER_STTUS = 'Y'
|
||||||
|
<isNotEmpty prepend="AND" property="searchBgnDe">
|
||||||
|
<![CDATA[DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m-%d') >= DATE_FORMAT(#searchBgnDe#, '%Y-%m-%d')]]>
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty prepend="AND" property="searchEndDe">
|
||||||
|
<![CDATA[DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m-%d') <= DATE_FORMAT(#searchEndDe#, '%Y-%m-%d')]]>
|
||||||
|
</isNotEmpty>
|
||||||
|
GROUP BY DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m-%d')
|
||||||
|
ORDER BY DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m-%d') DESC
|
||||||
|
) M
|
||||||
|
INNER JOIN MJ_DASH_STAT D
|
||||||
|
ON D.STAT_DATE = M.REG_DATE
|
||||||
|
WHERE 1=1
|
||||||
|
ORDER BY M.REG_DATE DESC
|
||||||
|
LIMIT #recordCountPerPage# OFFSET #firstIndex#
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="LoginLogDAO.SelectMauLoginLogList" parameterClass="loginLog" resultClass="loginLog">
|
||||||
|
SELECT
|
||||||
|
COUNT(0) OVER() AS totCnt
|
||||||
|
, M.REG_DATE AS regDate
|
||||||
|
, M.REG_STEP_SUM AS joinUserCnt
|
||||||
|
, D.TDAY_U_CNT AS loginUserCnt
|
||||||
|
, ROUND((D.TDAY_U_CNT / M.REG_STEP_SUM) * 100,2) AS userRatio
|
||||||
|
FROM
|
||||||
|
(SELECT
|
||||||
|
DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m') AS REG_DATE
|
||||||
|
, SUM(COUNT(0)) OVER(ORDER BY DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m') ASC) AS REG_STEP_SUM
|
||||||
|
FROM
|
||||||
|
LETTNGNRLMBER L
|
||||||
|
WHERE 1=1
|
||||||
|
AND L.MBER_STTUS = 'Y'
|
||||||
|
GROUP BY DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m')
|
||||||
|
ORDER BY DATE_FORMAT(L.APPROVAL_PNTTM, '%Y-%m') DESC
|
||||||
|
)M
|
||||||
|
INNER JOIN MJ_DASH_STAT D
|
||||||
|
ON DATE_FORMAT(D.STAT_DATE, '%Y-%m') = M.REG_DATE
|
||||||
|
WHERE 1=1
|
||||||
|
<isNotEmpty prepend="AND" property="searchCnd">
|
||||||
|
<![CDATA[ DATE_FORMAT(D.STAT_DATE, '%Y') IN (#searchCnd#) ]]>
|
||||||
|
</isNotEmpty>
|
||||||
|
GROUP BY DATE_FORMAT(D.STAT_DATE, '%Y-%m')
|
||||||
|
ORDER BY M.REG_DATE DESC
|
||||||
|
</select>
|
||||||
</sqlMap>
|
</sqlMap>
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,188 @@
|
|||||||
|
<%@ page contentType="text/html; charset=utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
|
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
|
||||||
|
<%
|
||||||
|
response.setHeader("Cache-Control","no-store");
|
||||||
|
response.setHeader("Pragma","no-cache");
|
||||||
|
response.setDateHeader("Expires",0);
|
||||||
|
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
|
||||||
|
%>
|
||||||
|
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
|
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
|
||||||
|
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
|
||||||
|
<script type="text/javaScript" language="javascript">
|
||||||
|
function fn_search(){
|
||||||
|
linkPage(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function linkPage(pageNo){
|
||||||
|
var listForm = document.listForm ;
|
||||||
|
listForm.pageIndex.value = pageNo ;
|
||||||
|
|
||||||
|
if( $('#searchBgnDeYYYMMDD').val() != '' && $('#searchEndDeYYYMMDD').val() != '' ){
|
||||||
|
var iChkBeginDe = Number($('#searchBgnDeYYYMMDD').val().replaceAll("-", ""));
|
||||||
|
var iChkEndDe = Number($('#searchEndDeYYYMMDD').val().replaceAll("-", ""));
|
||||||
|
if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
|
||||||
|
alert("검색 시작 일자는 종료 일자 보다 클 수 없습니다.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#searchBgnDe').val($('#searchBgnDeYYYMMDD').val()) ;
|
||||||
|
$('#searchEndDe').val($('#searchEndDeYYYMMDD').val()) ;
|
||||||
|
|
||||||
|
listForm.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 날짜 초기화 */
|
||||||
|
function init_date(){
|
||||||
|
$('#ntceBgndeYYYMMDD').val('');
|
||||||
|
$('#ntceEnddeYYYMMDD').val('');
|
||||||
|
$('#ntceBgnde').val('');
|
||||||
|
$('#ntceEndde').val('');
|
||||||
|
}
|
||||||
|
|
||||||
|
//기간선택 select
|
||||||
|
function fnSetCalMonth(val) {
|
||||||
|
if(val == 0) {
|
||||||
|
init_date();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var form = document.listForm;
|
||||||
|
var today = new Date();
|
||||||
|
|
||||||
|
var year = today.getFullYear();
|
||||||
|
var month = ("0"+(today.getMonth()+1)).slice(-2);
|
||||||
|
var date = ("0"+today.getDate()).slice(-2);
|
||||||
|
|
||||||
|
var sDate = new Date(today.setMonth(today.getMonth() - val));
|
||||||
|
|
||||||
|
var sYear = sDate.getFullYear();
|
||||||
|
var sMonth = ("0"+(sDate.getMonth()+1)).slice(-2);
|
||||||
|
var sDate = ("0"+sDate.getDate()).slice(-2);
|
||||||
|
|
||||||
|
form.searchBgnDeYYYMMDD.value = sYear + "-" + sMonth + "-" + sDate;
|
||||||
|
form.searchEndDeYYYMMDD.value = year + "-" + month + "-" + date;
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.calBtn {
|
||||||
|
border: none;
|
||||||
|
background-color: transparent !important;
|
||||||
|
background-image: url(/pb/img/common/calendarIcon.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
width: 25px;
|
||||||
|
height: 25px !important;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: -38px !important;
|
||||||
|
margin-top: -2px !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<form name="listForm" action="<c:url value='/sym/log/clg/SelectDauLoginLogList.do'/>" method="post">
|
||||||
|
<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
|
||||||
|
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
|
||||||
|
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
|
||||||
|
<input type="hidden" name="searchBgnDe" id="searchBgnDe" value="<c:out value="${searchVO.searchBgnDe}" />">
|
||||||
|
<input type="hidden" name="searchEndDe" id="searchEndDe" value="<c:out value="${searchVO.searchEndDe}" />">
|
||||||
|
|
||||||
|
<div class="contWrap">
|
||||||
|
<div class="pageTitle">
|
||||||
|
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
|
||||||
|
<h2 class="titType1 c_222222 fwBold">DAU(일 이용자 수)</h2>
|
||||||
|
<p class="tType6 c_999999">일 기준 순 이용자(1회라도 로그인 한 이용자, 중복제거)를 확인할 수 있습니다.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageCont">
|
||||||
|
<div class="listSerch">
|
||||||
|
<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
|
||||||
|
<option value="0">전체</option>
|
||||||
|
<option value="1">1개월</option>
|
||||||
|
<option value="3">3개월</option>
|
||||||
|
<option value="6">6개월</option>
|
||||||
|
</select>
|
||||||
|
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchBgnDeYYYMMDD);">
|
||||||
|
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchBgnDeYYYMMDD" id="searchBgnDeYYYMMDD" size="4" maxlength="4" readonly=""
|
||||||
|
value="<c:out value="${searchVO.searchBgnDe}" />" >
|
||||||
|
<input type="button" class="calBtn">
|
||||||
|
</a>
|
||||||
|
<span class="line"> ~</span>
|
||||||
|
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchEndDeYYYMMDD);">
|
||||||
|
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchEndDeYYYMMDD" id="searchEndDeYYYMMDD" size="4" maxlength="4" readonly=""
|
||||||
|
value="<c:out value="${searchVO.searchEndDe}" />" >
|
||||||
|
<input type="button" class="calBtn">
|
||||||
|
</a>
|
||||||
|
<a href="#" style="margin-left: 17px;" onclick="init_date(); return false;">
|
||||||
|
<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
|
||||||
|
</a>
|
||||||
|
<input type="button" class="btnType1" style="margin-left:10px;" value="검색" onclick="fn_search(); return false;">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="listTop">
|
||||||
|
<p class="tType5">
|
||||||
|
총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건
|
||||||
|
</p>
|
||||||
|
<div class="rightWrap">
|
||||||
|
<!-- <input type="button" class="printBtn"> -->
|
||||||
|
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);">
|
||||||
|
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
|
||||||
|
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
|
||||||
|
<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tableWrap">
|
||||||
|
<table class="tbType1">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: 25%">
|
||||||
|
<col style="width: 25%">
|
||||||
|
<col style="width: 25%">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>일자</th>
|
||||||
|
<th>회원수</th>
|
||||||
|
<th>순 이용자</th>
|
||||||
|
<th>순 이용자 비율</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach var="result" items="${dauLoginLogList}" varStatus="status">
|
||||||
|
<tr>
|
||||||
|
<td><c:out value="${result.regDate}"/></td>
|
||||||
|
<td><fmt:formatNumber value="${result.joinUserCnt}" pattern="#,###" /></td>
|
||||||
|
<td><fmt:formatNumber value="${result.loginUserCnt}" pattern="#,###" /></td>
|
||||||
|
<td><c:out value="${result.userRatio}"/>%</td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
<c:if test="${empty dauLoginLogList}">
|
||||||
|
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
|
||||||
|
</c:if>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="btnWrap">
|
||||||
|
</div>
|
||||||
|
<!-- 페이지 네비게이션 시작 -->
|
||||||
|
<c:if test="${!empty dauLoginLogList}">
|
||||||
|
<div class="page">
|
||||||
|
<ul class="inline">
|
||||||
|
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</c:if>
|
||||||
|
<!-- //페이지 네비게이션 끝 -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
@ -0,0 +1,86 @@
|
|||||||
|
<%@ page contentType="text/html; charset=utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
|
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
|
||||||
|
<%
|
||||||
|
response.setHeader("Cache-Control","no-store");
|
||||||
|
response.setHeader("Pragma","no-cache");
|
||||||
|
response.setDateHeader("Expires",0);
|
||||||
|
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
|
||||||
|
%>
|
||||||
|
<title>월별 회원가입건수 통계</title>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
|
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
|
||||||
|
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
|
||||||
|
<script type="text/javaScript" language="javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
var date = new Date();
|
||||||
|
var year = date.getFullYear();
|
||||||
|
|
||||||
|
var startY = Number(year);
|
||||||
|
var endY = 2021;
|
||||||
|
for(var y = startY; y>= endY; y-- ){
|
||||||
|
$('#searchYear').append("<option value='"+y+"'>" + y+"년"+"</option>")
|
||||||
|
}
|
||||||
|
$('#searchYear').find('option[value="${searchVO.searchCnd}"]').attr("selected",true);
|
||||||
|
});
|
||||||
|
|
||||||
|
function linkPage(){
|
||||||
|
var listForm = document.listForm ;
|
||||||
|
$('#searchCnd').val($('#searchYear option:selected').val());
|
||||||
|
listForm.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form name="listForm" action="<c:url value='/sym/log/clg/SelectMauLoginLogList.do'/>" method="post">
|
||||||
|
<input type="hidden" name="searchCnd" id="searchCnd" value="">
|
||||||
|
|
||||||
|
<div class="contWrap">
|
||||||
|
<div class="pageTitle">
|
||||||
|
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
|
||||||
|
<h2 class="titType1 c_222222 fwBold">MAU(월 이용자 수)</h2>
|
||||||
|
<p class="tType6 c_999999">월 기준 순 이용자(1회라도 로그인 한 이용자, 중복제거)를 확인할 수 있습니다..</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pageCont">
|
||||||
|
<div class="listSerch">
|
||||||
|
<select id="searchYear" name="searchYear" onchange="linkPage();"></select>
|
||||||
|
</div>
|
||||||
|
<div class="tableWrap">
|
||||||
|
<table class="tbType1">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
<col style="width: 20%">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>일자</th>
|
||||||
|
<th>회원수</th>
|
||||||
|
<th>순 이용자</th>
|
||||||
|
<th>순 이용자 비율</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach var="result" items="${mauLoginLogList}" varStatus="status">
|
||||||
|
<tr>
|
||||||
|
<td><c:out value="${result.regDate}"/></td>
|
||||||
|
<td><fmt:formatNumber value="${result.joinUserCnt}" pattern="#,###" /></td>
|
||||||
|
<td><fmt:formatNumber value="${result.loginUserCnt}" pattern="#,###" /></td>
|
||||||
|
<td><c:out value="${result.userRatio}"/>%</td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
<c:if test="${empty mauLoginLogList}">
|
||||||
|
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
|
||||||
|
</c:if>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
Loading…
Reference in New Issue
Block a user