<?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="i2c.biz.admin.srvmngh.dao.SrvmnghDAO">
 	
 	<sql id="searchQuery">  
		<choose>
       		<when test="type == 0">
	    	AND service_type = '0'
	   		</when>
	   		<when test="type == 2">
	    	AND service_type = '2'
	   		</when>
	   		<when test="type == 3">
	    	AND service_type = '3'
	   		</when>
	   		<when test="type == 1008">
	    	AND msg_type = '1008'
	   		</when>
	   		<when test="type == 1009">
	    	AND msg_type = '1009'
	   		</when>
   		</choose>
    	<if test="searchText != null and searchText !=''"> 
          	<if test="search_type == 'sender_id'">
          	AND noti_group_id = #{searchText}
          	</if>
          	<if test="search_type == 'sender_name'">
          	AND charger = #{searchText}
          	</if>
          	<if test="search_type == 'sender_num'">
          	AND callback = #{searchText}
          	</if>
          	<if test="search_type == '080'">
          	AND callback = #{searchText}
          	</if>
          	<if test="search_type == 'subject'">
          	AND SUBJECT LIKE CONCAT('%', #{searchText}, '%')
          	</if>
          	<if test="search_type == 'content'">
          	AND CONTENTS LIKE CONCAT('%', #{searchText}, '%')
          	</if>
      	</if>
		<if test="searchSdate != null and searchSdate !='' and searchEdate !=null and searchEdate !='' ">
       		<!-- AND create_date BETWEEN CONCAT(REPLACE(#{searchSdate}, '-', ''), '000000') AND CONCAT(REPLACE(#{searchEdate}, '-', ''), '000000') -->
      		AND create_date BETWEEN CONCAT(REPLACE(#{searchSdate}, '-', ''), '000000') AND CONCAT(REPLACE(#{searchEdate}, '-', ''), '235959')
      	</if>
    </sql> 
 	
 	<sql id="searchUseMessage">
 		<if test="searchKeyword != null and searchKeyword !=''"> 
          	<if test="searchCondition == 'sender_name'">          		
          		AND SU.USR_NM LIKE CONCAT('%', #{searchKeyword}, '%')
          	</if>
          	<if test="searchCondition == '080_num'">
          		AND TD.ARS_080_NUM LIKE CONCAT('%', #{searchKeyword}, '%')          		
          	</if>
        </if>
        
		<if test="searchSdate != null and searchSdate !='' and searchEdate !=null and searchEdate !='' and (searchExcelDate = null or searchExcelDate = '')">
      		AND DATE_CLIENT_REQ BETWEEN CONCAT(REPLACE(#{searchSdate}, '-', ''), '000000') AND CONCAT(REPLACE(#{searchEdate}, '-', ''), '235959')
      	</if>
      	
		<if test="searchExcelDate != null and searchExcelDate != ''">
      		AND DATE_FORMAT(DATE_CLIENT_REQ, '%Y-%m') = #{searchExcelDate}
      	</if>
      	
      	<if test="smsCrsf != null and talkCrsf == null">
      		AND TD.SERVICE_TYPE IN
      		<foreach collection="smsCrsf" item="type" open="(" close=")" separator=",">
      			#{type}
      		</foreach>
      	</if>
      	<if test="smsCrsf == null and talkCrsf != null">
      		AND TD.MSG_TYPE IN
      		<foreach collection="talkCrsf" item="type" open="(" close=")" separator=",">
      			#{type}
      		</foreach>
      	</if>
      	<if test="smsCrsf != null and talkCrsf != null">
      		AND ( 
      		<foreach collection="smsCrsf" item="type" separator="OR">
      			TD.SERVICE_TYPE = #{type}
      		</foreach>
      		OR
      		<foreach collection="talkCrsf" item="type" separator="OR">
      			TD.MSG_TYPE = #{type}
      		</foreach>
      		)
      	</if>
      	
      	<if test="search_org_id != null and search_org_id != ''">
      		AND TD.ORG_ID = #{search_org_id}
      	</if>
      	
      	
      	<if test="auth_code != null and auth_code !='' and auth_code == 'ROLE_ADMIN'">
			AND SU.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 SU.MBER_NO = #{mber_no} AND SU.ORG_SID = #{org_sid}
		</if>
      	
      	<if test="type != '' and type != null">
          <choose>
       		<when test="type == 0">
	    	AND TD.SERVICE_TYPE = '0'
	   		</when>
	   		<when test="type == 2">
	    	AND TD.SERVICE_TYPE = '2'
	   		</when>
	   		<when test="type == 3">
	    	AND TD.SERVICE_TYPE = '3'
	   		</when>
	   		<when test="type == 1008">
	    	AND TD.MSG_TYPE = '1008'
	   		</when>
	   		<when test="type == 1009">
	    	AND TD.MSG_TYPE = '1009'
	   		</when>
   		 </choose>
       </if>
	</sql>
	
	<sql id="searchTmplQuery">
    	<if test="searchKeyword != null and searchKeyword !='' and searchCondition == 'tmpNm'"> 
    		AND TD.TMPL_NAME LIKE CONCAT('%',#{searchKeyword},'%')
    	</if>
    	<if test="searchKeyword != null and searchKeyword !='' and searchCondition == 'tmpCd'"> 
    		AND TD.SEMA_TEMPLETE_CODE LIKE CONCAT('%',#{searchKeyword},'%')
    	</if>
    	<if test="searchKeyword != null and searchKeyword !='' and searchCondition == ''"> 
    		AND (TD.TMPL_NAME LIKE CONCAT('%',#{searchKeyword},'%') OR TD.SEMA_TEMPLETE_CODE LIKE CONCAT('%',#{searchKeyword},'%'))
    	</if>
<!--     	
    	<if test="msgTypeMO == 'MSG' or msgTypeMO == 'SMS' or msgTypeMO == 'LMS' or msgTypeMO == 'MMS'">
    		AND TD.SERVICE_TYPE IN ('0','2','3')
    	</if>
    	<if test="msgTypeMO == 'KKO'">
    		AND TD.MSG_TYPE = '1008'
    	</if>
    	<if test="msgTypeMO == 'KKF'">
    		AND TD.MSG_TYPE = '1009'
    	</if>
-->
    	<if test="mber_no != '' and mber_no != null">
    		AND TD.MBER_NO = #{mber_no}
    	</if>
    	<if test="org_id != '' and org_id != null">
    		AND TD.ORG_ID = #{org_id}
    	</if>
    </sql>
	
	<sql id="searchMessageDetail">
		<if test="searchKeyword != null and searchKeyword !=''"> 
          	<if test="searchCondition == 'msgDtlId'">          		
          		AND ESL.MT_PR LIKE CONCAT('%', #{searchKeyword}, '%')
          	</if>
          	<if test="searchCondition == 'phnNum'">          		
          		AND ESL.RECIPIENT_NUM LIKE CONCAT('%', #{searchKeyword}, '%')
          	</if>
          	<if test="searchCondition == 'cntcId' and (serviceType != null or serviceType != '')">          		
          		AND ESL.MSG_KEY LIKE CONCAT('%', #{searchKeyword}, '%')
          	</if>
        </if> 
	</sql>
	
 	
 	<select id="selectSendCount"  parameterType="i2c.biz.admin.srvmngh.vo.SrvmnghVO" resultType="Integer">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.selectSendCount] selectSendCount 조회 전체 건수 */
		select count(b.seq) 
		  from ( 
				SELECT 
				         seq
				       , noti_group_id
				       , msg_type
				       , service_type
					   , subject
					   , callback
					   , tmp_book_yn
					   , all_cnt
					   , fail_cnt
					   , (select count(tb.ban_seq) from t_ban tb,t_per tp where tb.recipient_ban_num = tp.recipient_num and tp.seq = a.seq) as block_sender_cnt
					   , (select cmpnm from add_mber_info ami,t_data t where ami.mber_no = t.mber_no and t.callback = a.callback group by callback) as cmpnm
					   , (select charger from add_mber_info ami,t_data t where ami.mber_no = t.mber_no and t.callback = a.callback group by callback) as charger
					   , tmp_book_yn as msg_status
					   , date_client_req as send_de
					   , create_date
					   , mber_no
					   , org_id
				  FROM 
				       (select *
						  from t_data) a
				WHERE 1=1
				  AND tmp_book_yn != 'T' ) b
	    WHERE 1=1 
          <if test="search_mber_no != 'all' and search_mber_no != null">
          AND mber_no = #{search_mber_no}
          <if test="search_org_id != 'all' and search_org_id != null">
	          AND org_id = #{search_org_id}
	          </if>
          </if>
		  <include refid="searchQuery"/>
    </select>

   	<select id="listSrvmngh"  parameterType="i2c.biz.admin.srvmngh.vo.SrvmnghVO" resultType="i2c.biz.admin.srvmngh.vo.SrvmnghVO">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.listSrvmngh] listSrvmngh 조회 리스트  */
		SELECT 
		         seq
		       , noti_group_id
		       , msg_type
		       , service_type
			   , subject
			   , callback
			   , tmp_book_yn
			   , all_cnt
			   , success_cnt
			   , fail_cnt
			   , (select count(tb.ban_seq) from t_ban tb,t_per tp where tb.recipient_ban_num = tp.recipient_num and tp.seq = a.seq) as block_sender_cnt
			   , (select cmpnm from add_mber_info ami,t_data t where ami.mber_no = t.mber_no and t.callback = a.callback group by callback) as cmpnm
			   , (select charger from add_mber_info ami,t_data t where ami.mber_no = t.mber_no and t.callback = a.callback group by callback) as charger
			   , tmp_book_yn as msg_status
			   , DATE_FORMAT(date_client_req, "%Y-%m-%d %H:%i") as send_de
			   , mber_no
			   , org_id
			   , (@ROWNUM  := @ROWNUM + 1) RNUM  
		  FROM 
		       (select 
				       *
				  from t_data) a
			  , (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
		WHERE 1=1
		  AND tmp_book_yn != 'T'
		  <if test="search_mber_no != 'all' and search_mber_no != null">
          AND mber_no = #{search_mber_no}
	          <if test="search_org_id != 'all' and search_org_id != null">
	          AND org_id = #{search_org_id}
	          </if>
          </if>
		  <include refid="searchQuery"/>
		ORDER BY date_client_req desc
		LIMIT #{firstIndex}, #{recordCountPerPage}	
    </select>
    
    <select id="chargeCount"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="Integer">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.chargeCount] chargeCount 청구 조회 전체 건수 */
		SELECT count(c.usr_id)
		  FROM	
		  		(
				SELECT   a.use_month,sum(a.AMOUNT) as amount
						,b.*
				  FROM   dtls_his a
				       , add_mber_info b
				 WHERE   
				 		 1=1  
				   AND   a.usr_id = b. USR_ID
				   AND   a.use_month BETWEEN #{charge_start_de} AND #{charge_end_de}
				<choose>
			    	<when test='search_all_yn == "N"'>
			    		AND a.payment_status = 'N'
			   		</when>
			   		<when test='search_all_yn == "none"'>
			    		AND a.payment_status != 'N' 
			    		AND a.payment_status != 'Y'
			   		</when>
				</choose>
			  GROUP BY USE_MONTH ,USR_ID 
			  ORDER BY USE_MONTH DESC
			  ) c
    </select>
    
    <!-- AMOUNT/10을 하는 이유는 부가세를 계산하기 위함 -->
    <select id="chargeList"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.chargeList] chargeList 청구 조회  */
    	SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
					SELECT   a.use_month
							,sum(a.AMOUNT) + sum(a.AMOUNT)/10 as amount
							,a.payment_status
							,FN_GET_USR_NM(b.USR_ID) as usrNm
							,b.*							
					  FROM   dtls_his a
					       , add_mber_info b					       
					 WHERE   
					 		 1=1  
					   AND   a.usr_id = b. USR_ID
					   AND   a.use_month BETWEEN #{charge_start_de} AND #{charge_end_de}
				   	<choose>
				    	<when test='search_all_yn == "N"'>
				    		AND a.payment_status = 'N'
				   		</when>
				   		<when test='search_all_yn == "none"'>
				    		AND a.payment_status != 'N' 
				    		AND a.payment_status != 'Y'
				   		</when>
					</choose>
				  GROUP BY USE_MONTH ,USR_ID 
				  ORDER BY USE_MONTH DESC
				  ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
	 	 ) C	        
		ORDER BY RNUM		
	  	LIMIT #{firstIndex}, #{recordCountPerPage}
    </select>
    
    <select id="selectCharge"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.selectCharge] selectCharge 회원사별 서비스 현황 조회  */
  		SELECT   a.use_month
  			   , sum(a.AMOUNT) + sum(a.AMOUNT)/10 as amount
  			   , FN_GET_USR_NM(b.USR_ID) as usrNm
  			   , b.*
		  FROM   dtls_his a
		       , add_mber_info b
		 WHERE   
		 		 1=1  
		   AND   a.usr_id = b.USR_ID
	    <choose>
	    	<when test='search_all_yn == "N"'>
	    		AND a.payment_status = 'N'
	   		</when>
	   		<when test='search_all_yn == "none"'>
	    		AND a.payment_status != 'N' 
	    		AND a.payment_status != 'Y'
	   		</when>
		</choose>
   	    <if test='null != use_month'>
	       AND a.use_month = #{use_month}
	    </if>
	    <if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id) == false">
	   		AND B.USR_ID = #{usr_id}
	    </if>
	  GROUP BY USE_MONTH ,USR_ID 
	  ORDER BY USE_MONTH DESC
    </select>
    
    <select id="useMonthList" parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.cmm.base.CommonResultMap">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.useMonthList] useMonthList 청구 조회  */
		select 
				 use_month
		  from 
		  		 dtls_his
 		 where 
 		 	     1=1
	       AND   USR_ID = #{usr_id}
	  group by   USE_MONTH,USR_ID
 	  order by   USE_MONTH ASC;
    </select>
    
    <select id="useSelectMonthList" parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.cmm.base.CommonResultMap">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.useSelectMonthList] useSelectMonthList 청구 조회  */
		select 
				 use_month
		  from 
		  		 dtls_his
 		 where 
 		 	     1=1
	       AND   ORG_ID = #{org_sid}
	  group by   USE_MONTH,USR_ID
 	  order by   USE_MONTH ASC;
    </select>
    
    <select id="selectMberLevel"  parameterType="i2c.biz.admin.srvmngh.vo.MberVO" resultType="i2c.biz.admin.srvmngh.vo.MberVO">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.selectMberLevel] selectMberLevel 회원사 레벨 조회  */
  		SELECT a.*, b.*
 		  FROM sub_mber_info a,mber_level b
 		 WHERE 1=1
 		   AND a.LEVEL_CD = b.LEVEL_CD
    </select>

	<update id="cancelSend"  parameterType="String">
		/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.cancelSend] cancelSend 발송취소  */
		UPDATE T_DATA 
	       SET tmp_book_yn = 'N'
         WHERE noti_group_id   = #{noti_group_id} 
	</update>

  <select id="useMessageSttusCnt"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="int">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.useMessageSttusCnt] useMessageSttusCnt 메시지 사용현황 건수  */
    	SELECT COUNT(0)
    	FROM T_DATA AS TD INNER JOIN SNS_USER AS SU ON TD.MBER_NO = SU.MBER_NO AND TD.ORG_ID = SU.ORG_SID
			LEFT JOIN SUB_MBER_INFO AS SMI ON SU.USR_ID = SMI.USR_ID
    	WHERE 1=1
    	AND TD.TMP_BOOK_YN != 'T'
    	<include refid="searchUseMessage"/>
    </select>
    
    <select id="useMessageSttusList"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.useMessageSttusList] useMessageSttusList 메시지 사용현황 리스트  */
    	SELECT * FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
            FROM (
                SELECT SU.USR_NM	USRNM
                , SU.LOGIN_ID		SENDERID
                , TD.SEQ			MSGSENDID
                , TD.CREATE_ID		CREATEID
                , TD.MSG_TYPE		MSGTYPE
                , TD.SERVICE_TYPE	SERVICETYPE
                , TD.CONTENT
                , DATE_FORMAT(TD.DATE_CLIENT_REQ, "%Y-%m-%d %H:%i")	DATECLIENTREQ
                , (CASE		
                	WHEN TD.MSG_TYPE IS NULL OR TD.MSG_TYPE = '' THEN
               			CASE
                			WHEN TD.SERVICE_TYPE = '0' THEN 'SMS'
                           	WHEN TD.SERVICE_TYPE = '2' THEN 'MMS'
                           	WHEN TD.SERVICE_TYPE = '3' THEN 'LMS'
                           	ELSE ''
                          	END
                    WHEN TD.MSG_TYPE IS NOT NULL AND TD.MSG_TYPE != '' THEN
                       	CASE
                       		WHEN TD.SERVICE_TYPE IS NULL OR TD.SERVICE_TYPE = '' THEN
                       			CASE
              						WHEN TD.MSG_TYPE = '1008' THEN '알림톡'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NULL THEN '친구톡T'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NOT NULL THEN '친구톡I'
		                           	ELSE ''
		                        END
		                    WHEN TD.SERVICE_TYPE IS NOT NULL AND TD.SERVICE_TYPE != '' THEN
                       			CASE
              						WHEN TD.MSG_TYPE = '1008' AND TD.SERVICE_TYPE = '0' THEN '알림톡(SMS)'
              						WHEN TD.MSG_TYPE = '1008' AND TD.SERVICE_TYPE = '3' THEN '알림톡(LMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NULL AND TD.SERVICE_TYPE = '0' THEN '친구톡T(SMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NULL AND TD.SERVICE_TYPE = '3' THEN '친구톡T(LMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NOT NULL AND TD.SERVICE_TYPE = '0' THEN '친구톡I(SMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NOT NULL AND TD.SERVICE_TYPE = '3' THEN '친구톡I(LMS)'
		                           	ELSE ''
		                        END
		                    ELSE ''
		                END
		            ELSE ''
		        END
                  )	MSGKINDNM
                  , (
						CASE WHEN SU.AUTH_CODE = 'ROLE_ADMIN'
							THEN 'ADMIN'
							WHEN SU.AUTH_CODE = 'ROLE_CORE_MNGR'
							THEN 'CORE'
							WHEN SU.AUTH_CODE = 'ROLE_MC_MNGR'
							THEN 'MC'
						ELSE NULL END ) AS SYSTYNM
			      <!-- , (SELECT CD_NM FROM SNS_COMMON_CODE WHERE CD = TD.MSG_STATUS AND UP_CD = 'MSG_ST') AS MSGSTATUSNM
			      , TD.MSG_STATUS	MSGSTATUS -->
			      , (CASE WHEN TD.TMP_BOOK_YN  = 'Y'
						   THEN '예약대기'
					      WHEN TD.TMP_BOOK_YN = 'C'
						   THEN '발송취소' 
						  WHEN TD.TMP_BOOK_YN = 'S'
						   THEN '발송완료' 
						   ELSE '' END
					) AS MSGSTATUSNM
				   , TD.TMP_BOOK_YN		MSGSTATUS
				   , ALL_CNT
				   , FAIL_CNT
				   <!-- , (SELECT 
						   COUNT(RNM.REJECT_ID)				 
					  FROM ARS_NUM_MNG ANM
					     , REJECT_NUM_MNG RNM
					 WHERE ANM.ARS_ID = RNM.ARS_ID			   
					   AND ANM.MBER_NO = TD.MBER_NO
					   AND ANM.ORG_ID = TD.ORG_ID
					   AND ANM.ARS_NUM = TD.ARS_080_NUM
					   AND ANM.USE_AT = 'Y') REJECT_CNT -->
				   , SUCCESS_CNT
				   , FAILBACK_CNT
				   , ARS_080_NUM
				   , (SELECT CD_NM FROM SNS_COMMON_CODE WHERE UP_CD = 'MSG_CL_TY' AND TD.MSG_CL_TYPE = CD) AS MSGCLTYPENM
				FROM T_DATA AS TD INNER JOIN SNS_USER AS SU ON TD.MBER_NO = SU.MBER_NO AND TD.ORG_ID = SU.ORG_SID
                WHERE 1=1
                AND TD.TMP_BOOK_YN != 'T'
                <include refid="searchUseMessage"/>
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
             ORDER BY DATECLIENTREQ
        ) C
		ORDER BY RNUM DESC
		LIMIT #{firstIndex} , #{recordCountPerPage}	
    </select>
    
    
    <select id="getMsgDataByMsgId"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
    	SELECT TD.SEQ			MSGSENDID 
    		,ALL_CNT		
    		,SUCCESS_CNT		
    		,FAILBACK_CNT		
    		,FAIL_CNT		
    		,(SELECT CD_NM FROM SNS_COMMON_CODE WHERE CD = TD.MSG_STATUS AND UP_CD = 'MSG_ST') AS MSGSTATUSNM
                , (CASE		
                	WHEN TD.MSG_TYPE IS NULL OR TD.MSG_TYPE = '' THEN
               			CASE
                			WHEN TD.SERVICE_TYPE = '0' THEN 'SMS'
                           	WHEN TD.SERVICE_TYPE = '2' THEN 'MMS'
                           	WHEN TD.SERVICE_TYPE = '3' THEN 'LMS'
                           	ELSE ''
                          	END
                    WHEN TD.MSG_TYPE IS NOT NULL AND TD.MSG_TYPE != '' THEN
                       	CASE
                       		WHEN TD.SERVICE_TYPE IS NULL OR TD.SERVICE_TYPE = '' THEN
                       			CASE
              						WHEN TD.MSG_TYPE = '1008' THEN '알림톡'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NULL THEN '친구톡T'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NOT NULL THEN '친구톡I'
		                           	ELSE ''
		                        END
		                    WHEN TD.SERVICE_TYPE IS NOT NULL AND TD.SERVICE_TYPE != '' THEN
                       			CASE
              						WHEN TD.MSG_TYPE = '1008' AND TD.SERVICE_TYPE = '0' THEN '알림톡(SMS)'
              						WHEN TD.MSG_TYPE = '1008' AND TD.SERVICE_TYPE = '3' THEN '알림톡(LMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NULL AND TD.SERVICE_TYPE = '0' THEN '친구톡T(SMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NULL AND TD.SERVICE_TYPE = '3' THEN '친구톡T(LMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NOT NULL AND TD.SERVICE_TYPE = '0' THEN '친구톡I(SMS)'
		                           	WHEN TD.MSG_TYPE = '1009' AND KAKAO_IMG_URL IS NOT NULL AND TD.SERVICE_TYPE = '3' THEN '친구톡I(LMS)'
		                           	ELSE ''
		                        END
		                    ELSE ''
		                END
		            ELSE ''
		        END
                  )	MSGKINDNM
            ,(
				CASE WHEN SU.AUTH_CODE = 'ROLE_ADMIN'
					THEN 'COMP_ADMIN'
					WHEN SU.AUTH_CODE = 'ROLE_CORE_MNGR'
					THEN 'CORE'
					WHEN SU.AUTH_CODE = 'ROLE_MC_MNGR'
					THEN 'MC'
				ELSE NULL END ) AS SYSTYNM
            , (CASE WHEN TD.TMP_BOOK_YN  = 'Y'
						   THEN '예약발송'
					             WHEN TD.TMP_BOOK_YN = 'N'
						   THEN '일반발송' 
						   ELSE '' END
					) AS TMPBOOKYNNM
            ,DATE_FORMAT(TD.DATE_CLIENT_REQ, "%Y-%m-%d %H:%i")	DATECLIENTREQ
            ,(SELECT DATE_FORMAT(MAX(DATE_RSLT), "%Y-%m-%d %H:%i") FROM ${msgLogTable} WHERE SEQ = #{msgSendId}) DATERSLT
	    	,TD.SUBJECT			SUBJECT
	    	,SU.USR_NM			USRNM
	    	,TD.CALLBACK		CALLBACKNUM
	    	,TD.MBER_NO			MBER_NO
	    	,TD.ORG_ID			ORG_ID
	    	,AMI.CMPNM
	    	,(SELECT ARS_NUM FROM ARS_NUM_MNG AS ANM WHERE ANM.MBER_NO = TD.MBER_NO AND ANM.ORG_ID = TD.ORG_ID) AS ARS_NUM
	    	, ARS_080_NUM
			, (SELECT CD_NM FROM SNS_COMMON_CODE WHERE UP_CD = 'MSG_CL_TY' AND TD.MSG_CL_TYPE = CD) AS MSGCLTYPENM
	    	<!-- ,(SELECT TMPLAT_CD FROM TMPLAT WHERE MBER_NO = TD.MBER_NO AND ORG_ID = TD.ORG_ID LIMIT 1)	TMPLAT_CD
	    	,(SELECT TMPLAT_CN FROM TMPLAT WHERE MBER_NO = TD.MBER_NO AND ORG_ID = TD.ORG_ID LIMIT 1)	TMPLAT_CN -->
    	FROM T_DATA AS TD INNER JOIN SNS_USER AS SU ON TD.MBER_NO = SU.MBER_NO AND TD.ORG_ID = SU.ORG_SID
    		LEFT JOIN ADD_MBER_INFO AS AMI ON SU.USR_ID = AMI.USR_ID
    	WHERE SEQ = #{msgSendId}
    </select>
    
    <select id ="testList" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO" parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
    	SELECT
    		 noti_id			MSGSENDID
    		,noti_group_id		MSGKINDNM
    		,activityid			MSGCLTYPENM
    		,dataExtensionobj	Content
    		,mber_no			Success_cnt
    		,org_id				All_cnt
    		,callback			Failback_cnt
    		,date_client_req	Fail_cnt
    		,msg_cl_type		DateClientReq
    		,tmp_book_yn		MsgStatusNm
    	from mc_ca_data_2man
    	LIMIT #{firstIndex} , #{recordCountPerPage}	
    </select>
    
    <select id ="testListCnt" resultType="int" parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
    	SELECT
    		 count(0)
    	from mc_ca_data_2man
    </select>
    
    <select id="tableChk" resultType="int">
    /* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.tableChk] 테이블 존재 여부 */
		SELECT 
			   count(*) 
		  FROM Information_schema.tables
		 WHERE table_schema = 'i2sema'
		   AND table_name = #{logTable}
    </select>
    
    
    <select id="useMessageSttusDetailCnt"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="int">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.useMessageSttusDetailCnt] useMessageSttusDetailCnt 메시지 상세내역 건수  */
    	SELECT COUNT(0)
    	FROM ${msgLogTable} AS ESL
		WHERE 1=1 AND ESL.SEQ = #{msgSendId}
		<include refid="searchMessageDetail"/>
    </select>
    
    <select id="useMessageSttusDetailList"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.useMessageSttusDetailList] useMessageSttusDetailList 메시지 상세내역 리스트  */
    	SELECT * FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
                SELECT ESL.MT_PR		MSGDTLID
                <if test="serviceType != null and serviceType != ''">
                	, ESL.MSG_KEY		CONTACTID
                </if>
				, ESL.RECIPIENT_NUM		RECIPIENTNUM
				, ESL.MSG_STATUS 		MSGSTATUS
				,(CASE WHEN ESL.MSG_STATUS IN ('1', '2') 
                           THEN '대기'
                           WHEN ESL.MSG_STATUS IN ('3') 
                           <if test="serviceType != null and serviceType != ''">
                           		AND ESL.MT_REPORT_CODE_IB IN ('1000')
                           </if>
                           <if test="serviceType == null or serviceType == ''">
                           		AND ESL.REPORT_CODE IN ('1000')
                           </if>
                           THEN '성공'
                           ELSE '실패' END
                  ) MSGSTATUSNM
				, DATE_FORMAT(ESL.DATE_MT_SENT, "%Y-%m-%d %H:%i")		DATEMTSENT
				, DATE_FORMAT(ESL.DATE_RSLT, "%Y-%m-%d %H:%i")			DATERSLT
				, ESL.CONTENT
				<if test="serviceType != null and serviceType != ''">
                , FN_GET_CODE_NM('EMMA_RESULT_CODE', ESL.MT_REPORT_CODE_IB) MSGSTATUSCD
                </if>
                <if test="serviceType == null or serviceType == ''">
                , FN_GET_CODE_NM('ITA_RESULT_CODE', ESL.REPORT_CODE) MSGSTATUSCD
                </if>				
				FROM ${msgLogTable} AS ESL
				WHERE 1=1 AND ESL.SEQ = #{msgSendId}
				<include refid="searchMessageDetail"/>
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
             ORDER BY DATEMTSENT
        ) C
		ORDER BY RNUM DESC
		LIMIT #{firstIndex} , #{recordCountPerPage}	
    </select>
    
    
	<select id="selectDtls_his"  parameterType="i2c.biz.admin.srvmngh.vo.Dtls_hisVO" resultType="i2c.biz.admin.srvmngh.vo.Dtls_hisVO">
    	/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.selectDtls_his] selectDtls_his 이용내역관리현황  */
    	SELECT * 
    	  FROM dtls_his
 		 WHERE 1=1
 		   AND use_month = #{use_month}
 		   <if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id) == false">
 		   		AND usr_id = #{usr_id}
 		   </if>
	</select>	

	<select id="findUsr" parameterType="String" resultType="i2c.cmm.base.CommonResultMap"> 
		SELECT 
				SU.USR_ID
			   ,FN_GET_USR_NM(usr_id) as usrNm
			   ,SU.ORG_SID
			   ,SU.AUTH_CODE
			   ,sc.CLIENT_NM
		  FROM  SNS_USER AS SU INNER JOIN SNS_CLIENT AS SC ON SU.ORG_SID = SC.ORG_SID
		 WHERE	SU.MBER_NO = #{mber_no} AND (SU.ORG_SID != '' AND SU.ORG_SID IS NOT NULL)
      GROUP BY  usr_id	
	</select>
	
	<select id="useMngMonth" parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
	 	SELECT    a.use_month
 		        , sum(a.AMOUNT) + sum(a.AMOUNT)/10 as amount
 		        , sum(a.success_cnt) as success_cnt
 		        , sum(if(a.MSG_TY != "FRN_TALK" and a.MSG_TY != "NTCN_TALK",a.success_cnt,0)) as sms_cnt
 		        , sum(if(a.MSG_TY = "FRN_TALK" OR a.MSG_TY = "NTCN_TALK",a.success_cnt,0)) as kko_cnt
 		        , FN_GET_USR_NM(a.usr_id) as usrNm
 		        , b.*
		  FROM    dtls_his a
		        , add_mber_info b
		 WHERE   
		 		  1=1  
		   AND    a.usr_id = b.usr_id
		   AND    a.use_month BETWEEN #{start_dttm} AND #{end_dttm}
		   <if test="mber_no != 'all' and mber_no != null">
           AND a.mber_no = #{mber_no}
	          <if test="org_sid != 'all' and org_sid != null">
	       	  AND a.org_id = #{org_sid}
	          </if>
          </if>
	  GROUP BY    use_month ,usr_id 
	  ORDER BY    use_month DESC;
	</select>
	
	
	<select id="totalBillAmount"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO" resultType="Integer">
		SELECT (CASE WHEN SUM(SUM_CHRGE) IS NULL
                     THEN '0'
                     ELSE cast(SUM(SUM_CHRGE) +(SUM(SUM_CHRGE) * 0.1) as char(30) ) END
				) AS TOTALBILL
		FROM DTLS_HIS 
		WHERE 1=1
			AND USE_MONTH = #{yearMonth}
			AND MBER_NO = #{mber_no}
			<if test='"" != org_id and null != org_id'>
				AND ORG_ID = #{org_id}
			</if>
	</select>
	
	<select id="selectCmpMber" parameterType="String" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
		SELECT SU.USR_NM, SU.DEPT_NM, SU.USR_ID, SU.MBER_NO, SU.ORG_SID, AMI.CMPNM, CONCAT(SU.USR_ID,'_', SU.MBER_NO, '_', SU.ORG_SID) AS USRCMPINFO, SC.CLIENT_NM
		FROM SNS_USER AS SU INNER JOIN ADD_MBER_INFO AS AMI ON SU.USR_ID = AMI.USR_ID
							INNER JOIN SNS_CLIENT AS SC ON SU.ORG_SID = SC.ORG_SID
		WHERE SU.MBER_NO = #{mberNo} AND (SU.ORG_SID != '' AND SU.ORG_SID IS NOT NULL)
		<!-- <if test="auth_code != null and auth_code !='' and (auth_code == 'ROLE_MC_MNGR' or auth_code == 'ROLE_CORE_MNGR')">
			AND SU.ORG_SID = #{org_id}
		</if> -->
	</select>
	
	<select id="selectEmail" parameterType="String" resultType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
		SELECT 
		       email
		  FROM sns_user
		 WHERE usr_id = #{usr_id}
	</select>
	
	
	<update id="reqCancelMessageSend"  parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
		/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.reqCancelMessageSend] reqCancelMessageSend 발송취소 처리  */
		UPDATE T_DATA 
			SET TMP_BOOK_YN = 'C'
		WHERE DATE_CLIENT_REQ > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -5 MINUTE), '%Y-%m-%d %H:%i:%s')
			AND SEQ = #{msgSendId}
		    AND TMP_BOOK_YN = 'Y' 
	</update>
	
	<select id="findMber" resultType="i2c.cmm.base.CommonResultMap">
		SELECT CMPNM, MBER_NO FROM ADD_MBER_INFO WHERE ORG_ID IS NULL OR ORG_ID = '' GROUP BY MBER_NO
	</select>
	
	<update id="paymentUpdate" parameterType="i2c.biz.admin.srvmngh.vo.SrvstatVO">
		/* [i2c.biz.admin.srvmngh.dao.SrvmnghDAO.paymentUpdate] paymentUpdate 납부완료 업데이트  */
         UPDATE DTLS_HIS 
            SET PAYMENT_STATUS = 'Y'
          WHERE USR_ID = #{usr_id}
            AND USE_MONTH = #{use_month}
	</update>
	
	<select id="findUsrId" parameterType="String" resultType="String"> 
		SELECT 
				usr_id
		  FROM  sns_user 
		 WHERE	org_sid = #{org_sid};
	</select>
	
	
	<select id="textTmplCountUser" parameterType="i2c.biz.admin.srvmngh.vo.SrvtmplVO" resultType="Integer">
		SELECT
			COUNT(*)
		FROM
			T_DATA TD
		WHERE
			TD.TMP_BOOK_YN	= 'T' 				AND
			TD.SERVICE_TYPE IN ('0','2','3')	AND
			(TD.TMPL_DEL_YN != 'Y' OR TD.TMPL_DEL_YN IS NULL)
			<include refid="searchTmplQuery"/>
	</select>
	
	<select id="textTmplListUser" parameterType="i2c.biz.admin.srvmngh.vo.SrvtmplVO" resultType="i2c.biz.admin.srvmngh.vo.SrvtmplVO">
		SELECT
			*
	    FROM (
       		SELECT
        		 SEMA_TEMPLETE_CODE
        		,SUBJECT
        		,TMPL_NAME
        		,CONTENT
				,TEMPLETE_ID
				,ARS_080_NUM
				,MSG_CL_TYPE
				,CASE 
					WHEN SERVICE_TYPE IS NOT NULL AND SERVICE_TYPE = '0' THEN 'SMS'
					WHEN SERVICE_TYPE IS NOT NULL AND SERVICE_TYPE = '2' THEN 'MMS'
					WHEN SERVICE_TYPE IS NOT NULL AND SERVICE_TYPE = '3' THEN 'LMS'						
				 END 										AS MSGTYPE
				,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') 		AS REGIST_DE
				,FILE_SEQ									AS FILESEQ
				,CALLBACK									AS CALLBACKNUM
        	FROM
        		T_DATA TD LEFT JOIN T_FILE TF ON TD.SEQ = TF.SEQ
			WHERE 
				TD.TMP_BOOK_YN	= 'T' 				AND
				TD.SERVICE_TYPE IN ('0','2','3')	AND
				(TD.TMPL_DEL_YN != 'Y' OR TD.TMPL_DEL_YN IS NULL)
				<include refid="searchTmplQuery"/>
           ) B
		ORDER BY REGIST_DE DESC
		LIMIT #{firstIndex}, #{recordCountPerPage}
	</select>
	
	<select id="textTmplDetail" parameterType="String" resultType="i2c.biz.admin.srvmngh.vo.SrvtmplVO">
		SELECT
		     SEMA_TEMPLETE_CODE
		    ,SUBJECT
		    ,TMPL_NAME
		    ,CONTENT
		    ,TEMPLETE_ID
		    ,ARS_080_NUM
       		,MSG_CL_TYPE
		    ,CASE 
				WHEN SERVICE_TYPE IS NOT NULL AND SERVICE_TYPE = '0' THEN 'SMS'
				WHEN SERVICE_TYPE IS NOT NULL AND SERVICE_TYPE = '2' THEN 'MMS'
				WHEN SERVICE_TYPE IS NOT NULL AND SERVICE_TYPE = '3' THEN 'LMS'					
			 END 										AS MSGTYPE
			,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') 		AS REGIST_DE
			,FILE_SEQ									AS FILESEQ
			,CALLBACK									AS CALLBACKNUM
		FROM
			T_DATA TD LEFT JOIN T_FILE TF ON TD.SEQ = TF.SEQ
		WHERE
			TD.SEMA_TEMPLETE_CODE = #{sema_templete_code}
	</select>
		
	<select id="kakaoProfileCount" parameterType="i2c.biz.admin.srvmngh.vo.SrvtmplVO" resultType="Integer">
		SELECT COUNT(*) FROM PROFILE WHERE MBER_NO = #{mber_no} AND ORG_ID = #{org_id}
	</select>
		
	<select id="selectKakaoProfile" parameterType="i2c.biz.admin.srvmngh.vo.SrvtmplVO" resultType="i2c.biz.admin.kakaoMng.vo.KakaoMngVO">
        SELECT 
        	 MBER_NO
			,ORG_ID
			,PLUS_UUID
			,PLUS_NM
		FROM
			PROFILE
	    WHERE
	    	USE_AT 	= 'Y'			AND
	    	MBER_NO	= #{mber_no}	AND
	    	ORG_ID	= #{org_id}		AND
	    	STATUS 	= 'PROFLST01'
	</select>
	
	<select id="frtTmplCountUser" parameterType="i2c.biz.admin.srvmngh.vo.SrvtmplVO" resultType="Integer">
				SELECT
			COUNT(*)
		FROM
			T_DATA TD
		WHERE
			TD.TMP_BOOK_YN	= 'T' 		AND
			TD.MSG_TYPE 	= '1009'	AND
			(TD.TMPL_DEL_YN != 'Y' OR TD.TMPL_DEL_YN IS NULL)
			<include refid="searchTmplQuery"/>
	</select>
	
	<select id="frtTmplListUser" parameterType="i2c.biz.admin.srvmngh.vo.SrvtmplVO" resultType="i2c.biz.admin.srvmngh.vo.SrvtmplVO">
		SELECT
			*
	    FROM (
       		SELECT
        		SEMA_TEMPLETE_CODE
        		,SUBJECT
        		,TMPL_NAME
        		,CONTENT
        		,TEMPLETE_ID
        		,ARS_080_NUM
				,MSG_CL_TYPE
        		,KAKAO_IMG_URL
        		,KAKAO_IMG_LINK
        		,CASE
					WHEN TD.MSG_TYPE IS NOT NULL AND TD.MSG_TYPE = '1008' THEN 'KKO'
					WHEN TD.MSG_TYPE IS NOT NULL AND TD.MSG_TYPE = '1009' THEN 'KKF'
				 END										AS MSGTYPE
				,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') 		AS REGIST_DE
				,CALLBACK									AS CALLBACKNUM
        	FROM
        		T_DATA TD
			WHERE 
				TD.TMP_BOOK_YN	= 'T' 				AND
				TD.MSG_TYPE		= '1009'			AND
				(TMPL_DEL_YN != 'Y' OR TMPL_DEL_YN IS NULL)
				<include refid="searchTmplQuery"/>
           ) B
		ORDER BY REGIST_DE DESC
		LIMIT #{firstIndex}, #{recordCountPerPage}
	</select>
	
	<select id="frtTmplDetail" parameterType="String" resultType="i2c.biz.admin.srvmngh.vo.SrvtmplVO">
		SELECT
       		SEMA_TEMPLETE_CODE
       		,SUBJECT
       		,TMPL_NAME
       		,CONTENT
       		,TEMPLETE_ID
       		,ARS_080_NUM
			,MSG_CL_TYPE
       		,KAKAO_IMG_URL
       		,KAKAO_IMG_LINK
       		,CASE
				WHEN TD.MSG_TYPE IS NOT NULL AND TD.MSG_TYPE = '1008' THEN 'KKO'
				WHEN TD.MSG_TYPE IS NOT NULL AND TD.MSG_TYPE = '1009' THEN 'KKF'
			 END										AS MSGTYPE
			,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') 		AS REGIST_DE
			,CALLBACK									AS CALLBACKNUM
			,CONCAT('[',GROUP_CONCAT(TK.KKO_BTN_INFO ORDER BY TK.KAKAO_SEQ ASC SEPARATOR ','),']') AS KAKAO_BTN
		FROM
			T_DATA TD LEFT JOIN T_KAKAO TK ON TK.SEQ = TD.SEQ
		WHERE
			TD.SEMA_TEMPLETE_CODE = #{sema_templete_code}
	</select>
	
</mapper>