주소록그룹 성능개선

This commit is contained in:
itn 2023-08-30 14:58:01 +09:00
parent 70e5cb9981
commit 47f4edf866
7 changed files with 161 additions and 13 deletions

View File

@ -22,6 +22,9 @@ public interface AddrGroupService {
public AddrGroupVO selectAddrGroupDetail(AddrGroupVO addrGroupVO) throws Exception;
// 주소록 그룹 카운트 조회
public AddrGroupVO selectAddrGroupCnt(AddrGroupVO addrGroupVO) throws Exception;
public String insertAddrGroup(AddrGroupVO addrGroupVO) throws Exception;
public int updateAddrGroup(AddrGroupVO addrGroupVO) throws Exception;

View File

@ -18,6 +18,28 @@ public class AddrGroupVO extends ComDefaultVO{
private String grpCount; // 그룹에 소속된 주소록 갯수
private String mergeGrps; // 합치기 그룹 id
private int bookmarkCnt;
private int nogrpCnt;
private int addrTotCnt;
public int getBookmarkCnt() {
return bookmarkCnt;
}
public void setBookmarkCnt(int bookmarkCnt) {
this.bookmarkCnt = bookmarkCnt;
}
public int getNogrpCnt() {
return nogrpCnt;
}
public void setNogrpCnt(int nogrpCnt) {
this.nogrpCnt = nogrpCnt;
}
public int getAddrTotCnt() {
return addrTotCnt;
}
public void setAddrTotCnt(int addrTotCnt) {
this.addrTotCnt = addrTotCnt;
}
public int getTotcnt() {
return totcnt;
}

View File

@ -44,7 +44,16 @@ public class AddrGroupDAO extends EgovAbstractDAO {
public AddrGroupVO selectAddrGroupDetail(AddrGroupVO addrGroupVO) throws Exception {
return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupDetail", addrGroupVO);
}
/**
* 주소록 그룹 카운트 조회
* @param addrGroupVO
* @return
* @throws Exception
*/
public AddrGroupVO selectAddrGroupCnt(AddrGroupVO addrGroupVO) throws Exception {
return (AddrGroupVO) select("AddrGroupDAO.selectAddrGroupCnt", addrGroupVO);
}
/**
* 주소록 그룹 등록

View File

@ -46,6 +46,11 @@ public class AddrGroupServiceImpl extends EgovAbstractServiceImpl implements Ad
return addrGroupDAO.selectAddrGroupDetail(addrGroupVO);
}
// 주소록 그룹 카운트 조회
public AddrGroupVO selectAddrGroupCnt(AddrGroupVO addrGroupVO) throws Exception {
return addrGroupDAO.selectAddrGroupCnt(addrGroupVO);
}
public String insertAddrGroup(AddrGroupVO addrGroupVO) throws Exception {
int orderNum = addrGroupDAO.selectMaxOrderNumber(addrGroupVO);
addrGroupVO.setGrpOrder(orderNum);

View File

@ -181,10 +181,12 @@ public class AddrGroupController {
addrGroupVO.setSearchSortCnd("grpOrder");
addrGroupVO.setSearchSortOrd("desc");
}
addrGroupVO.setSiteId("web");
List<AddrGroupVO> addrGroupList = addrGroupService.selectAddrGroupList(addrGroupVO);
/*
* JSPark 2023.08.30 => Ajax 변경
//회원별 주소록 전체 갯수 조회
int addrTotalCount = addrService.selectAddrTotalCount(addrVO);
@ -194,12 +196,12 @@ public class AddrGroupController {
addrVO.setType("noGrp");
List<AddrVO> addrNoGrpList = addrService.selectAddrBasicGrpList(addrVO);
model.addAttribute("addrTotalCount", addrTotalCount);
model.addAttribute("addrGroupList", addrGroupList);
model.addAttribute("addrBookmarkList", addrBookmarkList);
model.addAttribute("addrNoGrpList", addrNoGrpList);
*/
model.addAttribute("addrGroupList", addrGroupList);
model.addAttribute("userId", userId);
return "/web/addr/AddrGroupListAjax";
@ -427,6 +429,54 @@ public class AddrGroupController {
return "/web/addr/AddrGroupSelectAjax";
}
/**
* 주소록 그룹 카운트 조회 Ajax
*
* @param request
* @param addrGroupVO
* @param redirectAttributes
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/web/addr/selectAddrGroupCntAjax.do")
public ModelAndView selectAddrGroupCntAjax(HttpServletRequest request,
@ModelAttribute("searchVO") AddrGroupVO addrGroupVO
, Model model) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
int bookmarkCnt = 0;
int nogrpCnt = 0;
int addrTotCnt = 0;
try{
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
addrGroupVO.setMberId(user.getId());
addrGroupVO = addrGroupService.selectAddrGroupCnt(addrGroupVO);
if (addrGroupVO != null) {
bookmarkCnt = addrGroupVO.getBookmarkCnt();
nogrpCnt = addrGroupVO.getNogrpCnt();
addrTotCnt = addrGroupVO.getAddrTotCnt();
}
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
modelAndView.addObject("addrTotCnt", addrTotCnt);
modelAndView.addObject("nogrpCnt", nogrpCnt);
modelAndView.addObject("bookmarkCnt", bookmarkCnt);
return modelAndView;
}
/**
* 주소록 그룹 수정 로직

View File

@ -69,7 +69,38 @@
WHERE 1=1
AND a.ADDR_GRP_ID = #addrGrpId#
</select>
<!-- 주소록 그룹 카운트 조회 -->
<select id="AddrGroupDAO.selectAddrGroupCnt" parameterClass="addrGroupVO" resultClass="addrGroupVO">
SELECT
(
SELECT
COUNT(0)
FROM MJ_ADDR A
WHERE A.MBER_ID = #mberId#
AND A.BOOKMARK = 'Y'
AND A.DELETE_YN = 'N'
) bookmarkCnt
, (
SELECT
COUNT(0)
FROM MJ_ADDR A
WHERE A.MBER_ID = #mberId#
AND A.ADDR_GRP_ID = '0'
AND A.BOOKMARK = 'N'
AND A.DELETE_YN = 'N'
) nogrpCnt
, (
SELECT
COUNT(0)
FROM MJ_ADDR A
WHERE A.MBER_ID = #mberId#
AND (A.RECV_STATUS = 'Y' OR A.RECV_STATUS = 'S' OR A.RECV_STATUS IS NULL)
AND A.DELETE_YN = 'N'
) addrTotCnt
FROM DUAL
</select>
<!-- 주소록 그룹 등록 -->
<insert id="AddrGroupDAO.insertAddrGroup" parameterClass="addrGroupVO">
INSERT INTO MJ_ADDR_GRP (

View File

@ -6,9 +6,39 @@
<script src="/publish/js/content.js"></script>
<script type="text/javascript">
var successHtml="";
$(document).ready(function(){
// 주소록 그룹 카운트
getAddrGroupCnt();
});
// 주소록 그룹 카운트
function getAddrGroupCnt() {
$.ajax({
type: "POST",
url: "/web/addr/selectAddrGroupCntAjax.do",
data: {},
dataType:'json',
async: true,
success: function (data) {
if (data.isSuccess) {
$("#addrTotCnt").html(numberWithCommas(data.addrTotCnt));
$("#nogrpCnt").html(data.nogrpCnt);
$("#bookmarkCnt").html(data.bookmarkCnt);
}
else {
//alert("Msg : " + data.msg);
}
},
error: function (e) {
//alert("ERROR : " + JSON.stringify(e));
}
});
}
// 주소록 그룹 리스트 띄우기
function listAddrGroupAjax() {
var form = document.searchAddrGrpForm;
@ -599,7 +629,7 @@ function listAddrTransHistAjax(pageNo) {
<label for="groupAll" class="label">전체 선택</label>
<input type="checkbox" name="groupAll" id="groupAll" value="1" onClick="fnCheckAll();">
</div>
<p class="open" onclick="openThisGroup('');"><img src="/publish/images/content/open_folder.png" alt="폴더 열림">전체[<span class="c_002c9a fwMd"><fmt:formatNumber value="${addrTotalCount}" pattern="#,###"/></span>/최대 100,000]</p>
<p class="open" onclick="openThisGroup('');"><img src="/publish/images/content/open_folder.png" alt="폴더 열림">전체[<span class="c_002c9a fwMd" id="addrTotCnt"></span>/최대 100,000]</p>
</div>
<div class="adr1_btnWrap">
<div>
@ -615,18 +645,16 @@ function listAddrTransHistAjax(pageNo) {
</div>
<div class="adr1_list">
<!-- 고정그룹 : 그룹미지정 -->
<c:set var="noGrpSize" value="${fn:length(addrNoGrpList)}" />
<div class="adr_cb_wrap list_fixed">
<label for="group1" class="label"></label>
<input type="checkbox" id="group1" disabled="disabled">
<p onclick="openThisGroup('noGrp');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">그룹미지정[<span><fmt:formatNumber value="${noGrpSize}" pattern="#,###"/></span>명]</p>
<p onclick="openThisGroup('noGrp');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">그룹미지정[<span id="nogrpCnt"></span>명]</p>
</div>
<!-- 고정그룹 : 자주보내는번호 -->
<c:set var="bookmarkSize" value="${fn:length(addrBookmarkList)}" />
<div class="adr_cb_wrap list_fixed">
<label for="group2" class="label"></label>
<input type="checkbox" id="group2" disabled="disabled">
<p onclick="openThisGroup('bookmark');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">자주보내는 번호[<span><fmt:formatNumber value="${bookmarkSize}" pattern="#,###"/></span>명]
<p onclick="openThisGroup('bookmark');"><img src="/publish/images/content/close_folder2.png" alt="폴더 닫힘">자주보내는 번호[<span id="bookmarkCnt"></span>명]
</div>
<c:forEach var="addrGroupList" items="${addrGroupList}" varStatus="status">
<div class="adr_cb_wrap list_switch">