
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">
<!--
작성자 : 하석형
작성일 : 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>