
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">
<!--
작성자 : 하석형
작성일 : 2024.06.12
내 용 : 통합 검색 관리 관련
-->
<mapper namespace="com.takensoft.cms.search.dao.SearchDAO">
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.12
내 용 : 검색 조건 SQL
-->
<sql id="searchSQL">
<!-- 검색 조건 및 검색어 -->
<choose>
<when test="searchType != null and searchType != ''">
<if test="searchType == 'title'">
AND bbs_nm LIKE '%' || #{searchText} || '%'
</if>
<if test="searchType == 'content'">
AND bbs_cn LIKE '%' || #{searchText} || '%'
</if>
</when>
<otherwise>
AND (
bbs_nm LIKE '%' || #{searchText} || '%'
OR
bbs_cn LIKE '%' || #{searchText} || '%'
)
</otherwise>
</choose>
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
</sql>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.12
내 용 : 검색 조건 Order By SQL
-->
<sql id="searchOrderBySQL">
<!-- 검색 정렬 -->
<choose>
<when test="sort != null and sort != ''">
<!-- (미구현)정확도 조건 -->
<if test="sort == 'A'">
</if>
</when>
<otherwise>
reg_dt DESC
</otherwise>
</choose>
</sql>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.12
내 용 : 게시판 검색 목록 조회 개수
-->
<select id="findAllCountByBbs" parameterType="SearchVO" resultType="int">
SELECT
COUNT(*)
FROM
bbs_cn bc
WHERE
bc.bbs_mng_id = #{bbsMngId}
AND
bc.use_yn = 'Y'
<include refid="searchSQL" />
<if test="roles != null and roles.size() > 0">
<choose>
<!-- ROLE_ADMIN일 때는 모든 데이터를 보여줍니다. -->
<when test="roles.contains('ROLE_ADMIN')">
</when>
<!-- ROLE_USER일 때는 작성자가 일치하는 데이터는 보여줍니다. -->
<when test="roles.contains('ROLE_USER')">
AND (bc.prvt_pst_yn = 'N' OR bc.rgtr = #{mbrId})
</when>
<!-- 그 외는 비밀글을 조회할 수 없습니다. -->
<otherwise>
AND bc.prvt_pst_yn = 'N'
</otherwise>
</choose>
</if>
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.12
내 용 : 게시판 검색 목록 조회
-->
<select id="findAllByBbs" parameterType="SearchVO" resultType="SearchContentVO">
SELECT
bbs_mng_id AS menuTypeCtgry
, bbs_id AS pageId
, bbs_nm AS title
, bbs_cn AS content
, reg_dt::DATE
FROM
bbs_cn bc
WHERE
bc.bbs_mng_id = #{bbsMngId}
AND
bc.use_yn = 'Y'
<include refid="searchSQL" />
<if test="roles != null and roles.size() > 0">
<choose>
<!-- ROLE_ADMIN일 때는 모든 데이터를 보여줍니다. -->
<when test="roles.contains('ROLE_ADMIN')">
</when>
<!-- ROLE_USER일 때는 작성자가 일치하는 데이터는 보여줍니다. -->
<when test="roles.contains('ROLE_USER')">
AND (bc.prvt_pst_yn = 'N' OR bc.rgtr = #{mbrId})
</when>
<!-- 그 외는 비밀글을 조회할 수 없습니다. -->
<otherwise>
AND bc.prvt_pst_yn = 'N'
</otherwise>
</choose>
</if>
ORDER BY
<include refid="searchOrderBySQL" />
LIMIT #{typePreCnt}
<!--<if test="bbsMngIdList != null and bbsMngIdList.size() > 0">
AND bc.bbs_mng_id IN
<foreach item="bbsMngId" collection="bbsMngIdList" open="(" separator="," close=")">
#{bbsMngId}
</foreach>
</if>-->
</select>
<!-- ********************************* 컨텐츠 검색 - 기업 정보 (시작) ********************************* -->
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 기업 정보 검색 목록 조회 개수
-->
<select id="findAllCountByEntInfo" parameterType="SearchVO" resultType="int">
SELECT
COUNT(*)
FROM
ent_info ei
WHERE
ei.use_yn = 'Y'
<!-- 검색어 -->
AND (
ent_nm LIKE '%' || #{searchText} || '%'
OR
rmrk LIKE '%' || #{searchText} || '%'
)
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 기업 정보 검색 목록 조회
-->
<select id="findAllByEntInfo" parameterType="SearchVO" resultType="HashMap">
SELECT
ei.ent_id AS page_id
, ei.ent_nm
, ei.rprsv_nm
, ei.rmrk
, ei.reg_dt::DATE
FROM
ent_info ei
WHERE
ei.use_yn = 'Y'
<!-- 검색어 -->
AND (
ei.ent_nm LIKE '%' || #{searchText} || '%'
OR
ei.rmrk LIKE '%' || #{searchText} || '%'
)
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND ei.reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND ei.reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
<!-- 검색 정렬 -->
ORDER BY
ei.reg_dt DESC
LIMIT #{typePreCnt}
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 기업 상담 신청 검색 목록 조회 개수
-->
<select id="findAllCountByEntDscsnAply" parameterType="SearchVO" resultType="int">
SELECT
COUNT(*)
FROM
ent_dscsn_aply eda
WHERE
eda.use_yn = 'Y'
<if test="roles != null and roles.size() > 0">
<choose>
<!-- ROLE_ADMIN일 때는 모든 데이터를 보여줍니다. -->
<when test="roles.contains('ROLE_ADMIN')">
</when>
<!-- ROLE_USER일 때는 작성자가 일치하는 데이터는 보여줍니다. -->
<when test="roles.contains('ROLE_USER')">
AND ((prcs_stts = 'C' OR prcs_stts IS NULL) OR eda.actn_pic = #{mbrId})
</when>
<!-- 그 외는 변경요청(C)과 미배정(null)만 조회할 수 있습니다. -->
<otherwise>
AND (prcs_stts = 'C' OR prcs_stts IS NULL)
</otherwise>
</choose>
</if>
<!-- 검색어 -->
AND eda.ent_nm LIKE '%' || #{searchText} || '%'
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND eda.reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND eda.reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 기업 상담 신청 검색 목록 조회
-->
<select id="findAllByEntDscsnAply" parameterType="SearchVO" resultType="HashMap">
SELECT
eda.ent_dscsn_aply_id AS page_id
, eda.ent_nm
, eda.rmrk
, CASE
WHEN prcs_stts = 'N' THEN '접수전'
WHEN prcs_stts = 'I' THEN '처리중'
WHEN prcs_stts = 'E' THEN '완료'
WHEN prcs_stts = 'C' THEN '변경요청'
ELSE '미배정'
END AS prcs_stts
, eda.reg_dt::DATE
FROM
ent_dscsn_aply eda
WHERE
eda.use_yn = 'Y'
<if test="roles != null and roles.size() > 0">
<choose>
<!-- ROLE_ADMIN일 때는 모든 데이터를 보여줍니다. -->
<when test="roles.contains('ROLE_ADMIN')">
</when>
<!-- ROLE_USER일 때는 작성자가 일치하는 데이터는 보여줍니다. -->
<when test="roles.contains('ROLE_USER')">
AND ((prcs_stts = 'C' OR prcs_stts IS NULL) OR eda.actn_pic = #{mbrId})
</when>
<!-- 그 외는 변경요청(C)과 미배정(null)만 조회할 수 있습니다. -->
<otherwise>
AND (prcs_stts = 'C' OR prcs_stts IS NULL)
</otherwise>
</choose>
</if>
<!-- 검색어 -->
AND eda.ent_nm LIKE '%' || #{searchText} || '%'
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND eda.reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND eda.reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
<!-- 검색 정렬 -->
ORDER BY
eda.reg_dt DESC
LIMIT #{typePreCnt}
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 투자 상담 검색 목록 조회 개수
-->
<select id="findAllCountByIvstDscsn" parameterType="SearchVO" resultType="int">
SELECT
COUNT(*)
FROM
ivst_dscsn id
LEFT JOIN
ent_info ei
ON
id.ent_id = ei.ent_id
WHERE
id.use_yn = 'Y'
<!-- 검색어 -->
AND (
ei.ent_nm LIKE '%' || #{searchText} || '%'
OR
id.main_cn LIKE '%' || #{searchText} || '%'
)
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND id.reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND id.reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 투자 상담 검색 목록 조회
-->
<select id="findAllByIvstDscsn" parameterType="SearchVO" resultType="HashMap">
SELECT
id.ivst_dscsn_id AS page_id
, ei.ent_nm
, id.ttl
, id.main_cn
, id.reg_dt::DATE
FROM
ivst_dscsn id
LEFT JOIN
ent_info ei
ON
id.ent_id = ei.ent_id
WHERE
id.use_yn = 'Y'
<!-- 검색어 -->
AND (
ei.ent_nm LIKE '%' || #{searchText} || '%'
OR
id.main_cn LIKE '%' || #{searchText} || '%'
)
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND id.reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND id.reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
<!-- 검색 정렬 -->
ORDER BY
id.reg_dt DESC
LIMIT #{typePreCnt}
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 검토 사항 검색 목록 조회 개수
-->
<select id="findAllCountByRvwMttr" parameterType="SearchVO" resultType="int">
SELECT
COUNT(*)
FROM
rvw_mttr rm
LEFT JOIN
(SELECT
ei.ent_nm
, id.ivst_dscsn_id
, id.ttl
FROM
ent_info ei
LEFT JOIN
(SELECT DISTINCT ON (ent_id)
ent_id
, ivst_dscsn_id
, ttl
FROM
ivst_dscsn
WHERE
use_yn = 'Y'
ORDER BY
ent_id, reg_dt DESC
) AS id
ON
ei.ent_id = id.ent_id
WHERE
ei.use_yn = 'Y'
) AS ei_id
ON
rm.ivst_dscsn_id = ei_id.ivst_dscsn_id
LEFT JOIN
cd_mng cm
ON
rm."type" = cm.cd
WHERE
rm.use_yn = 'Y'
<!-- 검색어 -->
AND (
ei_id.ent_nm LIKE '%' || #{searchText} || '%'
OR
ei_id.ttl LIKE '%' || #{searchText} || '%'
)
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND rm.reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND rm.reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.06.14
내 용 : 검토 사항 검색 목록 조회
-->
<select id="findAllByRvwMttr" parameterType="SearchVO" resultType="HashMap">
SELECT
rm.rvw_mttr_id AS page_id
, ei_id.ent_nm
, ei_id.ttl
, cm.cd_nm AS "type"
, rm.rcpt_cn
, rm.reg_dt::DATE
FROM
rvw_mttr rm
LEFT JOIN
(SELECT
ei.ent_nm
, id.ivst_dscsn_id
, id.ttl
FROM
ent_info ei
LEFT JOIN
(SELECT DISTINCT ON (ent_id)
ent_id
, ivst_dscsn_id
, ttl
FROM
ivst_dscsn
WHERE
use_yn = 'Y'
ORDER BY
ent_id, reg_dt DESC
) AS id
ON
ei.ent_id = id.ent_id
WHERE
ei.use_yn = 'Y'
) AS ei_id
ON
rm.ivst_dscsn_id = ei_id.ivst_dscsn_id
LEFT JOIN
cd_mng cm
ON
rm."type" = cm.cd
WHERE
rm.use_yn = 'Y'
<!-- 검색어 -->
AND (
ei_id.ent_nm LIKE '%' || #{searchText} || '%'
OR
ei_id.ttl LIKE '%' || #{searchText} || '%'
)
<!-- 검색 기간 -->
<if test="startDt != null and startDt != ''">
<![CDATA[
AND rm.reg_dt::DATE >= #{startDt}::DATE
]]>
</if>
<if test="endDt != null and endDt != ''">
<![CDATA[
AND rm.reg_dt::DATE <= #{endDt}::DATE
]]>
</if>
<!-- 검색 정렬 -->
ORDER BY
rm.reg_dt DESC
LIMIT #{typePreCnt}
</select>
<!-- ********************************* 컨텐츠 검색 - 기업 정보 (종료) ********************************* -->
</mapper>