Merge branch 'master' into kakaoFT

This commit is contained in:
rosewiper 2024-08-21 15:41:03 +09:00
commit f693fccaf8
98 changed files with 7053 additions and 636 deletions

View File

@ -60,6 +60,8 @@ public class InterceptorHandler extends HandlerInterceptorAdapter{
&& !name.toLowerCase().contains("recommendid")
&& !name.toLowerCase().contains("mbernm")
&& !name.toLowerCase().contains("varvallist")
&& !name.toLowerCase().contains("templatecontent")
&& !name.toLowerCase().contains("buttonvolist")
) {
//파라미터 중에 URL 주소를 넘겨주는 부분이 있어서 해당 부분에것 select~, update~, delete~ 시작하는 주소경로가 있어서 제외처리를 하였음
String[] values = request.getParameterValues(name);

View File

@ -14,12 +14,18 @@ import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import itn.let.kakao.kakaoComm.KakaoVO;
import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msg.service.impl.MjonMsgDAO;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.mjo.msgholiday.service.impl.MsgHolidayDAO;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.mjo.pay.service.MjonPayVO;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.sym.site.service.impl.SiteManagerDAO;
@Service("kakaoAlimTalkService")
public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements KakaoAlimTalkService{
@ -33,6 +39,12 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
@Resource(name="kakaoAlimTalkDAO")
private KakaoAlimTalkDAO kakaoAlimTalkDAO;
@Resource(name="siteManagerDAO")
SiteManagerDAO siteManagerDAO;
@Resource(name="MsgHolidayDAO")
private MsgHolidayDAO msgHolidayDAO;
@Resource(name = "egovMjonMsgIdGnrService")
private EgovIdGnrService idgenMsgId;
@ -95,7 +107,52 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
//카카오 알림톡 전송 리스트
List<KakaoVO> kakaoAtSandList = new ArrayList<KakaoVO>();
//야간스미싱 알림여부 정보 불러오기
JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
//스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수
boolean spamSmishingPassStatus = false; //야간스미싱 알림여부가 활성화인 경우 false, 비활성화인경우 true 값을 가지도록 한다.
//야간스미싱알리 여부가 비활성화 인경우 무조건 문자를 즉시 보내도록 한다.
//현재는 평일, 주말, 휴일 상관없이 N 이면 30분 딜레이 없이 발송 처리하도록 .
if(holiSmishingNoti.equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
spamSmishingPassStatus = smishingAlarmPassSts;
}else {
spamSmishingPassStatus = true;
}
String atSmishingYn = kakaoVO.getAtSmishingYn();
if(spamSmishingPassStatus) {
atSmishingYn = "N";
}
/** 카카오 알림톡 전송 리스트 생성 (시작)-------------------------------------------*/
for(int i = 0; i < callToCnt; i++) {
@ -159,7 +216,7 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
}
if(kakaoVO.getAtSmishingYn().equals("Y")) {
if(atSmishingYn.equals("Y")) {
String sandDate = "";
if(kakaoVO.getDivideChk().equals("Y")) {
@ -293,7 +350,14 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
mjonMsgVO.setBefCash(kakaoVO.getBefCash());
mjonMsgVO.setBefPoint(kakaoVO.getBefPoint());
mjonMsgVO.setKakaoSubMagOrgnlTxt(kakaoVO.getKakaoSubMagOrgnlTxt());
mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn());
//야간 스미싱 알림 비활성화인 경우 딜레이처리 안하도록 20240722 우영두 수정
if(spamSmishingPassStatus) {
mjonMsgVO.setAtDelayYn("N");
}else {
mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn());
}
if(kakaoVO.getBizJsonYn().equals("Y")) {
@ -311,6 +375,20 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
if(msgGroupDataCnt < 1) {
mjonMsgDAO.insertGroupMsgData(mjonMsgVO);
kakaoAlimTalkDAO.insertKakaoSendPrice(kakaoVO);
try {
//야간 스미싱 알림이 활성화 이고 알림 예외 일정에 포함되고, 스팸 또는 스미싱 의심 상태일 경우 문자정보 별도 저장처리 - 20240821 우영두 추가
if(holiSmishingNoti.equals("Y") && spamSmishingPassStatus && kakaoVO.getAtSmishingYn().equals("Y")) {
mjonMsgDAO.insertSpamPassMsgData(mjonMsgVO);
}
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++++++++ spamSmishingPassStatus 알림톡 야간 스미싱 알림 데이터 입력 오류 발생 !!!!");
}
}else {
mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO);
}

View File

@ -51,9 +51,13 @@ import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate;
import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService;
import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgDataVO;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.sym.site.service.EgovSiteManagerService;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uss.umt.service.EgovUserManageService;
@ -104,6 +108,9 @@ public class KakaoAlimTalkSendController {
@Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService;
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
@Autowired
KakaoApiProfile kakaoApiProfile;
@ -769,11 +776,44 @@ public class KakaoAlimTalkSendController {
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
comm.getAdminKakaoAtSandSlack(kakaoVO);
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
//야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminKakaoAtSandSlack(kakaoVO);
}
}
}
}

View File

@ -155,7 +155,7 @@ public class MailTemplateServiceImpl extends EgovAbstractServiceImpl implements
// 시스템 발송 로그
SendLogVO sendLogVO = new SendLogVO();
sendLogVO.setSendType("1"); // 발송 이력 저장 SendType 1:문자로 발송 2:이메일로 발송
sendLogVO.setFrstSendInfo("01084329333");
sendLogVO.setFrstSendInfo("15518011");
sendLogVO.setReceive(callTo);
sendLogVO.setContents(smsTxt);
//mjonMsgDataService.insertSysMsgLog(sendLogVO);

View File

@ -167,7 +167,7 @@ public class MjonCommon {
//수신번호가 배열로 되어있어서 배열에 담아준다.
String[] phone = new String[1];
String callTo = "01084329333";
String callTo = "15518011";
phone[0] = callTo;
mjonMsgVO.setCallToList(phone);//수신번호 리스트

View File

@ -0,0 +1,234 @@
package itn.let.mjo.mjocommon;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.stereotype.Component;
import com.ibm.icu.text.SimpleDateFormat;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
@Component
public class MjonHolidayApi {
public List<MsgHolidayVO> getYearHolidayApiData(MsgHolidayVO msgHolidayVO) throws Exception{
try {
String sendUrl = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getHoliDeInfo?";
String numOfRows = "100";
String serviceKey = "J8QXC%2BtOGvxwmH8blG7nmqIq%2B0MrkNrxTo1PCmFMRdtSldlGN8vWDW2NpZ2om8k9LctZT6oubfFt5dMmbEDeoA%3D%3D";
String solYear = msgHolidayVO.getSearchHoliYear();
String frstRegisterId = msgHolidayVO.getFrstRegisterId();
String strUrl = sendUrl + "&solYear=" + solYear + "&numOfRows=" + numOfRows + "&serviceKey=" + serviceKey;
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(strUrl);
httpGet.addHeader("Content-type", "application/json");
httpGet.addHeader("Accept", "application/json");
HttpResponse response = httpClient.execute(httpGet);
String result = "";
String statusCode = Integer.toString(response.getStatusLine().getStatusCode());
if(statusCode.equals("200")) {
result = EntityUtils.toString(response.getEntity());
result = new String(result.getBytes("iso-8859-1"));//한글 깨짐 현상이 있어서 변환 해줌.
//System.out.println(result);
JSONParser parser = new JSONParser();
Object obj = parser.parse(result);
JSONObject object = (JSONObject) obj;
Object objResp = parser.parse(object.get("response").toString());
JSONObject objectResp = (JSONObject) objResp;
Object objBody = parser.parse(objectResp.get("body").toString());
JSONObject objectBody = (JSONObject) objBody;
Object objItems = parser.parse(objectBody.get("items").toString());
JSONObject objectItems = (JSONObject) objItems;
JSONArray objItemArr = (JSONArray) objectItems.get("item");
List<MsgHolidayVO> msgHolidayVoList = new ArrayList<MsgHolidayVO>();
for(Object tmpObj : objItemArr) {
JSONObject tmpObject = (JSONObject) tmpObj;
MsgHolidayVO tmpMsgHolidayVO = new MsgHolidayVO();
String isHoli = tmpObject.get("isHoliday").toString();
String holiNm = tmpObject.get("dateName").toString();
String holiDate = tmpObject.get("locdate").toString();
if(isHoli.equals("Y")) {
tmpMsgHolidayVO.setHolidayNm(holiNm);
tmpMsgHolidayVO.setHolidayDate(holiDate);
tmpMsgHolidayVO.setHolidayType("1");
tmpMsgHolidayVO.setApiType("Y");
tmpMsgHolidayVO.setFrstRegisterId(frstRegisterId);
tmpMsgHolidayVO.setLastUpdusrId(frstRegisterId);
msgHolidayVoList.add(tmpMsgHolidayVO);
}
}
return msgHolidayVoList;
}else {
return null;
}
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++++++ getYearHolidayApiData Method Error!!!!" + e);
return null;
}
}
public boolean getHolidaySmishingPassStatus(List<MsgAlarmSetVO> resultAlarmList, List<MsgHolidayVO> resultHolidayList) throws Exception{
boolean holiCompareSts = false; //공휴일 일치 날자가 있는지 여부
boolean smishingAlarmPassSts = false; //스미싱 알람 Pass 시킬건지 여부
//현재 날짜의 요일 구하기
Date currentDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
calendar.setTime(currentDate);
// 3. 텍스트 요일 구하기 (숫자)
int dayOfWeekNumber = calendar.get(Calendar.DAY_OF_WEEK);
// 4. 요일 출력 - 1은 일요일, 7은 토요일
//System.out.println(dayOfWeekNumber); // 7
//월에 대한 자릿수 처리 : 10미만은 앞에 0을 추가해주어 자릿수 맞춰준다.
String strMonth = "";
if((month +1) < 10) {
strMonth = "0" + Integer.toString(month +1);
}else {
strMonth = Integer.toString(month + 1);
}
String strNowDate = year + "-" + strMonth + "-" + day;
for(MsgHolidayVO holiVO : resultHolidayList) {
String holiDate = holiVO.getHolidayDate();
if(strNowDate.equals(holiDate)) {
//System.out.println("공휴일이 동일한 날이 있습니다.");
holiCompareSts = true;
break;
}
}
for(MsgAlarmSetVO alarmVO : resultAlarmList) {
String alarmType = alarmVO.getAlarmType();
String startTime = alarmVO.getAlarmStart();
String sDate = strNowDate + " " + startTime;
String endTime = alarmVO.getAlarmEnd();
String eDate = strNowDate + " " + endTime;
Date nowDate = currentDate;
Date startDate = sdf.parse(sDate);
Date endDate = sdf.parse(eDate);
//평일인 경우 비교
if(dayOfWeekNumber > 1 && dayOfWeekNumber < 7 ) {
if(alarmType.equals("W")) {
int copStart = nowDate.compareTo(startDate);
int copEnd = nowDate.compareTo(endDate);
if(copStart > 0 && copEnd < 0) {
//System.out.println("평일 알림 일정 해당시간에 포함됩니다.");
smishingAlarmPassSts = true;
break;
}
}
}else {
//주말인 경우 비교
if(alarmType.equals("E")) {
int copStart = nowDate.compareTo(startDate);
int copEnd = nowDate.compareTo(endDate);
if(copStart > 0 && copEnd < 0) {
//System.out.println("주말 알림 일정 해당시간에 포함됩니다.");
smishingAlarmPassSts = true;
break;
}
}
}
//공휴일인 경우 비교
if(alarmType.equals("H")) {
if(holiCompareSts) {//오늘 날짜가 공휴일이면 실행
int copStart = nowDate.compareTo(startDate);
int copEnd = nowDate.compareTo(endDate);
if(copStart > 0 && copEnd < 0) {
//System.out.println("공휴일 알림 일정 해당시간에 포함됩니다.");
smishingAlarmPassSts = true;
break;
}
}
}
}
return smishingAlarmPassSts;
}
}

View File

@ -231,4 +231,9 @@ public interface MjonMsgService {
MjonMsgVO selectApiSttstList(MjonMsgVO mjonMsgVO) throws Exception;
int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception;
List<MjonMsgVO> selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception;
void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception;
}

View File

@ -208,6 +208,8 @@ public class MjonMsgVO extends ComDefaultVO{
private String bookmarkYn = "N";
private String cancelResultYn = ""; //야간스미싱 알림에 따른 관리자 결과(회원이용정지 또는 문자발송 취소) 처리 여부 N:미처리, Y:처리완료
public String getSearchDelayMsgYn() {
return searchDelayMsgYn;
}
@ -1646,4 +1648,10 @@ public class MjonMsgVO extends ComDefaultVO{
public void setBookmarkYn(String bookmarkYn) {
this.bookmarkYn = bookmarkYn;
}
public String getCancelResultYn() {
return cancelResultYn;
}
public void setCancelResultYn(String cancelResultYn) {
this.cancelResultYn = cancelResultYn;
}
}

View File

@ -94,6 +94,10 @@ public class MjonMsgDAO extends EgovAbstractDAO {
insert("mjonMsgDAO.insertGroupMsgData", mjonMsgVO);
}
public void insertSpamPassMsgData(MjonMsgVO mjonMsgVO) throws Exception{
insert("mjonMsgDAO.insertSpamPassMsgData", mjonMsgVO);
}
public void updateMsgGroupDataForTotCntSum(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateMsgGroupDataForTotCntSum",mjonMsgVO);
@ -504,4 +508,18 @@ public class MjonMsgDAO extends EgovAbstractDAO {
return (MjonMsgVO)select("mjonMsgDAO.selectApiSttstList", mjonMsgVO);
}
public int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception{
return (int) select("mjonMsgDAO.selectCallFromNumberChk", mjonMsgVO);
}
@SuppressWarnings("unchecked")
public List<MjonMsgVO> selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception{
return (List<MjonMsgVO>)list("mjonMsgDAO.selectMjonHoliMsgList", mjonMsgVO);
}
public void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception{
update("mjonMsgDAO.updateHoliMsgResultYn", mjonMsgVO);
}
}

View File

@ -31,6 +31,7 @@ import itn.let.mjo.pay.service.impl.MjonPayDAO;
import itn.let.mjo.reservmsg.service.MjonResvMsgVO;
import itn.let.mjo.reservmsg.service.impl.MjonReservMsgDAO;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uat.uia.service.impl.MberManageDAO;
import itn.let.uss.umt.service.AdmProcHstryVO;
import itn.let.uss.umt.service.impl.AdmProcHstryDAO;
@ -64,6 +65,10 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM
@Resource(name="MjonReservMsgDAO")
private MjonReservMsgDAO mjonReservMsgDAO;
/** mberManageDAO */
@Resource(name="mberManageDAO")
private MberManageDAO mberManageDAO;
@Resource(name="mjonPayDAO")
private MjonPayDAO mjonPayDAO;
@ -1158,4 +1163,21 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM
public MjonMsgVO selectApiSttstList(MjonMsgVO mjonMsgVO) throws Exception {
return mjonMsgDAO.selectApiSttstList(mjonMsgVO);
}
@Override
public int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception{
return mjonMsgDAO.selectCallFromNumberChk(mjonMsgVO);
}
@Override
public List<MjonMsgVO> selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception{
return mjonMsgDAO.selectMjonHoliMsgList(mjonMsgVO);
}
@Override
public void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception{
mjonMsgDAO.updateHoliMsgResultYn(mjonMsgVO);
}
}

View File

@ -72,6 +72,8 @@ import itn.let.mjo.msgsent.service.MjonMsgRecvTestVO;
import itn.let.mjo.msgsent.service.MjonMsgSentTestService;
import itn.let.mjo.msgsent.service.MjonMsgSentTestVO;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.mjo.payva.service.VacsVactService;
import itn.let.mjo.payva.service.VacsVactVO;
import itn.let.mjo.reservmsg.service.MjonReservMsgService;
import itn.let.mjo.reservmsg.service.MjonResvMsgVO;
import itn.let.sts.com.StatsVO;
@ -161,6 +163,10 @@ public class MjonMsgController {
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
//전용계좌 서비스
@Resource(name = "vacsVactService")
private VacsVactService vacsVactService;
//배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"}
private String[][] sendMsgExcelValue ={
{"0" ,"번호" , "1" , "" },
@ -1174,10 +1180,10 @@ public class MjonMsgController {
}
/**
* 문자전송 리스트
* 문자예약전송 리스트
* @param searchVO
* @param model
* @return uss/ion/msg/ReserveNumberList.do( 문자리스트)
* @return /uss/ion/msg/ReserveNumberList.do( 문자리스트)
* @throws Exception
*/
@RequestMapping(value= {"/uss/ion/msg/ReserveNumberList.do"})
@ -1245,6 +1251,267 @@ public class MjonMsgController {
}
/**
* 야간 스미싱 문자전송 리스트
* @param searchVO
* @param model
* @return uss/ion/msg/selectHoliMsgList.do
* @throws Exception
*/
@RequestMapping(value= {"/uss/ion/msg/selectHoliMsgList.do"})
public String selectHoliMsgList(@ModelAttribute("searchVO") MjonMsgVO searchVO,
HttpServletRequest request ,
ModelMap model) throws Exception{
//value 가져오기
// String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ;
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(searchVO.getPageIndex());
paginationInfo.setRecordCountPerPage(searchVO.getPageUnit());
paginationInfo.setPageSize(searchVO.getPageSize());
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
searchVO.setSearchSortCnd("FRST_REGIST_PNTTM");
searchVO.setSearchSortOrd("desc");
}
/*
* 2024.01.26 우영두 변경
* 기존 한달전 시작일자 지정에서 하루전으로 변경
* 데이터 양이 너무 많이 검색되어 하루전으로 변경해 달라는 기획팀 요청
* */
String toDay = MJUtil.getTodayDate(); //오늘
String beforeMonthDay = MJUtil.getBefore1DayDate(); //하루
if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) {
searchVO.setNtceBgnde(beforeMonthDay);
searchVO.setNtceEndde(toDay);
}
List<MjonMsgVO> resultList = new ArrayList<MjonMsgVO>();
resultList = mjonMsgService.selectMjonHoliMsgList(searchVO);
model.addAttribute("resultList", resultList);
//문자발송 실패 결과 코드정보 리스트 불러오기
MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO();
List<MjonMsgResultCodeVO> resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO);
model.addAttribute("resultMsgCodeList", resultMsgCodeList);
paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo);
return "/uss/ion/msg/SendHoliMsgList";
}
/**
* 야간 스미싱 문자전송 사용자 이용정지 예약문자 취소 처리
* @param searchVO
* @param model
* @return uss/ion/msg/updateUserMsgData.do
* @throws Exception
*/
@RequestMapping(value= {"/uss/ion/msg/updateUserMsgData.do"})
public String updateUserMsgData(@RequestParam("checkedIdForDel") String checkedIdForUpt,
HttpServletRequest request ,
ModelMap model) throws Exception{
try {
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String adminId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
//파라미터 데이터 파싱해주기
String[] splitCheckId = checkedIdForUpt.split(",");
if(splitCheckId != null && splitCheckId.length > 0) {
for(String checkId : splitCheckId) {
if(checkId != null && checkId.length() > 0) { //개별 데이터에 대해서 예약 문자 취소 회원 이용정지
String[] splitUserMsg = checkId.split("§");
if(splitUserMsg != null && splitUserMsg.length > 0) {
MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO();
String mberId = splitUserMsg[0];
String msgGroupId = splitUserMsg[1];
String reserveYn = splitUserMsg[2];
mjonResvMsgVO.setUserId(mberId);//회원 아이디
mjonResvMsgVO.setMsgGroupId(msgGroupId);//취소 문자 그룹 아이디
if(reserveYn.equals("Y")) {
int count = mjonMsgService.deleteMsgDelaySendCancelData(mjonResvMsgVO);
}
MberManageVO mberManageVO = new MberManageVO();
//이용자 상태를 변경하는 관리자 아이디 입력
mberManageVO.setMberSttusUpdusrId(adminId);
mberManageVO.setMberId(mberId);
//회원 정보 조회
MberManageVO resultMberVO = mberManageService.selectMber(mberId);
if(resultMberVO != null) { //회원 정보가 있으면
//회원상태가 이용정지 상태가 아니면
if(!resultMberVO.getMberSttus().equals("B")) {
//회원 상태 변경하기
int resultCnt = 0;
mberManageVO.setMberSttus("B"); //이용정지 상태로 변경
mberManageVO.setSmiMemo("시스템 스팸 필터링에 의한 이용정지");
resultCnt = mberManageService.updateUserMsttus(mberManageVO);
if(resultCnt > 0) {
if(mberManageVO.getMberSttus().equals("B")) { //회원 이용정지를 시키는 경우 가상계좌도 함께 해지 시킨다.
//가상계좌 보유 여부 체크
//대상 리스트 가져오기
VacsVactVO vacsVactVO = new VacsVactVO();
vacsVactVO.setMberId(mberId);
List<VacsVactVO> myBankList = vacsVactService.selectBankAccountByUserId(vacsVactVO); //내가 할당받은 전용계좌 리스트 받아오기
int vacsCnt = myBankList.size();
//가상계좌 해지 처리
if(vacsCnt > 0) {
for(int i=0; i < vacsCnt; i++) {
String acctNo = myBankList.get(i).getAcctNo();
VacsVactVO vacsVO = new VacsVactVO();
vacsVO.setMberId(mberId); //회원 아이디
//계좌 해지일자 생성
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String closeDate = sdf.format(now);
vacsVO.setCloseIl(closeDate); //해지일자
vacsVO.setAcctNo(acctNo); //해지계좌번호
//계좌 상태 셋팅 0: 미할당, 1:할당, 9: 해지
vacsVO.setAcctSt("9");
int blockCnt = vacsVactService.updateVacsAccountUsrBlock(vacsVO);
}
}
}
// 관리자 메모
String memo = "";
memo = "회원상태 변경 : 이용정지, 사유 : 알림 비활성화 시간대 발송(예약) 문자내역 중 스미싱 의심으로 판단하여 이용자 정지 처리";
mberManageVO.setMberId(mberId);
mberManageVO.setMemoCn(memo);
mberManageVO.setFrstRegisterId(adminId);
mberManageService.insertMberMemo(mberManageVO);
}
}
}//회원 이용정지 처리 종료
//야간스미싱 알림 상태 처리 완료로 변경
MjonMsgVO mjonMsgVO = new MjonMsgVO();
mjonMsgVO.setUserId(mberId); //사용자 아이디
mjonMsgVO.setMsgGroupId(msgGroupId); //문자 발송 그룹 아이디
mjonMsgVO.setLastUpdusrId(adminId); //변경 관리자 아이디
mjonMsgService.updateHoliMsgResultYn(mjonMsgVO);
}
}
}
}
} catch (Exception e) {
System.out.println("++++++++++++ updateUserMsgData Controller Error !!! ");
}
return "redirect:/uss/ion/msg/selectHoliMsgList.do";
}
/**
* 야간 스미싱 문자전송 사용자 이용정지 예약문자 취소 처리
* @param searchVO
* @param model
* @return /uss/ion/msg/updateMsgStatusData.do
* @throws Exception
*/
@RequestMapping(value= {"/uss/ion/msg/updateMsgStatusData.do"})
public String updateMsgStatusData(@RequestParam("checkedIdForDel") String checkedIdForUpt,
HttpServletRequest request ,
ModelMap model) throws Exception{
try {
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String adminId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
//파라미터 데이터 파싱해주기
String[] splitCheckId = checkedIdForUpt.split(",");
if(splitCheckId != null && splitCheckId.length > 0) {
for(String checkId : splitCheckId) {
if(checkId != null && checkId.length() > 0) { //개별 데이터에 대해서 알림 미처리 문자에 대한 상태값만 완료로 변경, 회원이용정지 예약문자취소는 처리 안함
String[] splitUserMsg = checkId.split("§");
if(splitUserMsg != null && splitUserMsg.length > 0) {
String mberId = splitUserMsg[0];
String msgGroupId = splitUserMsg[1];
//야간스미싱 알림 상태 처리 완료로 변경
MjonMsgVO mjonMsgVO = new MjonMsgVO();
mjonMsgVO.setUserId(mberId); //사용자 아이디
mjonMsgVO.setMsgGroupId(msgGroupId); //문자 발송 그룹 아이디
mjonMsgVO.setLastUpdusrId(adminId); //변경 관리자 아이디
mjonMsgService.updateHoliMsgResultYn(mjonMsgVO);
}
}
}
}
} catch (Exception e) {
System.out.println("++++++++++++ updateMsgStatusData Controller Error !!! ");
}
return "redirect:/uss/ion/msg/selectHoliMsgList.do";
}
/**
* 문자전송 리스트
* @param searchVO
@ -1708,8 +1975,8 @@ public class MjonMsgController {
MjonCommon mjCommon = new MjonCommon();
MjonMsgVO mjonMsgVO = new MjonMsgVO();
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 01084329333 )
mjonMsgVO.setCallFrom("01084329333");
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 15518011 )
mjonMsgVO.setCallFrom("15518011");
String smsTxt = "";
//발송 문자 내용 등록
//문자 발송 문구 변경 - 221117, 승인, 반려를 제외한 인증 타입 삭제(미인증, 심사중, 추가인증필요)
@ -2076,8 +2343,8 @@ public class MjonMsgController {
MjonCommon mjCommon = new MjonCommon();
MjonMsgVO mjonMsgVO = new MjonMsgVO();
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 01084329333 )
mjonMsgVO.setCallFrom("01084329333");
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 15518011 )
mjonMsgVO.setCallFrom("15518011");
String smsTxt = "";
//발송 문자 내용 등록
//문자 발송 문구 변경 - 221117, 승인, 반려를 제외한 인증 타입 삭제(미인증, 심사중, 추가인증필요)
@ -2530,7 +2797,7 @@ public class MjonMsgController {
// Step1. 문자발송
Map<String, Object> mapInfo = new HashMap<String, Object>();
mapInfo = sendMsgData("system", code, "01084329333", callee);
mapInfo = sendMsgData("system", code, "15518011", callee);
isSuccess = Boolean.parseBoolean((mapInfo.get("IsSuccess").toString()));
msg = mapInfo.get("Msg").toString();
}catch(Exception e) {
@ -4075,7 +4342,7 @@ public class MjonMsgController {
contents += "<p style=\"padding-top: 40px; font-size: 18px; font-family: 'Noto Sans KR', sans-serif; letter-spacing: -0.5px; line-height: 1.5; color: #222; margin: 0;\">문자온 서비스를 이용해 주셔서 감사합니다.</p>";
contents += "<div class=\"info_mail\" style=\"width: 100%; border-top: 1px solid #d5d5d5; margin-top: 20px;\">";
contents += "<p style=\"font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">본 메일은 <span style=\"font-weight: 500;\">발신전용</span>이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 <span style=\"font-weight: 500;\">고객센터</span>를 통해 문의하여 주시기 바랍니다.</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 010-8432-9333 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 1551-8011 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>";
contents += "</div>";
contents += "</div>";

View File

@ -69,6 +69,7 @@ import itn.let.mjo.addr.service.AddrVO;
import itn.let.mjo.event.service.MjonEventService;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgcampain.service.MjonCandidateService;
@ -77,6 +78,9 @@ import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgDataVO;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgdata.service.PhoneVO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.mjo.pay.service.MjonPayVO;
import itn.let.mjo.spammsg.service.MjonSpamMsgService;
@ -172,6 +176,9 @@ public class MjonMsgCampainDataController {
@Resource(name = "mberGrdService")
MberGrdService mberGrdService;
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
private static final Logger logger = LoggerFactory.getLogger(MjonMsgCampainDataController.class);
/**
@ -2006,6 +2013,18 @@ public class MjonMsgCampainDataController {
mjonMsgVO.setUserId(userId);
//발신번호가 등록된 유효한 번호인지 확인
int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO);
if(sendCallFromCnt < 1) {
modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다.");
modelAndView.addObject("result", "loginFail");
modelAndView.addObject("resultSts", resultSts);
return modelAndView;
}
/**
* 회원 정지된 상태이면 문자 발송이 안되도록 처리함
* 현재 로그인 세션도 만료 처리함
@ -3174,17 +3193,50 @@ public class MjonMsgCampainDataController {
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
getAdminPhoneSendMsgData(mjonMsgVO);
}
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
//야간 스미싱의심 알림이 활성화 되어있는 경우
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
}
}
@ -3286,7 +3338,7 @@ public class MjonMsgCampainDataController {
//수신번호가 배열로 되어있어서 배열에 담아준다.
String[] phone = new String[1];
String callTo = "01084329333";
String callTo = "15518011";
phone[0] = callTo;
mjonMsgVO.setCallToList(phone);//수신번호 리스트

View File

@ -41,6 +41,7 @@ import itn.let.mjo.addr.service.AddrVO;
import itn.let.mjo.event.service.MjonEventService;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgcampain.service.MjonCandidateService;
@ -48,6 +49,9 @@ import itn.let.mjo.msgcampain.service.MjonCandidateVO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgDataVO;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.mjo.spammsg.service.MjonSpamMsgService;
import itn.let.mjo.symbol.service.MjonSymbolService;
@ -143,6 +147,8 @@ public class MjonMsgCampainHGDataController {
@Resource(name = "mberGrdService")
MberGrdService mberGrdService;
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
/**
* 선거 문자 대량 발송 화면
@ -578,6 +584,18 @@ public class MjonMsgCampainHGDataController {
mjonMsgVO.setUserId(userId);
//발신번호가 등록된 유효한 번호인지 확인
int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO);
if(sendCallFromCnt < 1) {
modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다.");
modelAndView.addObject("result", "loginFail");
modelAndView.addObject("resultSts", resultSts);
return modelAndView;
}
/**
* 회원 정지된 상태이면 문자 발송이 안되도록 처리함
* 현재 로그인 세션도 만료 처리함
@ -873,6 +891,8 @@ public class MjonMsgCampainHGDataController {
System.out.println("++++++++++++++ 중복제거 후 리스트 갯수 ::: "+addrDupListLen);
mjonMsgVO.setTotalCallCnt(addrDupListLen);
//수신자 * 단가 통해 결제 금액 계산
int tmpTotCallCnt = addrDupListLen; //mjonMsgVO.getCallToList().length;
float tmpTotPrice = tmpTotCallCnt * tmpEachPrice;
@ -1082,18 +1102,51 @@ public class MjonMsgCampainHGDataController {
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
MjonMsgCampainDataController mcdController = new MjonMsgCampainDataController();
mcdController.getAdminPhoneSendMsgData(mjonMsgVO);
}
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
//야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
}
}

View File

@ -64,6 +64,7 @@ import itn.let.mjo.addr.service.AddrVO;
import itn.let.mjo.event.service.MjonEventService;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgcampain.service.MjonCandidateService;
@ -73,6 +74,9 @@ import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgDataVO;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgdata.service.PhoneVO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.mjo.spammsg.service.MjonSpamMsgService;
import itn.let.mjo.symbol.service.MjonSymbolService;
@ -167,6 +171,9 @@ public class MjonMsgCampainTWDataController {
@Resource(name = "mberGrdService")
MberGrdService mberGrdService;
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
private static final Logger logger = LoggerFactory.getLogger(MjonMsgCampainTWDataController.class);
/**
@ -930,6 +937,18 @@ public class MjonMsgCampainTWDataController {
mjonMsgVO.setUserId(userId);
//발신번호가 등록된 유효한 번호인지 확인
int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO);
if(sendCallFromCnt < 1) {
modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다.");
modelAndView.addObject("result", "loginFail");
modelAndView.addObject("resultSts", resultSts);
return modelAndView;
}
/**
* 회원 정지된 상태이면 문자 발송이 안되도록 처리함
* 현재 로그인 세션도 만료 처리함
@ -2057,18 +2076,51 @@ public class MjonMsgCampainTWDataController {
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
MjonMsgCampainDataController mjonCampDataController = new MjonMsgCampainDataController();
mjonCampDataController.getAdminPhoneSendMsgData(mjonMsgVO);
}
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
//야간 스미싱의심 알림이 활성화 되어있는 경우만 슬랙 알림 전송처리
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
}
}
@ -2081,21 +2133,6 @@ public class MjonMsgCampainTWDataController {
}
/*
* 선거문자 20건 발송 처리 종료
*
* */
/**
* 선거문자 20건씩 문자 발송 - 엑셀파일 불러오기
* @param body

View File

@ -20,6 +20,7 @@ import itn.let.mjo.addr.service.AddrVO;
import itn.let.mjo.event.service.MjonEventService;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msg.service.impl.MjonMsgDAO;
import itn.let.mjo.msgagent.service.MjonMsgAgentStsService;
@ -28,10 +29,14 @@ import itn.let.mjo.msgagent.service.impl.MjonMsgAgentStsDAO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgDataVO;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.mjo.msgholiday.service.impl.MsgHolidayDAO;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.mjo.pay.service.MjonPayVO;
import itn.let.mjo.pay.service.impl.MjonPayDAO;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.sym.site.service.impl.SiteManagerDAO;
import itn.let.uat.uia.web.SendLogVO;
import itn.let.uss.umt.service.MberManageVO;
@ -50,6 +55,12 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
@Resource(name="mjonMsgAgentStsDAO")
private MjonMsgAgentStsDAO mjonMsgAgentStsDAO;
@Resource(name="siteManagerDAO")
SiteManagerDAO siteManagerDAO;
@Resource(name="MsgHolidayDAO")
private MsgHolidayDAO msgHolidayDAO;
@Resource(name = "egovMjonMsgIdGnrService")
private EgovIdGnrService idgenMsgId;
@ -152,6 +163,46 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
MberManageVO userInfo = mjonMsgDataDAO.selectMberManageInfo(mjonMsgVO.getUserId());
String hotlineAgentCode = userInfo.getHotlineAgentCode();
//야간스미싱 알림여부 정보(관리자 알림관리 상태 정보를 모두 불러옴) 불러오기 20240722 우영두 추가
JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
//스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수
boolean spamSmishingPassStatus = false; //야간스미싱 알림여부가 활성화인 경우 false, 비활성화인경우 true 값을 가지도록 한다.
//스팸, 스미싱 상태인 경우에만 true 처리
//야간스미싱알리 여부가 활성화 인경우 무조건 문자를 즉시 보내도록 한다.
//스미싱 알림 일정에 등록된 날짜와 시간에 포함되면 30분 딜레이 없이 발송 처리하도록 .
if(holiSmishingNoti.equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
spamSmishingPassStatus = smishingAlarmPassSts;
}else {
spamSmishingPassStatus = true;
}
//전용 전송사가 지정되어 있으면 실행
if(!hotlineAgentCode.equals("00")) {
@ -310,6 +361,15 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
}
//야간 스미싱 알림여부가 활성화 이고 예외시간에 포함되는 경우 스팸, 스미싱, 딜레이 값을 모두 N 으로 처리
if(spamSmishingPassStatus) {
spamStatus = "N";
smishingYn = "N";
delayYn = "N";
}
if(!mjonMsgVO.getReserveYn().equals("N")) {//예약문자인 경우 시간 셋팅
@ -786,6 +846,17 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
}
mjonMsgDAO.insertGroupMsgData(mjonMsgVO);
try {
//야간 스미싱 알림이 활성화이고 알림 예외 일정에 포함되고 스팸 또는 스미싱 의심 상태일 경우 문자정보 별도 저장처리 - 20240821 우영두 추가
if(holiSmishingNoti.equals("Y") && spamSmishingPassStatus && (mjonMsgVO.getSpamStatus().equals("Y") || mjonMsgVO.getSmishingYn().equals("Y"))) {
mjonMsgDAO.insertSpamPassMsgData(mjonMsgVO);
}
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++++++++ spamSmishingPassStatus 문자전송 야간 스미싱 알림 데이터 입력 오류 발생 !!!!");
}
}else {
mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO);
}
@ -2372,6 +2443,46 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
MberManageVO userInfo = mjonMsgDataDAO.selectMberManageInfo(mjonMsgVO.getUserId());
String hotlineAgentCode = userInfo.getHotlineAgentCode();
//야간스미싱 알림여부 정보 불러오기
JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
System.out.println("++++++++++++++++++ holiSmishingNoti ::: "+holiSmishingNoti);
//스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수
boolean spamSmishingPassStatus = false; //야간스미싱 알림여부가 활성화인 경우 예외 알림 일정에 포함되는 시간에는 슬랙 30분 딜레이를 하지 않는다.
//스팸, 스미싱 상태인 경우에만 true 처리
//야간스미싱알리 여부가 비활성화 인경우 무조건 문자를 즉시 보내도록 한다.
//야간 스미싱 알림 여부가 활성화 이고 스미싱 알림 일정에 등록된 날짜와 시간에 포함되면 30분 딜레이 없이 발송 처리하도록 .
if(holiSmishingNoti.equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
spamSmishingPassStatus = smishingAlarmPassSts;
}else {
spamSmishingPassStatus = true;
}
//전용 전송사가 지정되어 있으면 실행
if(!hotlineAgentCode.equals("00")) {
@ -2530,6 +2641,15 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
}
//스팸스미싱 예외 상태가 true 이면 30분 딜레이 슬랙 알림을 하지 않는다.
if(spamSmishingPassStatus) {
spamStatus = "N";
smishingYn = "N";
delayYn = "N";
}
if(!mjonMsgVO.getReserveYn().equals("N")) {//예약문자인 경우 시간 셋팅
@ -3013,6 +3133,17 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
}
mjonMsgDAO.insertGroupMsgData(mjonMsgVO);
try {
//야간 스미싱 알림이 활성화이고 알림 예외 일정에 포함되고 스팸 또는 스미싱 의심 상태일 경우 문자정보 별도 저장처리 - 20240821 우영두 추가
if(holiSmishingNoti.equals("Y") && spamSmishingPassStatus && (mjonMsgVO.getSpamStatus().equals("Y") || mjonMsgVO.getSmishingYn().equals("Y"))) {
mjonMsgDAO.insertSpamPassMsgData(mjonMsgVO);
}
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++++++++ spamSmishingPassStatus HG 대량 선거 문자전송 야간 스미싱 알림 데이터 입력 오류 발생 !!!!");
}
}else {
mjonMsgDAO.updateMsgGroupDataForTotCntSum(mjonMsgVO);
}

View File

@ -79,12 +79,16 @@ import itn.let.mjo.addr.service.AddrVO;
import itn.let.mjo.event.service.MjonEventService;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgDataVO;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgdata.service.PhoneVO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.mjo.msgsent.service.MjonMsgSentService;
import itn.let.mjo.msgsent.service.MjonMsgSentVO;
import itn.let.mjo.pay.service.MjonPayService;
@ -181,6 +185,9 @@ public class MjonMsgDataController {
@Resource(name = "MjonMsgSentService")
private MjonMsgSentService mjonMsgSentService;
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class);
/**
@ -2112,6 +2119,20 @@ public class MjonMsgDataController {
mjonMsgVO.setUserId(userId);
//발신번호가 등록된 유효한 번호인지 확인
int sendCallFromCnt = mjonMsgService.selectCallFromNumberChk(mjonMsgVO);
System.out.println(sendCallFromCnt);
if(sendCallFromCnt < 1) {
modelAndView.addObject("message", "등록된 발신번호를 찾을 수 없습니다.");
modelAndView.addObject("result", "loginFail");
modelAndView.addObject("resultSts", resultSts);
return modelAndView;
}
/**
* 회원 정지된 상태이면 문자 발송이 안되도록 처리함
* 현재 로그인 세션도 만료 처리함
@ -3022,20 +3043,52 @@ public class MjonMsgDataController {
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
getAdminPhoneSendMsgData(mjonMsgVO);
}
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
//야간 스미싱의심 알림이 활성화 되어있는 경우
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림 예외설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}
}
}
} catch (Exception e) {
throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e);
}
@ -3133,7 +3186,7 @@ public class MjonMsgDataController {
//수신번호가 배열로 되어있어서 배열에 담아준다.
String[] phone = new String[1];
String callTo = "01084329333";
String callTo = "15518011";
phone[0] = callTo;
mjonMsgVO.setCallToList(phone);//수신번호 리스트

View File

@ -0,0 +1,66 @@
package itn.let.mjo.msgholiday.service;
import java.util.List;
import itn.let.uss.umt.service.UserDefaultVO;
public class MsgAlarmSetVO extends UserDefaultVO{
/**
*
*/
private static final long serialVersionUID = 1L;
private int alarmId; //알림 아이디
private String alarmType; //알림 종류(W: 평일, E:주말, H:공휴일)
private String alarmStart; //알림 시작 시간
private String alarmEnd; //알림 종료 시간
private String useYn; //알림 사용여부(Y: 사용, N: 미사용)
private String alarmIds;
private List alarmIdList; //알림 아이디 리스트
public int getAlarmId() {
return alarmId;
}
public void setAlarmId(int alarmId) {
this.alarmId = alarmId;
}
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public String getAlarmStart() {
return alarmStart;
}
public void setAlarmStart(String alarmStart) {
this.alarmStart = alarmStart;
}
public String getAlarmEnd() {
return alarmEnd;
}
public void setAlarmEnd(String alarmEnd) {
this.alarmEnd = alarmEnd;
}
public String getUseYn() {
return useYn;
}
public void setUseYn(String useYn) {
this.useYn = useYn;
}
public String getAlarmIds() {
return alarmIds;
}
public void setAlarmIds(String alarmIds) {
this.alarmIds = alarmIds;
}
public List getAlarmIdList() {
return alarmIdList;
}
public void setAlarmIdList(List alarmIdList) {
this.alarmIdList = alarmIdList;
}
}

