
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">
<mapper namespace="com.takensoft.taken_bi_manager.user.dao.MemberDAO">
<!-- 사용자 매퍼 -->
<resultMap id="memberResult" type="Member">
<result property="userId" column="user_id"/>
<result property="userPassword" column="user_password"/>
<result property="userNm" column="user_nm"/>
<result property="userEmail" column="user_email"/>
<result property="userTel" column="user_tel"/>
<result property="userPhone" column="user_phone"/>
<result property="zipCode" column="zip_code"/>
<result property="adres" column="adres"/>
<result property="adresDetail" column="adres_dtail"/>
<result property="gender" column="gender"/>
<result property="BirthDt" column="birth_dt"/>
<result property="deptNm" column="dept_nm"/>
<result property="creatDt" column="creat_dt"/>
<result property="updtDt" column="updt_dt"/>
<result property="creatId" column="creat_id"/>
<result property="updtId" column="updt_id"/>
<result property="loginFailrCnt" column="login_failr_cnt"/>
<result property="lockAt" column="lock_at"/>
<result property="useAt" column="use_at"/>
<result property="lockDt" column="lock_dt"/>
<result property="dept_code" column="dept_code"/>
<collection property="authList" column="user_id" javaType="java.util.ArrayList" ofType="String" select="getAuthList" />
</resultMap>
<!-- 로그인 아이디로 회원 조회 -->
<select id="getMemnberById" parameterType="String" resultMap="memberResult">
SELECT
ui.user_id
, user_password
, user_nm
, user_email
, user_tel
, user_phone
, zip_code
, adres
, adres_dtail
, oi.dept_nm
, oi.dept_code
, ui.creat_dt
, ui.updt_dt
, ui.creat_id
, ui.updt_id
, ui.use_at
, gender
, birth_dt
, login_failr_cnt
, lock_at
, lock_dt
, ua.author
FROM user_info ui
LEFT JOIN dept_user om on ui.user_id = om.user_id
LEFT JOIN dept_info oi on om.dept_code = oi.dept_code
LEFT JOIN user_author ua on ui.user_id = ua.user_id
WHERE ui.user_id = #{userId}
</select>
<!-- 사용자 부서 및 본인 권한 리스트 가져오기 -->
<select id="getAuthList" parameterType="String" resultType="String">
SELECT author
FROM user_author ua
WHERE ua.user_id = #{user_id}
</select>
<!-- 사용자 등록 -->
<insert id="insertMember" parameterType="Member">
INSERT INTO user_info
(
user_id,
user_password,
user_nm,
user_email,
lock_at,
creat_dt,
creat_id
) VALUES
(
#{userId},
#{userPassword},
#{userNm},
#{userEmail},
false,
CURRENT_TIMESTAMP,
#{creatId}
)
</insert>
<!-- dept_user에 데이터 삽입 -->
<insert id="insertDeptUserVO" >
INSERT INTO dept_user
(
user_id,
dept_code
)
VALUES
(
#{userId},
#{dept_code}
)
</insert>
<!-- 아이디 중복 체크 -->
<select id="checkDuplicateUserId" resultType="int">
SELECT COUNT(*)
FROM user_info
WHERE user_id = #{userId}
</select>
<!-- 이메일 중복 체크 -->
<select id="checkDuplicateEmail" resultType="int">
SELECT COUNT(*)
FROM user_info
WHERE user_email = #{userEmail}
</select>
<!-- SELECT SQL -->
<sql id="selectMember">
SELECT ui.user_id
, ui.user_password
, ui.user_nm
, ui.user_email
, ui.user_tel
, ui.user_phone
, ui.zip_code
, ui.adres
, ui.adres_dtail
, ui.creat_dt
, ui.updt_dt
, ui.creat_id
, ui.updt_id
, ui.gender
, ui.birth_dt
, ui.login_failr_cnt
, ui.lock_at
, ui.lock_dt
, ui.use_at
, oi.dept_nm
, oi.dept_code
</sql>
<!-- 사용자 목록 조회 -->
<select id="selectMemberListByAdmin" parameterType="SearchVO" resultMap="memberResult">
<include refid="selectMember" />
FROM (
SELECT user_id
FROM user_author
WHERE author = 'ROLE_ADMIN'
) AS list
LEFT JOIN user_info AS ui
ON list.user_id = ui.user_id
LEFT JOIN dept_user AS om
ON list.user_id = om.user_id
LEFT JOIN dept_info AS oi
ON om.dept_code = oi.dept_code
WHERE ui.use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<if test="item.type != null and item.type !='' and item.key != null and item.key != '' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</if>
</foreach>
ORDER BY ui.creat_dt DESC
LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
</select>
<!-- 사용자 목록 조회 ALL-->
<select id="selectMemberAllListByUser" parameterType="SearchVO" resultMap="memberResult">
SELECT
ui.user_id
, ui.user_password
, ui.user_nm
, ui.user_email
, ui.user_tel
, ui.user_phone
, ui.zip_code
, ui.adres
, ui.adres_dtail
, ui.creat_dt
, ui.updt_dt
, ui.creat_id
, ui.updt_id
, ui.gender
, ui.birth_dt
, ui.login_failr_cnt
, ui.lock_at
, ui.lock_dt
, ui.use_at
FROM user_info AS ui
WHERE ui.use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<if test="item.type != null and item.type !='' and item.key != null and item.key != '' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</if>
</foreach>
ORDER BY ui.creat_dt DESC
LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
</select>
<!-- 사용자 목록 COUNT 조회 ALL-->
<select id="selectMemberAllListByUserCount" parameterType="SearchVO" resultType="int">
SELECT COUNT(*)
FROM user_info AS ui
WHERE ui.use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<if test="item.type != null and item.type !='' and item.key != null and item.key != '' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</if>
</foreach>
</select>
<!-- 사용자 목록 COUNT 조회 -->
<select id="selectMemberListByAdminCount" parameterType="SearchVO" resultType="int">
SELECT COUNT(*)
FROM (
SELECT user_id
FROM user_author
WHERE author = 'ROLE_ADMIN'
) AS list
LEFT JOIN user_info AS ui
ON list.user_id = ui.user_id
LEFT JOIN dept_user AS om
ON list.user_id = om.user_id
LEFT JOIN dept_info AS oi
ON om.dept_code = oi.dept_code
WHERE ui.use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<if test="item.type != null and item.type !='' and item.key != null and item.key != '' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</if>
</foreach>
</select>
<select id="selectMemberListByUser" parameterType="SearchVO" resultMap="memberResult">
<include refid="selectMember" />
FROM (
SELECT user_id
FROM user_author
WHERE author != 'ROLE_ADMIN'
) AS list
LEFT JOIN user_info AS ui
ON list.user_id = ui.user_id
LEFT JOIN dept_user AS om
ON list.user_id = om.user_id
LEFT JOIN dept_info AS oi
ON om.dept_code = oi.dept_code
WHERE ui.use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.key == 'deptCode' and item.value == null">
AND om.dept_code IS NULL
</when>
<when test="item.type == 'string' and item.key != null and item.key != '' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</when>
<when test="item.key == null and item.value != null and item.value != ''">
AND (
ui.user_id LIKE CONCAT('%', #{item.value}, '%')
OR ui.user_nm LIKE CONCAT('%', #{item.value}, '%')
)
</when>
</choose>
</foreach>
ORDER BY ui.creat_dt DESC
LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
</select>
<!-- 사용자 목록 COUNT 조회 -->
<select id="selectMemberListByUserCount" parameterType="SearchVO" resultType="int">
SELECT COUNT(*)
FROM (
SELECT user_id
FROM user_author
WHERE author != 'ROLE_ADMIN'
) AS list
LEFT JOIN user_info AS ui
ON list.user_id = ui.user_id
LEFT JOIN dept_user AS om
ON list.user_id = om.user_id
LEFT JOIN dept_info AS oi
ON om.dept_code = oi.dept_code
WHERE ui.use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.key == 'deptCode' and item.value == null">
AND om.dept_code IS NULL
</when>
<when test="item.type == 'string' and item.key != null and item.key != '' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</when>
<when test="item.key == null and item.value != null and item.value != ''">
AND (
ui.user_id LIKE CONCAT('%', #{item.value}, '%')
OR ui.user_nm LIKE CONCAT('%', #{item.value}, '%')
)
</when>
</choose>
</foreach>
</select>
<!-- 멤버 추가 클릭 시 사용자 조회 -->
<select id="addMemberuserList" parameterType="SearchVO" resultMap="memberResult">
SELECT ui.user_id, ui.user_nm, ui.creat_dt, MAX(om.dept_code) AS dept_code -- 필요한 열만 선택하고 집계함수 사용
FROM user_info ui
LEFT JOIN dept_user om ON ui.user_id = om.user_id
WHERE ui.use_at = true
AND dept_code is null
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.key == '' and item.type != null and item.type != '' and item.value != null and item.value != ''">
AND (ui.user_nm LIKE CONCAT('%', #{item.value}, '%') OR ui.user_id LIKE CONCAT('%', #{item.value}, '%'))
</when>
<when test="item.key == 'user_nm' and item.type != null and item.type != '' and item.value != null and item.value != ''">
AND ui.user_nm LIKE CONCAT('%', #{item.value}, '%')
</when>
<when test="item.key == 'user_id' and item.type != null and item.type != '' and item.value != null and item.value != ''">
AND ui.user_id LIKE CONCAT('%', #{item.value}, '%')
</when>
</choose>
</foreach>
GROUP BY ui.user_id, ui.user_nm, ui.creat_dt -- 집계하지 않은 모든 열을 GROUP BY에 추가
ORDER BY ui.creat_dt DESC
LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
</select>
<!-- 멤버 추가 클릭 시 사용자 COUNT 조회 -->
<select id="addMemberuserCount" parameterType="SearchVO" resultType="int">
SELECT COUNT(*)
FROM user_info ui
LEFT JOIN dept_user om ON ui.user_id = om.user_id
WHERE ui.use_at = true
AND dept_code is null
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.key == 'dept_code' and item.type != null and item.type != '' and item.value != null and item.value != ''">
AND (om.dept_code IS NULL OR om.dept_code != #{item.value})
</when>
<when test="item.key == 'user_nm' and item.type != null and item.type != '' and item.value != null and item.value != ''">
AND ui.user_nm LIKE CONCAT('%', #{item.value}, '%')
</when>
<when test="item.key == 'user_id' and item.type != null and item.type != '' and item.value != null and item.value != ''">
AND ui.user_id LIKE CONCAT('%', #{item.value}, '%')
</when>
</choose>
</foreach>
</select>
<!-- 멤버 추가 -->
<insert id="addMember" parameterType="map">
INSERT INTO dept_user
(
dept_code,
user_id
)
VALUES
(
#{dept_code},
#{userId}
)
</insert>
<!-- 권한 조회 -->
<select id="getAuthorInfo" resultType="AuthorVO">
SELECT author
,author_dc
FROM author_info
</select>
<!-- user_author에 데이터 삽입 -->
<insert id="insertUserAuthor">
INSERT INTO user_author
(
user_id,
author
)
VALUES
(
#{userId},
#{author}
)
</insert>
<!-- 사용자 수정 -->
<update id="updateMember" parameterType="Member">
UPDATE user_info
SET user_nm = #{userNm}
, user_email = #{userEmail}
, updt_dt = CURRENT_TIMESTAMP
, updt_id = #{updtId}
WHERE user_id = #{userId}
</update>
<!-- 사용자 비밀번호 변경 -->
<update id="updateMemberPw" parameterType="Member">
UPDATE user_info
SET user_password = #{userPassword}
, updt_dt = CURRENT_TIMESTAMP
, updt_id = #{updtId}
WHERE user_id = #{userId}
</update>
<!-- 부서가 있는 사용자 COUNT 조회 -->
<select id="haveOrgnztUserCount" parameterType="String">
SELECT COUNT(*)
FROM dept_user
WHERE user_id = #{userId}
</select>
<!-- OrgnztMember 사용자 수정 -->
<update id="updateOrgnztMember" parameterType="Member">
UPDATE dept_user
SET dept_code = #{dept_code}
WHERE user_id = #{userId}
</update>
<!-- OrgnztMember 사용자 삭제 -->
<delete id="deleteOrgnztMember" parameterType="String">
DELETE FROM dept_user
WHERE user_id = #{userid}
</delete>
<!-- 사용자 권한 개수 조회 -->
<select id="getUserAuthorCount" resultType="int">
SELECT COUNT(*)
FROM user_author
WHERE user_id = #{userId}
</select>
<!-- UserAuthor 사용자 수정 -->
<update id="updateUserAuthor" parameterType="Member">
UPDATE user_author
SET author = #{author}
WHERE user_id = #{userId}
</update>
<!-- UserAuthor 사용자 삭제 -->
<update id="deleteUserAuthor" parameterType="Member">
DELETE FROM user_author
WHERE user_id = #{userId}
</update>
<!-- userId 조회-->
<select id="selectDeptCode" parameterType="String" resultType="String">
SELECT dept_code
FROM dept_user
WHERE user_id = #{userId}
</select>
<!-- 사용자 삭제-->
<delete id="deleteMember" parameterType="Member">
UPDATE user_info
SET use_at = 'false'
WHERE user_id = #{userId}
</delete>
<!-- 사용자 히스토리 등록 -->
<insert id="insertHistory" parameterType="Member">
INSERT INTO user_history
(
user_id
, creat_dt
, type
, user_nm
, user_email
, dept_code
)
VALUES
(
#{userId}
, CURRENT_TIMESTAMP
, #{historyType}
, #{userNm}
, #{userEmail}
, #{dept_code}
)
</insert>
<!-- 부서가 없는 사용자 목록 조회 -->
<select id="selectNoDeptUserList" parameterType="SearchVO" resultMap="memberResult">
SELECT ui.*
FROM user_info ui
WHERE ui.use_at = true
AND NOT EXISTS (
SELECT 1
FROM dept_user om
WHERE ui.user_id = om.user_id
)
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.type != null and item.type !='' and item.value != null and item.value !='' and item.type == ''">
AND ${item.key} = #{item.value}
</when>
<when test="item.type != null and item.type !='' and item.value != null and item.value !=''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</when>
</choose>
</foreach>
ORDER BY ui.creat_dt DESC
LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
</select>
<!-- 부서가 없는 사용자 COUNT 조회 -->
<select id="selectNoDeptUserCount" parameterType="SearchVO" resultType="int">
SELECT COUNT(*)
FROM user_info ui
WHERE ui.use_at = true
AND NOT EXISTS (
SELECT 1
FROM dept_user om
WHERE ui.user_id = om.user_id
)
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.type != null and item.type !='' and item.value != null and item.value !='' and item.type == ''">
AND ${item.key} = #{item.value}
</when>
<when test="item.type != null and item.type !='' and item.value != null and item.value !=''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</when>
</choose>
</foreach>
</select>
<!-- 아이디 찾기 -->
<select id="findUserId" parameterType="Member" resultMap="memberResult">
<include refid="selectMember" />
FROM user_info AS ui
LEFT JOIN dept_user AS om
ON ui.user_id = om.user_id
LEFT JOIN dept_info AS oi
ON om.dept_code = oi.dept_code
LEFT JOIN user_author AS ua
ON ui.user_id = ua.user_id
WHERE ui.user_nm = #{userNm}
AND ui.user_email = #{userEmail}
</select>
<!-- 비밀번호 찾기 -->
<select id="findUserPwd" parameterType="Member" resultMap="memberResult">
<include refid="selectMember" />
FROM user_info AS ui
LEFT JOIN dept_user AS om
ON ui.user_id = om.user_id
LEFT JOIN dept_info AS oi
ON om.dept_code = oi.dept_code
LEFT JOIN user_author AS ua
ON ui.user_id = ua.user_id
WHERE ui.user_id = #{userId}
AND ui.user_nm = #{userNm}
AND ui.user_email = #{userEmail}
</select>
<!-- 사용자 잠김여부 변경 -->
<update id="updateUserLockAt" parameterType="String">
UPDATE user_info
SET lock_at = false
WHERE user_id = #{userId}
</update>
</mapper>