이호영 이호영 04-24
5733 메인배너 이미지관리 좌표 추가
@d6b9f53ef7e9edd946ebdfec20325ba739825c85
 
src/main/java/itn/com/uss/ion/pwm/service/MainZoneLinkVO.java (added)
+++ src/main/java/itn/com/uss/ion/pwm/service/MainZoneLinkVO.java
@@ -0,0 +1,38 @@
+package itn.com.uss.ion.pwm.service;
+
+import itn.com.cmm.ComDefaultVO;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+
+/**
+ * 
+ * @author 		: 이호영
+ * @fileName 	: MainPopupLinkVO.java 
+ * @date 		: 2025.02.26
+ * @description : 
+ * =========================================================== 
+ * DATE          AUTHOR   NOTE 
+ * ----------------------------------------------------------- *
+ * 2025.02.26    이호영          최초 생성
+ * 
+ * 
+ * 
+ */
+@Getter
+@Setter
+public class MainZoneLinkVO extends ComDefaultVO implements Serializable  {
+
+
+//	/**
+//	 * @description :
+//	 */
+//	private static final long serialVersionUID = 1998370534684278351L;
+
+	private String mazId; // 메인존ID
+	private String mlink; // 링크
+	private String coords; // 링크좌표
+	private String linkId; // Auto_Increment PK
+}
src/main/java/itn/com/uss/ion/pwm/service/MainzoneVO.java
--- src/main/java/itn/com/uss/ion/pwm/service/MainzoneVO.java
+++ src/main/java/itn/com/uss/ion/pwm/service/MainzoneVO.java
@@ -16,6 +16,7 @@
 package itn.com.uss.ion.pwm.service;
 
 import java.io.Serializable;
+import java.util.List;
 
 import itn.com.cmm.ComDefaultVO;
 import lombok.Getter;
@@ -102,5 +103,8 @@
 	
 	private String topTxt = "";
 	private String lowTxt = "";
-	
+
+
+
+    private List<MainZoneLinkVO> mainZoneLinkList;
 }
src/main/resources/egovframework/sqlmap/let/uss/pwm/PopupManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/pwm/PopupManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/pwm/PopupManage_SQL_Mysql.xml
@@ -41,6 +41,38 @@
 		<result property="sortNum" 				column="SORT_NUM" 				columnIndex="19"/>
 	</resultMap>
 
