<?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.kakaoMng.dao.KakaoMngDAO">
	<resultMap    id="kakaoMngVO"  type="i2c.biz.admin.kakaoMng.vo.KakaoMngVO"     />    
    <parameterMap id="kakaoMngVO"  type="i2c.biz.admin.kakaoMng.vo.KakaoMngVO"     />
    <resultMap    id="cmmonResultMap"  type="i2c.cmm.base.CommonResultMap"     />
    
    <sql id="searchQuery"> 
    	<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">			
			<if test="searchCondition == 'ORGNM'">
			</if>
			<if test="searchCondition == 'DSPTCHNUM'">
			</if>				
			<if test="searchCondition == 'USRNM'">
			</if>	
		</if>
		
		<if test="@i2c.cmm.util.StringUtil@isEmpty(auth_code) == false">
    		<if test="auth_code == 'ROLE_ADMIN'">
    			AND TL.MBER_NO = #{mber_no}
			</if>
    	</if>
		
		<if test="status != null and status !=''">
			 AND TL.STATUS = #{status}
		</if>
		
		<if test="searchText != null and searchText !=''"> 
    	  <if test="searchCondition == 'tmpNm'">
          	AND TL.TMPLAT_NM LIKE CONCAT('%',#{searchText},'%')
          </if>
          <if test="searchCondition == 'tmpCd'">
          	AND TL.TMPLAT_CD LIKE CONCAT('%',#{searchText},'%')
          </if>
        </if>
        
        <if test="profUuid != null and profUuid !=''"> 
        	AND PF.PLUS_UUID = #{profUuid}
        </if>
        
        <if test="auth_code != null and auth_code !='' and auth_code == 'ROLE_ADMIN'">
			AND TL.MBER_NO = #{mber_no}
		</if>
		<if test="auth_code != null and auth_code !='' and (auth_code == 'ROLE_MC_MNGR' or auth_code == 'ROLE_CORE_MNGR')">
			AND TL.MBER_NO = #{mber_no} AND TL.ORG_ID = #{org_sid}
		</if>
        
    </sql>
    
    <sql id="searchProfileQuery">
    	<if test="searchText != null and searchText !=''"> 
    	  <if test="searchCondition == 'plusId'">
          	AND PP.PLUS_NM LIKE CONCAT('%',#{searchText},'%')
          </if>
          <if test="searchCondition == 'phnNum'">
          	AND PP.PHN_NUM LIKE CONCAT('%',#{searchText},'%')
          </if>
          <!-- <if test="searchCondition == 'profNm'">
          	AND PP.TMPLAT_CD LIKE CONCAT('%',#{searchText},'%')
          </if> -->
          <if test="searchCondition == 'profKey'">
          	AND PP.SENDER_KEY LIKE CONCAT('%',#{searchText},'%')
          </if>
          <if test="searchCondition == 'tkKey'">
          	AND PP.TOKEN LIKE CONCAT('%',#{searchText},'%')
          </if>
        </if>
        
        <if test="status != null and status !=''">
        	AND PP.STATUS = #{status}
        </if>
        <if test="selCmp != null and selCmp !=''">
        	AND PP.MBER_NO = #{selCmp}
        </if>
        
        <if test="auth_code != null and auth_code !='' and auth_code == 'ROLE_ADMIN'">
			AND PP.MBER_NO = #{mber_no}
		</if>
		<if test="auth_code != null and auth_code !='' and (auth_code == 'ROLE_MC_MNGR' or auth_code == 'ROLE_CORE_MNGR')">
			AND PP.MBER_NO = #{mber_no} AND PP.ORG_ID = #{org_id}
		</if>
    </sql>
    
     <select id="countKakaoMng" parameterMap="kakaoMngVO" resultType="int">
        /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.countKakaoMng] kakao 템플릿관리 목록 카운트 */
        SELECT
        	COUNT(ARS_ID)
          FROM
	        (SELECT 
		           AN.ARS_ID  
		      FROM 
		          ARS_NUM_MNG AN 
		     WHERE
		          AN.USE_AT = 'Y'
		          <include refid="searchQuery"/>		
		     ) A
		  WHERE 1=1
     </select>   
     
     <select id="listKakaoMng" parameterMap="kakaoMngVO" resultMap="kakaoMngVO">
        /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.listKakaoMng] kakao 템플릿관리 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
	               SELECT 
					     AN.ARS_ID
					   , AN.USR_ID
					   , FN_GET_USR_NM(AN.USR_ID) USR_NM
					   , AN.MBER_NO
					   , (SELECT SU.USR_NM 
					        FROM ADD_MBER_INFO AM, SNS_USER SU 
					       WHERE AM.USR_ID = SU.USR_ID
					         AND AM.MBER_NO = AN.MBER_NO
					     ) MBER_USR_NM
					   , (SELECT COUNT(RN.REJECT_ID)
					       FROM REJECT_NUM_MNG RN 
					      WHERE RN.ARS_ID = AN.ARS_ID
					      ) REJECT_CNT  
					   , AN.ORG_ID
					   , AN.ARS_NUM
					   , AN.PROVIDER
					   , AN.PRPOS
					   , AN.STATUS
					   , FN_GET_CODE_NM('ARS_ST', AN.STATUS) STATUS_NM 
					   , AN.USE_AT
					   , DATE_FORMAT(AN.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE
				   FROM 
				        ARS_NUM_MNG AN
			      WHERE 1=1
			          AND AN.USE_AT = 'Y'	
			     	 <include refid="searchQuery"/>   		
			     	  ORDER BY AN.REGIST_DE DESC
		            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
        	) C        
		ORDER BY RNUM
		LIMIT #{firstIndex}, #{recordCountPerPage}
       
    </select>
    
    <update id="deleteKakaoMng" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.deleteKakaoMng] kakao 템플릿관리 삭제*/
       UPDATE ARS_NUM_MNG 
		  SET USE_AT = 'N'
	    WHERE ARS_ID = #{ars_id}
    </update>
    
    <insert id="insertKakaoMng" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertKakaoMng] kakao 템플릿관리 등록*/
   		 INSERT INTO ARS_NUM_MNG
			(
               ARS_ID
             , USR_ID
             , MBER_NO
             , ORG_ID
             , ARS_NUM
             , PROVIDER
             , PRPOS
             , USE_AT
             , STATUS
             , REGIST_ID
             , REGIST_DE
			)
		VALUES 
			(
               #{ars_id}
             , #{usr_id}
             , #{mber_no}
             , #{org_id}
             , #{ars_num}
             , #{provider}
             , #{prpos}
             , #{use_at}
             , #{status}
             , #{regist_id}
             , DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
    </insert>
    
    <select id="tmpList" parameterMap="kakaoMngVO" resultType="i2c.cmm.base.CommonResultMap">
       /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.tmpList] kakao 템플릿 목록-API */
	     SELECT 
		        T.TMPLAT_CD 
		      , T.TMPLAT_NM  
		      , T.TMPLAT_CN
		      , T.STATUS
		  FROM 
		       TMPLAT T
		 WHERE 
		       STATUS = 'TMPLATST04'
		   AND T.SEND_AT = 'N'
           AND (T.SEND_DE IS NULL || T.SEND_DE ='')
    </select>
    
    <select id="tmpListByOrgid" parameterMap="kakaoMngVO" resultType="i2c.cmm.base.CommonResultMap">
       /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.tmpListByOrgid] kakao 템플릿 목록-API(org_id 기준) */
	     SELECT 
		        T.TMPLAT_CD 
		      , T.TMPLAT_NM  
		      , T.TMPLAT_CN
		      , T.STATUS
		      , SU.AUTH_CODE
		      , T.PLUS_UUID
		      , T.HLT_TYPE
		      , T.HLT_MAIN_TITLE
		      , T.HLT_SUB_TITLE
	     		, T.TMPL_MSG_TYPE
		  FROM 
		       TMPLAT T INNER JOIN SNS_USER SU ON T.ORG_ID = SU.ORG_SID  AND SU.MBER_NO = T.MBER_NO 
		 WHERE 
		       STATUS = 'TMPLATST04'
		   AND (T.SEND_AT = 'N' || T.SEND_AT IS NULL || T.SEND_AT ='')
           AND (T.SEND_DE IS NULL || T.SEND_DE ='')
           AND T.ORG_ID = #{org_id}
    </select>
    
    <select id="profileListByOrgid" resultType="com.i2sema.i2sema.com.vo.I2Sema0023VO$Payload$T_DATA" parameterMap="kakaoMngVO" >
        /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.profileListByOrgid] 프로필 목록 API(org_id 기준) */
		  SELECT  
		  		  MBER_NO
				 ,ORG_ID
				 ,SENDER_KEY
				 ,PLUS_UUID
				 ,PLUS_NM
				 ,TOKEN
				 ,STATUS
				 ,PLUS_STATUS
		    FROM PROFILE
		    WHERE  STATUS = 'PROFLST01'
		    AND (SEND_AT = 'N' || SEND_AT IS NULL || SEND_AT ='')
            AND (SEND_DE IS NULL || SEND_DE ='')
            AND ORG_ID = #{org_id}
    </select>
    
    <select id="kakaoBtnList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
      /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.kakaoBtnList] kakao 템플릿 버튼 목록-API */
       SELECT 
              TMPLAT_BTN_ID
              ,CASE WHEN TB.BTN_TY = 'BTNTY01' THEN 'DS'
                   WHEN TB.BTN_TY = 'BTNTY02' THEN 'WL'
                   WHEN TB.BTN_TY = 'BTNTY03' THEN 'AL'
                   WHEN TB.BTN_TY = 'BTNTY04' THEN 'BK'
                   WHEN TB.BTN_TY = 'BTNTY05' THEN 'MD'
                   WHEN TB.BTN_TY = 'BTNTY08' THEN 'AC'
                   ELSE NULL
               END BTN_TY
             , TB.BTN_NM
         FROM 
             TMPLAT T, 
             TMPLAT_BTN TB
        WHERE 
             T.MBER_NO = TB.MBER_NO
         AND T.TMPLAT_CD = TB.TMPLAT_CD
         AND TB.TMPLAT_CD = #{tmplat_cd}
    </select>
    
    <select id="kakaoLnkList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
      /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.kakaoLnkList] kakao 템플릿 버튼 링크 목록-API */
       SELECT 
             TBL.LINK_TY
           , TBL.LINK_URL
	    FROM 
	         TMPLAT T
	       , TMPLAT_BTN TB
	       , TMPLAT_BTN_LINK TBL
	   WHERE 
	         T.TMPLAT_CD = TB.TMPLAT_CD
	     AND TB.TMPLAT_CD = TBL.TMPLAT_CD
	     AND TBL.TMPLAT_CD = #{tmplat_cd}
	     <if test="@i2c.cmm.util.StringUtil@isEmpty(tmplat_btn_id) == false">
	     	AND TB.TMPLAT_BTN_ID = TBL.TMPLAT_BTN_ID
	     	AND TBL.TMPLAT_BTN_ID = #{tmplat_btn_id}
	     </if>
    </select>
    
    <select id="talkImgList" parameterMap="kakaoMngVO" resultType="i2c.cmm.base.CommonResultMap">
      /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.talkImgList] kakao 친구톡 이미지 목록-API */
	      SELECT 
	            SA.USR_LINK      IMAGE_URL
		      , ATTACH_NM        IMAGE_NAME
	   	   FROM 
	   	        SNS_ATTACH SA 
		  WHERE 
		        SA.TAR_TP = 'USER'
		    AND SA.TAR_SUB_TP = 'TALK'
		    AND SA.SEND_AT = 'N'
		    AND (SA.SEND_DE IS NULL || SA.SEND_DE ='')
    </select>
    
    <update id="updtTmpSendInfo" parameterType="Map">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.updtTmpSendInfo] sfdc 템플릿 전송 완료 업데이트*/
       UPDATE TMPLAT
		  SET SEND_AT = 'Y'
		    , SEND_DE = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
		    , SFDC_TMPLAT_ID = #{sfdc_tmplat_id}
	    WHERE TMPLAT_CD = #{tmplat_cd}    
    </update>
    
    <update id="updtImgSendInfo" parameterType="Map">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.updtImgSendInfo] sfdc 친구톡 이미지 전송 완료 업데이트*/
       UPDATE SNS_ATTACH 
		  SET SEND_AT = #{send_at}
		    , SEND_DE = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
	    WHERE USR_LINK = #{usr_link}
    </update>
    
    <update id="updtProfileSendInfo" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.updtProfileSendInfo] sfdc 프로필 전송완료 업데이트*/
	    UPDATE PROFILE
		SET SEND_AT = 'Y'
		  , SEND_DE = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
		  , SFDC_PLUS_UUID = #{sfdc_plus_uuid}
		WHERE PLUS_UUID = #{plus_uuid}
	</update>

    
    
     <select id="kakaoTmplCount" parameterMap="kakaoMngVO" resultType="int">
        /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.kakaoTmplCount] kakao 템플릿관리 목록 카운트 */
        SELECT 
           COUNT(0)  
      	FROM 
          TMPLAT AS TL JOIN PROFILE AS PF ON TL.ORG_ID = PF.ORG_ID AND TL.PLUS_UUID = PF.PLUS_UUID 
    	WHERE 1=1
          AND TL.USE_AT = 'Y'
          <include refid="searchQuery"/>
     </select>   
     
     <select id="kakaoTmplList" parameterMap="kakaoMngVO" resultMap="kakaoMngVO">
        /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.listKakaoMng] kakao 템플릿관리 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
	               SELECT
	               		TL.MBER_NO	
						, TL.ORG_ID
						, TL.TMPLAT_NM		
						, TL.TMPLAT_CD		
						, TL.TMPLAT_CN		
						, TL.USE_AT		
						, TL.STATUS
						, (
							CASE WHEN TL.STATUS = 'TMPLATST01' 
							THEN '등록'
							WHEN TL.STATUS = 'TMPLATST02' 
							THEN '검수요청'
							WHEN TL.STATUS = 'TMPLATST03'
							THEN '검수중'
							WHEN TL.STATUS = 'TMPLATST04'
							THEN '승인'
							WHEN TL.STATUS = 'TMPLATST05'
							THEN '반려'
						ELSE '' END
						) STATUS_NM
			 			, TL.rej_comment
						, TL.REGIST_ID		
						, CONCAT(SUBSTR(TL.REGIST_DE, 1,4), '-', SUBSTR(TL.REGIST_DE, 5,2), '-', SUBSTR(TL.REGIST_DE, 7,2)) REGIST_DE
						, TL.REGIST_DE REGIST_DATE
						, TL.UPDT_ID		
						, TL.UPDT_DE
						, PF.PLUS_NM
						, PF.PLUS_UUID
				   FROM 
				        TMPLAT AS TL JOIN PROFILE AS PF ON TL.ORG_ID = PF.ORG_ID AND TL.PLUS_UUID = PF.PLUS_UUID 
			      WHERE 1=1
			          AND TL.USE_AT = 'Y'	
			     	 <include refid="searchQuery"/>
		            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
        	) C        
		ORDER BY REGIST_DATE DESC
		LIMIT #{firstIndex}, #{recordCountPerPage}
       
    </select>
    
     <update id="tmplChkRequest" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.tmplChkRequest] kakao 템플릿 검수요청*/
	   UPDATE TMPLAT SET STATUS = 'TMPLATST02' 
	   WHERE MBER_NO = #{mber_no} AND TMPLAT_CD = #{tmplat_cd} 
    </update>
    
    <update id="tmplDelRequest" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.tmplDelRequest] kakao 템플릿 삭제요청*/
	   <!-- DELETE TMP,TMPB,TMPBL
	   FROM TMPLAT TMP
	   LEFT JOIN TMPLAT_BTN TMPB ON TMP.MBER_NO = TMPB.MBER_NO AND TMP.TMPLAT_CD = TMPB.TMPLAT_CD
	   LEFT JOIN TMPLAT_BTN_LINK TMPBL ON TMP.MBER_NO = TMPBL.MBER_NO AND TMP.TMPLAT_CD = TMPBL.TMPLAT_CD
	   WHERE TMP.MBER_NO = #{mber_no} AND TMP.TMPLAT_CD = #{tmplat_cd}  -->
	   UPDATE TMPLAT 
		SET USE_AT = 'N'
	    WHERE MBER_NO = #{mber_no} AND TMPLAT_CD = #{tmplat_cd}
    </update>
    
    
    <select id="selectKakaoTmplDtl" parameterMap="kakaoMngVO" resultMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectKakaoTmplDtl] kakao 템플릿 상세 정보 */
    	SELECT TMPLAT_CD
			, TMPLAT_NM
			, TMPLAT_CN
			, STATUS
			, SCC.CD STATUS
			, SCC.CD_NM STATUS_NM
			, CONCAT(SUBSTR(REGIST_DE, 1,4), '-', SUBSTR(REGIST_DE, 5,2), '-', SUBSTR(REGIST_DE, 7,2), ' ', SUBSTR(REGIST_DE, 9,2), ':', SUBSTR(REGIST_DE, 11,2)) REGIST_DE
			, PLUS_UUID
			, MBER_NO
			, ORG_ID
			, USE_AT
			, HLT_TYPE
			, HLT_MAIN_TITLE
			, HLT_SUB_TITLE
    	, TMPL_MSG_TYPE
		FROM TMPLAT TL INNER JOIN SNS_COMMON_CODE SCC ON TL.STATUS = SCC.CD AND SCC.UP_CD = 'TMPLAT_ST'
		<choose>
			<when test='auth_code == "ROLE_SYSADMIN"'>
				WHERE TMPLAT_CD = #{tmplat_cd}
			</when>
			<otherwise>
				WHERE MBER_NO = #{mber_no} AND TMPLAT_CD = #{tmplat_cd}
			</otherwise>
		</choose>
		<if test="@org.apache.commons.lang3.StringUtils@isNotEmpty(org_id) == true">
			AND TL.ORG_ID = #{org_id}
		</if>
    </select>
    
    <select id="selectkakaoTmplBtn" parameterMap="kakaoMngVO" resultMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectkakaoTmplBtn] kakao 템플릿 버튼타입 */
    	SELECT TMPLAT_BTN_ID
			,(SELECT GROUP_CONCAT(LINK_TY , '') 
			FROM TMPLAT_BTN_LINK BTNL WHERE BTNL.TMPLAT_BTN_ID = TB.TMPLAT_BTN_ID ) AS LINK_TY
			,(SELECT GROUP_CONCAT(LINK_URL, '') 
			FROM TMPLAT_BTN_LINK BTNL WHERE BTNL.TMPLAT_BTN_ID = TB.TMPLAT_BTN_ID ) AS LINK_URL
			,(SELECT GROUP_CONCAT(SCC.CD_NM, '') FROM TMPLAT_BTN_LINK BTNL INNER JOIN SNS_COMMON_CODE SCC 
			ON BTNL.LINK_TY = SCC.CD AND SCC.UP_CD IN('BTNTY02','BTNTY03') WHERE BTNL.TMPLAT_BTN_ID = TB.TMPLAT_BTN_ID) AS LINK_TY_NM
    		, BTN_TY
			, SCC.CD_NM BTN_TY_NM
			, BTN_NM
		FROM TMPLAT_BTN TB INNER JOIN SNS_COMMON_CODE SCC ON TB.BTN_TY = SCC.CD AND SCC.UP_CD = 'BTN_TY'
		<choose>
			<when test='auth_code == "ROLE_SYSADMIN"'>
				WHERE TMPLAT_CD = #{tmplat_cd}
			</when>
			<otherwise>
				WHERE MBER_NO = #{mber_no} AND TMPLAT_CD = #{tmplat_cd}
			</otherwise>
		</choose>
    </select>
    
    <select id="selectkakaoTmplBtnLink" parameterMap="kakaoMngVO" resultMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectkakaoTmplBtnLink] kakao 템플릿 버튼링크 */
	    SELECT LINK_TY
			, SCC.CD_NM LINK_TY_NM
			, LINK_URL
		FROM TMPLAT_BTN_LINK TB INNER JOIN SNS_COMMON_CODE SCC ON TB.LINK_TY = SCC.CD AND SCC.UP_CD IN('BTNTY02','BTNTY03')
		WHERE MBER_NO = #{mber_no} AND TMPLAT_CD = #{tmplat_cd}
    </select>
    
    
    <select id="selectCmpList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectCmpList] kakao 템플릿 회사정보 리스트 */
    	SELECT MBER_NO, CMPNM FROM ADD_MBER_INFO WHERE (ORG_ID IS NULL OR ORG_ID = '')
    	<if test="auth_code != null and auth_code !='' and auth_code == 'ROLE_ADMIN'">
    		AND MBER_NO = #{mber_no}
    	</if>
    </select>
    
    <select id="selectDeptList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectDeptList] kakao 템플릿 부서정보 리스트 */
    	SELECT SC.CLIENT_NM DEPT_NM, AMI.ORG_ID, SU.MBER_NO, SU.AUTH_CODE
    	FROM SNS_USER SU
    		INNER JOIN ADD_MBER_INFO AMI ON SU.MBER_NO = AMI.MBER_NO AND SU.ORG_SID = AMI.ORG_ID
    		INNER JOIN SNS_CLIENT SC ON SC.MBER_NO = SU.MBER_NO AND SC.ORG_SID = SU.ORG_SID
		WHERE AUTH_CODE NOT IN ('ROLE_ADMIN','ROLE_SYSADMIN') 
			AND AMI.ORG_ID IS NOT NULL
			AND SU.MBER_NO = #{mber_no}
		<if test="org_id != null and org_id !=''">
			AND SU.ORG_SID = #{org_id}
		</if>
		GROUP BY AMI.ORG_ID, AMI.MBER_NO, SC.CLIENT_NM
    </select>
    
    <select id="selectTmplatSeqCd" resultType="String" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectTmplatSeqCd] 템플릿 시퀀스 정보 */
    	SELECT IFNULL(CONCAT( #{tmplat_head},MAX(NUMB.NUM) + 1 ), CONCAT(#{tmplat_head},'1'))
		FROM (SELECT CAST(SUBSTRING(TMPLAT_CD, 11, 50) AS UNSIGNED) AS NUM FROM TMPLAT WHERE TMPLAT_CD like '${tmplat_head}%') AS NUMB
    </select>
    
    <insert id="insertKakaoTmplat" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertKakaoMng] kakao 템플릿 등록 */
	    INSERT INTO TMPLAT
				(
					MBER_NO
					, TMPLAT_CD
					, ORG_ID
					, TMPLAT_NM
					, TMPLAT_CN
					, USE_AT
					, STATUS
					, REGIST_ID
					, REGIST_DE
					, UPDT_ID
					, UPDT_DE
					, SEND_AT
					, PLUS_UUID
					, HLT_TYPE
					, HLT_MAIN_TITLE
					, HLT_SUB_TITLE
					, TMPL_MSG_TYPE
				)
			VALUES 
				(
					#{mber_no}
					, #{tmplat_cd}
					, #{org_id}
					, #{tmplat_nm}
					, #{tmplat_cn}
					, 'Y'
					, #{status}
					, #{usr_id}
					, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
					, #{usr_id}
					, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
					, 'N'
					, #{plus_uuid}
					, #{hlt_type}
					, #{hlt_main_title}
					, #{hlt_sub_title}
					, #{tmpl_msg_type}
				)
	</insert>
    
    <insert id="updateKakaoTmplat" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertKakaoMng] kakao 템플릿 수정 */
	    UPDATE TMPLAT SET
			 TMPLAT_NM 			= #{tmplat_nm}
			,TMPLAT_CN			= #{tmplat_cn}
			,STATUS				= 'TMPLATST01'
			,UPDT_ID			= #{usr_id}
			,UPDT_DE			= DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
			,SEND_AT			= 'N'
			,PLUS_UUID			= #{plus_uuid}
			,HLT_TYPE			= #{hlt_type}
			,HLT_MAIN_TITLE		= #{hlt_main_title}
			,HLT_SUB_TITLE		= #{hlt_sub_title}
			,tmpl_msg_type    = #{tmpl_msg_type}
		WHERE MBER_NO = #{mber_no} AND ORG_ID = #{org_id} AND TMPLAT_CD = #{tmplat_cd}
	</insert>
	
	<select id="selectMaxTmplatBtnId" resultType="int">
	/* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectMaxTmplatBtnId] kakao 템플릿버튼 키 */
		SELECT IFNULL(MAX(TMPLAT_BTN_ID), 1) FROM TMPLAT_BTN
	</select>
	
	<insert id="insertKakaoTmplatBtn" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertKakaoTmplatBtn] kakao 템플릿버튼 등록 */
		INSERT INTO TMPLAT_BTN
			(
				TMPLAT_BTN_ID
				, MBER_NO
				, TMPLAT_CD
				, BTN_TY
				, BTN_NM
				, ORG_ID
			)
		VALUES 
			(
				#{tmplat_btn_id}
				, #{mber_no}
				, #{tmplat_cd}
				, #{btn_ty}
				, #{btn_nm}
				, #{org_id}
			)
	</insert>
	
	<insert id="deleteKakaoTmplatBtnLink" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertKakaoTmplatBtn] kakao 템플릿버튼링크 삭제 */
		DELETE FROM TMPLAT_BTN_LINK WHERE TMPLAT_CD = #{tmplat_cd}
	</insert>
	
	<insert id="deleteKakaoTmplatBtn" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertKakaoTmplatBtn] kakao 템플릿버튼 삭제 */
		DELETE FROM TMPLAT_BTN WHERE TMPLAT_CD = #{tmplat_cd}
	</insert>
	
	<insert id="insertKakaoTmplatLink" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertKakaoTmplatLink] kakao 템플릿링크 등록 */
		INSERT INTO TMPLAT_BTN_LINK
			(
				TMPLAT_BTN_ID
				, MBER_NO
				, TMPLAT_CD
				, BTN_TY
				, LINK_TY
				, LINK_URL
				, ORG_ID
			)
		VALUES 
			(
				#{tmplat_btn_id}
				, #{mber_no}
				, #{tmplat_cd}
				, #{btn_ty}
				, #{link_ty}
				, #{link_url}
				, #{org_id}
			)
	</insert>
	
	
	<select id="countKakaoProfile" parameterMap="kakaoMngVO" resultType="int">
        /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.countKakaoProfile] kakao 프로필 목록 카운트 */
       	 SELECT
	     		COUNT(0)
	       FROM PROFILE AS PP INNER JOIN ADD_MBER_INFO AS AMI ON PP.MBER_NO = AMI.MBER_NO AND PP.ORG_ID = AMI.ORG_ID
							  INNER JOIN SNS_COMMON_CODE SCC ON pp.status = SCC.CD AND SCC.UP_CD = 'PROFL_ST'
	      WHERE 1=1
	     <include refid="searchProfileQuery"/>
	</select>   
     
     <select id="listKakaoProfile" parameterMap="kakaoMngVO" resultMap="kakaoMngVO">
        /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.listKakaoProfile] kakao 프로필 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
		            SELECT PP.MBER_NO
						, PP.ORG_ID
			            , PP.CTGRY_CD
						, PP.CTGRY_NM
						, PP.SENDER_KEY
						, PP.PLUS_UUID
						, PP.PLUS_NM
						, PP.TOKEN
						, PP.PHN_NUM
						, PP.USE_AT
						, PP.STATUS
						, SCC.CD_NM AS STATUS_NM
						, PP.PLUS_STATUS
						, CONCAT(SUBSTR(PP.REGIST_DE, 1,4), '-', SUBSTR(PP.REGIST_DE, 5,2), '-', SUBSTR(PP.REGIST_DE, 7,2)) REGIST_DE 
						, AMI.CMPNM
					FROM PROFILE AS PP INNER JOIN ADD_MBER_INFO AS AMI ON PP.MBER_NO = AMI.MBER_NO AND PP.ORG_ID = AMI.ORG_ID
						INNER JOIN SNS_COMMON_CODE SCC ON pp.status = SCC.CD AND SCC.UP_CD = 'PROFL_ST'
				    WHERE 1=1
				    AND (PP.USE_AT != 'N' OR PP.USE_AT IS NULL)
			     	<include refid="searchProfileQuery"/>
			     	ORDER BY PP.REGIST_DE DESC
		            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
        	) C        
		ORDER BY RNUM DESC
		LIMIT #{firstIndex}, #{recordCountPerPage}
       
    </select>
    
    <update id="chgProfStatusRequest" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.chgProfStatusRequest] kakao 프로필 상태 변경요청*/
		UPDATE PROFILE SET STATUS = #{status} 
		WHERE MBER_NO = #{mber_no} AND PLUS_UUID = #{plus_uuid}
    </update>
    
    <select id="selectKakaoProfileDetail" parameterMap="kakaoMngVO" resultMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectKakaoProfileDetail] kakao 프로필 상세정보*/
    	SELECT PP.MBER_NO
			, PP.ORG_ID
            , PP.CTGRY_CD
			, PP.CTGRY_NM
			, PP.SENDER_KEY
			, PP.PLUS_UUID
			, PP.PLUS_NM
			, PP.TOKEN
			, PP.PHN_NUM
			, PP.USE_AT
			, PP.STATUS
			, SCC.CD_NM AS STATUS_NM
			, PP.PLUS_STATUS
			, IF(PP.REGIST_DE = '' OR PP.REGIST_DE = NULL, NULL, CONCAT(SUBSTR(PP.REGIST_DE, 1,4), '-', SUBSTR(PP.REGIST_DE, 5,2), '-', 
						SUBSTR(PP.REGIST_DE, 7,2), ' ', SUBSTR(PP.REGIST_DE, 9,2), ':', SUBSTR(PP.REGIST_DE, 11,2))) REGIST_DE
			, IF(PP.TOKEN_AUTH_DE = '' OR PP.TOKEN_AUTH_DE = NULL, NULL, CONCAT(SUBSTR(PP.TOKEN_AUTH_DE, 1,4), '-', SUBSTR(PP.TOKEN_AUTH_DE, 5,2), '-', 
						SUBSTR(PP.TOKEN_AUTH_DE, 7,2), ' ', SUBSTR(PP.TOKEN_AUTH_DE, 9,2), ':', SUBSTR(PP.TOKEN_AUTH_DE, 11,2))) TOKEN_AUTH_DE
			, IF(PP.DELETE_DE = '' OR PP.DELETE_DE = NULL, NULL, CONCAT(SUBSTR(PP.DELETE_DE, 1,4), '-', SUBSTR(PP.DELETE_DE, 5,2), '-', 
				SUBSTR(PP.DELETE_DE, 7,2), ' ', SUBSTR(PP.DELETE_DE, 9,2), ':', SUBSTR(PP.DELETE_DE, 11,2))) DELETE_DE
			, AMI.CMPNM
		FROM PROFILE AS PP INNER JOIN ADD_MBER_INFO AS AMI ON PP.MBER_NO = AMI.MBER_NO AND PP.ORG_ID = AMI.ORG_ID 
			INNER JOIN SNS_COMMON_CODE SCC ON PP.STATUS = SCC.CD AND SCC.UP_CD = 'PROFL_ST'
		WHERE PP.MBER_NO = #{mber_no}
		  AND PP.PLUS_UUID = #{plus_uuid}
		  AND PP.ORG_ID = #{org_id}
    </select>
    
    <select id="listProfInfo" resultMap="kakaoMngVO" parameterType="Map">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.listProfInfo] kakao 등록된 프로필정보 */
    	SELECT P.MBER_NO, P.ORG_ID, P.PLUS_NM, P.PLUS_UUID, SU.AUTH_CODE FROM PROFILE P, SNS_USER SU
		WHERE P.USE_AT = 'Y' AND P.STATUS = 'PROFLST01' AND P.MBER_NO = SU.MBER_NO AND P.ORG_ID = SU.ORG_SID
		<if test="auth_code != null and auth_code !='' and auth_code == 'ROLE_ADMIN'">
			AND P.MBER_NO = #{mber_no}
		</if>
		<if test="auth_code != null and auth_code !='' and (auth_code == 'ROLE_MC_MNGR' or auth_code == 'ROLE_CORE_MNGR')">
			AND P.MBER_NO = #{mber_no} AND P.ORG_ID = #{org_id}
		</if>
    </select>
    
    <select id="selectProfileList" resultMap="kakaoMngVO" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectProfileList] 회사정보의 프로필리스트 */
	    SELECT P.MBER_NO, P.ORG_ID, P.PLUS_NM, P.PLUS_UUID, SU.AUTH_CODE FROM PROFILE P, SNS_USER SU
		WHERE USE_AT = 'Y'
			and P.ORG_ID = SU.ORG_SID 
			AND P.MBER_NO = SU.MBER_NO
			AND P.MBER_NO = #{mber_no}
			AND P.ORG_ID = #{org_id}
			AND P.STATUS = 'PROFLST01'
    </select>
    
    <select id="selectSenderKey" resultMap="kakaoMngVO" parameterMap="kakaoMngVO"> 
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectSenderKey] kakao 프로필 senderKey */
    <!-- 1. 똑같은 uuid 로 여러 org 에서 사용하는 경우가 생김 2. 한개의 org 로 여러 uuid 사용하는 경우 생김 ==> 으로 인해 uuid 와 org 둘다 사용 -->
	    SELECT SENDER_KEY, MBER_NO, ORG_ID, PLUS_UUID FROM PROFILE
		WHERE USE_AT = 'Y'
			 AND PLUS_UUID = #{plus_uuid}
			 AND ORG_ID = #{org_id}
	</select>
	
	<select id="selectSenderKeyByOrg" resultMap="kakaoMngVO" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.selectSenderKeyByOrg] kakao 프로필 senderKey */
	    SELECT SENDER_KEY, MBER_NO, ORG_ID FROM PROFILE
		WHERE USE_AT = 'Y' AND ORG_ID = #{org_id}
			<if test="auth_code != null and auth_code !='' and auth_code != 'ROLE_ADMIN' and auth_code != 'ROLE_SYSADMIN'">
				 AND MBER_NO = #{mber_no} AND ORG_ID = #{org_id}
			</if>
	</select>
    
    <select id="listKakaoCate" parameterMap="kakaoMngVO" resultMap="cmmonResultMap">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.listKakaoCate] kakao 프로필 카테고리 정보 */
		SELECT *
		FROM SNS_COMMON_CODE
		WHERE UP_CD = #{up_cd}
			AND USE_YN = 'Y'
			AND (CD_NM LIKE CONCAT('%',#{cd_nm},'%') OR CD LIKE CONCAT ('%',#{cd_nm},'%'))
		ORDER BY SRT_ORD
    </select>
    
    
    <insert id="insertProfToken" parameterMap="kakaoMngVO">
    /* [i2c.biz.admin.kakaoMng.dao.KakaoMngDAO.insertProfToken] kakao 토큰 등록*/
   		 INSERT INTO PROFILE
			(
				MBER_NO
				, ORG_ID
				, CTGRY_CD
				, CTGRY_NM
				, SENDER_KEY
				, PLUS_UUID
				, PLUS_NM
				, TOKEN
				, PHN_NUM
				, USE_AT
				, STATUS
				, PLUS_STATUS
				, TOKEN_AUTH_DE
				, DELETE_DE
				, REGIST_ID
				, REGIST_DE
				, UPDT_ID
				, UPDT_DE
			)
		VALUES 
			(
				#{mber_no}
				, #{org_id}
				, #{ctgry_cd}
				, (
					SELECT  CD_NM
					FROM    SNS_COMMON_CODE
					WHERE   UP_CD = 'PROFLCTGRY'
						AND     USE_YN = 'Y'
					    AND CD = #{ctgry_cd}
				)
				, #{sender_key}
				, #{plus_uuid}
				, #{plus_nm}
				, #{token}
				, #{phn_num}
				, 'Y'
				, 'PROFLST01'
				, 'A'
				, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
				, ''
				, #{user_info}
				, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
				, #{user_info}
				, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
    </insert>
    
    
</mapper>