localhost-back/src/main/resources/mapper/NetprojctMapper.xml
2025-03-13 12:13:31 +09:00

117 lines
3.8 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">
<mapper namespace="io.company.localhost.mapper.NetprojctMapper">
<!-- 프로젝트 목록 조회 -->
<select id="selectProject" parameterType="map" resultType="io.company.localhost.common.dto.MapDto">
SELECT DISTINCT
p.*,
c.CMNCODNAM AS projctcolor
FROM netprojct p
LEFT JOIN commoncod c ON p.PROJCTCOL = c.CMNCODVAL AND c.CMNCODYNP = '1'
LEFT JOIN promember pm ON p.PROJCTSEQ = pm.PROJCTSEQ
WHERE 1=1
<if test="searchKeyword != null and searchKeyword != ''">
AND (
p.PROJCTNAM LIKE CONCAT('%', #{searchKeyword}, '%')
OR EXISTS (
SELECT 1
FROM promember pm2
JOIN netmember m ON pm2.MEMBERSEQ = m.MEMBERSEQ
WHERE pm2.PROJCTSEQ = p.PROJCTSEQ
AND pm2.PROJCTYON = '1'
AND m.membernam LIKE CONCAT('%', #{searchKeyword}, '%')
)
OR p.PROJCTARR LIKE CONCAT('%', #{searchKeyword}, '%')
OR p.PROJCTDTL LIKE CONCAT('%', #{searchKeyword}, '%')
OR p.PROJCTZIP LIKE CONCAT('%', #{searchKeyword}, '%')
)
</if>
<if test="category != null and category != ''">
AND SUBSTRING(p.PROJCTSTR, 1, 4) = #{category}
</if>
<if test="excludeEnded != null and excludeEnded == 'true'">
AND (p.PROJCTEND IS NULL OR p.PROJCTEND > CURDATE())
</if>
ORDER BY p.PROJCTSTR DESC
</select>
<!-- 프로젝트 등록 -->
<insert id="insertProject" useGeneratedKeys="true" keyProperty="PROJCTSEQ">
INSERT INTO netprojct (
PROJCTNAM,
PROJCTCOL,
PROJCTSTR,
PROJCTEND,
PROJCTDES,
PROJCTARR,
PROJCTDTL,
PROJCTZIP,
PROJCTCDT,
PROJCTCMB
) VALUES (
#{projctNam},
#{projctCol},
#{projctStr},
#{projctEnd},
#{projctDes},
#{projctArr},
#{projctDtl},
#{projctZip},
#{projctCdt},
#{projctCmb}
)
</insert>
<!-- 프로젝트 수정 -->
<update id="updateProject">
UPDATE netprojct
SET PROJCTNAM = #{projctNam},
PROJCTCOL = #{projctCol},
PROJCTARR = #{projctArr},
PROJCTDTL = #{projctDtl},
PROJCTZIP = #{projctZip},
PROJCTSTR = #{projctStr},
PROJCTEND = #{projctEnd},
PROJCTDES = #{projctDes},
PROJCTUDT = #{projctUdt},
PROJCTUMB = #{projctUmb}
WHERE PROJCTSEQ = #{projctSeq}
</update>
<!-- 프로젝트 로그 조회 -->
<select id="selectProjectLog" parameterType="int" resultType="map">
SELECT logDate, logMessage
FROM (
-- 프로젝트 등록 로그
SELECT
DATE_FORMAT(p.PROJCTCDT, '%Y-%m-%d %H:%i') AS logDate,
CONCAT('[', m.MEMBERNAM, '] 프로젝트 등록') AS logMessage
FROM netprojct p
JOIN netmember m ON p.PROJCTCMB = m.MEMBERSEQ
WHERE p.PROJCTSEQ = #{projctSeq}
UNION ALL
-- 프로젝트 수정 로그
SELECT
DATE_FORMAT(p.PROJCTUDT, '%Y-%m-%d %H:%i') AS logDate,
CONCAT('[', m.MEMBERNAM, '] 프로젝트 수정') AS logMessage
FROM netprojct p
JOIN netmember m ON p.PROJCTUMB = m.MEMBERSEQ
WHERE p.PROJCTSEQ = #{projctSeq}
AND p.PROJCTUDT IS NOT NULL
) AS logs
ORDER BY logDate DESC;
</select>
<!-- 프로젝트 삭제 -->
<delete id="deleteProject" parameterType="int">
DELETE FROM netprojct WHERE PROJCTSEQ = #{projctSeq}
</delete>
</mapper>