+
+	<resultMap id="MainZoneLinkResultMap" class="itn.com.uss.ion.pwm.service.MainZoneLinkVO">
+		<result property="mazId" column="MAZ_ID" />
+		<result property="mlink" column="MLINK" />
+		<result property="coords" column="COORDS" />
+		<result property="linkId" column="LINK_ID" />
+	</resultMap>
+
+	<resultMap id="MainzoneResultMap" class="itn.com.uss.ion.pwm.service.MainzoneVO">
+		<result property="mazId" column="MAZ_ID" />
+		<result property="upfile" column="UPFILE" />
+		<result property="upfileUrl" column="UPFILEURL" />
+		<result property="content" column="CONTENT" />
+		<result property="mlink" column="MLINK" />
+		<result property="istarget" column="ISTARGET" />
+		<result property="regdt" column="REGDT" />
+		<result property="del" column="DEL" />
+		<result property="sort" column="SORT" />
+		<result property="mainzoneImage" column="MAINZONE_IMAGE" />
+		<result property="mainzoneImageFile" column="MAINZONE_IMAGE_FILE" />
+		<result property="mazNm" column="MAZ_NM" />
+		<result property="useYn" column="USE_YN" />
+		<result property="moddt" column="MODDT" />
+		<result property="registerId" column="REGISTERID" />
+		<result property="deviceType" column="DEVICETYPE" />
+		<result property="ntceBgnde" column="NTCE_BGNDE" />
+		<result property="ntceEndde" column="NTCE_ENDDE" />
+
+		<result property="mainZoneLinkList" column="MAZ_ID" select="MainzoneManage.selectMainZoneVOLink" />
+
+	</resultMap>
+
 	<!-- 팝업창관리:: 메인 게시물정보 -->
 	<select id="PopupManage.selectPopupManageMain" resultClass="egovMap">
 	 <![CDATA[
@@ -1021,25 +1053,52 @@
 	<delete id="SocialManage.deleteSocial" parameterClass="String">
 		DELETE FROM SOCIAL_HUB WHERE SOCIAL_ID=#socialId#
 	</delete>
-	
-	<select id="MainzoneManage.selectMainzoneListRolling" resultClass="mainzoneVO">
+
+
+	<select id="MainzoneManage.selectMainZoneVOLink" parameterClass="String" resultMap="MainZoneLinkResultMap">
+
+		/* mainPopup.selectMainZoneVOLink */
+		SELECT
+			MAZ_ID
+			 , MLINK
+			 , COORDS
+			 , LINK_ID
+		FROM MAINZONE_LINK
+		WHERE MAZ_ID = #mazId#
+	</select>
+
+
+	<select id="MainzoneManage.selectMainzoneListRolling" resultMap="MainzoneResultMap">
+	/* MainzoneManage.selectMainzoneListRolling */
 		
-		SELECT   MZ.MAZ_ID AS mazId,
-		         MZ.CONTENT AS content,
-		         MZ.SORT AS sort,
-		         MZ.MAINZONE_IMAGE_FILE AS mainzoneImageFile,
-		         MZ.MAZ_NM AS mazNm,
-		         MZ.MLINK AS mlink
-		FROM     MAINZONE MZ
-		WHERE    MZ.NTCE_BGNDE              IS NOT NULL
-		AND      MZ.NTCE_ENDDE              IS NOT NULL
+		SELECT   MAZ_ID,
+		         UPFILE,
+		         CONCAT("/UPLOADROOT/POPUPZONE/",UPFILE ) as UPFILEURL,
+		         CONTENT,
+		         MLINK,
+		         ISTARGET,
+		         REGDT,
+		         DEL,
+		         SORT,
+		         MAINZONE_IMAGE,
+		         MAINZONE_IMAGE_FILE,
+		         MAZ_NM,
+		         USE_YN,
+		         DATE_FORMAT(MODDT, '%Y-%m-%d %T') MODDT ,
+		         (SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = REGISTER_ID) REGISTERID,
+		         DEVICETYPE,
+		         NTCE_BGNDE,
+		         NTCE_ENDDE
+		FROM     MAINZONE
+		WHERE    NTCE_BGNDE              IS NOT NULL
+		AND      NTCE_ENDDE              IS NOT NULL
 		
 		<![CDATA[
-			AND      DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i') >= MZ.NTCE_BGNDE
-			AND      DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i') <= MZ.NTCE_ENDDE
+			AND      DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i') >= NTCE_BGNDE
+			AND      DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i') <= NTCE_ENDDE
 		]]>
-		AND      MZ.USE_YN                            = 'Y'
-		ORDER BY MZ.SORT
+		AND      USE_YN                            = 'Y'
+		ORDER BY SORT
 	
 	</select>
 	
src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
--- src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
+++ src/main/webapp/WEB-INF/jsp/web/main/mainPage.jsp
@@ -1229,7 +1229,76 @@
 <div class="visual">
 	<div class="swiper-container visual_swiper">
 		<div class="swiper-wrapper" id="                                                                 ">
-		
+
+			<%-- 메인 리스트 반복 시작 --%>
+			<c:choose>
+				<c:when test="${not empty mainzoneList}">
+					<c:forEach var="mainzone" items="${mainzoneList}" varStatus="status">
+						<div class="swiper-slide">
+
+							<c:choose>
+								<%-- CASE 1 & 2: 이미지맵 상세 좌표 리스트가 존재하는 경우 (1개든 여러개든 동일) --%>
+								<c:when test="${not empty mainzone.mainZoneLinkList}">
+									<img src="/cmm/fms/getImage.do?atchFileId=${mainzone.mainzoneImageFile}"
+									     usemap="#mainVisual_${status.index}"
+									     alt="${mainzone.content}" />
+
+									<map name="mainVisual_${status.index}">
+											<%-- 내부 리스트(mainZoneLinkList) 반복 처리 --%>
+										<c:forEach var="link" items="${mainzone.mainZoneLinkList}">
+											<area shape="rect" coords="${link.coords}" href="${link.mlink}" alt="영역 링크" />
+										</c:forEach>
+
+											<%-- [중요] 전체 링크(mlink)도 DB에 있다면, 이미지맵 빈 공간 클릭 시 이동하도록 추가 --%>
+										<c:if test="${not empty mainzone.mlink}">
+											<area shape="default" href="${mainzone.mlink}" alt="전체 링크" />
+										</c:if>
+									</map>
+								</c:when>
+
+								<%-- CASE 3: 이미지맵 리스트는 없지만, 전체 링크(mlink) 필드는 채워진 경우 --%>
+								<c:when test="${not empty mainzone.mlink}">
+									<div class="slideImg">
+										<a href="${mainzone.mlink}">
+											<img src="/cmm/fms/getImage.do?atchFileId=${mainzone.mainzoneImageFile}" alt="${mainzone.content}">
+										</a>
+									</div>
+								</c:when>
+
+								<%-- CASE 4: 이미지맵 리스트도 없고, 전체 링크도 없는 경우 (순수 이미지) --%>
+								<c:otherwise>
+									<div class="slideImg">
+										<img src="/cmm/fms/getImage.do?atchFileId=${mainzone.mainzoneImageFile}" alt="${mainzone.content}" />
+									</div>
+								</c:otherwise>
+							</c:choose>
+
+						</div>
+					</c:forEach>
+				</c:when>
+				<c:otherwise>
+					<!-- 이미지맵 여러개인 경우 -->
+					<div class="swiper-slide">
+						<img src="/publish/images/main/main_visual.jpg" usemap="#mainViusal" alt="" />
+						<map name="mainViusal">
+							<area shape="rect" coords="345,280,570,336" href="/web/mjon/msgdata/selectMsgDataView.do" alt="" />
+							<area shape="rect" coords="588,280,810,336" href="/web/info/mjonInfo.do" alt="" />
+						</map>
+					</div>
+
+					<!-- 이미지맵 하나인경우 -->
+					<div class="swiper-slide">
+						<img src="/publish/images/main/main_visual02.jpg" usemap="#mainViusal2" alt="" />
+						<map name="mainViusal2">
+							<area shape="rect" coords="345,230,569,285" href="/web/mjon/addragency/selectAddrAgencyList.do" alt="" />
+						</map>
+					</div>
+				</c:otherwise>
+			</c:choose>
+		<%--	메인 배너 이미지 등록된 건이 없는 경우 --%>
+
+
+<%--
 				<!-- 이미지맵 여러개인 경우 -->
 				<div class="swiper-slide">
 					<img src="/publish/images/main/main_visual.jpg" usemap="#mainViusal" alt="" />
@@ -1262,7 +1331,7 @@
 						<img src="/publish/images/main/f_visual_04_20221116.jpg" alt="문자는 이제, 문자온! 선택은 역시 문자온! 문자사이트 선택의 5가지 기준 1. 가격, 속도, 성능, 기능, 보안이 보장되는가? 2. 결제, 정산, 계산서 발행 등 업무가 자동화 되어 있고 편리한가? 3. 최신 IT 기술과 트렌드가 반영되어 있는가? 4. 회원가입 및 발신번호 인증이 쉽고 빠르며, 대량문자를 전송하기에 사용이 편리한가? 5. 매일 문자샘플이 업데이트 되고, CS 및 기술응대가 실시간적으로 이루어지는가?" />
 					</div>
 				</div>
-				
+				--%>
 			<%-- <c:choose>
 				<c:when test="${not empty mainzoneList}">
 					<c:forEach var="mainzone" items="${mainzoneList}" varStatus="status">
Add a comment
List