Merge branch 'jiwoo'

Conflicts:
	src/main/resources/egovframework/egovProps/globals_dev.properties
This commit is contained in:
JIWOO 2025-06-20 12:32:17 +09:00
commit b917a2c1d1
10 changed files with 312 additions and 54 deletions

View File

@ -10,7 +10,10 @@ public interface MjonKakaoATService {
List<KakaoVO> selectMjonKakaoATGroupCompleteList(KakaoVO searchVO) throws Exception;
//알림톡 전체 발송 리스트(대시보드용)
List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO searchVO) throws Exception;
List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO searchVO) throws Exception;
//알림톡 전체 발송 리스트(대시보드용) - DB개선 임시
List<KakaoVO> selectMjonKakaoATGroupCompleteByUserListTemp(KakaoVO searchVO) throws Exception;
//알림톡 발송 상세 리스트
List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO searchVO) throws Exception;
@ -54,5 +57,8 @@ public interface MjonKakaoATService {
//알림톡 전송내역 상세
KakaoVO selectMjonKakaoATVO_advc(KakaoVO mjonKakaoATVO) throws Exception;
//알림톡 전체 발송 리스트 건수
int selectMjonKakaoATGroupCompleteByUserListCnt_advc(KakaoVO searchVO) throws Exception;
}

View File

@ -21,6 +21,10 @@ public class MjonKakaoATDAO extends EgovAbstractDAO {
public List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO p_mjonKakaoATVO) throws Exception{
return (List<KakaoVO>)list("mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList", p_mjonKakaoATVO);
}
@SuppressWarnings("unchecked")
public List<KakaoVO> selectMjonKakaoATGroupCompleteByUserListTemp(KakaoVO p_mjonKakaoATVO) throws Exception{
return (List<KakaoVO>)list("mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserListTemp", p_mjonKakaoATVO);
}
@SuppressWarnings("unchecked")
public List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO p_mjonKakaoATVO) throws Exception{
@ -111,4 +115,8 @@ public class MjonKakaoATDAO extends EgovAbstractDAO {
public KakaoVO selectMjonKakaoATVO_advc(KakaoVO p_mjonKakaoATVO) throws Exception{
return (KakaoVO) select("mjonKakaoATDAO.selectMjonKakaoATVO_advc", p_mjonKakaoATVO);
}
public int selectMjonKakaoATGroupCompleteByUserListCnt_advc(KakaoVO p_mjonKakaoATVO) throws Exception{
return (int)select("mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserListCnt_advc", p_mjonKakaoATVO);
}
}

View File

@ -88,6 +88,22 @@ public class MjonKakaoATServiceImpl extends EgovAbstractServiceImpl implements M
}
return result;
}
@Override
public List<KakaoVO> selectMjonKakaoATGroupCompleteByUserListTemp(KakaoVO p_mjonKakaoATVO) throws Exception {
List<KakaoVO> result = new ArrayList<KakaoVO>();
try {
result = mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserListTemp(p_mjonKakaoATVO);
} catch (Exception e) {
System.out.println("selectMjonKakaoATGroupCompleteByUserListTemp ServiceImpl Error ::: " + e);
}
return result;
}
@ -250,4 +266,21 @@ public class MjonKakaoATServiceImpl extends EgovAbstractServiceImpl implements M
return result;
}
@Override
public int selectMjonKakaoATGroupCompleteByUserListCnt_advc(KakaoVO p_mjonKakaoATVO) throws Exception {
int totCnt = 0;
try {
totCnt = mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserListCnt_advc(p_mjonKakaoATVO);
} catch (Exception e) {
System.out.println("selectMjonKakaoATGroupCompleteByUserListCnt ServiceImpl Error ::: " + e);
}
return totCnt;
}
}

View File

@ -135,6 +135,7 @@ public class MjonKakaoATController {
// resultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(kakaoVO);
resultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList_advc(kakaoVO);
int totCnt = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserListCnt_advc(kakaoVO);
model.addAttribute("resultList", resultList);
@ -144,7 +145,7 @@ public class MjonKakaoATController {
model.addAttribute("resultMsgCodeList", resultMsgCodeList);
paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((KakaoVO)resultList.get(0)).getTotCnt() : 0);
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("searchVO", kakaoVO);
@ -1128,4 +1129,4 @@ public class MjonKakaoATController {
//return "cmm/uss/umt/EgovGnrlUserSelectMsgDataListPop";
}
}
}

View File

