merge master into develop - CscListRForm.jsp FAQ 아코디언 버그 수정

This commit is contained in:
jilee4unity
2026-05-28 23:34:06 +09:00
7250 changed files with 570509 additions and 25 deletions

View File

@@ -0,0 +1,159 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.admin.sys.authFnctMenu.mapper.BOMaAuthFnctMenuMapper">
<!-- 권한그룹메뉴 등록 -->
<insert id="insertBOAuthFnctMenu" parameterType="DataMap">
<selectKey order="BEFORE" keyProperty="authorMenuFnctInnb" resultType="String">
SELECT IFNULL(MAX(AUTHOR_MENU_FNCT_INNB),0) + 1
FROM GC_AUTH_FNCT_MENU
</selectKey>
INSERT
INTO GC_AUTH_FNCT_MENU
(
AUTHOR_MENU_FNCT_INNB,
<if test="authorGroupCd != null || authorGroupCd != ''">
AUTHOR_GROUP_CD,
</if>
<if test="url != null || url != ''">
URL,
</if>
<if test="fnctCd != null || fnctCd != ''">
FNCT_CD,
</if>
<if test="menuCd != null || menuCd != ''">
MENU_CD,
</if>
<if test="sopmalCd != null || sopmalCd != ''">
SOPMAL_CD,
</if>
REGUSR,
REGIST_DT
)
VALUES
(
#{authorMenuFnctInnb},
<if test="authorGroupCd != null || authorGroupCd != ''">
#{authorGroupCd},
</if>
<if test="url != null || url != ''">
#{url},
</if>
<if test="fnctCd != null || fnctCd != ''">
#{fnctCd},
</if>
<if test="menuCd != null || menuCd != ''">
#{menuCd},
</if>
<if test="sopmalCd != null || sopmalCd != ''">
#{sopmalCd},
</if>
#{regusr},
NOW()
)
</insert>
<!-- 권한그룹메뉴 변경 이력 등록 -->
<insert id="insertBOAuthFnctMenuLog" parameterType="DataMap">
<selectKey order="BEFORE" keyProperty="logSnb" resultType="String">
SELECT IFNULL(MAX(LOG_SNB),0) + 1
FROM GC_AUTH_FNCT_MENU_LOG
</selectKey>
INSERT
INTO GC_AUTH_FNCT_MENU_LOG
(
LOG_SNB,
AUTHOR_MENU_FNCT_INNB,
<if test="authorGroupCd != null || authorGroupCd != ''">
AUTHOR_GROUP_CD,
</if>
<if test="url != null || url != ''">
URL,
</if>
<if test="fnctCd != null || fnctCd != ''">
FNCT_CD,
</if>
<if test="menuCd != null || menuCd != ''">
MENU_CD,
</if>
<if test="sopmalCd != null || sopmalCd != ''">
SOPMAL_CD,
</if>
CHNG_DV_CD,
REGUSR,
REGIST_DT
)
VALUES
(
#{logSnb},
#{authorMenuFnctInnb},
<if test="authorGroupCd != null || authorGroupCd != ''">
#{authorGroupCd},
</if>
<if test="url != null || url != ''">
#{url},
</if>
<if test="fnctCd != null || fnctCd != ''">
#{fnctCd},
</if>
<if test="menuCd != null || menuCd != ''">
#{menuCd},
</if>
<if test="sopmalCd != null || sopmalCd != ''">
#{sopmalCd},
</if>
#{chngDvCd},
#{regusr},
NOW()
)
</insert>
<!-- 권한그룹메뉴 기능 삭제 -->
<delete id="deleteBOAuthFnctMenu" parameterType="Object">
DELETE
FROM
GC_AUTH_FNCT_MENU
WHERE
1=1
AND
AUTHOR_MENU_FNCT_INNB = #{authorMenuFnctInnb}
</delete>
<!-- 권한그룹메뉴 기능 조회 -->
<select id="selectBOAuthGrpFnctList" parameterType="dataMap" resultType="dataMap">
SELECT
AUTHOR_MENU_FNCT_INNB, FNCT_CD, MENU_CD, SOPMAL_CD, URL, AUTHOR_GROUP_CD
FROM
GC_AUTH_FNCT_MENU
WHERE
1=1
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(authorGroupCd)">
AND
AUTHOR_GROUP_CD = #{authorGroupCd}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(fnctCd)">
AND
FNCT_CD = #{fnctCd}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(menuCd)">
AND
MENU_CD = #{menuCd}
AND
URL IS NOT NULL
</if>
</select>
<!-- 기능 URL 중복여부 조회 -->
<select id="selectBOFnctUrlDplct"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO"
resultType = "Integer">
SELECT
COUNT(1)
FROM
GC_AUTH_FNCT_MENU GAFM
WHERE
1=1
AND
GAFM.URL = #{fnctUrl}
</select>
</mapper>

View File

