From 068e39122baf5e9a11581ce3b7c3350c4d66dcbc Mon Sep 17 00:00:00 2001 From: ijunho Date: Tue, 4 Nov 2025 16:51:12 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A9=94=EC=9D=B8=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=20=EC=9E=91=EC=97=85=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kcc/let/utl/sim/service/EgovClntInfo.java | 44 +++-- .../service/VEPrcsAplctPrdService.java | 3 + .../service/impl/VEPrcsAplctPrdDAO.java | 5 + .../impl/VEPrcsAplctPrdServiceImpl.java | 5 + src/main/java/kcc/web/MainController.java | 47 +++++- .../ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml | 154 ++++++++++++++++++ 6 files changed, 239 insertions(+), 19 deletions(-) diff --git a/src/main/java/kcc/let/utl/sim/service/EgovClntInfo.java b/src/main/java/kcc/let/utl/sim/service/EgovClntInfo.java index 1446e5a2..33b1538c 100644 --- a/src/main/java/kcc/let/utl/sim/service/EgovClntInfo.java +++ b/src/main/java/kcc/let/utl/sim/service/EgovClntInfo.java @@ -1,5 +1,8 @@ package kcc.let.utl.sim.service; +import java.net.Inet6Address; +import java.net.InetAddress; + import javax.servlet.http.HttpServletRequest; //import kcc.com.cmm.service.EgovProperties; @@ -35,29 +38,44 @@ public class EgovClntInfo { return ipAddr; }*/ public static String getClntIP(HttpServletRequest request) throws Exception { - - // IP주소 - //String ipAddr = request.getRemoteAddr(); - - String ip = request.getHeader("X-Forwarded-For"); - - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + String ip = request.getHeader("X-Forwarded-For"); + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } - - return ip; + + // 여러 IP가 있을 경우 첫 번째 IP 사용 + if (ip != null && ip.contains(",")) { + ip = ip.split(",")[0].trim(); + } + + // IPv6 → IPv4 변환 + try { + InetAddress inetAddress = InetAddress.getByName(ip); + if (inetAddress instanceof Inet6Address) { + if (ip.startsWith("::ffff:")) { // IPv4-mapped IPv6 + ip = ip.substring(7); + } else { + // 실제 IPv6이면 그대로 두거나 원하는 경우 공백 반환 + // ip = ""; // IPv6은 제외하고 싶을 때 + } + } + } catch (Exception e) { + // 무시 (유효하지 않은 IP일 수 있음) + } + + return ip; } /** diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsAplctPrdService.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsAplctPrdService.java index 35956435..2ebbf563 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsAplctPrdService.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/VEPrcsAplctPrdService.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.impl.VEPrcsAplctPrdDAO; public interface VEPrcsAplctPrdService { @@ -97,4 +98,6 @@ public interface VEPrcsAplctPrdService { List findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO); public VEPrcsDetailVO selectCompleteDocDetail(VEPrcsDetailVO vEPrcsDetailVO); + + public List selectMainContent() throws Exception ; } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdDAO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdDAO.java index 3131a59d..2b8aa817 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdDAO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdDAO.java @@ -178,4 +178,9 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO { return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectCompleteDocDetail", vEPrcsDetailVO); } + public List selectMainContent() throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectMainContent"); + return tlist; + } + } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java index 26189ad8..c08152ad 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/prcsInfo/service/impl/VEPrcsAplctPrdServiceImpl.java @@ -414,5 +414,10 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService { return vEPrcsAplctPrdDAO.selectCompleteDocDetail(vEPrcsDetailVO); } + @Override + public List selectMainContent() throws Exception { + return vEPrcsAplctPrdDAO.selectMainContent(); + } + } diff --git a/src/main/java/kcc/web/MainController.java b/src/main/java/kcc/web/MainController.java index 0ff55948..5d0016c5 100644 --- a/src/main/java/kcc/web/MainController.java +++ b/src/main/java/kcc/web/MainController.java @@ -98,6 +98,8 @@ import kcc.let.uat.uia.service.SsoLoginVO; import kcc.let.uss.notify.service.NotifyManageService; import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; @@ -191,6 +193,9 @@ public class MainController { @Resource(name="vEInstrService") private VEInstrService vEInstrService; + @Resource(name = "vEPrcsAplctPrdService") + private VEPrcsAplctPrdService vEPrcsAplctPrdService; + @Value("#{globalSettings['Globals.email.host']}") private String Globals_email_host; @Value("#{globalSettings['Globals.email.port']}") @@ -387,12 +392,6 @@ public class MainController { public String siteMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception{ //메인이미지 try { - String referer = (String)request.getHeader("REFERER"); - -// LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; -// String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); -// model.addAttribute("userAuthority", userAuthority); //권한 - 강사일 시 메인의 청소년, 성인, 체험교실, 콘텐츠 메뉴 링크이동 막기 위해 추가 - /** 메인존 */ model.addAttribute("mainzoneList", mainZone()); //PC @@ -412,6 +411,9 @@ public class MainController { model.addAttribute("atchBbsList", atchBbsList.get("atchBbsList")); model.addAttribute("atchBbsUrl", atchBbsList.get("atchBbsUrl")); + /** 주요 교육일정 */ + List eduAplctList = eduAplctList(); + }catch(Exception ex) { ex.printStackTrace(); System.out.println(ex.getMessage()); @@ -2099,5 +2101,38 @@ public class MainController { return returnMap; } + + private List eduAplctList() throws Exception{ + + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + + //1.pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(1); + paginationInfo.setRecordCountPerPage(12); + paginationInfo.setPageSize(12); + //로그인 처리==================================== + + //1.pageing step1 + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + vEPrcsDetailVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + vEPrcsDetailVO.setLastIndex(paginationInfo.getLastRecordIndex()); + vEPrcsDetailVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + vEPrcsDetailVO.setSearchSortCnd("prcs_ord"); + vEPrcsDetailVO.setSearchSortOrd("desc"); + + //기반강화 조회 +// vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); + + vEPrcsDetailVO.setUseYn("Y"); //공개 여부만 조회 + + List vEPrcsDetailVOList = vEPrcsAplctPrdService.selectMainContent(); + + return vEPrcsDetailVOList; + } } \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml index a1b6e703..3361c86a 100644 --- a/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml +++ b/src/main/resources/egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml @@ -1963,5 +1963,159 @@ a.prcs_aplct_prd_ord = #prcsAplctPrdOrd# + +