147 lines
5.5 KiB
XML
147 lines
5.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<!--
|
|
원본: src/java/sql/common/menu_sql.xml (SX_CO0080, SX_CO0090)
|
|
-->
|
|
<mapper namespace="com.company.gw.common.mapper.MenuMapper">
|
|
|
|
<!-- 사용자 권한 기반 메뉴 트리 조회 (재귀 CTE) -->
|
|
<select id="getMenuList" parameterType="map" resultType="com.company.gw.common.dto.MenuDto">
|
|
WITH MENU_TREE AS (
|
|
SELECT A.MENU_NO AS upMenuNo,
|
|
A.CORP_NO,
|
|
A.MENU_NO,
|
|
A.UPPER_MENU_NO,
|
|
A.MENU_NM,
|
|
A.URL,
|
|
A.RM,
|
|
A.MENU_PROP,
|
|
A.MENU_ORDR,
|
|
A.MENU_USE_YN,
|
|
1 AS lvl,
|
|
CAST('/' + RIGHT('00000' + CONVERT(VARCHAR, A.MENU_ORDR), 5) AS VARCHAR(MAX)) AS sortPath
|
|
FROM SX_CO0080 A
|
|
JOIN SX_CO0090 B
|
|
ON B.CORP_NO = A.CORP_NO
|
|
AND B.MENU_NO = A.MENU_NO
|
|
AND B.MENU_AUTH_CD = #{menuAuthCd}
|
|
WHERE A.CORP_NO = #{corpNo}
|
|
AND A.MENU_USE_YN = 'Y'
|
|
AND NULLIF(A.UPPER_MENU_NO, '') IS NULL
|
|
UNION ALL
|
|
SELECT PARENT.upMenuNo,
|
|
A.CORP_NO,
|
|
A.MENU_NO,
|
|
A.UPPER_MENU_NO,
|
|
A.MENU_NM,
|
|
A.URL,
|
|
A.RM,
|
|
A.MENU_PROP,
|
|
A.MENU_ORDR,
|
|
A.MENU_USE_YN,
|
|
PARENT.lvl + 1 AS lvl,
|
|
PARENT.sortPath + CAST('/' + RIGHT('00000' + CONVERT(VARCHAR, A.MENU_ORDR), 5) AS VARCHAR(MAX)) AS sortPath
|
|
FROM SX_CO0080 A
|
|
JOIN SX_CO0090 B
|
|
ON B.CORP_NO = A.CORP_NO
|
|
AND B.MENU_NO = A.MENU_NO
|
|
AND B.MENU_AUTH_CD = #{menuAuthCd}
|
|
JOIN MENU_TREE PARENT
|
|
ON PARENT.CORP_NO = A.CORP_NO
|
|
AND PARENT.MENU_NO = A.UPPER_MENU_NO
|
|
WHERE A.CORP_NO = #{corpNo}
|
|
AND A.MENU_USE_YN = 'Y'
|
|
)
|
|
SELECT MENU_NO AS menuNo,
|
|
UPPER_MENU_NO AS upperMenuNo,
|
|
MENU_NM AS menuNm,
|
|
URL,
|
|
RM,
|
|
MENU_PROP AS menuProp,
|
|
MENU_ORDR AS menuOrdr,
|
|
MENU_USE_YN AS menuUseYn,
|
|
lvl
|
|
FROM MENU_TREE
|
|
WHERE CORP_NO = #{corpNo}
|
|
ORDER BY sortPath
|
|
</select>
|
|
|
|
<select id="getMenuList" parameterType="map" resultType="com.company.gw.common.dto.MenuDto" databaseId="mariadb">
|
|
WITH MENU_TREE AS (
|
|
SELECT A.MENU_NO AS upMenuNo,
|
|
A.CORP_NO,
|
|
A.MENU_NO,
|
|
A.UPPER_MENU_NO,
|
|
A.MENU_NM,
|
|
A.URL,
|
|
A.RM,
|
|
A.MENU_PROP,
|
|
A.MENU_ORDR,
|
|
A.MENU_USE_YN,
|
|
1 AS lvl,
|
|
CONCAT('/', LPAD(A.MENU_ORDR, 5, '0')) AS sortPath
|
|
FROM SX_CO0080 A
|
|
JOIN SX_CO0090 B
|
|
ON B.CORP_NO = A.CORP_NO
|
|
AND B.MENU_NO = A.MENU_NO
|
|
AND B.MENU_AUTH_CD = #{menuAuthCd}
|
|
WHERE A.CORP_NO = #{corpNo}
|
|
AND A.MENU_USE_YN = 'Y'
|
|
AND NULLIF(A.UPPER_MENU_NO, '') IS NULL
|
|
UNION ALL
|
|
SELECT PARENT.upMenuNo,
|
|
A.CORP_NO,
|
|
A.MENU_NO,
|
|
A.UPPER_MENU_NO,
|
|
A.MENU_NM,
|
|
A.URL,
|
|
A.RM,
|
|
A.MENU_PROP,
|
|
A.MENU_ORDR,
|
|
A.MENU_USE_YN,
|
|
PARENT.lvl + 1 AS lvl,
|
|
CONCAT(PARENT.sortPath, '/', LPAD(A.MENU_ORDR, 5, '0')) AS sortPath
|
|
FROM SX_CO0080 A
|
|
JOIN SX_CO0090 B
|
|
ON B.CORP_NO = A.CORP_NO
|
|
AND B.MENU_NO = A.MENU_NO
|
|
AND B.MENU_AUTH_CD = #{menuAuthCd}
|
|
JOIN MENU_TREE PARENT
|
|
ON PARENT.CORP_NO = A.CORP_NO
|
|
AND PARENT.MENU_NO = A.UPPER_MENU_NO
|
|
WHERE A.CORP_NO = #{corpNo}
|
|
AND A.MENU_USE_YN = 'Y'
|
|
)
|
|
SELECT MENU_NO AS menuNo,
|
|
UPPER_MENU_NO AS upperMenuNo,
|
|
MENU_NM AS menuNm,
|
|
URL,
|
|
RM,
|
|
MENU_PROP AS menuProp,
|
|
MENU_ORDR AS menuOrdr,
|
|
MENU_USE_YN AS menuUseYn,
|
|
lvl
|
|
FROM MENU_TREE
|
|
WHERE CORP_NO = #{corpNo}
|
|
ORDER BY sortPath
|
|
</select>
|
|
|
|
<!-- 컨트롤러-롤 매핑 목록 (접근 권한 체크용) -->
|
|
<select id="getControllerRoleList" parameterType="map" resultType="com.company.gw.common.dto.ControllerRoleDto">
|
|
SELECT DISTINCT
|
|
A.CONTROLLER AS controller,
|
|
B.MENU_AUTH_CD AS role,
|
|
B.FUNC_AUTH_CN AS funcAuthCn
|
|
FROM SX_CO0080 A
|
|
JOIN SX_CO0090 B
|
|
ON B.CORP_NO = A.CORP_NO
|
|
AND B.MENU_NO = A.MENU_NO
|
|
WHERE A.CORP_NO = #{corpNo}
|
|
AND A.MENU_USE_YN = 'Y'
|
|
AND NULLIF(A.CONTROLLER, '') IS NOT NULL
|
|
ORDER BY A.CONTROLLER
|
|
</select>
|
|
|
|
</mapper>
|