@ -1454,7 +1454,15 @@ public class EgovUserManageController {
sendKakaoVO.setFirstIndex(0);
sendKakaoVO.setPageType("sand");
List<KakaoVO> kakaoResultList = new ArrayList<KakaoVO>();
kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO);
//kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO);
/*250620 - 회원 정보 팝업 최근 알림톡/친구톡 전송 내역을 조회하는 임시 쿼리
* 기존 쿼리 성능으로 인하여 회원 정보 팝업 오픈 간헐적으로 에러 발생
* 임시 쿼리는 화면에 필요한 최소한의 정보만 조회하며, USER_ID를 제외한 조건은 하드코딩 처리
* DB 개선 작업 이후 알림톡/친구톡 관련 조회 공통 쿼리 생성 예정
* */
sendKakaoVO.setReserveYn("N");
kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserListTemp(sendKakaoVO);
model.addAttribute("kakaoResultList", kakaoResultList);
@ -1474,8 +1482,15 @@ public class EgovUserManageController {
reserveKakaoVO.setFirstIndex(0);
reserveKakaoVO.setPageType("sand");
List<KakaoVO> kakaoReserveList = new ArrayList<KakaoVO>();
kakaoReserveList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(reserveKakaoVO);
//kakaoReserveList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(reserveKakaoVO);
/*250620 - 회원 정보 팝업 최근 알림톡/친구톡 전송 내역을 조회하는 임시 쿼리
* 기존 쿼리 성능으로 인하여 회원 정보 팝업 오픈 간헐적으로 에러 발생
* 임시 쿼리는 화면에 필요한 최소한의 정보만 조회하며, USER_ID를 제외한 조건은 하드코딩 처리
* DB 개선 작업 이후 알림톡/친구톡 관련 조회 공통 쿼리 생성 예정
* */
sendKakaoVO.setReserveYn("Y");
kakaoReserveList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserListTemp(sendKakaoVO);
model.addAttribute("kakaoReserveList", kakaoReserveList);

View File

@ -28,9 +28,8 @@ Globals.Env = local
# mysql
Globals.DriverClassName=com.mysql.jdbc.Driver
#Globals.Url=jdbc:mysql://119.193.215.98:3306/mjon
#Globals.Url=jdbc:mysql://192.168.0.60:3308/mjon
Globals.Url=jdbc:mysql://139.150.73.12:3306/mjon
#Globals.Url=jdbc:mysql://139.150.73.12:3306/mjon
Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon
Globals.UserName= mjonUr
Globals.Password= mjon!@#$
#Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon

View File

@ -28,6 +28,7 @@ Globals.Env = local
# mysql
Globals.DriverClassName=com.mysql.jdbc.Driver
#Globals.Url=jdbc:mysql://139.150.73.12:3306/mjon
Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon
#Globals.Url=jdbc:mysql://192.168.0.60:3308/mjon
Globals.UserName= mjonUr

View File

@ -641,6 +641,137 @@
) M2
</select>
<select id="mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserListTemp" parameterClass="kakaoVO" resultClass="kakaoVO">
WITH target_groups as(
SELECT
MGT.MSG_GROUP_ID
from
MJ_MSG_GROUP_DATA MGT
JOIN (
SELECT
MSG_GROUP_ID
FROM MJ_MSG_DATA
WHERE
DEL_FLAG = 'N'
<isEqual property="reserveYn" compareValue="N" >
AND CUR_STATE = '3'
</isEqual>
GROUP BY MSG_GROUP_ID
) MDT
ON MDT.MSG_GROUP_ID = MGT.MSG_GROUP_ID
WHERE
MGT.USER_ID = #userId#
AND MGT.DEL_FLAG = 'N'
AND MGT.RESERVE_C_YN = 'N'
AND MGT.MSG_TYPE in ('8', '9')
<isEqual property="reserveYn" compareValue="N" >
<![CDATA[
AND (
(MGT.RESERVE_YN = 'N'
and MGT.REQ_DATE <= DATE_ADD(NOW(), interval 60 minute))
or (MGT.RESERVE_YN = 'Y'
and (MGT.REQ_DATE <= NOW()
or (MGT.AT_DELAY_YN = 'Y'
and MGT.AT_DELAY_COMPLETE_YN = 'N')))
)
]]>
</isEqual>
<isEqual property="reserveYn" compareValue="Y" >
and MGT.RESERVE_YN = 'Y'
</isEqual>
ORDER BY MGT.REQ_DATE desc
LIMIT 3 OFFSET 0)
SELECT
MMGD.USER_ID AS userId,
MMGD.MSG_GROUP_ID AS msgGroupId,
MMGD.MSG_GROUP_CNT AS msgGroupCnt,
MMGD.AT_DELAY_YN AS atDelayYn,
MMGD.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn,
MMGD.CANCELDATE AS cancelDate,
MMGD.REQ_DATE AS reqDate,
MMGD.REGDATE AS regDate,
MMGD.RESERVE_YN AS reserveYn,
MMGD.RESERVE_C_YN AS reserveCYn,
MMGD.SMS_TXT AS smsTxt,
MMGD.MSG_TYPE AS msgType,
CASE
WHEN MMGD.MSG_TYPE = '8' then '알림톡'
when MMGD.MSG_TYPE = '9' then '친구톡'
END AS msgTypeName,
MD.RSLT_DATE AS rsltDate,
MKPI.YELLOW_ID AS yellowId,
IFNULL(SCNT.successCount, 0) AS successCount,
IFNULL(KRS.kakaoResendSuccCount, 0) AS kakaoResendSuccCount,
IFNULL(KRF.kakaoResendFailCount, 0) AS kakaoResendFailCount
FROM MJ_MSG_GROUP_DATA MMGD
JOIN target_groups TG
ON TG.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
LEFT JOIN (
SELECT
MSG_GROUP_ID,
COUNT(*) as successCount
FROM
MJ_MSG_DATA
WHERE
RESERVE_C_YN = 'N'
AND RSLT_CODE = '7000'
GROUP BY MSG_GROUP_ID
) SCNT
ON SCNT.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
LEFT JOIN (
SELECT
a.MSG_GROUP_ID,
COUNT(*) as kakaoResendSuccCount
FROM
MJ_MSG_DATA a
JOIN
BIZ_LOG b
ON a.BIZ_UMID = b.CMID
WHERE
a.BIZ_KAKAO_RESEND_YN = 'Y'
and b.CALL_STATUS in ('6600', '4100')
GROUP BY a.MSG_GROUP_ID
) KRS
ON KRS.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
LEFT JOIN (
SELECT
a.MSG_GROUP_ID,
COUNT(*) as kakaoResendFailCount
FROM
MJ_MSG_DATA a
JOIN
BIZ_LOG b
ON a.BIZ_UMID = b.CMID
WHERE
a.BIZ_KAKAO_RESEND_YN = 'Y'
and b.CALL_STATUS not in ('6600', '4100')
GROUP BY a.MSG_GROUP_ID
) KRF
ON KRF.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
LEFT JOIN (
SELECT
MSG_GROUP_ID,
MAX(RSLT_DATE) as RSLT_DATE,
MSG_NOTICETALK_SENDER_KEY
FROM
MJ_MSG_DATA
WHERE
DEL_FLAG = 'N'
<isEqual property="reserveYn" compareValue="N" >
and CUR_STATE = '3'
</isEqual>
GROUP BY MSG_GROUP_ID
) MD
ON MD.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
LEFT JOIN
MJ_KAKAO_PROFILE_INFO MKPI
ON MKPI.SENDER_KEY = MD.MSG_NOTICETALK_SENDER_KEY
AND MKPI.USER_ID = MMGD.USER_ID
ORDER BY
MMGD.REQ_DATE desc;
</select>
<!-- 알림톡 상세 리스트 조회 -->
<select id="mjonKakaoATDAO.selectMjonKakaoATGroupDtList" parameterClass="kakaoVO" resultClass="kakaoVO">
@ -2410,7 +2541,6 @@
SELECT
COUNT(MMGD.USER_ID) OVER() AS totCnt,
MMGD.USER_ID AS userId,
MMGD.MSG_GROUP_ID AS msgGroupId,
MMGD.MSG_GROUP_CNT AS msgGroupCnt,
@ -2430,8 +2560,7 @@
l.MBER_NM AS userNm,
l.AT_SMISHING_YN AS atSmishingYn,
l.VIP_YN AS vipYn,
IFNULL(MD.successCount, 0) as successCount,
MKPI.YELLOW_ID AS yellowId
IFNULL(MD.successCount, 0) as successCount
FROM
mj_msg_group_data MMGD
LEFT JOIN lettngnrlmber l
@ -2439,55 +2568,59 @@
LEFT JOIN (
SELECT
MSG_GROUP_ID,
SUM(case when RSLT_CODE = '7000' then 1 else 0 end) as successCount,
MAX(MSG_NOTICETALK_SENDER_KEY) as MSG_NOTICETALK_SENDER_KEY
count(0) as successCount
FROM
MJ_MSG_DATA
WHERE
RSLT_CODE = '7000'
GROUP BY
MSG_GROUP_ID
) MD
ON MD.MSG_GROUP_ID = MMGD.MSG_GROUP_ID
LEFT JOIN mj_kakao_profile_info MKPI
ON MKPI.SENDER_KEY = MD.MSG_NOTICETALK_SENDER_KEY
AND MKPI.USER_ID = MMGD.USER_ID
WHERE
<![CDATA[
CASE
WHEN RESERVE_YN = 'N'
THEN (MMGD.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE))
WHEN RESERVE_YN = 'Y'
THEN (MMGD.REQ_DATE <= NOW() OR (MMGD.AT_DELAY_YN = 'Y' AND MMGD.AT_DELAY_COMPLETE_YN = 'N'))
END
]]>
<isEmpty property="msgType">
MMGD.MSG_TYPE IN ('8' ,'9')
</isEmpty>
<isEqual property="msgType" compareValue="8">
MMGD.MSG_TYPE = '8'
</isEqual>
<isEqual property="msgType" compareValue="9">
MMGD.MSG_TYPE = '9'
</isEqual>
AND MMGD.RESERVE_C_YN = 'N'
<isNotEmpty property="ntceBgnde">
AND MMGD.REQ_DATE >= #ntceBgnde#
</isNotEmpty>
<isNotEmpty property="ntceEndde">
<![CDATA[
AND MMGD.REQ_DATE < DATE_ADD(#ntceEndde#, INTERVAL 1 DAY)
]]>
</isNotEmpty>
<![CDATA[
AND (
(MMGD.RESERVE_YN = 'N'
and MMGD.REQ_DATE <= DATE_ADD(NOW(), interval 60 minute))
or
(MMGD.RESERVE_YN = 'Y'
and (
MMGD.REQ_DATE <= NOW()
or (MMGD.AT_DELAY_YN = 'Y'
and MMGD.AT_DELAY_COMPLETE_YN = 'N')
))
)
]]>
<isEqual property="searchCondition2" compareValue="N">
AND IFNULL(MMGD.RESERVE_YN, 'N') = 'N'
</isEqual>
<isEqual property="searchCondition2" compareValue="Y">
AND IFNULL(MMGD.RESERVE_YN, 'N') = 'Y'
</isEqual>
<isEmpty property="msgType">
AND MMGD.MSG_TYPE IN ('8' ,'9')
</isEmpty>
<isEqual property="msgType" compareValue="8">
AND MMGD.MSG_TYPE = '8'
</isEqual>
<isEqual property="msgType" compareValue="9">
AND MMGD.MSG_TYPE = '9'
</isEqual>
<isNotEmpty property="ntceBgnde">
AND MMGD.REQ_DATE >= #ntceBgnde#
</isNotEmpty>
<isNotEmpty property="ntceEndde">
<![CDATA[
AND MMGD.REQ_DATE < DATE_ADD(#ntceEndde#, INTERVAL 1 DAY)
]]>
</isNotEmpty>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="" >
AND (
MMGD.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
OR MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
<!-- OR MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%') -->
OR MMGD.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
)
</isEqual>
@ -2516,6 +2649,71 @@
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<select id="mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserListCnt_advc" parameterClass="kakaoVO" resultClass="int">
SELECT
COUNT(0) AS totCnt
FROM
mj_msg_group_data MMGD
WHERE
<isEmpty property="msgType">
MMGD.MSG_TYPE IN ('8' ,'9')
</isEmpty>
<isEqual property="msgType" compareValue="8">
MMGD.MSG_TYPE = '8'
</isEqual>
<isEqual property="msgType" compareValue="9">
MMGD.MSG_TYPE = '9'
</isEqual>
AND MMGD.RESERVE_C_YN = 'N'
<isNotEmpty property="ntceBgnde">
AND MMGD.REQ_DATE >= #ntceBgnde#
</isNotEmpty>
<isNotEmpty property="ntceEndde">
<![CDATA[
AND MMGD.REQ_DATE < DATE_ADD(#ntceEndde#, INTERVAL 1 DAY)
]]>
</isNotEmpty>
<![CDATA[
AND (
(MMGD.RESERVE_YN = 'N'
and MMGD.REQ_DATE <= DATE_ADD(NOW(), interval 60 minute))
or
(MMGD.RESERVE_YN = 'Y'
and (
MMGD.REQ_DATE <= NOW()
or (MMGD.AT_DELAY_YN = 'Y'
and MMGD.AT_DELAY_COMPLETE_YN = 'N')
))
)
]]>
<isEqual property="searchCondition2" compareValue="N">
AND IFNULL(MMGD.RESERVE_YN, 'N') = 'N'
</isEqual>
<isEqual property="searchCondition2" compareValue="Y">
AND IFNULL(MMGD.RESERVE_YN, 'N') = 'Y'
</isEqual>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="" >
AND (
MMGD.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
<!-- OR MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%') -->
OR MMGD.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
)
</isEqual>
<isEqual property="searchCondition" compareValue="1">
AND MMGD.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="2">
AND MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
<isEqual property="searchCondition" compareValue="3">
AND MMGD.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
</isNotEmpty>
</select>
<select id="mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList_advc_back" parameterClass="kakaoVO" resultClass="kakaoVO">
SELECT

View File

@ -4737,8 +4737,6 @@ function fnInputSmsTxt(){
<c:choose>
<c:when test="${not empty kakaoResultList.regDate}">
<c:out value="${kakaoResultList.regDate}" />
<%-- ${fnc:setStrToDataFormatter(kakaoResultList.regDate, 'MM-dd HH:mm') } --%>
<fmt:parseDate value="${kakaoResultList.regDate}" var="dateValue" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="${dateValue}" pattern="MM-dd HH:mm"/>
@ -4880,10 +4878,9 @@ function fnInputSmsTxt(){
<td>
<c:choose>
<c:when test="${not empty kakaoReserveList.regDate}">
<c:out value="${kakaoReserveList.regDate}" />
${fnc:setStrToDataFormatter(kakaoReserveList.regDate, 'MM-dd HH:mm') }
<%-- <fmt:parseDate value="${kakaoReserveList.regDate}" var="dateValue" pattern="yyyy-MM-dd HH:mm:ss"/> --%>
<%-- <fmt:formatDate value="${dateValue}" pattern="MM-dd HH:mm"/> --%>
<%-- ${fnc:setStrToDataFormatter(kakaoReserveList.regDate, 'MM-dd HH:mm') } --%>
<fmt:parseDate value="${kakaoReserveList.regDate}" var="dateValue" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="${dateValue}" pattern="MM-dd HH:mm"/>
</c:when>
<c:otherwise>

View File

@ -603,7 +603,7 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
<select name="searchCondition" class="select" title="검색조건 선택">
<option value="" <c:if test="${searchVO.searchCondition == ''}">selected="selected"</c:if>>ID/내용/발신번호(전체)</option>
<option value="1" <c:if test="${searchVO.searchCondition == '1'}">selected="selected"</c:if>>사용자ID</option>
<option value="2" <c:if test="${searchVO.searchCondition == '2'}">selected="selected"</c:if>>채널ID</option>
<%-- <option value="2" <c:if test="${searchVO.searchCondition == '2'}">selected="selected"</c:if>>채널ID</option> --%>
<option value="3" <c:if test="${searchVO.searchCondition == '3'}">selected="selected"</c:if>>전송내용</option>
</select>
@ -648,7 +648,7 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
<col style="width: 3%">
<col style="width: 5%">
<col style="width: 13%">
<col style="width: 13%">
<%-- <col style="width: 13%"> --%>
<col style="width: 10%">
<col style="width: 13%">
<col style="width: 10%">
@ -661,7 +661,7 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="fnCheckAll();" /><label for="checkAll"></label></th>
<th>번호<input type="button" class="sort sortBtn" id="sort_msgGroupId"></th>
<th>아이디<input type="button" class="sort sortBtn" id="sort_userId"></th>
<th>채널ID<input type="button" class="sort sortBtn" id="sort_yellowId"></th>
<!-- <th>채널ID<input type="button" class="sort sortBtn" id="sort_yellowId"></th> -->
<th>발송건수<input type="button" class="sort sortBtn" id="sort_msgGroupCnt"></th>
<th>스미싱의심</th>
<th>요청시간<input type="button" class="sort sortBtn" id="sort_reqDate"></th>
@ -692,9 +692,9 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
</a>
</div>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<%-- <td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:out value="${result.yellowId}"/>
</td>
</td> --%>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:choose>
<c:when test="${result.successCount > 0}">
@ -781,7 +781,7 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="8"><spring:message code="common.nodata.msg" /></td></tr>
<tr><td colspan="9"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>