View File

@ -0,0 +1,34 @@
package itn.let.mjo.msgholiday.service;
import java.util.List;
public interface MsgHolidayService {
//공휴일 정보 입력하기
public int insertHolidayData(List<MsgHolidayVO> msgHolidayVO) throws Exception;
//공휴일 리스트 정보 조회하기
public List<MsgHolidayVO> selectMsgHolidayList(MsgHolidayVO msgHolidayVO) throws Exception;
//공휴일 상세정보 조회하기
public MsgHolidayVO selectHolidayDetail(MsgHolidayVO msgHolidayVO) throws Exception;
//공휴일 정보 수정하기
public int updateHolidayData(MsgHolidayVO msgHolidayVO) throws Exception;
//공휴일 정보 삭제하기
public int deleteHolidayData(MsgHolidayVO msgHolidayVO) throws Exception;
//알림 일정 추가하기
public int insertAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception;
//알림 일정 리스트 정보 조회하기
public List<MsgAlarmSetVO> selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception;
//알림 일정 상태정보 수정하기
public int updateAlarmSettingDataUseYn(MsgAlarmSetVO msgAlarmSetVO) throws Exception;
//알림 일정 삭제처리
public int deleteAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception;
}

View File

@ -0,0 +1,82 @@
package itn.let.mjo.msgholiday.service;
import java.util.List;
import itn.let.uss.umt.service.UserDefaultVO;
public class MsgHolidayVO extends UserDefaultVO{
/**
*
*/
private static final long serialVersionUID = 1L;
private int holidayId;
private String holidayNm;
private String holidayDate;
private String holidayType;
private String apiType;
private String searchHoliYear;
private String ntceBgnde;
private String ntceEndde;
private List holidayIdList;
public int getHolidayId() {
return holidayId;
}
public void setHolidayId(int holidayId) {
this.holidayId = holidayId;
}
public String getHolidayNm() {
return holidayNm;
}
public void setHolidayNm(String holidayNm) {
this.holidayNm = holidayNm;
}
public String getHolidayDate() {
return holidayDate;
}
public void setHolidayDate(String holidayDate) {
this.holidayDate = holidayDate;
}
public String getHolidayType() {
return holidayType;
}
public void setHolidayType(String holidayType) {
this.holidayType = holidayType;
}
public String getApiType() {
return apiType;
}
public void setApiType(String apiType) {
this.apiType = apiType;
}
public String getSearchHoliYear() {
return searchHoliYear;
}
public void setSearchHoliYear(String searchHoliYear) {
this.searchHoliYear = searchHoliYear;
}
public String getNtceBgnde() {
return ntceBgnde;
}
public void setNtceBgnde(String ntceBgnde) {
this.ntceBgnde = ntceBgnde;
}
public String getNtceEndde() {
return ntceEndde;
}
public void setNtceEndde(String ntceEndde) {
this.ntceEndde = ntceEndde;
}
public List getHolidayIdList() {
return holidayIdList;
}
public void setHolidayIdList(List holidayIdList) {
this.holidayIdList = holidayIdList;
}
}

View File

@ -0,0 +1,62 @@
package itn.let.mjo.msgholiday.service.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
@Repository("MsgHolidayDAO")
public class MsgHolidayDAO extends EgovAbstractDAO{
//기존 동일 년도의 공휴일 정보 조회 삭제 처리
public int deleteDuplicateHolidayApiData(MsgHolidayVO msgHolidayVO) throws Exception{
return update("MsgHolidayDAO.deleteDuplicateHolidayApiData", msgHolidayVO);
}
//신규 api 공휴일 데이터 추가
public int insertHolidayData(List<MsgHolidayVO> msgHolidayVO) throws Exception{
return update("MsgHolidayDAO.insertHolidayData", msgHolidayVO);
}
@SuppressWarnings("unchecked")
public List<MsgHolidayVO> selectMsgHolidayList(MsgHolidayVO msgHolidayVO) throws Exception{
return (List<MsgHolidayVO>) list("MsgHolidayDAO.selectMsgHolidayList",msgHolidayVO);
}
public MsgHolidayVO selectHolidayDetail(MsgHolidayVO msgHolidayVO) throws Exception{
return (MsgHolidayVO) select("MsgHolidayDAO.selectHolidayDetail", msgHolidayVO);
}
public int updateHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{
return update("MsgHolidayDAO.updateHolidayData",msgHolidayVO);
}
public int deleteHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{
return update("MsgHolidayDAO.deleteHolidayData", msgHolidayVO);
}
public int insertAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return update("MsgHolidayDAO.insertAlarmSettingData", msgAlarmSetVO);
}
@SuppressWarnings("unchecked")
public List<MsgAlarmSetVO> selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return (List<MsgAlarmSetVO>) list("MsgHolidayDAO.selectAlarmSettingList", msgAlarmSetVO);
}
public int updateAlarmSettingDataUseYn(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return update("MsgHolidayDAO.updateAlarmSettingDataUseYn", msgAlarmSetVO);
}
public int deleteAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return update("MsgHolidayDAO.deleteAlarmSettingData", msgAlarmSetVO);
}
}

View File

@ -0,0 +1,79 @@
package itn.let.mjo.msgholiday.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
@Service("MsgHolidayService")
public class MsgHolidayServiceImpl extends EgovAbstractServiceImpl implements MsgHolidayService{
@Resource(name="MsgHolidayDAO")
private MsgHolidayDAO msgHolidayDAO;
@Override
public int insertHolidayData(List<MsgHolidayVO> msgHolidayVO) throws Exception{
//기존 데이터에 같은 해의 API로 입력된 공휴일 정보가 있으면 삭제처리를 먼저 해준다.
MsgHolidayVO tmpMsgHolidayVO = new MsgHolidayVO();
String searchHoliYear = msgHolidayVO.get(0).getHolidayDate().substring(0,4);
String apiType = msgHolidayVO.get(0).getApiType();
//공공데이터 포털에서 공휴일을 받아오는 경우 기존에 등록된 공휴일 정보를 삭제 등록해준다.
if(apiType.equals("Y")) {
tmpMsgHolidayVO.setSearchHoliYear(searchHoliYear);
msgHolidayDAO.deleteDuplicateHolidayApiData(tmpMsgHolidayVO);
}
return msgHolidayDAO.insertHolidayData(msgHolidayVO);
}
@Override
public List<MsgHolidayVO> selectMsgHolidayList(MsgHolidayVO msgHolidayVO) throws Exception{
return msgHolidayDAO.selectMsgHolidayList(msgHolidayVO);
}
@Override
public MsgHolidayVO selectHolidayDetail(MsgHolidayVO msgHolidayVO) throws Exception{
return msgHolidayDAO.selectHolidayDetail(msgHolidayVO);
}
@Override
public int updateHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{
return msgHolidayDAO.updateHolidayData(msgHolidayVO);
}
@Override
public int deleteHolidayData(MsgHolidayVO msgHolidayVO) throws Exception{
return msgHolidayDAO.deleteHolidayData(msgHolidayVO);
}
@Override
public int insertAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return msgHolidayDAO.insertAlarmSettingData(msgAlarmSetVO);
}
@Override
public List<MsgAlarmSetVO> selectAlarmSettingList(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO);
}
@Override
public int updateAlarmSettingDataUseYn(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return msgHolidayDAO.updateAlarmSettingDataUseYn(msgAlarmSetVO);
}
@Override
public int deleteAlarmSettingData(MsgAlarmSetVO msgAlarmSetVO) throws Exception{
return msgHolidayDAO.deleteAlarmSettingData(msgAlarmSetVO);
}
}

View File

@ -0,0 +1,642 @@
package itn.let.mjo.msgholiday.web;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.LoginVO;
import itn.com.cmm.util.MJUtil;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.mail.service.StatusResponse;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
@Controller
public class MsgHolidayController {
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
@Autowired
MjonHolidayApi mjonHolidayApi;
/**
* 공휴일 관리 리스트 화면
* @param searchVO
* @param model
* @return "/let/mjo/holiday/selectHolidayList.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/selectHolidayList.do")
public String selectHolidayList(@ModelAttribute("searchVO") MsgHolidayVO searchVO,
ModelMap model) throws Exception{
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(searchVO.getPageIndex());
paginationInfo.setRecordCountPerPage(searchVO.getPageUnit());
paginationInfo.setPageSize(searchVO.getPageSize());
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
searchVO.setSearchSortCnd("holidayDate");
searchVO.setSearchSortOrd("desc");
}
/*
* 2024.01.26 우영두 변경
* 기존 한달전 시작일자 지정에서 하루전으로 변경
* 데이터 양이 너무 많이 검색되어 하루전으로 변경해 달라는 기획팀 요청
* */
String toDay = MJUtil.getTodayDate(); //오늘
String endDay = "";
if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) {
searchVO.setNtceBgnde(toDay);
//현재년도의 12월 31일로 종료일을 셋팅
Calendar cal = Calendar.getInstance();
String year = Integer.toString(cal.get(Calendar.YEAR));
endDay = year +"-"+"12-31";
searchVO.setNtceEndde(endDay);
}
List<MsgHolidayVO> resultList = msgHolidayService.selectMsgHolidayList(searchVO);
model.addAttribute("resultList", resultList);
paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MsgHolidayVO)resultList.get(0)).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo);
return "/holiday/MsgHolidayList";
}
/**
* 공휴일 관리 리스트 삭제 처리
* @param String
* @param model
* @return "/let/mjo/holiday/deleteHolidayList.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/deleteHolidayList.do")
public String deleteHolidayList(@RequestParam("checkedIdForDel") String checkedIdForUpt,
ModelMap model) throws Exception{
try {
String[] idArr = checkedIdForUpt.split(",");
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
List<String> idList = Arrays.asList(idArr);
msgHolidayVO.setHolidayIdList(idList);
int resultCnt = msgHolidayService.deleteHolidayData(msgHolidayVO);
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++ deleteHolidayList Error !!! ");
}
return "redirect:/let/mjo/holiday/selectHolidayList.do";
}
/**
* 공휴일 관리 공공데이터 포털에서 공휴일 정보 받아오기 API
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/getHolidayApiDataAjax.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/getHolidayApiDataAjax.do")
public String getHolidayApiDataAjax(MsgHolidayVO msgHolidayVO, RedirectAttributes redirectAttributes) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
return redirectUrlMaker.getRedirectUrl();
}
String searchHoliYear = msgHolidayVO.getSearchHoliYear();
if(searchHoliYear == null) {//년도 파라미터가 없으면 현재 년도를 넘겨준다.
Calendar cal = Calendar.getInstance();
String year = Integer.toString(cal.get(Calendar.YEAR));
msgHolidayVO.setSearchHoliYear(year);
}
//공휴일 등록요청한 아이디를 셋팅
msgHolidayVO.setFrstRegisterId(userId);
//공공데이터 포털에서 공휴일 API를 통하여 정보를 받아온다.
List<MsgHolidayVO> msgHolidayList = mjonHolidayApi.getYearHolidayApiData(msgHolidayVO);
int resultCnt = msgHolidayService.insertHolidayData(msgHolidayList);
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++++++ getHolidayApiDataAjax Controller Error!!!! " + e);
redirectAttributes.addFlashAttribute("message", "오류가 발생하였습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do");
return redirectUrlMaker.getRedirectUrl();
}
redirectAttributes.addFlashAttribute("message", "공휴일 등록이 완료 되었습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do");
return redirectUrlMaker.getRedirectUrl();
}
/**
* 공휴일 관리 공휴일 정보 등록 팝업 화면
* @param MsgHolidayVO
* @param model
* @return "/uss/umt/holiday/selectHolidayModifyPopupAjax.do"
* @throws Exception
*/
@RequestMapping("/uss/umt/holiday/selectHolidayModifyPopupAjax.do")
public String selectHolidayModifyPopupAjax(MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{
String toDay = MJUtil.getTodayDate(); //오늘
msgHolidayVO.setHolidayDate(toDay);
model.addAttribute("result", msgHolidayVO);
return "/holiday/popup/MsgHolidayModifyPopup";
}
/**
* 공휴일 관리 공휴일 정보 신규 등록 처리
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/insertHolidayRegistAjax.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/insertHolidayRegistAjax.do")
public ResponseEntity<StatusResponse> insertHolidayRegistAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
return ResponseEntity.ok(
new StatusResponse(HttpStatus.UNAUTHORIZED
, "로그인을 하셔야 이용 가능합니다."
, LocalDateTime.now()
)
);
}
//공공데이터 포털이 아닌 일반 등록 타입으로 등록해 준다.
msgHolidayVO.setApiType("N");
msgHolidayVO.setFrstRegisterId(userId);
//캘린더에서 넘어오는 날짜에서 하이픈을 삭제해준다.
String holidayDate = msgHolidayVO.getHolidayDate().replace("-", "");
msgHolidayVO.setHolidayDate(holidayDate);
List<MsgHolidayVO> msgHolidayList = new ArrayList<MsgHolidayVO>();
msgHolidayList.add(msgHolidayVO);
int resultCnt = msgHolidayService.insertHolidayData(msgHolidayList);
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++ insertHolidayRegistAjax Controller Error!!!! ");
return ResponseEntity.ok(
new StatusResponse(HttpStatus.BAD_REQUEST
, "공휴일 등록 중 오류가 발생하였습니다.."
, LocalDateTime.now()
)
);
}
return ResponseEntity.ok(
new StatusResponse(HttpStatus.OK
, "공휴일 등록을 완료하였습니다."
, LocalDateTime.now()
)
);
}
/**
* 공휴일 관리 공휴일 정보 신규 등록 처리
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/insertHolidayRegistAjax.do"
* @throws Exception
*/
@RequestMapping("/uss/umt/holiday/selectHolidayDetailPopupAjax.do")
public String selectHolidayDetailPopupAjax(MsgHolidayVO msgHolidayVO, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
return redirectUrlMaker.getRedirectUrl();
}
MsgHolidayVO resultVO = msgHolidayService.selectHolidayDetail(msgHolidayVO);
model.addAttribute("result", resultVO);
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++ selectHolidayDetailPopupAjax Error !!!! ");
redirectAttributes.addFlashAttribute("message", "오류가 발생하였습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do");
return redirectUrlMaker.getRedirectUrl();
}
return "/holiday/popup/MsgHolidayModifyPopup";
}
/**
* 공휴일 관리 공휴일 정보 수정 처리
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/updateHolidayDataAjax.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/updateHolidayDataAjax.do")
public ResponseEntity<StatusResponse> updateHolidayDataAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
return ResponseEntity.ok(
new StatusResponse(HttpStatus.UNAUTHORIZED
, "로그인을 하셔야 이용 가능합니다."
, LocalDateTime.now()
)
);
}
//공공데이터 포털이 아닌 일반 등록 타입으로 등록해 준다.
msgHolidayVO.setApiType("N");
msgHolidayVO.setLastUpdusrId(userId);
//캘린더에서 넘어오는 날짜에서 하이픈을 삭제해준다.
String holidayDate = msgHolidayVO.getHolidayDate().replace("-", "");
msgHolidayVO.setHolidayDate(holidayDate);
int resultCnt = msgHolidayService.updateHolidayData(msgHolidayVO);
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++ updateHolidayDataAjax Controller Error!!!! ");
return ResponseEntity.ok(
new StatusResponse(HttpStatus.BAD_REQUEST
, "공휴일 수정 중 오류가 발생하였습니다.."
, LocalDateTime.now()
)
);
}
return ResponseEntity.ok(
new StatusResponse(HttpStatus.OK
, "공휴일 수정을 완료하였습니다."
, LocalDateTime.now()
)
);
}
/**
* 공휴일 관리 공휴일 정보 삭제 처리(상세 팝업화면에서 삭제 요청시 처리)
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/deleteHolidayDataAjax.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/deleteHolidayDataAjax.do")
public ResponseEntity<StatusResponse> deleteHolidayDataAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
return ResponseEntity.ok(
new StatusResponse(HttpStatus.UNAUTHORIZED
, "로그인을 하셔야 이용 가능합니다."
, LocalDateTime.now()
)
);
}
List<String> idList = new ArrayList<String>();
String holiId = Integer.toString(msgHolidayVO.getHolidayId());
idList.add(holiId);
msgHolidayVO.setHolidayIdList(idList);
int resultCnt = msgHolidayService.deleteHolidayData(msgHolidayVO);
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++ deleteHolidayDataAjax Controller Error!!!! ");
return ResponseEntity.ok(
new StatusResponse(HttpStatus.BAD_REQUEST
, "공휴일 삭제 중 오류가 발생하였습니다.."
, LocalDateTime.now()
)
);
}
return ResponseEntity.ok(
new StatusResponse(HttpStatus.OK
, "공휴일이 삭제 되었습니다."
, LocalDateTime.now()
)
);
}
/**
* 관리자 알림 설정 - 야간스미싱알림 설정 팝업 화면
* @param MsgHolidayVO
* @param model
* @return "/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do"
* @throws Exception
*/
@RequestMapping("/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do")
public String selectAlarmSettingPopupAjax(MsgAlarmSetVO msgAlarmSetVO, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다.");
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do");
return redirectUrlMaker.getRedirectUrl();
}
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(msgAlarmSetVO.getPageIndex());
paginationInfo.setRecordCountPerPage(msgAlarmSetVO.getPageUnit());
paginationInfo.setPageSize(msgAlarmSetVO.getPageSize());
msgAlarmSetVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
msgAlarmSetVO.setLastIndex(paginationInfo.getLastRecordIndex());
msgAlarmSetVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(msgAlarmSetVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
msgAlarmSetVO.setSearchSortCnd("ALARM_START");
msgAlarmSetVO.setSearchSortOrd("desc");
}
List<MsgAlarmSetVO> resultList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
model.addAttribute("resultList", resultList);
model.addAttribute("msgAlarmSetVO", msgAlarmSetVO);
paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MsgAlarmSetVO)resultList.get(0)).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo);
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++ selectAlarmSettingPopupAjax Error !!!! ");
}
return "/holiday/alarmset/MsgHolidayAlarmSettingListPop";
}
/**
* 관리자 알림 설정 - 야간스미싱알림 일정 추가 처리
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/alarmSet/insertAlarmSettinDataAjax.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/alarmSet/insertAlarmSettingDataAjax.do")
public ResponseEntity<StatusResponse> insertAlarmSettingDataAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO, ModelMap model) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
return ResponseEntity.ok(
new StatusResponse(HttpStatus.UNAUTHORIZED
, "로그인을 하셔야 이용 가능합니다."
, LocalDateTime.now()
)
);
}
//등록자 아이디 셋팅
msgAlarmSetVO.setFrstRegisterId(userId);
int resultCnt = msgHolidayService.insertAlarmSettingData(msgAlarmSetVO);
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++ insertAlimSettingDataAjax Controller Error!!!! ");
return ResponseEntity.ok(
new StatusResponse(HttpStatus.BAD_REQUEST
, "알림 일정 등록 중 오류가 발생하였습니다.."
, LocalDateTime.now()
)
);
}
return ResponseEntity.ok(
new StatusResponse(HttpStatus.OK
, "알림 일정이 등록 되었습니다."
, LocalDateTime.now()
)
);
}
/**
* 관리자 알림 설정 - 야간스미싱알림 일정 사용상태 변경
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do")
public ResponseEntity<StatusResponse> updateAlarmSettingDataUseYnAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO, ModelMap model) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
return ResponseEntity.ok(
new StatusResponse(HttpStatus.UNAUTHORIZED
, "로그인을 하셔야 이용 가능합니다."
, LocalDateTime.now()
)
);
}
System.out.println(msgAlarmSetVO.getAlarmId());
System.out.println(msgAlarmSetVO.getUseYn());
msgAlarmSetVO.setLastUpdusrId(userId);
int resultCnt = msgHolidayService.updateAlarmSettingDataUseYn(msgAlarmSetVO);
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++ updateAlarmSettingDataUseYnAjax Controller Error!!!! ");
return ResponseEntity.ok(
new StatusResponse(HttpStatus.BAD_REQUEST
, "사용여부 변경 중 오류가 발생하였습니다.."
, LocalDateTime.now()
)
);
}
return ResponseEntity.ok(
new StatusResponse(HttpStatus.OK
, "변경이 완료 되었습니다."
, LocalDateTime.now()
)
);
}
/**
* 관리자 알림 설정 - 야간스미싱알림 일정 삭제 처리
* @param MsgHolidayVO
* @param model
* @return "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do"
* @throws Exception
*/
@RequestMapping("/let/mjo/holiday/alarmSet/deleteAlarmSettingDataAjax.do")
public ResponseEntity<StatusResponse> deleteAlarmSettingDataAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO) throws Exception{
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
return ResponseEntity.ok(
new StatusResponse(HttpStatus.UNAUTHORIZED
, "로그인을 하셔야 이용 가능합니다."
, LocalDateTime.now()
)
);
}
String[] splitId = msgAlarmSetVO.getAlarmIds().split(",");
List<String> idList = Arrays.asList(splitId);
msgAlarmSetVO.setAlarmIdList(idList);
int resultCnt = msgHolidayService.deleteAlarmSettingData(msgAlarmSetVO);
} catch (Exception e) {
System.out.println("++++++++++++++++++++++++ deleteAlarmSettingDataAjax Controller Error!!!! " + e);
return ResponseEntity.ok(
new StatusResponse(HttpStatus.BAD_REQUEST
, "사용여부 변경 중 오류가 발생하였습니다.."
, LocalDateTime.now()
)
);
}
return ResponseEntity.ok(
new StatusResponse(HttpStatus.OK
, "변경이 완료 되었습니다."
, LocalDateTime.now()
)
);
}
@RequestMapping("/let/mjo/holiday/alarmSet/selectAlarmSettingDataCheckAjax.do")
public ResponseEntity<StatusResponse> selectAlarmSettingDataCheckAjax() throws Exception{
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
System.out.println("+++++++++ 스미싱을 패스 시킬건지 ::: "+smishingAlarmPassSts);
return ResponseEntity.ok(
new StatusResponse(HttpStatus.OK
, "변경이 완료 되었습니다."
, LocalDateTime.now()
)
);
}
}

View File

