<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="kr.wisestone.owl.mapper.UserMapper">
|
|
<select id="find" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.UserCondition">
|
SELECT
|
DISTINCT u.id as id,
|
u.name as name,
|
u.account as account,
|
u.profile as profile,
|
u.status as status
|
FROM
|
user u
|
INNER JOIN user_workspace uw on u.id = uw.user_id
|
INNER JOIN workspace w on w.id = uw.workspace_id
|
<if test="projectId != '' and projectId != null">
|
INNER JOIN project_role_user pru on pru.user_id = u.id
|
INNER JOIN project_role pr on pr.id = pru.project_role_id
|
INNER JOIN project p on p.id = pr.project_id
|
</if>
|
|
WHERE w.id = #{workspaceId}
|
<if test="name != '' and name != null">
|
AND u.name like CONCAT('%',#{name},'%')
|
</if>
|
<choose>
|
<when test="statuses.size != 0">
|
AND u.status IN
|
<foreach collection="statuses" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<choose>
|
<when test="excludeIds.size != 0">
|
AND u.id NOT IN
|
<foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<if test="projectId != '' and projectId != null">
|
AND p.id = #{projectId}
|
</if>
|
limit #{pageSize} offset #{page};
|
</select>
|
|
<select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.UserCondition">
|
SELECT
|
COUNT(DISTINCT u.id)
|
FROM
|
user u
|
INNER JOIN user_workspace uw on u.id = uw.user_id
|
INNER JOIN workspace w on w.id = uw.workspace_id
|
<if test="projectId != '' and projectId != null">
|
INNER JOIN project_role_user pru on pru.user_id = u.id
|
INNER JOIN project_role pr on pr.id = pru.project_role_id
|
INNER JOIN project p on p.id = pr.project_id
|
</if>
|
WHERE w.id = #{workspaceId}
|
<if test="name != '' and name != null">
|
AND u.name like CONCAT('%',#{name},'%')
|
</if>
|
<choose>
|
<when test="statuses.size != 0">
|
AND u.status IN
|
<foreach collection="statuses" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<choose>
|
<when test="excludeIds.size != 0">
|
AND u.id NOT IN
|
<foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
<if test="projectId != '' and projectId != null">
|
AND p.id = #{projectId}
|
</if>
|
</select>
|
|
<select id="findProjectMember" resultType="java.util.HashMap"
|
parameterType="kr.wisestone.owl.web.condition.UserCondition">
|
select DISTINCT (u.id) as userId, u.account as account from user u
|
inner join project_role_user pru on pru.user_id = u.id
|
inner join project_role pr on pr.id = pru.project_role_id
|
inner join project p on p.id = pr.project_id
|
where p.id = #{projectId}
|
</select>
|
|
<!-- 회원 탈퇴를 진행할 때 연관 테이블 정보를 삭제한다. -->
|
<delete id="deleteCascadeUser" parameterType="kr.wisestone.owl.web.condition.UserCondition">
|
<!-- 관심 이슈 정보 삭제 -->
|
DELETE FROM user_like_issue WHERE user_id = #{id};
|
|
<!-- 이슈 검색 조건 삭제 -->
|
DELETE FROM issue_search WHERE user_id = #{id};
|
|
<!-- 이슈 담당자 정보 삭제 -->
|
DELETE FROM issue_user WHERE user_id = #{id};
|
|
<!-- 해당 사용자의 업무 공간에 참여하는 사용자 정보 삭제 -->
|
DELETE FROM user_workspace WHERE user_id = #{id} AND manager_yn = 'N';
|
|
<!-- 탈퇴하는 사용자가 발송받을 이메일 정보 삭제 -->
|
DELETE FROM system_email WHERE send_address = #{account};
|
|
</delete>
|
|
<!-- 이메일 예약 시간 찾기 -->
|
<select id="findByReservationNotifyTime" resultType="java.util.HashMap" parameterType="java.util.HashMap">
|
select account from user
|
where reservation_notify_time between #{startTime} and #{endTime}
|
</select>
|
|
<!-- 이메일 실시간 찾기 -->
|
<select id="findByRealTimeNotifyTime" resultType="java.util.HashMap" parameterType="java.util.HashMap">
|
select account from user
|
where reservation_notify_time = "realTime"
|
</select>
|
|
<select id="findByAllWorkspace" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.UserCondition">
|
SELECT
|
DISTINCT u.id as id,
|
u.name as name,
|
u.account as account,
|
u.profile as profile,
|
u.status as status
|
FROM
|
user u
|
WHERE 1=1
|
<if test="name != '' and name != null">
|
AND u.name like CONCAT('%',#{name},'%')
|
</if>
|
AND u.status = '01'
|
<choose>
|
<when test="excludeIds.size != 0">
|
AND u.id NOT IN
|
<foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
limit #{pageSize} offset #{page};
|
</select>
|
|
<select id="countByAllWorkspace" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.UserCondition">
|
SELECT
|
COUNT(DISTINCT u.id)
|
FROM
|
user u
|
WHERE 1=1
|
<if test="name != '' and name != null">
|
AND u.name like CONCAT('%',#{name},'%')
|
</if>
|
AND u.status = '01'
|
<choose>
|
<when test="excludeIds.size != 0">
|
AND u.id NOT IN
|
<foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</when>
|
</choose>
|
</select>
|
|
<select id="findEvent" resultType="java.util.HashMap">
|
SELECT u.id, u.name as name, u.account, u.phone, u.register_id, u.register_date, COUNT(lh.user_id) AS loginCount,
|
(SELECT COUNT(i.id) FROM issue i WHERE i.register_id = u.id) AS issueCount FROM login_history lh
|
INNER JOIN user u ON u.id = lh.user_id
|
WHERE DATE(u.register_date) BETWEEN '2019-05-31' AND '2019-06-14' AND u.STATUS = '01'
|
GROUP BY u.id ORDER BY issueCount desc, loginCount DESC;
|
</select>
|
|
<select id="findByLevelId" resultType="java.lang.Long" parameterType="java.lang.Long">
|
SELECT count(u.id)
|
FROM user u
|
WHERE u.level_id = #{id}
|
</select>
|
|
<select id="findByMyLevelAndDepartment" resultType="java.util.HashMap" parameterType="java.lang.Long">
|
SELECT
|
DISTINCT u.id as id,
|
ul.level_name AS levelName,
|
GROUP_CONCAT(d.department_name) AS departmentName,
|
u.name as name,
|
u.account as account,
|
u.profile as profile,
|
u.status as STATUS
|
FROM user u
|
LEFT OUTER JOIN user_level ul ON u.level_id = ul.id
|
LEFT OUTER JOIN user_department ud ON ud.user_id = u.id
|
LEFT OUTER JOIN department d ON d.id = ud.department_id
|
WHERE u.id = #{id}
|
</select>
|
|
</mapper>
|