
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.member.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 orgnzt_member om on ui.user_id = om.user_id
LEFT JOIN orgnzt_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}
UNION
SELECT author
FROM orgnzt_member om
LEFT JOIN orgnzt_author oa on om.dept_code = oa.dept_code
WHERE om.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>
<!-- orgnzt_member에 데이터 삽입 -->
<insert id="insertOrgnztMemberVO" >
INSERT INTO orgnzt_member
(
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 id="selectMembers" 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
, orgnzt_info.dept_nm
, orgnzt_info.dept_code
, author_info.author
FROM user_info AS ui
LEFT JOIN orgnzt_member
ON ui.user_id = orgnzt_member.user_id
LEFT JOIN orgnzt_info
ON orgnzt_member.dept_code = orgnzt_info.dept_code
LEFT JOIN user_author
ON ui.user_id = user_author.user_id
LEFT JOIN author_info
ON user_author.author = author_info.author
WHERE ui.use_at = true
<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="selectMembersCount" parameterType="SearchVO" resultType="int">
SELECT COUNT(*)
FROM user_info ui
LEFT JOIN orgnzt_member ON ui.user_id = orgnzt_member.user_id
LEFT JOIN orgnzt_info ON orgnzt_member.dept_code = orgnzt_info.dept_code
LEFT JOIN user_author ON ui.user_id = user_author.user_id
LEFT JOIN author_info ON user_author.author = author_info.author
WHERE ui.use_at = true
<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="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 orgnzt_member 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 orgnzt_member 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 orgnzt_member
(
dept_code,
user_id
)
VALUES
(
#{dept_code},
#{userId}
)
</insert>
<!-- 멤버 삭제 -->
<delete id="delMember" parameterType="map">
DELETE FROM orgnzt_member
WHERE user_id = #{userId} AND dept_code = #{dept_code}
</delete>
<!-- 권한 조회 -->
<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_password = #{userPassword}
, user_nm = #{userNm}
, user_email = #{userEmail}
, updt_dt = CURRENT_TIMESTAMP
, updt_id = #{updtId}
, lock_at = #{lockAt}
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 orgnzt_member
WHERE user_id = #{userId}
</select>
<!-- OrgnztMember 사용자 수정 -->
<update id="updateOrgnztMember" parameterType="Member">
UPDATE orgnzt_member
SET dept_code = #{dept_code}
WHERE user_id = #{userId}
</update>
<!-- OrgnztMember 사용자 삭제 -->
<delete id="deleteOrgnztMember" parameterType="String">
DELETE FROM orgnzt_member
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 orgnzt_member
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 orgnzt_member 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 orgnzt_member 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>
<!-- 회원정보 -->
<sql id="selectMember">
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 AS ui
</sql>
<!-- 아이디 찾기 -->
<select id="findUserId" parameterType="Member" resultMap="memberResult">
<include refid="selectMember" />
LEFT JOIN orgnzt_member AS om
ON ui.user_id = om.user_id
LEFT JOIN orgnzt_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" />
LEFT JOIN orgnzt_member AS om
ON ui.user_id = om.user_id
LEFT JOIN orgnzt_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>
</mapper>