@ -4700,7 +4700,7 @@ public class MjonPayController {
MjonCommon mjCommon = new MjonCommon();
MjonMsgVO mjonMsgVO = new MjonMsgVO();
mjonMsgVO.setCallFrom("01084329333");
mjonMsgVO.setCallFrom("15518011");
//포인트 3자리수 콤마 처리
NumberFormat numberFormat = NumberFormat.getInstance();
String point = numberFormat.format(mjonPayVO.getPoint());

View File

@ -259,7 +259,7 @@ public class MjonSpamMsgController {
//수신번호가 배열로 되어있어서 배열에 담아준다.
String[] phone = new String[1];
String callTo = "01084329333";
String callTo = "15518011";
phone[0] = callTo;
mjonMsgVO.setCallToList(phone);//수신번호 리스트

View File

@ -78,10 +78,14 @@ import itn.let.mjo.apikey.service.ApiKeyMngService;
import itn.let.mjo.event.service.MjonEventService;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.mjocommon.MjonHolidayApi;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgdata.service.MjonMsgReturnVO;
import itn.let.mjo.msgholiday.service.MsgAlarmSetVO;
import itn.let.mjo.msgholiday.service.MsgHolidayService;
import itn.let.mjo.msgholiday.service.MsgHolidayVO;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.mjo.payva.service.VacsVactService;
import itn.let.mjo.payva.service.VacsVactVO;
@ -196,6 +200,9 @@ public class TestController {
@Autowired
CheckNoServiceCommon checkNoServiceCommon;
@Autowired
MjonHolidayApi mjonHolidayApi;
@Resource(name = "egovSiteManagerService")
private EgovSiteManagerService egovSiteManagerService;
@ -223,6 +230,9 @@ public class TestController {
@Resource (name = "userManageService")
private EgovUserManageService egovUserManageService;
@Resource(name = "MsgHolidayService")
private MsgHolidayService msgHolidayService;
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
/////////////////////////////////////////////////////////////////////////////////////////
@ -1029,6 +1039,22 @@ public class TestController {
try {
//회원 정보 금지어 예외 항목에 대해서 스팸 필터링 처리 유무 적용 - 20240820 우영두
MberManageVO mberManageVO = new MberManageVO();
//회원정보 불러오기
mberManageVO = mberManageService.selectMber(mjonMsgVO.getMberId());
//스팸 필터링 예외처리 여부 - (: Y, 오프 : N) 일때 스미싱의심 예외 되도록 적용
String exceptSpamYn = mberManageVO.getExceptSpamYn();
if(exceptSpamYn.equals("Y")) {//스팸 필터링 예외 경우 리턴 처리
modelAndView.addObject("result", "clear");
return modelAndView;
}
List<String> resultSpamTxt = mjonMsgDataService.selectSpamKeywordList();
String spmFilterTxt = "";
if(resultSpamTxt == null) {//스팸 체크리스트가 없는 경우
@ -2109,13 +2135,78 @@ public class TestController {
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
System.out.println("slack noti");
comm.getAdminSandSlack(mjonMsgVO);
String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti();
//야간 스미싱의심 알림이 활성화 되어있는 경우
if(holiSmishingNoti.equals("Y")) {
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
//Slack으로 메세지 전송 처리
/*MjonCommon comm = new MjonCommon();
System.out.println("slack noti");
comm.getAdminSandSlack(mjonMsgVO);*/
}
}
/*else {//야간스미싱 알림 비활성화인 경우 - 알림일정에 포함되지 않으면 슬랙 발송 처리(알림일정에 포함되면 슬랙발송 X - 알림 비활성화이기 때문에 발송X)
MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO();
msgAlarmSetVO.setUseYn("Y");
msgAlarmSetVO.setFirstIndex(0);
List<MsgAlarmSetVO> resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
MsgHolidayVO msgHolidayVO = new MsgHolidayVO();
msgHolidayVO.setFirstIndex(0);
msgHolidayVO.setRecordCountPerPage(100);
msgHolidayVO.setSearchHoliYear(Integer.toString(year));
List<MsgHolidayVO> resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO);
MjonHolidayApi mjonHolidayApi = new MjonHolidayApi();
boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList);
if(!smishingAlarmPassSts) {//평일,주말, 공휴일 알림설정 시간에 포함되지 않는 경우 슬랙 알림 발송
MjonCommon comm = new MjonCommon();
comm.getAdminSandSlack(mjonMsgVO);
}
}*/
}
@ -3289,6 +3380,5 @@ public class TestController {
}
}
}

View File

@ -49,6 +49,7 @@ public class JoinSettingVO {
private String emailNoti; //관리자 이메일 알림 여부
private String slackNoti; //관리자 SLACK 알림 여부
private String smishingNoti; //첫결제(카드제외) 스미싱의심 알림 여부
private String holiSmishingNoti; //야간 스미싱알림 여부
public String getSmishingNoti() {
return smishingNoti;
@ -224,6 +225,14 @@ public class JoinSettingVO {
public void setFaxPrice(float faxPrice) {
this.faxPrice = faxPrice;
}
public String getHoliSmishingNoti() {
return holiSmishingNoti;
}
public void setHoliSmishingNoti(String holiSmishingNoti) {
this.holiSmishingNoti = holiSmishingNoti;
}
}

View File

@ -831,9 +831,9 @@ public class EgovLoginController {
MjonMsgVO mjonMsgVO = new MjonMsgVO();
String contents = "";
if("p".equals(mberManageVO.getDept())){ //개인회원
contents = "[문자온] "+mberManageVO.getMberNm()+"님의 회원가입을 진심으로 환영합니다."+System.lineSeparator()+"o 사이트 주소 : www.munjaon.co.kr"+System.lineSeparator()+"o 가입아이디 : "+mberManageVO.getMberId()+System.lineSeparator()+"인증전화번호 : "+mberManageVO.getMoblphonNo()+System.lineSeparator()+"※ 본인이 직접 가입하지 않은 경우 문자온 고객센터(010-8432-9333)로 즉시 연락주시기 바랍니다."+System.lineSeparator()+System.lineSeparator()+"감사합니다.";
contents = "[문자온] "+mberManageVO.getMberNm()+"님의 회원가입을 진심으로 환영합니다."+System.lineSeparator()+"o 사이트 주소 : www.munjaon.co.kr"+System.lineSeparator()+"o 가입아이디 : "+mberManageVO.getMberId()+System.lineSeparator()+"인증전화번호 : "+mberManageVO.getMoblphonNo()+System.lineSeparator()+"※ 본인이 직접 가입하지 않은 경우 문자온 고객센터(1551-8011)로 즉시 연락주시기 바랍니다."+System.lineSeparator()+System.lineSeparator()+"감사합니다.";
}else{ //기업회원
contents = "[문자온] "+mberManageVO.getMberNm()+"님의 회원가입을 진심으로 환영합니다."+System.lineSeparator()+"o 사이트 주소 : www.munjaon.co.kr"+System.lineSeparator()+"o 가입아이디 : "+mberManageVO.getMberId()+System.lineSeparator()+"인증전화번호 : "+mberManageVO.getMoblphonNo()+System.lineSeparator()+"※ 본인이 직접 가입하지 않은 경우 문자온 고객센터(010-8432-9333)로 즉시 연락주시기 바랍니다."+System.lineSeparator()+"※ 기업회원은 필수 제출서류 관리자 확인 후 최종 승인됩니다."+System.lineSeparator()+"감사합니다.";
contents = "[문자온] "+mberManageVO.getMberNm()+"님의 회원가입을 진심으로 환영합니다."+System.lineSeparator()+"o 사이트 주소 : www.munjaon.co.kr"+System.lineSeparator()+"o 가입아이디 : "+mberManageVO.getMberId()+System.lineSeparator()+"인증전화번호 : "+mberManageVO.getMoblphonNo()+System.lineSeparator()+"※ 본인이 직접 가입하지 않은 경우 문자온 고객센터(1551-8011)로 즉시 연락주시기 바랍니다."+System.lineSeparator()+"※ 기업회원은 필수 제출서류 관리자 확인 후 최종 승인됩니다."+System.lineSeparator()+"감사합니다.";
}
// 문자타입별 대표전송사 정보
@ -848,7 +848,7 @@ public class EgovLoginController {
mjonMsgVO.setSmsTxt(contents); //문자 내용
mjonMsgVO.setReserveYn("N");//에약문자 N
mjonMsgVO.setCallFrom("01084329333");//발신번호
mjonMsgVO.setCallFrom("15518011");//발신번호
mjonMsgVO.setUserId("system"); //ID
mjonMsgVO.setMsgType("6"); //MMS - 장문
mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력
@ -2661,7 +2661,7 @@ public class EgovLoginController {
mjonMsgVO.setSmsTxt(contents);
mjonMsgVO.setReserveYn("N");
// 시스템 문자발송 번호
mjonMsgVO.setCallFrom("01084329333");
mjonMsgVO.setCallFrom("15518011");
// 문자 수신 번호 jsp에서 받아와야함!
/* mjonMsgVO.setCallTo(callTo); */
@ -2830,7 +2830,7 @@ public class EgovLoginController {
mjonMsgVO.setSmsTxt(contents);
mjonMsgVO.setReserveYn("N");
// 시스템 문자발송 번호
mjonMsgVO.setCallFrom("01084329333");
mjonMsgVO.setCallFrom("15518011");
try {
@ -3442,7 +3442,7 @@ public class EgovLoginController {
contents += "<p style=\"padding-top: 40px; font-size: 18px; font-family: 'Noto Sans KR', sans-serif; letter-spacing: -0.5px; line-height: 1.5; color: #222; margin: 0;\">문자온 서비스를 이용해 주셔서 감사합니다.</p>";
contents += "<div class=\"info_mail\" style=\"width: 100%; border-top: 1px solid #d5d5d5; margin-top: 20px;\">";
contents += "<p style=\"font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">본 메일은 <span style=\"font-weight: 500;\">발신전용</span>이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 <span style=\"font-weight: 500;\">고객센터</span>를 통해 문의하여 주시기 바랍니다.</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 010-8432-9333 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 1551-8011 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>";
contents += "</div>";
contents += "</div>";

View File

@ -1753,8 +1753,8 @@ public class EgovMypageController {
MjonCommon mjCommon = new MjonCommon();
MjonMsgVO mjonMsgVO = new MjonMsgVO();
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 01084329333 )
mjonMsgVO.setCallFrom("01084329333");
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 15518011 )
mjonMsgVO.setCallFrom("15518011");
//발송 문자 내용 등록
String smsTxt = "[발신번호 재승인 요청] "+ userNm +"(" + userId + ")/발신번호 " + phoneNum + "/재승인 요청";
mjonMsgVO.setSmsTxt(smsTxt);
@ -2667,8 +2667,8 @@ public class EgovMypageController {
MjonCommon mjCommon = new MjonCommon();
MjonMsgVO mjonMsgVO = new MjonMsgVO();
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 01084329333 )
mjonMsgVO.setCallFrom("01084329333");
//발신번호 등록(관리자에게 알림이기에 발신번호도 법인폰 번호로 한다. 15518011 )
mjonMsgVO.setCallFrom("15518011");
//발송 문자 내용 등록
String smsTxt = "[발신번호 승인 요청] "+ userNm +"(" + userId + ")/발신번호 " + phoneNum + "/승인 요청";
mjonMsgVO.setSmsTxt(smsTxt);

View File

@ -376,7 +376,7 @@ public class EgovMberCmpHstController {
mjonMsgVO.setSmsTxt(contents); //문자 내용
mjonMsgVO.setReserveYn("N");//에약문자 N
mjonMsgVO.setCallFrom("01084329333");//발신번호
mjonMsgVO.setCallFrom("15518011");//발신번호
mjonMsgVO.setUserId("system"); //ID
mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력
@ -590,7 +590,7 @@ public class EgovMberCmpHstController {
mjonMsgVO.setSmsTxt(contents); //문자 내용
mjonMsgVO.setReserveYn("N");//에약문자 N
mjonMsgVO.setCallFrom("01084329333");//발신번호
mjonMsgVO.setCallFrom("15518011");//발신번호
mjonMsgVO.setUserId("system"); //ID
mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력
@ -763,7 +763,7 @@ public class EgovMberCmpHstController {
mjonMsgVO.setSmsTxt(contents); //문자 내용
mjonMsgVO.setReserveYn("N");//에약문자 N
mjonMsgVO.setCallFrom("01084329333");//발신번호
mjonMsgVO.setCallFrom("15518011");//발신번호
mjonMsgVO.setUserId("system"); //ID
mjonMsgVO.setBefCash("0.0"); //관리자가 발송하는 것이라서 0원으로 입력

View File

@ -3048,7 +3048,7 @@ public class EgovUserManageController {
contents += "<p style=\"padding-top: 40px; font-size: 18px; font-family: 'Noto Sans KR', sans-serif; letter-spacing: -0.5px; line-height: 1.5; color: #222; margin: 0;\">문자온 서비스를 이용해 주셔서 감사합니다.</p>";
contents += "<div class=\"info_mail\" style=\"width: 100%; border-top: 1px solid #d5d5d5; margin-top: 20px;\">";
contents += "<p style=\"font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">본 메일은 <span style=\"font-weight: 500;\">발신전용</span>이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 <span style=\"font-weight: 500;\">고객센터</span>를 통해 문의하여 주시기 바랍니다.</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 010-8432-9333 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 1551-8011 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>";
contents += "</div>";
contents += "</div>";
@ -4929,6 +4929,14 @@ public String selectMberSpamBlockMemoDetailAjax(MberManageVO mberManageVO, Model
}
// 관리자 메모
String memo = "";
memo = "회원상태 변경 : 이용정지, 사유 : "+ mberManageVO.getSmiMemo();
mberManageVO.setMberId(mberId);
mberManageVO.setMemoCn(memo);
mberManageVO.setFrstRegisterId(userId);
mberManageService.insertMberMemo(mberManageVO);
modelAndView.addObject("message", "차단처리가 완료되었습니다.");
modelAndView.addObject("result", "success");

View File

@ -104,7 +104,7 @@ public class MjonNoticeSendUtil {
contents += "<p class=\"area_num\" style=\"background-color: #f3f4f5; width: 100%; font-family: 'Noto Sans KR', sans-serif; font-size: 21px; font-weight: 600; box-sizing: border-box; border-radius: 1px; letter-spacing: -0.5px; padding: 8px 30px; margin: 20px 0;\">%emailContents%</p>";
contents += "<div class=\"info_mail\" style=\"width: 100%; border-top: 1px solid #d5d5d5; margin-top: 20px;\">";
contents += "<p style=\"font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">본 메일은 <span style=\"font-weight: 500;\">발신전용</span>이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 <span style=\"font-weight: 500;\">고객센터</span>를 통해 문의하여 주시기 바랍니다.</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 010-8432-9333 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 1551-8011 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>";
contents += "</div>";
contents += "</div>";
@ -213,7 +213,7 @@ public class MjonNoticeSendUtil {
contents += "<p class=\"area_num\" style=\"background-color: #f3f4f5; width: 100%; font-family: 'Noto Sans KR', sans-serif; font-size: 21px; font-weight: 600; box-sizing: border-box; border-radius: 1px; letter-spacing: -0.5px; padding: 8px 30px; margin: 20px 0;\">%emailContents%</p>";
contents += "<div class=\"info_mail\" style=\"width: 100%; border-top: 1px solid #d5d5d5; margin-top: 20px;\">";
contents += "<p style=\"font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">본 메일은 <span style=\"font-weight: 500;\">발신전용</span>이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 <span style=\"font-weight: 500;\">고객센터</span>를 통해 문의하여 주시기 바랍니다.</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 010-8432-9333 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스) <br> 사업자 번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 2021-다산-0422 <br> 문의전화 : 1551-8011 E-mail : help@iten.co.kr</p>";
contents += "<p style=\"margin-top: 20px; font-size: 15px; font-weight: 400; color: #999; line-height: 1.3; letter-spacing: -0.5px; font-family: 'Noto Sans KR', sans-serif;\">Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>";
contents += "</div>";
contents += "</div>";
@ -301,7 +301,7 @@ public class MjonNoticeSendUtil {
mjonMsgVO.setMsgKind("S");
mjonMsgVO.setSmsTxt(smsTxt); // 문자 내용
mjonMsgVO.setReserveYn("N"); // 즉시 전송
mjonMsgVO.setCallFrom("01084329333"); // 시스템 문자발송 번호
mjonMsgVO.setCallFrom("15518011"); // 시스템 문자발송 번호
mjonMsgVO.setUserId("system");
mjonMsgVO.setMsgPayCode("SMS");
mjonMsgVO.setMsgGroupCnt("0");
@ -371,14 +371,14 @@ public class MjonNoticeSendUtil {
mjonMsgVO.setUserId("system"); // 문자전송 ID
mjonMsgVO.setSmsTxt(smsTxt); // 문자 내용
mjonMsgVO.setReserveYn("N"); // 즉시 전송
mjonMsgVO.setCallFrom("01084329333"); // 시스템 문자발송 번호
mjonMsgVO.setCallFrom("15518011"); // 시스템 문자발송 번호
mjonMsgVO.setUserId("system");
mjonMsgVO.setMsgPayCode("SMS");
mjonMsgVO.setMsgGroupCnt("0");
mjonMsgVO.setReqDate(simpleDateFormat2.format(nowDate));
// 받는사람
mjonMsgVO.setCallTo("01084329333");
mjonMsgVO.setCallTo("15518011");
MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO);
returnVO.getSendMsgCnt();
@ -447,7 +447,7 @@ public class MjonNoticeSendUtil {
mjonMsgVO.setFileCnt("0"); //첨부이미지 갯수
mjonMsgVO.setSmsTxt(smsTxt); // 문자 내용
mjonMsgVO.setReserveYn("N"); // 즉시 전송
mjonMsgVO.setCallFrom("01084329333"); // 시스템 문자발송 번호
mjonMsgVO.setCallFrom("15518011"); // 시스템 문자발송 번호
mjonMsgVO.setUserId("system");
mjonMsgVO.setMsgPayCode("SMS");
mjonMsgVO.setMsgGroupCnt("0");

View File

@ -72,7 +72,7 @@ public class MjonSmsCertSendUtil {
mjonMsgVO.setSmsTxt(contents);
mjonMsgVO.setReserveYn("N");
// 시스템 문자발송 번호
mjonMsgVO.setCallFrom("01084329333");
mjonMsgVO.setCallFrom("15518011");
mjonMsgVO.setCallTo(callTo);
try {

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<sqlMap resource="egovframework/sqlmap/let/holiday/MsgHolidayData_SQL_mysql.xml"/>
</sqlMapConfig>

View File

@ -109,6 +109,7 @@
MJ_AGENT_SEND_RATE
SET
REP_AGENT = #repAgent#
, LAST_UPDT_PNTTM = now()
WHERE 1=1
AND MSG_TYPE = #msgType#
</update>

View File

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="UTF-8"?><!--
수정일 수정자 수정내용
========= ======= =================================================
2024.07.29 우영두
-->
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMap namespace="Holiday">
<typeAlias alias="msgHolidayVO" type="itn.let.mjo.msgholiday.service.MsgHolidayVO"/>
<typeAlias alias="msgAlarmSetVO" type="itn.let.mjo.msgholiday.service.MsgAlarmSetVO"/>
<insert id="MsgHolidayDAO.insertHolidayData" parameterClass="java.util.List">
INSERT INTO MJ_HOLIDAY
(HOLIDAY_NM,
HOLIDAY_DATE,
HOLIDAY_TYPE,
API_TYPE,
FRST_REGIST_PNTTM,
FRST_REGISTER_ID,
LAST_UPDT_PNTTM,
LAST_UPDUSR_ID
)VALUES
<iterate conjunction=",">
(
#[].holidayNm#,
#[].holidayDate#,
#[].holidayType#,
#[].apiType#,
NOW(),
#[].frstRegisterId#,
NOW(),
#[].lastUpdusrId#
)
</iterate>
</insert>
<select id="MsgHolidayDAO.selectMsgHolidayList" parameterClass="msgHolidayVO" resultClass="msgHolidayVO">
SELECT COUNT(HOLIDAY_ID) OVER() AS totCnt,
HOLIDAY_ID AS holidayId,
HOLIDAY_NM AS holidayNm,
DATE_FORMAT(HOLIDAY_DATE, '%Y-%m-%d') AS holidayDate,
HOLIDAY_TYPE AS holidayType,
DATE_FORMAT(FRST_REGIST_PNTTM, '%Y-%m-%d %T') AS frstRegistPnttm,
FRST_REGISTER_ID AS frstRegisterId,
DATE_FORMAT(LAST_UPDT_PNTTM, '%Y-%m-%d %T') AS lastUpdtPnttm,
LAST_UPDUSR_ID AS lastUpdusrID
FROM MJ_HOLIDAY
WHERE 1=1
<isNotEmpty property="searchKeyword">
AND ( HOLIDAY_NM LIKE CONCAT('%', #searchKeyword#, '%') )
</isNotEmpty>
<isNotEmpty property="holidayType">
<isEqual property="holidayType" compareValue="1">
AND HOLIDAY_TYPE = 1
</isEqual>
<isEqual property="holidayType" compareValue="2">
AND HOLIDAY_TYPE = 2
</isEqual>
<isEqual property="holidayType" compareValue="3">
AND HOLIDAY_TYPE = 3
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchHoliYear">
AND HOLIDAY_DATE LIKE CONCAT(#searchHoliYear#,'%')
</isNotEmpty>
<isNotEmpty property="ntceBgnde">
AND HOLIDAY_DATE BETWEEN DATE_FORMAT(#ntceBgnde#, '%Y%m%d') AND DATE_FORMAT(#ntceEndde#, '%Y%m%d')
</isNotEmpty>
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<select id="MsgHolidayDAO.selectHolidayDetail" parameterClass="msgHolidayVO" resultClass="msgHolidayVO">
SELECT HOLIDAY_ID AS holidayId,
HOLIDAY_NM AS holidayNm,
DATE_FORMAT(HOLIDAY_DATE, '%Y-%m-%d') AS holidayDate,
HOLIDAY_TYPE AS holidayType,
DATE_FORMAT(FRST_REGIST_PNTTM, '%Y-%m-%d %T') AS frstRegistPnttm,
FRST_REGISTER_ID AS frstRegisterId,
DATE_FORMAT(LAST_UPDT_PNTTM, '%Y-%m-%d %T') AS lastUpdtPnttm,
LAST_UPDUSR_ID AS lastUpdusrID
FROM MJ_HOLIDAY
WHERE HOLIDAY_ID = #holidayId#
</select>
<delete id="MsgHolidayDAO.deleteDuplicateHolidayApiData" parameterClass="msgHolidayVO">
DELETE
FROM MJ_HOLIDAY
WHERE HOLIDAY_ID IN
( SELECT HOLIDAY_ID
FROM MJ_HOLIDAY
WHERE API_TYPE = 'Y'
AND HOLIDAY_DATE LIKE CONCAT(#searchHoliYear#,'%')
)
</delete>
<update id="MsgHolidayDAO.updateHolidayData" parameterClass="msgHolidayVO">
UPDATE MJ_HOLIDAY
SET HOLIDAY_NM = #holidayNm#,
HOLIDAY_DATE = #holidayDate#,
HOLIDAY_TYPE = #holidayType#,
LAST_UPDUSR_ID = #lastUpdusrId#
WHERE HOLIDAY_ID = #holidayId#
</update>
<delete id="MsgHolidayDAO.deleteHolidayData" parameterClass="msgHolidayVO">
DELETE FROM MJ_HOLIDAY
WHERE 1=1
<isNotEmpty property="holidayIdList">
<iterate prepend="AND HOLIDAY_ID IN " open="(" close=")" conjunction="," property="holidayIdList">
#holidayIdList[]#
</iterate>
</isNotEmpty>
</delete>
<insert id="MsgHolidayDAO.insertAlarmSettingData" parameterClass="msgAlarmSetVO">
INSERT
INTO MJ_SPAMPASS_ALARM
(
ALARM_TYPE,
ALARM_START,
ALARM_END,
FRST_REGIST_PNTTM,
FRST_REGISTER_ID,
LAST_UPDT_PNTTM,
LAST_UPDUSR_ID
)
VALUES
( #alarmType#
, #alarmStart#
, #alarmEnd#
, NOW()
, #frstRegisterId#
, NOW()
, #frstRegisterId#
)
</insert>
<select id="MsgHolidayDAO.selectAlarmSettingList" parameterClass="msgAlarmSetVO" resultClass="msgAlarmSetVO">
SELECT COUNT(ALARM_ID) OVER() AS totCnt,
ALARM_ID AS alarmId,
ALARM_TYPE AS alarmType,
ALARM_START AS alarmStart,
ALARM_END AS alarmEnd,
USE_YN AS useYn,
DATE_FORMAT(FRST_REGIST_PNTTM, '%Y-%m-%d %T') AS frstRegistPnttm,
FRST_REGISTER_ID AS frstRegisterId,
DATE_FORMAT(LAST_UPDT_PNTTM, '%Y-%m-%d %T') AS lastRegistPnttm,
LAST_UPDUSR_ID AS lastUpdusrId
FROM MJ_SPAMPASS_ALARM
WHERE 1=1
<isNotEmpty property="useYn">
AND USE_YN = #useYn#
</isNotEmpty>
ORDER BY 1=1
, ALARM_TYPE ASC
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<update id="MsgHolidayDAO.updateAlarmSettingDataUseYn" parameterClass="msgAlarmSetVO">
UPDATE MJ_SPAMPASS_ALARM SET
USE_YN = #useYn#,
LAST_UPDT_PNTTM = NOW(),
LAST_UPDUSR_ID = #lastUpdusrId#
WHERE ALARM_ID = #alarmId#
</update>
<delete id="MsgHolidayDAO.deleteAlarmSettingData" parameterClass="msgAlarmSetVO">
DELETE FROM MJ_SPAMPASS_ALARM
WHERE 1=1
<isNotEmpty property="alarmIdList">
<iterate prepend="AND ALARM_ID IN " open="(" close=")" conjunction="," property="alarmIdList">
#alarmIdList[]#
</iterate>
</isNotEmpty>
</delete>
</sqlMap>

View File

@ -2303,6 +2303,39 @@
)
</insert>
<insert id="mjonMsgDAO.insertSpamPassMsgData" parameterClass="mjonMsgVO">
INSERT
INTO MJ_SPAMPASS_MSG
(
MSG_GROUP_ID,
USER_ID,
REQ_DATE,
SMS_TXT,
MSG_GROUP_CNT,
CALL_FROM,
MSG_TYPE,
RESERVE_YN,
FRST_REGIST_PNTTM,
LAST_UPDT_PNTTM
)
VALUES
(
#msgGroupId#
, #userId#
, #reqDate#
, #smsTxt#
, #totalCallCnt#
, #callFrom#
, #msgType#
, #reserveYn#
, NOW()
, NOW()
)
</insert>
<update id="mjonMsgDAO.updateGroupMsgData" parameterClass="mjonMsgVO">
UPDATE MJ_MSG_GROUP_DATA
@ -7518,5 +7551,271 @@
</select>
<select id="mjonMsgDAO.selectCallFromNumberChk" parameterClass="mjonMsgVO" resultClass="Integer">
SELECT COUNT(USER_ID) FROM MJ_PHONE_MEMBER
WHERE USER_ID = #userId#
AND PHM_TYPE = '01'
AND PHONE_NUMBER = #callFrom#
</select>
<select id="mjonMsgDAO.selectMjonHoliMsgList" parameterClass="mjonMsgVO" resultClass="mjonMsgVO">
SELECT M.totCnt,
M.userId,
M.userNm,
M.msgGroupId,
M.reqDate,
M.reqFullDate,
M.smsTxt,
M.callFrom,
M.msgType,
M.msgTypeTxt,
M.reserveYn,
M.reserveCYn,
M.msgGroupCnt,
M.sendKind,
M.cancelResultYn,
M.frstRegistPnttm,
M.adminSmsNoticeYn,
M.smishingYn,
M.atSmishingYn,
M.mberSttus,
(SELECT COUNT(0)
FROM MJ_MSG_DATA B
WHERE B.RESERVE_C_YN = 'N'
AND B.MSG_GROUP_ID = M.msgGroupId
AND (
CASE
WHEN B.AGENT_CODE = '01'
AND
(
B.RSLT_CODE = '100'
AND
(
B.RSLT_CODE2 = '0'
)
)
THEN 'S'
WHEN B.AGENT_CODE = '02'
AND
(
B.RSLT_CODE = '0'
)
THEN 'S'
WHEN B.AGENT_CODE = '03'
AND
(
B.RSLT_CODE = '100' OR B.RSLT_CODE = '101' OR B.RSLT_CODE = '110' OR B.RSLT_CODE = '800'
)
THEN 'S'
WHEN B.AGENT_CODE = '04'
AND
(
B.RSLT_CODE = '4100' OR B.RSLT_CODE = '6600'
)
THEN 'S'
WHEN B.AGENT_CODE = '05'
AND
(
B.RSLT_CODE = '1000' OR B.RSLT_CODE = '1001'
)
THEN 'S'
WHEN B.AGENT_CODE = '07'
AND
(
B.RSLT_CODE = '6' OR B.RSLT_CODE = '1000'
)
THEN 'S'
WHEN B.AGENT_CODE = '08'
AND
(
B.RSLT_CODE = '1000' OR B.RSLT_CODE = '1001'
)
THEN 'S'
WHEN B.AGENT_CODE = '09'
AND
(
B.RSLT_CODE = '1000' OR B.RSLT_CODE = '1001'
)
THEN 'S'
ELSE 'F'
END) = 'S'
)
AS successCount,
(SELECT COUNT(0)
FROM MJ_MSG_DATA B
WHERE B.RESERVE_C_YN = 'N'
AND B.MSG_GROUP_ID = M.msgGroupId
AND (
CASE
WHEN B.AGENT_CODE = '01'
AND
(
B.RSLT_CODE = '410'
AND
(
B.RSLT_CODE2 = 'c'
)
)
THEN 'E'
WHEN B.AGENT_CODE = '02'
AND
(
B.RSLT_CODE = '1027' OR B.RSLT_CODE = '1030'
)
THEN 'E'
WHEN B.AGENT_CODE = '03'
AND B.RSLT_CODE = '508'
THEN 'E'
WHEN B.AGENT_CODE = '04'
AND
(
B.RSLT_CODE = '4432' OR B.RSLT_CODE = '4433' OR B.RSLT_CODE = '6628' OR B.RSLT_CODE = '6629'
)
THEN 'E'
WHEN B.AGENT_CODE = '05'
AND
(
B.RSLT_CODE = '2404' OR B.RSLT_CODE = '3404' OR B.RSLT_CODE = '6404'
)
THEN 'E'
WHEN B.AGENT_CODE = '07'
AND B.RSLT_CODE = '9013'
THEN 'E'
WHEN B.AGENT_CODE = '08'
AND
(
B.RSLT_CODE = '2404' OR B.RSLT_CODE = '3404' OR B.RSLT_CODE = '6404'
)
THEN 'E'
WHEN B.AGENT_CODE = '09'
AND
(
B.RSLT_CODE = '2404' OR B.RSLT_CODE = '3404' OR B.RSLT_CODE = '6404'
)
THEN 'E'
ELSE 'ETC'
END) = 'E'
)
AS callRejectionCount
FROM ( SELECT COUNT(msm.SPAMPASS_ID) OVER() AS totCnt,
mmgd.USER_ID AS userId,
lmb.MBER_NM AS userNm,
mmgd.MSG_GROUP_ID AS msgGroupId,
DATE_FORMAT(mmgd.REQ_DATE, '%Y-%m-%d %H:%i' ) AS reqDate ,
DATE_FORMAT(mmgd.REQ_DATE, '%Y-%m-%d %H:%i' ) AS reqFullDate ,
mmgd.SMS_TXT AS smsTxt ,
mmgd.CALL_FROM AS callFrom ,
mmgd.MSG_TYPE AS msgType ,
D.CODE_NM AS msgTypeTxt,
mmgd.RESERVE_YN AS reserveYn ,
mmgd.RESERVE_C_YN AS reserveCYn ,
mmgd.MSG_GROUP_CNT AS msgGroupCnt ,
mmgd.SEND_KIND AS sendKind,
msm.CANCEL_RESULT_YN AS cancelResultYn,
DATE_FORMAT(msm.FRST_REGIST_PNTTM, '%Y-%m-%d %H:%i' ) AS frstRegistPnttm,
lmb.ADMIN_SMS_NOTICE_YN AS adminSmsNoticeYn,
lmb.SMISHING_YN AS smishingYn,
lmb.AT_SMISHING_YN AS atSmishingYn,
lmb.SPAM_YN AS spamYn,
lmb.MBER_STTUS AS mberSttus
FROM MJ_SPAMPASS_MSG msm
INNER JOIN LETTNGNRLMBER lmb
ON msm.USER_ID = lmb.MBER_ID
INNER JOIN MJ_MSG_GROUP_DATA mmgd
ON msm.MSG_GROUP_ID = mmgd.MSG_GROUP_ID
LEFT JOIN
( SELECT CODE_NM ,
CODE ,
CODE_DC
FROM LETTCCMMNDETAILCODE
WHERE USE_AT = 'Y'
AND CODE_ID = 'ITN022'
)
D
ON mmgd.MSG_TYPE = D.CODE
/** 메세지타입 */
WHERE DATE_FORMAT(msm.FRST_REGIST_PNTTM, '%Y-%m-%d') BETWEEN #ntceBgnde# AND #ntceEndde#
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="" >
AND (
mmgd.USER_ID LIKE CONCAT ('%', #searchKeyword#,'%')
OR mmgd.CALL_FROM 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 mmgd.CALL_FROM LIKE CONCAT('%', #searchKeyword#, '%')
</isEqual>
<isEqual property="searchCondition" compareValue="3">
AND mmgd.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchCondition3">
<isEqual property="searchCondition3" compareValue="1">
AND mmgd.MSG_TYPE = '4'
</isEqual>
<isEqual property="searchCondition3" compareValue="2">
AND mmgd.MSG_TYPE = '6' AND mmgd.FILE_CNT = 0
</isEqual>
<isEqual property="searchCondition3" compareValue="3">
<![CDATA[
AND mmgd.MSG_TYPE = '6' AND mmgd.FILE_CNT <> 0
]]>
</isEqual>
<isEqual property="searchCondition3" compareValue="8">
AND mmgd.MSG_TYPE = '8'
</isEqual>
<isEqual property="searchCondition3" compareValue="9">
AND mmgd.MSG_TYPE = '9'
</isEqual>
</isNotEmpty>
<isNotEmpty property="cancelResultYn">
<isEqual property="cancelResultYn" compareValue="Y">
AND msm.CANCEL_RESULT_YN = 'Y'
</isEqual>
<isEqual property="cancelResultYn" compareValue="N">
AND msm.CANCEL_RESULT_YN = 'N'
</isEqual>
</isNotEmpty>
<isNotEmpty property="sendKind">
<isEqual property="sendKind" compareValue="H">
AND mmgd.SEND_KIND = 'H'
</isEqual>
<isEqual property="sendKind" compareValue="A">
AND mmgd.SEND_KIND = 'A'
</isEqual>
</isNotEmpty>
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
) M
</select>
<update id="mjonMsgDAO.updateHoliMsgResultYn" parameterClass="mjonMsgVO">
UPDATE MJ_SPAMPASS_MSG
SET CANCEL_RESULT_YN = 'Y'
, LAST_UPDUSR_ID = #lastUpdusrId#
, LAST_UPDT_PNTTM = NOW()
WHERE USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
</update>
</sqlMap>

View File

@ -956,6 +956,7 @@
IFNULL(EMAIL_NOTI, 'N') AS emailNoti,
IFNULL(SLACK_NOTI, 'N') AS slackNoti,
IFNULL(SMISHING_NOTI, 'N') AS smishingNoti,
IFNULL(HOLI_SMISHING_NOTI, 'N') AS holiSmishingNoti,
LAST_UPDUSR_ID AS lasUpdusrId,
LAST_UPDT_PNTTM AS lastUpdtPnttm
FROM MJ_MBER_SETTING
@ -972,6 +973,7 @@
,EMAIL_NOTI = #emailNoti#
,SLACK_NOTI = #slackNoti#
,SMISHING_NOTI = #smishingNoti#
,HOLI_SMISHING_NOTI = #holiSmishingNoti#
,LAST_UPDUSR_ID = #lasUpdusrId#
,LAST_UPDT_PNTTM = NOW()

View File

@ -232,7 +232,7 @@ function setClear() {
<tr>
<th><span class="reqArea">발신번호</span></th>
<td>
<input type="text" name="callFrom" id="callFrom" value="01084329333" maxlength="11" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/>
<input type="text" name="callFrom" id="callFrom" value="15518011" maxlength="11" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/>
</td>
</tr>
<tr>

View File

@ -13,7 +13,7 @@
<center>
접속 차단된 IP(${ipAddress})입니다.<br />
관리자에게 문의하세요.<br />
010-8432-9333
1551-8011
</center>
</body>

View File

@ -6,6 +6,12 @@
<%@ page import="itn.com.cmm.LoginVO" %>
<div class="rev_pop_in rev_pop_in_block">
<div class="rev_pop_txt">
<div>
<p class="rev_cont">
<textarea name="smiMemoEdit" id="smiMemoEdit"><c:out value="${resultSpamMberInfo.smiMemo}"/></textarea>
</p>
</div>
<%-- 이용정지 사유 표시 변경으로 문자내용은 표시 안하고 사유로만 표시하기로 변경 됨 - 20240821 우영두 변경
<c:choose>
<c:when test="${resultMsgDetail.msgGroupId != null}">
<c:if test="${resultMsgDetail.fileCnt != '0'}">
@ -74,7 +80,7 @@
</p>
</div>
</c:otherwise>
</c:choose>
</c:choose> --%>
<div style="width:100%; height: 10px;"></div>

View File

@ -153,6 +153,7 @@ function fn_updateMberSttus(msgGroupId){
var data = new FormData(form);
url = "/uss/umt/user/updateMberSttusBlockAjax.do";
data.append("msgGroupId", msgGroupId);
data.append("smiMemo", "시스템 스팸 필터링에 의한 이용정지");
$.ajax({
type: "POST",

View File

@ -2949,6 +2949,31 @@ function kakaoATDelayCancel(msgGroupId){
});
}
}
function fnInputSpamBlockMemo(){
var memo = $("#inputSpamBlockMemo option:selected").text();
var memoVal = $("#inputSpamBlockMemo option:selected").val();
if(memoVal != "6"){
$("#smiMemoEdit").text(memo);
}else{
$("#smiMemoEdit").text("");
}
}
function fnInputSmiBlockMemo(){
var memo = $("#inputSmiBlockMemo option:selected").text();
var memoVal = $("#inputSmiBlockMemo option:selected").val();
if(memoVal != "6"){
$("#smiContents").text(memo);
}else{
$("#smiContents").text("");
}
}
</script>
<style>
.fileView {border-bottom: inherit !important;}
@ -5752,7 +5777,7 @@ function kakaoATDelayCancel(msgGroupId){
<tbody>
<tr>
<th>발신번호</th>
<td><input type="text" name="callFrom" id="callFrom" value="01084329333" maxlength="11" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/></td>
<td><input type="text" name="callFrom" id="callFrom" value="15518011" maxlength="11" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/></td>
</tr>
<tr>
<th>수신번호</th>
@ -5931,6 +5956,15 @@ function kakaoATDelayCancel(msgGroupId){
<tr>
<th>이용정지 사유</th>
<td>
<select id="inputSmiBlockMemo" onchange="fnInputSmiBlockMemo();">
<option value="0">이용정지 사유를 선택해 주세요.</option>
<option value="1">시스템 스팸 필터링에 의한 이용정지</option>
<option value="2">한국인터넷진흥원 스팸신고로 인한 이용정지</option>
<option value="3">이동통신사 스팸신고로 인한 이용정지</option>
<option value="4">비즈메시지 운영정책위반으로 인한 이용정지</option>
<option value="5">알림 비활성화 시간대 발송(예약) 문자내역 중 스미싱 의심으로 판단하여 이용자 정지 처리</option>
<option value="6">-(자율수정)</option>
</select>
<textarea name="smiContents" id="smiContents"></textarea>
</td>
</tr>
@ -5952,6 +5986,19 @@ function kakaoATDelayCancel(msgGroupId){
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<td>
<select id="inputSpamBlockMemo" onchange="fnInputSpamBlockMemo();">
<option value="0">이용정지 사유를 선택해 주세요.</option>
<option value="1">시스템 스팸 필터링에 의한 이용정지</option>
<option value="2">한국인터넷진흥원 스팸신고로 인한 이용정지</option>
<option value="3">이동통신사 스팸신고로 인한 이용정지</option>
<option value="4">비즈메시지 운영정책위반으로 인한 이용정지</option>
<option value="5">알림 비활성화 시간대 발송(예약) 문자내역 중 스미싱 의심으로 판단하여 이용자 정지 처리</option>
<option value="6">-(자율수정)</option>
</select>
</td>
</tr>
<tr>
<td class="rev_pop_in_block">
<div class="spamBlockMemoPopLoad"></div>

View File

@ -0,0 +1,400 @@
<%--
Class Name : MsgHolidayList.jsp
Description : 공휴일 관리 리스트
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024.07.29 우영두 최초 생성
author : 공통서비스 개발팀 장동한
since : 2009.09.16
Copyright (C) 2009 by MOPAS All right reserved.
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<% pageContext.setAttribute("newLineChar", "\r\n"); %>
<% pageContext.setAttribute("newLineChar2", "\n"); %>
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>공휴일 관리 조회</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var toDay = getToday();
//if (toDay == $('#ntceBgndeYYYMMDD').val() && toDay == $('#ntceEnddeYYYMMDD').val()) {
if ($('#ntceBgndeYYYMMDD').val() != "" && $('#ntceEnddeYYYMMDD').val() != "") {
// 오늘 검색
$("#todayYn").val("Y");
}
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ; //검색날짜 세팅
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
listForm.action = "<c:url value='/let/mjo/holiday/selectHolidayList.do'/>";
listForm.submit();
}
function getToday() {
// new Date를 통해서 날짜 객체를 생성. 여기서 년, 월, 일 정보만 필요.
const nowDate = new Date();
var year = nowDate.getFullYear(); // 년
var month = ('0' + (nowDate.getMonth() + 1)).slice(-2); // 월
var day = ('0' + nowDate.getDate()).slice(-2); // 일
// yyyy-mm-dd 형식으로 todate에 담기.
var todate = year + '-' + month + '-' + day;
return todate;
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
}
//기간선택 select
function fnSetCalMonth(val) {
var form = document.listForm;
var today = new Date();
var year = today.getFullYear();
var month = ("0"+(today.getMonth()+1)).slice(-2);
var date = ("0"+today.getDate()).slice(-2);
var sDate = new Date(today.setMonth(today.getMonth() - val));
var sYear = sDate.getFullYear();
var sMonth = ("0"+(sDate.getMonth()+1)).slice(-2);
var sDate = ("0"+sDate.getDate()).slice(-2);
form.ntceBgndeYYYMMDD.value = sYear + "-" + sMonth + "-" + sDate;
form.ntceEnddeYYYMMDD.value = year + "-" + month + "-" + date;
}
function fnCheckAll(){
var checkField = document.listForm.checkField;
if(document.listForm.checkAll.checked) {
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
checkField[i].checked = true;
}
} else {
checkField.checked = true;
}
}
} else {
if(checkField) {
if(checkField.length > 1) {
for(var j=0; j < checkField.length; j++) {
checkField[j].checked = false;
}
} else {
checkField.checked = false;
}
}
}
}
function fnMsgHolidayDel(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
if(checkedIds.length > 0) {
var msg = "공휴일 정보를 삭제하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/let/mjo/holiday/deleteHolidayList.do'/>";
document.listForm.submit();
}
}
}
function getMsgHolidayApi(){
var searchHoliYear = $("#searchHoliYear option:selected").val();
var form = document.listForm;
form.action="/let/mjo/holiday/getHolidayApiDataAjax.do";
form.submit();
}
function fnRegistHoliday() {
document.listForm.holidayId.value = "0";
window.open("about:blank", 'popupRegistHoliday', 'width=900, height=600, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.listForm.action = "<c:url value='/uss/umt/holiday/selectHolidayModifyPopupAjax.do'/>";
document.listForm.target = "popupRegistHoliday";
document.listForm.submit();
}
function fnHolidayDetail(holidayId) {
var form = document.listForm;
form.holidayId.value = holidayId;
window.open("about:blank", 'popupHolidayDetail', 'width=900, height=600, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
form.action = "<c:url value='/uss/umt/holiday/selectHolidayDetailPopupAjax.do'/>";
form.target = "popupHolidayDetail";
form.submit();
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-15px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
</head>
<body>
<form name="listForm" action="<c:url value='/let/mjo/holiday/selectHolidayList.do'/>" method="post">
<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
<input type="hidden" name="delFlag" value="Y" />
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<input type="hidden" name="ntceBgnde" id="ntceBgnde" value="">
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<input name="checkedIdForDel" type="hidden" />
<input type="hidden" name="todayYn" id="todayYn" value="N"/>
<input type="hidden" id="holidayId" name="holidayId" value="0"/>
<div class="contWrap">
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">공휴일 관리</h2>
<p class="tType6 c_999999">공휴일 등록 관리</p>
</div>
<div class="pageCont">
<div class="listSerch">
<div class="calendar_wrap">
<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
<option value="0">전체</option>
<option value="1">1개월</option>
<option value="3">3개월</option>
<option value="6">6개월</option>
</select>
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceBgnde}" />" >
<input type="button" class="calBtn">
</a>
<span class="line">~</span>
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceEndde}" />"
>
<input type="button" class="calBtn">
</a>
<a href="#" style="margin-left: 17px;" onclick="init_date(); return false;">
<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
</a>
</div>
<br /><br />
<select name="searchCondition" class="select" title="검색조건 선택">
<option value="" <c:if test="${searchVO.searchCondition == ''}">selected="selected"</c:if>>전체</option>
<option value="1" <c:if test="${searchVO.searchCondition == '1'}">selected="selected"</c:if>>공휴일명</option>
</select>
<select name="holidayType" id="holidayType" title="공휴일 종류" onchange="fn_search();">
<option value="" <c:if test="${empty searchVO.holidayType }">selected="selected"</c:if> >공휴일 종류</option>
<option value="1" <c:if test="${searchVO.holidayType == '1'}">selected="selected"</c:if>>공휴일</option>
<option value="2" <c:if test="${searchVO.holidayType == '2'}">selected="selected"</c:if>>임시공휴일</option>
<option value="3" <c:if test="${searchVO.holidayType == '3'}">selected="selected"</c:if>>기타</option>
</select>
<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${searchVO.searchKeyword}'/>" size="15" title="검색" maxlength="100" />
<input type="button" class="btnType1" value="검색" onclick="fn_search(); return false;">
</div>
<div class="listTop">
<p class="tType5">
총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건
<c:if test="${todayYn eq 'Y' }">
(예약발송 : <fmt:formatNumber value="${msgGroupCntSum}" pattern="#,###" />건)
</c:if>
</p>
<div class="rightWrap">
<select name="searchHoliYear" id="searchHoliYear" class="select" title="공휴일 연도">
<option value='2024' >2024 년</option>
<option value='2025' >2025 년</option>
<option value='2026' >2026 년</option>
</select>
<input type="button" style="cursor: pointer;" onclick="getMsgHolidayApi();" value="공휴일 불러오기">
<!-- <input type="button" class="printBtn"> -->
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);">
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
</select>
</div>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 5%">
<col style="width: 5%">
<col style="width: auto;">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="fnCheckAll();" /><label for="checkAll"></label></th>
<th>번호<input type="button" class="sort sortBtn" id="sort_holidayId"></th>
<th>공휴일명<input type="button" class="sort sortBtn" id="sort_holidayNm"></th>
<th>휴일일자<input type="button" class="sort sortBtn" id="sort_holidayDate"></th>
<th>휴일종류<input type="button" class="sort sortBtn" id="sort_holidayType"></th>
<th>등록일자<input type="button" class="sort sortBtn" id="sort_frstRegistPnttm"></th>
<th>등록자<input type="button" class="sort sortBtn" id="sort_frstRegisterId"></th>
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr>
<td>
<input name="checkField" id="<c:out value="${result.holidayId}}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox"/><label for="<c:out value="${result.holidayId}"/>"></label>
<input name="checkId" type="hidden" class="${result.holidayId}" value="<c:out value='${result.holidayId}'/>"/>
</td>
<td>
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
<c:if test="${searchVO.searchSortOrd eq 'asc' }">
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td>
<a href="#" onclick="javascript:fnHolidayDetail('<c:out value="${result.holidayId}"/>'); return false;">
<c:out value="${result.holidayNm}"/>
</a>
</td>
<td>
<c:out value="${result.holidayDate}"/>
</td>
<td>
<c:choose>
<c:when test="${result.holidayType eq '1'}">
법정 공휴일
</c:when>
<c:when test="${result.holidayType eq '2'}">
임시 공휴일
</c:when>
<c:otherwise>
기타
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${result.frstRegistPnttm}"/>
</td>
<td>
<c:out value="${result.frstRegisterId}"/>
</td>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btnWrap" style="margin-bottom: 15px;">
<input type="button" class="btnType2" onclick="fnMsgHolidayDel(); return false;" value="삭제">
<input type="button" class="btnType1" onclick="fnRegistHoliday(); return false;" value="등록">
</div>
<!-- 페이지 네비게이션 시작 -->
<c:if test="${!empty resultList}">
<div class="page">
<ul class="inline">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</ul>
</div>
</c:if>
<!-- //페이지 네비게이션 끝 -->
</div>
</div>
</form>
</body>
</html>

View File

@ -0,0 +1,675 @@
<%--
Class Name : MsgHolidayAlarmSettingListPop.jsp
Description : 야간 스미싱알림 일정 등록관리 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024.07.31 우영두 최초 생성
author : 우영두
since : 2022.07.01
Copyright (C) 2009 by MOPAS All right reserved.
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<% pageContext.setAttribute("newLineChar", "\r\n"); %>
<% pageContext.setAttribute("newLineChar2", "\n"); %>
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>스미싱의심 알림 설정 관리</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="/pb/css/reset.css">
<link rel="stylesheet" href="/pb/css/common.css">
<link rel="stylesheet" href="/pb/css/content.css">
<link rel="stylesheet" href="/pb/css/popup.css">
<style>
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-5px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
<script type="text/javascript" src="/pb/js/jquery-3.5.0.js"></script>
<script type="text/javascript" src="/pb/js/common.js"></script>
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/ncms_common.js' />"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserMsgDataListAjax.do'/>";
listForm.submit();
}
function fnCheckAll(){
var checkField = document.listForm.checkField;
if(document.listForm.checkAll.checked) {
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
checkField[i].checked = true;
}
} else {
checkField.checked = true;
}
}
} else {
if(checkField) {
if(checkField.length > 1) {
for(var j=0; j < checkField.length; j++) {
checkField[j].checked = false;
}
} else {
checkField.checked = false;
}
}
}
}
/* 체크된 메인배너 목록 삭제 */
function fn_delete(){
if($("input[name=del]:checked").length == 0){
alert("선택된 항목이 없습니다.");
return;
}
if (confirm("해당 문자를 삭제하시겠습니까?")){
frm = document.listForm;
frm.action = "<c:url value='/uss/ion/msg/SendMsgDelete.do' />";
frm.submit();
}
}
/* 수정 화면*/
function fn_modify(msgId){
var frm = document.modiForm ;
frm.msgId.value = msgId ;
frm.submit();
}
/* 수정 화면*/
function fn_detail_list(msgGroupId){
var frm = document.modiForm ;
frm.msgGroupId.value = msgGroupId ;
frm.submit();
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
$('#searchKeyword').val('');
$('#sendKind').val('').prop("selected",true);
$('#searchCondition').val('').prop("selected",true);
}
//엑셀 다운로드
function sendMsgExcelDownload(){
var frm = document.listForm;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
var ntceBgnde = $('#ntceBgndeYYYMMDD').val();
var ntceEndde = $('#ntceEnddeYYYMMDD').val();
frm.ntceBgnde.value = ntceBgnde;
frm.ntceEndde.value = ntceEndde;
frm.method = "post";
frm.action = "<c:url value='/uss/ion/msg/selectMberSendMsgExcelDownload.do'/>";
frm.submit();
}
function fn_updateMberSttus(msgGroupId){
var form = document.listForm;
if(confirm("이용자 정지를 진행하시겠습니까?")){
var data = new FormData(form);
url = "/uss/umt/user/updateMberSttusBlockAjax.do";
data.append("msgGroupId", msgGroupId);
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
if("fail"==returnData.result){
alert(returnData.message);
return false;
}else if("loginFail"==returnData.result){
alert(returnData.message);
return false;
}else{ //문자발송 성공시 처리
alert(returnData.message);
opener.parent.location.reload();
location.reload();
}
} else if(status== 'fail'){
alert("이용자 상태 변경에 실패하였습니다.");
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("이용자 상태 변경에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function msgDetailView(obj, msgGroupId, index){
var form = document.modiForm;
form.msgGroupId.value = msgGroupId;
var sendData = $(form).serializeArray();
$(".msgSentDetailPopLoad"+index).load("/uss/umt/user/selectMberMsgDetailAjax.do", sendData ,function(response, status, xhr){
var target=$(obj);
$('.layer_msg_detail').hide();
target.next('.layer_msg_wrap').find('.layer_msg_detail').show();
});
}
function fnAlimSetReg(){
var form = document.listForm;
var startHour = form.startHour.value;
var startMin = form.startMin.value;
var endHour = form.endHour.value;
var endMin = form.endMin.value;
var alarmType = form.alarmType.value;
var alarmStart = startHour + ":" + startMin;
var alarmEnd = endHour + ":" + endMin;
if(confirm("알람설정을 등록하시겠습니까?")){
url = "/let/mjo/holiday/alarmSet/insertAlarmSettingDataAjax.do";
var jsonParam = {"alarmStart" : alarmStart, "alarmEnd" : alarmEnd, "alarmType" : alarmType};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
location.reload();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnUpdateAlarmUse(alarmId, useYn){
var msg = "";
if(useYn == "Y"){
msg = "사용으로 변경하시겠습니까?";
}else{
msg = "미사용으로 변경하시겠습니까?";
}
if(confirm(msg)){
url = "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do";
var jsonParam = {"alarmId" : alarmId, "useYn" : useYn};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
location.reload();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnGoHoliday(){
opener.location.href="<c:out value='/let/mjo/holiday/selectHolidayList.do'/>";
self.close();
}
function fnMsgAlimDel(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
console.log("+++ checkedIds ::: "+checkedIds);
if(checkedIds.length > 0) {
var msg = "스미싱 알림 일정을 삭제하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value = checkedIds;
/* document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/let/mjo/holiday/alarmSet/deleteAlarmSettingDataAjax.do'/>";
document.listForm.submit(); */
var data = new FormData(document.listForm);
url = "/let/mjo/holiday/alarmSet/deleteAlarmSettingDataAjax.do";
console.log(document.listForm.checkedIdForDel.value)
var jsonParam = {"alarmIds" : document.listForm.checkedIdForDel.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
location.reload();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("알림 일정 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
}
function fnClose(){
window.close();
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
.tableWrapTotal {margin:0 0 20px;}
.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
.listSerch .select {height:42px;vertical-align:top;}
.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
/* .layer_msg_wrap {position:relative;} */
.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:absolute;left:50%;top:600px;width:400px;max-height:600px;background:#eee;transform:translateX(-50%);z-index:1;}
.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
@media screen and (max-width:916px){
.pageCont .tableWrap table thead tr th {padding:15px 0;}
}
</style>
</head>
<body>
<div class="loading_layer">
<div class="loading_container">
<div class="bar"></div>
<div class="text">Loading</div>
</div>
</div>
<form id="listForm" name="listForm" method="post">
<input name="pageIndex" type="hidden" value="<c:out value='${msgAlarmSetVO.pageIndex}'/>"/>
<input name="checkedIdForDel" type="hidden" />
<div class="contWrap" style="position:relative;left:inherit;top:inherit;min-height:auto;padding:40px;">
<div class="pageTitle">
<!-- <div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div> -->
<h2 class="titType1 c_222222 fwBold">스미싱의심 알림 예외 일정 관리</h2>
<!-- <p class="tType6 c_999999">문자전송리스트 현황을 파악할 수 있습니다.</p> -->
</div>
<div class="pageCont">
<div class="listSerch">
<select id="startHour" name="startHour" class="select" title="시작시간">
<c:forEach var="hour" begin="0" end="23" step="1" varStatus="status">
<c:choose>
<c:when test="${hour < 10}">
<option value="0${hour}">0${hour}시</option>
</c:when>
<c:otherwise>
<option value="${hour}">${hour}시</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
<select id="startMin" name="startMin" class="select" title="시작시간분">
<c:forEach var="min" begin="0" end="59" step="1">
<c:choose>
<c:when test="${min < 10}">
<option value="0${min}">0${min}분</option>
</c:when>
<c:otherwise>
<option value="${min}">${min}분</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
부터
<select id="endHour" name="endHour" class="select" title="종료시간">
<c:forEach var="hour" begin="0" end="23" step="1" varStatus="status">
<c:choose>
<c:when test="${hour < 10}">
<option value="0${hour}">0${hour}시</option>
</c:when>
<c:otherwise>
<option value="${hour}">${hour}시</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
<select id="endMin" name="endMin" class="select" title="종료시간분">
<c:forEach var="min" begin="0" end="59" step="1">
<c:choose>
<c:when test="${min < 10}">
<option value="0${min}">0${min}분</option>
</c:when>
<c:otherwise>
<option value="${min}">${min}분</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
까지
<select id="alarmType" name="alarmType" class="select" title="알람종류">
<option value="W">평일 (월~금)</option>
<option value="E">주말 (토/일)</option>
<option value="H">공휴일</option>
</select>
<input type="button" class="btnType1" onclick="javascript:fnAlimSetReg();" value="+ 추가" style="margin-left:20px;">
</div>
<div class="listTop">
<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
<div class="rightWrap">
<input type="button" class="btnType2" onclick="javascript:fnGoHoliday();" value="공휴일 관리">
</div>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 15%">
<col style="width: 15%">
<col style="width: 15%">
<col style="width: 15%">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="fnCheckAll();" /><label for="checkAll"></label></th>
<th>번호</th>
<th>구분</th>
<th>시작시간</th>
<th>종료시간</th>
<th colspan="2">사용여부</th>
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr>
<td>
<input name="checkField" id="<c:out value="${result.alarmId}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox"/><label for="<c:out value="${result.alarmId}"/>"></label>
<input name="checkId" type="hidden" class="${result.alarmId}" value="<c:out value='${result.alarmId}'/>"/>
</td>
<td>
<c:if test="${msgAlarmSetVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
<c:if test="${msgAlarmSetVO.searchSortOrd eq 'asc' }">
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td>
<c:choose>
<c:when test="${result.alarmType eq 'W'}">
평일
</c:when>
<c:when test="${result.alarmType eq 'E'}">
주말
</c:when>
<c:otherwise>
공휴일
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${result.alarmStart}"/>
</td>
<td>
<c:out value="${result.alarmEnd}"/>
</td>
<td>
<c:choose>
<c:when test="${result.useYn eq 'Y'}">
사용 중
</c:when>
<c:otherwise>
<!-- 사용으로 변경 -->
<input type="button" class="btnType1" onclick="javascript:fnUpdateAlarmUse('<c:out value="${result.alarmId}"/>','Y');" value="사용" style="width:55px;"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${result.useYn eq 'Y'}">
<!-- 미사용으로 변경 -->
<input type="button" class="btnType1" onclick="javascript:fnUpdateAlarmUse('<c:out value="${result.alarmId}"/>','N');" value="미사용"/>
</c:when>
<c:otherwise>
미사용
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btnWrap">
<input type="button" class="btnType2" onclick="fnMsgAlimDel(); return false;" value="삭제">
<input type="button" class="btnType1" onclick="fnClose(); return false;" value="닫기">
</div>
<!-- 페이지 네비게이션 시작 -->
<c:if test="${!empty resultList}">
<div class="page">
<ul class="inline">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</ul>
</div>
</c:if>
<!-- //페이지 네비게이션 끝 -->
</div>
</div>
</form>
</body>
</html>

View File

@ -0,0 +1,443 @@
<%--
Class Name : MsgHolidayModifyPopup.jsp
Description : 공휴일 등록 팝업
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024.07.29 우영두 최초 생성
author : 우영두
since : 2022.07.01
Copyright (C) 2009 by MOPAS All right reserved.
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<% pageContext.setAttribute("newLineChar", "\r\n"); %>
<% pageContext.setAttribute("newLineChar2", "\n"); %>
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
%>
<!DOCTYPE html>
<html lang="kr">
<head>
<title>공휴일 등록</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="stylesheet" href="/pb/css/reset.css">
<link rel="stylesheet" href="/pb/css/common.css">
<link rel="stylesheet" href="/pb/css/content.css">
<link rel="stylesheet" href="/pb/css/popup.css">
<style>
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-5px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
<script type="text/javascript" src="/pb/js/jquery-3.5.0.js"></script>
<script type="text/javascript" src="/pb/js/common.js"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
if( $('#ntceBgndeYYYMMDD').val() != '' && $('#ntceEnddeYYYMMDD').val() != '' ){
var iChkBeginDe = Number($('#ntceBgndeYYYMMDD').val().replaceAll("-", ""));
var iChkEndDe = Number($('#ntceEnddeYYYMMDD').val().replaceAll("-", ""));
if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
alert("검색시작일자는 종료일자 보다 클수 없습니다.");
return;
}
}
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
listForm.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserMsgDataListAjax.do'/>";
listForm.submit();
}
function fnCheckAll() {
if( $("#checkAll").is(':checked') ){
$("input[name=del]").prop("checked", true);
}else{
$("input[name=del]").prop("checked", false);
}
}
/* 체크된 메인배너 목록 삭제 */
function fn_delete(){
if($("input[name=del]:checked").length == 0){
alert("선택된 항목이 없습니다.");
return;
}
if (confirm("해당 문자를 삭제하시겠습니까?")){
frm = document.listForm;
frm.action = "<c:url value='/uss/ion/msg/SendMsgDelete.do' />";
frm.submit();
}
}
/* 수정 화면*/
function fn_modify(msgId){
var frm = document.modiForm ;
frm.msgId.value = msgId ;
frm.submit();
}
/* 수정 화면*/
function fn_detail_list(msgGroupId){
var frm = document.modiForm ;
frm.msgGroupId.value = msgGroupId ;
frm.submit();
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
$('#searchKeyword').val('');
$('#sendKind').val('').prop("selected",true);
$('#searchCondition').val('').prop("selected",true);
}
//엑셀 다운로드
function sendMsgExcelDownload(){
var frm = document.listForm;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
var ntceBgnde = $('#ntceBgndeYYYMMDD').val();
var ntceEndde = $('#ntceEnddeYYYMMDD').val();
frm.ntceBgnde.value = ntceBgnde;
frm.ntceEndde.value = ntceEndde;
frm.method = "post";
frm.action = "<c:url value='/uss/ion/msg/selectMberSendMsgExcelDownload.do'/>";
frm.submit();
}
function fnHolidayReg(){
var form = document.modiForm;
if(form.holidayNm.value == ""){
alert("휴일명을 입력해 주세요.");
return false;
}
if(form.ntceBgndeYYYMMDD.value == ""){
alert("휴일 일자를 선택해 주세요.");
return false;
}
if(form.holidayType.value == ""){
alert("휴일 구분을 입력해 주세요.");
return false;
}
if(confirm("공휴일을 등록하시겠습니까?")){
var holidayDate = form.ntceBgndeYYYMMDD.value;
url = "/let/mjo/holiday/insertHolidayRegistAjax.do";
var jsonParam = {"holidayNm" : form.holidayNm.value, "holidayDate" : holidayDate, "holidayType" : form.holidayType.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
opener.location.reload();
window.close();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 정보 등록에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnHolidayUpdt(){
var form = document.modiForm;
if(form.holidayNm.value == ""){
alert("휴일명을 입력해 주세요.");
return false;
}
if(confirm("공휴일 정보를 수정하시겠습니까?")){
var holidayDate = form.ntceBgndeYYYMMDD.value;
url = "/let/mjo/holiday/updateHolidayDataAjax.do";
var jsonParam = {"holidayId" : form.holidayId.value,"holidayNm" : form.holidayNm.value, "holidayDate" : holidayDate, "holidayType" : form.holidayType.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
opener.location.reload();
window.close();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 정보 변경에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnHolidayDel(){
var form = document.modiForm;
if(confirm("공휴일 정보를 삭제하시겠습니까?")){
url = "/let/mjo/holiday/deleteHolidayDataAjax.do";
var jsonParam = {"holidayId" : form.holidayId.value};
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(jsonParam),
dataType:'json',
contentType: 'application/json',
async: true,
success: function (data) {
if(data.status == "OK"){
alert(data.message);
opener.location.reload();
window.close();
}else if(data.status == "UNAUTHORIZED"){
alert(data.message);
window.location.href="/uat/uia/EgovLoginUsr.do";
}else{
alert(data.message);
return false;
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) { alert("공휴일 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function fnClose(){
window.close();
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont {width:100%;padding:50px 30px;box-sizing:border-box;}
.tableWrapTotal {margin:0 0 20px;}
.tableWrapTotal .tbType1 thead tr:first-child {border-width:1px;}
.tableWrapTotal .tbType1 thead tr th {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 thead tr th:first-child {border-left:0 none;}
.tableWrapTotal .tbType1 thead tr.content th {font-size:14px;}
.tableWrapTotal .tbType1 tbody tr td {border-left:1px solid #e6e6e6;}
.tableWrapTotal .tbType1 tbody tr td:first-child {border-left:0 none;}
.listSerch .select {height:42px;vertical-align:top;}
.pageCont .tbType1 tbody tr td.msg_detail {overflow:inherit;}
.pageCont .tbType1 tbody tr td.msg_detail a {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
/* .layer_msg_wrap {position:relative;} */
.layer_msg_wrap .layer_msg_detail {overflow:hidden;display:none;position:absolute;left:50%;top:600px;width:400px;max-height:600px;background:#eee;transform:translateX(-50%);z-index:1;}
.layer_msg_wrap .layer_msg_detail button {position:absolute;right:0;top:0;width:35px;height:35px;}
.layer_msg_wrap .layer_msg_detail button:before {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(-45deg);}
.layer_msg_wrap .layer_msg_detail button:after {content:'';position:absolute;left:50%;top:50%;width:1px;height:14px;margin:-7px 0 0;background:#fff;transform:rotate(45deg);}
.layer_msg_wrap .layer_msg_detail .title {height:35px;padding:0 15px;font-size:16px;line-height:35px;text-align:left;color:#fff;background:#456ded;border-radius:5px 5px 0 0;}
.layer_msg_wrap .layer_msg_detail .content {overflow-y:auto;max-height:535px;margin:15px;padding:10px 15px;line-height:20px;white-space:normal;background:#fff;}
.layer_msg_wrap .layer_msg_detail .content .rev_cont {text-align:left;}
@media screen and (max-width:916px){
.pageCont .tableWrap table thead tr th {padding:15px 0;}
}
</style>
</head>
<body>
<div class="loading_layer">
<div class="loading_container">
<div class="bar"></div>
<div class="text">Loading</div>
</div>
</div>
<form id="modiForm" name="modiForm" method="post">
<input type="hidden" id="holidayId" name="holidayId" value="<c:out value='${result.holidayId}'/>"/>
<input type="hidden" name="ntceBgnde" id="ntceBgnde" value="">
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<div class="contWrap" style="position:relative;left:inherit;top:inherit;min-height:auto;padding:40px; width:900px; ">
<div class="pageTitle">
<!-- <div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div> -->
<h2 class="titType1 c_222222 fwBold">공휴일 등록</h2>
<!-- <p class="tType6 c_999999">문자전송리스트 현황을 파악할 수 있습니다.</p> -->
</div>
<div class="pageCont" style="min-height: 300px;">
<table class="tbType2">
<colgroup>
<col style="width: 20%">
<col style="width: 80%">
</colgroup>
<tbody>
<tr>
<th><span class="reqArea">휴일명</span></th>
<td colspan="3">
<input type="text" id="holidayNm" name="holidayNm" title="아이디" maxlength="30" value="<c:out value='${result.holidayNm}'/>"/>
</td>
</tr>
<tr>
<th><span class="reqArea">휴일 일자</span></th>
<td colspan="3">
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.modiForm, document.forms.modiForm.ntceBgndeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value='${result.holidayDate}'/>" >
<input type="button" class="calBtn">
</a>
</td>
</tr>
<tr>
<th><span class="reqArea">휴일 구분</span></th>
<td colspan="3">
<select id="holidayType" name="holidayType" style="min-width: 150px;">
<option value="1" <c:if test="${result.holidayType eq '1'}">selected</c:if> >법정 공휴일</option>
<option value="2" <c:if test="${result.holidayType eq '2'}">selected</c:if>>임시 공휴일</option>
<option value="3" <c:if test="${result.holidayType eq '3'}">selected</c:if>>기타</option>
</select>
</td>
</tr>
</tbody>
</table>
<div class="btnWrap" style="margin-bottom: 15px;">
<input type="button" class="btnType1" onclick="fnClose(); return false;" value="닫기">
<c:choose>
<c:when test="${result.holidayId > 0}">
<input type="button" class="btnType2" onclick="fnHolidayDel(); return false;" value="삭제">
<input type="button" class="btnType1" onclick="fnHolidayUpdt(); return false;" value="수정">
</c:when>
<c:otherwise>
<input type="button" class="btnType1" onclick="fnHolidayReg(); return false;" value="등록">
</c:otherwise>
</c:choose>
</div>
</div>
</div>
</form>
</body>
</html>

View File

@ -6,9 +6,34 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>관리자 알림 관리</title>
<script type="text/javascript">
<meta charset="UTF-8">
<title>관리자 알림 관리</title>
<script type="text/javascript">
$(document).ready(function(){
var holiSmishingNoti = $('#holiSmishingNoti').val();
if(holiSmishingNoti == "N"){
$('.btnTypeAlim').hide();
}
$('#holiSmishingNoti').change(function(){
if($('#holiSmishingNoti').val() == "N"){
$('.btnTypeAlim').hide();
}else{
$('.btnTypeAlim').show();
}
})
});
function doUpdate() {
var form = document.form;
@ -20,7 +45,20 @@
form.submit();
}
function fnAlimSetPopup(){
window.open("about:blank", 'popupAlimSetting', 'width=1250, height=800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.form.action = "<c:url value='/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do'/>";
document.form.target = "popupAlimSetting";
document.form.submit();
}
</script>
<style>
.pageCont .btnTypeAlim{background-color: #456ded !important;}
.btnTypeAlim{font-size: 1em;height: 40px;vertical-align: middle;color: #fff;background-color: #aaa;border: none;border-radius: 3px;cursor: pointer;padding: 0 10px}
</style>
</head>
<body>
<div class="contWrap">
@ -73,6 +111,17 @@
<option value="N" <c:if test="${joinSettingVO.smishingNoti == 'N'}">selected</c:if> >비활성화</option>
</select>
</td>
</tr>
<tr>
<th>스미싱의심 알림 여부</th>
<td>
<select name="holiSmishingNoti" id="holiSmishingNoti">
<option value="Y" <c:if test="${joinSettingVO.holiSmishingNoti == 'Y'}">selected</c:if> >활성화</option>
<option value="N" <c:if test="${joinSettingVO.holiSmishingNoti == 'N'}">selected</c:if> >비활성화</option>
</select>
<input type="button" class="btnTypeAlim" value="예외 일정관리" onclick="javascript:fnAlimSetPopup(); return false;" style="margin-left:50px;">
</td>
</tr>
</tbody>
</table>

View File

@ -818,14 +818,15 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
<!-- <div style="width: 0px; height: 0px;overflow:hidden;">
<form id="msgForm" name="msgForm" method="post">
<input type="hidden" id="msgType" name="msgType" value="6"/>
<input type="text" name="callFrom" id="callFrom" value="01084329333" />
<input type="text" name="callFrom" id="callFrom" value="15518011" />
<input type="text" name="callTo" id="callTo" />
<input type="radio" name="msgKind" id="msgKind1" value="N" checked />
<textarea name="smsTxt" id="smsTxt">
[문자온] 번호도용 이동통신사 문자차단 서비스 안내
이동통신사 번호도용 문자차단 서비스는 웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스로 해당 서비스에 가입되어 있는 경우 인터넷을 통해 본인 휴대폰 번호로 문자 발송이 자동 차단되게 됩니다.
문자 발송에도 불구하고 발송결과가 계속 '수신거부'로 나오는 경우 고객님의 휴대폰 가입 이동통신사에 문의하시어 '번호도용 문자차단서비스'에 가입되어있는지 확인하시고, 상기 서비스를 해지하신 후 다시 문자 발송해주시길 바랍니다.(서비스 해지 후 정상 발송까지 3~7일 소요될 수 있습니다.)
감사합니다.
[문자온] 문자발송 결과(실패) 안내
고객님은 현재 이동통신사의 "번호도용 문자차단 서비스"에 가입되어 있어 인터넷 문자사이트를 통한 문자발송이 모두 차단되어 있습니다.
문자발송 서비스를 정상적으로 이용하기 위해서는 이용중인 이동통신사에 문의하시어 상기 서비스를 해지하신 후 문자를 재발송해 주시길 바랍니다.
(서비스 해지 후 정상 발송까지 3~7일 소요될 수 있습니다.)
※번호도용 문자차단 서비스 : 웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스
</textarea>
<input type="file" name="atchMsgFile" id="atchMsgFile" />
</form>

View File

@ -683,14 +683,15 @@ function fnSmishingUpdate(flag) {
<div style="width: 0px; height: 0px;overflow:hidden;">
<form id="msgForm" name="msgForm" method="post">
<input type="hidden" id="msgType" name="msgType" value="6"/>
<input type="text" name="callFrom" id="callFrom" value="01084329333" />
<input type="text" name="callFrom" id="callFrom" value="15518011" />
<input type="text" name="callTo" id="callTo" />
<input type="radio" name="msgKind" id="msgKind1" value="N" checked />
<textarea name="smsTxt" id="smsTxt">
[문자온] 번호도용 이동통신사 문자차단 서비스 안내
이동통신사 번호도용 문자차단 서비스는 웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스로 해당 서비스에 가입되어 있는 경우 인터넷을 통해 본인 휴대폰 번호로 문자 발송이 자동 차단되게 됩니다.
문자 발송에도 불구하고 발송결과가 계속 '수신거부'로 나오는 경우 고객님의 휴대폰 가입 이동통신사에 문의하시어 '번호도용 문자차단서비스'에 가입되어있는지 확인하시고, 상기 서비스를 해지하신 후 다시 문자 발송해주시길 바랍니다.(서비스 해지 후 정상 발송까지 3~7일 소요될 수 있습니다.)
감사합니다.
[문자온] 문자발송 결과(실패) 안내
고객님은 현재 이동통신사의 "번호도용 문자차단 서비스"에 가입되어 있어 인터넷 문자사이트를 통한 문자발송이 모두 차단되어 있습니다.
문자발송 서비스를 정상적으로 이용하기 위해서는 이용중인 이동통신사에 문의하시어 상기 서비스를 해지하신 후 문자를 재발송해 주시길 바랍니다.
(서비스 해지 후 정상 발송까지 3~7일 소요될 수 있습니다.)
※번호도용 문자차단 서비스 : 웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스
</textarea>
<input type="file" name="atchMsgFile" id="atchMsgFile" />
</form>

View File

@ -0,0 +1,705 @@
<%--
Class Name : SendHoliMsgList.jsp
Description : 야간 스미싱의심 알림 제한 발송 내역
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2024.07.24 우영두 최초 생성
author : 공통서비스 개발팀 장동한
since : 2009.09.16
Copyright (C) 2009 by MOPAS All right reserved.
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<% pageContext.setAttribute("newLineChar", "\r\n"); %>
<% pageContext.setAttribute("newLineChar2", "\n"); %>
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>알림 미처리 문자예약 조회</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
<script type="text/javaScript" language="javascript">
function fn_search(){
var searchKeyword = $('input[name=searchKeyword]').val();
$('input[name=searchKeyword]').val(searchKeyword.replace(/(\s*)/g, ""));
linkPage(1);
}
function linkPage(pageNo){
var toDay = getToday();
//if (toDay == $('#ntceBgndeYYYMMDD').val() && toDay == $('#ntceEnddeYYYMMDD').val()) {
if ($('#ntceBgndeYYYMMDD').val() != "" && $('#ntceEnddeYYYMMDD').val() != "") {
// 오늘 검색
$("#todayYn").val("Y");
}
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ; //검색날짜 세팅
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
listForm.submit();
}
function setToday(){
var toDay = getToday();
$('#ntceBgndeYYYMMDD').val(toDay);
$('#ntceEnddeYYYMMDD').val(toDay);
$('#ntceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
$('#ntceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
// 오늘 검색
$("#todayYn").val("Y");
linkPage(1);
}
function getToday() {
// new Date를 통해서 날짜 객체를 생성. 여기서 년, 월, 일 정보만 필요.
const nowDate = new Date();
var year = nowDate.getFullYear(); // 년
var month = ('0' + (nowDate.getMonth() + 1)).slice(-2); // 월
var day = ('0' + nowDate.getDate()).slice(-2); // 일
// yyyy-mm-dd 형식으로 todate에 담기.
var todate = year + '-' + month + '-' + day;
return todate;
}
function fnCheckAll() {
if( $("#checkAll").is(':checked') ){
$("input[name=del]").prop("checked", true);
}else{
$("input[name=del]").prop("checked", false);
}
}
/* 체크된 메인배너 목록 삭제 */
function fn_delete(){
if($("input[name=del]:checked").length == 0){
alert("선택된 항목이 없습니다.");
return;
}
if (confirm("해당 문자를 삭제하시겠습니까?")){
frm = document.listForm;
frm.action = "<c:url value='/uss/ion/msg/SendMsgDelete.do' />";
frm.submit();
}
}
/* 수정 화면*/
function fn_modify(msgId){
var frm = document.modiForm ;
frm.msgId.value = msgId ;
frm.submit();
}
/* 수정 화면*/
function fn_detail_list(msgGroupId){
var frm = document.modiForm ;
frm.msgGroupId.value = msgGroupId ;
frm.submit();
}
/* 날자 초기화 */
function init_date(){
$('#ntceBgndeYYYMMDD').val('');
$('#ntceEnddeYYYMMDD').val('');
$('#ntceBgnde').val('');
$('#ntceEndde').val('');
}
//기간선택 select
function fnSetCalMonth(val) {
var form = document.listForm;
var today = new Date();
var year = today.getFullYear();
var month = ("0"+(today.getMonth()+1)).slice(-2);
var date = ("0"+today.getDate()).slice(-2);
var sDate = new Date(today.setMonth(today.getMonth() - val));
var sYear = sDate.getFullYear();
var sMonth = ("0"+(sDate.getMonth()+1)).slice(-2);
var sDate = ("0"+sDate.getDate()).slice(-2);
form.ntceBgndeYYYMMDD.value = sYear + "-" + sMonth + "-" + sDate;
form.ntceEnddeYYYMMDD.value = year + "-" + month + "-" + date;
}
function fnSelectMber(mberId) {
document.modiForm2.mberId.value = mberId;
window.open("about:blank", 'popupSelectMber', 'width=900, height=1800, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no');
document.modiForm2.action = "<c:url value='/uss/umt/user/EgovGnrlselectedUserView.do'/>";
document.modiForm2.target = "popupSelectMber";
document.modiForm2.submit();
}
function fnCheckAll(){
var checkField = document.listForm.checkField;
if(document.listForm.checkAll.checked) {
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
checkField[i].checked = true;
}
} else {
checkField.checked = true;
}
}
} else {
if(checkField) {
if(checkField.length > 1) {
for(var j=0; j < checkField.length; j++) {
checkField[j].checked = false;
}
} else {
checkField.checked = false;
}
}
}
}
// 법인폰 알림 업데이트
function fnSmsNotiUpdate(flag) {
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].className);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.className;
}
}
}
if(checkedIds.length > 0) {
var msg = "";
if(flag == 'on') {
document.listForm.adminSmsNoticeYn.value='Y';
msg = "선택하신 사용자의 법인폰 알림을 On 하시겠습니까?";
} else {
document.listForm.adminSmsNoticeYn.value='N';
msg = "선택하신 사용자의 법인폰 알림을 Off 하시겠습니까?";
}
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/umt/user/EgovUsersSmsNoticeUpdate3.do'/>";
document.listForm.submit();
}
}
}
//스미싱의심 온/오프
function fnSmishingUpdate(flag) {
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].className);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.className;
}
}
}
if(checkedIds.length > 0) {
var msg = "";
if(flag == 'on') {
document.listForm.smishingYn.value='Y';
msg = "선택하신 사용자의 스미싱의심을 On 하시겠습니까?";
} else {
document.listForm.smishingYn.value='N';
msg = "선택하신 사용자의 스미싱의심을 Off 하시겠습니까?";
}
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/umt/user/EgovUsersSmishingUpdate.do'/>";
document.listForm.submit();
}
}
}
function fnUserMsgUpdt(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
if(checkedIds.length > 0) {
var msg = "사용자 이용정지 및 예약문자 취소를 진행하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/ion/msg/updateUserMsgData.do'/>";
document.listForm.submit();
}
}
}
function fnMsgStatusUpdt(){
if($("input:checkbox[name='checkField']").is(":checked")==false){
alert("선택된 항목이 없습니다.");
return;
}
var checkField = document.listForm.checkField;
var id = document.listForm.checkId;
var checkedIds = "";
var checkedCount = 0;
if(checkField) {
if(checkField.length > 1) {
for(var i=0; i < checkField.length; i++) {
if(checkField[i].checked) {
checkedIds += ((checkedCount==0? "" : ",") + id[i].value);
checkedCount++;
}
}
} else {
if(checkField.checked) {
checkedIds = id.value;
}
}
}
if(checkedIds.length > 0) {
var msg = "이용자정지, 예약취소 없이 상태만 변경됩니다. 완료처리를 진행하시겠습니까?";
if(confirm(msg)){
document.listForm.checkedIdForDel.value=checkedIds;
document.listForm.action = "<c:url value='/uss/ion/msg/updateMsgStatusData.do'/>";
document.listForm.submit();
}
}
}
</script>
<style>
.calBtn{
border: none;
background-color: transparent !important;
background-image: url(/pb/img/common/calendarIcon.png);
background-repeat: no-repeat;
width: 25px;
height: 25px !important;
vertical-align: middle;
margin-left: -38px !important;
margin-top: -2px !important;
cursor: pointer;
}
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-15px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
</style>
</head>
<body>
<form name="listForm" action="<c:url value='/uss/ion/msg/selectHoliMsgList.do'/>" method="post">
<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
<input type="hidden" name="delFlag" value="Y" />
<input type="hidden" name="selectedId" />
<input type="hidden" name="pageType" />
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<input type="hidden" name="ntceBgnde" id="ntceBgnde" value="">
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<input type="hidden" name="reserveYn" id="reserveYn" value="Y">
<input type="hidden" name="adminSmsNoticeYn" value=""/>
<input name="checkedIdForDel" type="hidden" />
<input type="hidden" name="todayYn" id="todayYn" value="N"/>
<div class="contWrap">
<div class="pageTitle">
<div class="pageIcon"><img src="/pb/img/pageTitIcon4.png" alt=""></div>
<h2 class="titType1 c_222222 fwBold">알림 미처리 문자 조회</h2>
<p class="tType6 c_999999">스미싱의심 알림 비활성화로 인해 발송된 문자리스트 현황을 파악할 수 있습니다.</p>
</div>
<div class="pageCont">
<div class="listSerch">
<div class="calendar_wrap">
<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
<option value="0">전체</option>
<option value="1">1개월</option>
<option value="3">3개월</option>
<option value="6">6개월</option>
</select>
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceBgnde}" />" >
<input type="button" class="calBtn">
</a>
<span class="line">~</span>
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);">
<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly=""
value="<c:out value="${searchVO.ntceEndde}" />"
>
<input type="button" class="calBtn">
</a>
<a href="#" style="margin-left: 17px;" onclick="init_date(); return false;">
<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
</a>
</div>
<br /><br />
<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>>발신번호</option>
<option value="3" <c:if test="${searchVO.searchCondition == '3'}">selected="selected"</c:if>>전송내용</option>
</select>
<%-- <ec:select codeId="ITN019" name="searchCondition2" id="searchCondition2" css="class='select'" selectedValue="${searchVO.searchCondition2}"
defaultValue="" defaultText="전송사(전체)" /> --%>
<select name="searchCondition3" class="select" title="메세지타입(전체)" onchange="fn_search();">
<option value="" <c:if test="${searchVO.searchCondition3 == ''}">selected="selected"</c:if>>메세지타입(전체)</option>
<option value="1" <c:if test="${searchVO.searchCondition3 == '1'}">selected="selected"</c:if>>단문</option>
<option value="2" <c:if test="${searchVO.searchCondition3 == '2'}">selected="selected"</c:if>>장문</option>
<option value="3" <c:if test="${searchVO.searchCondition3 == '3'}">selected="selected"</c:if>>그림</option>
<option value="8" <c:if test="${searchVO.searchCondition3 == '8'}">selected="selected"</c:if>>알림톡</option>
<option value="9" <c:if test="${searchVO.searchCondition3 == '9'}">selected="selected"</c:if>>친구톡</option>
</select>
<select name="cancelResultYn" id="cancelResultYn" title="처리상태" onchange="fn_search();">
<option value="" <c:if test="${empty searchVO.cancelResultYn }">selected="selected"</c:if> >처리상태</option>
<option value="Y" <c:if test="${searchVO.cancelResultYn == 'Y'}">selected="selected"</c:if>>처리완료</option>
<option value="N" <c:if test="${searchVO.cancelResultYn == 'N'}">selected="selected"</c:if>>미처리</option>
</select>
<select id="sendKind" name="sendKind" onchange="fn_search();">
<option value=""<c:if test="${searchVO.sendKind eq ''}">selected="selected"</c:if>>발송방식 전체</option>
<option value="H"<c:if test="${searchVO.sendKind eq 'H'}">selected="selected"</c:if>>WEB</option>
<option value="A"<c:if test="${searchVO.sendKind eq 'A'}">selected="selected"</c:if>>API</option>
</select>
<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${searchVO.searchKeyword}'/>" size="15" title="검색" maxlength="100" />
<input type="button" class="btnType1" value="검색" onclick="fn_search(); return false;">
</div>
<div class="listTop">
<p class="tType5">
총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건
<c:if test="${todayYn eq 'Y' }">
(예약발송 : <fmt:formatNumber value="${msgGroupCntSum}" pattern="#,###" />건)
</c:if>
</p>
<div class="rightWrap">
<input type="button" style="cursor: pointer;" onclick="setToday();" value="Today">
<!-- <input type="button" class="printBtn"> -->
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);">
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
</select>
</div>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 3%">
<col style="width: 5%">
<col style="width: 15%">
<col style="width: 5%">
<col style="width: 7%">
<col style="width: 8%">
<col style="width: 10%">
<col style="width: 8%">
<col style="width: auto;">
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 10%">
<col style="width: 5%">
<%--
<col style="width: 13%">
--%>
</colgroup>
<thead>
<tr>
<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>회원상태<input type="button" class="sort sortBtn" id="sort_adminSmsNoticeYn"></th>
<th>발신번호<input type="button" class="sort sortBtn" id="sort_callFrom"></th>
<th>발송건수<input type="button" class="sort sortBtn" id="sort_msgGroupCnt"></th>
<th>요청시간<input type="button" class="sort sortBtn" id="sort_reqDate"></th>
<th>예약여부<input type="button" class="sort sortBtn" id="sort_reserveYn"></th>
<th>내용<input type="button" class="sort sortBtn" id="sort_smsTxt"></th>
<th>타입<input type="button" class="sort sortBtn" id="sort_msgTypeTxt"></th>
<th>방식<input type="button" class="sort sortBtn" id="sort_sendKind"></th>
<th>등록일자<input type="button" class="sort sortBtn" id="sort_frstRegistPnttm"></th>
<th>처리상태<input type="button" class="sort sortBtn" id="sort_cancelResultYn"></th>
<!-- <th>예약상태<input type="button" class="sort sortBtn" id="sort_conectMthdTxt"></th> -->
<!--
<th>취소일자<input type="button" class="sort sortBtn" id="sort_agentCodeTxt"></th>
-->
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr>
<td>
<input name="checkField" id="<c:out value="${result.userId}_${status.count}"/>" title="Check <c:out value="${status.count}"/>" type="checkbox"/><label for="<c:out value="${result.userId}"/>"></label>
<input name="checkId" type="hidden" class="${result.userId}" value="<c:out value='${result.userId}'/>§<c:out value='${result.msgGroupId}'/>§<c:out value='${result.reserveYn}'/>"/>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
<c:if test="${searchVO.searchSortOrd eq 'asc' }">
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<a href="#" onclick="javascript:fnSelectMber('<c:out value="${result.userId}"/>'); return false;">
<c:out value="${result.userId}"/>
(<c:out value="${result.userNm}"/>)
</a>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.mberSttus eq 'Y'}">
일반
</c:when>
<c:when test="${result.mberSttus eq 'N'}">
탈퇴
</c:when>
<c:when test="${result.mberSttus eq 'B'}">
이용정지
</c:when>
<c:otherwise>
기타(${result.mberSttus})
</c:otherwise>
</c:choose>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<a href="#" onclick="fn_detail_list('${result.msgGroupId}'); return false;">
<c:out value="${result.callFrom}"/>
</a>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<fmt:parseDate value="${result.reqDate}" var="reqDateValue" pattern="yyyy-MM-dd HH:mm"/>
<fmt:parseDate value="${result.nowDate}" var="nowDateValue" pattern="yyyy-MM-dd HH:mm"/>
<c:choose>
<c:when test="${nowDateValue < reqDateValue}">
<c:out value="${result.msgGroupCnt}"/>
</c:when>
<c:otherwise>
<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
</c:otherwise>
</c:choose>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<c:out value="${result.reqDate}"/>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.reserveYn eq 'Y'}">
예약
<%-- <c:if test="${result.reserveCYn eq 'Y'}">
(취소)
</c:if> --%>
</c:when>
<c:otherwise>
즉시
</c:otherwise>
</c:choose>
</td>
<td class="sms_detail left" <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF;"</c:if>>
<c:choose>
<c:when test="${empty result.smsTxt}">
<c:choose>
<c:when test="${result.msgType eq '4'}">
내용없음
</c:when>
<c:otherwise>
그림문자
</c:otherwise>
</c:choose>
<div class="sms_detail_hover">
<c:if test="${not empty fn:split(result.atchFiles, '^')[0]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[0]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[1]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[1]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[2]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[2]}&fileSn=0" style="width: 120px;">
</c:if>
</div>
</c:when>
<c:otherwise>
<p><c:out value="${result.smsTxt}"/></p>
<div class="sms_detail_hover">
<c:if test="${not empty fn:split(result.atchFiles, '^')[0]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[0]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[1]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[1]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[2]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(result.atchFiles, '^')[2]}&fileSn=0" style="width: 120px;">
</c:if>
<c:if test="${not empty fn:split(result.atchFiles, '^')[0]}">
<br />
</c:if>
<c:out value="${fn:replace(fn:replace(result.smsTxt, newLineChar, '<br/>'), newLineChar2, '<br/>')}" escapeXml="false"/>
</div>
</c:otherwise>
</c:choose>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.msgTypeTxt eq 'SMS전송'}">
SMS
</c:when>
<c:when test="${result.msgTypeTxt eq 'MMS전송' && result.fileCnt eq '0'}">
LMS
</c:when>
<c:when test="${result.msgTypeTxt eq 'MMS전송' && result.fileCnt ne '0'}">
MMS
</c:when>
<c:when test="${result.msgTypeTxt eq '알림톡전송'}">
알림톡
</c:when>
<c:otherwise>
<c:out value="${result.msgTypeTxt}"/>
</c:otherwise>
</c:choose>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.sendKind eq 'A'}">
API
</c:when>
<c:when test="${result.sendKind eq 'H'}">
WEB
</c:when>
</c:choose>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:out value="${result.frstRegistPnttm}"/>
</td>
<td <c:if test="${result.smishingYn eq 'Y'}">style="color: #0000FF; cursor:pointer;"</c:if>>
<c:choose>
<c:when test="${result.cancelResultYn eq 'Y'}">
처리완료
</c:when>
<c:when test="${result.cancelResultYn eq 'B'}">
이용정지
</c:when>
<c:when test="${result.cancelResultYn eq 'R'}">
예약취소
</c:when>
<c:otherwise>
미처리
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="13"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btnWrap" style="margin-bottom: 15px;">
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnUserMsgUpdt(); return false;" value="사용자 이용정지 및 예약문자 취소">
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnMsgStatusUpdt(); return false;" value="완료 처리">
</div>
<!-- 페이지 네비게이션 시작 -->
<c:if test="${!empty resultList}">
<div class="page">
<ul class="inline">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</ul>
</div>
</c:if>
<!-- //페이지 네비게이션 끝 -->
</div>
</div>
</form>
<form name="modiForm" method="get" action="<c:url value='/uss/ion/msg/SendMsgDetailList.do'/>" >
<input name="msgId" type="hidden" />
<input name="msgGroupId" type="hidden" />
<input name="detailType" type="hidden" value="sendHoliMsgList" />
</form>
<form name="modiForm2" id="modiForm2" method="post">
<input name="mberId" type="hidden" />
</form>
</body>
</html>

View File

@ -105,6 +105,10 @@ function goList() {
frm.action ='/uss/ion/msg/NewUserSendMsgList.do';
}
if(detailType == "sendHoliMsgList") {
frm.action ='/uss/ion/msg/selectHoliMsgList.do';
}
frm.submit();
}
</script>

View File

@ -565,9 +565,9 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
.pageCont .tbType1 tbody tr td.sms_detail {overflow:inherit;text-overflow:inherit;position:relative;}
.pageCont .tbType1 tbody tr td.sms_detail p {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-50px;top:45px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:0;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover {display:-webkit-box;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover {overflow:hidden;text-overflow:ellipsis;display:none;word-wrap:break-word;-webkit-line-clamp:20;-webkit-box-orient:vertical;position:absolute;left:-50px;top:30px;width:calc(100% + 150px);padding:15px;line-height:20px;white-space:normal;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgb(0 0 0 / 0.2);z-index:1;font-size:14px;text-align:left;}
.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover:after {content:'';position:absolute;left:0;bottom:-10px;width:100%;height:10px;background:#fff;border-radius:0 0 5px 5px;}
.pageCont .tbType1 tbody tr td.sms_detail:hover .sms_detail_hover,.pageCont .tbType1 tbody tr td.sms_detail .sms_detail_hover.active {display:-webkit-box;overflow:auto;}
.pageCont .tbType1 tbody tr td .fillBlue {margin-top:5px;height:25px;padding:3 3px;font-size:13px;text-align:center;color:#ffffff !important;background:#456ded;border-radius:3px;}
.pageCont .tbType1 tbody tr td .fillRed {margin-top:5px;height:25px;padding:3 3px;font-size:13px;text-align:center;color:#ffffff !important;background:#e40000;border-radius:3px;}
@ -929,14 +929,15 @@ function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
<div style="width: 0px; height: 0px;overflow:hidden;">
<form id="msgForm" name="msgForm" method="post">
<input type="hidden" id="msgType" name="msgType" value="6"/>
<input type="text" name="callFrom" id="callFrom" value="01084329333" />
<input type="text" name="callFrom" id="callFrom" value="15518011" />
<input type="text" name="callTo" id="callTo" />
<input type="radio" name="msgKind" id="msgKind1" value="N" checked />
<textarea name="smsTxt" id="smsTxt">
[문자온] 번호도용 이동통신사 문자차단 서비스 안내
이동통신사 번호도용 문자차단 서비스는 웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스로 해당 서비스에 가입되어 있는 경우 인터넷을 통해 본인 휴대폰 번호로 문자 발송이 자동 차단되게 됩니다.
문자 발송에도 불구하고 발송결과가 계속 '수신거부'로 나오는 경우 고객님의 휴대폰 가입 이동통신사에 문의하시어 '번호도용 문자차단서비스'에 가입되어있는지 확인하시고, 상기 서비스를 해지하신 후 다시 문자 발송해주시길 바랍니다.(서비스 해지 후 정상 발송까지 3~7일 소요될 수 있습니다.)
감사합니다.
[문자온] 문자발송 결과(실패) 안내
고객님은 현재 이동통신사의 "번호도용 문자차단 서비스"에 가입되어 있어 인터넷 문자사이트를 통한 문자발송이 모두 차단되어 있습니다.
문자발송 서비스를 정상적으로 이용하기 위해서는 이용중인 이동통신사에 문의하시어 상기 서비스를 해지하신 후 문자를 재발송해 주시길 바랍니다.
(서비스 해지 후 정상 발송까지 3~7일 소요될 수 있습니다.)
※번호도용 문자차단 서비스 : 웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스
</textarea>
<input type="file" name="atchMsgFile" id="atchMsgFile" />
</form>

View File

@ -17,10 +17,10 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
%>
<!DOCTYPE html>
<html lang="ko">
@ -35,7 +35,7 @@
html {
overflow-x: hidden;
overflow-y: auto;
}
}
</style>
<script src="/pb/js/jquery-3.5.0.js"></script>
@ -45,141 +45,141 @@ html {
<script type="text/javaScript" language="javascript">
$(document).ready(function() {
// change 함수
$("#changeWord").change(function() {
// 변경된 값으로 비교 후 alert 표출
if($(this).val() == ""){
$("#rejectReason").val('');
} else {
$("#rejectReason").val($(this).val());
}
});
// change 함수
$("#changeWord").change(function() {
// 변경된 값으로 비교 후 alert 표출
if($(this).val() == ""){
$("#rejectReason").val('');
} else {
$("#rejectReason").val($(this).val());
}
});
});
//PdfView
function pdfViewPhonePop(atchFileId,fileSn) {
document.pdfForm.atchFileId.value = atchFileId;
document.pdfForm.fileSn.value = fileSn;
document.pdfForm.atchFileId.value = atchFileId;
document.pdfForm.fileSn.value = fileSn;
document.pdfForm.action = "<c:url value='/uss/ion/msg/pdfViewPhone.do'/>";
document.pdfForm.submit();
document.pdfForm.submit();
}
//기업회원 신청 승인/반려 처리
function updateAuthYn(phmId, authYn, userId) {
var form = document.authForm;
form.phmId.value = phmId;
form.authYn.value = authYn;
form.userId.value = userId;
var data = new FormData(form);
if (confirm("인증완료 하시겠습니까?")) {
$.ajax({
type: "POST",
url: "/uss/ion/msg/updateAuthYnAjax.do",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (data) {
if (data.result) {
alert(data.msg);
opener.location.reload();
self.close();
} else {
alert(data.msg);
}
},
error: function (e) {
alert("저장에 실패하였습니다.");
alert("ERROR : " + JSON.stringify(e));
}
});
}
var form = document.authForm;
form.phmId.value = phmId;
form.authYn.value = authYn;
form.userId.value = userId;
var data = new FormData(form);
if (confirm("인증완료 하시겠습니까?")) {
$.ajax({
type: "POST",
url: "/uss/ion/msg/updateAuthYnAjax.do",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (data) {
if (data.result) {
alert(data.msg);
opener.location.reload();
self.close();
} else {
alert(data.msg);
}
},
error: function (e) {
alert("저장에 실패하였습니다.");
alert("ERROR : " + JSON.stringify(e));
}
});
}
}
//기업회원 신청 승인/반려 처리
function authYnC() {
if( $("#rejectReason").val() == '' ){
alert("반려사유를 입력해주세요.");
return false;
}
if (confirm("반려 하시겠습니까?")) {
var form = document.returnPopForm;
form.authYn.value = "C"
var data = new FormData(form);
url = "/uss/ion/msg/updateAuthYnAjax.do";
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (data) {
if (data.result) {
// 초기화
alert(data.msg);
opener.location.reload();
self.close();
}
else {
alert(data.msg);
}
},
error: function (e) {
alert("저장에 실패하였습니다.");
alert("ERROR : " + JSON.stringify(e));
}
});
}
if( $("#rejectReason").val() == '' ){
alert("반려사유를 입력해주세요.");
return false;
}
if (confirm("반려 하시겠습니까?")) {
var form = document.returnPopForm;
form.authYn.value = "C"
var data = new FormData(form);
url = "/uss/ion/msg/updateAuthYnAjax.do";
$.ajax({
type: "POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (data) {
if (data.result) {
// 초기화
alert(data.msg);
opener.location.reload();
self.close();
}
else {
alert(data.msg);
}
},
error: function (e) {
alert("저장에 실패하였습니다.");
alert("ERROR : " + JSON.stringify(e));
}
});
}
}
//반려화면 Call
function setRejectAreaCall(sType) {
if (sType == "SHOW") {
if ($("#rejectArea").css("display") == "block") {
//반려 Hide
setRejectAreaHide();
}
else {
// 반려 Show
setRejectAreaShow();
}
}
else {
//반려 Hide
setRejectAreaHide();
}
if (sType == "SHOW") {
if ($("#rejectArea").css("display") == "block") {
//반려 Hide
setRejectAreaHide();
}
else {
// 반려 Show
setRejectAreaShow();
}
}
else {
//반려 Hide
setRejectAreaHide();
}
}
// 반려 Show
function setRejectAreaShow() {
$("#rejectArea").show();
$("#btnReject").text("반려 CLOSE");
$("#btnReject").removeClass("btnType1");
$("#btnReject").addClass("btnType2");
$("#rejectArea").show();
$("#btnReject").text("반려 CLOSE");
$("#btnReject").removeClass("btnType1");
$("#btnReject").addClass("btnType2");
}
//반려 Hide
function setRejectAreaHide() {
$("#rejectArea").hide();
$("#rejectArea").hide();
$("#btnReject").text("반려 OPEN");
$("#btnReject").removeClass("btnType2");
$("#btnReject").addClass("btnType1");
$("#btnReject").text("반려 OPEN");
$("#btnReject").removeClass("btnType2");
$("#btnReject").addClass("btnType1");
}
</script>
@ -188,247 +188,247 @@ function setRejectAreaHide() {
<body>
<div class="pageCont" style="text-align: center; width: 1000px;">
<div class="listTop" style="float: left; margin-top: 0px; padding-top: 0px;">
<p class="tType5">발신번호 신청 정보</p>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 12%">
<col style="width: *%">
<col style="width: 11%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 15%">
</colgroup>
<thead>
<tr>
<th>발신번호</th>
<th>대표</th>
<th>담당자</th>
<th>회원</th>
<th>구분</th>
<th>인증방식</th>
<th>인증자</th>
<th>인증여부</th>
<th>다운로드</th>
</tr>
</thead>
<tbody>
<tr>
<td title="${phoneNumber}">${phoneNumber}</td>
<td title="${userName}">${userName}</td>
<td title="${managerNm}">${managerNm}</td>
<td>
<c:choose>
<c:when test="${dept == 'c'}">
기업
</c:when>
<c:otherwise>
개인
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${not empty nameType}">
<c:choose>
<c:when test="${nameType == '1'}">
당사
</c:when>
<c:when test="${nameType == '2'}">
대표
</c:when>
<c:when test="${nameType == '3'}">
직원
</c:when>
<c:when test="${nameType == '4'}">
타사
</c:when>
<c:when test="${nameType == '5'}">
본인
</c:when>
<c:otherwise>
타인
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
없음
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${phmAuthTypeTxt eq '휴대폰 인증'}">
휴대폰
</c:when>
<c:when test="${phmAuthTypeTxt eq '서류인증'}">
서류
</c:when>
<c:otherwise>
<c:out value="${phmAuthTypeTxt}"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${phmAuthTypeTxt eq '서류인증'}">
</c:when>
<c:otherwise>
<c:out value="${ownerName}"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${phmType eq '03'}">
발신번호 차단
</c:when>
<c:otherwise>
<c:if test="${authYnTxt eq '심사중'}">인증요청</c:if>
<c:if test="${authYnTxt ne '심사중'}"><c:out value="${authYnTxt}"/></c:if>
</c:otherwise>
</c:choose>
</td>
<td>
<c:import url="/cmm/fms/selectMberFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${atchFileId}" />
</c:import>
</td>
</tr>
</tbody>
</table>
</div>
<div class="listTop" style="float: left; margin-top: 0px; padding-top: 0px;">
<p class="tType5">발신번호 신청 정보</p>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: 12%">
<col style="width: *%">
<col style="width: 11%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 8%">
<col style="width: 15%">
</colgroup>
<thead>
<tr>
<th>발신번호</th>
<th>대표</th>
<th>담당자</th>
<th>회원</th>
<th>구분</th>
<th>인증방식</th>
<th>인증자</th>
<th>인증여부</th>
<th>다운로드</th>
</tr>
</thead>
<tbody>
<tr>
<td title="${phoneNumber}">${phoneNumber}</td>
<td title="${userName}">${userName}</td>
<td title="${managerNm}">${managerNm}</td>
<td>
<c:choose>
<c:when test="${dept == 'c'}">
기업
</c:when>
<c:otherwise>
개인
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${not empty nameType}">
<c:choose>
<c:when test="${nameType == '1'}">
당사
</c:when>
<c:when test="${nameType == '2'}">
대표
</c:when>
<c:when test="${nameType == '3'}">
직원
</c:when>
<c:when test="${nameType == '4'}">
타사
</c:when>
<c:when test="${nameType == '5'}">
본인
</c:when>
<c:otherwise>
타인
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
없음
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${phmAuthTypeTxt eq '휴대폰 인증'}">
휴대폰
</c:when>
<c:when test="${phmAuthTypeTxt eq '서류인증'}">
서류
</c:when>
<c:otherwise>
<c:out value="${phmAuthTypeTxt}"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${phmAuthTypeTxt eq '서류인증'}">
</c:when>
<c:otherwise>
<c:out value="${ownerName}"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${phmType eq '03'}">
발신번호 차단
</c:when>
<c:otherwise>
<c:if test="${authYnTxt eq '심사중'}">인증요청</c:if>
<c:if test="${authYnTxt ne '심사중'}"><c:out value="${authYnTxt}"/></c:if>
</c:otherwise>
</c:choose>
</td>
<td>
<c:import url="/cmm/fms/selectMberFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${atchFileId}" />
</c:import>
</td>
</tr>
</tbody>
</table>
</div>
<br /><br />
<!-- 필수서류 체크 -->
<div class="listTop" style="float: left; margin-top: 0px; padding-top: 0px;">
<p class="tType5">승인에 필요한 서류</p>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: *%">
<col style="width: 25%">
</colgroup>
<thead>
<tr>
<td class="left" style="padding: 10px 0 10px 0; line-height: 1.6em;">${requiredDocuments}</td>
<td style="padding: 10px 0 10px 0; vertical-align: middle;">
<c:if test="${authYn eq 'H'}">
<button class="btnType1" onclick="updateAuthYn('<c:out value='${phmId}'/>', 'Y', '<c:out value='${userId}'/>'); return false;" style="background-color: blue;">인증완료</button>
<button class="btnType1" onclick="setRejectAreaCall('SHOW'); return false;" id="btnReject">반려 OPEN</button>
</c:if>
</td>
</tr>
</thead>
</tbody>
</table>
</div>
<!-- 반려 -->
<div id="rejectArea" class="rejectAreaClass" style="display: none;">
<br /><br />
<div class="listTop" style="float: left; margin-top: 0px; padding-top: 0px;">
<p class="tType5">반려</p>
</div>
<div class="tableWrap">
<form id="returnPopForm" name="returnPopForm" method="post">
<input type="hidden" name="phmId" id="phmId" value="${phmId}"/>
<input type="hidden" name="authYn" id="authYn"/>
<input type="hidden" name="userId" value="${userId}" />
<table class="tbType3">
<colgroup>
<col style="width: 15%">
<col style="width: *%">
</colgroup>
<thead>
<tr>
<th>반려문구</th>
<td class="left">
<c:if test="${authYn eq 'H'}">
<select id="changeWord" name="changeWord" style="width: 89%;">
<option value="">직접입력</option>
<c:choose>
<c:when test="${dept == 'c'}">
<option value='[문자온] 기업의 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(회사 명의 일반전화)</option>
<option value='[문자온] 기업회원의 전화번호 중 직원명의로 가입된 일반전화의 발신번호 등록을 위해서는 "통신서비스이용증명원", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(직원 명의 일반전화)</option>
<option value='[문자온] 기업 재직 직원명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원(직원 명의 본인의 휴대폰 인증 대체 가능)", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(직원 명의 휴대폰)</option>
<option value='[문자온] 기업 자사 명의 외 타사 일반전화 및 타사 명의의 휴대폰 발신번호 등록을 위해서는 "거래관계확인서(계약서, 세금계산서 등)", "발신번호 명의업체의 사업자등록증", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)", "발신번호 명의업체의 위임장", "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(타사 일반전화 또는 타사 휴대폰)</option>
<option value='[문자온] 기업 자사 명의 외 타사 일반전화 및 타사 명의의 휴대폰 발신번호 등록을 위해서는 "거래관계확인서(계약서, 세금계산서 등)", "발신번호 명의업체의 사업자등록증", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)", "발신번호 명의업체의 위임장", "통신서비스이용증명원", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(타사 직원 일반전화 또는 타사 직원 휴대폰)</option>
</c:when>
<c:otherwise>
<option value='[문자온] 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(본인 일반전화)</option>
<option value='[문자온] 타인의 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(타인 일반전화)</option>
<option value='[문자온] 타인 명의의 휴대폰 번호를 발신번호로 사용하실 경우 해당번호에 대한 "통신서비스이용증명원(타인 명의 본인의 휴대폰 인증 대체 가능)", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 됩니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(타인 휴대폰)</option>
<option value='[문자온] 개인회원이 회사 명의의 일반전화 또는 회사 명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원", "사업자등록증", "재직증명서(문자온 회원 가입자가 사업자등록증 상의 대표자가 아닌 경우에 한함)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(회사 일반전화 또는 회사 휴대폰, 재직증명가능)</option>
<option value='[문자온] 개인회원 중 재직증명서 제출이 불가한 자가(가족, 자원봉사자 등) 회사 명의의 일반전화 또는 회사 명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원", "발신번호 명의업체의 사업자등록증", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(회사 일반전화 또는 회사 휴대폰, 재직증명불가)</option>
</c:otherwise>
</c:choose>
</select>
</c:if>
</td>
</tr>
<tr>
<th>반려사유</th>
<td class="left">
<textarea style="width: 87%; height: 160px" name="rejectReason" id="rejectReason" maxlength="1000" <c:if test="${authYn eq 'C'}">readonly</c:if>>${rejectReason}</textarea>
</td>
</tr>
</thead>
</table>
<div class="button_box" style="margin-top: 15px;">
<c:if test="${authYn eq 'H'}">
<button type="button" class="btnType btnType20" onClick="authYnC(); return false;" style="background-color: blue;">반려</button>
</c:if>
<button type="button" class="btnType btnType20" onClick="setRejectAreaCall('HIDE'); return false;">취소</button>
</div>
</form>
</div>
<br /><br />
</div>
<br /><br />
<!-- 필수서류 체크 -->
<div class="listTop" style="float: left; margin-top: 0px; padding-top: 0px;">
<p class="tType5">승인에 필요한 서류</p>
</div>
<div class="tableWrap">
<table class="tbType1">
<colgroup>
<col style="width: *%">
<col style="width: 25%">
</colgroup>
<thead>
<tr>
<td class="left" style="padding: 10px 0 10px 0; line-height: 1.6em;">${requiredDocuments}</td>
<td style="padding: 10px 0 10px 0; vertical-align: middle;">
<c:if test="${authYn eq 'H'}">
<button class="btnType1" onclick="updateAuthYn('<c:out value='${phmId}'/>', 'Y', '<c:out value='${userId}'/>'); return false;" style="background-color: blue;">인증완료</button>
<button class="btnType1" onclick="setRejectAreaCall('SHOW'); return false;" id="btnReject">반려 OPEN</button>
</c:if>
</td>
</tr>
</thead>
</tbody>
</table>
</div>
<!-- 반려 -->
<div id="rejectArea" class="rejectAreaClass" style="display: none;">
<br /><br />
<div class="listTop" style="float: left; margin-top: 0px; padding-top: 0px;">
<p class="tType5">반려</p>
</div>
<div class="tableWrap">
<form id="returnPopForm" name="returnPopForm" method="post">
<input type="hidden" name="phmId" id="phmId" value="${phmId}"/>
<input type="hidden" name="authYn" id="authYn"/>
<input type="hidden" name="userId" value="${userId}" />
<table class="tbType3">
<colgroup>
<col style="width: 15%">
<col style="width: *%">
</colgroup>
<thead>
<tr>
<th>반려문구</th>
<td class="left">
<c:if test="${authYn eq 'H'}">
<select id="changeWord" name="changeWord" style="width: 89%;">
<option value="">직접입력</option>
<c:choose>
<c:when test="${dept == 'c'}">
<option value='[문자온] 기업의 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(회사 명의 일반전화)</option>
<option value='[문자온] 기업회원의 전화번호 중 직원명의로 가입된 일반전화의 발신번호 등록을 위해서는 "통신서비스이용증명원", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(직원 명의 일반전화)</option>
<option value='[문자온] 기업 재직 직원명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원(직원 명의 본인의 휴대폰 인증 대체 가능)", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(직원 명의 휴대폰)</option>
<option value='[문자온] 기업 자사 명의 외 타사 일반전화 및 타사 명의의 휴대폰 발신번호 등록을 위해서는 "거래관계확인서(계약서, 세금계산서 등)", "발신번호 명의업체의 사업자등록증", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)", "발신번호 명의업체의 위임장", "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(타사 일반전화 또는 타사 휴대폰)</option>
<option value='[문자온] 기업 자사 명의 외 타사 일반전화 및 타사 명의의 휴대폰 발신번호 등록을 위해서는 "거래관계확인서(계약서, 세금계산서 등)", "발신번호 명의업체의 사업자등록증", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)", "발신번호 명의업체의 위임장", "통신서비스이용증명원", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(타사 직원 일반전화 또는 타사 직원 휴대폰)</option>
</c:when>
<c:otherwise>
<option value='[문자온] 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(본인 일반전화)</option>
<option value='[문자온] 타인의 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(타인 일반전화)</option>
<option value='[문자온] 타인 명의의 휴대폰 번호를 발신번호로 사용하실 경우 해당번호에 대한 "통신서비스이용증명원(타인 명의 본인의 휴대폰 인증 대체 가능)", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 됩니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(타인 휴대폰)</option>
<option value='[문자온] 개인회원이 회사 명의의 일반전화 또는 회사 명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원", "사업자등록증", "재직증명서(문자온 회원 가입자가 사업자등록증 상의 대표자가 아닌 경우에 한함)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(회사 일반전화 또는 회사 휴대폰, 재직증명가능)</option>
<option value='[문자온] 개인회원 중 재직증명서 제출이 불가한 자가(가족, 자원봉사자 등) 회사 명의의 일반전화 또는 회사 명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원", "발신번호 명의업체의 사업자등록증", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(회사 일반전화 또는 회사 휴대폰, 재직증명불가)</option>
</c:otherwise>
</c:choose>
</select>
</c:if>
</td>
</tr>
<tr>
<th>반려사유</th>
<td class="left">
<textarea style="width: 87%; height: 160px" name="rejectReason" id="rejectReason" maxlength="1000" <c:if test="${authYn eq 'C'}">readonly</c:if>>${rejectReason}</textarea>
</td>
</tr>
</thead>
</table>
<div class="button_box" style="margin-top: 15px;">
<c:if test="${authYn eq 'H'}">
<button type="button" class="btnType btnType20" onClick="authYnC(); return false;" style="background-color: blue;">반려</button>
</c:if>
<button type="button" class="btnType btnType20" onClick="setRejectAreaCall('HIDE'); return false;">취소</button>
</div>
</form>
</div>
<br /><br />
</div>
<c:if test="${not empty fileList}">
<div style="width: 100%; text-align: center; margin: 30px 0 30px 0;">
<c:set var="plusCnt" value="0"/>
<c:set var="btnClass" value="btnType1"/>
<c:forEach var="result" items="${fileList}" varStatus="status">
<c:choose>
<c:when test="${result.fileSn eq fileSn}">
<c:set var="btnClass" value="btnType2"/>
</c:when>
<c:otherwise>
<c:set var="btnClass" value="btnType1"/>
</c:otherwise>
</c:choose>
<c:set var="plusCnt" value="${plusCnt + 1}"/>
<button class="<c:out value="${btnClass}"/>" onclick="pdfViewPhonePop('${result.atchFileId}','${result.fileSn}'); return false;"> 첨부파일 <c:out value="${plusCnt}"/> </button>
</c:forEach>
</div>
</c:if>
<c:if test="${not empty fileList}">
<div style="width: 100%; text-align: center; margin: 30px 0 30px 0;">
<c:set var="plusCnt" value="0"/>
<c:set var="btnClass" value="btnType1"/>
<c:forEach var="result" items="${fileList}" varStatus="status">
<c:choose>
<c:when test="${result.fileSn eq fileSn}">
<c:set var="btnClass" value="btnType2"/>
</c:when>
<c:otherwise>
<c:set var="btnClass" value="btnType1"/>
</c:otherwise>
</c:choose>
<c:set var="plusCnt" value="${plusCnt + 1}"/>
<button class="<c:out value="${btnClass}"/>" onclick="pdfViewPhonePop('${result.atchFileId}','${result.fileSn}'); return false;"> 첨부파일 <c:out value="${plusCnt}"/> </button>
</c:forEach>
</div>
</c:if>
<c:if test="${fileType eq 'etc'}">
<div style="width: 100%; text-align: center; margin: 30px 0 30px 0; color: red;">
PDF 뷰어에서 지원하지 않는 형식의 파일입니다. 첨부파일 다운로드후 확인해주세요.
</div>
</c:if>
<canvas id="the-canvas" name="the-canvas" style="min-width: 600px; max-width: 1000px; margin-top: 25px; margin-bottom: 25px;"></canvas>
<c:if test="${fileType eq 'etc'}">
<div style="width: 100%; text-align: center; margin: 30px 0 30px 0; color: red;">
PDF 뷰어에서 지원하지 않는 형식의 파일입니다. 첨부파일 다운로드후 확인해주세요.
</div>
</c:if>
<canvas id="the-canvas" name="the-canvas" style="min-width: 600px; max-width: 1000px; margin-top: 25px; margin-bottom: 25px;"></canvas>
<div>
<button class="btnType" id="prev">Previous</button>
&nbsp;<span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>&nbsp;
<button class="btnType" id="next">Next</button>
<div style="float: right; margin-right: 10px;"><button onclick="javascript:opener.location.reload(); self.window.close();" class="btnType">CLOSE</button></div>
</div>
<div>
<button class="btnType" id="prev">Previous</button>
&nbsp;<span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>&nbsp;
<button class="btnType" id="next">Next</button>
<div style="float: right; margin-right: 10px;"><button onclick="javascript:opener.location.reload(); self.window.close();" class="btnType">CLOSE</button></div>
</div>
</div>
<br /><br />
@ -458,95 +458,101 @@ function setRejectAreaHide() {
</body>
</html>
<script type="text/javaScript" language="javascript">
var pdfDoc = null;
var pageNum = 1;
var pageRendering = false;
var pageNumPending = null;
var scale = 1.4;
var canvas = document.getElementById('the-canvas');
var ctx = canvas.getContext('2d');
/* var url = '/cmm/fms/FileDown.do?atchFileId=FILE_000000000019061&fileSn=0'; */
// var url = '/usr/local/tomcat/file/sht/pdf/2ccbb16e-62df-48c0-bbb1-3b6559bd4c36.pdf';
var url = '${pdfPath}';
<script type="text/javaScript" language="javascript">
var pdfDoc = null;
var pageNum = 1;
var pageRendering = false;
var pageNumPending = null;
var scale = 1.4;
var canvas = document.getElementById('the-canvas');
var ctx = canvas.getContext('2d');
/* var url = '/cmm/fms/FileDown.do?atchFileId=FILE_000000000019061&fileSn=0'; */
// var url = '/usr/local/tomcat/file/sht/pdf/2ccbb16e-62df-48c0-bbb1-3b6559bd4c36.pdf';
var url = '${pdfPath}';
/**
* Get page info from document, resize canvas accordingly, and render page.
* @param num Page number.
*/
function renderPage(num) {
pageRendering = true;
// Using promise to fetch the page
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
/**
* Get page info from document, resize canvas accordingly, and render page.
* @param num Page number.
*/
function renderPage(num) {
pageRendering = true;
// Using promise to fetch the page
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
// Render PDF page into canvas context
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
// Wait for rendering to finish
renderTask.promise.then(function() {
pageRendering = false;
if (pageNumPending !== null) {
// New page rendering is pending
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
// Wait for rendering to finish
renderTask.promise.then(function() {
pageRendering = false;
if (pageNumPending !== null) {
// New page rendering is pending
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
// Update page counters
document.getElementById('page_num').textContent = num;
}
// Update page counters
document.getElementById('page_num').textContent = num;
}
/**
* If another page rendering in progress, waits until the rendering is
* finised. Otherwise, executes rendering immediately.
*/
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
/**
* If another page rendering in progress, waits until the rendering is
* finised. Otherwise, executes rendering immediately.
*/
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
/**
* Displays previous page.
*/
function onPrevPage() {
if (pageNum <= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('prev').addEventListener('click', onPrevPage);
/**
* Displays previous page.
*/
function onPrevPage() {
if (pageNum <= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('prev').addEventListener('click', onPrevPage);
/**
* Displays next page.
*/
function onNextPage() {
if (pageNum >= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('next').addEventListener('click', onNextPage);
/**
* Asynchronously downloads PDF.
*/
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
document.getElementById('page_count').textContent = pdfDoc.numPages;
/**
* Displays next page.
*/
function onNextPage() {
if (pageNum >= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('next').addEventListener('click', onNextPage);
/**
* Asynchronously downloads PDF.
*/
pdfjsLib.getDocument(
{
url: url,
cMapUrl: '/js/pdfjs-3.11.174/web/cmaps/',
cMapPacked: true
}
).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
document.getElementById('page_count').textContent = pdfDoc.numPages;
// Initial/first page rendering
renderPage(pageNum);
});
</script>
// Initial/first page rendering
renderPage(pageNum);
});
</script>

View File

@ -39,14 +39,22 @@
$(document).ready(function() {
// change 함수
$("#changeWord").change(function() {
/* $("#changeWord").change(function() {
// 변경된 값으로 비교 후 alert 표출
if($(this).val() == ""){
$("#rejectReason").val('');
} else {
$("#rejectReason").val($(this).val());
var memo = $(this).val();
var spMemo = memo.split('<br/>').join("\r\n");
console.log("memo split ::: "+memo);
$("#rejectReason").html(spMemo);
//$("#rejectReason").val($(this).val());
}
});
}); */
});
@ -94,6 +102,15 @@ function authYnC() {
}
function fnRejectResonInput(){
//각 문구 줄바꿈 처리 적용
var memo = $("#changeWord option:selected").val();
var spMemo = memo.split('<br/>').join("\r\n");
$("#rejectReason").html(spMemo);
}
</script>
</head>
<body>
@ -113,20 +130,18 @@ function authYnC() {
<th>반려문구</th>
<td>
<c:if test="${mjPhoneMemberVO.authYn eq 'H'}">
<select id="changeWord" name="changeWord">
<select id="changeWord" name="changeWord" onchange="fnRejectResonInput();">
<option value="">직접입력</option>
<option value='[문자온] 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(본인 일반전화)</option>
<option value='[문자온] 타인의 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(타인 일반전화)</option>
<option value='[문자온] 타인 명의의 휴대폰 번호를 발신번호로 사용하실 경우 해당번호에 대한 "통신서비스이용증명원(타인 명의 본인의 휴대폰 인증 대체 가능)", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 됩니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(타인 휴대폰)</option>
<option value='[문자온] 개인회원이 회사 명의의 일반전화 또는 회사 명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원", "사업자등록증", "재직증명서(문자온 회원 가입자가 사업자등록증 상의 대표자가 아닌 경우에 한함)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>개인(회사 일반전화 또는 회사 휴대폰, 재직증명가능)</option>
<option value='[문자온] 개인회원 중 재직증명서 제출이 불가한 자가(가족, 자원봉사자 등) 회사 명의의 일반전화 또는 회사 명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원", "발신번호 명의업체의 사업자등록증", "발신번호 명의자의 위임장", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다. '>개인(회사 일반전화 또는 회사 휴대폰, 재직증명불가)</option>
<option value='[문자온] 기업의 일반전화 발신번호 등록을 위해서는 "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(회사 명의 일반전화)</option>
<option value='[문자온] 기업회원의 전화번호 중 직원명의로 가입된 일반전화의 발신번호 등록을 위해서는 "통신서비스이용증명원", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(직원 명의 일반전화)</option>
<option value='[문자온] 기업 재직 직원명의의 휴대폰 발신번호를 등록하기 위해서는 "통신서비스이용증명원(직원 명의 본인의 휴대폰 인증 대체 가능)", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(직원 명의 휴대폰)</option>
<option value='[문자온] 기업 자사 명의 외 타사 일반전화 및 타사 명의의 휴대폰 발신번호 등록을 위해서는 "거래관계확인서(계약서, 세금계산서 등)", "발신번호 명의업체의 사업자등록증", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)", "발신번호 명의업체의 위임장", "통신서비스이용증명원"이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(타사 일반전화 또는 타사 휴대폰)</option>
<option value='[문자온] 기업 자사 명의 외 타사 일반전화 및 타사 명의의 휴대폰 발신번호 등록을 위해서는 "거래관계확인서(계약서, 세금계산서 등)", "발신번호 명의업체의 사업자등록증", "대리인 신분증 사본(문자온에 가입하신 대리인의 신분증, 주민번호 뒷자리 마스킹 처리)", "발신번호 명의업체의 위임장", "통신서비스이용증명원", "재직증명서류(재직증명서, 4대보험 가입증명서 등)"가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다.'>기업(타사 직원 일반전화 또는 타사 직원 휴대폰)</option>
<option value='[문자온] 본인 명의의 일반전화 발신번호 등록을 위해서는 “통신서비스이용증명원”이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>개인(본인 일반전화)</option>
<option value='[문자온] 타인 명의의 일반전화 발신번호 등록을 위해서는 “발신번호에 대한 통신서비스이용증명원”, “발신번호 명의자의 위임장“, “대리인 신분증 사본(문자온 가입자 신분증, 주민번호 뒷자리 마스킹 처리)”이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>개인(타인 일반전화)</option>
<option value='[문자온] 타인 명의의 휴대전화 발신번호 등록을 위해서는 “발신번호에 대한 통신서비스이용증명원(발신번호 명의자 휴대폰 인증 대체 가능)”, “발신번호 명의자의 위임장“, “대리인 신분증 사본(문자온 가입자 신분증, 주민번호 뒷자리 마스킹 처리)”이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>개인(타인 휴대폰)</option>
<option value='[문자온] 개인회원이 회사 명의의 발신번호 등록을 위해서는 “발신번호에 대한 통신서비스이용증명원”, “사업자등록증“, “재직증명서(문자온 가입자가 사업자등록증 상 대표자가 아닌 경우)”가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>개인(회사 일반전화 또는 회사 휴대폰, 재직증명가능)</option>
<option value='[문자온] 개인회원 중 재직증명서 제출이 불가한 자가(가족, 자원봉사자 등) 회사 명의의 발신번호 등록을 위해서는 “발신번호에 대한 통신서비스이용증명원“, “ 발신번호 명의업체의 사업자등록증“, “발신번호 명의업체의 위임장“, “대리인 신분증 사본(문자온 가입자 신분증, 주민번호 뒷자리 마스킹 처리)”이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 승인 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>개인(회사 일반전화 또는 회사 휴대폰, 재직증명불가)</option>
<option value='[문자온] 회사 명의의 일반전화 발신번호 등록을 위해서는 “발신번호에 대한 통신서비스이용증명원”이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>기업(회사 명의 일반전화)</option>
<option value='[문자온] 회사 직원 명의의 일반전화 발신번호 등록을 위해서는 “발신번호에 대한 통신서비스이용증명원”, “재직증명서류”가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>기업(직원 명의 일반전화)</option>
<option value='[문자온] 회사 직원 명의의 휴대전화 발신번호 등록을 위해서는 “발신번호에 대한 통신서비스이용증명원(발신번호 명의자 휴대폰 인증 대체 가능)”, “재직증명서류”가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>기업(직원 명의 휴대폰)</option>
<option value='[문자온] 타사 명의의 발신번호 등록을 위해서는 “발신번호 명의업체의 사업자등록증“, “발신번호에 대한 통신서비스이용증명원”, “발신번호 명의업체의 위임장“, “대리인 신분증 사본(문자온 가입자 신분증, 주민번호 뒷자리 마스킹 처리)“이 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>기업(타사 일반전화 또는 타사 휴대폰)</option>
<option value='[문자온] 타사 직원 명의의 발신번호 등록을 위해서는 “타사 사업자등록증과 직원의 재직증명서류“, “타사 직원의 통신서비스이용증명원(휴대폰 인증 대체 가능)”, “위임장(타사직원->문자온 가입자)“, “대리인 신분증 사본(문자온 가입자 신분증, 주민번호 뒷자리 마스킹 처리)“가 반드시 첨부되어야 합니다. 해당 서류 첨부(문자온 로그인-마이페이지-발신번호관리 메뉴-서류제출-파일 등록)하여 재신청해 주시면 빠른 심사 도와드리겠습니다. <br/>*통신서비스이용증명원 발급 안내 : 이동통신사 고객센터 또는 홈페이지 통해 발급 가능'>기업(타사 직원 일반전화 또는 타사 직원 휴대폰)</option>
</select>
</c:if>
</td>

View File

@ -157,7 +157,7 @@ function infoPop(pageUrl){
<p>- 평일 09:30~17:00 사이에 신청하신 경우 <span class="c_222 fwRg">당일 처리를 원칙</span>으로 하되, 파일의 상태, 용량 등에 따라 1~2일 정도 소요될 수 있습니다<span class="c_222 fwRg">(주말 및 공휴일 처리 불가)</span></p>
<p>- 첨부가능 파일 : xlsx, xls, hwp, txt, doc, docx, csv(파일당 최대 용량 10MB)</p>
<p>- 주소록 등록 대행은 <span class="c_222 fwRg">신규 그룹으로만 생성 가능</span>합니다</p>
<p>- 긴급한 건은 010-8432-9333로 연락 주시기 바랍니다.</p>
<p>- 긴급한 건은 1551-8011로 연락 주시기 바랍니다.</p>
<p>- 엑셀파일에 비밀번호 설정, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</p>
</div>--%>
<form:form commandName="addrAgencyVO" name="addrAgencyVO" id="addrAgencyVO" method="post" enctype="multipart/form-data">

View File

@ -45,7 +45,7 @@ function footerSiteLinkPageTwoGo (){
<dl class="footer_service_center">
<dt>고객센터</dt>
<dd>
<p>010-8432-9333<br>010-2290-4786</p>
<p>1551-8011</p>
<span>E-mail : help@iten.co.kr</span>
</dd>
</dl>

View File

@ -1203,7 +1203,7 @@ function actionLogin() {
<a href="/web/cop/bbs/NoticeList.do" rel="nosublink"><i class="quick11"></i><span>고객센터</span></a>
<div class="hover_cont">
<div class="title">고객센터</div>
<div class="number">010-8432-9333<br>010-2290-4786</div>
<div class="number">1551-8011</div>
<%-- <div class="email">E-mail : help@iten.co.kr</div> --%>
<ul class="info">
<li>· 월~금 : 09:30 ~ 18:30</li>

View File

@ -1004,7 +1004,7 @@ function TabTypePay(obj, tabId) {
<tr>
<td colspan="2">
<div class="area_text">
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(010-8432-9333)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(1551-8011)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<p>- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.</p>
<p>- 카드사별 정책상 충전금액 제한이 있을 수 있습니다. 단, ARS 신용카드 결제는 충전금액 제한 없이 이용하실 수 있습니다.</p>
</div>

View File

@ -683,7 +683,7 @@ function TabTypePay(obj, tabId) {
<tr>
<td colspan="2">
<div class="area_text">
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(010-8432-9333)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(1551-8011)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<p>- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.</p>
<p>- 카드사별 정책상 충전금액 제한이 있을 수 있습니다. 단, ARS 신용카드 결제는 충전금액 제한 없이 이용하실 수 있습니다.</p>
</div>

View File

@ -293,7 +293,7 @@
<input type="hidden" id="subject" name="subject" value="" />
<input type="hidden" id="callToList" name="callToList" value="" />
<!-- 문자온 법인폰 번호 -->
<!-- <input type="hidden" id="callFrom" name="callFrom" value="01084329333" /> -->
<!-- <input type="hidden" id="callFrom" name="callFrom" value="15518011" /> -->
<input type="hidden" id="nameList" name="nameList" value="" />
<input type="hidden" id="faxConvertSeq" name="faxConvertSeq" value="" />
<input type="hidden" id="reserveYn" name="reserveYn" value="N" />

View File

@ -48,7 +48,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -190,7 +190,7 @@ function f_print(){
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -56,7 +56,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -243,7 +243,7 @@ function f_print(){
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -338,7 +338,7 @@ $(document).ready(function(){
</div>
<div class="input_list_item2 number" style="height:auto;min-height:60px;">
<div class="input_left">사유</div>
<div class="input_right input_right_id" style="padding:14px 0;align-items:center;line-height:30px;word-break:break-all;">${spamMemberInfoVO.smiMemo}</div>
<div class="input_right input_right_id" style="padding:14px 0;align-items:center;line-height:30px;word-break:break-all; width:100%">${spamMemberInfoVO.smiMemo}</div>
</div>
<div class="noti">회원가입 시 동의하신 <strong>스팸 관련 규약 사항에 따라 잔액은 환불이 불가</strong>합니다.</div>
</div>

View File

@ -1585,7 +1585,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="tablet table">
<div class="table_cell">
<div class="service_center_title">
<p>010-8432-9333<br>010-2290-4786</p>
<p>1551-8011</p>
<span>E-mail : help@iten.co.kr</span>
</div>
<div class="serive_info">
@ -1674,7 +1674,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="qna_answer">
<p class="answer_text">A.</p>
<p class="answer_cont">
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(010-8432-9333)로 문의주시면 즉시 처리 도와드리겠습니다.
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(1551-8011)로 문의주시면 즉시 처리 도와드리겠습니다.
</p>
</div>
@ -1759,7 +1759,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="qna_answer">
<p class="answer_text">A.</p>
<p class="answer_cont">
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)<br>만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(010-8432-9333)로 연락주시면 빠른 처리 도와드리겠습니다.
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)<br>만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(1551-8011)로 연락주시면 빠른 처리 도와드리겠습니다.
</p>
</div>
@ -1836,7 +1836,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
첫결제 이벤트 잔액이 남아 있더라도 1회 발송 문자수량 및 금액이 이벤트 잔액보다 큰 경우 문자가 발송되지 않으며, 이 경우 이벤트 잔액 이하의 금액으로 문자 수량을 조정해야 문자가 정상 발송됩니다.
Q. [결제] 첫결제 이벤트 후 추가 결제를 진행하였는데 잔액 부족으로 문자 발송이 안되는 경우는 왜 그런건가요?
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(010-8432-9333)로 문의주시면 즉시 처리 도와드리겠습니다.
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(1551-8011)로 문의주시면 즉시 처리 도와드리겠습니다.
Q. [장문·단문·그림문자] 한 번 보낸 문자를 저장해서 계속 보낼 수 있나요?
문자온은 “내문자함” 기능을 제공하기 때문에 한 번 보낸 문자를 저장해서 계속 보낼 수 있습니다.문자전송 페이지에서 문자내용 작성 후 [문자저장] 버튼을 클릭하면 해당 문자가 [내문자함]에 보관되어 언제든지 자유롭게 재발송이 가능합니다.
@ -1851,7 +1851,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
위임장 양식은 [마이페이지] → [발신번호 관리]에서 다운로드 가능하며 발신번호 명의자를 위임자, 문자온 이용자를 수임자(대리인)로 작성하여 제출해주시면 됩니다.
Q. [기타] 문자온 이용 중 버튼이 안눌러지는 등 장애나 오류가 발생한 경우에는 어떻게 해야 하나요?
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(010-8432-9333)로 연락주시면 빠른 처리 도와드리겠습니다.
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(1551-8011)로 연락주시면 빠른 처리 도와드리겠습니다.
Q. [기타] 투넘버 또는 투폰 이용 시 발신번호 등록이 가능한가요?
투넘버 및 투폰 번호의 경우 두 번째 번호는 가상의 번호인 관계로 이동통신사 및 가입 유형에 따라 본인 인증이 불가할 수 있습니다. 이 경우 고객님께서 가입하신 통신사를 통해 본인 인증 가능여부 확인 후 등록 신청을 진행해주시기 바랍니다.

View File

@ -1530,7 +1530,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="tablet table">
<div class="table_cell">
<div class="service_center_title">
<p>010-8432-9333<br>010-2290-4786</p>
<p>1551-8011</p>
<span>E-mail : help@iten.co.kr</span>
</div>
<div class="serive_info">
@ -1619,7 +1619,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="qna_answer">
<p class="answer_text">A.</p>
<p class="answer_cont">
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(010-8432-9333)로 문의주시면 즉시 처리 도와드리겠습니다.
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(1551-8011)로 문의주시면 즉시 처리 도와드리겠습니다.
</p>
</div>
@ -1704,7 +1704,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="qna_answer">
<p class="answer_text">A.</p>
<p class="answer_cont">
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)<br>만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(010-8432-9333)로 연락주시면 빠른 처리 도와드리겠습니다.
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)<br>만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(1551-8011)로 연락주시면 빠른 처리 도와드리겠습니다.
</p>
</div>
@ -1781,7 +1781,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
첫결제 이벤트 잔액이 남아 있더라도 1회 발송 문자수량 및 금액이 이벤트 잔액보다 큰 경우 문자가 발송되지 않으며, 이 경우 이벤트 잔액 이하의 금액으로 문자 수량을 조정해야 문자가 정상 발송됩니다.
Q. [결제] 첫결제 이벤트 후 추가 결제를 진행하였는데 잔액 부족으로 문자 발송이 안되는 경우는 왜 그런건가요?
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(010-8432-9333)로 문의주시면 즉시 처리 도와드리겠습니다.
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(1551-8011)로 문의주시면 즉시 처리 도와드리겠습니다.
Q. [장문·단문·그림문자] 한 번 보낸 문자를 저장해서 계속 보낼 수 있나요?
문자온은 “내문자함” 기능을 제공하기 때문에 한 번 보낸 문자를 저장해서 계속 보낼 수 있습니다.문자전송 페이지에서 문자내용 작성 후 [문자저장] 버튼을 클릭하면 해당 문자가 [내문자함]에 보관되어 언제든지 자유롭게 재발송이 가능합니다.
@ -1796,7 +1796,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
위임장 양식은 [마이페이지] → [발신번호 관리]에서 다운로드 가능하며 발신번호 명의자를 위임자, 문자온 이용자를 수임자(대리인)로 작성하여 제출해주시면 됩니다.
Q. [기타] 문자온 이용 중 버튼이 안눌러지는 등 장애나 오류가 발생한 경우에는 어떻게 해야 하나요?
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(010-8432-9333)로 연락주시면 빠른 처리 도와드리겠습니다.
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(1551-8011)로 연락주시면 빠른 처리 도와드리겠습니다.
Q. [기타] 투넘버 또는 투폰 이용 시 발신번호 등록이 가능한가요?
투넘버 및 투폰 번호의 경우 두 번째 번호는 가상의 번호인 관계로 이동통신사 및 가입 유형에 따라 본인 인증이 불가할 수 있습니다. 이 경우 고객님께서 가입하신 통신사를 통해 본인 인증 가능여부 확인 후 등록 신청을 진행해주시기 바랍니다.

View File

@ -3898,7 +3898,7 @@ $(document).on('click', '#hdnLink', function() {
<label for="send_adYnY">선거</label>
</td> -->
<input type="hidden" id="send_adYnY" name="send_adYn" value="Y">
<td colspan="2" class="ele_te">※ 자동동보문자를 <span>한번에 20,000건 이상 보내실 경우에는 꼭 고객센터(010-8432-9333)</span>로 연락주시어 발송 요청 후 진행해 주시길 바랍니다<span id="hdnLink">.</span></td>
<td colspan="2" class="ele_te">※ 자동동보문자를 <span>한번에 20,000건 이상 보내실 경우에는 꼭 고객센터(1551-8011)</span>로 연락주시어 발송 요청 후 진행해 주시길 바랍니다<span id="hdnLink">.</span></td>
</tr>
<tr>
<th scope="row">발신번호</th>

View File

@ -1007,7 +1007,7 @@ function fn_sendMsgData(){
//자동동보문자 2만건 초과시 발송 안되도록 처리함.
var totSendDataCnt = selectedData.length;
if(totSendDataCnt > 20000){
alert("자동동보문자를 한번에 20,000건 이상 보내실 경우에는 꼭 고객센터(010-8432-9333)로 연락주시어 발송 요청 후 진행해 주시길 바랍니다.");
alert("자동동보문자를 한번에 20,000건 이상 보내실 경우에는 꼭 고객센터(1551-8011)로 연락주시어 발송 요청 후 진행해 주시길 바랍니다.");
return false;
}

View File

@ -62,7 +62,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -446,7 +446,7 @@ function f_print(){
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -57,7 +57,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -115,7 +115,7 @@ function f_print(){
</tr>
<tr>
<th>전<span class="blank3"></span>화</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이<span class="blank2"></span>메<span class="blank2"></span>일</th>

View File

@ -52,7 +52,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">

View File

@ -58,7 +58,7 @@ function winPrint() {
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -120,7 +120,7 @@ function winPrint() {
</tr>
<tr>
<th>전&nbsp;&nbsp;&nbsp;&nbsp;화</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이&nbsp;&nbsp;메&nbsp;&nbsp;일</th>
@ -218,7 +218,7 @@ function winPrint() {
<p>- 본 견적서는 기본 견적서로 결제방식, 옵션 등에 따라 차이가 발생할 수 있습니다.</p>
<p>- 결제금액에 2% 포인트 적립(단가할인 고객의 경우 적립 제외)</p>
<p>- 포인트 10,000원 이상부터 현금으로 전환 가능</p>
<p>- 100만원 이상 충전을 원하시는 고객께서는 010-8432-9333로 별도 문의 바랍니다.</p>
<p>- 100만원 이상 충전을 원하시는 고객께서는 1551-8011로 별도 문의 바랍니다.</p>
<p>- 인터넷 익스플로러를 사용하시는 고객께서는 <span>[옵션도구>옵션>고급>인쇄>배경색 및 이미지 인쇄]</span>를 체크해주시기 바랍니다.</p>
</div>

View File

@ -602,7 +602,7 @@ function getMberGrdChk() {
<div class="banner">
<p>대량발송 고객 가격협의 가능</p>
<ul>
<li><img src="/publish/images/content/banner_call01.png" alt=""><p>전화 <strong>010-8432-9333</strong><p></li>
<li><img src="/publish/images/content/banner_call01.png" alt=""><p>전화 <strong>1551-8011</strong><p></li>
<li><img src="/publish/images/content/banner_email01.png" alt=""><p>이메일<span>help@iten.co.kr</span> <button type="button" onclick="location.href='mailto:help@iten.co.kr'">상담하기</button></li>
<li><img src="/publish/images/content/banner_kakao01.png" alt=""><p>카카오톡<span>munjaon</span><a href="http://pf.kakao.com/_PxoTtb/chat" target="_blank">상담하기</a><p></li>
</ul>

View File

@ -41,7 +41,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -134,7 +134,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -41,7 +41,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -158,7 +158,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -41,7 +41,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -158,7 +158,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -48,7 +48,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">

View File

@ -911,7 +911,7 @@ function fnShowVaViewPrintPopup() {
<tr>
<td colspan="2">
<div class="area_text">
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(010-8432-9333)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(1551-8011)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<p>- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.</p>
<p>- 카드사별 정책상 충전금액 제한이 있을 수 있습니다. 단, ARS 신용카드 결제는 충전금액 제한 없이 이용하실 수 있습니다.</p>
</div>

View File

@ -572,7 +572,7 @@ function getMberGrdChk() {
<tr>
<td colspan="2">
<div class="area_text">
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(010-8432-9333)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<%--<p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(1551-8011)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p>--%>
<p>- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.</p>
<p>- 카드사별 정책상 충전금액 제한이 있을 수 있습니다. 단, ARS 신용카드 결제는 충전금액 제한 없이 이용하실 수 있습니다.</p>
</div>

View File

@ -83,7 +83,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -236,7 +236,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -41,7 +41,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -197,7 +197,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -83,7 +83,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -242,7 +242,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -41,7 +41,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -199,7 +199,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -83,7 +83,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -236,7 +236,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -41,7 +41,7 @@
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -197,7 +197,7 @@
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -282,7 +282,7 @@
<li>평일 09:30~17:00 사이에 신청하신 경우 <strong>당일 처리를 원칙</strong>으로 하되, 파일의 상태, 용량 등에 따라 1~2일 정도 소요될 수 있습니다<strong>(주말 및 공휴일 처리 불가)</strong></li>
<li>첨부가능 파일 : xlsx, xls, hwp, litxt, doc, docx, csv(파일당 최대 용량 10MB)</li>
<li>주소록 등록 대행은 <strong>신규 그룹으로만 생성 가능</strong>합니다</li>
<li>긴급한 건은 010-8432-9333로 연락 주시기 바랍니다.</li>
<li>긴급한 건은 1551-8011로 연락 주시기 바랍니다.</li>
<li>엑셀파일에 비밀번호 설정, 수식 등이 설정되어 있는 경우 업로드가 불가합니다.</li>
</ul>
</c:when>
@ -392,7 +392,7 @@
<ul class="info_list adpop_cont" id="listTab2_2">
<li>견적서는 발행일로부터 30일간 유효합니다.</li>
<li>견적서는 결제방식, 옵션 등에 따라 차이가 발생할 수 있습니다. </li>
<li>대량발송의 경우 단가협의가 가능하오니 010-8432-9333로 문의 바랍니다.</li>
<li>대량발송의 경우 단가협의가 가능하오니 1551-8011로 문의 바랍니다.</li>
</ul>
</c:when>
<c:when test="${pageType == 'PayView'}">

View File

@ -45,7 +45,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -213,7 +213,7 @@ function f_print(){
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -45,7 +45,7 @@ function f_print(){
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 010-8432-9333</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
@ -209,7 +209,7 @@ function f_print(){
<tbody>
<tr>
<th>대표번호</th>
<td>010-8432-9333</td>
<td>1551-8011</td>
</tr>
<tr>
<th>이메일</th>

View File

@ -66,7 +66,7 @@
첫결제 이벤트 잔액이 남아 있더라도 1회 발송 문자수량 및 금액이 이벤트 잔액보다 큰 경우 문자가 발송되지 않으며, 이 경우 이벤트 잔액 이하의 금액으로 문자 수량을 조정해야 문자가 정상 발송됩니다.
Q. [결제] 첫결제 이벤트 후 추가 결제를 진행하였는데 잔액 부족으로 문자 발송이 안되는 경우는 왜 그런건가요?
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(010-8432-9333)로 문의주시면 즉시 처리 도와드리겠습니다.
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(1551-8011)로 문의주시면 즉시 처리 도와드리겠습니다.
Q. [장문·단문·그림문자] 한 번 보낸 문자를 저장해서 계속 보낼 수 있나요?
문자온은 “내문자함” 기능을 제공하기 때문에 한 번 보낸 문자를 저장해서 계속 보낼 수 있습니다.문자전송 페이지에서 문자내용 작성 후 [문자저장] 버튼을 클릭하면 해당 문자가 [내문자함]에 보관되어 언제든지 자유롭게 재발송이 가능합니다.
@ -81,7 +81,7 @@
위임장 양식은 [마이페이지] → [발신번호 관리]에서 다운로드 가능하며 발신번호 명의자를 위임자, 문자온 이용자를 수임자(대리인)로 작성하여 제출해주시면 됩니다.
Q. [기타] 문자온 이용 중 버튼이 안눌러지는 등 장애나 오류가 발생한 경우에는 어떻게 해야 하나요?
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(010-8432-9333)로 연락주시면 빠른 처리 도와드리겠습니다.
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(1551-8011)로 연락주시면 빠른 처리 도와드리겠습니다.
Q. [기타] 투넘버 또는 투폰 이용 시 발신번호 등록이 가능한가요?
투넘버 및 투폰 번호의 경우 두 번째 번호는 가상의 번호인 관계로 이동통신사 및 가입 유형에 따라 본인 인증이 불가할 수 있습니다. 이 경우 고객님께서 가입하신 통신사를 통해 본인 인증 가능여부 확인 후 등록 신청을 진행해주시기 바랍니다.
@ -283,7 +283,7 @@
<div class="qna_answer">
<p class="answer_text">A.</p>
<p class="answer_cont">
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(010-8432-9333)로 문의주시면 즉시 처리 도와드리겠습니다.
첫결제 이벤트 캐시가 남아 있는 경우에는 이벤트 캐시 전액 소진 후 추가결제에 따른 일반캐시 이용이 가능합니다. 이벤트 캐시 잔액만큼 문자를 선 발송하여 이벤트 캐시 전액 소진 후 자동 전환된 일반캐시를 사용하거나, 문자온 고객센터(1551-8011)로 문의주시면 즉시 처리 도와드리겠습니다.
</p>
</div>
@ -368,7 +368,7 @@
<div class="qna_answer">
<p class="answer_text">A.</p>
<p class="answer_cont">
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)<br>만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(010-8432-9333)로 연락주시면 빠른 처리 도와드리겠습니다.
문자온은 크롬, 엣지, 네이버 웨일 등의 웹브라우저에 최적화되어 있으며, 인터넷 익스플로러를 지원하지 않습니다.(마이크로소프트사 인터넷 익스플로러 서비스 종료)<br>만약 인터넷 익스플로러 이외의 브라우저 사용 중 장애 발생 시 문자온 고객센터(1551-8011)로 연락주시면 빠른 처리 도와드리겠습니다.
</p>
</div>

View File

@ -308,8 +308,8 @@ function displayJsonToHtmlTable02(jsonData){
else
{
// 기타변수는 50자리 까지 입력
if(bodyData.length > 50){
alert("등록 변수["+bodyData+"] \n기타 변수에는 50자리 까지 입력이 가능합니다.");
if(bodyData.length > 100){
alert("등록 변수["+bodyData+"] \n기타 변수에는 100자리 까지 입력이 가능합니다.");
lengthCheck = false;
break;
}

View File

@ -209,8 +209,8 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border:
/* footer 고객센터 */
.footer .footer_body .footer_service_center {overflow:hidden;position:absolute;right:0;top:50%;display:flex;height:90px;background:#fff;border-radius:10px;transform:translateY(-50%);}
.footer .footer_body .footer_service_center dt {width:65px;padding:55px 0 0;font-size:14px;font-weight:500;text-align:center;color:#222;background:url(/publish/images/footer_serive_center.png) #ffcc33 no-repeat center 12px;}
.footer .footer_body .footer_service_center dd {padding:11px 10px 0 13px;}
.footer .footer_body .footer_service_center dd p {font-size:17px;font-weight:700;line-height:24px;letter-spacing:-0.01em;color:#304b8f;}
.footer .footer_body .footer_service_center dd {padding:22px 10px 0 13px;}
.footer .footer_body .footer_service_center dd p {font-size:21px;font-weight:700;line-height:24px;letter-spacing:-0.01em;color:#304b8f;}
.footer .footer_body .footer_service_center dd span {font-size:13px;color:#666;letter-spacing:-0.02em;}
@ -266,7 +266,7 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border:
.quickMenu .hover_cont {width: 80px;position: absolute;height: auto;background-color: #fff;box-shadow: 0px 0px 10px 4px rgba(0,0,0,0.1);padding: 8px;border: 1px solid #d5d5d5; border-radius: 5px; font-size: 14px;top:18px; right: 45px;z-index: 1;line-height: 1.3;display: none;}
.quickMenu .cscenter .hover_cont {display:none;top:inherit;bottom:-49px;right:90px;width:220px;height:auto;padding:19px 0 19px 15px;letter-spacing:-0.05em;text-align:left;border:1px solid #e5e5e5;background:#fff;border-radius:5px;box-sizing:border-box;box-shadow:0px 3px 10px 0px rgba(0, 0, 0, 0.2);}
.quickMenu .cscenter .hover_cont .title {height:26px;padding:0 0 0 35px;font-size:16px;font-weight:500;line-height:24px;background:url(/publish/images/icon_qucik_cscenter.png) no-repeat left top;}
.quickMenu .cscenter .hover_cont .number {margin:2px 0 0;font-size:25px;font-weight:700;color:#002c9a;}
.quickMenu .cscenter .hover_cont .number {margin:2px 0 0;font-size:30px;font-weight:700;color:#002c9a;}
.quickMenu .cscenter .hover_cont .email {margin:2px 0;font-size:14px;font-weight:300;color:#666;}
.quickMenu .cscenter .hover_cont ul {margin:7px 15px 0 0;padding:6px 0 12px 9px;background:#f5f5f5;border-radius:5px;}
.quickMenu .cscenter .hover_cont ul li {font-size:14px;line-height:22px;color:#444;}

View File

@ -2035,7 +2035,7 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.send_top .resultcont_left {max-width: 800px;flex-basis: 68%;}
.send_top .resultcont_left .table_btn {margin:-5px 0 0 0;}
.send_top .resultcont_left {max-width: 800px;flex-basis: 68%;}
.send_top .resultcont_left .table_btn_left .excel_btn.btnType {color:129738;}
.send_top .resultcont_left .table_btn_left .excel_btn.btnType {color:#129738;}
.send_top .resultcont_left .table_btn_right_txt {padding:5px 0 0 0;font-size:14px; font-weight:500;}
/* 발송결과 상세 */
@ -2097,6 +2097,34 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.send_top .resultcont_right .phone .text_preview .preiew_img .img_box img {width: 100%;}
/* .send_top .resultcont_right .phone .text_preview .preiew_img .img_box.on_scroll_img {max-width: 95% !important; margin-right: 15px;} */
/* 알림톡 미리보기 */
.send_top .resultcont_right .phone_kakao {width: 374px; position: absolute; right:0; top: 0;}
.send_top .resultcont_right .phone_kakako .phoneIn{height: 690px; width:340px; background-image: url(/publish/images/content/kakaoBg.png); padding: 27px 25px 0 25px;}
.send_top .resultcont_right .phone_kakako .prev_p{padding: 0 0 0 10px; border: 0; letter-spacing: -0.25px;}
.send_top .resultcont_right .phone_kakako .prev_p img{margin: 0 10px 0 0;}
.send_top .resultcont_right .phone_kakako .allimtalk_title{position: relative; width: calc(100% - 20px); background-color: #fae100; font-family: 'LotteMartDream'; font-size: 18px; padding: 12px 21px; border-radius: 5px 5px 0 0; box-sizing: border-box;}
.send_top .resultcont_right .phone_kakako .allimtalk_title::after{position: absolute; content: " "; width: 42px; height: 42px; background: url(/publish/images/content/icon_kakao01.png) no-repeat; right: -20px; top: -10px;}
.send_top .resultcont_right .phone_kakako .allimtalk_title img{margin: 0 8px 0 0; vertical-align: bottom;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview{width: 100%; padding: 15px 10px 20px 12px; margin: 15px 0 0 0; box-sizing: border-box;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content{width: calc(100% - 20px);background-color: #fff; border-radius: 0 0 5px 5px; padding: 0 0 10px 0;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .kakao_image img{width: 100%;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content p{width: calc(100% - 20px); white-space: normal; word-break: break-all; line-height: 1.4; padding: 0 10px; margin: 0 auto;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .template_text,.resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .emphasis_title_text{font-size: 16px; font-weight: 500; color: #222;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .emphasis_side_text{padding: 15px 0 0 0;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .emphasis_title_text{padding: 0 0 15px 0; border-bottom: 1px solid #e5e5e5;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .emphasis_side_text,.resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .side_info_text,.resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .channel_info_text{font-size: 14px; color: #999; margin: 0 auto 6px auto; white-space: normal; word-break: break-all;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .template_text{padding: 15px 0 0 0;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .side_info_text{padding: 8px 0 0 0;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .channel_info_text{padding: 0 0 4px 0;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content button{margin: 0 0 8px 10px;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content button:last-child{margin-bottom: 0;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .template_text+.btn_kakao_type{margin-top: 8px;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .btn_kakao_channel{width: calc(100% - 20px); height: 40px; font-size: 15px; border-radius: 5px; background-color: #ffea00;}
.send_top .resultcont_right .phone_kakako .phoneIn .text_preview .allimtalk_content .btn_kakao_type{width: calc(100% - 20px); height: 40px; font-size: 15px; border-radius: 5px; background-color: #ededed;}
.send_top .resultcont_right .phone_kakako .phoneIn .template_info_wrap{display: flex; width: calc(85% + 13px); height: auto; padding: 6px 15px 6px 23px; justify-content: space-between; align-items: center; background-color: #fae100; margin: -5px 0 0 -3px; border-radius: 0 0 25px 25px;}
.send_top .resultcont_right .phone_kakako .phoneIn .template_info_wrap .btn_template_choice{width: 120px; height: 36px; font-size: 16px; color: #fae100; background-color: #302218; border-radius: 5px;}
.send_top .resultcont_right .phone_kakako .addText{color: #002c9a;text-align: center; font-size: 14px; padding-top: 2px; margin:10px 0 10px 0;}
.btn_list_type1 {border-top:solid 1px #e5e5e5; text-align: right; padding:26px 0 0 0; margin:60px 0 0 0;}
.btn_list_type1 .btnType.btnType17 {width:100px; }

View File

@ -38,7 +38,7 @@
.est_table2_wrap {border-radius: 5px; border: 1px solid #ccc; margin-top: 5px;}
.est_table2 {width: 100%;border:1px solid #ccc;border-radius:5px;}
.est_table2 thead tr {background-color: #f2f2f2; border-bottom: 1px solid #ccc;}
.est_table2 thead th {height: 33px; line-height: 33px; font-size: 13px; border-left: 1px solid #ccc;}
.est_table2 thead th {height: 33px; line-height: 33px; font-size: 13px; border-left: 1px solid #ccc; font-weight:500;}
.est_table2 thead th:first-child {border-left: 0; /* border-radius: 5px 0 0 0 */}
.est_table2 thead th:last-child {/* border-radius: 0 5px 0 0 */}
.est_table2 tbody tr {border-bottom: 1px solid #ccc; text-align: center;}
@ -51,6 +51,9 @@
.est_table2 tbody tr:last-child td:last-child {border-radius: 0 0 5px 0;}
.est_table2 tbody tr:last-child th,
.est_table2 tbody tr:last-child td {border-bottom:1px solid #ccc;}
.est_table2 tfoot tr{border-top:3px double #d8d8d8;}
.est_table2 tfoot tr th, .est_table2 tfoot tr td {height: 33px; line-height: 33px; font-size: 13px; border-left: 1px solid #ccc;}
.est_table2 tfoot tr th{background:#f5f5f5;font-weight:500;}
/* 합계 */
.est_table2 tbody tr.total_price td {border-top: 1px solid #d7d7d7; border-left:0; border-right: 1px solid #d7d7d7; background-color: #f2f2f2;}
.est_table2 tbody tr.total_price td:first-child {border-radius: 0 0 0 5px;}
@ -146,3 +149,22 @@
.cont4.account table tbody tr{border-bottom: 0;}
.cont4.account table tbody tr .acc_te{padding: 20px 0 0 0; text-align: center;}
/* // 가상계좌 확인서 */
/* 문자온 KISA 신고 관리대장(시작) */
.kisa_management::after{background:none;}
.kisa_table table{width:100%;border-top:2px solid #000;text-align:left;font-size:14px;vertical-align:middle;}
.kisa_table table tr{border-bottom:1px solid #d5d5d5;}
.kisa_table table th{height:25px;background:#efefef;padding:10px 0 0 10px;font-weight:500;}
.kisa_table table th[rowspan]{writing-mode:vertical-lr;border-right:1px solid #d5d5d5;}
.kisa_table table td{text-align:center;padding:10px;}
.kisa_table table .bgYellow{background:orange}
.kisa_table table input+label{margin:0 0 0 4px;vertical-align:middle;}
.kisa_table table td span{font-size:13px;line-height:1.4;}
.kisa_table .sub_table table thead th{text-align:center;border-right:1px solid #d5d5d5;}
.kisa_table .sub_table table thead th:last-child{border-right:0;}
.kisa_table .sub_table table tbody tr td{border-right:1px solid #d5d5d5;}
.kisa_table .sub_table table tbody tr td:last-child{border-right:0;}
.kisa_table tfoot .date{margin:20px 0 0 0;font-size:16px;}
.kisa_table tfoot img{margin:50px;}
/* 문자온 KISA 신고 관리대장(끝) */

View File

@ -178,10 +178,10 @@
.main_cont3 .service_center .tablet {background-image: url(/publish/images/main/serive_tablet.png);background-repeat: no-repeat;height: 300px;color: #222;font-weight: 300;}
.main_cont3 .service_center .tablet>div {padding: 15px 30px 0 30px;}
.main_cont3 .service_center .tablet .service_center_title {position: relative;padding-left: 126px;}
.main_cont3 .service_center .tablet .service_center_title::after {position: absolute;content: "";background-image: url(/publish/images/main/serviceCenter.png);width: 90px;height: 90px;top: 11px;left: 12px;}
.main_cont3 .service_center .tablet .service_center_title p {font-size: 32px;font-weight: 700; color: #23428b;padding-bottom: 10px; letter-spacing: -1px;line-height:35px;}
.main_cont3 .service_center .tablet .service_center_title::after {position: absolute;content: "";background-image: url(/publish/images/main/serviceCenter.png);width: 90px;height: 90px;top: -11px;left: 12px;}
.main_cont3 .service_center .tablet .service_center_title p {margin: 0 0 0 -3px; font-size: 32px;font-weight: 700; color: #23428b;padding-bottom: 10px; letter-spacing: -1px;line-height:35px;}
.main_cont3 .service_center .tablet .service_center_title span {font-size: 17px;font-weight: 300; }
.main_cont3 .service_center .tablet .serive_info {background-image: url(/publish/images/main/serviceCenter_text.png);background-repeat: no-repeat;height: 71px;margin: 15px 0;}
.main_cont3 .service_center .tablet .serive_info {background-image: url(/publish/images/main/serviceCenter_text.png);background-repeat: no-repeat;height: 71px;margin: 27px 0 15px 0;}
.main_cont3 .service_center .tablet .serive_info p{line-height: 1.5;padding: 13px 18px;font-size: 16px; font-weight: 400;}
.main_cont3 .service_center .tablet .serive_btn {text-align: center;display: flex;height: 47px;}
.main_cont3 .service_center .tablet .serive_btn li {display: inline-block;width: calc(100% - 2px /3);border: 1px solid #d5d5d5;margin-left: -1px; box-sizing: border-box;}
@ -237,7 +237,7 @@
.main_cont3 .service_center .tablet>div {padding: 15px 20px 0 20px;}
.main_cont3 .service_center .tablet .serive_info{background-size: 100% 100%}
.main_cont3 .service_center .tablet .serive_info p{padding: 13px 10px 13px 23px; font-size: 15px}
.main_cont3 .service_center .tablet .service_center_title p {font-size: 28px;}
/*.main_cont3 .service_center .tablet .service_center_title p {font-size: 28px;}*/
/* 광고배너 */
.main_cont4 .inner{padding: 0 70px; box-sizing: border-box;}
.main_cont4 .inner img{width: 100%;}
@ -289,7 +289,7 @@
/* content3 */
.main_cont3 .inner>div {flex-basis: calc(100%/3 - 10px);}
.main_cont3 .service_center .tablet .serive_info p {padding: 13px 11px;}
.main_cont3 .service_center .tablet .service_center_title p {font-size: 26px;}
.main_cont3 .service_center .tablet .service_center_title p {font-size: 30px;}
.main_cont3 .service_center .tablet .service_center_title span {font-size:15px;}
/* 광고배너 */
.main_cont4 .inner li{width: calc((100%/4) - 15px);}

View File

@ -19,7 +19,8 @@
<p>***<span class="font2"> (보드)</span> : 반복적으로 사용</p> -->
<ul class="page">
<li><a href="/publish/textingmsg_2024_list.html">textingmsg_2024_list.html</a>[개선] 발송결과 : 문자 및 카카오톡 문구,진행상황,테이블 수정</li>
<li><a href="/publish/textingmsg_2024_detail.html">textingmsg_2024_detail.html</a>[개선] 발송결과 상세 : 문자화면 (카카오톡은 기획중)</li>
<li><a href="/publish/textingmsg_2024_detail.html">textingmsg_2024_detail.html</a>[개선] 발송결과 상세 : 문자화면</li>
<li><a href="/publish/textingmsg_2024_detail_kakao.html">textingmsg_2024_detail_kakao.html</a>[개선] 발송결과 상세 : 카카오 알림톡화면</li>
<li><a href="/publish/payment6.html">payment6.html</a>후불회원 : 결제관리 > 요금사용내역</li>
<li><a href="/publish/sub_election_2023.html">sub_election_2023.html</a>선거문자</li>
<li><a href="/publish/publish_text/send_text.html">send_text.html</a>문자보내기</li>

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -0,0 +1,237 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>문자온 KISA 신고 관리대장</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
<style>
*{margin:0;padding:0;border:0;font-family:'Noto Sans KR', sans-serif;box-sizing:border-box;vertical-align: baseline;color: inherit;font-weight: inherit;word-break: keep-all;}
ul,li{list-style:none;}
table{border-collapse:collapse;border-spacing:0;}
select, input {vertical-align: middle;}
.estimate_wrap {width: 820px; margin: 0 auto; position: relative; color: #222; letter-spacing: -0.5px;}
.estimate_wrap::after {content: ""; background-color: #e5e5e5; width: 100%; height: 117px; position: absolute; top: 0; left: 0; z-index: -1;}
.estimate {padding: 0 67px; box-sizing: border-box;}
.est_body {padding: 30px 0 25px 0; box-sizing: border-box;}
.est_body h2 {font-size: 35px; font-weight: 700; text-align: center;}
.stamp {position: absolute; top: 79px; right: 70px;}
/* 문자온 KISA 신고 관리대장(시작) */
.kisa_management::after{background:none;}
.kisa_table table{width:100%;border-top:2px solid #000;text-align:left;font-size:14px;vertical-align:middle;}
.kisa_table table tr{border-bottom:1px solid #d5d5d5;}
.kisa_table table th{height:25px;background:#efefef;padding:10px 0 0 10px;font-weight:500;}
.kisa_table table th[rowspan]{writing-mode:vertical-lr;border-right:1px solid #d5d5d5;}
.kisa_table table td{text-align:center;padding:10px;}
.kisa_table table .bgYellow{background:orange}
.kisa_table table input+label{margin:0 0 0 4px;vertical-align:middle;}
.kisa_table table td span{font-size:13px;line-height:1.4;}
.kisa_table .sub_table table thead th{text-align:center;border-right:1px solid #d5d5d5;}
.kisa_table .sub_table table thead th:last-child{border-right:0;}
.kisa_table .sub_table table tbody tr td{border-right:1px solid #d5d5d5;}
.kisa_table .sub_table table tbody tr td:last-child{border-right:0;}
.kisa_table tfoot .date{margin:20px 0 0 0;font-size:16px;}
.kisa_table tfoot img{margin:50px;}
.est_btn_wrap {margin: 30px auto 40px auto; text-align: center;}
.est_btn_wrap button {width: 120px; height: 42px; border-radius: 5px; border: 1px solid #ccc; font-size: 16px; color: #555;}
.est_btn_wrap button:nth-child(2) {margin: 0 3px 0 1px;}
.btnType {text-align: center;font-size: 16px;border-radius: 5px;}
.btnType:hover {box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);}
button.print_btn {border: 1px solid #b1b1b1; color: #555;}
i.print_img {display:inline-block;background-image: url(/publish/images/content/print_icon.png); background-position:center center;width: 15px;height: 15px;margin:0 3px 1px 0;vertical-align:middle;}
.est_btn_wrap button i.pdf_img {margin: 0 3px 0 0;}
.est_btn_wrap button i.print_img {margin: 0 5px 1px 0;}
/* 문자온 KISA 신고 관리대장(끝) */
</style>
</head>
<body>
<!-- 견적서 -->
<div class="estimate_wrap kisa_management">
<div class="estimate">
<div class="est_body">
<h2>문자온 KISA 신고 관리대장</h2>
</div>
<div class="kisa_table">
<table>
<colgroup>
<col style="width:5%;">
<col style="width:15%;">
<col style="width:30%;">
<col style="width:15%;">
<col style="width:30%;">
</colgroup>
<tbody>
<tr>
<th colspan="2">관리번호</th>
<td colspan="3">
<b>2021-01-1-0262</b>
</td>
</tr>
<tr>
<th rowspan="6">요청사항</th>
<th>요청일시</th>
<td class="bgYellow">2024-07-20, 09:23</td>
<th>요청형태</th>
<td>
<ul style="display:flex;gap:10px;align-items:center;justify-content:center;">
<li><input type="checkbox" id="email"><label for="email">이메일</label></li>
<li><input type="checkbox" id="phone"><label for="phone">전화</label></li>
<li><input type="checkbox" id="fax"><label for="fax">팩스</label></li>
</ul>
</td>
</tr>
<tr>
<th>기관</th>
<td>다우기술</td>
<th>요청부서</th>
<td>메세징사업1팀</td>
</tr>
<tr>
<th>담당자</th>
<td>장지윤 차장</td>
<th>연락처</th>
<td>010-8760-0640</td>
</tr>
<tr>
<th>이메일</th>
<td>abcd@naver.com</td>
<th>비고</th>
<td>-</td>
</tr>
<tr>
<th>요청내역</th>
<td class="bgYellow" colspan="4" style="text-align:left;">
<ul class="request_history">
<li>
<p>· KISA 신고 접수 건 전달 및 광고표기 준수 안내 요청</p>
<span style="padding:6px 0 0 10px;">- 개인 고객 스팸 신고(3건) 및 KISA 스팸 분류</span>
</li>
</ul>
</td>
</tr>
<tr>
<th>발송문구</th>
<td colspan="4">
<div class="sub_table">
<table>
<colgroup>
<col style="width:35%;">
<col style="width:65%;">
</colgroup>
<thead>
<tr>
<th>아이디</th> &ensp;
<th>문자내용</th>
</tr>
</thead>
<tbody>
<tr>
<td class="bgYellow">dfkajdkfjal</td>
<td class="bgYellow">오늘 인터넷 dkfjadlkfjadlkfjadfkljadfaㅇ</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
<tr>
<th rowspan="4">처리내역</th>
<th>처리일시</th>
<td>2024-07-20, 09:23</td>
<th>회신형태</th>
<td>
<ul style="display:flex;gap:10px;align-items:center;justify-content:center;">
<li><input type="checkbox" id="email"><label for="email">이메일</label></li>
<li><input type="checkbox" id="phone"><label for="phone">전화</label></li>
<li><input type="checkbox" id="fax"><label for="fax">팩스</label></li>
</ul>
</td>
</tr>
<tr>
<th>처리부서</th>
<td>경영기획팀</td>
<th>담당자</th>
<td>정다은 대리</td>
</tr>
<tr>
<th>연락처</th>
<td>-</td>
<th>이메일</th>
<td>abcd@naver.com</td>
</tr>
<tr>
<th>처리내역</th>
<td colspan="4">
<div class="sub_table">
<table>
<colgroup>
<col style="width:35%;">
<col style="width:65%;">
</colgroup>
<thead>
<tr>
<th>아이디</th>
<th>문자내용</th>
</tr>
</thead>
<tbody>
<tr>
<td>dfkajdkfjal</td>
<td>오늘 인터넷 dkfjadlkfjadlkfjadfkljadfaㅇ</td>
</tr>
</tbody>
</table>
<p style="margin:10px 0 0 0;text-align:left;font-size:13px;">(주)다우기술 해당 ID KISA 광고규정 및 수신동의 안내 문자 발송 등 조치내용 송부(24.07.22 메일)</p>
</div>
</td>
</tr>
<tr>
<th rowspan="3">첨부</th>
<th>첨부1</th>
<td colspan="3" style="text-align:left;">
· 다우기술 요청 메일 1부
</td>
</tr>
<tr>
<th>첨부2</th>
<td colspan="3" style="text-align:left;">
· 다우기술 요청 메일 1부
</td>
</tr>
<th>첨부3</th>
<td colspan="3" style="text-align:left;">
· 다우기술 요청 메일 1부
</td>
</tbody>
<tfoot>
<tr>
<td colspan="5">
<p class="date">2024년 07월 22일</p>
<img src="/publish/images/itn_logo_black.png" alt="" style="width:150px">
</td>
</tr>
</tfoot>
</table>
</div>
<div class="est_btn_wrap">
<button type="button" class="btnType" onclick="window.print();"><i class="print_img"></i>인쇄하기</button>
</div>
</div>
</div>
<!--// 견적서 -->
</body>
</html>

View File

@ -0,0 +1,767 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>문자온_발송결과</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap"
rel="stylesheet">
<link rel="stylesheet" href="/publish/css/reset.css">
<link rel="stylesheet" href="/publish/css/jquery.mCustomScrollbar.css">
<link rel="stylesheet" href="/publish/css/common.css">
<link rel="stylesheet" href="/publish/css/button.css">
<link rel="stylesheet" href="/publish/css/content.css">
<link rel="stylesheet" href="/publish/css/mem.css">
<link rel="stylesheet" href="/publish/css/font.css">
<link rel="stylesheet" href="/publish/css/popupLayer.css">
<link rel="stylesheet" href="/publish/js/datepicker/classic.css">
<link rel="stylesheet" href="/publish/js/datepicker/classic.date.css">
<script src="/publish/js/jquery-3.5.0.js"></script>
<script src="/publish/js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="/publish/js/common.js"></script>
<script src="/publish/js/content.js"></script>
<script src="/publish/js/popupLayer.js"></script>
<script type="text/javascript" src="/publish/js/datepicker/picker.js"></script>
<script type="text/javascript" src="/publish/js/datepicker/picker.date.js"></script>
<script type="text/javascript" src="/publish/js/datepicker/ko_KR.js"></script>
<script>
$(document).ready(function () {
$(".table_tab_wrap .tab_depth1 a").click(function () {
var tab_num = $(this).index();
$(".table_cont .tb_wrap").eq(tab_num).show();
$(".table_cont .tb_wrap").eq(tab_num).siblings(".tb_wrap").hide();
if($(".table_tab_wrap .tab_depth1 a:visible").length == tab_num+1){
$(this).css("border-radius","0 5px 5px 0");
}else{}
})
});
</script>
</head>
<body>
<div class="mask"></div>
<!-- 220411 이통사 스팸차단 및 번호도용 방지 서비스 안내 팝업 -->
<div class="tooltip-wrap">
<div class="popup-com ad_layer popupJunk" tabindex="0" data-tooltip-con="popupJunk" data-focus="popupJunk" data-focus-prev="popupJunk-close" style="width: 795px;">
<div class="popup_heading">
<p>이통사 스팸차단 및 번호도용 방지 서비스 안내</p>
<button type="button" class="tooltip-close" data-focus="popupJunk-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<div class="list_tab_wrap2 type5">
<!-- tab button -->
<ul class="list_tab">
<li class="tab active"><button type="button" onclick="listTab2(this,'1');">이통사 스팸 필터링 서비스</button></li>
<li class="tab"><button type="button" onclick="listTab2(this,'2');">번호도용 문자차단 서비스</button></li>
</ul><!-- // tab button -->
</div>
<!-- 광고문자 전송규정 안내 -->
<div class="adpop_cont current" id="listTab2_1">
<div class="titBox">
<div class="notibox">한국인터넷진흥원 불법스팸대응센터에서 스팸종합대책을 마련함에 따라,<br>각 통신사에서 스팸차단서비스라는 서비스를 진행하고 있습니다.</div>
<p>- 스팸차단서비스는 이동통신사의 별도 조합 기준에 따른 스팸확률에 의한 차단으로 스팸으로 판단되는 문자를</p>
<p>&nbsp; 휴대폰 문자수신함이 아닌, 각 통신사별 스팸보관함에 전송한 후 결과값은 성공을 처리합니다(정상과금 처리)</p>
<p>- 스팸문자로 저장된것이 확인되었다면, 스팸차단서비스를 해제하여 이용하시기 바랍니다.</p>
<p>&nbsp; (개인정보보호정책으로 인해 본인 이외 타인은 확인 불가하므로, 본인이 직접 확인해야합니다.)</p>
</div>
<div class="adpop1_bottom">
<p class="title_box"><span>01.</span>통신사 홈페이지를 통해 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
<div class="content_box">
<ul class="list">
<li class="tit">
<ul>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency001.png" alt="SK telecom" /></div>
<a href="http://www.tworld.co.kr/normal.do?serviceId=S_PROD2001&viewId=V_PROD7070&prod_id=NA00002121&uCode=u1_2" target="_blank" rel="nosublink">T월드 문자 스팸필터링 바로가기</a>
</li>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency002.png" alt="olleh KT" /></div>
<a href="https://product.kt.com/wDic/productDetail.do?ItemCode=479" target="_blank" rel="nosublink">KT (안심)스팸차단 바로가기</a>
</li>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency003.png" alt="LG U+" /></div>
<a href="https://www.lguplus.com/plan/addon/addon-call-msg/LRZ0000277" target="_blank" rel="nosublink">U+ 스팸차단 바로가기</a>
</li>
</ul>
</li>
<li>
<dl>
<dt><img src="/publish/images/content/junk_agency001_01.png" alt="T world" /></dt>
<dd>
<p>Tworld<a href="https://www.tworld.co.kr" target="_blank" rel="nosublink">(www.tworld.co.kr)</a> 홈페이지 접속 → 로그인 → [스팸필터링] 검색<br>→ 부가서비스 - 문자 스팸필터링 → 설정 → SMS인증 → 스팸차단 메시지 확인</p>
</dd>
</dl>
</li>
<li>
<dl>
<dt><img src="/publish/images/content/junk_agency002_01.png" alt="olleh O" /></dt>
<dd>
<p>KT<a href="https://www.kt.com/" target="_blank" rel="nosublink">(www.kt.com)</a> 홈페이지 접속 → 로그인 →[스팸차단서비스] 검색<br>→ 스팸차단서비스 → 스팸메시지함 → 스팸차단 메시지 확인</p>
</dd>
</dl>
</li>
<li>
<dl>
<dt><img src="/publish/images/content/junk_agency003_01.png" alt="LG U+" /></dt>
<dd>
<p>U+<a href="https://www.uplus.co.kr" target="_blank" rel="nosublink">(www.uplus.co.kr)</a> 홈페이지 접속 → 로그인 → [스팸차단] 검색<br>→ 부가서비스 - 스팸차단 → 스팸내역 조회 → SMS인증 → 스팸차단 메시지 확인</p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="adpop1_bottom">
<p class="title_box"><span>02.</span>통신사 어플을 통해 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
<div class="content_box">
<ul class="list02">
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency01_02.png" alt="SKT" /></div>
<dl>
<dt>SKT · T스팸필터링</dt>
<dd>T Store, 구글 Play 스토어<br>다운가능</dd>
</dl>
</li>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency02_02.png" alt="KT" /></div>
<dl>
<dt>KT올레 · 올레스팸차단서비스</dt>
<dd>구글 Play 스토어 다운가능</dd>
</dl>
</li>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency03_02.png" alt="LG" /></div>
<dl>
<dt>LG U+ · U+ 스팸차단</dt>
<dd>구글 Play 스토어 다운가능</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="adpop1_bottom">
<p class="title_box"><span>03.</span>통신사 고객센터를 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
<div class="content_box">
<dl class="cscenter">
<dt>휴대폰 114 + 통화버튼</dt>
<dd>
<ul>
<li>· SKT 고객센터(1599-0011)</li>
<li>· KT올레 고객센터(100)</li>
<li>· LG U+ 고객센터(1544-0010)</li>
</ul>
</dd>
</dl>
</div>
</div>
</div><!-- // 광고문자 전송규정 안내 -->
<!-- 광고문자 수신동의 안내 -->
<div class="adpop_cont" id="listTab2_2">
<div class="titBox">
<div class="notibox">웹에서 발송되는 스팸, 스미싱 문자에 내 번호가 회신번호로 악용되는 것을 방지해주는 서비스로<br>해당 서비스에 가입된 경우 인터넷 문자 발송서비스를 통해 본인 휴대폰번호로 문자 발송시 차단됩니다</div>
<p>- 모든 전송 결과값이 실패로 확인되는 경우, 번호도용문자차단서비스에 가입여부 확인 후 해당서비스를 해지</p>
<p>&nbsp; 하신 후 전송하시기 바랍니다.</p>
</div>
<div class="adpop1_bottom">
<p class="title_box"><span>01.</span>통신사 홈페이지를 통해 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
<div class="content_box">
<ul class="list">
<li class="tit">
<ul>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency001.png" alt="SKT" /></div>
<a href="http://www.tworld.co.kr/normal.do?serviceId=S_PROD2001&viewId=V_PROD7070&prod_id=NA00004406&uCode=u1_2" target="_blank" rel="nosublink">T번호도용문자차단 바로가기</a>
</li>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency002.png" alt="KT" /></div>
<a href="https://product.kt.com/wDic/productDetail.do?ItemCode=1047" target="_blank" rel="nosublink">KT번호도용문자차단 바로가기</a>
</li>
<li>
<div class="img_box"><img src="/publish/images/content/junk_agency003.png" alt="Uplus" /></div>
<a href="https://www.lguplus.com/plan/addon/addon-call-msg/LRZ0002297" target="_blank" rel="nosublink">U+ 번호도용문자차단 바로가기</a>
</li>
</ul>
</li>
<li>
<dl>
<dt><img src="/publish/images/content/junk_agency001_01.png" alt="tworld" /></dt>
<dd>
<p>Tworld<a href="https://www.tworld.co.kr" target="_blank" rel="nosublink">(www.tworld.co.kr)</a> 홈페이지 접속 → 로그인<br>→ [번호도용문자차단] 검색 → 부가서비스 → 번호도용문자차단 → 해지</p>
</dd>
</dl>
</li>
<li>
<dl>
<dt><img src="/publish/images/content/junk_agency002_01.png" alt="kt" /></dt>
<dd>
<p>KT<a href="https://www.kt.com" target="_blank" rel="nosublink">(www.kt.com)</a> 홈페이지 접속 → 로그인<br>→ [번호도용문자차단] 검색 → 부가서비스 → 번호도용문자차단 → 해지</p>
</dd>
</dl>
</li>
<li>
<dl>
<dt><img src="/publish/images/content/junk_agency003_01.png" alt="LGuplus" /></dt>
<dd>
<p>U+<a href="https://www.uplus.co.kr" target="_blank" rel="nosublink">(www.uplus.co.kr)</a> 홈페이지 접속 → 로그인 → [번호도용문자차단] 검색<br>→ 부가서비스 → 번호도용문자차단 → 해지</p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="adpop1_bottom">
<p class="title_box"><span>02.</span>통신사 고객센터를 확인하는 방법<button type="button" class="view_button" onclick="popContentBoxView(this);"><i></i></button></p>
<div class="content_box">
<dl class="cscenter">
<dt>휴대폰 114 + 통화버튼</dt>
<dd>
<ul>
<li>· SKT 고객센터(1599-0011)</li>
<li>· KT올레 고객센터(100)</li>
<li>· LG U+ 고객센터(1544-0010)</li>
</ul>
</dd>
</dl>
</div>
</div>
</div><!-- // 광고문자 수신동의 안내 -->
</div>
<div class="popup_btn_wrap2" style="margin: 0 auto 30px auto;">
<button type="button" class="tooltip-close" data-focus="adr_popup01-close" data-focus-next="popup02">닫기</button>
</div>
</div>
</div>
<!-- //220411 이통사 스팸차단 및 번호도용 방지 서비스 안내 팝업 -->
<!-- 발송대상리스트 팝업 -->
<div class="tooltip-wrap">
<div class="popup-com ad_layer rev_popup04" tabindex="0" data-tooltip-con="rev_popup04" data-focus="rev_popup04" data-focus-prev="rev_popup04-close" style="width:595px;">
<div class="popup_heading">
<p>발송대상 리스트</p>
<button type="button" class="tooltip-close" data-focus="rev_popup04-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<div class="gorup_join_cont" style="margin:-15px 0 0 0;">
<div class="group_input">
<div class="input_left">템플릿명</div>
<div class="input_right type1">포토리뷰 안내요청</div>
</div>
</div>
<div class="popup_search_type1">
<label for="" class="label">검색종류 선택</label>
<select id="" class="selType2 select_btn">
<option value="1">수신번호</option>
<option value="2">이름</option>
<option value="3">상세결과</option>
</select>
<label for="" class="label">검색어입력</label>
<input type="text" class="send_text" id="" name="" value="" placeholder="3자 이상 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='3자 이상 입력하세요.'">
<button type="button" class="btnType btnType2" style="width:63px; margin:0;">검색</button>
</div>
<div class="tb_wrap" style="min-height:200px;">
<table class="tType4">
<colgroup>
<col style="width: 30%;">
<col style="width: 40%;">
<col style="width: 30%;">
</colgroup>
<thead>
<tr>
<th>이름
<div class="sort_wrap">
<input type="button" class="sort sortBtn">
</div>
</th>
<th>수신번호
<div class="sort_wrap">
<input type="button" class="sort sortBtn">
</div>
</th>
<th>상세결과
<div class="sort_wrap">
<input type="button" class="sort sortBtn">
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>홍길동</td>
<td>010-1234-5678</td>
<td>성공(카톡)</td>
</tr>
<tr>
<td>홍길동</td>
<td>010-1234-5678</td>
<td>성공(카톡)</td>
</tr>
<tr>
<td>홍길동</td>
<td>010-1234-5678</td>
<td>실패(카톡+문자)</td>
</tr>
<tr>
<td>홍길동</td>
<td>010-1234-5678</td>
<td>성공(문자)</td>
</tr>
<tr>
<td>홍길동</td>
<td>010-1234-5678</td>
<td>성공(문자)</td>
</tr>
<tr>
<td>홍길동</td>
<td>010-1234-5678</td>
<td>실패(카톡+문자)</td>
</tr>
<tr>
<td>홍길동</td>
<td>010-1234-5678</td>
<td>성공(카톡)</td>
</tr>
</tbody>
</table>
</div>
<div class="table_btn clearfix">
<div class="table_btn_left"></div>
<div class="table_btn_right">
<button type="button" data-tooltip="rev_popup02" class="btnType btnType14"><i class="add_img"></i>주소록 등록</button>
<button type="button" class="excel_btn btnType"><i class="downroad"></i>엑셀 다운로드</button>
</div>
</div>
<!-- pagination -->
<ul class="pagination">
<li class="page_first"><button><img src="/publish/images/content/page_first.png"
alt=""></button></li>
<li class="page_prev"><button><img src="/publish/images/content/page_prev.png"
alt=""></button></li>
<li class="on"><button>1</button></li>
<li><button>2</button></li>
<li><button>3</button></li>
<li><button>4</button></li>
<li><button>5</button></li>
<li><button>6</button></li>
<li><button>7</button></li>
<li><button>8</button></li>
<li><button>9</button></li>
<li><button>10</button></li>
<li class="page_next"><button><img src="/publish/images/content/page_next.png"
alt=""></button></li>
<li class="page_last"><button><img src="/publish/images/content/page_last.png"
alt=""></button></li>
</ul><!-- pagination -->
</div>
<div class="popup_btn_wrap2" style="margin: -40px auto 30px auto;">
<button type="button" class="tooltip-close" data-focus="adr_popup01-close" data-focus-next="popup02">닫기</button>
</div>
</div>
</div>
<!-- //발송대상 리스트 안내 팝업 -->
<!-- 그룹등록 팝업 data-tooltip:rev_popup02 -->
<div class="tooltip-wrap">
<div class="popup-com adr_layer rev_popup02" tabindex="0" data-tooltip-con="rev_popup02" data-focus="rev_popup02" data-focus-prev="rev_popup02-close" style="width: 500px;">
<div class="popup_heading">
<p>그룹등록</p>
<button type="button" class="tooltip-close" data-focus="rev_popup02-close"><img
src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
</div>
<div class="layer_in">
<div class="gorup_join_cont">
<p class="adr_pop_title">선택된 발송내역 전화번호를 그룹으로 등록합니다.</p>
<div class="group_input" style="margin-top: 0;">
<div class="input_left">그룹이름</div>
<div class="input_right">
<label for="" class="label">새 그룹명 입력</label>
<input type="text" placeholder="새 그룹명 입력" onfocus="this.placeholder=''"
onblur="this.placeholder='새 그룹명 입력'" class="inputLight">
</div>
</div>
<div class="popup_btn_wrap2">
<button type="button">저장</button>
<button type="button" class="tooltip-close" data-focus="rev_popup02-close"
data-focus-next="rev_popup02">취소</button>
</div>
</div>
</div>
</div>
</div>
<!--// 발송실패사유 팝업 -->
<!-- skip 메뉴 -->
<div class="skip_menu">
<a href="#cont" title="본문 바로가기" class="contGo">본문 바로가기</a>
</div>
<!--// skip 메뉴 -->
<!-- quick 메뉴 -->
<div class="quickMenu">
<div>
<p class="quick_title">QUICK<br>MENU</p>
<p class="quick_title2">QUICK</p>
<ul class="quickMenuIn">
<li>
<a href="/publish/index.html"><i class="quick1"></i><span>이용안내</span></a>
<div class="hover_cont">이용안내</div>
</li>
<li>
<a href="#"><i class="quick2"></i><span>채팅상담</span></a>
<div class="hover_cont">채팅상담</div>
</li>
<li>
<a href="#"><i class="quick3"></i><span>원격지원</span></a>
<div class="hover_cont">원격지원</div>
</li>
<li>
<a href="#"><i class="quick4"></i><span>맞춤제작</span></a>
<div class="hover_cont">맞춤제작</div>
</li>
<li>
<a href="#"><i class="quick5"></i><span>주소록 등록</span></a>
<div class="hover_cont">주소록 등록</div>
</li>
<li>
<a href="#"><i class="quick6"></i><span>엑셀 전송</span></a>
<div class="hover_cont">엑셀 대량전송</div>
</li>
<li>
<a href="#"><i class="quick7"></i><span>견적서</span></a>
<div class="hover_cont">견적서</div>
</li>
<li>
<a href="#"><i class="quick8"></i><span>결제</span></a>
<div class="hover_cont">결제</div>
</li>
<li>
<a href="#"><i class="quick9"></i><span>영수증/계산서</span></a>
<div class="hover_cont">영수증/계산서</div>
</li>
</ul>
<button type="button" class="goTop" title="맨 위로 이동">TOP<i></i></button>
</div>
</div>
<!--// quick 메뉴 -->
<!-- header 영역 -->
<header id="header" class="header">
<!-- header top 영역 -->
<div class="header_top">
<div class="inner">
<ul class="menu_left">
<li><a href="#"><i class="hdTop_fav"></i>즐겨찾기추가</a></li>
<li><a href="#"><i class="hdTop_mypage"></i>마이페이지</a></li>
<li><a href="#"><i class="hdTop_center"></i>고객센터</a></li>
</ul>
<ul class="menu_right">
<li><a href="#">충전하기</a></li>
<li class="SortLine"><a href="#">요금안내</a></li>
<li class="SortLine"><a href="#">이용안내</a></li>
<li class="SortLine"><a href="#">1:1고객상담</a></li>
</ul>
</div>
</div><!-- header top 영역 -->
<!-- header body 영역 -->
<div class="header_body">
<div class="inner table">
<h1 class="logo"><a href="/publish/index.html" alt="문자온 메인 바로가기"><img src="/publish/images/CI.png"
alt="문자온 CI"></a></h1>
<ul class="gnbWrap table_cell">
<li><a href="#">문자발송</a></li>
<li><a href="#">선거문자</a></li>
<li><a href="#">맞춤제작</a></li>
<li><a href="#">비즈톡</a></li>
<li><a href="#">주소록 관리</a></li>
<li><a href="#">발송결과</a></li>
<li><a href="#">예약관리</a></li>
<li><a href="#">결제내역</a></li>
</ul>
<div class="s_menu">
<i class="allSearch_info"><span>문자검색</span></i>
<button type="button" title="전체검색" class="allSearch" onclick="searchToggle();"><img
src="/publish/images/search.png" alt="검색영역 열기" class="allMenu"></button>
<button type="button" title="전체메뉴"><img src="/publish/images/all_menu.png" alt="전체메뉴 열기"></button>
</div>
</div>
<!-- search popup 영역 -->
<div class="pop_search">
<div class="inner">
<div class="area_search">
<select name="" id="">
<option value="">그림문자</option>
<option value="">단문문자</option>
<option value="">장문문자</option>
<option value="">GIF</option>
</select>
<input type="text" placeholder="문자샘플 검색하기">
<button><img src="/publish/images/search02.png" alt=""></button>
</div>
<div class="area_popular">
<p><i></i>인기검색어</p>
<ul class="popular_tag">
<li><a href="#">#정월대보름</a></li>
<li class="on"><a href="#">#추석</a></li>
<li><a href="#">#가을인사</a></li>
<li><a href="#">#좋은하루</a></li>
</ul>
</div>
<button class="btn_close" onclick="searchToggle();"><img src="/publish/images/btn_searchclose.png"
alt=""></button>
</div>
</div>
<!--// search popup 영역 -->
</div>
<!--// header body 영역 -->
<div id="login" class="login">
<div class="inner table">
<div class="login_left table_cell">
<div class="login_put">
<label for="id_text" class="label"></label>
<input type="text" placeholder="아이디를 입력해주세요" id="id_text" class="id_text" maxlength="30"
size="18">
<label for="password_text" class="label"></label>
<input type="password" placeholder="비밀번호를 입력해주세요" id="password_text" class="password_text"
maxlength="30" size="18">
<label for="login_button" class="label"></label>
<button type="submit" class="btnType btnType1" class="login_button">로그인</button>
</div>
<div class="login_save">
<input type="checkbox" id="save_id">
<label for="save_id">아이디 저장</label>
</div>
<div class="login_find">
<a href="#">아이디찾기 /</a>
<a href="#">비밀번호 찾기</a>
</div>
<div>
<button type="button" class="btnType btnType2">회원가입</button>
<button type="button" class="btnType btnType3">둘러보기</button>
</div>
</div>
<div class="login_right">
<span><i></i>이달의 이벤트</span>
<button type="button" class="btnType btnType4">바로가기</button>
</div>
</div>
</div>
<!--// login 영역 -->
</header>
<!--// header 영역 -->
<!-- login 영역 -->
<!-- content 영역 -->
<div id="container" class="cont sub">
<div class="inner">
<!-- send top -->
<div class="send_top">
<!-- 결제관리 - 요금 사용내역 -->
<div class="rev_admin_cont serv_content current">
<div class="heading">
<h2>발송결과 상세</h2>
<button type="button" class="button junk" data-tooltip="popupJunk" style="right:0;">통신사 스팸규격안내</button>
</div>
<!-- 발송결과 상세 및 미리보기-->
<div class="send_general">
<!-- 발송결과 상세 정보 -->
<div class="resultcont_left">
<!--발송정보-->
<div class="res_info">
<div class="res_info_in">
<div class="res_info_top clearfix">
<p>발송정보</p>
<p><button type="button" class="btnType btnType3">재전송</button></p>
</div>
<div class="res_info_btm">
<dl>
<dt>발송일시</dt>
<dd>2024-07-18 15:25</dd>
</dl>
<dl>
<dt>형태</dt>
<dd>그림</dd>
</dl>
<dl>
<dt>발송건수</dt>
<dd><span class="c_222">100</span></dd>
</dl>
<dl>
<dt>발신번호</dt>
<dd>010-1234-5678</dd>
</dl>
<dl>
<dt>예약관리</dt>
<!--<dd>-</dd>--><!-- 예약건이 아닌 경우는 하이픈 처리-->
<dd><button class="btnType btnType25">예약취소</button></dd>
<!--<dd>예약취소 2024-07-16 15:07</dd>--><!-- 예역취소 후 버튼 대신 취소 일시 노출 -->
</dl>
</div>
<div class="res_info_btm">
<dl>
<dt class="btm_charge">발송요금</dt>
<dd><span class="stcharge">100</span></dd>
<!--<dd><span class="stcharge">-</span>원</dd>--><!-- 예역취소 후 금액은 하이픈 처리-->
</dl>
</div>
</div>
</div>
<!--// 발송정보-->
<!--상세결과-->
<div class="res_info">
<div class="res_info_in">
<div class="res_info_top clearfix" style="padding:0 0 10px 0;">
<p>상세결과</p>
<p><button type="button" class="refresh_btn btnType"><i class="refresh_img"></i>새로고침</button></p>
</div>
<div class="res_num">
<div class="res_info_btm1">
<dl>
<dt>전체건수</dt>
<dd><a href="#" data-tooltip="rev_popup04"><span class="c_222_g">101</span>건(100%)</a></dd>
</dl>
</div>
<div class="res_info_btm1">
<dl>
<dt>성공건수</dt>
<dd><span class="c_002c9a_g">100</span>건(100%)</dd>
</dl>
</div>
</div>
<div class="res_num">
<div class="res_info_btm1">
<dl>
<dt>대기건수</dt>
<dd><span class="c_666_g">0</span>건(0%)</dd>
</dl>
</div>
<div class="res_info_btm1">
<dl>
<dt>실패건수</dt>
<dd><span class="c_e40000_g">1</span>건(100%)</dd>
</dl>
</div>
</div>
</div>
</div>
<!--// 발송결과-->
<div class="table_btn clearfix">
<div class="table_btn_left">
<button type="button" data-tooltip="rev_popup02" class="btnType btnType14"><i class="add_img"></i>주소록 등록</button>
<button type="button" class="excel_btn btnType"><i class="downroad"></i>엑셀 다운로드</button>
</div>
<div class="table_btn_right">
<p class="table_btn_right_txt">* 전체 건수를 클릭하면 받는 사람 상세정보를 확인하실 수 있습니다.</p>
</div>
</div>
</div>
<!--// 발송결과 상세 정보 -->
<!-- 발송결과 미리보기 -->
<div class="resultcont_right">
<!-- 카카오 알림톡 미리보기 -->
<div class="phone_kakako">
<div class="phoneIn">
<p class="prev_p"><img src="/publish/images/content/kakao_prev_icon.png" alt="">@munjaon</p>
<!-- 텍스트 미리보기 -->
<div class="text_preview">
<div class="allimtalk_title">
<img src="/publish/images/content/icon_allimtalk.png" alt="">알림톡 도착
</div>
<div class="allimtalk_content">
<!-- <div class="kakao_image"> -->
<!-- <img src="/publish/images/content/kakao_template_img.png" alt=""> -->
<!-- </div> -->
<p class="emphasis_side_text">강조표기 보조문구 미리보기</p>
<p class="emphasis_title_text">타이틀 미리보기</p>
<p class="template_text">내용미리보기</p>
<p class="side_info_text">부가정보내용</p>
<p class="channel_info_text">채널 추가 안내 메시지 미리보기</p>
<button type="button" class="btn_kakao_type">버튼명</button>
<button type="button" class="btn_kakao_type">버튼명</button>
<!-- <p class="emphasis_side_text">강조표기 보조문구 미리보기</p> -->
<!-- <p class="emphasis_title_text">타이틀 미리보기</p> -->
<!-- <p class="template_text">내용미리보기</p> -->
<!-- <p class="side_info_text">부가정보내용</p> -->
<!-- <p class="channel_info_text">채널 추가 안내 메시지 미리보기</p> -->
<!-- <button type="button" class="btn_kakao_type">버튼명</button> -->
<!-- <button type="button" class="btn_kakao_type">버튼명</button> -->
</div>
</div>
<!-- //텍스트 미리보기 -->
</div>
<p class="addText">※ 단말기 설정에 따라 다르게 보일 수 있습니다<p>
</div>
<!--// 카카오 알림톡 미리보기 -->
</div>
<!--// 발송결과 미리보기 -->
</div>
<!--// 발송결과 상세 및 미리보기-->
<!-- 목록-->
<div class="btn_list_type1">
<button class="btnType btnType17">목록</button>
</div>
<!--// 목록-->
</div>
</div>
<!--// send top -->
</div>
</div>
<!--// content 영역 -->
<!-- footer 영역 -->
<footer id="footer" class="footer">
<div class="footer_top">
<div class="inner table">
<ul class="table_cell">
<li><a href="#">이용약관</a></li>
<li class="SortLine fwRg c_white"><a href="#">개인정보취급방침</a></li>
<li class="SortLine fwRg c_white"><a href="#">스팸관리정책</a></li>
<li class="SortLine"><a href="#">불법스팸예방안내</a></li>
</ul>
</div>
</div>
<div class="footer_body">
<div class="inner table">
<div class="table_cell">
<a href="#" class="footer_logo"><img src="/publish/images/CI_white.png" alt="문자온 CI"></a>
<div class="footer_info">
<p>주소 : 경기도 남양주시 다산중앙로 19번길 21 1027호, 1028호(블루웨일 지식산업센터 1차)</p>
<p>사업자번호 : 653-87-00858 대표 : 유인식 통신판매등록번호 : 제 다산-12345호 문의전화 : 070-4786-0007</p>
<p>Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>
</div>
<div class="footer_service_center">
<i></i>
<div>
<p>고객센터</p>
<span class="footer_service_num">070-4786-0008</span>
<span>E-mail : help@iten.co.kr</span>
</div>
</div>
</div>
</div>
</div>
</footer>
<!--// footer 영역 -->
</body>
</html>

View File

@ -0,0 +1,279 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>거래명세서</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/publish/css/reset.css">
<link rel="stylesheet" href="/publish/css/common.css">
<link rel="stylesheet" href="/publish/css/estimate.css">
<link rel="stylesheet" href="/publish/css/font.css">
<link rel="stylesheet" href="/publish/css/button.css">
</head>
<body>
<!-- 견적서 -->
<div class="estimate_wrap">
<div class="estimate">
<div class="est_head clearfix">
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
<h2>거래명세서<span style="font-size:20px;font-weight:400;">(공급받는자 보관용)</span></h2>
<div class="cont1 tb_ver2" style="display:flex;">
<div style="width:calc((100% - 40px)/2);">
<p>공급받는 자</p>
<table class="est_table">
<caption>등록번호, 상호, 성명, 전화번호, 이메일 정보 제공</caption>
<colgroup>
<col style="width: 60px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>등록번호</th>
<td>123-45-67890</td>
</tr>
<tr>
<th style="letter-spacing:-0.69px;">&ensp;&ensp;&ensp;&nbsp;&nbsp;</th>
<td>주식회사 OOO</td>
</tr>
<tr>
<th style="letter-spacing:-0.69px;">&ensp;&ensp;&ensp;&nbsp;&nbsp;</th>
<td>홍길동</td>
</tr>
<tr>
<th>전화번호</th>
<td>02-000-1111</td>
</tr>
<tr>
<th style="letter-spacing:-0.85px;">&ensp;&ensp;</th>
<td>hgd@gmail.com</td>
</tr>
</tbody>
</table>
</div>
<div style="width:calc((100% - 40px)/2);">
<p>공급자</p>
<img src="/publish/images/content/stamp.png" alt="도장" class="stamp mCS_img_loaded">
<table class="est_table">
<caption>등록번호, 상호, 성명, 전화번호, 이메일 정보 제공</caption>
<colgroup>
<col style="width: 60px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>등록번호</th>
<td>123-45-67890</td>
</tr>
<tr>
<th style="letter-spacing:-0.69px;">&ensp;&ensp;&ensp;&nbsp;&nbsp;</th>
<td>주식회사 OOO</td>
</tr>
<tr>
<th style="letter-spacing:-0.69px;">&ensp;&ensp;&ensp;&nbsp;&nbsp;</th>
<td>홍길동</td>
</tr>
<tr>
<th>전화번호</th>
<td>02-000-1111</td>
</tr>
<tr>
<th style="letter-spacing:-0.85px;">&ensp;&ensp;</th>
<td>hgd@gmail.com</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont3">
<div class="est_table2_wrap">
<table class="est_table2">
<caption>작성일자, 공급가액, 세액, 비고 정보를 제공하는 표</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th scope="col">작성일자</th>
<th scope="col">공급가액</th>
<th scope="col">세액</th>
</tr>
</thead>
<tbody>
<tr>
<td>2024-07-18</td>
<td>500,000</td>
<td>50,000</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>비고</th>
<td style="padding:0 0 0 20px;">사용기간(2024-01-01 ~ 2024-01-31)</td>
</tr>
</tfoot>
</table>
</div>
<div class="est_table2_wrap" style="margin:20px 0 0 0;">
<table class="est_table2">
<caption>월, 일, 품목, 규격, 수량, 단가, 공급가액, 세액, 비고 정보를 제공하는 표</caption>
<colgroup>
<col style="width: 60px;">
<col style="width: 60px;">
<col style="width: auto;">
<col style="width: 60px;">
<col style="width: 60px;">
<col style="width: 60px;">
<col style="width: 100px;">
<col style="width: 60px;">
<col style="width: 70px;">
</colgroup>
<thead>
<tr>
<th scope="col"></th>
<th scope="col"></th>
<th scope="col">품목</th>
<th scope="col">규격</th>
<th scope="col">수량</th>
<th scope="col">단가</th>
<th scope="col">공급가액</th>
<th scope="col">세액</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody>
<tr>
<td>7</td>
<td>18</td>
<td>문자온 메시징 서비스 이용료</td>
<td></td>
<td></td>
<td></td>
<td>500,000</td>
<td>50,000</td>
<td>-</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
<tfoot>
<tr>
<th colspan="2">합계금액</th>
<th>전잔액</th>
<th colspan="2">입금액</th>
<th colspan="2">현잔액</th>
<th colspan="2" rowspan="2" style="background:#fff;vertical-align:middle;">이 금액을 [<span>&ensp;</span>]함</th>
</tr>
<tr>
<td style="text-align:center;" colspan="2">550,000</td>
<td style="text-align:center;">-</td>
<td style="text-align:center;" colspan="2">-</td>
<td style="text-align:center;" colspan="2">550,000</td>
</tr>
</tfoot>
</table>
</div>
</div>
<div class="cont5">
<p><span>2021</span>&nbsp;&nbsp;<span>6</span>&nbsp;&nbsp;<span>17</span></p>
<div>
<span></span>
<span>주식회사 아이티앤</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(인)</span>
</div>
</div>
</div>
<div class="est_btn_wrap">
<button type="button" class="btnType" onclick="window.print();"><i class="print_img"></i>인쇄하기</button>
</div>
</div>
</div><!--// 견적서 -->
</body></html>

View File

@ -0,0 +1,133 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>사용내역서</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/publish/css/reset.css">
<link rel="stylesheet" href="/publish/css/common.css">
<link rel="stylesheet" href="/publish/css/estimate.css">
<link rel="stylesheet" href="/publish/css/font.css">
<link rel="stylesheet" href="/publish/css/button.css">
</head>
<body>
<!-- 견적서 -->
<div class="estimate_wrap">
<div class="estimate">
<div class="est_head clearfix">
<img src="/publish/images/CI.png" alt="문자온 CI">
<div class="clearfix">
<p>(12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)</p>
<p>TEL 1551-8011</p>
</div>
</div>
<div class="est_body">
<h2>사용내역서</h2>
<div class="cont1 tb_ver2">
<div>
<p>수신자</p>
<table class="est_table">
<caption>가상계좌 사실 확인</caption>
<colgroup>
<col style="width: 60px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th>등록번호</th>
<td>123-45-67890</td>
</tr>
<tr>
<th style="letter-spacing:-0.69px;">&ensp;&ensp;&ensp;&nbsp;&nbsp;</th>
<td>주식회사 OOO</td>
</tr>
<tr>
<th style="letter-spacing:-0.69px;">&ensp;&ensp;&ensp;&nbsp;&nbsp;</th>
<td>홍길동</td>
</tr>
<tr>
<th>전화번호</th>
<td>02-000-1111</td>
</tr>
<tr>
<th style="letter-spacing:-0.85px;">&ensp;&ensp;</th>
<td>hgd@gmail.com</td>
</tr>
<tr style="border-bottom:0;">
<td colspan="2" class="colspan" style="padding:20px 0 0 0;"><span>주식회사 OOO </span>님의 사용내역(2024-01-01 ~ 2024-07-19)을 아래와 같이 확인합니다. </td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont3">
<div class="est_table2_wrap" style="margin:-10px 0 0 0;">
<table class="est_table2">
<caption>사용일시, 문자유형, 발송건수, 사용금액(VAT 별도) 정보를 제공하는 표</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th scope="col">사용일시</th>
<th scope="col">문자유형</th>
<th scope="col">발송건수</th>
<th scope="col">사용금액(VAT 별도)</th>
</tr>
</thead>
<tbody>
<tr>
<td>2024-07-18&ensp;12:11</td>
<td>단문</td>
<td>1</td>
<td>7.5</td>
</tr>
<tr>
<td>2024-07-18&ensp;12:11</td>
<td>장문</td>
<td>2</td>
<td>64</td>
</tr>
<tr>
<td>2024-07-18&ensp;12:11</td>
<td>그림</td>
<td>1</td>
<td>59</td>
</tr>
<tr>
<td>2024-07-18&ensp;12:11</td>
<td>단문</td>
<td>2</td>
<td>15</td>
</tr>
</tbody>
</table>
</div>
<div class="cont2 clearfix">
<p>총 사용금액<span style="font-size:12px;font-weight:300;">(세금계산서 발행 시 월단위 미만 절사)</span></p>
<p><span>385,000</span></p>
</div>
</div>
<div class="cont5">
<p><span>2021</span>&nbsp;&nbsp;<span>6</span>&nbsp;&nbsp;<span>17</span></p>
<div>
<span></span>
<span>주식회사 아이티앤</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(인)</span>
</div>
</div>
</div>
<div class="est_btn_wrap">
<button type="button" class="btnType" onclick="window.print();"><i class="print_img"></i>인쇄하기</button>
</div>
</div>
</div><!--// 견적서 -->
</body></html>