알림 페이징 처리 완료

This commit is contained in:
KNKIM 2021-09-13 09:23:31 +09:00
parent e43b309322
commit da08abfe5f
8 changed files with 114 additions and 29 deletions

View File

@ -125,6 +125,14 @@ public class NlibProperty {
return getProperty(name);
}
public static String getString(String name, String defaultValue) {
String val = getProperty(name);
if(StringUtil.isEmpty(val)) return defaultValue;
return val;
}
/**
* name 값을 키로하는 속성값을 정부형태로 리턴한다.
* 만일 값이 부재이거나 정부값으로 적합하지 않을 경우, defaultValue를 리턴한다.

View File

@ -16,6 +16,11 @@ public interface NotificationService
public List<NotificationVO> listNotifications(NotificationVO notificationVO) throws Exception;
/**
* 사용자 알림 목록의 건수를 조회한다.
*/
public int countNotifications(String recvUserId) throws Exception;
/**
* 읽지 않은 알림 건수를 조회한다.
*

View File

@ -2,28 +2,55 @@ package nlib.cmm.service;
public class PagingVO {
String pageIndex; /* 페이지 번호 */
String pageSize; /* 페이지 크기 (1페이지당 보여줄 자료건수) */
int totRecordCount; /* 총건수 */
int pageIndex = 1; /* 페이지 번호 */
int pageSize = NlibProperty.getInt("list.paging.page.size", 10); /* 페이지 크기 (1페이지당 보여줄 자료건수) */
int totRecordCount; /* 총건수 */
public String getPageIndex() {
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(String pageIndex) {
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public String getPageSize() {
public void setPageIndex(String sPageIndex) {
try {
pageIndex = Integer.parseInt(sPageIndex);
} catch(Exception e) {
pageIndex = 1;
}
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(String pageSize) {
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public void setPageSize(String sPageSize) {
try {
pageSize = Integer.parseInt(sPageSize);
} catch(Exception e) {
pageSize = NlibProperty.getInt("list.paging.page.size", 10);
}
}
public int getTotRecordCount() {
return totRecordCount;
}
public void setTotRecordCount(int totRecordCount) {
this.totRecordCount = totRecordCount;
}
public int getPageStartRowNum() {
if(pageIndex < 1) pageIndex = 1;
if(pageSize < 1) pageSize = 10;
return ((pageIndex - 1) * pageSize);
}
}

View File

@ -48,6 +48,15 @@ public class NotificationDAO extends EgovComAbstractDAO {
return selectList("NotificationDAO.listNotifications", searchNotificationVO);
}
/**
* 사용자 알림 목록의 건수를 조회한다.
*/
public int countNotifications(String recvUserId) throws Exception {
return selectOne("NotificationDAO.countNotifications", recvUserId);
}
/*
* 사용자가 확인하지 않은 알림 건수를 조회한다.
*/

View File

@ -32,6 +32,14 @@ public class NotificationServiceImpl implements NotificationService
return notificationDAO.listNotifications(notificationVO);
}
/**
* 사용자 알림 목록의 건수를 조회한다.
*/
public int countNotifications(String recvUserId) throws Exception {
return notificationDAO.countNotifications(recvUserId);
}
/**
* 읽지 않은 알림 건수를 조회한다.
*

View File

@ -123,8 +123,7 @@ public class NotificationController extends NlibCommonController {
searchNotificationtVO.setRecvUserId(mbInfoId);
List<NotificationVO> list = notificationService.listNotifications(searchNotificationtVO);
int totRecordCount = (list == null || list.get(0) == null) ? 0 : list.get(0).getTotCnt();
searchNotificationtVO.setTotRecordCount(totRecordCount);
int totRecordCount = notificationService.countNotifications(mbInfoId);
//-------------------------------
// JSON변환 응답 처리
@ -151,12 +150,16 @@ public class NotificationController extends NlibCommonController {
public ResponseEntity<String> selectNotificationAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map<String, String> paramMap) throws Exception {
String notiId = paramMap.get("notiId"); // 알림ID
String pageIndex = paramMap.get("pageIndex");
String pageSize = paramMap.get("pageSize");
log.debug("selectNotificationAjax > notiId = " + notiId);
NotificationVO paramNotiVO = new NotificationVO();
paramNotiVO.setNotiId(notiId);
paramNotiVO.setRecvUserId(getMbInfoId(req));
paramNotiVO.setPageIndex(pageIndex);
paramNotiVO.setPageSize(pageSize);
// 읽음처리 상세내용 조회
NotificationVO notiVO = notificationService.selectNotification(paramNotiVO);

View File

@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="NotificationDAO">
<select id="listNotifications" parameterType="NotificationVO" resultType="NotificationVO">
<select id="listNotifications_bk20210910" parameterType="NotificationVO" resultType="NotificationVO">
<![CDATA[
SELECT
A.NOTI_ID
@ -27,6 +27,47 @@
]]>
</select>
<select id="listNotifications" parameterType="NotificationVO" resultType="NotificationVO">
<![CDATA[
SELECT
A.NOTI_ID
, A.RECV_USER_ID
, A.TITLE
, A.CONTENT
, A.NOTI_METHOD
, A.NOTI_TYPE_CD
, B.S_CODE_NM AS NOTI_TYPE_NM
, IF(A.READ_DD IS NULL, 'N', 'Y') AS READ_YN
, DATE_FORMAT(A.REG_DD, '%Y-%M-%D') AS REG_DD
, COUNT(A.NOTI_ID) OVER(PARTITION BY 1) AS TOT_CNT
FROM SM_NOTIFICATION A
INNER JOIN (
SELECT S.NOTI_ID
FROM SM_NOTIFICATION S
WHERE S.RECV_USER_ID = #{recvUserId}
AND S.REG_DD > DATE_SUB(NOW(), INTERVAL 1 MONTH)
ORDER BY S.NOTI_ID DESC
LIMIT #{pageStartRowNum}, #{pageSize}
) AS A2
USING(NOTI_ID)
JOIN SM_CODE_S B
ON B.S_CODE_ID = A.NOTI_TYPE_CD
WHERE 1=1
AND B.L_CODE_ID = 'NOTI_TYPE_CD'
AND B.USE_YN = 'Y'
ORDER BY A.NOTI_ID DESC
]]>
</select>
<select id="countNotifications" parameterType="String" resultType="Integer">
<![CDATA[
SELECT COUNT(1)
FROM SM_NOTIFICATION A
WHERE A.RECV_USER_ID = #{recvUserId}
AND A.REG_DD > DATE_SUB(NOW(), INTERVAL 1 MONTH)
]]>
</select>
<select id="countUnreadNotification" parameterType="String" resultType="Integer">
<![CDATA[
SELECT COUNT(NOTI_ID) AS UNREAD_CNT

View File

@ -3,33 +3,17 @@
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<title>test</title>
<script src="/nlib/js/jquery/jquery.min.js"></script>
<script src="/nlib/js/nlib.js"></script>
<style>
p {
font-size: 5em;
}
p span {
font-size: 5rem;
}
</style>
</head>
<body>
<div id="para">
가테스트1
<p>가테스트2
<span>R테스트 3</span>
</p>
</div>
NLIB
</body>
</html>