
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<?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">
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 관련
-->
<mapper namespace="com.takensoft.cms.menu.dao.MenuDAO">
<!-- 메뉴 정보 resultMap(권한포함) -->
<resultMap id="menuMap" type="MenuVO">
<result property="menuId" column="menu_id" />
<result property="upMenuId" column="up_menu_id" />
<result property="upMenuNm" column="up_menu_nm" />
<result property="menuNm" column="menu_nm" />
<result property="menuExpln" column="menu_expln" />
<result property="menuGrd" column="menu_grd" />
<result property="menuSn" column="menu_sn" />
<result property="menuType" column="menu_type" />
<result property="menuTypeCtgry" column="menu_type_ctgry" />
<result property="linkUrl" column="link_url" />
<result property="linkType" column="link_type" />
<result property="dgstfnExmnUseYn" column="dgstfn_exmn_use_yn" />
<result property="menuExpsrYn" column="menu_expsr_yn" />
<result property="menuUser" column="menu_user" />
<result property="useYn" column="use_yn" />
<result property="rgtr" column="rgtr" />
<result property="rgtrNm" column="rgtr_nm" />
<result property="regDt" column="reg_dt" />
<result property="mdfr" column="mdfr" />
<result property="mdfrNm" column="mdfr_nm" />
<result property="mdfcnDt" column="mdfcn_dt" />
<result property="sysPvsnYn" column="sys_pvsn_yn" />
</resultMap>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 등록
-->
<insert id="save" parameterType="MenuVO">
INSERT INTO menu_info (
menu_id
, up_menu_id
, menu_nm
, menu_expln
, menu_grd
, menu_sn
, menu_type
, menu_type_ctgry
, link_url
, link_type
, dgstfn_exmn_use_yn
, menu_expsr_yn
, menu_user
, use_yn
, rgtr
, reg_dt
, sys_pvsn_yn
) VALUES (
#{menuId}
, #{upMenuId}
, #{menuNm}
, #{menuExpln}
, #{menuGrd}
, #{menuSn}
, #{menuType}
, #{menuTypeCtgry}
, #{linkUrl}
, #{linkType}
, #{dgstfnExmnUseYn}
, #{menuExpsrYn}
, #{menuUser}
, 'Y'
, #{rgtr}
, NOW()
, #{sysPvsnYn}
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴별 권한 등록
-->
<insert id="menuAuthrtSave" parameterType="MenuAuthorVO">
INSERT INTO menu_authrt_info (
authrt_cd
, menu_id
, inq_authrt
, reg_authrt
, mdfcn_authrt
, del_authrt
, file_dwnld_authrt
, reg_dt
) VALUES (
#{authrtCd}
, #{menuId}
<choose>
<when test="authrtCd == 'ROLE_ADMIN'">
, 'Y'
, 'Y'
, 'Y'
, 'Y'
, 'Y'
</when>
<otherwise>
, 'N'
, 'N'
, 'N'
, 'N'
, 'N'
</otherwise>
</choose>
, NOW()
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴별 만족도 등록
-->
<insert id="saveMenuStsfdg" parameterType="MenuStsfdgVO">
INSERT INTO menu_dgstfn (
menu_dgstfn_id
, menu_id
, rspns_five
, rspns_four
, rspns_three
, rspns_two
, rspns_one
, opnn
, reg_ip
, rgtr
, reg_dt
) VALUES (
#{menuDgstfnId}
, #{menuId}
, #{rspnsFive}
, #{rspnsFour}
, #{rspnsThree}
, #{rspnsTwo}
, #{rspnsOne}
, #{opnn}
, #{regIp}
, #{rgtr}
, NOW()
)
</insert>
<sql id="selectMenu">
SELECT mi.menu_id
, mi.up_menu_id
, (SELECT mi2.menu_nm FROM menu_info AS mi2 WHERE mi2.menu_id = mi.up_menu_id) AS up_menu_nm
, mi.menu_nm
, mi.menu_expln
, mi.menu_grd
, mi.menu_sn
, mi.menu_type
, mi.menu_type_ctgry
, mi.link_url
, mi.link_type
, mi.dgstfn_exmn_use_yn
, mi.menu_expsr_yn
, mi.menu_user
, mi.use_yn
, mi.rgtr
, (SELECT mbr.mbr_nm FROM mbr_info AS mbr WHERE mbr.mbr_id = mi.rgtr) AS rgtr_nm
, TO_CHAR (mi.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, mi.mdfr
, (SELECT mbr.mbr_nm FROM mbr_info AS mbr WHERE mbr.mbr_id = mi.mdfr) AS mdfr_nm
, TO_CHAR (mi.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
FROM menu_info AS mi
</sql>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 최상위 메뉴 조회 [관리자용]
-->
<select id="findTopMenu" resultType="MenuVO">
<include refid="selectMenu" />
WHERE up_menu_id IS NULL
ORDER BY menu_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 하위 메뉴 조회 [관리자용]
-->
<select id="findChildMenus" parameterType="String" resultType="MenuVO">
<include refid="selectMenu" />
WHERE up_menu_id = #{menuId}
ORDER BY menu_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.15
내 용 : 메뉴 전체 조회(최상위 메뉴 제외-> grd:0)
-->
<select id="findExceptTopMenu" resultType="MenuVO">
<include refid="selectMenu" />
WHERE menu_grd != 0
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 상세 조회
-->
<select id="findByMenu" parameterType="String" resultMap="menuMap">
<include refid="selectMenu" />
WHERE menu_id = #{menuId}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 깊이 조회
-->
<select id="findByMenuGrd" parameterType="String" resultType="Integer">
SELECT menu_grd
FROM menu_info
WHERE menu_id = #{upMenuId}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 순서 조회
-->
<select id="findByMenuSn" parameterType="String" resultType="Integer">
SELECT COALESCE(MAX(menu_sn), 0)
FROM menu_info
WHERE use_yn = 'Y'
<choose>
<when test="upMenuId != null and upMenuId != ''">
AND up_menu_id = #{upMenuId}
</when>
<otherwise>
AND up_menu_id IS NULL
</otherwise>
</choose>
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.15
내 용 : 메뉴 수정
-->
<update id="update" parameterType="MenuVO">
UPDATE menu_info
SET up_menu_id = #{upMenuId}
, menu_nm = #{menuNm}
, menu_expln = #{menuExpln}
, menu_grd = #{menuGrd}
, menu_sn = #{menuSn}
, menu_type = #{menuType}
, menu_type_ctgry = #{menuTypeCtgry}
, link_url = #{linkUrl}
, link_type = #{linkType}
, dgstfn_exmn_use_yn = #{dgstfnExmnUseYn}
, menu_expsr_yn = #{menuExpsrYn}
, menu_user = #{menuUser}
, use_yn = #{useYn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_id = #{menuId}
</update>
<!-- 메뉴 관리(관리자 페이지 Tree 호출용) -->
<sql id="selecteNode">
SELECT menu_id AS id
, up_menu_id AS up_id
, menu_nm AS nm
FROM menu_info
</sql>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 상위 메뉴 조회
-->
<select id="findByTopNode" resultType="HierachyVO">
<include refid="selecteNode" />
WHERE up_menu_id IS NULL
AND use_yn = 'Y'
ORDER BY menu_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 하위 메뉴 조회
-->
<select id="findChildNode" parameterType="String" resultType="HierachyVO">
<include refid="selecteNode" />
WHERE up_menu_id = #{id}
AND use_yn = 'Y'
ORDER BY menu_sn
</select>
<!-- 메뉴 관리(관리자 페이지 Tree 호출용) -->
<!--
작성자 : 박정하
작성일 : 2024.04.29
내 용 : 상위,하위 메뉴 삭제
-->
<update id="deleteMenu" parameterType="MenuVO">
WITH RECURSIVE MenuHierarchy AS (
SELECT menu_id
, up_menu_id
FROM menu_info
WHERE menu_id = #{menuId}
UNION ALL
SELECT di.menu_id
, di.up_menu_id
FROM menu_info di
JOIN MenuHierarchy dh
ON di.up_menu_id = dh.menu_id
)
UPDATE menu_info
SET use_yn = 'N'
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_id IN (SELECT menu_id FROM MenuHierarchy);
</update>
<!--
작성자 : 박정하
작성일 : 2024.05.02
내 용 : 상위 메뉴 조회 [관리자용]
-->
<select id="findUpMenuId" parameterType="String" resultType="String">
SELECT up_menu_id AS menuId
FROM menu_info
WHERE menu_id = #{menuId}
</select>
<!--
작성자 : 박정하
작성일 : 2024.05.02
내 용 : 메뉴 권한 수정
-->
<update id="updateMenuAuthrt" parameterType="HashMap">
UPDATE menu_authrt_info
SET inq_authrt = #{inqAuthrt}
, reg_authrt = #{regAuthrt}
, mdfcn_authrt = #{mdfcnAuthrt}
, del_authrt = #{delAuthrt}
, file_dwnld_authrt = #{fileDwnldAuthrt}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE authrt_cd = #{authrtCd}
AND menu_id = #{id}
</update>
<!-- 홈페이지 메뉴 호출 전용 -->
<!--
작성자 : takensoft
작성일 : 2024.05.09
내 용 : 최상위 메뉴 조회(라우터 포함)
-->
<select id="findByMenuWithRouter" resultType="SysMenuVO">
SELECT mi.menu_id
, mi.up_menu_id
, mi.menu_nm
, COALESCE(ctm.page_crs, bm.page_crs, mi.link_url, '') AS router_url
, mi.link_type
, mi.menu_type
, mi.menu_type_ctgry
FROM menu_info mi
LEFT JOIN ( SELECT conts_id
<choose>
<when test="menuType == 'adm'">
, mngr_page_crs AS page_crs
</when>
<otherwise>
, page_crs
</otherwise>
</choose>
FROM conts_type_mng
) ctm
ON mi.menu_type_ctgry = ctm.conts_id
AND mi.menu_type = 'conts'
LEFT JOIN ( SELECT bm.bbs_mng_id
<choose>
<when test="menuType == 'adm'">
, br.mngr_page_crs AS page_crs
</when>
<otherwise>
, br.page_crs
</otherwise>
</choose>
FROM bbs_mng bm
LEFT JOIN bbs_router br
ON bm.bbs_mng_id = br.bbs_mng_id
AND br.expsr_yn = 'Y') bm
ON mi.menu_type_ctgry = bm.bbs_mng_id
AND mi.menu_type = 'bbs'
WHERE mi.up_menu_id = #{menuId}
AND mi.use_yn = 'Y'
AND mi.menu_expsr_yn = 'Y'
AND ( NOT EXISTS ( SELECT 1
FROM menu_authrt_info mai
WHERE mai.menu_id = mi.menu_id
<if test="roles != null and roles.size() > 0">
AND mai.authrt_cd IN
<foreach item="role" collection="roles" open="(" separator="," close=")">
#{role}
</foreach>
</if>
) OR EXISTS ( SELECT 1
FROM menu_authrt_info mai
WHERE mai.menu_id = mi.menu_id
AND mai.inq_authrt = 'Y'
<if test="roles != null and roles.size() > 0">
AND mai.authrt_cd IN
<foreach item="role" collection="roles" open="(" separator="," close=")">
#{role}
</foreach>
</if>
)
)
ORDER BY mi.menu_sn
</select>
<!-- 홈페이지 메뉴 호출 전용 -->
<!--
작성자 : 박정하
작성일 : 2024.05.10
내 용 : 메뉴 정보 수정 (hierachyVO 사용)
-->
<update id="menuUpdateByHierachy" parameterType="DeptVO">
UPDATE menu_info
SET up_menu_id = #{upMenuId}
, menu_grd = #{menuGrd}
, menu_sn = #{menuSn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_id = #{menuId}
</update>
<!--
작성자 : 박정하
작성일 : 2024.05.17
내 용 : 메뉴 수정 (콘텐츠 유형)
-->
<update id="updateByContsId" parameterType="ContsTypeVO">
UPDATE menu_info
SET menu_type = null
, menu_type_ctgry = null
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_type_ctgry = #{contsId}
</update>
<!--
작성자 : 방선주
작성일 : 2024.06.07
내 용 : 게시판 관리에서 게시판 삭제 시 게시판 메뉴 미노출로 변경 (MENU_000000000000032 강제 적용)
-->
<update id="bbsMngMenuDelete" parameterType="MenuVO">
UPDATE menu_info
SET
use_yn = #{useYn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE up_menu_id = 'MENU_000000000000032'
AND menu_type_ctgry = #{menuTypeCtgry}
</update>
<!--
작성자 : 박정하
작성일 : 2024.07.18
내 용 : 메뉴 개수 조회 (접속 통계용)
-->
<select id="findAllCnt" parameterType="HashMap" resultType="int">
SELECT COUNT(menu_id)
FROM menu_info
WHERE use_yn = 'Y'
AND up_menu_id = #{menuMainDepth}
</select>
</mapper>