107 lines
3.6 KiB
XML
107 lines
3.6 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.PromemberMapper">
|
|
|
|
<!-- 프로젝트 등록 후 모든 사용자 참여 -->
|
|
<insert id="insertProjectMember">
|
|
INSERT INTO promember (PROJCTSEQ, MEMBERSEQ, PROJCTYON)
|
|
SELECT
|
|
#{projctSeq},
|
|
MEMBERSEQ,
|
|
<choose>
|
|
<when test="disabledMembers != null and disabledMembers.size() > 0">
|
|
CASE
|
|
WHEN MEMBERSEQ IN
|
|
<foreach item="member" collection="disabledMembers" open="(" separator="," close=")">
|
|
#{member}
|
|
</foreach>
|
|
THEN '0'
|
|
ELSE '1'
|
|
END
|
|
</when>
|
|
<otherwise>
|
|
'1'
|
|
</otherwise>
|
|
</choose>
|
|
FROM netmember;
|
|
</insert>
|
|
|
|
<update id="updateProjectMembers">
|
|
UPDATE promember
|
|
SET PROJCTYON =
|
|
<choose>
|
|
<when test="disabledMembers != null and disabledMembers.size() > 0">
|
|
CASE
|
|
WHEN MEMBERSEQ IN
|
|
<foreach item="member" collection="disabledMembers" open="(" separator="," close=")">
|
|
#{member}
|
|
</foreach>
|
|
THEN '0'
|
|
ELSE '1'
|
|
END
|
|
</when>
|
|
<otherwise>
|
|
'1'
|
|
</otherwise>
|
|
</choose>
|
|
WHERE PROJCTSEQ = #{projctSeq}
|
|
</update>
|
|
|
|
|
|
<!-- 새로 가입한 회원 모든 프로젝트 멤버에 미참여 상태로 추가 -->
|
|
<insert id="insertNewMemberToProjects">
|
|
INSERT INTO promember (PROJCTSEQ, MEMBERSEQ, PROJCTYON)
|
|
SELECT PROJCTSEQ, #{memberSeq}, '0' FROM netprojct;
|
|
</insert>
|
|
|
|
<!-- 프로젝트 참여 미참여 -->
|
|
<update id="updateProjectMember">
|
|
UPDATE promember
|
|
SET PROJCTYON = #{projctYon}
|
|
WHERE PROJCTSEQ = #{projctSeq}
|
|
AND MEMBERSEQ = #{memberSeq}
|
|
</update>
|
|
|
|
<!-- 프로젝트 멤버 조회 -->
|
|
<select id="selectProjectMembers" resultType="io.company.localhost.common.dto.MapDto">
|
|
SELECT pm.PROJCTSEQ,
|
|
pm.MEMBERSEQ,
|
|
pm.PROJCTYON,
|
|
nm.MEMBERNAM,
|
|
nm.MEMBERPRF,
|
|
nm.MEMBERCOL as usercolor
|
|
FROM promember pm
|
|
JOIN netmember nm ON pm.MEMBERSEQ = nm.MEMBERSEQ
|
|
WHERE pm.PROJCTSEQ = #{projctSeq}
|
|
</select>
|
|
|
|
<!-- 사용자가 속한 프로젝트 조회 -->
|
|
<select id="selectMemberProjects" resultType="io.company.localhost.common.dto.MapDto">
|
|
SELECT
|
|
p.PROJCTSEQ,
|
|
p.PROJCTNAM,
|
|
c.CMNCODNAM AS projctcolor,
|
|
MAX(cm.PROJCTLVE) AS last_worked_project,
|
|
MAX(cm.COMMUTLVE) AS last_check_out_time,
|
|
MAX(cm.COMMUTCMT) AS last_check_in_time
|
|
FROM promember pm
|
|
JOIN netprojct p ON pm.PROJCTSEQ = p.PROJCTSEQ
|
|
LEFT JOIN commoncod c ON p.PROJCTCOL = c.CMNCODVAL AND c.CMNCODYNP = '1'
|
|
LEFT JOIN commuters cm
|
|
ON pm.MEMBERSEQ = cm.MEMBERSEQ
|
|
AND (pm.PROJCTSEQ = cm.PROJCTSEQ OR pm.PROJCTSEQ = cm.PROJCTLVE)
|
|
WHERE pm.MEMBERSEQ = #{memberSeq}
|
|
AND pm.PROJCTYON = '1'
|
|
AND (p.PROJCTEND IS NULL OR p.PROJCTEND >= CURDATE())
|
|
GROUP BY p.PROJCTSEQ, p.PROJCTNAM, c.CMNCODNAM
|
|
ORDER BY
|
|
MAX(cm.COMMUTLVE) DESC,
|
|
MAX(cm.COMMUTCMT) DESC,
|
|
p.PROJCTSTR DESC
|
|
</select>
|
|
<delete id="deletePromember" parameterType="int">
|
|
DELETE FROM promember WHERE PROJCTSEQ = #{projctSeq}
|
|
</delete>
|
|
|
|
</mapper>
|