<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="kr.co.i2talk.sns">

	<resultMap id="snsUserVO"     type="i2c.biz.admin.srvc.userMng.vo.SnsUserVO"     />    
    <parameterMap id="snsUserVO"  type="i2c.biz.admin.srvc.userMng.vo.SnsUserVO"     />

<!-- 1. 추가  쿼리 메소드 작성 -->
	<select id="kr.co.i2talk.sns.listSnsUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsUser */
SELECT
	A.*, (@ROWNUM  := @ROWNUM + 1) RN
FROM
(
	SELECT		
		usr_id, usr_nm, email, login_id, /*login_passwd,*/
		self_intro,
		photo_img,
		photo_img_mid,
		photo_img_min,
		bg_photo_img,
		bg_photo_img_mid,
		bg_photo_img_min,
		CONCAT('user',usr_id,photo_img) as photo_img_path,
		CONCAT('user',usr_id,photo_img_mid) as photo_img_mid_path,
		CONCAT('user',usr_id,photo_img_min) as photo_img_min_path,
		CONCAT('user_bg',usr_id,bg_photo_img) as bg_photo_img_path,
		CONCAT('user_bg',usr_id,bg_photo_img_mid) as bg_photo_img_mid_path,
		CONCAT('user_bg',usr_id,bg_photo_img_min) as bg_photo_img_min_path,
		use_stop_yn, use_stop_dttm, sys_admin_yn, outs_usr_yn, tel_num,
		pos_cd, pos_nm, FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
		phn_num, fax_num, birth_dt, cover_img, ext_user_id,
		crt_usr_id, crt_dttm, mod_usr_id, mod_dttm,
		dept_id,
		lst_login_dttm,				
		(
			select max(conn_dttm) from sns_login_history it where it.usr_id = a.usr_id
		) last_login_dttm,
		(
			select max(lst_connect_dttm) from sns_user_client it where it.usr_id = a.usr_id
		) lst_connect_dttm
		<if test="@i2c.cmm.util.StringUtil@isEmpty(grp_id) == false">
		,  (select   case
				when join_dttm is null then
					'NOT_IN'
				else
					case
						when aprv_dttm is null then
							'ING'
						else
							case
								when leave_dttm is null then
									'IN'
								else
									'LEFT' -- 탈퇴했던
							end
					end
			end
		FROM
		SNS_USER t1
		left outer join sns_users_by_group t2 on (t1.usr_id = t2.usr_id  and t2.grp_id = #{grp_id})where t1.usr_id = a.usr_id) member_status
		</if>
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(mntrm_id)">
		, (SELECT KH.USER_IDX FROM KNWLDG_HOLDER KH WHERE KH.USR_ID = A.USR_ID AND KH.MNTRM_ID = #{mntrm_id} AND ROWNUM = 1) USER_IDX
		</if>
        , A.MASKING_YN /* 20171226 마스킹 여부 VALUE SET */ 
	FROM
		sns_user a , (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
	where 1=1	
	AND (A.SYS_ADMIN_YN != 'Y' OR A.SYS_ADMIN_YN IS NULL)
	<if test="@i2c.cmm.util.StringUtil@isEmpty(search_type) == false">	
		<if test="@i2c.cmm.util.StringUtil@isEmpty(search_word) == false">	
			<if test="search_type == 'usr_nm'">
				and a.usr_nm like '%' || #{search_word} || '%'
			</if>
			<if test="search_type == 'login_id'">
				and a.login_id like '%' || #{search_word} || '%'
			</if>
			<if test="search_type == 'dept_nm'">
				and FN_GET_USR_DEPT_NM(a.USR_ID) like '%' || #{search_word} || '%'
			</if>	
			<if test="search_type == 'all'">
				and (FN_GET_USR_DEPT_NM(a.USR_ID) like '%' || #{search_word} || '%' OR a.usr_nm like '%' || #{search_word} || '%') 
			</if>				
		</if>		
	</if>
	<if test="@i2c.cmm.util.StringUtil@isEmpty(search_type) == true">
		<if test="@i2c.cmm.util.StringUtil@isEmpty(usr_nm) == false">
			and a.usr_nm like '%' || #{usr_nm} || '%'
		</if>		
	</if>
	<!-- use_stop_yn 가 없으면 전체 사용자, N 이면 사용정지가 아닌 사용자, Y 이면 사용정지인 사용자 -->
	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(use_stop_yn) == true">
		<if test='use_stop_yn == "N" or use_stop_yn == "Y"'>
			and a.use_stop_yn = #{use_stop_yn}
		</if>
	</if>	
	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(mntrm_id)">
	    <if test='init_page == "Y"'>
	    AND EXISTS (SELECT KH.USER_IDX FROM KNWLDG_HOLDER KH WHERE KH.USR_ID = A.USR_ID AND KH.MNTRM_ID = #{mntrm_id})
	    </if>
	</if>
	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(auth_code) == true">
		AND A.AUTH_CODE = #{auth_code}
	</if>
	ORDER BY
		usr_nm asc
) A
LIMIT #{page_index} , #{page_limit}				 
	</select>

	<select id="kr.co.i2talk.sns.viewSnsUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUser */
SELECT
	usr_id, usr_nm, IFNULL(email,'') email , login_id, login_passwd,
	IFNULL(self_intro,'') self_intro,
	photo_img,	
	photo_img_mid,
	photo_img_min,
	bg_photo_img,
	bg_photo_img_mid,
	bg_photo_img_min,
	CONCAT('user',usr_id,photo_img) as photo_img_path,
	CONCAT('user',usr_id,photo_img_mid) as photo_img_mid_path,
	CONCAT('user',usr_id,photo_img_min) as photo_img_min_path,
	CONCAT('user_bg',usr_id,bg_photo_img) as bg_photo_img_path,
	CONCAT('user_bg',usr_id,bg_photo_img_mid) as bg_photo_img_mid_path,
	CONCAT('user_bg',usr_id,bg_photo_img_min) as bg_photo_img_min_path,
	CONCAT(usr_id) usr_photo,
	CONCAT(usr_id) crt_usr_photo,
	use_stop_yn, use_stop_dttm, sys_admin_yn, outs_usr_yn, IFNULL(tel_num,'') tel_num,
	pos_cd, pos_nm, FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
	IFNULL(phn_num,'') phn_num , fax_num, birth_dt, cover_img, ext_user_id,
	crt_usr_id, crt_dttm, mod_usr_id, mod_dttm,
	dept_id,
	#{login_passwd_yn} login_passwd_yn,
	lst_login_dttm,	
	approval_dttm,
	SUBSTR(IFNULL(APPROVAL_DTTM,'0000'),1,4)||'년 ' || SUBSTR(IFNULL(APPROVAL_DTTM,'0000'),5,2)||'월 ' ||SUBSTR(IFNULL(APPROVAL_DTTM,'0000'),7,2)||'일 ' || SUBSTR(IFNULL(APPROVAL_DTTM,'00'),9,2) || ':' || SUBSTR(IFNULL(APPROVAL_DTTM,'00'),11,2) FULL_APPROVAL_DTTM,
	(
		case
			when (select count(*) from sns_follow it where it.tar_usr_id = a.usr_id and it.fllw_applr_id = #{fllw_applr_id}) > 0 then
				'Y'
			else
				'N'
		end
	) follow_yn,
	(
		case
		   when (select count(usr_id) cnt from sns_user_client it where it.usr_id = a.usr_id and it.CONNECT_STATE_CD = 'ON') = 0 then
                'N'
           else 
                 'Y'
         end
	) connect_yn,
	(
		select max(lst_connect_dttm) from sns_user_client it where it.usr_id = a.usr_id
	) lst_connect_dttm
	, (select b.access_token from sns_access_token b where b.usr_id = a.usr_id and expr_dttm is null and b.client_id != '2EDAA68DDF' LIMIT 1) access_token
	, A.MASKING_YN
	, A.API_PASSWD
FROM
	sns_user a
WHERE 1=1
	  <if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id) == false">
	  	AND usr_id = #{usr_id}
	  </if>
	  <if test="@i2c.cmm.util.StringUtil@isEmpty(mber_no) == false">
	  	AND mber_no = #{mber_no}
	  </if>
	  <if test="@i2c.cmm.util.StringUtil@isEmpty(org_sid) == false">
	  	AND org_sid = #{org_sid}
	  </if>
	</select>

	<select id="kr.co.i2talk.sns.viewSnsUserByProfile"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUserByProfile */
SELECT
	usr_id, usr_nm, IFNULL(email,'') email, login_id,
	IFNULL(self_intro,' ') self_intro,
	photo_img,
	photo_img_mid,
	photo_img_min,
	bg_photo_img,
	bg_photo_img_mid,
	bg_photo_img_min,
	CONCAT('user',usr_id,photo_img) as photo_img_path,
	CONCAT('user',usr_id,photo_img_mid) as photo_img_mid_path,
	CONCAT('user',usr_id,photo_img_min) as photo_img_min_path,
	CONCAT('user_bg',usr_id,bg_photo_img) as bg_photo_img_path,
	CONCAT('user_bg',usr_id,bg_photo_img_mid) as bg_photo_img_mid_path,
	CONCAT('user_bg',usr_id,bg_photo_img_min) as bg_photo_img_min_path,
	use_stop_yn, use_stop_dttm, sys_admin_yn, outs_usr_yn, IFNULL(tel_num,'') tel_num ,
	pos_cd, pos_nm, FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
	IFNULL(phn_num,'') phn_num, fax_num, birth_dt, cover_img, ext_user_id,
	crt_usr_id, crt_dttm, mod_usr_id, mod_dttm,
	dept_id,
	CASE WHEN lst_login_dttm IS NULL THEN '' ELSE SUBSTR(lst_login_dttm, 5,2) || '-' || SUBSTR(lst_login_dttm, 7,2) || ' ' || SUBSTR(lst_login_dttm, 9,2) || ':' || SUBSTR(lst_login_dttm, 11,2) END lst_login_dttm,
	(
		case
			when (select count(*) from sns_follow it where it.tar_usr_id = a.usr_id and it.fllw_applr_id = #{login_usr_id}) > 0 then
				'Y'
			else
				'N'
		end
	) follow_yn,
	(select count(*) from sns_post z where z.crt_usr_id = a.usr_id and tar_obj_tp IN ('USER','GROUP') and post_tp IN ('FEED','POLL')) as write_post_cnt ,
	(select count(*) from sns_post x
	where x.up_post_id IN (select z.post_id from sns_post z where z.crt_usr_id = a.usr_id and tar_obj_tp IN ('USER','GROUP') and post_tp IN ('FEED','POLL'))
	) as recv_post_cnt ,
	(select count(*) from sns_like x
		where x.post_id IN (select z.post_id from sns_post z where z.crt_usr_id = a.usr_id and tar_obj_tp IN ('USER','GROUP') and post_tp IN ('FEED','POLL'))
	) as recv_like_cnt,
	push_at,
	push_advrts_at,
	prprp_at,
	 ( select count(sb.bmk_id)
	    from sns_bookmark sb 
	       , chnnl_board cb
	       , sns_post sp
	  where sb.crt_usr_id = a.usr_id
	    and sb.post_id = sp.post_id
	    and cb.chnnl_board_id = sp.tar_obj_id) bookmark_cnt
FROM
	sns_user a
WHERE
	usr_id = #{usr_id}
	</select>

	<insert id="kr.co.i2talk.sns.insertSnsUser"
		parameterType="Map">
/* kr.co.i2talk.sns.insertSnsUser */

INSERT INTO SNS_USER
	(
	usr_id, usr_nm, email, login_id, login_passwd, 
	self_intro, photo_img, use_stop_yn, use_stop_dttm, photo_img_mid, 
	photo_img_min, sys_admin_yn, outs_usr_yn, pos_cd, tel_num, 
	phn_num, fax_num, birth_dt, cover_img, ext_user_id, mng_usr_id, 
	crt_usr_id, crt_dttm, mod_usr_id, mod_dttm, dept_id, 
	dept_nm, pos_nm, mng_usr_nm, mng_usr_pos_nm, passwd_mod_dttm, 
	prev_passwd, temp_passwd_yn
	)
VALUES 
	(
	#{usr_id}, #{usr_nm}, #{email}, #{login_id}, #{login_passwd}, 
	#{self_intro}, #{photo_img}, IFNULL(#{use_stop_yn}, 'N'), #{use_stop_dttm}, #{photo_img_mid}, 
	#{photo_img_min}, #{sys_admin_yn}, #{outs_usr_yn}, #{pos_cd}, #{tel_num}, 
	#{phn_num}, #{fax_num}, #{birth_dt}, #{cover_img}, #{ext_user_id}, #{mng_usr_id}, 
	#{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm}, #{dept_id}, 
	#{dept_nm}, #{pos_nm}, #{mng_usr_nm}, #{mng_usr_pos_nm}, #{passwd_mod_dttm}, 
	#{prev_passwd}, #{temp_passwd_yn}
	)
	</insert>

	<update id="kr.co.i2talk.sns.updateSnsUser"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsUser */
UPDATE sns_user SET
	usr_nm = #{usr_nm},
	email = #{email},
	login_id = #{login_id},
	login_passwd = #{login_passwd},
	dept_nm = #{dept_nm},
	self_intro = #{self_intro},
	photo_img = #{photo_img},
	use_stop_yn = #{use_stop_yn},
	use_stop_dttm = #{use_stop_dttm},
	photo_img_mid = #{photo_img_mid},
	photo_img_min = #{photo_img_min},
	sys_admin_yn = #{sys_admin_yn},
	outs_usr_yn = #{outs_usr_yn},
/*
	pos_cd = #{pos_cd},
	pos_nm = #{pos_nm},
	dept_nm = #{dept_nm},
	mng_usr_id = #{mng_usr_id},
	mng_usr_nm = #{mng_usr_nm},
	mng_usr_pos_nm = #{mng_usr_pos_nm},
*/
	tel_num = #{tel_num},
	phn_num = #{phn_num},
	fax_num = #{fax_num},
	birth_dt = #{birth_dt},
	cover_img = #{cover_img},
	ext_user_id = #{ext_user_id},
	crt_usr_id = #{crt_usr_id},
	crt_dttm = #{crt_dttm},
	mod_usr_id = #{mod_usr_id},
	mod_dttm = #{mod_dttm},
	dept_id = #{dept_id}
WHERE
	usr_id = #{usr_id}
	</update>

	<delete id="kr.co.i2talk.sns.deleteSnsUser"
		parameterType="Map">
/* kr.co.i2talk.sns.deleteSnsUser */
DELETE FROM sns_user WHERE
	usr_id = #{usr_id}
	</delete>
<!-- 1. 추가  쿼리 메소드 작성 끝 -->


<!-- 2. 추가  쿼리 메소드 작성 -->
	<select id="kr.co.i2talk.sns.infoSnsUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.infoSnsUser */
SELECT
	usr_id, FN_GET_USR_PHOTO(USR_ID) usr_photo, usr_nm,
	usr_id crt_usr_id, FN_GET_USR_PHOTO(usr_id) crt_usr_photo, usr_nm crt_usr_nm,
	email, login_id, login_passwd,
	self_intro, photo_img, use_stop_yn, use_stop_dttm, photo_img_mid,
	photo_img_min, sys_admin_yn, outs_usr_yn, tel_num,
	pos_cd, pos_nm, FN_GET_USR_DEPT_NM(USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
	phn_num, fax_num, birth_dt, cover_img, ext_user_id
FROM
	sns_user
WHERE
	usr_id = #{usr_id}
	</select>

	<select id="kr.co.i2talk.sns.viewSnsUserByInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUserByInfo */
SELECT
	usr_id, usr_nm, email, login_id,
	self_intro,
	CONCAT('user',usr_id,photo_img) as photo_img,
	CONCAT('user',usr_id,photo_img_mid) as photo_img_mid,
	CONCAT('user',usr_id,photo_img_min) as photo_img_min,
	photo_img, use_stop_yn, use_stop_dttm, photo_img_mid,
/*photo_img_min,*/ sys_admin_yn, outs_usr_yn, tel_num,
	pos_cd, pos_nm, FN_GET_USR_DEPT_NM(USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
	phn_num, fax_num, birth_dt, cover_img, ext_user_id,
	crt_usr_id, crt_dttm, mod_usr_id, mod_dttm
FROM
	sns_user
WHERE
	usr_id = #{tar_usr_id}
	</select>

	<select id="kr.co.i2talk.sns.viewSnsUserByFollow"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUserByFollow */
SELECT
	a.usr_id, a.usr_nm,
	CONCAT('user',usr_id,photo_img_min) as photo_img_min
FROM sns_user a,
	sns_follow b
WHERE a.usr_id = b.tar_usr_id
AND b.fllw_applr_id = #{tar_usr_id}
AND rownum &lt; 10
ORDER BY a.usr_nm ASC
	</select>

	<select id="kr.co.i2talk.sns.viewSnsUserByFollowCount"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUserByFollow */
SELECT
	count(a.usr_id) as my_fllw_count
FROM sns_user a,
	sns_follow b
WHERE a.usr_id = b.tar_usr_id
AND b.fllw_applr_id = #{tar_usr_id}
	</select>
	
	<select id="kr.co.i2talk.sns.viewSnsUsers"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUsers */
SELECT
	usr_id, usr_nm, email, login_id, login_passwd,
	self_intro,
	photo_img,
	photo_img_mid,
	photo_img_min,
	CONCAT('user',usr_id,photo_img) as photo_img_path,
	CONCAT('user',usr_id,photo_img_mid) as photo_img_mid_path,
	CONCAT('user',usr_id,photo_img_min) as photo_img_min_path,
	use_stop_yn, use_stop_dttm, sys_admin_yn, outs_usr_yn, tel_num,
	pos_cd, pos_nm, FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
	phn_num, fax_num, birth_dt, cover_img, ext_user_id,
	crt_usr_id, crt_dttm, mod_usr_id, mod_dttm,
	dept_id,
	(
		case
			when (select count(*) from sns_follow it where it.tar_usr_id = a.usr_id and it.fllw_applr_id = a.usr_id) > 0 then
				'Y'
			else
				'N'
		end
	) follow_yn,
	(
		decode((select count(usr_id) cnt from sns_user_client it where it.usr_id = a.usr_id and it.CONNECT_STATE_CD = 'ON'), 0, 'N', 'Y')
	) connect_yn,
	(
		select max(lst_connect_dttm) from sns_user_client it where it.usr_id = a.usr_id
	) lst_connect_dttm
	, (select b.access_token from sns_access_token b where b.usr_id = a.usr_id and expr_dttm is null and b.client_id != '2EDAA68DDF' and rownum = 1) access_token
	, A.MASKING_YN /* 20171226 마스킹 여부 VALUE SET */ 
FROM
	sns_user a
WHERE
	usr_id in 
	<foreach item="arr_usr_id" index="index" collection="array"
		open="(" separator="," close=")">
		#{arr_usr_id}
	</foreach>
ORDER BY USR_NM
	</select>
			
	<select id="kr.co.i2talk.sns.viewSnsWorkOperUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.viewSnsWorkOperUser */
	SELECT
		usr_id,
		usr_nm,
		pos_nm,
		FN_GET_USR_DEPT_NM(USR_ID) dept_nm
	FROM sns_user		
	WHERE 1=1	
	order by usr_nm, dept_nm desc
	</select>
	
	<select id="kr.co.i2talk.sns.listSnsAssUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listSnsAssUser */
	 select 
		  b.ord,		 
		  a.pos_nm, 	     
		  b.scrty_id scrty_usr_id,
		  a.usr_nm scrty_usr_nm,  
		  FN_GET_USR_ORIGIN_PHOTO(b.scrty_id) scrty_usr_photo,	
		  b.tar_usr_id,		  
		  FN_GET_USR_NM(b.tar_usr_id) tar_usr_nm,
		  FN_GET_USR_ORIGIN_PHOTO(b.tar_usr_id) tar_usr_photo,	
		  b.crt_usr_id
	 from sns_user a, 
	 	  sns_secretary b
	 where a.usr_id = b.scrty_id
	 and b.use_yn = 'Y'	
	 order by b.ord asc
	</select>
	
	<select id="kr.co.i2talk.sns.viewSnsAssUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.viewSnsAssUser */
	 select 
		  b.ord,		 
		  a.pos_nm, 	     
		  b.scrty_id scrty_usr_id,
		  a.usr_nm scrty_usr_nm,  
		  FN_GET_USR_ORIGIN_PHOTO(b.scrty_id) scrty_usr_photo,	
		  b.tar_usr_id,		  
		  FN_GET_USR_NM(b.tar_usr_id) tar_usr_nm,
		  FN_GET_USR_ORIGIN_PHOTO(b.tar_usr_id) tar_usr_photo,	
		  b.crt_usr_id
	 from sns_user a, 
	 	  sns_secretary b
	 where a.usr_id = b.scrty_id
	 and b.use_yn = 'Y'
	 <if test="@i2c.cmm.util.StringUtil@isEmpty(ord) == false">
		and b.ord = #{ord}
	 </if>
	</select>
	
	<insert id="kr.co.i2talk.sns.saveSnsAssUser"
		parameterType="Map">
	/* kr.co.i2talk.sns.saveSnsAssUser */
INSERT INTO sns_secretary
	(ord, scrty_id, tar_usr_id, crt_usr_id )
VALUES 
	((select IFNULL(max(ord),0)+1 from sns_secretary) , #{scrty_id}, #{tar_usr_id}, #{crt_usr_id})
	</insert>

	<update id="kr.co.i2talk.sns.updateSnsAssUser"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsAssUser */
UPDATE sns_secretary SET
	<if test="@i2c.cmm.util.StringUtil@isEmpty(gubun) == true">
	scrty_id = #{scrty_id},
	tar_usr_id = #{tar_usr_id}
	</if>	
	<if test="@i2c.cmm.util.StringUtil@isEmpty(gubun) == false">
	use_yn = 'N'
	</if>		
WHERE
	ord = #{ord}
	</update>
	
	<select id="kr.co.i2talk.sns.listSnsOfficeUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsOfficeUser */
	SELECT 
		ROW_NUMBER() OVER(ORDER BY POS_CD,usr_nm) num,
		USR_ID,
		USR_NM,
		POS_CD,
		POS_NM 
	FROM 
		SNS_USER 
	WHERE 
		POS_CD IN ('100','110','120') 
		AND USE_STOP_YN = 'N'	 
	</select>

<!-- 2. 추가  쿼리 메소드 작성 끝 -->

	<update id="kr.co.i2talk.sns.updateSnsUserProfile"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsUserProfile */
UPDATE sns_user SET
	mod_usr_id = #{usr_id}
	, mod_dttm = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
	
	<if test='new_login_passwd != null'>
	, temp_passwd_yn = 'N'
	, login_passwd = #{new_login_passwd}
	, prev_passwd = #{prev_passwd}
	, passwd_mod_dttm = #{passwd_mod_dttm}
	</if>	
	, self_intro = #{self_intro}	
	<if test='photo_img != null'>
	, photo_img = #{photo_img}
	, photo_img_mid = #{photo_img_mid}
	, photo_img_min = #{photo_img_min}
	</if>
	<if test='temp_passwd_yn != null'>
	, temp_passwd_yn = #{temp_passwd_yn}
	</if>
WHERE
	usr_id = #{usr_id}
	</update>

	<update id="kr.co.i2talk.sns.updateProfilePhoto"
		parameterType="Map">
/* kr.co.i2talk.sns.updateProfilePhoto */
UPDATE sns_user SET
	<choose>
		<when test="area =='bg'">
			bg_photo_img = #{photo_img},
			bg_photo_img_mid = #{photo_img_mid},
			bg_photo_img_min = #{photo_img_min}
		</when>
		<otherwise>
			photo_img = #{photo_img},
			photo_img_mid = #{photo_img_mid},
			photo_img_min = #{photo_img_min}
		</otherwise>
	</choose>
WHERE
	usr_id = #{usr_id}
	</update>

	<select id="kr.co.i2talk.sns.listUserGroup"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listUserGroup */
SELECT 
	  COUNT(IV.GRP_ID) OVER() TOTAL_CNT
	, IV.*
FROM
(
SELECT	
	<if test='@i2c.cmm.util.StringUtil@isEmpty(flag) == true'>
	row_number() over(order by a.aprv_dttm desc) RN ,
	</if>
	<if test='@i2c.cmm.util.StringUtil@isEmpty(flag) == false'>
	ROW_NUMBER() OVER(ORDER BY DECODE(favo_yn, 'Y', 1, '', 2, 'N',2)asc, grp_nm asc) RN,
	</if>
	users_by_group_id,
	a.grp_id,
	b.grp_nm,
	b.grp_intro,
	b.grp_tp,
	b.GRP_IMG,
	FN_GET_FILE_NM('group', a.grp_id, b.grp_img) grp_img_path,
	grp_img_mid,
	FN_GET_FILE_NM('group', a.grp_id, b.grp_img_mid) grp_img_mid_path,
	grp_img_min,
	FN_GET_FILE_NM('group', a.grp_id, b.grp_img_min) grp_img_min_path,
	b.GRP_BG_IMG,
	FN_GET_FILE_NM('group_bg', a.grp_id, b.grp_bg_img) grp_bg_img_path,
	grp_bg_img_mid,
	FN_GET_FILE_NM('group_bg', a.grp_id, b.grp_bg_img_mid) grp_bg_img_mid_path,
	usr_id,
	join_yn, join_dttm,
	leave_dttm,
	aprv_dttm,
	admin_yn,
	favo_yn,
	b.use_stop_yn,
	b.use_stop_dttm,
	a.crt_usr_id,
	a.crt_dttm,
	a.mod_usr_id,
	a.mod_dttm,	
	(
		select count(*) from sns_users_by_group it where it.grp_id = a.grp_id and it.leave_dttm is null
	) member_cnt,
	(
		select count(*) from sns_post z where z.tar_grp_id = a.grp_id and z.post_tp IN ('FEED','POLL') and z.tar_obj_tp = 'GROUP' and z.up_post_id IS NULL
	) post_cnt,
	(
		case when (select count(*) from sns_post it where it.tar_grp_id = b.grp_id and it.crt_dttm like DATE_FORMAT(SYSDATE(),'%Y%m%d') || '%') > 0 then
			'Y'
		else
			'N'
		end
	) new_post_yn,
	(
		case
			when join_dttm is null then
				'NOT_IN'
			else
				case
					when aprv_dttm is null then
						'ING'
					else
						case
							when leave_dttm is null then
								'IN'
							else
								'LEFT' -- 탈퇴했던
						end
				end
		end
	) join_status
	, B.OPEN_YN
	, (SELECT FN_GET_USR_NM(C.USR_ID) FROM SNS_USERS_BY_GROUP C WHERE C.GRP_ID = B.GRP_ID AND C.ADMIN_YN = 'Y') ADMIN_NM
FROM
	sns_users_by_group a,
	sns_group b
where 1=1
	and a.grp_id = b.grp_id
	and a.usr_id = #{usr_id}
	and a.aprv_dttm is not null -- 승인되고.
	and a.leave_dttm is null -- 탈퇴안되고.
<if test="@i2c.cmm.util.StringUtil@isEmpty(favo_yn) == false">
	and a.favo_yn = #{favo_yn}
</if>
<if test="@i2c.cmm.util.StringUtil@isEmpty(use_stop_yn) == true">
	AND B.USE_STOP_YN = 'N' /* 사용중지 목록 제외 */
</if>
)iv
where 1=1
	<if test="@i2c.cmm.util.StringUtil@isEmpty(grp_nm) == false">
		and iv.grp_nm like '%' || #{grp_nm} || '%'
	</if>
		<![CDATA[
		and RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
		]]>
		ORDER BY RN
	</select>

	<select id="kr.co.i2talk.sns.viewUserGroup"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewUserGroup */
SELECT
	users_by_group_id,
	a.grp_id,
	b.grp_nm,
	b.grp_tp,
	b.GRP_IMG,
	FN_GET_FILE_NM('group', a.grp_id, b.grp_img) grp_img_path,
	usr_id,
	join_yn, join_dttm,
	leave_dttm,
	aprv_dttm,
	admin_yn,
	favo_yn,
	open_yn,
	b.use_stop_yn,
	b.use_stop_dttm,
	a.crt_usr_id,
	a.crt_dttm,
	a.mod_usr_id,
	a.mod_dttm,
	(
		select count(*) from sns_users_by_group it where it.grp_id = a.grp_id and it.leave_dttm is null
	) member_cnt
FROM
	sns_users_by_group a,
	sns_group b
where 1=1
	and a.grp_id = b.grp_id
	and a.usr_id = #{usr_id}
	and a.grp_id = #{grp_id}
	and a.aprv_dttm is not null -- 승인되고.
	and a.leave_dttm is null -- 탈퇴안되고.
<if test="@i2c.cmm.util.StringUtil@isEmpty(favo_yn) == false">
	and a.favo_yn = #{favo_yn}
</if>
	</select>

	<select id="kr.co.i2talk.sns.viewSnsUserByAccessToken"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUserByAccessToken */
SELECT
	a.usr_id, usr_nm, email, login_id, /*login_passwd,*/
	self_intro,
	photo_img,
	photo_img_mid,
	photo_img_min,
	CONCAT('user', a.usr_id,photo_img) as photo_img_path,
	CONCAT('user', a.usr_id,photo_img_mid) as photo_img_mid_path,
	CONCAT('user', a.usr_id,photo_img_min) as photo_img_min_path,
	use_stop_yn, use_stop_dttm, sys_admin_yn, outs_usr_yn, tel_num,
	pos_cd, pos_nm, FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
	phn_num, fax_num, birth_dt, cover_img, ext_user_id,
	a.crt_usr_id, a.crt_dttm, a.mod_usr_id, a.mod_dttm,
	dept_id, a.org_sid, a.mber_no
FROM
	sns_user a,
	sns_access_token b
WHERE 1 = 1
	and a.mber_no = b.usr_id
	and a.org_sid = b.client_id
	and b.access_token = #{access_token}
	and b.expr_dttm is null
	</select>

	<select id="kr.co.i2talk.sns.searchUserByName"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.searchUserByName */
SELECT
	a.*
FROM (
	SELECT
		usr_id, usr_nm, email, tel_num,
		pos_cd, pos_nm, FN_GET_USR_DEPT_NM(SU.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
		photo_img_min, CONCAT('user', usr_id, photo_img_min) as photo_img_min_path
	FROM
		sns_user SU
	WHERE 1 = 1
	<if test="@i2c.cmm.util.StringUtil@isEmpty(search_usr_nm) == false">
		and usr_nm like '%' || #{search_usr_nm} || '%'
	</if>
    <if test="@i2c.cmm.util.StringUtil@isNotEmpty(niaUserType)">
    <!-- AND SU.INSTT_BSNM_TYPE = #{niaUserType} --> 
        <if test="@i2c.cmm.util.StringUtil@isNotEmpty(niaYear)">
        AND SU.DEPT_ID IN (SELECT ED.DEPT_ID FROM EXT_DEPARTMENT ED 
                            WHERE ED.BIZ_TYPE  = #{niaUserType} /**/
                              AND ED.DEPT_YEAR = #{niaYear}     /**/)
        </if>
    </if>
    AND SU.APPROVAL        = 'Y' /* 승인 회원 */
	ORDER BY usr_nm
) a
WHERE rownum &lt;= 5
	</select>

	<update id="kr.co.i2talk.sns.updatePassword"
		parameterType="Map">
/* kr.co.i2talk.sns.updatePassword */
UPDATE sns_user SET
	temp_passwd_yn = 'N',
	login_passwd = #{login_passwd},
	prev_passwd = #{prev_passwd},
	passwd_mod_dttm = #{passwd_mod_dttm}
WHERE
	login_id = #{login_id}
	</update>

	<select id="kr.co.i2talk.sns.viewSnsUserByEmail"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsUserByEmail */
SELECT
	usr_id, usr_nm, email, login_id, login_passwd,
	self_intro,
	photo_img,
	photo_img_mid,
	photo_img_min,
	CONCAT('user',usr_id,photo_img) as photo_img_path,
	CONCAT('user',usr_id,photo_img_mid) as photo_img_mid_path,
	CONCAT('user',usr_id,photo_img_min) as photo_img_min_path,
	use_stop_yn, use_stop_dttm, sys_admin_yn, outs_usr_yn, tel_num,
	pos_cd, pos_nm, FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
	phn_num, fax_num, birth_dt, cover_img, ext_user_id,
	crt_usr_id, crt_dttm, mod_usr_id, mod_dttm,
	dept_id,
	(
		case
			when (select count(*) from sns_follow it where it.tar_usr_id = a.usr_id and it.fllw_applr_id = #{fllw_applr_id}) > 0 then
				'Y'
			else
				'N'
		end
	) follow_yn,
	(
		decode((select count(usr_id) cnt from sns_user_client it where it.usr_id = a.usr_id and it.CONNECT_STATE_CD = 'ON'), 0, 'N', 'Y')
	) connect_yn,
	(
		select max(lst_connect_dttm) from sns_user_client it where it.usr_id = a.usr_id
	) lst_connect_dttm
	, (select b.access_token from sns_access_token b where b.usr_id = a.usr_id and expr_dttm is null and b.client_id != '2EDAA68DDF' and rownum = 1) access_token
FROM
	sns_user a
WHERE
	email = #{email}
	and rownum = 1
	</select>
	
	<update id="kr.co.i2talk.sns.updateUserIp" parameterType="Map">
	/* kr.co.i2talk.sns.updateUserIp */
	UPDATE SNS_USER SET
		CONN_IP = #{conn_ip}
	WHERE
		USR_ID = #{usr_id}
	</update>
	
	<select id="kr.co.i2talk.sns.followUserList"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.followUserList */
		SELECT *	
		  FROM
				(
				SELECT  ROW_NUMBER() OVER(ORDER BY USR_NM) RN
					  , COUNT(FLLW_ID) OVER() TOTAL_CNT
					  , FLLW_ID
					  , FLLW_APPLR_ID 
					  , TAR_USR_ID
					  , FN_GET_USR_PHOTO(TAR_USR_ID) USR_PHOTO
					  , FN_GET_USR_ORIGIN_PHOTO(TAR_USR_ID) USR_PHOTO_IMG
					  , B.USR_NM TAR_USR_NM, FN_GET_USR_DEPT_NM(B.USR_ID) DEPT_NM, B.POS_NM
					  , CONCAT('USER', TAR_USR_ID, B.PHOTO_IMG_MIN) TAR_PHOTO_IMG_MIN
					  , FN_GET_USR_ORIGIN_PHOTO(TAR_USR_ID) TAR_PHOTO_IMG
					  , TAR_GRP_ID
					  , POST_ID
					  , FLLW_TAR_OBJ_TP
					  , FLLW_TAR_OBJ_ID
					  , APPL_DTTM
					  , ACPT_DTTM
					  , (
					     CASE 
					        WHEN (SELECT COUNT(C.FLLW_ID) FROM SNS_FOLLOW C WHERE C.TAR_USR_ID = A.FLLW_APPLR_ID AND C.FLLW_APPLR_ID = A.TAR_USR_ID) > 0 THEN 'Y' 
					        ELSE 'N' 
					     END
					   ) FLLW_YN
					  , USR_NM
					  , B.USR_ID					  
					  , B.MNG_USR_ID, B.MNG_USR_NM, B.MNG_USR_POS_NM
					  , B.TEL_NUM, B.PHN_NUM, B.EMAIL, IFNULL(B.SELF_INTRO,' ') SELF_INTRO
					  , PHOTO_IMG
					  , PHOTO_IMG_MID
					  , PHOTO_IMG_MIN
					  , CONCAT('USER',USR_ID,PHOTO_IMG) AS PHOTO_IMG_PATH
					  , CONCAT('USER',USR_ID,PHOTO_IMG_MID) AS PHOTO_IMG_MID_PATH
					  , CONCAT('USER',USR_ID,PHOTO_IMG_MIN) AS PHOTO_IMG_MIN_PATH
					  ,(
					  	DECODE( (SELECT COUNT(*) FROM SNS_USER_CLIENT IT WHERE IT.USR_ID = A.TAR_USR_ID AND IT.CONNECT_STATE_CD = 'ON'), 0, 'OFF', 'ON')
					   ) ON_OFF					   
				FROM
					SNS_FOLLOW A,
					SNS_USER B
				WHERE 1=1
					AND A.TAR_USR_ID = B.USR_ID
					AND FLLW_APPLR_ID = #{fllw_applr_id}
				) IV
		WHERE 1=1
	<if test="@i2c.cmm.util.StringUtil@isEmpty(page_type) == false">
		<if test='page_type == "LIST" '> 
			<if test="@i2c.cmm.util.StringUtil@isEmpty(usr_nm) == false">
				AND USR_NM LIKE '%' || #{usr_nm} || '%'
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(search_type) == false">	
				<if test="@i2c.cmm.util.StringUtil@isEmpty(search_word) == false">	
					<if test="search_type == 'usr_nm'">
						AND IV.USR_NM LIKE '%' || #{search_word} || '%'
					</if>					
					<if test="search_type == 'dept_nm'">
						AND IV.DEPT_NM LIKE '%' || #{search_word} || '%'
					</if>	
					<if test="search_type == 'all'">
						AND (IV.DEPT_NM LIKE '%' || #{search_word} || '%' OR IV.USR_NM LIKE '%' || #{search_word} || '%') 
					</if>				
				</if>
			</if>
		<![CDATA[
			AND RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
			]]>
		</if>
	</if>	
		ORDER BY
		USR_NM
    </select>

	<select id="kr.co.i2talk.sns.listSmsUserInfo" parameterType="Map" resultType="i2c.cmm.email.vo.EmailVO">
	/* kr.co.i2talk.sns.listSmsUserInfo */
	SELECT
		  USR_ID
		, USR_NM
		, EMAIL
		, PHN_NUM PHNNUM
	FROM
		SNS_USER
	WHERE
		USR_ID IN 
		<foreach collection="rcvrList" item="item" index="index"
			open="(" separator="," close=")">
			#{item.usr_id}
		</foreach>
	</select>
	
	<sql id="searchUser"> 
    	AND SU.USE_STOP_YN = 'N'    	
    	<if test="searchKeyword != null and searchKeyword !=''">          
          <if test="searchCondition == 'USRNM'">
          	AND SU.USR_NM LIKE CONCAT('%', #{searchKeyword}, '%')
          </if>
          <if test="searchCondition == 'LOGINID'">
          	AND SU.LOGIN_ID LIKE CONCAT('%', #{searchKeyword}, '%')
          </if> 
      	</if>     	
    </sql>
	
	<select id="kr.co.i2talk.sns.countUserSearch" parameterMap="snsUserVO" resultType="int">
        /* [kr.co.i2talk.sns.countUserSearch] 회원 건수 */
        SELECT 
	           COUNT(SU.USR_ID)                  
	      FROM SNS_USER SU
	     WHERE 1=1
	     <include refid="searchUser"/>
    </select>
    
    <select id="kr.co.i2talk.sns.listUserSearch" parameterMap="snsUserVO" resultMap="snsUserVO">
        /* [kr.co.i2talk.sns.listUserSearch] 회원 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
                SELECT 
                     SU.USR_ID
				   , SU.USR_NM
				   , SU.LOGIN_ID
                FROM SNS_USER SU
               WHERE 1=1	
               <include refid="searchUser"/>               
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
        ORDER BY USR_NM
        ) C        
		ORDER BY RNUM
		LIMIT #{firstIndex}, #{recordCountPerPage}	 		 
    </select>

	<select id="kr.co.i2talk.sns.listSnsUserIpList" parameterType="string" resultType="map">
		/* [kr.co.i2talk.sns.listSnsUserIpList] 접속가능 IP 리스트 */
		SELECT sui.id
			 , sui.USR_ID
			 , sui.USE_AT
			 , sui.REGIST_ID
			 , sui.REGIST_DE
			 , sui.UPDT_ID
			 , sui.UPDT_DE
			 , sui.IP_ADDRESS
		FROM sns_user_ip sui
				 INNER JOIN sns_user su ON sui.USR_ID = su.USR_ID
		WHERE sui.USR_ID = #{UserId}
		  AND sui.USE_AT = 'Y'
		  AND su.USE_STOP_YN = 'N'
	</select>

</mapper>
