<?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="i2c.biz.admin.srvc.userMng.dao.UserInfoDAO">
    <resultMap id="snsUserVO"     type="i2c.biz.admin.srvc.userMng.vo.SnsUserVO"     />    
    
    <parameterMap id="snsUserVO"      type="i2c.biz.admin.srvc.userMng.vo.SnsUserVO"     />
    
    <sql id="searchUser">
    	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(auth_code)">
		  <if test="auth_code == 'ROLE_ORGADMIN'">
			 AND SU.ORG_SID = #{org_sid}     
		  </if>
		</if>
   	 	<if test="adminPage != null and adminPage != '' and adminPage != 'Y'.toString() and searchSdate != null and searchSdate !='' and searchEdate !=null and searchEdate !='' ">
      		AND SU.CRT_DTTM BETWEEN CONCAT(REPLACE(#{searchSdate}, '-', ''), '000000') AND CONCAT(REPLACE(#{searchEdate}, '-', ''), '235959')
      	</if>
	      
    	<if test="adminPage != null and adminPage != '' and adminPage != 'Y'.toString() and searchText != null and searchText !=''">
    	  <if test="searchCondition == 'allCon'">
          	AND (USR_NM LIKE CONCAT('%',#{searchText},'%') OR LOGIN_ID LIKE CONCAT('%',#{searchText},'%') )
          </if>
          <if test="searchCondition == 'usrNm'">
          	AND SU.USR_NM LIKE CONCAT('%',#{searchText},'%')
          </if>
          <if test="searchCondition == 'loginId' or searchCondition == 'email'">
          	AND SU.LOGIN_ID LIKE CONCAT('%',#{searchText},'%')
          </if>
       </if>
      
       <if test="searchSelect == 'SOCIAL'">
          	AND SU.SNS_SE IN ('SNS001', 'SNS002', 'SNS003') 
       </if>
        <if test="searchSelect == 'MOBILE'">
         	AND SU.SNS_SE = 'EMAIL'
       </if>
       
       <if test="searchSelect == 'before'">
          	AND AMI.SVC_SETLE_CD = 'SVCSETLETY01' 
       </if>
       <if test="searchSelect == 'after'">
          	AND AMI.SVC_SETLE_CD = 'SVCSETLETY02'
       </if>
      
      <if test="searchAuthType != null and searchAuthType !=''">
      	AND SU.AUTH_CODE IN 
      	<foreach collection="searchAuthType" item="item" index="index" separator="," open="(" close=")">
            #{item}
        </foreach>
      </if>
      
      <if test="searchUseStopYn != null and searchUseStopYn !=''">
      	<if test="searchUseStopYn == 'AA'">
      		AND SU.USE_STOP_YN = 'N'
      	</if>
      	<if test="searchUseStopYn == 'BB'">
      		AND SU.USE_STOP_YN = 'Y'
      	</if>
      </if>
      
      
      <if test="adminPage != null and adminPage != '' and adminPage == 'Y'.toString() and searchSdate != null and searchSdate !='' and searchEdate != null and searchEdate != '' and dateSearchSel != null and dateSearchSel != ''">
   		<if test="dateSearchSel == 'regDate'">
   			AND SU.CRT_DTTM BETWEEN CONCAT(REPLACE(#{searchSdate}, '-', ''), '000000') AND CONCAT(REPLACE(#{searchEdate}, '-', ''), '235959')
      	</if>
      	<if test="dateSearchSel == 'changeDate'">
      		AND SU.MOD_DTTM BETWEEN CONCAT(REPLACE(#{searchSdate}, '-', ''), '000000') AND CONCAT(REPLACE(#{searchEdate}, '-', ''), '235959')
      	</if>
      </if>
      
      
      <if test="adminPage != null and adminPage != '' and adminPage == 'Y'.toString() and searchText != null and searchText !=''">
    	  <if test="searchCondition == 'usrNm'">
          	AND SU.USR_NM LIKE CONCAT('%',#{searchText},'%')
          </if>
          <if test="searchCondition == 'mngUsrNm'">
          	AND SU.MNG_USR_NM LIKE CONCAT('%',#{searchText},'%')
          </if>
          <if test="searchCondition == 'phnNum'">
          	AND SU.PHN_NUM LIKE CONCAT('%',#{searchText},'%')
          </if>
       </if>
       
       <if test="adminPage != null and adminPage != ''">       		
       		<choose>
		       	<when test="adminPage == 'Y'.toString()">
		       		AND SU.AUTH_CODE IN ('ROLE_ADMIN','ROLE_MC_MNGR','ROLE_CORE_MNGR')
		       	</when>
		       	<otherwise>
		       		AND SU.AUTH_CODE IN ('ROLE_ADMIN','ROLE_MC_MNGR','ROLE_CORE_MNGR')
		       	</otherwise>
	       </choose>
       </if>
       <if test="@i2c.cmm.util.StringUtil@isNotEmpty(searchAuth01)">
       		AND SU.MBER_NO = #{searchAuth01}
       </if>
       <if test="@i2c.cmm.util.StringUtil@isNotEmpty(searchAuth02)">
       		AND SU.AUTH_CODE = #{searchAuth02}
       </if>
       <if test="@i2c.cmm.util.StringUtil@isNotEmpty(searchAuth03)">
       		AND SU.DEPT_ID = #{searchAuth03}
       </if>
     </sql>
    
    <select id="selectUserCount" parameterMap="snsUserVO" resultType="int">
        /* [i2c.biz.admin.srvc.userMng.dao.UserApplyDAO.selectUserCount] 회원 건수 */
      SELECT 
        	 COUNT(0)
        FROM SNS_USER SU
           , COMTNEMPLYRSCRTYESTBS AUTH  
           , SUB_MBER_INFO SMI  
           , ADD_MBER_INFO AMI  
       WHERE AUTH.SCRTY_DTRMN_TRGET_ID = SU.USR_ID
         AND SMI.USR_ID = SU.USR_ID 
         AND AMI.USR_ID = SU.USR_ID          
         <!-- AND SU.ORG_SID IS NOT NULL
         AND ORG_SID != '' -->
        <include refid="searchUser"/>
    </select>
    
    <select id="selectUserList" parameterMap="snsUserVO" resultMap="snsUserVO">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.selectUserList] 회원 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
                SELECT 
                	  SU.USR_ID USRID
                	, SU.LOGIN_ID LOGINID
                	, SU.USR_NM USRNM
                	, SU.PHN_NUM PHNNUM
                	, SU.EMAIL EMAIL
                	, SU.USE_STOP_YN USESTOPYN
                	, SU.CRT_DTTM
                	, DATE_FORMAT(SU.CRT_DTTM,'%Y-%m-%d') 		CRTDTTM
                	, DATE_FORMAT(SU.LST_LOGIN_DTTM,'%Y-%m-%d') LSTLOGINDTTM                	
                    , SU.ORG_SID                    
                   , SU.ADVRTS_ID
                   , SMI.SUB_MBER_ID
                   , SMI.LEVEL_CD
                   , AMI.CMPNM
                   , FN_GET_CODE_NM('SVC_SETLE_TY',SU.SVC_SETLE_CD) SUB_MBER_CD 
                   , FORMAT(IFNULL(SMI.POINT,0),0) 						POINT
                   , SU.MNG_USR_NM MNGUSRNM
                   , SU.POS_NM POSNM
                   , (SELECT (
							CASE WHEN SU.APPROVAL = 'Y'
								THEN '승인완료'
								WHEN SU.APPROVAL != 'Y'
								THEN '승인대기'
								WHEN SU.APPROVAL = 'Y' AND ALLTAB.CNT >= 1
								THEN '발신번호 등록완료' 
								WHEN SU.APPROVAL = 'Y' AND ALLTAB.CNT = 0
								THEN '발신번호 등록가능' 
							ELSE '' END 
						) APPVLSTTUS 
						FROM (SELECT COUNT(0) AS CNT FROM SNS_USER SU INNER JOIN DSPTCH_NUM_MNG DNM ON SU.USR_ID = DNM.USR_ID) AS ALLTAB
                     ) AS APPVLSTTUS
                   , SMI.RM 
                   , (SELECT USERNAME FROM SNS_CLIENT SC WHERE SC.MBER_NO = SU.MBER_NO AND SC.ORG_SID = SU.ORG_SID LIMIT 1) USERNAME
                   , (SELECT AI.AUTHOR_NM FROM COMTNAUTHORINFO AI WHERE AI.AUTHOR_CODE = SU.AUTH_CODE) AUTH_CODE_NM
                FROM SNS_USER SU
           , COMTNEMPLYRSCRTYESTBS AUTH  
           , SUB_MBER_INFO SMI  
           , ADD_MBER_INFO AMI             
       WHERE AUTH.SCRTY_DTRMN_TRGET_ID = SU.USR_ID
         AND SMI.USR_ID = SU.USR_ID 
         AND AMI.USR_ID = SU.USR_ID          
         <!-- AND SU.ORG_SID IS NOT NULL
         AND ORG_SID != '' -->                  
                <include refid="searchUser"/>
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
             ORDER BY CRT_DTTM
        ) C        
		ORDER BY RNUM DESC
		LIMIT #{firstIndex} , #{recordCountPerPage}		 		 
    </select>
    
    <insert id="insertUserInfo" parameterMap="snsUserVO">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.insertUserInfo] 계정생성 */
        INSERT INTO SNS_USER
			(
			  USR_ID
			, USR_NM
			, EMAIL
			, LOGIN_ID
			, LOGIN_PASSWD
			, USE_STOP_YN			
			, SYS_ADMIN_YN
			, PHN_NUM			
			, DEPT_ID
			, DEPT_NM
			, TEMP_PASSWD_YN
			, AUTH_CODE
			, MBER_NO	
			, ORG_SID	
			, APPROVAL
			, APPROVAL_DTTM	
			, SVC_SETLE_CD
			, IHIDNUMF
			, IHIDNUMB
			, API_PASSWD			
			<!-- , BITLY_TOKEN
			, BITLY_DOMAIN -->
			, CRT_USR_ID
			, CRT_DTTM	
			)
		VALUES 
			(
			  #{usrId}
			, #{usrNm}
			, #{email}
			, #{loginId}
			, #{loginPasswd}
			, #{useStopYn}			
			, #{sysAdminYn}
			, #{phnNum}			
			, #{dept_id}
			, #{dept_nm}
			, #{tempPasswdYn}
			, #{auth_code}
			, #{mber_no}
			, #{org_sid}	
			, #{approval}
			, #{approval_dttm}	
			, #{svc_setle_cd}
			, #{ihidnumf}
			, #{ihidnumb}
			, #{api_passwd}	
			<!-- , #{bitly_token}
			, #{bitly_domain} -->
			, #{regist_id}
			, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
			)
    </insert>
    
    <update id="updateUserInfo" parameterMap="snsUserVO">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.updateUserInfo] 회원 수정 */
        UPDATE SNS_USER SET
			  USE_STOP_YN = #{useStopYn}
			, PHN_NUM = #{phnNum}
			, APPROVAL = #{approval}	
			, USR_NM = #{usrNm}
			<!-- , BITLY_TOKEN = #{bitly_token}
			, BITLY_DOMAIN = #{bitly_domain} -->		
			<if test='approval == "Y"'>
			, APPROVAL_DTTM = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
			</if>
		WHERE
			USR_ID = #{usrId}
    </update>
    
    <select id="selectUserInfo" parameterMap="snsUserVO" resultMap="snsUserVO">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.selectUserInfo] 회원 상세 */
        SELECT
        	   SU.USR_ID                 USRID
        	 , SU.MBER_NO				 MBER_NO
        	 , SU.USR_NM                 USRNM
        	 , SU.EMAIL                  EMAIL
        	 , SU.LOGIN_ID             LOGINID
        	 , SU.LOGIN_PASSWD     LOGINPASSWD
        	 , SU.USE_STOP_YN        USESTOPYN
			 , SU.SYS_ADMIN_YN      SYSADMINYN
			 , SU.PHN_NUM               PHNNUM
			 , SU.APPROVAL            APPROVAL
			 , SU.SEXDSTN              SEXDSTN
			 , SU.ORG_SID
			 , SU.AUTH_CODE
			 <!-- , SU.BITLY_TOKEN
			 , SU.BITLY_DOMAIN -->
			 , (SELECT AI.AUTHOR_NM FROM COMTNAUTHORINFO AI WHERE AI.AUTHOR_CODE = SU.AUTH_CODE) AUTH_CODE_NM
			 , (SELECT 
					   COUNT(USR_ID) 
				  FROM SNS_REQUEST_HISTORY 
				 WHERE USR_ID = #{usrId}
				) 												LOGINCNT			 
			 , DATE_FORMAT(SU.CRT_DTTM,'%Y-%m-%d %H:%i') 		CRTDTTM
			 , DATE_FORMAT(SU.LST_LOGIN_DTTM,'%Y-%m-%d %H:%i') LSTLOGINDTTM			     
             , ADVRTS_ID             
             , IFNULL(DATE_FORMAT(SU.USE_STOP_DTTM,'%Y-%m-%d %H:%i'),'-') USESTOPDTTM
			 , SU.CONN_IP				CONNIP
			 , SU.CRTFC_CNFIRM_AT		CRTFCCNFIRMAT
             , ADVRTS_ID    
			, FN_GET_CODE_NM('SVC_SETLE_TY',SU.SVC_SETLE_CD) 		SVC_SETLE_CD
			, ML.SMS
            , ML.LMS
            , ML.MMS
            , ML.NTCN_TALK
            , ML.FRN_TALK            
            , FN_GET_CODE_NM('CSTMR_TY',AMI.CSTMR_CD) 				CSTMR_CD 
            , AMI.CMPNM
            , AMI.BIZRNO
            , AMI.BIZTY
            , FN_GET_CODE_NM('BIZ_TY',AMI.BIZTY)					BIZTYNM
            , AMI.RPRSNTV
            , AMI.BIZCND
            , AMI.ITEM
            , AMI.ADDR
            , AMI.CHARGER
            , AMI.EMAIL												CHARGER_EMAIL
            , AMI.PHN_NUM               							CHARGER_PHNNUM
            , AMI.BANK_CD
            , FN_GET_CODE_NM('ACNUT_TY',AMI.BANK_CD) 				BANK_NM
            , AMI.ACNUTNO
            , AMI.ACNTR
            , FORMAT(IFNULL(SMI.POINT,0),0) 						POINT
            , SMI.RM
            , ML.LEVEL_NM
            , SMI.LEVEL_CD
            , SC.CLIENT_NM
            , SC.CLIENT_ID
            , SC.CLIENT_PASSWD
            , SC.USERNAME
            , SC.PASSWORD
            , SC.GRANT_TYPE
            , SC.SEND_URL
            , SC.LOGIN_URL
            , SMI.reject_emma										rejectEmma
		FROM
			SNS_USER AS SU LEFT JOIN SUB_MBER_INFO AS SMI ON SMI.USR_ID = SU.USR_ID 
			LEFT JOIN ADD_MBER_INFO AS AMI ON AMI.USR_ID = SU.USR_ID
            LEFT JOIN MBER_LEVEL AS ML ON SMI.LEVEL_CD = ML.LEVEL_CD
            LEFT JOIN SNS_CLIENT AS SC ON SC.MBER_NO = SU.MBER_NO and SC.ORG_SID = SU.ORG_SID
		WHERE 1=1
		   <if test="@i2c.cmm.util.StringUtil@isEmpty(usrId) == false">
	        AND SU.USR_ID = #{usrId}
	       </if>
	       <if test="@i2c.cmm.util.StringUtil@isEmpty(loginId) == false">
	        AND SU.LOGIN_ID = #{loginId}
	       </if>
		LIMIT 1	
    </select>
    
    <update id="updateUserStopAt" parameterMap="snsUserVO">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.updateUserStopAt] 계정 수정 */
        UPDATE SNS_USER 
           SET USE_STOP_YN   = #{useStopYn}
			 , USE_STOP_DTTM = #{useStopDttm}
			<if test='useStopYn == "N"'>
			 , LOGIN_FAIL_COUNT = 0 /* 사용중지 해제 時 로그인 실패 카운트 초기화 */
			</if>
		WHERE
			USR_ID = #{usrId}
    </update>
	
	<select id="viewSnsUserByEmail" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.viewSnsUserByEmail */
		SELECT
			email, usr_id
		FROM
			SNS_USER
		WHERE
			email = #{email}
		LIMIT 1
	</select>	
	
	<update id="initPassword" parameterMap="snsUserVO">
		/* i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.initPassword 비밀번호초기화*/
		UPDATE SNS_USER SET
			PASSWD_MOD_DTTM = #{passwdModDttm},
			TEMP_PASSWD_YN  = 'Y',
			LOGIN_PASSWD = #{loginPasswd},
			PREV_PASSWD     = #{prevPasswd}
		WHERE
			USR_ID = #{usrId}
	</update>
	
	<select id="selectPwdCycle" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* [i2c.biz.admin.srvc.userMng.UserInfoDAO.selectPwdCycle */
		SELECT
			CD_NM
		FROM
			SNS_COMMON_CODE A
		WHERE
			UP_CD = #{up_cd}
			AND CD = #{cd}
	</select>
	
	<update id="updateAdminPwdCycle" parameterType="Map">
		/* [i2c.biz.admin.srvc.userMng.UserInfoDAO.updateAdminPwdCycle] 비밀번호주기변경처리. */
		UPDATE SNS_COMMON_CODE
			SET CD_NM = #{cd_nm}
		WHERE
			UP_CD = #{up_cd}
			AND CD = #{cd}
	</update>	
	
	<update id="updateSnsUser" parameterMap="snsUserVO">
		/* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.updateSnsUser] 사용자 정보 변경*/
			UPDATE SNS_USER SET
			USR_NM = #{usr_nm}
		WHERE
			USR_ID = #{usr_id}
	</update>
	
	<update id="updateUserPass" parameterMap="snsUserVO">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.updateUserPass] 비밀번호 수정 */
        UPDATE SNS_USER 
			SET LOGIN_PASSWD = #{newPassword}
			, PREV_PASSWD = #{prevPasswd}
		    , PASSWD_MOD_DTTM = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
		WHERE USR_ID = #{usrId}
    </update>
	
	<update id="saveSubUser" parameterMap="snsUserVO">
       /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.insertSubUser] 관리자 회원정보 저장 */            	                                
            INSERT INTO SUB_MBER_INFO
            	 (                     
                   USR_ID
		         , MBER_NO
		         , ORG_ID
		         , SUB_MBER_ID
		         , SUB_MBER_PASSWORD
		         , STD_TIME
		         , SUB_MBER_CD
		         , CLIENT_ID
		         , CLIENT_SECRET
		         , GRANT_TYPE
		         , LEVEL_CD
		         , POINT
		         , SEND_URL
		         , RM
		         , USE_AT
		         , STATUS
		         , REGIST_ID
		         , REGIST_DE
		         , reject_emma
                   )
            VALUES(
            	   #{usrId}
		         , #{mber_no}
		         , #{org_sid}
		         , #{sub_mber_id}
		         , #{sub_mber_password}
		         , #{std_time}
		         , #{sub_mber_cd}
		         , #{client_id}
		         , #{client_passwd}
		         , #{grant_type}
		         , #{level_cd}
		         , #{point}
		         , #{send_url}	
		         , #{rm}		         
		         , #{use_at}
		         , #{status}
		         , #{regist_id}
		         , DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s') 
		         , #{rejectEmma}
                   )  
              	ON DUPLICATE KEY 
			UPDATE 				                              
        		   UPDT_ID			 = #{regist_id} 
        		 , UPDT_DE			 = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
        		 , reject_emma		= #{rejectEmma}
        		 <if test="@i2c.cmm.util.StringUtil@isEmpty(sub_mber_id) 		== false">, SUB_MBER_ID       = #{sub_mber_id}        </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(sub_mber_password) 	== false">, SUB_MBER_PASSWORD = #{sub_mber_password}  </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(std_time) 			== false">, STD_TIME          = #{std_time}           </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(sub_mber_cd) 		== false">, SUB_MBER_CD       = #{sub_mber_cd}        </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(client_id) 			== false">, CLIENT_ID         = #{client_id}          </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(client_passwd) 		== false">, CLIENT_SECRET     = #{client_passwd}      </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(grant_type) 		== false">, GRANT_TYPE        = #{grant_type}         </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(level_cd) 			== false">, LEVEL_CD          = #{level_cd}           </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(point) 				== false">, POINT             = #{point}              </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(send_url) 			== false">, SEND_URL          = #{send_url}           </if>
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(rm) 				== false">, RM		          = #{rm}   	          </if>
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(use_at) 			== false">, USE_AT            = #{use_at}             </if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(status) 			== false">, STATUS            = #{status}         	  </if> 
    </update>   
    
    <update id="saveAddUser" parameterMap="snsUserVO">
       /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.saveAddUser] 관리자 회원 부가정보 저장 */                          
            INSERT INTO ADD_MBER_INFO
            	 (                    
                   USR_ID
				 , MBER_NO
				 , ORG_ID
				 , SVC_SETLE_CD
				 , CSTMR_CD
				 , CMPNM
				 , BIZRNO
				 , RPRSNTV
				 , BIZCND
				 , ITEM
				 , ADDR
				 , CHARGER
				 , EMAIL
				 , PHN_NUM
				 , BANK_CD
				 , ACNUTNO
				 , PAYDE
				 , PAYAT
				 , ACNTR
				 , ARREARS
				 , BIZTY
				 , USE_AT
				 , STATUS
				 , REGIST_ID
				 , REGIST_DE			
                   )
            VALUES(
            	   #{usrId}       
		         , #{mber_no}      
		         , #{org_sid}       
		         , #{svc_setle_cd} 
		         , #{cstmr_cd}     
		         , #{cmpnm}        
		         , #{bizrno}       
		         , #{rprsntv}      
		         , #{bizcnd}       
		         , #{item}         
		         , #{addr}         
		         , #{charger}      
		         , #{charger_email}        
		         , #{charger_phnNum}      
		         , #{bank_cd}  
		         , #{acnutno}      
		         , #{payde}         
                 , #{payat}        
          		 , #{acntr}        
                 , #{arrears}      
           		 , #{bizty}                         , #{use_at}                        , #{status}                        , #{regist_id}                     , DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
                   )
	             ON DUPLICATE KEY 
			UPDATE 				                              
        		   UPDT_ID			 = #{regist_id} 
        		 , UPDT_DE			 = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
        		 <if test="@i2c.cmm.util.StringUtil@isEmpty(svc_setle_cd) 	== false">, SVC_SETLE_CD   = #{svc_setle_cd}	</if> 
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(cstmr_cd) 		== false">, CSTMR_CD       = #{cstmr_cd}    	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(cmpnm) 			== false">, CMPNM          = #{cmpnm}       	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(bizrno) 		== false">, BIZRNO         = #{bizrno}      	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(rprsntv) 		== false">, RPRSNTV        = #{rprsntv}     	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(bizcnd) 		== false">, BIZCND         = #{bizcnd}      	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(item) 			== false">, ITEM           = #{item}        	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(addr) 			== false">, ADDR           = #{addr}        	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(charger) 		== false">, CHARGER        = #{charger}     	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(charger_email) 	== false">, EMAIL          = #{charger_email}   </if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(charger_phnNum) == false">, PHN_NUM        = #{charger_phnNum} 	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(bank_cd) 		== false">, BANK_CD        = #{bank_cd}     	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(acnutno) 		== false">, ACNUTNO        = #{acnutno}     	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(payde) 			== false">, PAYDE          = #{payde}       	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(payat) 			== false">, PAYAT          = #{payat}       	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(acntr) 			== false">, ACNTR          = #{acntr}       	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(arrears) 		== false">, ARREARS        = #{arrears}     	</if>
				 <if test="@i2c.cmm.util.StringUtil@isEmpty(bizty) 			== false">, BIZTY          = #{bizty}       	</if>              
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(use_at) 		== false">, USE_AT         = #{use_at}      	</if>                     
		         <if test="@i2c.cmm.util.StringUtil@isEmpty(status) 		== false">, STATUS         = #{status}      	</if>             
    </update>   
    
    <select id="selectMberNo" resultType="int">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.selectMberNo] 회원번호(9자리) 생성 */
        SELECT 
        	   CONCAT(DATE_FORMAT(SYSDATE(),'%Y%m'),LPAD(IFNULL(MAX(CAST(RIGHT(MBER_NO,3) AS UNSIGNED))+1,1),3,'0')) MBER_NO
          FROM SNS_USER
    </select>
    
    <insert id="insertAuthNum" parameterMap="snsUserVO">
    	/* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.insertAuthNum] 핸드폰 인증 번호 생성 */
    	INSERT INTO CRTFC(
			PHONE_NUMBER,
			REQUEST_TIME,
			EXPIRE_TIME,
			VERIFY_NUMBER
		)
		VALUES (
			#{phnNum},
			DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s'),
			DATE_FORMAT(DATE_ADD(SYSDATE(), INTERVAL 3 MINUTE) , '%Y%m%d%H%i%s'),
			#{verify_number}
		)
    </insert>
    
    <select id="selectAuthNum" parameterMap="snsUserVO" resultType="int">
    	/* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.selectAuthNum] 유효 인증번호 검색 */
    	select count(0) from crtfc where expire_time >= DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			and phone_number = #{phnNum} and verify_number = #{verify_number}
    </select>
    
    <select id="listUserAuth" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.listUserAuth] 회원 검색 */
        SELECT 
       	  	 SU.USR_ID
       	   , SU.ORG_SID       	     
       	   <choose>
         	<when test='type == "AUTH01"'>
	       		, SU.AUTH_CODE CODE
	       		, (SELECT AI.AUTHOR_NM FROM COMTNAUTHORINFO AI WHERE AI.AUTHOR_CODE = SU.AUTH_CODE) CODE_NM
	       	</when>
         	<when test='type == "AUTH02"'>	
	       		, SU.DEPT_ID CODE
	       		, SU.DEPT_NM CODE_NM
	       	</when>
	       	<otherwise>
	       		, SU.MBER_NO CODE
	       		, AMI.CMPNM CODE_NM	       		
	       	</otherwise>
           </choose>    	
        FROM SNS_USER SU
           , COMTNEMPLYRSCRTYESTBS AUTH  
           , SUB_MBER_INFO SMI  
           , ADD_MBER_INFO AMI  
       WHERE AUTH.SCRTY_DTRMN_TRGET_ID = SU.USR_ID         
         AND SMI.USR_ID = SU.USR_ID 
         AND AMI.USR_ID = SU.USR_ID
         <choose>
         	<when test="type == 'AUTH01'">
	       		AND SU.MBER_NO = #{code}
	       		AND SU.AUTH_CODE IN ('ROLE_CORE_MNGR','ROLE_MC_MNGR')
	       	</when>
         	<when test="type == 'AUTH02'">
         		AND SU.MBER_NO = #{mber_no}
         		AND SU.AUTH_CODE = #{code}
	       	</when>
	       	<otherwise>
	       		AND SU.AUTH_CODE = 'ROLE_ADMIN'
	       	</otherwise>
         </choose>
	   ORDER BY CODE DESC
    </select>
    
    <select id="listCmpnm" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.listCmpnm] 회사 목록 */
        SELECT 
       	  	 SU.MBER_NO
       	   , AMI.CMPNM
        FROM SNS_USER SU
           , COMTNEMPLYRSCRTYESTBS AUTH  
           , SUB_MBER_INFO SMI  
           , ADD_MBER_INFO AMI  
       WHERE AUTH.SCRTY_DTRMN_TRGET_ID = SU.USR_ID         
         AND SMI.USR_ID = SU.USR_ID 
         AND AMI.USR_ID = SU.USR_ID   
         AND SU.AUTH_CODE = 'ROLE_ADMIN'      
         AND SU.USE_STOP_YN = 'N'         
	   ORDER BY AMI.CMPNM
    </select>
    
    <select id="listLevel" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.listLevel] 레벨 목록 */
        SELECT 
			   LEVEL_CD			 
			 , LEVEL_NM			 
		  FROM MBER_LEVEL
		 WHERE LEVEL_NM != ''
		   AND LEVEL_NM IS NOT NULL
		 ORDER BY LEVEL_CD	 		 
    </select>
    
    <select id="checkUserInfo" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.srvc.userMng.dao.UserInfoDAO.checkUserInfo] 회원 정상 체크 */
        SELECT
        	   SU.LOGIN_ID     
        	 , SU.API_PASSWD                   	 
		  FROM SNS_USER AS SU LEFT JOIN SUB_MBER_INFO AS SMI ON SMI.USR_ID = SU.USR_ID 
							  LEFT JOIN ADD_MBER_INFO AS AMI ON AMI.USR_ID = SU.USR_ID				              
				              LEFT JOIN SNS_CLIENT AS SC ON SC.MBER_NO = SU.MBER_NO AND SC.ORG_SID = SU.ORG_SID
		 WHERE SU.USE_STOP_YN = 'N'
		   AND SU.APPROVAL = 'Y'
		  <if test="@i2c.cmm.util.StringUtil@isEmpty(mber_no) == false">
		  	AND SU.MBER_NO = #{mber_no}
		  </if>
		  <if test="@i2c.cmm.util.StringUtil@isEmpty(org_sid) == false">
		  	AND SU.ORG_SID = #{org_sid}
		  </if>
    </select>
</mapper>        