<?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.sbscrb.dao.SbscrbDAO">

 	<resultMap id="sbscrbVO" type="i2c.biz.sbscrb.vo.SbscrbVO" />
    
    <parameterMap id="paramSbscrbVO" type="i2c.biz.sbscrb.vo.SbscrbVO" />
    
	<insert id="insertSbscrb" parameterMap="paramSbscrbVO">
	/* i2c.biz.sbscrb.dao.SbscrbDAO.xml insertSbscrb 회원가입 정보 등록 */
		INSERT INTO
			sns_user (
				usr_id				/*사용자ID*/
				, approval			/*승인여부 N*/
				, usr_nm			/*사용자이름*/
				, email				/*이메일*/
				, login_id			/*로그인ID*/
				, login_passwd		/*로그인PW*/
				, phn_num			/*핸드폰번호*/
				, dept_id			/*부서ID*/
				, dept_nm			/*부서명*/
				, sexdstn			/*성별*/
				, photo_img			/*프로필원본이미지*/
				, photo_img_mid		/*프로필중간크기이미지*/
				, photo_img_min		/*프로필썸네일이미지*/
				, AUTH_CODE         /* 권한 */
				, CRT_USR_ID	    /* 생성자 */
                , CRT_DTTM	        /* 생성일시 */
                , MOD_USR_ID        /* 수정자 */	
                , MOD_DTTM          /* 수정일시 */
                , USE_STOP_YN
                , ORG_SID
			)
		VALUES
			(
				#{usr_id}
				, #{approval}
				, #{usr_nm}
				, #{email}
				, #{login_id}
				, #{login_passwd}
				, #{phn_num}
				, #{dept_id}
				, #{dept_nm}
				, #{sexdstn}
				, #{photo_img}
				, #{photo_img_mid}
				, #{photo_img_min}
				, #{auth_code}
				, #{usr_id}
				, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
				, #{usr_id}
				, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
				, 'N'
				, #{org_sid}
			)
		
	</insert>
	
	<insert id="signUp" parameterMap="paramSbscrbVO">
	/* i2c.biz.sbscrb.dao.SbscrbDAO.xml signUp 회원가입 정보 등록 */
		INSERT INTO
			sns_user (
			      sns_se
				, usr_id				/*사용자ID*/
				, usr_nm			/*사용자이름*/
				, email				/*이메일*/
				, login_id			/*로그인ID*/
				, login_passwd		/*로그인PW*/
				, phn_num			/*핸드폰번호*/
				, sexdstn			/*성별*/
				, sbscrb_id
				, nation_cd
				, stplat_at
				, privacy_at
				, advrts_agre_at
				, CRT_USR_ID	    /* 생성자 */
                , CRT_DTTM	        /* 생성일시 */
                , MOD_USR_ID        /* 수정자 */	
                , MOD_DTTM          /* 수정일시 */
                , ORG_SID
                , USE_STOP_YN
			)
		VALUES
			(
			      #{sns_se}
				, #{usr_id}
				, #{usr_nm}
				, #{email}
				, #{login_id}
				, #{login_passwd}
				, #{phn_num}
				, #{sexdstn}
				, #{sbscrb_id}
				, #{nation_cd}
				, #{stplat_at}
				, #{privacy_at}
				, #{advrts_agre_at}
				, #{usr_id}
				, DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
				, #{usr_id}
				, DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
				, #{org_sid}
				, 'N'
			)
		
	</insert>

    

	<select id="selectLoginId" parameterType="java.lang.String"  resultType="int">
       /* i2c.biz.sbscrb.dao.SbscrbDAO.xml selectLoginId  id중복체크*/
   		SELECT COUNT(0)
		FROM sns_user
		where login_id = #{login_id}
    </select>
    
    <select id="selectDeptId" parameterMap="paramSbscrbVO" resultMap="sbscrbVO" >
       /* i2c.biz.sbscrb.dao.SbscrbDAO.xml selectDeptId  선택 기관에 해당하는 부서조회*/
		SELECT E.DEPT_ID
             , E.DEPT_NM
		FROM  EXT_DEPARTMENT E
		WHERE E.BIZ_ID = #{instt_bsnm_id}
    </select>
    
    <select id="updateAuthCode" parameterType="java.util.Map" resultType="java.lang.String">
       /* i2c.biz.sbscrb.dao.SbscrbDAO.xml updateAuthCode 인증코드 전송(회원가입 시) */        
          INSERT INTO AUTH_CODE_MANAGE (PHN_NUM, AUTH_CODE, REG_DTTM) 
                 VALUES(#{phn_num}, #{auth_code}, NOW())
          ON DUPLICATE KEY 
                UPDATE AUTH_CODE = #{auth_code}   
    </select>
    
    <select id="selectAuthCode" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
       /* i2c.biz.sbscrb.dao.SbscrbDAO.xml selectAuthCode 인증코드 확인(회원가입 시) */
       SELECT A.*
         FROM (
		    SELECT AUTH_CODE             
		      FROM AUTH_CODE_MANAGE
		     WHERE PHN_NUM = #{phn_num}
		     ORDER BY REG_DTTM DESC
		 ) A
		LIMIT 1
    </select>
    
    <select id="checkDuplicateEmail" parameterType="java.util.Map" resultType="i2c.cmm.base.CommonResultMap">
       /* i2c.biz.sbscrb.dao.SbscrbDAO.xml selectAuthCode 인증코드 확인(회원가입 시) */
       SELECT 
             LOGIN_ID
         FROM
             SNS_USER
        WHERE LOGIN_ID = #{email}
    </select>
    
        <select id="viewStplat" parameterType="java.util.Map" resultType="i2c.cmm.base.CommonResultMap">
       /* i2c.biz.sbscrb.dao.SbscrbDAO.xml viewStplat 이용약관 뷰 */
         SELECT 
             A.STPLAT_SE
           , A.CONTENTS 
           , FN_GET_CODE_NM('STPLAT_SE', A.STPLAT_SE) STPLAT_SE_NM
         FROM
             STPLAT_INFO A
        WHERE 1=1
         <if test="stplat_se == 'STPLA1'">
         AND A.STPLAT_SE = 'STPLA1'
         </if>
         <if test="stplat_se == 'STPLA2' or stplat_se == 'STPLA3'">
         AND A.STPLAT_SE IN ('STPLA2', 'STPLA3')
         </if>
    </select>
   
   <update id="updateSbscrb" parameterMap="paramSbscrbVO">
	/* i2c.biz.sbscrb.dao.SbscrbDAO.xml updateSbscrb 회원 수정*/
		UPDATE SNS_USER
		   SET	
                MOD_USR_ID      = #{usr_id}  
              , MOD_DTTM        = DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')			  	
              <if test="@i2c.cmm.util.StringUtil@isEmpty(email) == false">
              , EMAIL			= #{email}
              </if> 
              <if test="@i2c.cmm.util.StringUtil@isEmpty(phn_num) == false">
              , PHN_NUM			= #{phn_num}
              </if>
              <if test="@i2c.cmm.util.StringUtil@isEmpty(login_passwd) == false">
              , LOGIN_PASSWD	= #{login_passwd}	
              </if>
         WHERE USR_ID = #{usr_id} 		
	</update>
	
	<select id="loginIdList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
     /* [i2c.biz.sbscrb.dao.SbscrbDAO.loginIdList] ID 찾기  */
      SELECT 
           CONCAT(B.ID_FRONT, B.ID_MID, B.ID_END, '@', B.ID_DOMAIN) EMAIL
       FROM
	      (SELECT 
	            A.ID_FRONT
	          , A.ID_END
	          , A.ID_DOMAIN
	          , REGEXP_REPLACE (ID_DOMAIN,'[[:alnum:][:punct:]]','*') AS ID_MID
	          , SUBSTRING(ID_EMAIL,2,ID_LENGTH) as ID_EMAIL
		     FROM ( SELECT     LOGIN_ID
		             , SUBSTR(SUBSTRING_INDEX(LOGIN_ID, '@', 1), 1, 1) AS ID_FRONT
		             , RIGHT(SUBSTRING_INDEX(LOGIN_ID, '@', 1), 1) AS ID_END
		             , SUBSTRING_INDEX(LOGIN_ID, '@', -1) AS ID_DOMAIN
		             , CHAR_LENGTH(SUBSTRING_INDEX(LOGIN_ID, '@', 1))-2 AS ID_LENGTH
		             , SUBSTRING_INDEX(LOGIN_ID, '@', 1) as ID_EMAIL
		         FROM SNS_USER
		        WHERE PHN_NUM = #{phn_num}
		        ) A
	     ) B
    </select>
    
</mapper>