쇼핑몰 사이트맵 xml 자동 생성

This commit is contained in:
이대환
2026-09-08 13:56:17 +09:00
parent 5f3687deb1
commit 2e33dc43f3
5 changed files with 189 additions and 0 deletions

View File

@@ -1569,5 +1569,124 @@
AND GD.USE_AT = 'Y'
</select>
<!-- 사이트맵 XML -->
<select id="selectSitemapXml"
parameterType="String"
resultType="dataMap">
WITH RECURSIVE CATEGORY_TREE AS (
SELECT
GC.CTGRY_ID
, GC.UPPER_CTGRY_ID
, GC.SOPMAL_CD
, GC.CTGRY_NM
, GC.CTGRY_DEPTH
, GC.SORT_ORDR
, GC.CTGRY_DV_CD
, GC.EXPSR_CD
, GC.URL_DV_CD
, CASE
WHEN GC.URL_DV_CD = '01' THEN ''
WHEN GC.URL_DV_CD = '02' THEN GC.URL
ELSE NULL
END URL
, GC.USE_AT
, GC.EXPSR_BGN_DT
, GC.EXPSR_END_DT
FROM GC_CATEGORY GC
WHERE GC.SOPMAL_CD = #{sopmalCd}
AND GC.UPPER_CTGRY_ID IS NULL
AND GC.USE_AT = 'Y'
AND (
GC.EXPSR_CD = '01'
OR (
GC.EXPSR_CD = '03'
AND SYSDATE() BETWEEN GC.EXPSR_BGN_DT AND GC.EXPSR_END_DT
)
)
UNION ALL
SELECT
CHILD.CTGRY_ID
, CHILD.UPPER_CTGRY_ID
, CHILD.SOPMAL_CD
, CHILD.CTGRY_NM
, CHILD.CTGRY_DEPTH
, CHILD.SORT_ORDR
, CHILD.CTGRY_DV_CD
, CHILD.EXPSR_CD
, CHILD.URL_DV_CD
, CASE
WHEN CHILD.URL_DV_CD = '01' THEN
CASE
WHEN CHILD.CTGRY_DV_CD = '01' THEN CONCAT('/sopmal/goods/selectGoodsListForm?ctgryId=', CHILD.CTGRY_ID)
ELSE NULL
END
WHEN CHILD.URL_DV_CD = '02' THEN CHILD.URL
ELSE NULL
END URL
, CHILD.USE_AT
, CHILD.EXPSR_BGN_DT
, CHILD.EXPSR_END_DT
FROM GC_CATEGORY CHILD
INNER JOIN CATEGORY_TREE PARENT
ON CHILD.SOPMAL_CD = PARENT.SOPMAL_CD
AND CHILD.UPPER_CTGRY_ID = PARENT.CTGRY_ID
WHERE CHILD.USE_AT = 'Y'
AND (
CHILD.EXPSR_CD = '01'
OR (
CHILD.EXPSR_CD = '03'
AND SYSDATE() BETWEEN CHILD.EXPSR_BGN_DT AND CHILD.EXPSR_END_DT
)
)
)
SELECT CONCAT(GS.PC_DOMN_ADRES, GC.URL) AS TARGET_URL
, DATE_FORMAT(SYSDATE(), '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
, ROUND(POWER(0.8, GC.CTGRY_DEPTH - 1), 4) AS PRIORITY
FROM CATEGORY_TREE GC
INNER JOIN GC_SHOP GS
ON GC.SOPMAL_CD = GS.SOPMAL_CD
WHERE GC.CTGRY_DV_CD != '02'
AND GC.CTGRY_DEPTH != 2
UNION
SELECT CONCAT(GS.PC_DOMN_ADRES, '/sopmal/goods/selectGoodsDtl?goodsInnb=', GG.GOODS_INNB) AS TARGET_URL
, DATE_FORMAT(GG.UPDT_DT, '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
, ROUND(POWER(0.8, 1), 4) AS PRIORITY
FROM GC_GOODS GG
INNER JOIN GC_SHOP GS
ON GG.SOPMAL_CD = GS.SOPMAL_CD
WHERE GG.USE_AT = 'Y'
AND GG.SOPMAL_CD = #{sopmalCd}
AND GG.GOODS_KND_CD = '01'
AND GG.EXPSR_DV_CD = '01'
AND GG.GOODS_STTUS_CD IN ('01', '02')
UNION
SELECT CONCAT(GS.PC_DOMN_ADRES, '/sopmal/csc/selectBbscttAuth?authDv=CM&amp;bbsTyCd=',
CASE
WHEN GB.BBS_ID = 'sake_column' THEN '01'
WHEN GB.BBS_ID = 'magazine' THEN '09'
ELSE NULL
END,
'&amp;bbscttInnb=', GB.BBSCTT_INNB,
'&amp;reqUrl=subPage&amp;bbsId=', GB.BBS_ID,
'&amp;cscAt='
) AS TARGET_URL
, DATE_FORMAT(GB.UPDT_DT, '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
, ROUND(POWER(0.8, 1), 4) AS PRIORITY
FROM GC_BOARDDATA GB
INNER JOIN GC_SHOP GS
ON GB.SOPMAL_CD = GS.SOPMAL_CD
WHERE GB.USE_AT = 'Y'
AND GB.EXPSR_AT = 'Y'
AND (
GB.NTCE_PD_SETUP_AT = 'N'
OR (
GB.NTCE_PD_SETUP_AT = 'Y'
AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN DATE_FORMAT(GB.NTCE_BGN_DE, '%Y-%m-%d') AND DATE_FORMAT(GB.NTCE_END_DE, '%Y-%m-%d')
)
)
AND GB.BBS_ID IN ('sake_column', 'magazine')
AND depth = 0
ORDER BY PRIORITY DESC
</select>
</mapper>