@@ -0,0 +1,320 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.admin.sys.authgrp.mapper.BOMaAuthgrpMapper">
<sql id="srchWords">
WHERE 1=1
AND GA.USE_AT = 'Y'
<if test="srchAuthorNm != null and srchAuthorNm != ''">
AND UPPER(GA.AUTHOR_NM) LIKE CONCAT('%', UPPER(#{srchAuthorNm}), '%')
</if>
<if test="srchSysDvCd != null and srchSysDvCd != ''">
AND GA.SYS_DV_CD = #{srchSysDvCd}
</if>
</sql>
<!-- 페이징처리를 위한 권한그룹 목록 총 개수 -->
<select id="selectBOAuthGrpListCnt"
parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO"
resultType="Integer">
SELECT COUNT(*)
FROM (
SELECT GA.AUTHOR_ID, /*권한ID*/
GA.AUTHOR_NM, /*권한명*/
GA.AUTHOR_DC, /*권한설명*/
DATE_FORMAT(GA.REGIST_DT, '%Y-%m-%d') AS REGIST_DT, /*등록일자*/
FN_GET_COMMCODE_NAME('SYS_DV', GA.SYS_DV_CD) AS SYS_DV_NM, /*시스템자구분명*/
SUM(CASE WHEN GF.FNCT_DV_CD = '01' THEN 1 ELSE 0 END) AS R, /*조회*/
SUM(CASE WHEN GF.FNCT_DV_CD = '02' THEN 1 ELSE 0 END) AS F, /*화면이동*/
SUM(CASE WHEN GF.FNCT_DV_CD = '03' THEN 1 ELSE 0 END) AS I, /*등록*/
SUM(CASE WHEN GF.FNCT_DV_CD = '04' THEN 1 ELSE 0 END) AS U, /*수정*/
SUM(CASE WHEN GF.FNCT_DV_CD = '05' THEN 1 ELSE 0 END) AS D /*삭제*/
FROM GC_AUTH GA
LEFT OUTER JOIN GC_AUTH_FNCT GAF ON GA.AUTHOR_ID = GAF.AUTHOR_ID
LEFT OUTER JOIN GC_FNCT GF ON GAF.FNCT_ID = GF.FNCT_ID AND GF.USE_AT = 'Y'
<include refid="srchWords"/>
GROUP BY GA.AUTHOR_ID, GA.AUTHOR_NM, GA.AUTHOR_DC, GA.REGIST_DT
) A
</select>
<!-- 권한그룹 목록 조회 -->
<select id="selectBOAuthGrpListInqire"
parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO"
resultType="DataMap">
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
FROM (
SELECT GA.AUTHOR_ID, /*권한ID*/
GA.AUTHOR_NM, /*권한명*/
GA.AUTHOR_DC, /*권한설명*/
DATE_FORMAT(GA.REGIST_DT, '%Y-%m-%d') AS REGIST_DT, /*등록일자*/
FN_GET_COMMCODE_NAME('SYS_DV', GA.SYS_DV_CD) AS SYS_DV_NM, /*시스템자구분명*/
SUM(CASE WHEN GF.FNCT_DV_CD = '01' THEN 1 ELSE 0 END) AS R, /*조회*/
SUM(CASE WHEN GF.FNCT_DV_CD = '02' THEN 1 ELSE 0 END) AS F, /*화면이동*/
SUM(CASE WHEN GF.FNCT_DV_CD = '03' THEN 1 ELSE 0 END) AS I, /*등록*/
SUM(CASE WHEN GF.FNCT_DV_CD = '04' THEN 1 ELSE 0 END) AS U, /*수정*/
SUM(CASE WHEN GF.FNCT_DV_CD = '05' THEN 1 ELSE 0 END) AS D /*삭제*/
FROM GC_AUTH GA
LEFT OUTER JOIN GC_AUTH_FNCT GAF ON GA.AUTHOR_ID = GAF.AUTHOR_ID
LEFT OUTER JOIN GC_FNCT GF ON GAF.FNCT_ID = GF.FNCT_ID AND GF.USE_AT = 'Y'
<include refid="srchWords" />
GROUP BY GA.AUTHOR_ID, GA.AUTHOR_NM, GA.AUTHOR_DC, GA.REGIST_DT
order by GA.REGIST_DT desc
) BM
WHERE (@ROWNUM:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<!-- 페이징처리를 위한 게시판 목록 총 개수 -->
<select id="selectBOAuthFnctPopTotCnt"
parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO" resultType="Integer">
SELECT count(*)
FROM (
SELECT GF.FNCT_ID,
GF.SYS_DV_CD,
FN_GET_COMMCODE_NAME('SYS_DV', GF.SYS_DV_CD) AS SYS_DV_NM,
GF.FNCT_NM,
GF.FNCT_DV_CD,
FN_GET_COMMCODE_NAME('FNCT_DV', GF.FNCT_DV_CD) AS FNCT_DV_NM,
GF.FNCT_URI,
GF.REGIST_DT
FROM GC_FNCT GF
<include refid="selectBOAuthFnctPopListInqireWhere" />
) BM
</select>
<!-- 권한그룹 기능 팝업 리스트 조회 -->
<select id="selectBOAuthFnctPopListInqire"
parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO"
resultType="DataMap">
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
FROM (
SELECT GF.FNCT_ID,
GF.SYS_DV_CD,
FN_GET_COMMCODE_NAME('SYS_DV', GF.SYS_DV_CD) AS SYS_DV_NM,
GF.FNCT_NM,
GF.FNCT_DV_CD,
FN_GET_COMMCODE_NAME('FNCT_DV', GF.FNCT_DV_CD) AS FNCT_DV_NM,
GF.FNCT_URI,
GF.REGIST_DT
FROM GC_FNCT GF
<include refid="selectBOAuthFnctPopListInqireWhere" />
ORDER BY REGIST_DT DESC
) BM
WHERE (@ROWNUM:=0)=0
) PV
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<sql id="selectBOAuthFnctPopListInqireWhere">
WHERE
1=1
AND
GF.USE_AT = 'Y'
<if test="srchFnctNm != null and srchFnctNm != ''">
AND
UPPER(GF.FNCT_NM) LIKE CONCAT('%', UPPER(#{srchFnctNm}), '%')
</if>
<if test="srchFnctUri != null and srchFnctUri != ''">
AND
UPPER(GF.FNCT_URI) LIKE CONCAT('%', UPPER(#{srchFnctUri}), '%')
</if>
<if test="srchFnctDv != null and srchFnctDv != ''">
AND
GF.FNCT_DV_CD = #{srchFnctDv}
</if>
<if test="srchSysDvCd != null and srchSysDvCd != ''">
AND
GF.SYS_DV_CD = #{srchSysDvCd}
</if>
</sql>
<!-- 권한그룹 등록 -->
<insert id="insertAuthGrp"
parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO">
<selectKey order="BEFORE" keyProperty="authorId" resultType="String">
SELECT MAX(AUTHOR_ID)+1 FROM GC_AUTH
</selectKey>
INSERT INTO GC_AUTH (
AUTHOR_ID /*권한그룹ID*/
,SYS_DV_CD /*시스템자구분*/
,AUTHOR_NM /*권한그룹명 - 화면*/
,AUTHOR_DC /*권한그룹 설명 - 화면*/
,USE_AT
,REGUSR
,REGIST_DT
,UPDUSR
,UPDT_DT
)VALUES (
#{authorId}
,#{sysDvCd}
,#{authorNm}
,#{authorDc}
,'Y'
,#{regusr}
,SYSDATE()
,NULL
,NULL
);
</insert>
<!-- 권한그룹 목록 엑셀용 -->
<select id="selectBOAuthGrpExcelList"
parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO"
resultType="DataMap">
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
FROM (
SELECT GA.AUTHOR_ID, /*권한ID*/
GA.AUTHOR_NM, /*권한명*/
GA.AUTHOR_DC, /*권한설명*/
DATE_FORMAT(GA.REGIST_DT, '%Y-%m-%d') AS REGIST_DT, /*등록일자*/
FN_GET_COMMCODE_NAME('SYS_DV', GA.SYS_DV_CD) AS SYS_DV_NM, /*시스템자구분명*/
SUM(CASE WHEN GF.FNCT_DV_CD = '01' THEN 1 ELSE 0 END) AS R, /*조회*/
SUM(CASE WHEN GF.FNCT_DV_CD = '02' THEN 1 ELSE 0 END) AS F, /*화면이동*/
SUM(CASE WHEN GF.FNCT_DV_CD = '03' THEN 1 ELSE 0 END) AS I, /*등록*/
SUM(CASE WHEN GF.FNCT_DV_CD = '04' THEN 1 ELSE 0 END) AS U, /*수정*/
SUM(CASE WHEN GF.FNCT_DV_CD = '05' THEN 1 ELSE 0 END) AS D /*삭제*/
FROM GC_AUTH GA
LEFT OUTER JOIN GC_AUTH_FNCT GAF ON GA.AUTHOR_ID = GAF.AUTHOR_ID
LEFT OUTER JOIN GC_FNCT GF ON GAF.FNCT_ID = GF.FNCT_ID AND GF.USE_AT = 'Y'
<include refid="srchWords" />
GROUP BY GA.AUTHOR_ID, GA.AUTHOR_NM, GA.AUTHOR_DC, GA.REGIST_DT
order by GA.REGIST_DT desc
) BM
WHERE (@ROWNUM:=0)=0
) PV
WHERE 1=1
</select>
<!-- 권한그룹 상세 조회 -->
<select id="selectBOAuthGrpUpdtForm"
parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO"
resultType="DataMap">
SELECT GA.AUTHOR_ID, /*권한ID*/
GA.AUTHOR_NM, /*권한명*/
GA.AUTHOR_DC, /*권한설명*/
DATE_FORMAT(GA.REGIST_DT, '%Y-%m-%d') AS REGIST_DT, /*등록일자*/
GA.SYS_DV_CD, /*시스템구분 코드*/
GROUP_CONCAT(GAF.FNCT_ID SEPARATOR '$') AS FNCT_IDS_ARR /*등록된 권한기능 배열*/
FROM GC_AUTH GA
LEFT OUTER JOIN GC_AUTH_FNCT GAF ON GA.AUTHOR_ID = GAF.AUTHOR_ID
LEFT OUTER JOIN GC_FNCT GF ON GAF.FNCT_ID = GF.FNCT_ID AND GF.USE_AT = 'Y'
WHERE 1=1
AND GA.USE_AT = 'Y'
AND GA.AUTHOR_ID = #{authorId}
GROUP BY GA.AUTHOR_ID, GA.AUTHOR_NM, GA.AUTHOR_DC, GA.REGIST_DT
ORDER BY GA.REGIST_DT DESC
</select>
<!-- 권한그룹 기능 상세 조회 -->
<select id="selectBOAuthGrpFnctUpdtForm" resultType="DataMap">
SELECT FNCT_ID /*기능ID*/
, SYS_DV_CD /*시스템자구분코드*/
, FNCT_DV_CD /*기능구분코드*/
, FN_GET_COMMCODE_NAME('FNCT_DV', FNCT_DV_CD) AS FNCT_DV_NM
, FNCT_URI /*url*/
, FNCT_NM /*기능명*/
, FNCT_DC /*기능설명*/
FROM GC_FNCT
WHERE FNCT_ID IN(
SELECT FNCT_ID
FROM GC_AUTH_FNCT
WHERE AUTHOR_ID = #{authorId}
AND USE_AT = 'Y'
)
AND USE_AT = 'Y'
</select>
<!-- 권한그룹 수정 -->
<update id="updateBOAuthGrpUpdt" parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO">
UPDATE GC_AUTH
SET SYS_DV_CD = #{sysDvCd}
,AUTHOR_NM = #{authorNm}
,AUTHOR_DC = #{authorDc}
,UPDUSR = #{updusr}
,UPDT_DT = NOW()
WHERE AUTHOR_ID = #{authorId};
</update>
<!--삭제log쿼리-->
<insert id="insertDelAuthFnctLog" parameterType="com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO">
INSERT INTO GC_AUTH_FNCT_LOG (LOG_SNB, AUTHOR_FNCT_INNB, AUTHOR_ID, FNCT_ID, LOG_CHNG_DV_CD, REGUSR, REGIST_DT)
SELECT (SELECT COALESCE(MAX(LOG_SNB),0) FROM GC_AUTH_FNCT_LOG) + @ROWNUM := @ROWNUM + 1,
GAF.AUTHOR_FNCT_INNB,
GAF.AUTHOR_ID,
GAF.FNCT_ID,
'D' AS LOG_CHNG_DV_CD,
#{updusr} AS REGUSR,
NOW() AS REGIST_DT
FROM GC_AUTH_FNCT GAF
WHERE GAF.AUTHOR_ID = #{authorId}
<if test="arrFnctId != null and arrFnctId.size() > 0">
AND FNCT_ID NOT IN
<foreach collection="arrFnctId" item="fnctId" index="idx" open="(" separator=", " close=")">
#{fnctId}
</foreach>
</if>
AND (@ROWNUM := 0) = 0
</insert>
<!--GC_AUTH_FNCT 삭제쿼리-->
<delete id="deleteAuthFnct">
DELETE
FROM GC_AUTH_FNCT GAF
WHERE GAF.AUTHOR_ID = #{authorId}
<if test="arrFnctId != null and arrFnctId.size() > 0">
AND FNCT_ID NOT IN
<foreach collection="arrFnctId" item="fnctId" index="idx" open="(" separator=", " close=")">
#{fnctId}
</foreach>
</if>
</delete>
<!--GC_AUTH_FNCT insert-->
<insert id="insertAuthFnct" parameterType="DataMap">
<selectKey order="BEFORE" keyProperty="authorFnctInnb" resultType="String">
<![CDATA[
SELECT IFNULL(MAX(AUTHOR_FNCT_INNB), 0) + 1
FROM GC_AUTH_FNCT
]]>
</selectKey>
INSERT INTO GC_AUTH_FNCT (AUTHOR_FNCT_INNB, AUTHOR_ID, FNCT_ID, REGUSR, REGIST_DT)
SELECT #{authorFnctInnb}, #{authorId}, #{fnctId}, #{updusr}, NOW()
WHERE NOT EXISTS (SELECT 1 FROM GC_AUTH_FNCT WHERE AUTHOR_ID = #{authorId} AND FNCT_ID = #{fnctId})
</insert>
<!--log insert-->
<insert id="insertInsAuthFnctLog" parameterType="java.util.List">
INSERT INTO GC_AUTH_FNCT_LOG (LOG_SNB, AUTHOR_FNCT_INNB, AUTHOR_ID, FNCT_ID, LOG_CHNG_DV_CD, REGUSR, REGIST_DT)
SELECT (SELECT COALESCE(MAX(LOG_SNB),0) FROM GC_AUTH_FNCT_LOG) + @ROWNUM := @ROWNUM + 1,
AUTHOR_FNCT_INNB,
AUTHOR_ID,
FNCT_ID,
'I' AS LOG_CHNG_DV_CD,
REGUSR,
REGIST_DT
FROM GC_AUTH_FNCT GMA
WHERE AUTHOR_FNCT_INNB IN
<foreach collection="arrAuthorFnctInnb" item="authorFnctInnb" index="idx" open="(" separator=", " close=")">
#{authorFnctInnb}
</foreach>
AND (@ROWNUM := 0) = 0
</insert>
<!-- 권한그룹 삭제 -->
<update id="updateBOAuthGrpDel"
parameterType = "com.wb.domainserver.domain.admin.sys.authgrp.vo.BOMaAuthgrpVO">
UPDATE GC_AUTH
SET USE_AT = 'N'
,UPDUSR = #{updusr}
,UPDT_DT = SYSDATE()
WHERE 1=1
AND AUTHOR_ID = #{authorId}
</update>
</mapper>

View File

@@ -0,0 +1,509 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.admin.sys.author.mapper.BOMaAuthorMapper">
<!-- 페이징처리를 위한 권한그룹 목록 총 개수 -->
<select id="selectBOAuthorListCnt"
parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO"
resultType="Integer">
SELECT COUNT(*)
FROM (
SELECT
M.MNGR_INNB
FROM GC_MANAGER M
LEFT JOIN GC_MANAGER_AUTH MA
ON M.MNGR_INNB = MA.MNGR_INNB
LEFT JOIN GC_MANAGER MM
ON MM.MNGR_INNB = coalesce(M.UPDUSR, M.UPDUSR)
LEFT JOIN GC_AUTH GAG
ON MA.AUTHOR_ID = GAG.AUTHOR_ID
<include refid="selectBOAuthorListWhere" />
group by M.MNGR_INNB,M.MNGR_NM,M.MNGR_ID,M.PARTNM,M.MNGR_DV, MM.MNGR_NM
) BM
</select>
<!-- 권한 목록 조회 -->
<select id="selectBOAuthorListInqire"
parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO"
resultType="DataMap">
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
FROM (
SELECT
M.MNGR_INNB,
M.MNGR_NM,
M.MNGR_ID,
M.PARTNM,
M.MNGR_DV,
FN_GET_COMMCODE_NAME('MNGR_DV', M.MNGR_DV) AS MNGR_DV_NM,
MM.MNGR_NM AS UPD_MNGR_NM,
ROW_NUMBER() OVER (PARTITION BY M.MNGR_INNB) as AUTH_RN,
CASE
WHEN COUNT(MA.AUTHOR_ID) = 1 THEN MAX(GAG.AUTHOR_NM)
WHEN COUNT(MA.AUTHOR_ID) > 1 THEN CONCAT(MAX(GAG.AUTHOR_NM) , ' 외 ', COUNT(MA.AUTHOR_ID) - 1 , '개 ')
ELSE '권한 없음' END AS AUTH_GRP_MAIN_TITLE,
DATE_FORMAT(MAX(coalesce(M.UPDT_DT, M.REGIST_DT)), '%Y-%m-%d %H:%i:%S') AS MA_REGIST_DT
FROM GC_MANAGER M
LEFT JOIN GC_MANAGER_AUTH MA
ON M.MNGR_INNB = MA.MNGR_INNB
LEFT JOIN GC_MANAGER MM
ON MM.MNGR_INNB = coalesce(M.UPDUSR, M.UPDUSR)
LEFT JOIN GC_AUTH GAG
ON MA.AUTHOR_ID = GAG.AUTHOR_ID
<include refid="selectBOAuthorListWhere" />
group by M.MNGR_INNB,M.MNGR_NM,M.MNGR_ID,M.PARTNM,M.MNGR_DV, MM.MNGR_NM
ORDER BY MA_REGIST_DT DESC
) BM
WHERE (@ROWNUM:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<sql id="selectBOAuthorListWhere">
WHERE M.MNGR_STTUS_CD != '03'
<!-- 검색타입별 검색 -->
<if test="srchStr != null and srchStr != ''">
<choose>
<when test="srchType eq 'MNGR_NM'.toString()">
AND UPPER(M.MNGR_NM) LIKE CONCAT('%', UPPER(#{srchStr}), '%')
</when>
<when test="srchType eq 'MNGR_ID'.toString()">
AND UPPER(M.MNGR_ID) LIKE CONCAT('%', UPPER(#{srchStr}), '%')
</when>
<when test="srchType eq 'EMAIL'.toString()">
AND UPPER(M.EMAIL) LIKE CONCAT('%', UPPER(#{srchStr}), '%')
</when>
<when test="srchType eq 'MBTLNB'.toString()">
AND UPPER(M.MBTLNB) LIKE CONCAT('%', UPPER(#{srchStr}), '%')
</when>
<when test="srchType eq 'PARTNM'.toString()">
AND UPPER(M.PARTNM) LIKE CONCAT('%', UPPER(#{srchStr}), '%')
</when>
<when test="srchType eq 'ALL'.toString()">
AND(
UPPER(M.MNGR_NM) LIKE CONCAT('%', UPPER(#{srchStr}), '%') OR
UPPER(M.MNGR_ID) LIKE CONCAT('%', UPPER(#{srchStr}), '%') OR
UPPER(M.EMAIL) LIKE CONCAT('%', UPPER(#{srchStr}), '%') OR
UPPER(M.MBTLNB) LIKE CONCAT('%', UPPER(#{srchStr}), '%') OR
UPPER(M.PARTNM) LIKE CONCAT('%', UPPER(#{srchStr}), '%')
)
</when>
</choose>
</if>
<!-- 사용자 구분 -->
<if test="srchMngrDv != null and srchMngrDv != ''">
AND M.MNGR_DV = #{srchMngrDv}
</if>
</sql>
<!-- 권한 상세 조회 -->
<select id="selectBOAuthorUpdtForm"
parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO" resultType="DataMap">
SELECT
MNGR_INNB,
MNGR_NM,
MNGR_ID,
PARTNM,
MNGR_DV,
FN_GET_COMMCODE_NAME('MNGR_DV', MNGR_DV) AS MNGR_DV_NM
FROM
GC_MANAGER
WHERE
1=1
AND
MNGR_INNB = #{mngrInnb}
</select>
<!-- 권한 상세 기능 조회 -->
<select id="selectBOAuthorUpdtFormFnctList"
parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO" resultType="DataMap">
SELECT
BB.AUTHOR_ID
,BB.AUTHOR_NM
,BB.AUTHOR_DC
,GROUP_CONCAT(CONCAT(BB.SOPMAL_CD, ',',BB.SOPMAL_NM,',',BB.CHK ) ORDER BY AUTHOR_ID, SOPMAL_NM SEPARATOR '|') AS SOPMAL_INFO
FROM
(
SELECT
GA.AUTHOR_ID,
GA.AUTHOR_NM,
GA.AUTHOR_DC,
GS.SOPMAL_CD,
GS.SOPMAL_NM,
CASE
WHEN GMA.MNGR_AUTHOR_INNB IS NULL THEN FALSE
ELSE TRUE
END AS CHK
FROM
GC_AUTH GA
INNER JOIN GC_SHOP GS
LEFT OUTER JOIN GC_MANAGER_AUTH GMA
ON GMA.SOPMAL_CD = GS.SOPMAL_CD
AND GMA.AUTHOR_ID = GA.AUTHOR_ID
AND GMA.MNGR_INNB = #{mngrInnb}
WHERE
GA.USE_AT = 'Y'
AND GA.SYS_DV_CD NOT IN ('01', '02')
) BB
GROUP BY
1, 2, 3
UNION ALL
SELECT
AA.AUTHOR_ID
,AA.AUTHOR_NM
,AA.AUTHOR_DC
,GROUP_CONCAT(CONCAT(AA.SOPMAL_CD, ',',AA.SOPMAL_NM,',',AA.CHK ) ORDER BY AUTHOR_ID, SOPMAL_NM SEPARATOR '|') AS SOPMAL_INFO
FROM (
SELECT
GA.AUTHOR_ID,
GA.AUTHOR_NM,
GA.AUTHOR_DC,
GS.SOPMAL_CD,
GS.SOPMAL_NM,
CASE
WHEN GMA.MNGR_AUTHOR_INNB IS NULL THEN FALSE
ELSE TRUE
END AS CHK
FROM
GC_AUTH GA
INNER JOIN (
SELECT
'SYS' AS SOPMAL_CD,
'통합관리자시스템' AS SOPMAL_NM) GS
LEFT OUTER JOIN GC_MANAGER_AUTH GMA
ON
GMA.AUTHOR_ID = GA.AUTHOR_ID
AND GMA.SOPMAL_CD = GS.SOPMAL_CD
AND GMA.MNGR_INNB = #{mngrInnb}
WHERE
GA.USE_AT = 'Y'
AND GA.SYS_DV_CD = #{mngrDv}
AND '02' = #{mngrDv}
ORDER BY
AUTHOR_ID,
SOPMAL_NM
) AA
GROUP BY
1, 2, 3
</select>
<!-- 권한별 기능 조회 -->
<select id="selectBOMenuFnctListInqire"
parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO" resultType="DataMap">
SELECT GF.FNCT_ID,
GF.FNCT_NM,
GF.FNCT_DV_CD,
FN_GET_COMMCODE_NAME('FNCT_DV', GF.FNCT_DV_CD) AS FNCT_DV_NM,
GF.FNCT_URI
FROM GC_FNCT GF
INNER JOIN GC_AUTH_FNCT GAF ON GF.FNCT_ID = GAF.FNCT_ID
WHERE GF.USE_AT = 'Y'
AND GAF.AUTHOR_ID = #{authorId}
ORDER BY GF.FNCT_NM ASC
</select>
<!-- 관리 쇼핑몰 등록 -->
<insert id="insertBOMngrMall" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO">
<selectKey order="BEFORE" keyProperty="logSnb" resultType="String">
<![CDATA[
SELECT IFNULL(MAX(LOG_SNB), 0) + 1
FROM GC_MANAGER_MALL
]]>
</selectKey>
INSERT
INTO
GC_MANAGER_MALL (
LOG_SNB,
MNGR_INNB,
SOPMAL_CD,
USE_AT,
REGUSR,
REGIST_DT,
UPDUSR,
UPDT_DT
)
VALUES (
#{logSnb},
#{mngrInnb},
#{sopmalCd},
'Y',
#{regusr},
SYSDATE(),
#{regusr},
SYSDATE()
)
</insert>
<!-- 관리 쇼핑몰 N 처리 -->
<update id="updateBOMngrMallDel" parameterType="DataMap">
UPDATE
GC_MANAGER_MALL
SET
<if test="mngrInnb != null and mngrInnb != ''">
MNGR_INNB = #{mngrInnb},
</if>
<if test="sopmalCd != null and sopmalCd != ''">
SOPMAL_CD = #{sopmalCd},
</if>
USE_AT = #{useAt},
UPDUSR = #{updusr},
UPDT_DT = SYSDATE()
WHERE
1=1
AND
MNGR_INNB = #{mngrInnb}
AND
SOPMAL_CD = #{sopmalCd}
</update>
<!-- 관리 쇼핑몰 수정 -->
<update id="updateBOMngrMall" parameterType="DataMap">
UPDATE
GC_MANAGER_MALL
SET
MNGR_INNB = #{mngrInnb},
SOPMAL_CD = #{sopmalCd},
USE_AT = #{useAt},
UPDUSR = #{updusr},
UPDT_DT = SYSDATE()
WHERE
1=1
AND
MNGR_INNB = #{mngrInnb}
AND
SOPMAL_CD = #{sopmalCd}
</update>
<!-- 관리자별 권한 등록-->
<insert id="insertBOMngrAuthor" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO">
<selectKey order="BEFORE" keyProperty="mngrAuthorInnb" resultType="String">
<![CDATA[
SELECT IFNULL(MAX(MNGR_AUTHOR_INNB), 0) + 1
FROM GC_MANAGER_AUTH
]]>
</selectKey>
INSERT
INTO
GC_MANAGER_AUTH (
MNGR_AUTHOR_INNB,
MNGR_INNB,
AUTHOR_GROUP_CD,
REGUSR,
REGIST_DT
)
VALUES (
#{mngrAuthorInnb},
#{mngrInnb},
#{authorGroupCd},
#{regusr},
SYSDATE()
)
</insert>
<!-- 관리자별 변경 이력 등록 -->
<insert id="insertBOMngrAuthLog" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO">
<selectKey order="BEFORE" keyProperty="logSnb" resultType="String">
<![CDATA[
SELECT IFNULL(MAX(LOG_SNB), 0) + 1
FROM GC_MANAGER_AUTH_LOG
]]>
</selectKey>
INSERT
INTO
GC_MANAGER_AUTH_LOG (
LOG_SNB,
MNGR_AUTHOR_INNB,
MNGR_INNB,
AUTHOR_GROUP_CD,
CHNG_DV_CD,
REGUSR,
REGIST_DT
)
VALUES (
#{logSnb},
#{mngrAuthorInnb},
#{mngrInnb},
#{authorGroupCd},
#{chngDvCd},
#{regusr},
SYSDATE()
)
</insert>
<!-- 쇼핑몰 목록 조회 -->
<select id="selectBOShopListInqire" resultType="DataMap">
SELECT
SOPMAL_CD,
SOPMAL_NM
FROM
GC_SHOP
WHERE
1=1
AND
OPER_AT = 'Y'
</select>
<!-- 권한 삭제 로그 INSERT -->
<insert id="insertDelMngrAuthorLog" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO">
INSERT INTO GC_MANAGER_AUTH_LOG (LOG_SNB, MNGR_AUTHOR_INNB, SOPMAL_CD, MNGR_INNB, AUTHOR_ID, LOG_CHNG_DV_CD, REGUSR, REGIST_DT)
SELECT (SELECT COALESCE(MAX(LOG_SNB),0) FROM GC_MANAGER_AUTH_LOG) + @ROWNUM := @ROWNUM + 1,
MNGR_AUTHOR_INNB,
SOPMAL_CD,
MNGR_INNB,
AUTHOR_ID,
'D',
#{updusr},
now()
FROM GC_MANAGER_AUTH GMA
WHERE MNGR_INNB = #{mngrInnb}
<if test="arrAuthSpomal != null and arrAuthSpomal.length > 0">
AND CONCAT(AUTHOR_ID,'_',SOPMAL_CD) NOT IN
<foreach collection="arrAuthSpomal" item="authSpomal" index="idx" open="(" separator=", " close=")">
#{authSpomal}
</foreach>
</if>
AND (@ROWNUM := 0) = 0
</insert>
<!-- 권한 등록 로그 INSERT -->
<insert id="insertInsMngrAuthorLog" parameterType="java.util.List">
INSERT INTO GC_MANAGER_AUTH_LOG (LOG_SNB, MNGR_AUTHOR_INNB, SOPMAL_CD, MNGR_INNB, AUTHOR_ID, LOG_CHNG_DV_CD, REGUSR, REGIST_DT)
SELECT (SELECT COALESCE(MAX(LOG_SNB),0) FROM GC_MANAGER_AUTH_LOG) + @ROWNUM := @ROWNUM + 1,
MNGR_AUTHOR_INNB,
SOPMAL_CD,
MNGR_INNB,
AUTHOR_ID,
'I',
REGUSR,
REGIST_DT
FROM GC_MANAGER_AUTH GMA
WHERE MNGR_AUTHOR_INNB IN
<foreach collection="arrMngrAuthorInnb" item="mngrAuthorInnb" index="idx" open="(" separator=", " close=")">
#{mngrAuthorInnb}
</foreach>
AND (@ROWNUM := 0) = 0
</insert>
<!-- 권한 삭제 -->
<delete id="deteteBOAuthGrp" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO">
DELETE
FROM GC_MANAGER_AUTH
WHERE MNGR_INNB = #{mngrInnb}
<if test="arrAuthSpomal != null and arrAuthSpomal.length > 0">
AND CONCAT(AUTHOR_ID,'_',SOPMAL_CD) NOT IN
<foreach collection="arrAuthSpomal" item="authSpomal" index="idx" open="(" separator=", " close=")">
#{authSpomal}
</foreach>
</if>
</delete>
<!-- 권한 등록 -->
<insert id="insertMngrauth" parameterType="DataMap">
<selectKey order="BEFORE" keyProperty="mngrAuthorInnb" resultType="String">
<![CDATA[
SELECT IFNULL(MAX(MNGR_AUTHOR_INNB), 0) + 1
FROM GC_MANAGER_AUTH
]]>
</selectKey>
INSERT INTO GC_MANAGER_AUTH (MNGR_AUTHOR_INNB, SOPMAL_CD, MNGR_INNB, AUTHOR_ID, REGUSR, REGIST_DT)
SELECT #{mngrAuthorInnb},
A.SOPMAL_CD,
#{mngrInnb} AS MNGR_INNB,
A.AUTHOR_ID,
#{updusr} AS REGUSR,
NOW() AS REGIST_DT
FROM (SELECT GS.SOPMAL_CD, GA.AUTHOR_ID, GMA.AUTHOR_ID CHK
FROM (SELECT G.SOPMAL_CD
FROM GC_SHOP G
UNION ALL
SELECT 'SYS' AS SOPMAL_CD) GS
INNER JOIN GC_AUTH GA
LEFT OUTER JOIN GC_MANAGER_AUTH GMA ON GMA.MNGR_INNB = #{mngrInnb} AND GMA.AUTHOR_ID = GA.AUTHOR_ID AND GMA.SOPMAL_CD = GS.SOPMAL_CD
) A
WHERE CHK IS NULL
AND CONCAT(AUTHOR_ID,'_',SOPMAL_CD) = #{authSopmal}
</insert>
<!-- 사용자별 권한조회 엑셀다운로드-->
<select id="selectBOAuthorExcelList"
parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO"
resultType="DataMap">
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
FROM (
SELECT
M.MNGR_INNB,
M.MNGR_NM,
M.MNGR_ID,
M.PARTNM,
M.MNGR_DV,
FN_GET_COMMCODE_NAME('MNGR_DV', M.MNGR_DV) AS MNGR_DV_NM,
MM.MNGR_NM AS UPD_MNGR_NM,
ROW_NUMBER() OVER (PARTITION BY M.MNGR_INNB) as AUTH_RN,
CASE
WHEN SUM(CASE WHEN MA.AUTHOR_ID IS NOT NULL AND GAG.USE_AT = 'Y' THEN 1 ELSE 0 END) = 0 THEN '권한 없음'
WHEN SUM(CASE WHEN MA.AUTHOR_ID IS NOT NULL AND GAG.USE_AT = 'Y' THEN 1 ELSE 0 END) = 1 THEN MAX(CASE WHEN MA.AUTHOR_ID IS NOT NULL AND GAG.USE_AT = 'Y' THEN GAG.AUTHOR_NM ELSE NULL END)
WHEN SUM(CASE WHEN MA.AUTHOR_ID IS NOT NULL AND GAG.USE_AT = 'Y' THEN 1 ELSE 0 END) > 1 THEN CONCAT(MAX(CASE WHEN MA.AUTHOR_ID IS NOT NULL AND GAG.USE_AT = 'Y' THEN GAG.AUTHOR_NM ELSE NULL END), ' 외 ', (SUM(CASE WHEN MA.AUTHOR_ID IS NOT NULL AND GAG.USE_AT = 'Y' THEN 1 ELSE 0 END) -1), '개')
END AS AUTH_GRP_MAIN_TITLE,
DATE_FORMAT(MAX(coalesce(M.UPDT_DT, M.REGIST_DT)), '%Y-%m-%d %H:%i:%S') AS MA_REGIST_DT
FROM GC_MANAGER M
LEFT JOIN GC_MANAGER_AUTH MA
ON M.MNGR_INNB = MA.MNGR_INNB
LEFT JOIN GC_MANAGER MM
ON MM.MNGR_INNB = coalesce(M.UPDUSR, M.UPDUSR)
LEFT JOIN GC_AUTH GAG
ON MA.AUTHOR_ID = GAG.AUTHOR_ID
<include refid="selectBOAuthorListWhere" />
group by M.MNGR_INNB,M.MNGR_NM,M.MNGR_ID,M.PARTNM,M.MNGR_DV, MM.MNGR_NM
ORDER BY MA_REGIST_DT DESC
) BM
WHERE (@ROWNUM:=0)=0
AND
AUTH_RN = 1
) PV
</select>
<select id="selectAuthInfo" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO" resultType="DataMap">
SELECT GA.AUTHOR_ID,
FN_GET_COMMCODE_NAME('SYS_DV', GA.SYS_DV_CD) AS SYS_DV_NM,
GA.SYS_DV_CD,
GA.AUTHOR_NM,
GA.AUTHOR_DC
FROM GC_AUTH GA
WHERE GA.AUTHOR_ID = #{authorId}
</select>
<!--관리자 > 권한 있는 사이트 조회-->
<select id="selectBOAuthorSiteList" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO" resultType="DataMap">
SELECT DISTINCT GMA.SOPMAL_CD, GS.SOPMAL_NM, GD.TOP_FIL_COURS ,GD.TOP_SYS_FIL_NM
FROM GC_MANAGER GM
INNER JOIN GC_MANAGER_AUTH GMA
ON GM.MNGR_INNB = GMA.MNGR_INNB
INNER JOIN GC_SHOP GS
ON GMA.SOPMAL_CD = GS.SOPMAL_CD
LEFT JOIN GC_DESIGN GD
ON GS.SOPMAL_CD = GD.SOPMAL_CD
AND GD.SETUP_DV_CD = '01'
AND GD.USE_AT = 'Y'
WHERE GM.MNGR_INNB = #{mngrInnb}
AND GM.MNGR_STTUS_CD = '01'
</select>
<!--관리자 > 권한 있는 사이트 조회 1개만 조회-->
<select id="selectBOAuthorSite" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO" resultType="DataMap">
SELECT DISTINCT GMA.SOPMAL_CD, SOPMAL_NM
FROM GC_MANAGER GM
INNER JOIN GC_MANAGER_AUTH GMA
ON GM.MNGR_INNB = GMA.MNGR_INNB
INNER JOIN GC_SHOP GS
ON GMA.SOPMAL_CD = GS.SOPMAL_CD
WHERE GM.MNGR_INNB = #{mngrInnb}
AND GM.MNGR_STTUS_CD = '01'
LIMIT 1
</select>
</mapper>

View File

@@ -0,0 +1,275 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.admin.sys.comncd.mapper.BOMaComncdMapper">
<!-- 검색어 -->
<sql id="srchStr">
<![CDATA[
LIKE CONCAT('%', #{srchStr}, '%')
]]>
</sql>
<sql id="selectBOCommcdListInqireWhere">
<![CDATA[
AND 1=1
]]>
<!-- 검색조건 별 검색 -->
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">
<choose>
<when test="srchType=='GROUP_CD_NM'">
AND GRP.GROUP_CD_NM <include refid ="srchStr"/>
</when>
<when test="srchType=='GROUP_CD'">
AND GRP.GROUP_CD <include refid ="srchStr"/>
</when>
<when test="srchType=='CD_NM'">
AND GCD.CD_NM <include refid ="srchStr"/>
</when>
<when test="srchType=='CD'">
AND GCD.CD <include refid ="srchStr"/>
</when>
</choose>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchUseAt)">
AND GCD.USE_AT = #{srchUseAt}
</if>
</sql>
<!-- 상세코드 목록 조회 -->
<select id="selectBOCommcdDetailList"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO"
resultType="dataMap">
SELECT GROUP_CD
, CD
, CD_NM
, CD_DC
, CD_DV
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
FROM GC_CODE
WHERE 1=1
AND USE_AT = 'Y'
AND GROUP_CD = #{groupCd}
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(cdDv)">
AND CD_DV = #{cdDv}
</if>
ORDER BY SORT_ORDR ASC
</select>
<!-- 상세코드 조회 -->
<select id="selectBOCommcdDetail"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdDetailVO"
resultType="dataMap">
<![CDATA[
SELECT GROUP_CD
, CD
, CD_NM
, CD_DC
, CD_DV
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
FROM GC_CODE
WHERE 1=1
AND USE_AT = 'Y'
AND GROUP_CD = #{groupCd}
AND CD = #{cd}
]]>
</select>
<!-- 공통코드 목록 조회 -->
<select id="selectBOCmmnCodeList"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO"
resultType="dataMap">
<![CDATA[
/*SET @ROWNUM = 0;*/
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
,TB.*
FROM (
SELECT GRP.GROUP_CD_NM
, GRP.GROUP_CD
, GRP.GROUP_CD_DC
, GCD.CD
, GCD.CD_NM
, GCD.CD_DC
, GCD.USE_AT
, GCD.REGUSR
, GCD.REGIST_DT
, DATE_FORMAT(GCD.REGIST_DT, '%Y-%m-%d') AS REGIST_DE
, GCD.UPDUSR
, GCD.UPDT_DT
, DATE_FORMAT(GCD.UPDT_DT, '%Y-%m-%d') AS UPDT_DE
FROM GC_CODE_GROUP GRP
INNER JOIN GC_CODE GCD
ON GCD.GROUP_CD = GRP.GROUP_CD
WHERE 1=1
AND GRP.GROUP_CD = GCD.GROUP_CD
]]>
<include refid="selectBOCommcdListInqireWhere"/>
<![CDATA[
) TB
WHERE (@ROWNUM:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
]]>
</select>
<!-- 공통코드 목록 건수 -->
<select id="selectBOCmmnCodeTotCnt"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO"
resultType="java.lang.Integer">
<![CDATA[
SELECT COUNT(1)
FROM GC_CODE_GROUP GRP
INNER JOIN GC_CODE GCD
ON GCD.GROUP_CD = GRP.GROUP_CD
WHERE 1=1
AND GRP.GROUP_CD = GCD.GROUP_CD
]]>
<include refid="selectBOCommcdListInqireWhere"/>
</select>
<!-- 코드그룹 저장 -->
<update id="saveBOCmmnCodeGroup"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO">
INSERT INTO GC_CODE_GROUP (
GROUP_CD
, GROUP_CD_NM
, GROUP_CD_DC
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(groupUseAt)">
, USE_AT
</if>
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
) VALUES (
#{groupCd}
, #{groupCdNm}
, #{groupCdDc}
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(groupUseAt)">
, #{groupUseAt}
</if>
, #{regusr}
, SYSDATE()
, #{updusr}
, SYSDATE()
) ON DUPLICATE KEY UPDATE
GROUP_CD_NM = VALUES(GROUP_CD_NM)
, GROUP_CD_DC = VALUES(GROUP_CD_DC)
, USE_AT = VALUES(USE_AT)
, UPDUSR = VALUES(UPDUSR)
, UPDT_DT = VALUES(UPDT_DT)
</update>
<!-- 코드 저장 -->
<update id="saveBOCmmnCode"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO">
INSERT INTO GC_CODE (
GROUP_CD
, CD
, CD_NM
, CD_DC
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(useAt)">
, USE_AT
</if>
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
, SORT_ORDR
) VALUES (
#{groupCd}
, #{cd}
, #{cdNm}
, #{cdDc}
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(useAt)">
, #{useAt}
</if>
, #{regusr}
, SYSDATE()
, #{updusr}
, SYSDATE()
, #{sortOrdr}
) ON DUPLICATE KEY UPDATE
CD_NM = VALUES(CD_NM)
, CD_DC = VALUES(CD_DC)
, USE_AT = VALUES(USE_AT)
, UPDUSR = VALUES(UPDUSR)
, UPDT_DT = VALUES(UPDT_DT)
, SORT_ORDR = VALUES(SORT_ORDR)
</update>
<!-- 코드그룹 ID 중복 조회-->
<select id="selectBOCmmnCodeGrpIdDplctInqire" resultType="Integer">
SELECT COUNT(*)
FROM GC_CODE_GROUP
WHERE 1=1
AND GROUP_CD = #{groupCd}
</select>
<!-- 상세코드 목록 조회 -->
<select id="selectBOCmmnCodeGroupDetail"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO"
resultType="dataMap">
<![CDATA[
SELECT GROUP_CD
, GROUP_CD_NM
, GROUP_CD_DC
, USE_AT
FROM GC_CODE_GROUP
WHERE GROUP_CD = #{groupCd}
]]>
</select>
<!--모든 코드 조회-->
<select id="selectBOCommcdDetailAllList"
parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO"
resultType="dataMap">
<![CDATA[
SELECT GROUP_CD
, CD
, CD_NM
, CD_DC
, USE_AT
FROM GC_CODE
WHERE 1=1
AND GROUP_CD = #{groupCd}
ORDER BY SORT_ORDR ASC
]]>
</select>
<!-- 코드그룹 삭제 -->
<update id="deleteBOCmmnCodeGroup" parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO">
<![CDATA[
UPDATE GC_CODE_GROUP
SET USE_AT = 'N'
,UPDUSR = #{updusr}
,UPDT_DT = SYSDATE()
WHERE 1=1
AND GROUP_CD = #{groupCd}
]]>
</update>
<!-- 코드 삭제 -->
<update id="deleteBOCmmnCode" parameterType="com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO">
<![CDATA[
UPDATE GC_CODE
SET USE_AT = 'N'
,UPDUSR = #{updusr}
,UPDT_DT = SYSDATE()
WHERE 1=1
AND GROUP_CD = #{groupCd}
]]>
</update>
</mapper>

View File

@@ -0,0 +1,426 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.admin.sys.ctgry.mapper.BOMaCtgryMapper">
<!-- 카테고리 목록 조회-->
<select id="selectBOCtgryManage"
parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO"
resultType="dataMap">
SELECT
CTGRY_ID
, UPPER_CTGRY_ID
, SOPMAL_CD
, CTGRY_NM
, CTGRY_DEPTH AS DEPTH
, SORT_ORDR
, CTGRY_DV_CD
, GOODS_CTGRY_EXPSR_AT
, MENU_EXPSR_AT
, GNB_EXPSR_AT
, PGE_EXPSR_AT
, EXPSR_CD
, DATE_FORMAT(EXPSR_BGN_DT, '%Y-%m-%d') AS EXPSR_BGN_DT
, DATE_FORMAT(EXPSR_END_DT, '%Y-%m-%d') AS EXPSR_END_DT
, URL_DV_CD
, URL
, ORGINL_FIL_NM
, SYS_FIL_NM
, FIL_MG
, FIL_TY
, FIL_COURS
, USE_AT
, CONCAT(SOPMAL_CD,'_',CTGRY_ID) AS ID
, CTGRY_NM AS TEXT
, (CASE WHEN CTGRY_DEPTH = 1 THEN '#'
ELSE CONCAT(SOPMAL_CD,'_',UPPER_CTGRY_ID)
END) AS PARENT
, BANNER_URL
, MENU_CHR_COLOR
FROM GC_CATEGORY GC
WHERE USE_AT = 'Y'
AND (
GC.UPPER_CTGRY_ID IS NULL OR
(
SELECT PARENT.USE_AT
FROM GC_CATEGORY PARENT
WHERE CONCAT(PARENT.SOPMAL_CD,'_',PARENT.CTGRY_ID) = CONCAT(GC.SOPMAL_CD,'_',GC.UPPER_CTGRY_ID)
) = 'Y')
ORDER BY SORT_ORDR ASC
</select>
<!-- 카테고리 상세 조회-->
<select id="selectBOCtgry"
parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO"
resultType="dataMap">
<![CDATA[
SELECT *
FROM GC_CATEGORY
WHERE 1=1
]]>
</select>
<!-- 카테고리 저장-->
<insert id="insertBOCtgryManage"
parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO">
INSERT INTO GC_CATEGORY (
CTGRY_ID
, UPPER_CTGRY_ID
, SOPMAL_CD
, CTGRY_NM
, CTGRY_DEPTH
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sortOrdr)">
, SORT_ORDR
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ctgryDvCd)">
, CTGRY_DV_CD
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(goodsCtgryExpsrAt)">
, GOODS_CTGRY_EXPSR_AT
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(menuExpsrAt)">
, MENU_EXPSR_AT
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(gnbExpsrAt)">
, GNB_EXPSR_AT
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pgeExpsrAt)">
, PGE_EXPSR_AT
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrCd)">
, EXPSR_CD
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrBgnDt)">
, EXPSR_BGN_DT
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrEndDt)">
, EXPSR_END_DT
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(urlDvCd)">
, URL_DV_CD
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(url)">
, URL
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(orginlFilNm)">
, ORGINL_FIL_NM /*원본파일명*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sysFilNm)">
, SYS_FIL_NM /*시스템파일명*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(filMg)">
, FIL_MG /*파일크기*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(filTy)">
, FIL_TY /*파일타입*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(filCours)">
, FIL_COURS /*파일경로*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bannerUrl)">
, BANNER_URL
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(menuChrColor)">
,MENU_CHR_COLOR
</if>
, USE_AT
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
) VALUES (
#{ctgryId}
, #{upperCtgryId}
, #{sopmalCd}
, #{ctgryNm}
, #{ctgryDepth}
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sortOrdr)">
, #{sortOrdr}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ctgryDvCd)">
, #{ctgryDvCd}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(goodsCtgryExpsrAt)">
, #{goodsCtgryExpsrAt}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(menuExpsrAt)">
, #{menuExpsrAt}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(gnbExpsrAt)">
, #{gnbExpsrAt}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pgeExpsrAt)">
, #{pgeExpsrAt}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrCd)">
, #{expsrCd}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrBgnDt)">
, #{expsrBgnDt}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrEndDt)">
, #{expsrEndDt}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(urlDvCd)">
, #{urlDvCd}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(url)">
, #{url}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(orginlFilNm)">
, #{orginlFilNm} /*원본파일명*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sysFilNm)">
, #{sysFilNm} /*시스템파일명*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(filMg)">
, #{filMg} /*파일크기*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(filTy)">
, #{filTy} /*파일타입*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(filCours)">
, #{filCours} /*파일경로*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bannerUrl)">
, #{bannerUrl}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(menuChrColor)">
, #{menuChrColor} /*메뉴 글자색*/
</if>
, 'Y'
, #{regusr}
, NOW()
, #{regusr}
, NOW()
)
</insert>
<!-- 카테고리 저장-->
<update id="updateBOCtgryManage"
parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO">
UPDATE GC_CATEGORY
SET
CTGRY_NM = #{ctgryNm}, /*카테고리명*/
SORT_ORDR = #{sortOrdr}, /*순서*/
CTGRY_DV_CD = #{ctgryDvCd}, /*카테고리구분코드*/
GOODS_CTGRY_EXPSR_AT = #{goodsCtgryExpsrAt}, /*상품카테고리노출여부*/
MENU_EXPSR_AT = #{menuExpsrAt}, /*메뉴노출여부*/
GNB_EXPSR_AT = #{gnbExpsrAt}, /*GNB 노출여부*/
PGE_EXPSR_AT = #{pgeExpsrAt}, /*페이지 노출여부*/
EXPSR_CD = #{expsrCd}, /*노출구분*/
MENU_CHR_COLOR = #{menuChrColor},
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrBgnDt)">
EXPSR_BGN_DT = #{expsrBgnDt}, /*노출구분 시작일자*/
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrEndDt)">
EXPSR_END_DT = #{expsrEndDt}, /*노출구분 종료자*/
</if>
<choose>
<when test="fileUse == 'new'">
ORGINL_FIL_NM = #{orginlFilNm},
SYS_FIL_NM = #{sysFilNm},
FIL_MG = #{filMg},
FIL_TY = #{filTy},
FIL_COURS = #{filCours},
</when>
<when test="fileUse == 'none'">
ORGINL_FIL_NM = NULL,
SYS_FIL_NM = NULL,
FIL_MG = NULL,
FIL_TY = NULL,
FIL_COURS = NULL,
</when>
<otherwise>
</otherwise>
</choose>
BANNER_URL = #{bannerUrl},
URL_DV_CD = #{urlDvCd},
URL = #{url}, /*URL*/
UPDUSR = #{updusr},
UPDT_DT = NOW()
WHERE CTGRY_ID = #{ctgryId}
AND SOPMAL_CD = #{sopmalCd}
</update>
<!-- 정렬순서 업데이트 -->
<update id="updateBOCtgrySortOrdr" parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO">
UPDATE GC_CATEGORY
SET SORT_ORDR = #{sortOrdr},
UPDUSR = #{updusr},
UPDT_DT = NOW()
WHERE CTGRY_ID = #{ctgryId}
AND SOPMAL_CD = #{sopmalCd}
</update>
<!-- 카테고리 삭제 -->
<update id="deleteBOCtgryManage" parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO">
<![CDATA[
UPDATE GC_CATEGORY
SET USE_AT = 'N'
, UPDUSR = #{updusr}
, UPDT_DT = NOW()
WHERE 1=1
AND CTGRY_ID = #{ctgryId}
AND SOPMAL_CD = #{sopmalCd}
]]>
</update>
<select id="selectCtgryId" parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO" resultType="java.lang.Integer">
SELECT IFNULL(MAX(CTGRY_ID), 0)+1
FROM GC_CATEGORY
WHERE SOPMAL_CD = #{sopmalCd}
</select>
<!--관리자 > 카테고리 조회-->
<select id="selectGoodsCategoryList" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
SELECT GC.CTGRY_ID
, IFNULL(GC.UPPER_CTGRY_ID, 0) AS UPPER_CTGRY_ID
, GC.CTGRY_DEPTH
, GC.CTGRY_NM
FROM GC_CATEGORY GC
WHERE 1=1
AND GC.USE_AT = 'Y'
AND GC.GOODS_CTGRY_EXPSR_AT = 'Y'
AND GC.SOPMAL_CD = #{sopmalCd}
AND IFNULL(GC.UPPER_CTGRY_ID, 0) = #{upperCtgryId}
ORDER BY GC.CTGRY_ID
, GC.CTGRY_DEPTH
, GC.UPPER_CTGRY_ID
, GC.SORT_ORDR
</select>
<!--사용자 > 카테고리 상품 목록조회-->
<select id="selectGoodsSopmalCatgryList" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
WITH RECURSIVE CATEGORY_PATH AS (
SELECT
FC.CTGRY_DEPTH,
FC.CTGRY_ID AS BASE_CTGRY_ID,
FC.CTGRY_NM AS BASE_CTGRY_NM,
FC.CTGRY_ID,
FC.UPPER_CTGRY_ID,
FC.CTGRY_NM,
FC.SOPMAL_CD,
FC.SORT_ORDR
FROM GC_CATEGORY FC
WHERE
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ctgryId)">
FC.CTGRY_ID = #{ctgryId}
</when>
<otherwise>
FC.CTGRY_CD = #{code}
</otherwise>
</choose>
AND FC.SOPMAL_CD = #{sopmalCd}
AND FC.USE_AT = 'Y'
AND FC.PGE_EXPSR_AT = 'Y'
UNION ALL
SELECT
C.CTGRY_DEPTH,
P.BASE_CTGRY_ID,
P.BASE_CTGRY_NM,
C.CTGRY_ID,
C.UPPER_CTGRY_ID,
C.CTGRY_NM,
C.SOPMAL_CD,
C.SORT_ORDR
FROM GC_CATEGORY C
INNER JOIN CATEGORY_PATH P
ON C.UPPER_CTGRY_ID = P.CTGRY_ID
AND C.SOPMAL_CD = P.SOPMAL_CD
WHERE C.SOPMAL_CD = #{sopmalCd}
AND C.PGE_EXPSR_AT = 'Y'
AND C.USE_AT = 'Y'
)
SELECT
P.CTGRY_DEPTH,
P.CTGRY_ID,
P.UPPER_CTGRY_ID,
P.CTGRY_NM,
P.SOPMAL_CD,
P.BASE_CTGRY_NM,
P.BASE_CTGRY_ID,
P.SORT_ORDR
FROM
CATEGORY_PATH P
WHERE 1=1
AND P.CTGRY_ID != '2'
AND P.UPPER_CTGRY_ID = 2 OR P.UPPER_CTGRY_ID = #{ctgryId} OR P.CTGRY_ID = #{ctgryId}
ORDER BY
CTGRY_DEPTH, SORT_ORDR ASC
</select>
<!--사용자 > 상품 목록 > 카테고리 배너 조회-->
<select id="selectGoodsSopmalCatgryBanner" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
SELECT
GC.SOPMAL_CD
,GC.FIL_COURS
,GC.ORGINL_FIL_NM
,GC.SYS_FIL_NM
,BANNER_URL
FROM
GC_CATEGORY GC
WHERE
1 = 1
AND GC.USE_AT = 'Y'
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ctgryId)">
AND GC.CTGRY_ID = #{ctgryId}
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(code)">
AND GC.CTGRY_CD = #{code}
</if>
AND GC.SOPMAL_CD = #{sopmalCd}
</select>
<select id="selectBOCtgryOrdrCnt" parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO" resultType="java.lang.Integer">
SELECT CTGRY_ID
FROM GC_CATEGORY
WHERE SOPMAL_CD = #{sopmalCd}
AND USE_AT = 'Y'
AND UPPER_CTGRY_ID = #{upperCtgryId}
AND SORT_ORDR = #{sortOrdr};
</select>
<update id="updateBOCtgryOrdr" parameterType="dataMap">
<selectKey keyProperty="sortOrdr" resultType="java.lang.Integer" order="BEFORE">
SELECT IFNULL(MAX(SORT_ORDR),0) + 1
FROM GC_CATEGORY
WHERE SOPMAL_CD = #{sopmalCd}
AND USE_AT = 'Y'
AND UPPER_CTGRY_ID = #{upperCtgryId}
</selectKey>
UPDATE GC_CATEGORY
SET SORT_ORDR = #{sortOrdr}
WHERE SOPMAL_CD = #{sopmalCd}
AND CTGRY_ID = #{ctgryId}
</update>
<select id="selectBOCtgryGoodsListInqurePopup" parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO" resultType="dataMap">
SELECT GCL.GOODS_INNB, GCL.GOODS_ORDR, GG.GOODS_NM, GCL.CTGRY_GOODS_ESNTL_NB
FROM GC_CATEGORY_LINK GCL
LEFT JOIN GC_GOODS GG
ON GCL.GOODS_INNB = GG.GOODS_INNB AND GCL.SOPMAL_CD = GG.SOPMAL_CD
WHERE GCL.SOPMAL_CD = #{sopmalCd}
AND GCL.CTGRY_ID = #{ctgryId}
ORDER BY GOODS_ORDR ASC
</select>
<!-- 카테고리 상품 조회 -->
<update id="updateBOCtgryGoodsOrdr" parameterType="com.wb.domainserver.domain.admin.sys.ctgry.vo.BOMaCtgryVO">
UPDATE GC_CATEGORY_LINK
SET GOODS_ORDR = #{goodsOrdr}
WHERE 1=1
AND CTGRY_GOODS_ESNTL_NB = #{ctgryGoodsEsntlNb}
</update>
<!-- 쇼핑몰 카테고리 리스트 -->
<select id="selectBOSopmalCtgry" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO" resultType="dataMap">
SELECT
CTGRY_ID, SOPMAL_CD, CTGRY_NM
FROM GC_CATEGORY
WHERE USE_AT = 'Y'
AND CTGRY_DEPTH = '2'
AND SOPMAL_CD = #{sopmalCd}
</select>
</mapper>

View File

@@ -0,0 +1,210 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.admin.sys.fnct.mapper.BOFnctMapper">
<sql id="srchFnctNmAsrchfnctDvAsrchFnctUrlWhere">
WHERE
1=1
AND
MF.USE_AT = 'Y'
<if test="srchFnctNm != null and srchFnctNm != ''">
AND
UPPER(MF.FNCT_NM) LIKE CONCAT('%', UPPER(#{srchFnctNm}), '%')
</if>
<if test="srchFnctDv != null and srchFnctDv != ''">
AND
MF.FNCT_DV_CD= #{srchFnctDv}
</if>
<if test="srchFnctUrl != null and srchFnctUrl != ''">
AND
UPPER(MF.FNCT_URI) LIKE CONCAT('%', UPPER(#{srchFnctUrl}), '%')
</if>
<if test="srchSysDvCd != null and srchSysDvCd != ''">
AND
MF.SYS_DV_CD = #{srchSysDvCd}
</if>
</sql>
<!-- 페이징처리를 위한 게시판 목록 총 개수 -->
<select id="selectBOFnctTotCnt"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO"
resultType = "Integer">
SELECT COUNT(*)
FROM (
SELECT
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
FROM (
SELECT
MF.FNCT_ID,
MF.REGIST_DT AS REGIST_ORD
FROM GC_FNCT MF
<include refid="srchFnctNmAsrchfnctDvAsrchFnctUrlWhere" />
and MF.FNCT_URI IS NOT NULL
ORDER BY
REGIST_ORD DESC
) BM
WHERE
(@ROWNUM:=0)=0
) PV
WHERE 1=1
</select>
<!-- 기능 목록 조회 -->
<select id="selectBOFnctList"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO"
resultType = "DataMap">
SELECT *
FROM (
SELECT
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
FROM (
SELECT
MF.FNCT_ID,
MF.SYS_DV_CD,
FN_GET_COMMCODE_NAME('SYS_DV', MF.SYS_DV_CD) AS SYS_DV_CD_NM,
MF.FNCT_NM,
MF.FNCT_DV_CD,
FN_GET_COMMCODE_NAME('FNCT_DV', MF.FNCT_DV_CD) AS FNCT_DV_NM,
MF.FNCT_URI,
MF.FNCT_DC,
MF.USE_AT,
MF.REGUSR,
DATE_FORMAT(MF.REGIST_DT, '%Y-%m-%d') AS REGIST_DT,
MF.UPDUSR,
DATE_FORMAT(MF.UPDT_DT, '%Y-%m-%d') AS UPDT_DT,
MF.REGIST_DT AS REGIST_ORD
FROM GC_FNCT MF
<include refid="srchFnctNmAsrchfnctDvAsrchFnctUrlWhere" />
AND MF.FNCT_URI IS NOT NULL
ORDER BY REGIST_ORD DESC
) BM
WHERE (@ROWNUM:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<!-- 기능 상세 조회 -->
<select id="selectBOFnctDetail"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO"
resultType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO">
SELECT
FNCT_ID,
SYS_DV_CD,
FN_GET_COMMCODE_NAME('MNGR_DV', SYS_DV_CD) AS SYS_DV_CD_NM,
FNCT_NM,
FNCT_DV_CD,
FNCT_URI,
FNCT_DC,
USE_AT,
REGUSR,
DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DT,
UPDUSR,
DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DT
FROM GC_FNCT MF
WHERE 1=1
AND USE_AT = 'Y'
AND FNCT_ID = #{fnctId}
</select>
<!-- 기능 URL 중복여부 조회 -->
<select id="selectBOFnctUrlDplct"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO"
resultType = "Integer">
SELECT COUNT(1)
FROM GC_FNCT
WHERE 1=1
AND FNCT_URI = #{fnctUri}
AND SYS_DV_CD = #{sysDvCd}
AND USE_AT = 'Y'
</select>
<!-- 기능 등록 -->
<insert id="insertBOFnct"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO">
<selectKey order="BEFORE" keyProperty="fnctId" resultType="java.lang.String">
SELECT CAST(IFNULL(COUNT(FNCT_ID), 0) AS UNSIGNED)+1
FROM GC_FNCT
</selectKey>
INSERT INTO GC_FNCT
(
FNCT_ID,
SYS_DV_CD,
FNCT_DV_CD,
FNCT_URI,
FNCT_NM,
FNCT_DC,
USE_AT,
REGUSR,
REGIST_DT,
UPDUSR,
UPDT_DT
)
VALUES
(
#{fnctId},
#{sysDvCd},
#{fnctDvCd},
#{fnctUri},
#{fnctNm},
#{fnctDc},
#{useAt},
#{regusr},
NOW(),
null,
null
)
</insert>
<!-- 기능 수정 -->
<update id="updateBOFnct"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO">
UPDATE GC_FNCT
SET SYS_DV_CD = #{sysDvCd},
FNCT_NM = #{fnctNm},
FNCT_DV_CD = #{fnctDvCd},
FNCT_DC = #{fnctDc},
UPDUSR = #{updusr},
UPDT_DT = NOW()
WHERE 1=1
AND FNCT_ID = #{fnctId}
</update>
<!-- 기능 삭제 -->
<update id="deleteBOFnct"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO">
UPDATE GC_FNCT
SET USE_AT = 'N',
UPDUSR = #{updusr},
UPDT_DT = NOW()
WHERE FNCT_ID = #{fnctId}
</update>
<!-- 기능 목록 엑셀 -->
<select id="selectBOFnctExcelList"
parameterType = "com.wb.domainserver.domain.admin.sys.fnct.vo.BOFnctVO"
resultType = "DataMap">
SELECT
MF.FNCT_ID,
MF.SYS_DV_CD,
FN_GET_COMMCODE_NAME('SYS_DV', MF.SYS_DV_CD) AS SYS_DV_CD_NM,
MF.FNCT_NM,
MF.FNCT_DV_CD,
FN_GET_COMMCODE_NAME('FNCT_DV', MF.FNCT_DV_CD) AS FNCT_DV_NM,
MF.FNCT_URI,
MF.FNCT_DC,
MF.USE_AT,
MF.REGUSR,
DATE_FORMAT(MF.REGIST_DT, '%Y-%m-%d') AS REGIST_DT,
MF.UPDUSR,
DATE_FORMAT(MF.UPDT_DT, '%Y-%m-%d') AS UPDT_DT,
MF.REGIST_DT AS REGIST_ORD
FROM GC_FNCT MF
<include refid="srchFnctNmAsrchfnctDvAsrchFnctUrlWhere" />
AND MF.FNCT_URI IS NOT NULL
ORDER BY REGIST_ORD DESC
</select>
</mapper>

View File

@@ -0,0 +1,459 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.admin.sys.menu.mapper.BOMaMenuMapper">
<!-- 메뉴 목록 조회-->
<select id="selectBOMenuManage"
parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO"
resultType="dataMap">
SELECT
MENU_CD
, SOPMAL_CD
, UPPER_MENU_CD
, UPMOST_MENU_CD
, MENU_NM
, MENU_DC
, MENU_DEPTH AS DEPTH
, SORT_ORDR
, URL
, EXPSR_LC_DV_CD
, MENU_CD AS ID
, MENU_NM AS TEXT
, (CASE WHEN MENU_DEPTH = 0 THEN '#'
ELSE UPPER_MENU_CD
END) AS PARENT
FROM GC_MANAGER_MENU MM
WHERE USE_AT = 'Y'
AND (
MM.UPPER_MENU_CD IS NULL OR
(
SELECT PARENT.USE_AT
FROM GC_MANAGER_MENU PARENT
WHERE PARENT.MENU_CD = MM.UPPER_MENU_CD
) = 'Y')
ORDER BY SORT_ORDR ASC
</select>
<!-- 메뉴 상세 조회-->
<select id="selectBOMenu"
parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO"
resultType="dataMap">
<![CDATA[
SELECT *
FROM GC_MANAGER_MENU
WHERE 1=1
]]>
</select>
<!-- 메뉴 저장-->
<update id="updateBOMenuManage" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO">
UPDATE GC_MANAGER_MENU
SET MENU_NM = #{menuNm}, /*메뉴명*/
EXPSR_LC_DV_CD = #{expsrLcDvCd}, /*노출 여부*/
URL = #{url}, /*URL*/
MENU_DC = #{menuDc}, /*메뉴 설명*/
UPDUSR = #{updusr}, /*수정자*/
UPDT_DT = NOW() /*수정일시*/
WHERE MENU_CD = #{menuCd}
AND SOPMAL_CD = #{sopmalCd}
</update>
<insert id="insertBOMenuManage" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO">
<selectKey order="BEFORE" keyProperty="menuCd" resultType="String">
SELECT CONCAT(#{upmostMenuCd}, '_', MAX(CAST(REGEXP_REPLACE(MENU_CD, '[^0-9]', '') AS UNSIGNED))+1) AS MENU_CD
FROM GC_MANAGER_MENU
WHERE UPMOST_MENU_CD = #{upmostMenuCd}
</selectKey>
INSERT
INTO GC_MANAGER_MENU
(
MENU_CD,
SOPMAL_CD,
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(upperMenuCd)">
UPPER_MENU_CD,
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(upmostMenuCd)">
UPMOST_MENU_CD,
</if>
MENU_NM,
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(menuDc)">
MENU_DC,
</if>
MENU_DEPTH,
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sortOrdr)">
SORT_ORDR,
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(url)">
URL,
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrLcDvCd)">
EXPSR_LC_DV_CD,
</if>
USE_AT,
REGUSR,
REGIST_DT,
UPDUSR,
UPDT_DT
)
VALUES
(
#{menuCd},
#{sopmalCd},
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(upperMenuCd)">
#{upperMenuCd},
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(upmostMenuCd)">
#{upmostMenuCd},
</if>
#{menuNm},
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(menuDc)">
#{menuDc},
</if>
#{menuDepth},
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sortOrdr)">
#{sortOrdr},
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(url)">
#{url},
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(expsrLcDvCd)">
#{expsrLcDvCd},
</if>
'Y',
#{regusr},
NOW(),
#{regusr},
NOW()
)
</insert>
<!-- 메뉴 삭제 -->
<update id="deleteBOMenuManage" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO">
UPDATE GC_MANAGER_MENU
SET USE_AT = 'N',
UPDUSR = #{updusr},
UPDT_DT = NOW()
WHERE MENU_CD = #{menuCd}
AND SOPMAL_CD = #{sopmalCd}
</update>
<!-- 기능 팝업 셀렉트박스 상위메뉴 조회 -->
<select id="selectTopMenuList" resultType="DataMap">
SELECT
MENU_CD,
UPPER_MENU_CD,
MENU_NM,
MENU_DEPTH AS LEVEL,
UPMOST_MENU_CD,
MENU_DC
FROM
GC_MANAGER_MENU
WHERE
1=1
AND
USE_AT = 'Y'
AND
UPPER_MENU_CD IS NULL
ORDER BY
SORT_ORDR
</select>
<!-- 기능 팝업 셀렉트박스 하위메뉴 조회 -->
<select id="selectSubMenuList" parameterType="String" resultType="DataMap">
SELECT
MENU_CD,
UPPER_MENU_CD,
MENU_NM,
MENU_DEPTH AS LEVEL,
UPMOST_MENU_CD,
MENU_DC
FROM
GC_MANAGER_MENU
WHERE
1=1
AND
USE_AT = 'Y'
AND
UPPER_MENU_CD = #{upperMenuCd}
ORDER BY
SORT_ORDR
</select>
<!-- 쇼핑몰 목록 조회 -->
<select id="selectBOsopmalList" parameterType="String" resultType="DataMap">
SELECT
MENU_CD,
MENU_NM,
SOPMAL_CD
FROM
GC_MANAGER_MENU
WHERE
MENU_DEPTH = '1'
AND
UPPER_MENU_CD = 'adm'
AND
USE_AT = 'Y'
</select>
<!-- 선택된 메뉴리스트 조회 -->
<select id="selectBOMenuListInqire" parameterType="String" resultType="DataMap">
SELECT
AFM.MENU_CD,
MM.MENU_NM
FROM
GC_AUTH_FNCT_MENU AFM
INNER JOIN
GC_MANAGER_MENU MM
ON
AFM.MENU_CD = MM.MENU_CD
AND
AFM.AUTHOR_GROUP_CD = #{authorGroupCd}
</select>
<!-- 정렬순서 중복 조회 -->
<select id="selectBOMenuSortOrdrCheck"
parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO" resultType="int">
SELECT
COUNT(MENU_CD)
FROM
GC_MANAGER_MENU MM
WHERE
1=1
AND
MENU_DEPTH = #{menuDepth}
AND
UPPER_MENU_CD = #{upperMenuCd}
AND
SORT_ORDR = #{sortOrdr}
AND
USE_AT = 'Y'
</select>
<select id="selectBOSortOrdrByMenuCd"
parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO" resultType="String">
SELECT
MENU_CD
FROM
GC_MANAGER_MENU MM
WHERE
1=1
AND
MENU_DEPTH = #{menuDepth}
AND
UPPER_MENU_CD = #{upperMenuCd}
AND
SORT_ORDR = #{sortOrdr}
AND
USE_AT = 'Y'
</select>
<!-- 정렬순서 업데이트 -->
<update id="updateBOMenuSortOrdr" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO">
<foreach collection="moveMenuCd" item="menuCd" index="index" separator=";">
UPDATE GC_MANAGER_MENU
SET SORT_ORDR = #{index} +1
WHERE MENU_CD = #{menuCd}
AND SOPMAL_CD = #{sopmalCd}
</foreach>
</update>
<!-- 쇼핑몰별 등급 조회 -->
<select id="selectBOSopmalGrad"
parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO"
resultType="dataMap">
SELECT GMG.MBR_GRAD_INNB, GMG.MBR_GRAD_NM
FROM GC_SHOP_MEMBER_GRAD_GROUP GSMGG
LEFT JOIN GC_MEMBER_GRAD GMG
ON GSMGG.MBR_GRAD_GROUP_INNB = GMG.MBR_GRAD_GROUP_INNB
WHERE GSMGG.SOPMAL_CD = ${sopmalCd}
</select>
<!-- 통합관리자/관리자 TOP 메뉴 조회 -->
<select id="selectBOTopMenuListInqire" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO" resultType="DataMap">
<![CDATA[
WITH RECURSIVE MENU_INCLD AS
(
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
, M1.MENU_CD
, M1.SOPMAL_CD
, M1.UPPER_MENU_CD
, M1.MENU_NM
, M1.MENU_DEPTH
, M1.SORT_ORDR
, M1.URL
, CONCAT(IF(LENGTH(M1.SORT_ORDR)=1,'0',''), M1.SORT_ORDR, M1.MENU_NM) FULL_PATH
FROM GC_MANAGER_MENU M1
WHERE (@ROWNUM:=0)=0
AND M1.USE_AT = 'Y'
AND M1.SOPMAL_CD = #{sopmalCd}
AND M1.UPMOST_MENU_CD = #{upmostMenuCd}
AND CASE WHEN IFNULL(#{upperMenuCd},'') <> '' THEN M1.UPPER_MENU_CD = #{upperMenuCd}
ELSE M1.UPPER_MENU_CD = #{upmostMenuCd}
END
UNION
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
, M2.MENU_CD
, M2.SOPMAL_CD
, M2.UPPER_MENU_CD
, M2.MENU_NM
, M2.MENU_DEPTH
, M2.SORT_ORDR
, M2.URL
, CONCAT(MENU_INCLD.FULL_PATH , ' > ', M2.SORT_ORDR, M2.MENU_NM ) AS FULL_PATH
FROM GC_MANAGER_MENU M2
INNER JOIN MENU_INCLD ON M2.UPPER_MENU_CD = MENU_INCLD.MENU_CD AND M2.SOPMAL_CD = MENU_INCLD.SOPMAL_CD
WHERE (@ROWNUM:=0)=0
AND M2.USE_AT = 'Y'
)
SELECT RNUM,MENU_CD
, SOPMAL_CD
, UPPER_MENU_CD
, MENU_NM
, MENU_DEPTH
, SORT_ORDR
, URL
, FULL_PATH
, CASE
WHEN MENU_DEPTH = #{nextDeptCd2} AND LEAD(MENU_DEPTH) OVER (ORDER BY FULL_PATH) = #{nextDeptCd1} THEN 1
ELSE 0
END AS NEXT_DEPTH_2
, CASE
WHEN MENU_DEPTH = #{nextDeptCd1} AND LEAD(MENU_DEPTH) OVER (ORDER BY FULL_PATH) = #{nextDeptCd2} THEN 1
ELSE 0
END AS NEXT_DEPTH_3
FROM MENU_INCLD
WHERE 1 = 1
AND CASE WHEN IFNULL(#{upperMenuCd},'') = '' THEN MENU_DEPTH = #{topMenuCd}
ELSE 1
END
ORDER BY FULL_PATH
]]>
</select>
<!-- 쇼핑몰 메뉴 조회 -->
<select id="selectBOSopmalTopMenuListInqire" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO" resultType="DataMap">
<![CDATA[
WITH RECURSIVE CTGRY_INCLD AS
(
SELECT 1 AS RNUM
, C1.CTGRY_ID
, C1.SOPMAL_CD
, C1.UPPER_CTGRY_ID
, C1.CTGRY_NM
, C1.CTGRY_DEPTH
, C1.SORT_ORDR
, C1.CTGRY_DV_CD
, C1.URL
, C1.MENU_EXPSR_AT
, C1.GNB_EXPSR_AT
, CONCAT(C1.SOPMAL_CD, ' > ', C1.SORT_ORDR, C1.CTGRY_NM) FULL_PATH
, C1.MENU_CHR_COLOR
FROM GC_CATEGORY C1
WHERE 1=1
AND C1.USE_AT = 'Y'
AND C1.SOPMAL_CD = #{sopmalCd}
AND C1.UPPER_CTGRY_ID = 1
UNION
SELECT RNUM+1
, C2.CTGRY_ID
, C2.SOPMAL_CD
, C2.UPPER_CTGRY_ID
, C2.CTGRY_NM
, C2.CTGRY_DEPTH
, C2.SORT_ORDR
, C2.CTGRY_DV_CD
, CASE WHEN C2.URL_DV_CD = '01' THEN CONCAT('/sopmal/goods/selectGoodsListForm?ctgryId=',C2.CTGRY_ID)
ELSE C2.URL
END URL
, C2.MENU_EXPSR_AT
, C2.GNB_EXPSR_AT
, CONCAT(CTGRY_INCLD.FULL_PATH, ' > ', LPAD(IFNULL(C2.SORT_ORDR, '0'), 3, '0'), C2.CTGRY_NM) AS FULL_PATH
, C2.MENU_CHR_COLOR
FROM GC_CATEGORY C2
INNER JOIN CTGRY_INCLD ON C2.UPPER_CTGRY_ID = CTGRY_INCLD.CTGRY_ID AND C2.SOPMAL_CD = CTGRY_INCLD.SOPMAL_CD
WHERE 1 = 1
AND C2.USE_AT = 'Y'
AND C2.CTGRY_DEPTH < 5
AND CASE WHEN C2.EXPSR_CD = '01' THEN 1
WHEN EXPSR_CD = '03' AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN DATE_FORMAT(EXPSR_BGN_DT, '%Y-%m-%d') AND DATE_FORMAT(EXPSR_END_DT, '%Y-%m-%d') THEN 1
ELSE 0
END
)
SELECT FULL_PATH
, RNUM
, MENU_EXPSR_AT
, GNB_EXPSR_AT
, SORT_ORDR
, CTGRY_DV_CD
, CTGRY_ID
, SOPMAL_CD
, UPPER_CTGRY_ID
, CTGRY_NM
, CTGRY_DEPTH
, URL
, MENU_CHR_COLOR
, IF(LOCATE('bbsId=', url) > 0, SUBSTRING_INDEX(SUBSTRING(url, LOCATE('bbsId=', url) + 6), '&', 1), '') AS BBS_ID
, CASE WHEN RNUM IN ('2','3') AND LEAD(RNUM) OVER (ORDER BY FULL_PATH) = '3' THEN 1
ELSE 0
END AS NEXT_DEPTH_2
, CASE WHEN RNUM IN ('3','4') AND LEAD(RNUM) OVER (ORDER BY FULL_PATH) = '4' THEN 1
ELSE 0
END AS NEXT_DEPTH_3
FROM CTGRY_INCLD
WHERE RNUM > 1
ORDER BY FULL_PATH
]]>
</select>
<!--crm header left menu 조회-->
<select id="selectBOCrmMenuListInqire" parameterType="com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO" resultType="DataMap">
WITH RECURSIVE MENU_INCLD AS
(
SELECT 1 AS RNUM
, M1.MENU_CD
, M1.SOPMAL_CD
, M1.UPPER_MENU_CD
, M1.MENU_NM
, M1.MENU_DEPTH
, M1.SORT_ORDR
, M1.URL
, M1.EXPSR_LC_DV_CD
, CONCAT(M1.SORT_ORDR, M1.MENU_NM) FULL_PATH
FROM GC_MANAGER_MENU M1
WHERE 1 = 1
AND M1.USE_AT = 'Y'
AND M1.SOPMAL_CD = #{sopmalCd}
AND M1.UPMOST_MENU_CD = #{upmostMenuCd}
AND CASE WHEN IFNULL(#{upmostMenuCd},'') <![CDATA[<>]]> '' THEN M1.UPPER_MENU_CD = 'crm'
ELSE M1.UPPER_MENU_CD = 'crm'
END
UNION
SELECT RNUM+1
, M2.MENU_CD
, M2.SOPMAL_CD
, M2.UPPER_MENU_CD
, M2.MENU_NM
, M2.MENU_DEPTH
, M2.SORT_ORDR
, M2.URL
, M2.EXPSR_LC_DV_CD
, CONCAT(MENU_INCLD.FULL_PATH , ' > ', M2.SORT_ORDR, M2.MENU_NM ) AS FULL_PATH
FROM GC_MANAGER_MENU M2
INNER JOIN MENU_INCLD ON M2.UPPER_MENU_CD = MENU_INCLD.MENU_CD AND M2.SOPMAL_CD = MENU_INCLD.SOPMAL_CD
WHERE 1 = 1
AND M2.USE_AT = 'Y'
)
SELECT RNUM
,MENU_CD
, SOPMAL_CD
, UPPER_MENU_CD
, MENU_NM
, MENU_DEPTH
, SORT_ORDR
, URL
, EXPSR_LC_DV_CD
, FULL_PATH
FROM MENU_INCLD
WHERE 1 = 1
ORDER BY SORT_ORDR
</select>
</mapper>