diff --git a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java index 65988341..93c9fd7d 100644 --- a/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java +++ b/src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java @@ -5,6 +5,7 @@ import java.io.InputStreamReader; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -16,6 +17,7 @@ import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; @@ -29,6 +31,8 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; @@ -62,6 +66,7 @@ import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.lett.service.HashConfVO; import itn.let.lett.service.LetterService; import itn.let.lett.service.LetterVO; +import itn.let.mail.service.StatusResponse; import itn.let.mjo.addr.service.AddrGroupService; import itn.let.mjo.addr.service.AddrGroupVO; import itn.let.mjo.addr.service.AddrService; @@ -1802,47 +1807,91 @@ public class MjonMsgCampainDataController { return jspUrl; } - - /** - * 선거문자 주소록 그룹 선택시 우측 주소록 리스트 화면 불러오기 - * - * @param AddrGroupVO - * @param AddrVO - * @param sessionVO - * @param model - * @return - * @throws Exception - */ - @RequestMapping(value= {"/web/mjon/msgcampain/selectMsgAddrListAjax.do"}) - public ModelAndView selectMsgAddrListAjax( - @ModelAttribute("searchVO") AddrVO addrVO, - ModelMap model, - RedirectAttributes redirectAttributes) throws Exception { + /** + * 선거문자 주소록 그룹 선택시 우측 주소록 리스트 화면 불러오기 + * + * @param AddrGroupVO + * @param AddrVO + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value= {"/web/mjon/msgcampain/selectMsgAddrListAjax.do"}) + public ModelAndView selectMsgAddrListAjax( + @ModelAttribute("searchVO") AddrVO addrVO, + ModelMap model, + RedirectAttributes redirectAttributes) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 권한정보 불러오기 - LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); - - if(userId != "") { - addrVO.setMberId(userId); - }else { - - modelAndView.addObject("message", "로그인 후 이용이 가능합니다."); - modelAndView.addObject("result", "loginFail"); - return modelAndView; - - } - - List resultAddrList = mjonMsgDataService.selectMsgAddrListAjax(addrVO); - - modelAndView.addObject("resultAddrList", resultAddrList); - modelAndView.addObject("result", "success"); - - return modelAndView; - } + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId != "") { + addrVO.setMberId(userId); + }else { + + modelAndView.addObject("message", "로그인 후 이용이 가능합니다."); + modelAndView.addObject("result", "loginFail"); + return modelAndView; + + } + + long startTime = System.currentTimeMillis(); // 시작 시간 측정 + + List resultAddrList = mjonMsgDataService.selectMsgAddrListAjax(addrVO); + + long endTime = System.currentTimeMillis(); // 종료 시간 측정 + + long elapsedTime = endTime - startTime; // 소요 시간 계산 + System.out.println("소요 시간: " + elapsedTime + " 밀리초"); + + + modelAndView.addObject("resultAddrList", resultAddrList); + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + /** + * 선거문자 주소록 그룹 선택시 우측 주소록 리스트 화면 불러오기 + * + * @param AddrGroupVO + * @param AddrVO + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value= {"/web/mjon/msgcampain/selectMsgAddrListAjaxQ.do"}) + public ResponseEntity selectMsgAddrListAjax_advc(@ModelAttribute("searchVO") AddrVO addrVO) { + + Map response = new HashMap<>(); + + try { + // 로그인 권한 정보 확인 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + + addrVO.setMberId(userId); + + // OFFSET 계산 + int offset = (addrVO.getPage()) * addrVO.getSize(); + addrVO.setOffset(offset); + // 데이터 조회 + List resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO); + + return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "",resultAddrList)); + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "조회 요청 중 오류가 발생하였습니다.", LocalDateTime.now())); + } + } /** * 선거문자 최근 전송내역 리스트 화면 불러오기 @@ -1884,7 +1933,6 @@ public class MjonMsgCampainDataController { return "web/msgcampain/MsgLatestListAjax"; } - /** * 선거문자 자주 보내는 번호 리스트 화면 불러오기 * diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp index c3c3c1ad..f9ae294a 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp @@ -1734,7 +1734,7 @@ function loadAddrList(){ /* serialize 를 사용할때는 processData, contentType 옵션 제가할것 */ var data = $("#searchAddrGrpForm").serialize(); - var url = "/web/mjon/msgcampain/selectMsgAddrListAjax.do"; + var url = "/web/mjon/msgcampain/selectMsgAddrListAjaxQ.do"; $.ajax({ type: "POST", @@ -1743,42 +1743,20 @@ function loadAddrList(){ dataType:'json', async: true, cache: false, - success: function (returnData, status) { - if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + success: function (data) { + console.log('data : ', data); + if(data.status == "OK"){ - if(returnData.result == "success"){ + var addrList = data.object; - var addrList = returnData.resultAddrList; - var tableData = []; - - if(addrList.length == 0){ - - alert("주소록 정보가 없습니다."); - tableAddr.setData(tableData); - return false; - } - - //받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다. - for(var i=0; i < addrList.length; i++){ - tableData.push({ - groupNm: addrList[i].addrGrpNm - , phone: removeDash(addrList[i].addrPhoneNo) - , name: addrList[i].addrNm - , rep1: addrList[i].addrInfo1 - , rep2: addrList[i].addrInfo2 - , rep3: addrList[i].addrInfo3 - , rep4: addrList[i].addrInfo4 - }); - } - - //우측 주소록 리스트 Tabulator에 입력해주기 - tableAddr.setData(tableData); - - }else{ - alert(returnData.message); + if(addrList.length == 0){ + alert("주소록 정보가 없습니다."); return false; } + //우측 주소록 리스트 Tabulator에 입력해주기 + tableAddr.setData(addrList); + } else if(status== 'fail'){ alert("주소록 불러오기에 실패하였습니다. !!"); } @@ -2788,8 +2766,8 @@ $(document).on('click', '#hdnLink', function() { <%-- 주소록 레이어 팝업 닫기 실행 코드 --%>