This commit is contained in:
leejunho 2023-07-12 14:17:06 +09:00
commit c07e237415
105 changed files with 5401 additions and 1867 deletions

View File

@ -1572,6 +1572,32 @@ public class EgovBBSManageController {
if(pattern.equals("/web/cop/bbs/addSuggestBoardArticle.do")){ // 불편신고
model.addAttribute("boardType", "suggest");
}
// NEW
// 공통
List<TermsVO> resultList = new ArrayList<TermsVO>();
// 이용약관, 개인정보보호방침 최신버전 List
TermsVO termsVO3 = new TermsVO();
termsVO3.setFirstIndex(0);
termsVO3.setRecordCountPerPage(1);
termsVO3.setSearchDiv("03");
termsVO3.setSearchUseYn("Y");
termsVO3.setSearchSortCnd("effectDate");
termsVO3.setSearchSortOrd("desc");
List<TermsVO> termsMastList2 = egovSiteManagerService.selectTermsMastMngList(termsVO3);
if (termsMastList2.size() > 0) {
TermsVO termsVO4 = new TermsVO();
termsVO4.setFirstIndex(0);
termsVO4.setRecordCountPerPage(20);
termsVO4.setTermsMastNo(termsMastList2.get(0).getTermsMastNo());
termsVO4.setSearchUseYn("Y");
termsVO4.setSearchSortCnd("sort");
termsVO4.setSearchSortOrd("ASC");
resultList = egovSiteManagerService.selectTermsSubMngList(termsVO4);
}
model.addAttribute("resultList", resultList);
return "web/cop/bbs/EgovNoticeRegist";
}
@ -1641,6 +1667,32 @@ public class EgovBBSManageController {
model.addAttribute("board", boardVO);
//최대 첨부파일 갯수 지정
// NEW
// 공통
List<TermsVO> resultList = new ArrayList<TermsVO>();
// 이용약관, 개인정보보호방침 최신버전 List
TermsVO termsVO3 = new TermsVO();
termsVO3.setFirstIndex(0);
termsVO3.setRecordCountPerPage(1);
termsVO3.setSearchDiv("03");
termsVO3.setSearchUseYn("Y");
termsVO3.setSearchSortCnd("effectDate");
termsVO3.setSearchSortOrd("desc");
List<TermsVO> termsMastList2 = egovSiteManagerService.selectTermsMastMngList(termsVO3);
if (termsMastList2.size() > 0) {
TermsVO termsVO4 = new TermsVO();
termsVO4.setFirstIndex(0);
termsVO4.setRecordCountPerPage(20);
termsVO4.setTermsMastNo(termsMastList2.get(0).getTermsMastNo());
termsVO4.setSearchUseYn("Y");
termsVO4.setSearchSortCnd("sort");
termsVO4.setSearchSortOrd("ASC");
resultList = egovSiteManagerService.selectTermsSubMngList(termsVO4);
}
model.addAttribute("resultList", resultList);
return "web/cop/bbs/EgovNoticeRegist";
}

View File

@ -57,8 +57,6 @@ import itn.let.fax.addr.service.FaxAddrGroupVO;
import itn.let.fax.addr.service.FaxAddrService;
import itn.let.fax.addr.service.FaxAddrTransHistVO;
import itn.let.fax.addr.service.FaxAddrVO;
import itn.let.mjo.addr.service.AddrGroupVO;
import itn.let.mjo.addr.service.AddrVO;
import itn.let.mjo.msgdata.service.PhoneVO;
@Controller
@ -1679,19 +1677,19 @@ public class FaxAddrController {
if(userId != "") {
addrGroupVO.setMberId(userId);
}
if(addrGroupVO.getPageUnit() != 10) {
addrGroupVO.setPageUnit(addrGroupVO.getPageUnit());
if(addrGroupVO.getPageUnit() != 10) {
addrGroupVO.setPageUnit(addrGroupVO.getPageUnit());
}
if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
addrGroupVO.setSearchSortCnd("grpOrder");
addrGroupVO.setSearchSortOrd("desc");
}
addrGroupVO.setSiteId("web");
addrGroupList = faxAddrGroupService.selectFaxAddrGroupList(addrGroupVO);
}
if("".equals(addrGroupVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
addrGroupVO.setSearchSortCnd("grpOrder");
addrGroupVO.setSearchSortOrd("desc");
}
addrGroupVO.setSiteId("web");
addrGroupList = faxAddrGroupService.selectFaxAddrGroupList(addrGroupVO);
}
catch(Exception e) {
isSuccess = false;

View File

@ -40,5 +40,7 @@ public interface MjonKakaoATService {
//회원 정보 알림톡 상세정보 리스트 팝업 통계 정보
KakaoVO selectMjonKakaoStatisticATData(KakaoVO searchVO) throws Exception;
//알림톡 지연문자 리스트 조회
List<KakaoVO> selectKakaoATDelaySentList(String userId) throws Exception;
}

View File

@ -88,4 +88,8 @@ public class MjonKakaoATDAO extends EgovAbstractDAO {
return result;
}
@SuppressWarnings("unchecked")
public List<KakaoVO> selectKakaoATDelaySentList(String userId) throws Exception{
return (List<KakaoVO>)list("mjonKakaoATDAO.selectKakaoATDelaySentList", userId);
}
}

View File

@ -184,4 +184,9 @@ public class MjonKakaoATServiceImpl extends EgovAbstractServiceImpl implements M
return result;
}
@Override
public List<KakaoVO> selectKakaoATDelaySentList(String userId) throws Exception {
return mjonKakaoATDAO.selectKakaoATDelaySentList(userId);
}
}

View File

@ -157,6 +157,32 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
kakaoSandInfo.setReqDate(sdFormat.format(now));
}
if(kakaoVO.getAtSmishingYn().equals("Y")) {
String sandDate = "";
if(kakaoVO.getDivideChk().equals("Y")) {
//분할 문자 예약 시간 입력해주기
sandDate = dividDayList.get(i);
}else {
//예약 시간 입력해주기
sandDate = kakaoVO.getReqDate();
}
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdFormat.parse(sandDate);
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date); // 시간 설정
cal1.add(Calendar.MINUTE, 30); // 30분 연산
String reqDate = sdFormat.format(cal1.getTime());
System.out.println("@@@@@@@@@@@@@@ reqDate : "+reqDate);
kakaoVO.setReqDate(reqDate);
kakaoSandInfo.setReqDate(reqDate);
}
/**전송시간 설정 (끝)------------------------------------------------*/
/**카카오 전송 데이터 추가*/
@ -231,6 +257,8 @@ public class KakaoAlimTalkServiceImpl extends EgovAbstractServiceImpl implements
mjonMsgVO.setBefCash(kakaoVO.getBefCash());
mjonMsgVO.setBefPoint(kakaoVO.getBefPoint());
mjonMsgVO.setKakaoSubMagOrgnlTxt(kakaoVO.getKakaoSubMagOrgnlTxt());
mjonMsgVO.setAtDelayYn(kakaoVO.getAtSmishingYn());
if(kakaoVO.getBizJsonYn().equals("Y")) {
mjonMsgVO.setFileCnt("1");

View File

@ -49,11 +49,16 @@ import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiProfileCategory;
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.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.sym.site.service.EgovSiteManagerService;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uss.umt.service.EgovUserManageService;
import itn.let.uss.umt.service.MberManageVO;
import itn.let.uss.umt.service.UserManageVO;
/**
*
@ -86,11 +91,19 @@ public class KakaoAlimTalkSendController {
@Resource(name = "MjonMsgDataService")
private MjonMsgDataService mjonMsgDataService;
/** userManageService */
@Resource(name = "userManageService")
private EgovUserManageService userManageService;
/** EgovMessageSource */
@Resource(name="egovMessageSource")
EgovMessageSource egovMessageSource;
/** 사이트 설정 */
@Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService;
@Autowired
KakaoApiProfile kakaoApiProfile;
@ -154,6 +167,7 @@ public class KakaoAlimTalkSendController {
mberManageVO = mjonMsgDataService.selectMberManageInfo(userId);
model.addAttribute("atSmishingYn", mberManageVO.getAtSmishingYn());
}
//3.사용자 개인단가 정보가 0이 아니면 개인단가 사용, 없으면 시스템 기본 단가 사용
@ -479,10 +493,9 @@ public class KakaoAlimTalkSendController {
int resultSts = 0; //발송결과 건수
int resultBlockSts = 0; //수신거부 등록번호로 발송을 안한 건수
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId == "") {
modelAndView.addObject("message", "로그인 후 이용이 가능합니다.");
@ -491,7 +504,9 @@ public class KakaoAlimTalkSendController {
}else {
/** 카카오톡 전송 기본 설정 -------------------------------------------*/
kakaoVO.setSendType("AT");
kakaoVO.setMsgType("8");
kakaoVO.setUserId(userId);
}
/** 전송금액 설정 --------------------------------------------------*/
@ -709,6 +724,43 @@ public class KakaoAlimTalkSendController {
modelAndView.addObject("result", "success");
modelAndView.addObject("resultSts", resultSts);
/** 카카오톡 발송 내용 법인폰, 알림톡 결과 처리 --------------------------------------------------*/
try {
String adminSmsNoticeYn = "Y";
String spamStatus = kakaoVO.getAtSmishingYn(); // 스미싱 의심으로 체크된 고객 정보
UserManageVO userManageVO = new UserManageVO();
userManageVO.setMberId(userId);
if(!userId.equals("")) {
userManageVO = userManageService.selectAdminSmsNoticeYn(userManageVO);
adminSmsNoticeYn = userManageVO.getAdminSmsNoticeYn();
}
//법인폰 알림 이거나 스미싱의심 문자인 경우 법인폰으로 발송
if(adminSmsNoticeYn.equals("Y") || spamStatus.equals("Y")) {
if(spamStatus.equals("Y")) {
kakaoVO.setAtDelayYn("Y");
}
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
//Slack으로 메세지 전송 처리
MjonCommon comm = new MjonCommon();
comm.getAdminKakaoAtSandSlack(kakaoVO);
}
}
} catch (Exception e) {
throw new Exception("++++++++++++++++++++++ getAdminPhoneSendMsgData Error !!! " + e);
}
return modelAndView;
}
}

View File

@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import com.mysql.jdbc.StringUtils;
import itn.let.kakao.kakaoComm.KakaoVO;
import itn.let.mjo.msg.service.MjonMsgVO;
@Service("MjonCommon")
@ -242,4 +243,63 @@ public class MjonCommon {
return mjonMsgVO;
}
@SuppressWarnings("unchecked")
public void getAdminKakaoAtSandSlack(KakaoVO kakaoVO) {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
JSONObject json = new JSONObject();
try {
String reserveYn = kakaoVO.getReserveYn();
String atDelayYn = kakaoVO.getAtDelayYn();
String smsTxt = kakaoVO.getTemplateContent();
String reservSmsTxt = "";
String smisingSmsTxt = "";
//예약문자를 발송하는 경우 문자 내용 앞에 "[예약]" 표시되도록 처리
if(reserveYn.equals("Y")) {
reservSmsTxt = "[예약]" + smsTxt;
smsTxt = reservSmsTxt;
}else if(atDelayYn.equals("Y")) {
smisingSmsTxt = "[스미싱의심]" + smsTxt;
smsTxt = smisingSmsTxt;
}
String sandName = kakaoVO.getCallFrom();
String userId = kakaoVO.getUserId();
String msgType = "";
if(kakaoVO.getMsgType().equals("8")) {
msgType = "[알림톡]";
}else if(kakaoVO.getMsgType().equals("9")){
}
sandName = "[" + userId + "]" + "[" + sandName + "]" + msgType;
json.put("channel", "mjon메시지");
json.put("text", smsTxt);
json.put("username", sandName);
post.addParameter("payload", json.toString());
// 처음에 utf-8로 content-type안넣어주니까 한글은 깨져서 content-type넣어줌
post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
int responseCode = client.executeMethod(post);
String response = post.getResponseBodyAsString();
if (responseCode != HttpStatus.SC_OK) {
System.out.println("Response: " + response);
}
} catch (IllegalArgumentException e) {
System.out.println("IllegalArgumentException posting to Slack " + e);
} catch (IOException e) {
System.out.println("IOException posting to Slack " + e);
} catch (Exception e) {
System.out.println("Exception posting to Slack " + e);
} finally {
post.releaseConnection();
}
}
}

View File

@ -198,6 +198,12 @@ public interface MjonMsgService {
//스팸 / 스미싱 지연 문자 즉시 발송처리
int updateMsgDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception;
//스팸 / 스미싱 지연 알림톡 발송 취소 처리
int deleteKakaoAtDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception;
//스팸 / 스미싱 지연 알림톡 즉시 발송처리
int updateKakaoAtDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception;
//문자 그룹아이디 리스트의 발송일자 정보 불러오기
List<MjonResvMsgVO> selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception;
@ -212,6 +218,7 @@ public interface MjonMsgService {
//카카오 발송 횟수
List<MjonMsgVO> selectWithKakaoSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception;
//문자 발송 횟수
List<MjonMsgVO> selectMsgSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception;
}

View File

@ -9,6 +9,7 @@ public class MjonMsgVO extends ComDefaultVO{
private static final long serialVersionUID = 1L;
private String msgId ;// '문자ID',
private String userId ; // '문자온 일반회원ID',
private String mberId ;
private String agentFlag ;//'전송사코드(1:아이하트,2:...)',
private String userData; //'(I)사용자 정의 코드(참조용으로 사용되는 것으로 메시지 전송 시에는 사용되지 않는다-문자온/아이하트 참조키용)',
private String msgSeq; // '(I)메시지의 고유번호. 자동 증가하는 것으로 MSG_DATA의 PRIMARY KEY가 된다.',
@ -354,6 +355,10 @@ public class MjonMsgVO extends ComDefaultVO{
private String delayYn; // 문자 30분 지연 처리 유무
private String delayCompleteYn; // 문자 30분 지연 처리 완료 유무
private String atDelayYn = "N"; // 알림 30분 지연 처리 유무
private String atDelayCompleteYn; // 알림톡 30분 지연 처리 완료 유무
private String atSmishingYn; // 알림톡 스메싱 여부
private int totalCallCnt; //수신자 전체
private String bizLogCallStatus; //다우기술 biz_log 테이블의 발송결과 코드 .
@ -450,6 +455,12 @@ public class MjonMsgVO extends ComDefaultVO{
public void setUserId(String userId) {
this.userId = userId;
}
public String getMberId() {
return mberId;
}
public void setMberId(String mberId) {
this.mberId = mberId;
}
public String getAgentFlag() {
return agentFlag;
}
@ -1375,5 +1386,22 @@ public class MjonMsgVO extends ComDefaultVO{
public void setAccessKey(String accessKey) {
this.accessKey = accessKey;
}
public String getAtDelayYn() {
return atDelayYn;
}
public void setAtDelayYn(String atDelayYn) {
this.atDelayYn = atDelayYn;
}
public String getAtDelayCompleteYn() {
return atDelayCompleteYn;
}
public void setAtDelayCompleteYn(String atDelayCompleteYn) {
this.atDelayCompleteYn = atDelayCompleteYn;
}
public String getAtSmishingYn() {
return atSmishingYn;
}
public void setAtSmishingYn(String atSmishingYn) {
this.atSmishingYn = atSmishingYn;
}
}

View File

@ -426,11 +426,41 @@ public class MjonMsgDAO extends EgovAbstractDAO {
update("mjonMsgDAO.updateMsgDelaySendRealTimeMsgDataFlag", mjonMsgVO);
}
// mj_msg_data 테이블 예약 지연 문자 발송 요청시간 수정
public void updateMsgDelaySendReserveTimeMsgDataFlag(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateMsgDelaySendReserveTimeMsgDataFlag", mjonMsgVO);
}
// mj_msg_group_data 테이블 지연 문자 즉시발송 요청시간 수정
public void updateMsgDelaySendRealTimeMsgGroupDataFlag(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag", mjonMsgVO);
}
// mj_msg_group_data 테이블 예약 지연 문자 발송 요청시간 수정
public void updateMsgDelaySendReserveTimeMsgGroupDataFlag(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateMsgDelaySendReserveTimeMsgGroupDataFlag", mjonMsgVO);
}
// mj_msg_data 테이블 지연 알림톡 취소 수정
public void updateKakaoAtDelayCancelMsgDataFlag(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag", mjonMsgVO);
}
// mj_msg_group_data 테이블 지연 알림톡 취소 수정
public void updateKakaoAtDelayCancelMsgGroupDataFlag(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag", mjonMsgVO);
}
// mj_msg_data 테이블 지연 알림톡 즉시발송 요청시간 수정
public void updateKakaoAtDelaySendRealTimeMsgDataFlag(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgDataFlag", mjonMsgVO);
}
// mj_msg_group_data 테이블 지연 알림톡 즉시발송 요청시간 수정
public void updateKakaoAtDelaySendRealTimeMsgGroupDataFlag(MjonMsgVO mjonMsgVO) {
update("mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgGroupDataFlag", mjonMsgVO);
}
//문자 그룹아이디 리스트의 발송일자 정보 불러오기
@SuppressWarnings("unchecked")
public List<MjonResvMsgVO> selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception{

View File

@ -764,6 +764,10 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM
//삭제 문자 건수 MSG_SEQ 번호 받아오기
List<MjonResvMsgVO> resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO);
String reservYn = resultMsgSeqList.get(0).getReserveYn();
System.out.println("++++++++++++++++++++++++++++ reservYn ::: "+reservYn);
int size = resultMsgSeqList.size();
List<String> userDataList = new ArrayList<String>();
for(int i=0; i < size; i++) {
@ -775,8 +779,8 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM
mjonResvMsgVO.setUserDataList(userDataList);
int ihResult = 0;
int imoResult = 0;
//int ihResult = 0;
//int imoResult = 0;
int bizResult = 0;
int FHSmsResult = 0;
int FHMmsResult = 0;
@ -785,37 +789,136 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM
int JJB01Result = 0;
int JJB02Result = 0;
//아이하트 딜레이문자 즉시발송 처리
//ihResult = mjonReservMsgDAO.deleteIHeartMsgSeqListByMsgSeq(mjonResvMsgVO);
ihResult = mjonReservMsgDAO.updateRealTimeIHeartMsgSeqListByMsgSeq(mjonResvMsgVO);
//현대퓨처넷 단문 딜레이문자 즉시발송 처리
FHSmsResult = mjonReservMsgDAO.updateRealTimeHFNSmsMsgSeqListByMsgSeq(mjonResvMsgVO);
//즉시 전송 딜레이건에 대한 즉시 전송 처리 - 아이하트, 아에임오 전송사는 사용 안하기 때문에 주석처리함.
if(reservYn.equals("N")) {
//아이하트 딜레이문자 즉시발송 처리
//ihResult = mjonReservMsgDAO.deleteIHeartMsgSeqListByMsgSeq(mjonResvMsgVO);
//ihResult = mjonReservMsgDAO.updateRealTimeIHeartMsgSeqListByMsgSeq(mjonResvMsgVO);
//현대퓨처넷 단문 딜레이문자 즉시발송 처리
FHSmsResult = mjonReservMsgDAO.updateRealTimeHFNSmsMsgSeqListByMsgSeq(mjonResvMsgVO);
//현대퓨처넷 장문/그림 딜레이문자 즉시발송 처리
FHMmsResult = mjonReservMsgDAO.updateRealTimeHFNMmsMsgSeqListByMsgSeq(mjonResvMsgVO);
//현대퓨처넷 장문/그림 딜레이문자 즉시발송 처리
FHMmsResult = mjonReservMsgDAO.updateRealTimeHFNMmsMsgSeqListByMsgSeq(mjonResvMsgVO);
//아이엠오 딜레이문자 즉시발송 처리
//imoResult = mjonReservMsgDAO.updateRealTimeIMOMsgSeqListByMsgSeq(mjonResvMsgVO);
//비즈뿌리오 딜레이문자 즉시발송 처리
bizResult = mjonReservMsgDAO.updateRealTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO);
//제이제이 딜레이문자 즉시발송 처리
JJResult = mjonReservMsgDAO.updateRealTimeJJMsgSeqListByMsgSeq(mjonResvMsgVO);
//인비토 딜레이문자 즉시발송 처리
IVTResult = mjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq(mjonResvMsgVO);
//제이제이 B01 딜레이문자 즉시발송 처리
JJB01Result = mjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq(mjonResvMsgVO);
//제이제이 B02 딜레이문자 즉시발송 처리
JJB02Result = mjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq(mjonResvMsgVO);
//발송 결과 합산
resultSts = FHSmsResult + FHMmsResult + bizResult + JJResult + IVTResult + JJB01Result + JJB02Result;
System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts);
}else {//예약문자에 대한 딜레이발송 시간을 원복 처리해준다. - 아이하트, 아이엠오 전송사는 제외해준다.
//현대퓨처넷 단문 예약 딜레이문자 발송 처리
FHSmsResult = mjonReservMsgDAO.updateReserveTimeHFNSmsMsgSeqListByMsgSeq(mjonResvMsgVO);
//현대퓨처넷 장문/그림 예약 딜레이문자 발송 처리
FHMmsResult = mjonReservMsgDAO.updateReserveTimeHFNMmsMsgSeqListByMsgSeq(mjonResvMsgVO);
//비즈뿌리오 예약 딜레이문자 발송 처리
bizResult = mjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO);
//제이제이 예약 딜레이문자 발송 처리
JJResult = mjonReservMsgDAO.updateReserveTimeJJMsgSeqListByMsgSeq(mjonResvMsgVO);
//인비토 예약 딜레이문자 발송 처리
IVTResult = mjonReservMsgDAO.updateReserveTimeIVTMsgSeqListByMsgSeq(mjonResvMsgVO);
//제이제이 B01 예약 딜레이문자 발송 처리
JJB01Result = mjonReservMsgDAO.updateReserveTimeJJB01MsgSeqListByMsgSeq(mjonResvMsgVO);
//제이제이 B02 예약 딜레이문자 발송 처리
JJB02Result = mjonReservMsgDAO.updateReserveTimeJJB02MsgSeqListByMsgSeq(mjonResvMsgVO);
//발송 결과 합산
resultSts = FHSmsResult + FHMmsResult + bizResult + JJResult + IVTResult + JJB01Result + JJB02Result;
System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts);
}
//아이엠오 딜레이문자 즉시발송 처리
imoResult = mjonReservMsgDAO.updateRealTimeIMOMsgSeqListByMsgSeq(mjonResvMsgVO);
//비즈뿌리오 딜레이문자 즉시발송 처리
bizResult = mjonReservMsgDAO.updateRealTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO);
//예약 취소 환불 처리
if(resultSts > 0) {
MjonMsgVO mjonMsgVO = new MjonMsgVO();
//그룹 데이터 정보 조회하기
mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO);
if(reservYn.equals("N")) {
//mj_msg_data 테이블 지연 문자 즉시발송 요청 수정
mjonMsgDAO.updateMsgDelaySendRealTimeMsgDataFlag(mjonMsgVO);
//mj_msg_group_data 테이블 즉시발송 요청 수정
mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag(mjonMsgVO);
}else {
//mj_msg_data 테이블 예약 지연 문자 발송 요청 수정
mjonMsgDAO.updateMsgDelaySendReserveTimeMsgDataFlag(mjonMsgVO);
//mj_msg_group_data 테이블 예약 발송 요청 수정
mjonMsgDAO.updateMsgDelaySendReserveTimeMsgGroupDataFlag(mjonMsgVO);
}
}
//제이제이 딜레이문자 즉시발송 처리
JJResult = mjonReservMsgDAO.updateRealTimeJJMsgSeqListByMsgSeq(mjonResvMsgVO);
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++++++++ updateMsgDelaySendRealTimeDataAjax ServiceImpl Error !!!! "+e);
}
return resultSts;
}
//스팸 / 스미싱 지연 알림톡 발송 취소 처리
@Override
public int deleteKakaoAtDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception {
int resultSts = 0;
try {
//제이제이 딜레이문자 즉시발송 처리
IVTResult = mjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq(mjonResvMsgVO);
System.out.println("++++++++++++++++++ deleteKakaoAtDelaySendCancelData groupId ::: "+mjonResvMsgVO.getMsgGroupId());
//삭제 문자 건수 MSG_SEQ 번호 받아오기
List<MjonResvMsgVO> resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO);
//제이제이 B01 딜레이문자 즉시발송 처리
JJB01Result = mjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq(mjonResvMsgVO);
int size = resultMsgSeqList.size();
List<String> userDataList = new ArrayList<String>();
for(int i=0; i < size; i++) {
userDataList.add(resultMsgSeqList.get(i).getUserData());
System.out.println(resultMsgSeqList.get(i).getUserData());
}
//제이제이 B02 딜레이문자 즉시발송 처리
JJB02Result = mjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq(mjonResvMsgVO);
mjonResvMsgVO.setUserDataList(userDataList);
//삭제 결과 합산
resultSts = ihResult + FHSmsResult + FHMmsResult + imoResult +bizResult + JJResult + IVTResult + JJB01Result + JJB02Result;
//비즈뿌리오 딜레이 알림톡 삭제
resultSts = mjonReservMsgDAO.deleteBizMsgSeqListByMsgSeq(mjonResvMsgVO);
System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts);
@ -825,12 +928,78 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM
//그룹 데이터 정보 조회하기
MjonMsgVO mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO);
//mj_msg_data 테이블 지연 문자 취소 수정
mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag(mjonMsgVO);
//mj_msg_group_data 테이블 예약 취소 수정
mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag(mjonMsgVO);
//문자 발송 캐시 환불 해주기
MjonPayVO mjonPayVO = new MjonPayVO();
mjonPayVO.setCashId(idgenMjonCashId.getNextStringId());
mjonPayVO.setUserId(mjonMsgVO.getUserId());
mjonPayVO.setCash(Float.parseFloat(mjonMsgVO.getTotPrice()));
mjonPayVO.setFrstRegisterId(mjonMsgVO.getUserId());
mjonPayVO.setMemo("스팸/스미싱 지연 알림톡 취소 " + resultSts + "건 환불");
mjonPayVO.setMsgGroupId(mjonMsgVO.getMsgGroupId());
mjonPayDAO.insertCash(mjonPayVO); //캐시 환불
mjonPayDAO.updateMemberCash(mjonPayVO); //회원정보 업데이트
}
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++++++++ deleteMsgDelaySendCancelData ServiceImpl Error !!!! "+e);
}
return resultSts;
}
//스팸 / 스미싱 지연 알림톡 즉시 발송처리
@Override
public int updateKakaoAtDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception {
int resultSts = 0;
try {
boolean timeType = true;
System.out.println("++++++++++++++++++ updateKakaoAtDelaySendRealTimeData groupId ::: "+mjonResvMsgVO.getMsgGroupId());
//삭제 문자 건수 MSG_SEQ 번호 받아오기
List<MjonResvMsgVO> resultMsgSeqList = mjonReservMsgDAO.selectMsgSeqListByGroupId(mjonResvMsgVO);
int size = resultMsgSeqList.size();
List<String> userDataList = new ArrayList<String>();
for(int i=0; i < size; i++) {
userDataList.add(resultMsgSeqList.get(i).getUserData());
System.out.println(resultMsgSeqList.get(i).getUserData());
}
mjonResvMsgVO.setUserDataList(userDataList);
if(resultMsgSeqList.get(0).getReserveYn().equals("N")) {
// 즉시 발송시
//비즈뿌리오 딜레이문자 즉시발송 처리
resultSts = mjonReservMsgDAO.updateRealTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO);
}else {
// 예약 발송시
//비즈뿌리오 딜레이문자 예약발송 처리
resultSts = mjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq(mjonResvMsgVO);
}
System.out.println("++++++++++++++++++++++++++++++ resultSts ::: "+resultSts);
//발송 시간 수정(mj_msg_data, mj_msg_group_data)
if(resultSts > 0) {
//그룹 데이터 정보 조회하기
MjonMsgVO mjonMsgVO = mjonMsgDAO.selectMsgGroupDataByGoupId(mjonResvMsgVO);
//mj_msg_data 테이블 지연 문자 즉시발송 요청 수정
mjonMsgDAO.updateMsgDelaySendRealTimeMsgDataFlag(mjonMsgVO);
mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgDataFlag(mjonMsgVO);
//mj_msg_group_data 테이블 즉시발송 요청 수정
mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag(mjonMsgVO);
mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgGroupDataFlag(mjonMsgVO);
}
} catch (Exception e) {

View File

@ -3618,6 +3618,161 @@ public class MjonMsgController {
return modelAndView;
}
/**
* 스팸 스미싱 30분 지연알림톡 전송 취소 처리
* @param mjonMsgVO
* @param model
* @return "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"
* @throws Exception
*/
@RequestMapping(value = {"/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do"})
public ModelAndView deleteKakaoATDelaySendCancelDataAjax(MjonMsgVO mjonMsgVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String isStatus = "";
String msg = "";
//로그인 정보 획득
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
modelAndView.addObject("isStatus", "loginFail");
modelAndView.addObject("msg", "로그인이 필요합니다.");
return modelAndView;
}
try {
MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO();
mjonResvMsgVO.setUserId(mjonMsgVO.getUserId());//회원 아이디
String[] arrMsgGroupId = mjonMsgVO.getMsgGroupId().split(",");
int resultSts = 0;
//문자 발송요청일자 체크해주기
boolean compareReqDate = getCompareReqDateList(arrMsgGroupId, mjonMsgVO.getUserId());
if(!compareReqDate) {
modelAndView.addObject("isStatus", "dateFail");
modelAndView.addObject("msg", "발송시간이 지난 문자가 있습니다. 문자 발송예정 시간을 확인해 주세요.");
return modelAndView;
}
for(String temp : arrMsgGroupId) {
mjonResvMsgVO.setMsgGroupId(temp);//취소 문자 그룹 아이디
int count = mjonMsgService.deleteKakaoAtDelaySendCancelData(mjonResvMsgVO);
resultSts = resultSts + count;
}
if(resultSts > 0) {
modelAndView.addObject("isStatus", "success");
modelAndView.addObject("msg", "발송취소가 정상적으로 처리되었습니다.");
}else {
modelAndView.addObject("isStatus", "fail");
modelAndView.addObject("msg", "발송취소에 오류가 발생하였습니다.");
}
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++++++++ deleteKakaoATDelaySendCancelDataAjax Controller Error !!!! "+e);
modelAndView.addObject("isStatus", "fail");
modelAndView.addObject("msg", "오류가 발생하였습니다.");
return modelAndView;
}
return modelAndView;
}
/**
* 스팸 스미싱 30분 지연알림톡 즉시 전송 처리
* @param mjonMsgVO
* @param model
* @return "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"
* @throws Exception
*/
@RequestMapping(value = {"/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do"})
public ModelAndView updateKakaoATDelaySendRealTimeDataAjax(MjonMsgVO mjonMsgVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String isStatus = "";
String msg = "";
//로그인 정보 획득
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId.equals("")) {
modelAndView.addObject("isStatus", "loginFail");
modelAndView.addObject("msg", "로그인이 필요합니다.");
return modelAndView;
}
try {
MjonResvMsgVO mjonResvMsgVO = new MjonResvMsgVO();
mjonResvMsgVO.setUserId(mjonMsgVO.getUserId());//회원 아이디
String[] arrMsgGroupId = mjonMsgVO.getMsgGroupId().split(",");
int resultSts = 0;
//문자 발송요청일자 체크해주기
boolean compareReqDate = getCompareReqDateList(arrMsgGroupId, mjonMsgVO.getUserId());
if(!compareReqDate) {
modelAndView.addObject("isStatus", "dateFail");
modelAndView.addObject("msg", "발송시간이 지난 문자가 있습니다. 문자 발송예정 시간을 확인해 주세요.");
return modelAndView;
}
for(String temp : arrMsgGroupId) {
mjonResvMsgVO.setMsgGroupId(temp);//취소 문자 그룹 아이디
//문자 발송 지연 데이터 즉시 발송처리
int count = mjonMsgService.updateKakaoAtDelaySendRealTimeData(mjonResvMsgVO);
resultSts = resultSts + count;
}
if(resultSts > 0) {
modelAndView.addObject("isStatus", "success");
modelAndView.addObject("msg", "즉시 발송 처리가 완료되었습니다.");
}else {
modelAndView.addObject("isStatus", "fail");
modelAndView.addObject("msg", "즉시 발송 처리에 오류가 발생하였습니다.");
}
} catch (Exception e) {
System.out.println("+++++++++++++++++++++++++++++++++++ updateKakaoATDelaySendRealTimeDataAjax Controller Error !!!! "+e);
modelAndView.addObject("isStatus", "fail");
modelAndView.addObject("msg", "오류가 발생하였습니다.");
return modelAndView;
}
return modelAndView;
}
/**
* 전송사 발송 통계
* @param

View File

@ -324,7 +324,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
if(spamStatus.equals("Y") || smishingYn.equals("Y")) {
mjonMsgVO.setDelayYn("N");//일단 값만 등록해준다. 이거 안해주면 NULL 값으로 들어간다. 차후에 변경하도록 예정임, 원래는 스팸이면 Y로 넣어줘야한다.
mjonMsgVO.setDelayYn("Y");//일단 값만 등록해준다. 이거 안해주면 NULL 값으로 들어간다. 차후에 변경하도록 예정임, 원래는 스팸이면 Y로 넣어줘야한다.
}else {
@ -368,6 +368,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
//Controller에서 전달 받은 분할 시간 정보 리스트
List<String> dividDayList = mjonMsgVO.getDividDay();
String frstDelayTime = mjonMsgVO.getReqDate();
//문자발송 리스트 생성 시작
for(int i = 0; i < callToCnt; i++) {
@ -528,13 +529,51 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
//분할 발송을 체크 경우
if(mjonMsgVO.getDivideChk() != null) {
tempVO.setReqDate(dividDayList.get(i)); //분할 문자 예약 시간 입력해주기
//스팸문구 혹은 스미싱 의심 회원의 경우 30분 딜레이 처리해준다.
//20230630 우영두 추가
if(spamStatus.equals("Y") || smishingYn.equals("Y")) {
Date delayDate = transFormat.parse(dividDayList.get(i));
cal.setTime(delayDate);
cal.add(Calendar.MINUTE, 30);
delayTime = transFormat.format(cal.getTime());
tempVO.setReqDate(delayTime); //분할 문자 예약 시간 입력해주기
}else {
tempVO.setReqDate(dividDayList.get(i)); //분할 문자 예약 시간 입력해주기
}
}else {//일반 예약 발송의 경우
tempVO.setReqDate(mjonMsgVO.getReqDate());
if(spamStatus.equals("Y") || smishingYn.equals("Y")) {//스팸문구 혹은 스미싱 의심 회원의 경우 30분 딜레이 처리해준다.
Date delayDate = transFormat.parse(mjonMsgVO.getReqDate());
cal.setTime(delayDate);
cal.add(Calendar.MINUTE, 30);
delayTime = transFormat.format(cal.getTime());
tempVO.setReqDate(delayTime);
}else {
tempVO.setReqDate(mjonMsgVO.getReqDate());
}
}
//딜레이 처리되었을 있어서 임시 데이터의 발송 시간을 업데이트 해준다.
//분할 발송일 경우 Loop을 돌기 때문에 마지막 시간이 reqDate에 들어가기 때문에 첫번째 데이터에서만 시간을 입력해 준다.
//mj_group_data 테이블의 reqdate 컬럼 값으로 셋팅 된다.
if(i==0) {
frstDelayTime = tempVO.getReqDate();
}
}
if(!msgType.equals("4")) { // 장문 혹은 그림문자일 경우 추가
@ -733,6 +772,13 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
if(tmpDelayYn == null) {
mjonMsgVO.setDelayYn("N");
}
//예약 문자이고 30분 지연이 문자의 Mj_msg_group_data 테이블의 req_date 시간을 첫번째 문자의 지연된 시간으로 셋팅해준다.
if(mjonMsgVO.getReserveYn().equals("Y") && (spamStatus.equals("Y") || smishingYn.equals("Y"))) {
mjonMsgVO.setReqDate(frstDelayTime);
}
mjonMsgDAO.insertGroupMsgData(mjonMsgVO);
}else {

View File

@ -313,8 +313,42 @@ public class MjonKGMPayController {
UserManageVO userManageVO = new UserManageVO();
userManageVO.setSmishingYn("Y");
userManageVO.setMberId(Userid);
userManageService.updateOneUserSmishingYn(userManageVO);
userManageService.updateOneUserSmishingYnNotAlert(userManageVO);
}
else {
// 대상 : 휴대폰결제, 즉시이체, 전용계좌
// Step 1. 스미싱의심 지정 여부
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
if (joinSettingVO != null && joinSettingVO.getSmishingNoti().equals("Y")) {
// Step 1. 개인회원 여부 체크
int isPersnalMemberCnt = egovSiteManagerService.selectPersnalMemberCnt(Userid);
if (isPersnalMemberCnt == 1) {
// Step 2. 첫결제 여부 체크
int isFirstPayCnt = egovSiteManagerService.selectFirstPayCnt(Userid);
if (isFirstPayCnt == 1) {
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
// 스미싱의심 SMS 알림전송
mjonNoticeSendUtil.smishingSmsNoticeSend("스미싱의심/휴대폰 첫결제", Userid, mberNm);
}
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
// Slack 메시지 발송(단순본문)
String msg = "[문자온] 스미싱의심/휴대폰 첫결제 - " + mberNm +"("+ Userid + ")";
mjonCommon.sendSimpleSlackMsg(msg);
}
// 스미싱 의심회원으로 변경
UserManageVO userManageVO = new UserManageVO();
userManageVO.setSmishingYn("Y");
userManageVO.setMberId(Userid);
userManageService.updateOneUserSmishingYnNotAlert(userManageVO);
}
}
}
}
redirect.addAttribute("Resultcd", Resultcd);
redirect.addAttribute("Tradeid", Tradeid);

View File

@ -29,6 +29,7 @@ public class MjonResvMsgVO extends UserDefaultVO{
private String fileCnt; //첨부 이미지 갯수 - 0: 장문, 1 이상은 그림문자
private String totMsgCnt; //전체 전송문자 갯수
private String curState; //전송 처리 결과값
private String reserveYn; //예약 여부
private String reserveCYn; //예약 취소 여부
private String filePath1; //그림 이미지 1
private String filePath2; //그림 이미지 2
@ -290,5 +291,10 @@ public class MjonResvMsgVO extends UserDefaultVO{
public void setStrReqDate(String strReqDate) {
this.strReqDate = strReqDate;
}
public String getReserveYn() {
return reserveYn;
}
public void setReserveYn(String reserveYn) {
this.reserveYn = reserveYn;
}
}

View File

@ -201,6 +201,18 @@ public class MjonReservMsgDAO extends EgovAbstractDAO {
return update("MjonReservMsgDAO.updateRealTimeHFNSmsMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateReserveTimeHFNSmsMsgSeqListByMsgSeq
* @작성일 : 2023 07. 10.
* @작성자 : 우영두
* @Method 설명 : 현대퓨처넷 예약문자 지연처리 문자 정상 시간 발송
*/
public int updateReserveTimeHFNSmsMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
return update("MjonReservMsgDAO.updateReserveTimeHFNSmsMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateRealTimeIHeartMsgSeqListByMsgSeq
* @작성일 : 2022. 12. 02.
@ -212,6 +224,17 @@ public class MjonReservMsgDAO extends EgovAbstractDAO {
return update("MjonReservMsgDAO.updateRealTimeHFNMmsMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateReserveTimeHFNMmsMsgSeqListByMsgSeq
* @작성일 : 2023. 07. 10.
* @작성자 : 우영두
* @Method 설명 : 현대퓨처넷 예약 장문/그림 지연처리 문자 즉시 발송
*/
public int updateReserveTimeHFNMmsMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
return update("MjonReservMsgDAO.updateReserveTimeHFNMmsMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateRealTimeIMOMsgSeqListByMsgSeq
* @작성일 : 2022. 12. 02.
@ -245,6 +268,18 @@ public class MjonReservMsgDAO extends EgovAbstractDAO {
return update("MjonReservMsgDAO.updateRealTimeJJMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateReserveTimeJJMsgSeqListByMsgSeq
* @작성일 : 2023. 7. 10.
* @작성자 : 우영두
* @Method 설명 : 제이제이 예약 지연처리 문자 정상 발송
*/
public int updateReserveTimeJJMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
return update("MjonReservMsgDAO.updateReserveTimeJJMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateRealTimeIVTMsgSeqListByMsgSeq
* @작성일 : 2023. 05. 16.
@ -256,6 +291,17 @@ public class MjonReservMsgDAO extends EgovAbstractDAO {
return update("MjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateReserveTimeIVTMsgSeqListByMsgSeq
* @작성일 : 2023. 07. 10.
* @작성자 : 우영두
* @Method 설명 : 인비토 예약 지연처리 문자 즉시 발송
*/
public int updateReserveTimeIVTMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
return update("MjonReservMsgDAO.updateReserveTimeIVTMsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateRealTimeJJB01MsgSeqListByMsgSeq
* @작성일 : 2023. 06. 20.
@ -267,6 +313,17 @@ public class MjonReservMsgDAO extends EgovAbstractDAO {
return update("MjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateReserveTimeJJB01MsgSeqListByMsgSeq
* @작성일 : 2023. 07. 10.
* @작성자 : 우영두
* @Method 설명 : 제이제이 B01라인 예약 지연처리 문자 발송
*/
public int updateReserveTimeJJB01MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
return update("MjonReservMsgDAO.updateReserveTimeJJB01MsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateRealTimeJJB02MsgSeqListByMsgSeq
* @작성일 : 2023. 06. 20.
@ -277,4 +334,26 @@ public class MjonReservMsgDAO extends EgovAbstractDAO {
return update("MjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateReserveTimeJJB02MsgSeqListByMsgSeq
* @작성일 : 2023. 07. 10.
* @작성자 : 우영두
* @Method 설명 : 제이제이 B02라인 예약 지연처리 문자 발송
*/
public int updateReserveTimeJJB02MsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
return update("MjonReservMsgDAO.updateReserveTimeJJB02MsgSeqListByMsgSeq", mjonResvMsgVO);
}
/**
* @Method Name : updateReserveTimeBizMsgSeqListByMsgSeq
* @작성일 : 2023. 07. 06.
* @작성자 : WYD
* @Method 설명 : 비즈뿌리오 지연처리 문자 예약 발송
*/
public int updateReserveTimeBizMsgSeqListByMsgSeq(MjonResvMsgVO mjonResvMsgVO) {
return update("MjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq", mjonResvMsgVO);
}
}

View File

@ -1157,21 +1157,10 @@ public class TestController {
try {
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
// api인지 확인
ApiKeyVO apiKeyVO = new ApiKeyVO();
apiKeyVO.setAccessKey(mjonMsgVO.getAccessKey());
List<ApiKeyVO> resultList = apiKeyMngService.selectCheckApiKeyDup(apiKeyVO);
if(resultList.size() >= 1) {
userId = resultList.get(0).getMberId();
}
// LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
// userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
userId = mjonMsgVO.getMberId();
if(userId.equals("")) {
modelAndView.addObject("message", "로그인 후 이용이 가능합니다.");
@ -1388,6 +1377,9 @@ public class TestController {
}
// 토탈금액 "," 리플레이스 처리
mjonMsgVO.setTotPrice(mjonMsgVO.getTotPrice().replaceAll(",", ""));
float tmpOrgEachPrice = Float.parseFloat(mjonMsgVO.getEachPrice());
float tmpOrgTotPrice = Float.parseFloat(mjonMsgVO.getTotPrice());
@ -1517,8 +1509,6 @@ public class TestController {
shortMsgVO = mjonMsgVO;
longMsgVO = mjonMsgVO;
imgMsgVO = mjonMsgVO;
System.out.println("shortMsgVO :: "+ shortMsgVO.getsPrice());
System.out.println("mjonMsgVO :: "+ mjonMsgVO.getsPrice());
int shortMsgCnt = Integer.parseInt(mjonMsgVO.getShortMsgCnt());
int longMsgCnt = Integer.parseInt(mjonMsgVO.getLongMsgCnt());
@ -1768,7 +1758,14 @@ public class TestController {
imgMsgVO.setRep4List(imgRep4);
//개별단가 계산하기
String eachPrice = shortMsgVO.getsPrice();
String eachPrice = imgMsgVO.getpPrice();
//api 서버에서 pPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가
if(eachPrice == null) {
eachPrice = imgMsgVO.getEachPrice();
}
/**
* 그림문자에 치환 내용이 포함되어 있는 경우 단가 계산하기.
@ -1813,9 +1810,12 @@ public class TestController {
//개별단가 계산하기
String eachPrice = shortMsgVO.getsPrice();
if(StringUtils.isEmpty(eachPrice))
{
//api 서버에서 sPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가
if(eachPrice == null) {
eachPrice = shortMsgVO.getEachPrice();
}
/**
@ -1845,7 +1845,6 @@ public class TestController {
shortMsgVO.setMsgType("4");
}
System.out.println("shortMsgVO.getEachPrice() :: "+ shortMsgVO.getEachPrice());
//총금액 계산하기
Float sTotPrice = Float.parseFloat(shortMsgVO.getEachPrice()) * shortCnt;
shortMsgVO.setTotPrice(sTotPrice.toString());
@ -1871,6 +1870,13 @@ public class TestController {
String eachPrice = longMsgVO.getmPrice();
//api 서버에서 mPrice 값이 없는 경우가 있어서 오류 방지를위해서 추가
if(eachPrice == null) {
eachPrice = longMsgVO.getEachPrice();
}
if(fileCount > 2) {//그림 이미지가 3개
eachPrice = mjonMsgVO.getP3Price();
@ -2001,9 +2007,7 @@ public class TestController {
}else {
//문자발송 함수 호출 - 일괄변환이 없거나, 그림문자 일괄변환의 경우 한번에 전송 처리
System.out.println("???????");
modelAndView = fncSendMsg(mjonMsgVO);
System.out.println("!!!!!!!!!!!!");
}
@ -2060,16 +2064,13 @@ public class TestController {
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
// 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);
System.out.println("slack noti");
// comm.getAdminSandSlack(mjonMsgVO);
}
}
@ -2079,11 +2080,6 @@ public class TestController {
}
return modelAndView;
}
/**
* 문자발송시 치환문자가 있거나 단문, 장문 일경우 타는 로직

View File

@ -28,7 +28,9 @@ import itn.let.mjo.payva.service.VacsAhstVO;
import itn.let.schdlr.service.SchdlrManageService;
import itn.let.schdlr.service.SchdlrVO;
import itn.let.sym.site.service.EgovSiteManagerService;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uss.umt.service.EgovUserManageService;
import itn.let.uss.umt.service.UserManageVO;
import itn.let.utl.user.service.MjonNoticeSendUtil;
@Service("SchdlrManageService")
@ -362,7 +364,6 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
//세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기
vacsAhstService.updateVacsAhstCashComplete(temp);
/*
try {
String Userid = temp.getMberId();
String mberNm = "";
@ -407,7 +408,7 @@ public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements
System.out.println("전용계좌 TrNo : " + temp.getTrNo());
System.out.println("전용계좌 e.getMessage() : " + e.getMessage());
}
*/
}

View File

@ -2,8 +2,13 @@ package itn.let.sym.grd.service;
import java.util.List;
import itn.let.sym.site.service.JoinSettingVO;
public interface MberGrdService {
// 등급제 단가 추출 => 시스템 단가에 적용
public JoinSettingVO selectMberGrdDefaultInfo(JoinSettingVO sysJoinSetVO, String mberId) throws Exception;
// 등급제 설정 일괄변경
public int updateMberSetting(MberGrdVO mberGrdVO) throws Exception;
@ -14,12 +19,24 @@ public interface MberGrdService {
// 등급제 설정 목록
List<MberGrdVO> selectMberGrdSettingList(MberGrdVO mberGrdVO) throws Exception;
// 회원별 설정 상세
public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception;
// 등급제 설정 일괄변경
public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception;
// 등급제 등급 목록
List<MberGrdVO> selectMberGrdList(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 상세
public MberGrdVO selectMberGrdDetail(MberGrdVO mberGrdVO) throws Exception;
// 회원 등급제 대상여부 정보(사용자화면용)
public MberGrdVO selectMberGrdInfo(String mberId) throws Exception;
// 회원별 등급 누적결제액 상세
public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 등록
public void insertMberGrd(MberGrdVO mberGrdVO) throws Exception;
@ -29,13 +46,32 @@ public interface MberGrdService {
// 회원별 등급 일괄변경
public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception;
// 문자할인, B선라인 대상자 초기화
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 초기화
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 적용
public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 진행여부
int selectMberGrdPrgCnt(String userId) throws Exception;
int selectMberGrdPrgCnt(String mberId) throws Exception;
// 회원별 이벤트 진행여부
int selectMberEventPrgCnt(String mberId) throws Exception;
// 회원별 등급 저장여부
int selectMberGrdSaveCnt(String mberId) throws Exception;
// 회원별 등급 히스토리 등록
public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception ;
public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용)
List<MberGrdVO> selectMberGrdHistByGrdDateList(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 히스토리 목록
List<MberGrdVO> selectMberGrdHistList(MberGrdVO mberGrdVO) throws Exception;
}

View File

@ -2,8 +2,11 @@ package itn.let.sym.grd.service;
import java.util.List;
public class MberGrdVO {
import itn.let.uss.umt.service.UserDefaultVO;
public class MberGrdVO extends UserDefaultVO {
private static final long serialVersionUID = 1L;
private int grdSetNo; // 등급설정번호
private String grdSetNm; // 등급설정명
private long stdAmt; // 기준결제액
@ -28,15 +31,20 @@ public class MberGrdVO {
private List<String> picture3Prices;
private String mberId;
private String mberNm;
private String amt;
private String grdStartDate;
private String grd_endDate;
private String grdEndDate;
private String grdStatus;
private String grdStatusNm;
private int mberGrdHistNo;
private String grdNoti; // 회원등급제 시행 여부
private String grdDate; // 회원등급제 시행일자
private String grdNoti; // 회원등급제 시행 여부
private String grdDate; // 회원등급제 시행일자
private String grdDatePrgYn; // 회원등급제 시행일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N)
// 검색필터
private String searchGrdStatus;
public int getGrdSetNo() {
return grdSetNo;
@ -172,6 +180,12 @@ public class MberGrdVO {
public void setMberId(String mberId) {
this.mberId = mberId;
}
public String getMberNm() {
return mberNm;
}
public void setMberNm(String mberNm) {
this.mberNm = mberNm;
}
public String getAmt() {
return amt;
}
@ -184,11 +198,11 @@ public class MberGrdVO {
public void setGrdStartDate(String grdStartDate) {
this.grdStartDate = grdStartDate;
}
public String getGrd_endDate() {
return grd_endDate;
public String getGrdEndDate() {
return grdEndDate;
}
public void setGrd_endDate(String grd_endDate) {
this.grd_endDate = grd_endDate;
public void setGrdEndDate(String grd_endDate) {
this.grdEndDate = grd_endDate;
}
public String getGrdStatus() {
return grdStatus;
@ -196,6 +210,12 @@ public class MberGrdVO {
public void setGrdStatus(String grdStatus) {
this.grdStatus = grdStatus;
}
public String getGrdStatusNm() {
return grdStatusNm;
}
public void setGrdStatusNm(String grdStatusNm) {
this.grdStatusNm = grdStatusNm;
}
public int getMberGrdHistNo() {
return mberGrdHistNo;
}
@ -214,4 +234,16 @@ public class MberGrdVO {
public void setGrdDate(String grdDate) {
this.grdDate = grdDate;
}
public String getGrdDatePrgYn() {
return grdDatePrgYn;
}
public void setGrdDatePrgYn(String grdDatePrgYn) {
this.grdDatePrgYn = grdDatePrgYn;
}
public String getSearchGrdStatus() {
return searchGrdStatus;
}
public void setSearchGrdStatus(String searchGrdStatus) {
this.searchGrdStatus = searchGrdStatus;
}
}

View File

@ -20,22 +20,44 @@ public class MberGrdDAO extends EgovAbstractDAO {
return (MberGrdVO) select("mberGrdDAO.selectMberSettingDetail", mberGrdVO);
}
// 등급제 설정 목록
@SuppressWarnings("unchecked")
public List<MberGrdVO> selectMberGrdSettingList(MberGrdVO mberGrdVO) throws Exception{
return (List<MberGrdVO>)list("mberGrdDAO.selectMberGrdSettingList", mberGrdVO);
}
// 회원별 설정 상세
public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception{
return (MberGrdVO) select("mberGrdDAO.selectMberGrdSettingDetail", mberGrdVO);
}
// 등급제 설정 일괄변경
public int updateGrdSetting(MberGrdVO mberGrdVO) throws Exception {
return update("mberGrdDAO.updateGrdSetting", mberGrdVO);
}
// 등급제 등급 목록
@SuppressWarnings("unchecked")
public List<MberGrdVO> selectMberGrdList(MberGrdVO mberGrdVO) throws Exception{
return (List<MberGrdVO>)list("mberGrdDAO.selectMberGrdList", mberGrdVO);
}
// 회원별 등급 상세
public MberGrdVO selectMberGrdDetail(MberGrdVO mberGrdVO) throws Exception{
return (MberGrdVO) select("mberGrdDAO.selectMberGrdDetail", mberGrdVO);
}
// 회원 등급제 대상여부 정보(사용자화면용)
public MberGrdVO selectMberGrdInfo(String mberId) throws Exception{
return (MberGrdVO) select("mberGrdDAO.selectMberGrdInfo", mberId);
}
// 회원별 등급 누적결제액 상세
public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception{
return (MberGrdVO) select("mberGrdDAO.selectMberGrdAmtDetail", mberGrdVO);
}
// 회원별 등급 등록
public void insertMberGrd(MberGrdVO mberGrdVO) throws Exception{
insert("mberGrdDAO.insertMberGrd", mberGrdVO);
@ -51,14 +73,29 @@ public class MberGrdDAO extends EgovAbstractDAO {
return update("mberGrdDAO.updateMberGrdAll", mberGrdVO);
}
// 문자할인, B선라인 대상자 초기화
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception {
return update("mberGrdDAO.updateMberGrdEndBySale", mberGrdVO);
}
// 회원별 등급 초기화
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
return update("mberGrdDAO.updateMberGrdEndAll", mberGrdVO);
}
// 회원별 등급 진행여부
public int selectMberGrdPrgCnt(String userId) throws Exception{
return (int) select("mberGrdDAO.selectMberGrdPrgCnt", userId);
public int selectMberGrdPrgCnt(String mberId) throws Exception{
return (int) select("mberGrdDAO.selectMberGrdPrgCnt", mberId);
}
// 회원별 이벤트 진행여부
public int selectMberEventPrgCnt(String mberId) throws Exception{
return (int) select("mberGrdDAO.selectMberEventPrgCnt", mberId);
}
// 회원별 등급 저장여부
public int selectMberGrdSaveCnt(String mberId) throws Exception{
return (int) select("mberGrdDAO.selectMberGrdSaveCnt", mberId);
}
@ -66,4 +103,17 @@ public class MberGrdDAO extends EgovAbstractDAO {
public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception{
insert("mberGrdDAO.insertMberGrdHist", mberGrdVO);
}
// 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용)
@SuppressWarnings("unchecked")
public List<MberGrdVO> selectMberGrdHistByGrdDateList(MberGrdVO mberGrdVO) throws Exception{
return (List<MberGrdVO>)list("mberGrdDAO.selectMberGrdHistByGrdDateList", mberGrdVO);
}
// 회원별 등급 히스토리 목록
@SuppressWarnings("unchecked")
public List<MberGrdVO> selectMberGrdHistList(MberGrdVO mberGrdVO) throws Exception{
return (List<MberGrdVO>)list("mberGrdDAO.selectMberGrdHistList", mberGrdVO);
}
}

View File

@ -1,14 +1,21 @@
package itn.let.sym.grd.service.impl;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import itn.let.mjo.pay.service.MjonPayService;
import itn.let.sym.grd.service.MberGrdService;
import itn.let.sym.grd.service.MberGrdVO;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uss.umt.service.EgovMberManageService;
import itn.let.uss.umt.service.MberManageVO;
@Service("mberGrdService")
public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberGrdService {
@ -16,6 +23,42 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
@Resource(name="mberGrdDAO")
MberGrdDAO mberGrdDAO;
@Resource(name = "mjonPayService")
private MjonPayService mjonPayService;
/** mberManageService */
@Resource(name = "mberManageService")
private EgovMberManageService mberManageService;
// 등급제 단가 추출 => 시스템 단가에 적용
@Override
public JoinSettingVO selectMberGrdDefaultInfo(JoinSettingVO sysJoinSetVO, String mberId) throws Exception {
// 공백제거
mberId = mberId.trim();
// Step 1. 등급제 시행 ON 일경우
if (StringUtils.isNotEmpty(mberId)) {
MberGrdVO mberGrdVO = new MberGrdVO();
MberGrdVO mberGrdVO1 = new MberGrdVO();
mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
mberGrdVO = new MberGrdVO();
mberGrdVO = selectMberGrdInfo(mberId);
if (null != mberGrdVO) {
if(mberGrdVO.getShortPrice() > 1 && mberGrdVO.getLongPrice() > 1 && mberGrdVO.getPicturePrice() > 1 && mberGrdVO.getPicture2Price() > 1 && mberGrdVO.getPicture3Price() > 1) {
sysJoinSetVO.setShortPrice(mberGrdVO.getShortPrice());
sysJoinSetVO.setLongPrice(mberGrdVO.getLongPrice());
sysJoinSetVO.setPicturePrice(mberGrdVO.getPicturePrice());
sysJoinSetVO.setPicture2Price(mberGrdVO.getPicture2Price());
sysJoinSetVO.setPicture3Price(mberGrdVO.getPicture3Price());
}
}
}
}
return sysJoinSetVO;
}
// 등급제 시행여부 변경
@Override
public int updateMberSetting(MberGrdVO mberGrdVO) throws Exception {
@ -29,11 +72,18 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
}
// 등급제 설정 목록
@Override
public List<MberGrdVO> selectMberGrdSettingList(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.selectMberGrdSettingList(mberGrdVO);
}
// 회원별 설정 상세
@Override
public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.selectMberGrdSettingDetail(mberGrdVO);
}
// 등급제 설정 일괄변경
@Override
public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception {
@ -56,6 +106,12 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
return updateCnt;
}
// 등급제 등급 목록
@Override
public List<MberGrdVO> selectMberGrdList(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.selectMberGrdList(mberGrdVO);
}
// 회원별 등급 상세
@Override
@ -63,6 +119,21 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
return mberGrdDAO.selectMberGrdDetail(mberGrdVO);
}
// 회원 등급제 대상여부 정보(사용자화면용)
@Override
public MberGrdVO selectMberGrdInfo(String mberId) throws Exception {
// 공백제거
mberId = mberId.trim();
return mberGrdDAO.selectMberGrdInfo(mberId);
}
// 회원별 등급 누적결제액 상세
@Override
public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.selectMberGrdAmtDetail(mberGrdVO);
}
// 회원별 등급 등록
@Override
public void insertMberGrd(MberGrdVO mberGrdVO) throws Exception {
@ -75,22 +146,140 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
mberGrdDAO.updateMberGrd(mberGrdVO);
}
// 회원별 등급 초기화
// 회원별 등급 일괄변경
@Override
public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.updateMberGrdAll(mberGrdVO);
int updateCnt1 = 0;
int updateCnt2 = 0;
// Step 1. 등급제 시행 ON 일경우
MberGrdVO mberGrdVO1 = new MberGrdVO();
mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
// 문자할인, B선라인 대상자 초기화
updateCnt1 = updateMberGrdEndBySale(mberGrdVO);
// 회원별 등급 일괄변경
updateCnt2 = mberGrdDAO.updateMberGrdAll(mberGrdVO);
}
return updateCnt1 + updateCnt2;
}
// 회원별 등급 일괄변경
// 회원별 등급 초기화
@Override
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.updateMberGrdEndAll(mberGrdVO);
}
// 문자할인, B선라인 대상자 초기화
@Override
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.updateMberGrdEndBySale(mberGrdVO);
}
// 회원별 등급 적용
@Override
public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception {
// 현재 날짜 구하기
LocalDate now = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 포맷 정의
String nowDate = now.format(formatter); // 포맷 적용
mberGrdVO.setRegId(mberGrdVO.getMberId());
mberGrdVO.setEditId(mberGrdVO.getMberId());
// Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)
MberGrdVO mberGrdVO1 = new MberGrdVO();
mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
mberGrdVO.setGrdDate(mberGrdVO1.getGrdDate());
// Step 2. /협의/스팸/비선등급 적용 제외
// 문자할인여부(1: 할인, 0: 미할인)
int isMsgSalePrice = mjonPayService.selectMsgSalePriceCnt(mberGrdVO.getMberId());
if(isMsgSalePrice == 0) {
// B선 전송사 이용고객 => 등급제대상 제외처리
MberManageVO mberManageVO = new MberManageVO();
mberManageVO.setMberId(mberGrdVO.getMberId());
String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO);
if (blineCode != null && blineCode.equals("N")) {
// Step 3. 누적결제금액(이벤트금액 제외) 추출 등급 조회
MberGrdVO mberGrdVO3 = new MberGrdVO();
mberGrdVO3 = selectMberGrdAmtDetail(mberGrdVO);
if (null != mberGrdVO3) {
mberGrdVO.setTotAmt(mberGrdVO3.getTotAmt());
mberGrdVO.setGrdSetNo(mberGrdVO3.getGrdSetNo());
// Step 4. 등급제 설정값 조회
MberGrdVO mberGrdVO4 = new MberGrdVO();
mberGrdVO4 = selectMberGrdSettingDetail(mberGrdVO);
if (null != mberGrdVO4) {
mberGrdVO.setAmt("0");
mberGrdVO.setTotAmt(mberGrdVO.getTotAmt());
mberGrdVO.setShortPrice(mberGrdVO4.getShortPrice());
mberGrdVO.setLongPrice(mberGrdVO4.getLongPrice());
mberGrdVO.setPicturePrice(mberGrdVO4.getPicturePrice());
mberGrdVO.setPicture2Price(mberGrdVO4.getPicture2Price());
mberGrdVO.setPicture3Price(mberGrdVO4.getPicture3Price());
mberGrdVO.setGrdDate(mberGrdVO.getGrdDate());
mberGrdVO.setGrdStartDate(nowDate + " 00:00:00");
mberGrdVO.setGrdEndDate("9999:12:31 23:59:59");
mberGrdVO.setGrdStatus("Y");
// Step 5. 인서트 Or 업데이트
MberGrdVO mberGrdVO5 = new MberGrdVO();
mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
if (null != mberGrdVO5) {
// 업데이트 => 현재 등급보다 낮거나 같으면 업데이트 처리
if (mberGrdVO5.getGrdSetNo() >= mberGrdVO.getGrdSetNo()) {
updateMberGrd(mberGrdVO);
// 회원별 등급 히스토리 인서트
insertMberGrdHist(mberGrdVO);
}
}
else {
// 인서트
insertMberGrd(mberGrdVO);
// 회원별 등급 히스토리 인서트
insertMberGrdHist(mberGrdVO);
}
}
}
}
}
}
}
// 회원별 등급 진행여부
@Override
public int selectMberGrdPrgCnt(String userId) throws Exception{
return mberGrdDAO.selectMberGrdPrgCnt(userId);
public int selectMberGrdPrgCnt(String mberId) throws Exception{
// 공백제거
mberId = mberId.trim();
return mberGrdDAO.selectMberGrdPrgCnt(mberId);
}
// 회원별 이벤트 진행여부
@Override
public int selectMberEventPrgCnt(String mberId) throws Exception{
// 공백제거
mberId = mberId.trim();
return mberGrdDAO.selectMberEventPrgCnt(mberId);
}
// 회원별 등급 저장여부
@Override
public int selectMberGrdSaveCnt(String mberId) throws Exception{
// 공백제거
mberId = mberId.trim();
return mberGrdDAO.selectMberGrdSaveCnt(mberId);
}
@ -99,4 +288,17 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
public void insertMberGrdHist(MberGrdVO mberGrdVO) throws Exception {
mberGrdDAO.insertMberGrdHist(mberGrdVO);
}
// 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용)
@Override
public List<MberGrdVO> selectMberGrdHistByGrdDateList(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.selectMberGrdHistByGrdDateList(mberGrdVO);
}
// 회원별 등급 히스토리 목록
@Override
public List<MberGrdVO> selectMberGrdHistList(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.selectMberGrdHistList(mberGrdVO);
}
}

View File

@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.LoginVO;
import itn.let.sym.grd.service.MberGrdService;
import itn.let.sym.grd.service.MberGrdVO;
@ -127,4 +128,115 @@ public class MberGrdController {
return modelAndView;
}
// 회원별 등급 적용 테스트
@RequestMapping(value = "/sym/grd/mberGrdSaveAjax.do")
public ModelAndView mberGrdSaveAjax(
@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
// 로그인VO에서 사용자 정보 가져오기
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String frstRegisterId = loginVO == null ? "" : loginVO.getId();
mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID
try{
// 회원별 등급 적용
mberGrdVO.setAmt("0"); // 결제금액
mberGrdVO.setMberId("nopay"); // 결제자
mberGrdService.mberGrdSaveByUser(mberGrdVO);
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
return modelAndView;
}
/**
* 회원별 등급제 목록 화면
*
* @param mberGrdVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/sym/grd/selectMberGrdList.do")
public String selectMetaTagList(@ModelAttribute("searchVO") MberGrdVO mberGrdVO, ModelMap model) throws Exception{
/** paging */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(mberGrdVO.getPageIndex());
paginationInfo.setRecordCountPerPage(mberGrdVO.getPageUnit());
paginationInfo.setPageSize(mberGrdVO.getPageSize());
mberGrdVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
mberGrdVO.setLastIndex(paginationInfo.getLastRecordIndex());
mberGrdVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(mberGrdVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
mberGrdVO.setSearchSortCnd("regDate");
mberGrdVO.setSearchSortOrd("desc");
}
List<MberGrdVO> resultList = mberGrdService.selectMberGrdList(mberGrdVO);
model.addAttribute("resultList", resultList);
paginationInfo.setTotalRecordCount( resultList.size()> 0 ? resultList.get(0).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo);
return "/sym/grd/mberGrdList";
}
// 등급제 적용여부 체크
@RequestMapping(value = "/sym/grd/mberGrdChkAjax.do")
public ModelAndView mberGrdChkAjax(
@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
MberGrdVO rtnMberGrdVO = new MberGrdVO();
// 로그인VO에서 사용자 정보 가져오기
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String frstRegisterId = loginVO == null ? "" : loginVO.getId();
mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID
try{
// @@@@@ 등급제 적용여부 체크
//MberGrdVO rtnMberGrdVO = new MberGrdVO();
rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
if (null != rtnMberGrdVO) {
// 등급제 적용
}
else {
isSuccess = false;
msg = "종료";
}
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("rtnMberGrdVO", rtnMberGrdVO);
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
return modelAndView;
}
}

View File

@ -186,6 +186,7 @@ public interface EgovUserManageService {
public void updateOneUserSmishingYn(UserManageVO userManageVO) throws Exception;
// 스미싱의심 /오프 - 상세에서 단일로 => 슬랙, 문자 알림 No
// B선 회원이 아닌경우 전송사 JJ로 변경 로직 포함
public void updateOneUserSmishingYnNotAlert(UserManageVO userManageVO) throws Exception;
// 알림톡 스미싱의심 /오프

View File

@ -20,6 +20,7 @@ import itn.com.cmm.util.DateUtil;
import itn.let.fax.user.service.FaxGroupDataVO;
import itn.let.fax.user.service.impl.FaxDAO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.mjo.msgagent.service.MjonMsgAgentStsService;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.pay.service.MjonPayVO;
import itn.let.mjo.pay.service.impl.MjonPayDAO;
@ -32,6 +33,7 @@ import itn.let.sym.site.service.JoinSettingVO;
import itn.let.sym.site.service.SiteManagerVO;
import itn.let.sym.site.service.impl.SiteManagerDAO;
import itn.let.uat.uia.service.impl.MberManageDAO;
import itn.let.uss.umt.service.EgovMberManageService;
import itn.let.uss.umt.service.EgovUserManageService;
import itn.let.uss.umt.service.MberManageVO;
import itn.let.uss.umt.service.UserDefaultVO;
@ -113,6 +115,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
@Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService;
/** mberManageService */
@Resource(name = "mberManageService")
private EgovMberManageService mberManageService;
@Resource(name = "mjonMsgAgentStsService")
private MjonMsgAgentStsService mjonMsgAgentStsService;
/**
* 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인
* @param checkId 중복여부 확인대상 아이디
@ -565,9 +574,20 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
}
// 스미싱의심 /오프 단일 => 슬랙, 문자 알림 No
// B선 회원이 아닌경우 전송사 JJ로 변경 로직 포함
public void updateOneUserSmishingYnNotAlert(UserManageVO userManageVO) throws Exception {
// 업데이트
userManageDAO.updateUserSmishingYn(userManageVO);
// B선 전송사 이용고객 => 전송사 JJ로 변경안함
MberManageVO mberManageVO = new MberManageVO();
mberManageVO.setMberId(userManageVO.getMberId());
String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO);
if (blineCode != null && blineCode.equals("N")) {
// 전송사 JJ로 변경
mberManageVO.setHotlineAgentCode("05"); // 전송사 JJ
mjonMsgAgentStsService.updateMberHotlineAgentCodeInfo(mberManageVO);
}
}
// 알림톡 스미싱의심 /오프

View File

@ -1366,7 +1366,7 @@ public class EgovUserManageController {
/*
* 알림톡/친구톡 최근 발송내역 리스트 불러오기
* */
*/
KakaoVO sendKakaoVO = new KakaoVO();
sendKakaoVO.setSearchCondition2("N");//예약건은 제외하기
@ -1377,38 +1377,43 @@ public class EgovUserManageController {
sendKakaoVO.setSearchSortCnd("reqDate");
sendKakaoVO.setSearchSortOrd("desc");
sendKakaoVO.setFirstIndex(0);
sendKakaoVO.setPageType("sand");
List<KakaoVO> kakaoResultList = new ArrayList<KakaoVO>();
kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO);
model.addAttribute("kakaoResultList", kakaoResultList);
model.addAttribute("kakaoResultList", kakaoResultList);
/*
* 알림톡/친구톡 예약발송 리스트 불러오기
* */
KakaoVO reserveKakaoVO = new KakaoVO();
reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기
reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기
reserveKakaoVO.setUserId(reqMberManageVO.getMberId());
*/
KakaoVO reserveKakaoVO = new KakaoVO();
reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기
reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기
reserveKakaoVO.setUserId(reqMberManageVO.getMberId());
// 문자발송 완료건은 모두 보이도록 처리
//kakaoVO.setMsgType("8");
reserveKakaoVO.setSearchSortCnd("reqDate");
reserveKakaoVO.setSearchSortOrd("desc");
reserveKakaoVO.setFirstIndex(0);
reserveKakaoVO.setSearchSortCnd("reqDate");
reserveKakaoVO.setSearchSortOrd("desc");
reserveKakaoVO.setFirstIndex(0);
reserveKakaoVO.setPageType("sand");
List<KakaoVO> kakaoReserveList = new ArrayList<KakaoVO>();
kakaoReserveList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(reserveKakaoVO);
model.addAttribute("kakaoReserveList", kakaoReserveList);
model.addAttribute("kakaoReserveList", kakaoReserveList);
/*
* 팩스 발송 내역 리스트 불러오기
* */
* 알림톡 지연처리 알림톡 내용 불러오기(30분 지연처리된 알림톡 내역 불러오기)
*/
List<KakaoVO> kakaoATDelaySentList = mjonKakaoATService.selectKakaoATDelaySentList(reqMberManageVO.getMberId());
model.addAttribute("kakaoATDelaySentList", kakaoATDelaySentList);
}
{//팩스 발송 내역 리스트 불러오기
List<FaxGroupDataVO> faxSendListVO = faxService.selectFaxMainList(new FaxGroupDataVO(reqMberManageVO.getMberId()));
model.addAttribute("faxSendListVO", faxSendListVO);
//}
}
{//사용중인 전송사 정보 조회하기 - 사용자 전용 전송사 리스트 표시용

View File

@ -348,6 +348,8 @@
M2.yellowId ,
M2.userNm ,
M2.atSmishingYn ,
M2.atDelayCompleteYn,
M2.atDelayYn,
( SELECT COUNT(0)
FROM MJ_MSG_DATA C
WHERE C.DEL_FLAG = 'N'
@ -451,46 +453,49 @@
MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey ,
MKPI.YELLOW_ID AS yellowId ,
LTM.MBER_NM AS userNm ,
LTM.AT_SMISHING_YN AS atSmishingYn,
LTM.AT_SMISHING_YN AS atSmishingYn,
BIZ_UMID AS bizUmid,
BL.CALL_STATUS AS callStatus,
M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn
FROM (
SELECT MG.USER_ID ,
MG.MSG_GROUP_ID ,
MG.MSG_GROUP_CNT ,
MG.SMS_TXT ,
MG.SUBJECT ,
MG.REGDATE ,
MG.REQ_DATE ,
MD.RSLT_DATE ,
MG.CALL_FROM ,
MG.TOT_PRICE ,
MG.EACH_PRICE ,
MG.DEL_FLAG ,
MG.MSG_TYPE ,
MG.FILE_CNT ,
MG.AGENT_CODE ,
MG.RESERVE_YN ,
MG.RESERVE_C_YN ,
MG.CANCELDATE ,
MD.MSG_SEQ ,
MD.CALL_TO ,
MD.CUR_STATE ,
MD.RSLT_CODE ,
MD.RSLT_CODE2 ,
CASE
M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn,
M.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn,
M.AT_DELAY_YN AS atDelayYn
FROM
(SELECT
MG.USER_ID
, MG.MSG_GROUP_ID
, MG.MSG_GROUP_CNT
, MG.SMS_TXT
, MG.SUBJECT
, MG.REGDATE
, MG.REQ_DATE
, MD.RSLT_DATE
, MG.CALL_FROM
, MG.TOT_PRICE
, MG.EACH_PRICE
, MG.DEL_FLAG
, MG.MSG_TYPE
, MG.FILE_CNT
, MG.AGENT_CODE
, MG.RESERVE_YN
, MG.RESERVE_C_YN
, MG.CANCELDATE
, MD.MSG_SEQ
, MD.CALL_TO
, MD.CUR_STATE
, MD.RSLT_CODE
, MD.RSLT_CODE2
, CASE
WHEN MG.MSG_TYPE = '8'
THEN '알림톡'
WHEN MG.MSG_TYPE = '9'
THEN '친구톡'
END msgTypeName ,
CASE
END msgTypeName
, CASE
WHEN MG.MSG_TYPE = '8'
THEN '1'
ELSE '2'
END orderByCode ,
(
END orderByCode
, (
CASE
WHEN MD.RSLT_CODE = '7000'
THEN 'S'
@ -498,18 +503,29 @@
THEN 'W'
ELSE 'F'
END
) AS result ,
MSG_NOTICETALK_SENDER_KEY ,
MSG_NOTICETALK_TMP_KEY,
MD.BIZ_UMID,
MD.BIZ_KAKAO_RESEND_YN
FROM MJ_MSG_DATA MD ,
MJ_MSG_GROUP_DATA MG
WHERE MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
) AS result
, MSG_NOTICETALK_SENDER_KEY
, MSG_NOTICETALK_TMP_KEY
, MD.BIZ_UMID
, MD.BIZ_KAKAO_RESEND_YN
, MG.AT_DELAY_COMPLETE_YN
, MG.AT_DELAY_YN
FROM
MJ_MSG_DATA MD
, MJ_MSG_GROUP_DATA MG
WHERE 1=1
AND MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
AND MD.DEL_FLAG = 'N'
<!-- JSPark 2023.03.24 알림톡 전송완료 목록은 (즉시 + 예약 발송완료) 노출 -->
<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
<!-- JSPark 2023.07.10 알림톡 전송완료 목록은 (즉시 + 예약 발송완료 + 처리안된 지연문자(즉시,예약) 노출 -->
<![CDATA[
AND CASE
WHEN MG.RESERVE_YN = 'N'
THEN (MG.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE))
WHEN MG.RESERVE_YN = 'Y'
THEN (MG.REQ_DATE <= NOW() OR (MG.AT_DELAY_YN = 'Y' AND MG.AT_DELAY_COMPLETE_YN = 'N'))
END
]]>
<isNotEmpty property="userId">
AND MG.USER_ID = #userId#
</isNotEmpty>
@ -586,6 +602,11 @@
</isNotEmpty>
</isEmpty>
<isNotEmpty property="pageType">
<isEqual property="pageType" compareValue="sand">
AND M.CUR_STATE = '3'
</isEqual>
</isNotEmpty>
<isNotEmpty property="msgType">
<isEqual property="msgType" compareValue="8">
@ -729,9 +750,9 @@
THEN '단문'
ELSE '장문'
END BIZ_KAKAO_RESEND_TYPE
, A.BIZ_KAKAO_RESEND_DATA
, A.BIZ_KAKAO_JSON_FILE
, A.BIZ_UMID
, A.BIZ_KAKAO_RESEND_DATA
, A.BIZ_KAKAO_JSON_FILE
, A.BIZ_UMID
<include refid="KakaoSentDAO.selectJoinQuery"/>
<isNotEmpty property="userId">
AND B.USER_ID = #userId#
@ -751,7 +772,12 @@
AND A.MSG_TYPE IN ('8','9')
</isEmpty>
<![CDATA[
AND B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
AND CASE
WHEN B.RESERVE_YN = 'N'
THEN (B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE))
WHEN B.RESERVE_YN = 'Y'
THEN (B.REQ_DATE <= NOW() OR (B.AT_DELAY_YN = 'Y' AND B.AT_DELAY_COMPLETE_YN = 'N'))
END
]]>
)M
LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
@ -1058,6 +1084,9 @@
M2.msgNoticetalkTmpKey ,
M2.yellowId ,
M2.userNm ,
M2.atSmishingYn,
M2.atDelayCompleteYn,
M2.atDelayYn,
( SELECT COUNT(0)
FROM MJ_MSG_DATA C
WHERE C.DEL_FLAG = 'N'
@ -1158,12 +1187,15 @@
orderByCode AS orderByCode ,
RESULT AS msgResult ,
MSG_NOTICETALK_SENDER_KEY AS msgNoticetalkSenderKey ,
MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey ,
MKPI.YELLOW_ID AS yellowId ,
LTM.MBER_NM AS userNm ,
MSG_NOTICETALK_TMP_KEY AS msgNoticetalkTmpKey ,
MKPI.YELLOW_ID AS yellowId ,
LTM.MBER_NM AS userNm ,
LTM.AT_SMISHING_YN AS atSmishingYn,
BIZ_UMID AS bizUmid,
BL.CALL_STATUS AS callStatus,
M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn
M.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn,
M.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn,
M.AT_DELAY_YN AS atDelayYn
FROM (
SELECT MG.USER_ID ,
MG.MSG_GROUP_ID ,
@ -1207,16 +1239,20 @@
THEN 'W'
ELSE 'F'
END
) AS result ,
MSG_NOTICETALK_SENDER_KEY ,
MSG_NOTICETALK_TMP_KEY,
MD.BIZ_UMID,
MD.BIZ_KAKAO_RESEND_YN
) AS result
, MSG_NOTICETALK_SENDER_KEY
, MSG_NOTICETALK_TMP_KEY
, MD.BIZ_UMID
, MD.BIZ_KAKAO_RESEND_YN
, MG.AT_DELAY_COMPLETE_YN
, MG.AT_DELAY_YN
, MD.REFUND_YN
FROM MJ_MSG_DATA MD ,
MJ_MSG_GROUP_DATA MG
WHERE MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
AND MD.DEL_FLAG = 'N'
<isNotEmpty property="userId">
AND MG.USER_ID = #userId#
</isNotEmpty>
@ -1293,6 +1329,12 @@
</isNotEmpty>
</isEmpty>
<isNotEmpty property="pageType">
<isEqual property="pageType" compareValue="sand">
AND M.AT_DELAY_COMPLETE_YN ='Y'
AND M.REFUND_YN = 'N'
</isEqual>
</isNotEmpty>
<isNotEmpty property="msgType">
<isEqual property="msgType" compareValue="8">
@ -1386,7 +1428,7 @@
, B.SMS_TXT
, B.SUBJECT
, B.REGDATE
, B.REQ_DATE
, A.REQ_DATE
, A.RSLT_DATE
, B.CALL_FROM
, B.TOT_PRICE
@ -2252,10 +2294,102 @@
</select>
<select id="mjonKakaoATDAO.selectKakaoATDelaySentList" parameterClass="String" resultClass="KakaoVO">
SELECT
A.msgId AS msgId
, A.msgGroupId AS msgGroupId
, A.userId AS userId
, MGD.TOT_PRICE AS totPrice
, MGD.EACH_PRICE AS eachPrice
, MGD.MSG_GROUP_CNT AS msgGroupCnt
, MGD.MSG_TYPE AS msgType
, CASE
WHEN MGD.MSG_TYPE = '8'
THEN '알림톡'
WHEN MGD.MSG_TYPE = '9'
THEN '친구톡'
END msgTypeName
, (SELECT COUNT(0) FROM MJ_MSG_DATA A
WHERE 1=1
AND A.DEL_FLAG = 'N'
AND A.MSG_GROUP_ID = A.msgGroupId
AND (CASE
WHEN A.AGENT_CODE = '04' AND A.RSLT_CODE = '7000'
THEN 'S'
WHEN (A.RSLT_CODE IS NULL
AND A.RSLT_CODE2 IS NULL
AND A.SENT_DATE IS NULL
AND A.RSLT_DATE IS NULL
)
THEN 'W'
ELSE 'F'
END ) = 'S'
) AS successCnt
, MGD.SMS_TXT AS smsTxt
, A.userdata
, A.curState
, MKPI.YELLOW_ID AS yellowId
, DATE_FORMAT(A.sentDate, '%Y-%m-%d %T') AS sentDate
, DATE_FORMAT(A.reqDate, '%Y-%m-%d %T') AS reqdate
, DATE_FORMAT(MGD.REGDATE, '%Y-%m-%d %T') AS regdate
, A.result AS resultType
, MGD.AT_DELAY_YN AS atDelayYn
, MGD.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn
, MGD.RESERVE_YN AS reserveYn
FROM
(SELECT
a.MSG_ID AS msgId
, a.MSG_GROUP_ID AS msgGroupId
, a.USER_ID AS userId
, a.USERDATA AS userdata
, a.CUR_STATE AS curState
, a.SENT_DATE AS sentDate
, a.REQ_DATE AS reqDate
, (CASE
WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE = '7000')
THEN 'S'
WHEN( A.RSLT_CODE IS NULL
AND A.RSLT_CODE2 IS NULL
AND A.SENT_DATE IS NULL
AND A.RSLT_DATE IS NULL
)THEN 'W'
ELSE 'F'
END) AS result
, A.RSLT_CODE AS rsltCode
, A.RSLT_CODE2 AS rsltCode2
, A.RSLT_NET AS rsltNet
, A.CALL_FROM AS callFrom
, A.CALL_TO AS callTo
, A.SMS_TXT AS smsTxt
, A.MSG_TYPE AS msgType
, A.AGENT_CODE AS agentCode
, A.DEL_FLAG AS delFlag
, A.NEO_TYPE AS neoType
, A.RESERVE_C_YN AS reserveCYn
, A.REFUND_YN AS refundYn
, A.MSG_NOTICETALK_SENDER_KEY
, A.MSG_NOTICETALK_TMP_KEY
FROM
MJ_MSG_DATA A
WHERE 1=1
AND A.USER_ID = #userId#
AND A.MSG_TYPE IN (8)
GROUP BY A.MSG_GROUP_ID
)A
LEFT JOIN MJ_MSG_GROUP_DATA MGD
ON A.msgGroupId = MGD.MSG_GROUP_ID
LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
ON A.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY
AND MKPI.USER_ID = A.userId
WHERE 1=1
AND MGD.USER_ID = #userId#
AND MGD.AT_DELAY_YN = 'Y'
AND MGD.AT_DELAY_COMPLETE_YN = 'N'
AND MGD.CANCELDATE IS NULL
AND A.curState = '0'
AND A.refundYn = 'N'
ORDER BY
reqDate DESC
,sentDate DESC
</select>
</sqlMap>

View File

@ -375,7 +375,9 @@
AND MG.DEL_FLAG ='N'
/* JSPark 2023.03.23 => 예약건중 발송완료건도 발송결과에 노출되도록 수정 */
/* AND MG.RESERVE_YN = 'N' */
<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
<![CDATA[
AND MG.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
]]>
<isNotEmpty property="reserveCYn">
AND MG.RESERVE_C_YN = #reserveCYn#

View File

@ -766,9 +766,20 @@
) D ON A.MSG_TYPE = D.CODE /** 메세지타입 */
WHERE 1 = 1
AND A.MSG_TYPE IN (4, 6)
<!--
AND ((IFNULL(DELAY_YN, 'N') = 'Y' AND DATE_ADD(NOW(), INTERVAL 60 MINUTE) >= REQ_DATE)
OR (IFNULL(DELAY_YN, 'N') = 'N' AND NOW() >= REQ_DATE)
OR (RESERVE_YN = 'Y' AND NOW() >= REQ_DATE))
-->
<!-- JSPark 2023.07.11 문자 전송완료 목록은 (즉시 + 예약 발송완료 + 처리안된 지연문자(즉시,예약) 노출 -->
<![CDATA[
AND CASE
WHEN RESERVE_YN = 'N'
THEN (REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE))
WHEN RESERVE_YN = 'Y'
THEN (REQ_DATE <= NOW() OR (IFNULL(DELAY_YN, 'N') = 'Y' AND IFNULL(DELAY_COMPLETE_YN, 'N') = 'N'))
END
]]>
<isNotEmpty property="searchKeyword">
<isEqual property="searchCondition" compareValue="" >
AND (
@ -2055,23 +2066,24 @@
<select id="mjonMsgDAO.selectMberManageInfo" parameterClass="String" resultClass="mberManageVO">
SELECT
MBER_ID AS mberId
, MBER_NM AS mberNm
, SHORT_PRICE AS shortPrice
, LONG_PRICE AS longPrice
, PICTURE_PRICE AS picturePrice
, PICTURE2_PRICE AS picture2Price
, PICTURE3_PRICE AS picture3Price
, KAKAO_AT_PRICE AS kakaoAtPrice
, FAX_PRICE AS faxPrice
, USER_MONEY AS userMoney
, USER_POINT AS userPoint
, DEPT AS dept
, MBTLNUM AS moblphonNo
, MANAGER_NM AS managerNm
, EXCEPT_SPAM_YN AS exceptSpamYn
, HOTLINE_AGENT_CODE AS hotlineAgentCode
, BLINE_CODE AS blineCode
MBER_ID AS mberId
, MBER_NM AS mberNm
, SHORT_PRICE AS shortPrice
, LONG_PRICE AS longPrice
, PICTURE_PRICE AS picturePrice
, PICTURE2_PRICE AS picture2Price
, PICTURE3_PRICE AS picture3Price
, KAKAO_AT_PRICE AS kakaoAtPrice
, FAX_PRICE AS faxPrice
, USER_MONEY AS userMoney
, USER_POINT AS userPoint
, DEPT AS dept
, MBTLNUM AS moblphonNo
, MANAGER_NM AS managerNm
, EXCEPT_SPAM_YN AS exceptSpamYn
, HOTLINE_AGENT_CODE AS hotlineAgentCode
, BLINE_CODE AS blineCode
, AT_SMISHING_YN AS atSmishingYn
FROM LETTNGNRLMBER
WHERE MBER_ID = #userId#
@ -2208,8 +2220,9 @@
FILE_CNT,
TOT_PRICE,
EVENT_YN,
DELAY_YN
, BIZ_KAKAO_RESEND_ORGNL_TXT
DELAY_YN,
AT_DELAY_YN,
BIZ_KAKAO_RESEND_ORGNL_TXT
)
VALUES
@ -2233,8 +2246,9 @@
#fileCnt#,
#totPrice#,
#eventYn#,
#delayYn#
, #kakaoSubMagOrgnlTxt#
#delayYn#,
#atDelayYn#,
#kakaoSubMagOrgnlTxt#
)
</insert>
@ -5773,15 +5787,18 @@
<select id="mjonMsgDAO.selectMsgGroupDataByGoupId" parameterClass="mjonResvMsgVO" resultClass="mjonMsgVO">
SELECT MSG_GROUP_ID AS msgGroupId,
USER_ID AS userId,
SMS_TXT AS smsTxt,
EACH_PRICE AS eachPrice,
TOT_PRICE AS totPrice,
MSG_GROUP_CNT AS msgGroupCnt
FROM MJ_MSG_GROUP_DATA
WHERE USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
SELECT
MSG_GROUP_ID AS msgGroupId
, USER_ID AS userId
, SMS_TXT AS smsTxt
, EACH_PRICE AS eachPrice
, TOT_PRICE AS totPrice
, MSG_GROUP_CNT AS msgGroupCnt
FROM
MJ_MSG_GROUP_DATA
WHERE 1=1
AND USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
ORDER BY MSG_GROUP_ID DESC
LIMIT 1
@ -5819,6 +5836,25 @@
</update>
<!-- mj_msg_data 테이블 예약 지연 문자 발송 요청 값 수정 -->
<update id="mjonMsgDAO.updateMsgDelaySendReserveTimeMsgDataFlag" parameterClass="mjonMsgVO">
UPDATE MJ_MSG_DATA
SET REQ_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) < 0
THEN REQ_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) >= 30
THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE)
END
]]>
WHERE USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
</update>
<update id="mjonMsgDAO.updateMsgDelaySendRealTimeMsgGroupDataFlag" parameterClass="mjonMsgVO">
UPDATE MJ_MSG_GROUP_DATA
@ -5828,12 +5864,35 @@
</update>
<!-- mj_msg_group_data 테이블 예약 지연 문자 발송 요청시간 수정 -->
<update id="mjonMsgDAO.updateMsgDelaySendReserveTimeMsgGroupDataFlag" parameterClass="mjonMsgVO">
UPDATE MJ_MSG_GROUP_DATA
SET REQ_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) < 0
THEN REQ_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) >= 30
THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE)
END
]]> ,
DELAY_COMPLETE_YN = 'Y'
WHERE USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
</update>
<select id="mjonMsgDAO.selectMsgGroupDataReqDateList" parameterClass="mjonMsgResvVO" resultClass="mjonMsgResvVO">
SELECT DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T' ) AS strReqDate
FROM MJ_MSG_GROUP_DATA
SELECT
DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T' ) AS strReqDate
FROM
MJ_MSG_GROUP_DATA
WHERE 1=1
AND USER_ID = #userId#
AND USER_ID = #userId#
<iterate prepend="AND MSG_GROUP_ID IN" open="(" close=")" conjunction="," property="msgGroupIdList">
#msgGroupIdList[]#
</iterate>
@ -6563,5 +6622,74 @@
ORDER BY M.orderByCode
</select>
<update id="mjonMsgDAO.updateKakaoAtDelayCancelMsgDataFlag" parameterClass="mjonMsgVO">
UPDATE
MJ_MSG_DATA
SET
REFUND_YN = 'Y'
, REQ_DATE = NOW()
, RESULT_LOG_UPDT_PNTTM = NOW()
, CUR_STATE = '3'
, RSLT_CODE = '7300'
WHERE 1=1
AND USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
</update>
<update id="mjonMsgDAO.updateKakaoAtDelayCancelMsgGroupDataFlag" parameterClass="mjonMsgVO">
UPDATE
MJ_MSG_GROUP_DATA
SET
CANCELDATE = NOW()
, REQ_DATE = NOW()
, AT_DELAY_COMPLETE_YN = 'Y'
WHERE 1=1
AND USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
</update>
<update id="mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgDataFlag" parameterClass="mjonMsgVO">
UPDATE
MJ_MSG_DATA
SET
REQ_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) < 0
THEN REQ_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) >= 30
THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE)
END
]]>
WHERE 1=1
AND USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
</update>
<update id="mjonMsgDAO.updateKakaoAtDelaySendRealTimeMsgGroupDataFlag" parameterClass="mjonMsgVO">
UPDATE
MJ_MSG_GROUP_DATA
SET
REQ_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) < 0
THEN REQ_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE) >= 30
THEN DATE_ADD(REQ_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(REQ_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQ_DATE)) MINUTE)
END
]]>
, AT_DELAY_COMPLETE_YN = 'Y'
WHERE 1=1
AND USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
</update>
</sqlMap>

View File

@ -445,12 +445,17 @@
</select>
<select id="MjonReservMsgDAO.selectMsgSeqListByGroupId" parameterClass="mjonMsgResvVO" resultClass="mjonMsgResvVO">
SELECT USERDATA AS userData
FROM MJ_MSG_DATA
WHERE USER_ID = #userId#
AND MSG_GROUP_ID = #msgGroupId#
SELECT
A.USERDATA AS userData
, DATE_FORMAT(A.REQ_DATE, '%Y-%m-%d %T' ) AS reqdate
, B.RESERVE_YN AS reserveYn
FROM
MJ_MSG_DATA A
, MJ_MSG_GROUP_DATA B
WHERE A.MSG_GROUP_ID = B.MSG_GROUP_ID
AND A.USER_ID = #userId#
AND A.MSG_GROUP_ID = #msgGroupId#
ORDER BY A.REQ_DATE ASC
</select>
<select id="MjonReservMsgDAO.selectMjonMsgGroupData" parameterClass="mjonMsgResvVO" resultClass="mjonMsgVO">
@ -623,6 +628,7 @@
</update>
<!-- 현대퓨처넷 예약문자 30분 딜레이 정상 전송 처리 -->
<update id="MjonReservMsgDAO.updateRealTimeHFNSmsMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE SMS_MSG
@ -634,6 +640,27 @@
</update>
<!-- 현대퓨처넷 예약 단문 지연처리 문자 정상 발송 -->
<update id="MjonReservMsgDAO.updateReserveTimeHFNSmsMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE SMS_MSG
SET TR_SENDDATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), TR_SENDDATE) < 0
THEN TR_SENDDATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), TR_SENDDATE) >= 30
THEN DATE_ADD(TR_SENDDATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(TR_SENDDATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), TR_SENDDATE)) MINUTE)
END
]]>
WHERE 1=1
<iterate prepend="AND TR_ID IN" open="(" close=")" conjunction="," property="userDataList">
#userDataList[]#
</iterate>
</update>
<update id="MjonReservMsgDAO.updateRealTimeHFNMmsMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE MMS_MSG
@ -645,6 +672,27 @@
</update>
<!-- 현대퓨처넷 예약 장문/그림 지연처리 문자 정상 발송 -->
<update id="MjonReservMsgDAO.updateReserveTimeHFNMmsMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE MMS_MSG
SET REQDATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQDATE) < 0
THEN REQDATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQDATE) >= 30
THEN DATE_ADD(REQDATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(REQDATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQDATE)) MINUTE)
END
]]>
WHERE 1=1
<iterate prepend="AND ID IN" open="(" close=")" conjunction="," property="userDataList">
#userDataList[]#
</iterate>
</update>
<update id="MjonReservMsgDAO.updateRealTimeIMOMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE NEO_MSG
@ -681,6 +729,35 @@
</update>
<update id="MjonReservMsgDAO.updateReserveTimeJJMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE MTMSG_DATA
SET INPUT_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE) < 0
THEN INPUT_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE) >= 30
THEN DATE_ADD(INPUT_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(INPUT_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE)) MINUTE)
END
]]> ,
RES_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE) < 0
THEN RES_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE) >= 30
THEN DATE_ADD(RES_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(RES_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE)) MINUTE)
END
]]>
WHERE 1=1
<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
#userDataList[]#
</iterate>
</update>
<update id="MjonReservMsgDAO.updateRealTimeIVTMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
@ -693,6 +770,27 @@
</update>
<!-- 인비토 예약 지연처리 문자 즉시 발송 -->
<update id="MjonReservMsgDAO.updateReserveTimeIVTMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE SMSQ_SEND
SET SENDREQ_TIME =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), SENDREQ_TIME) < 0
THEN SENDREQ_TIME
WHEN TIMESTAMPDIFF(MINUTE, NOW(), SENDREQ_TIME) >= 30
THEN DATE_ADD(SENDREQ_TIME, INTERVAL -30 MINUTE)
ELSE DATE_ADD(SENDREQ_TIME, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), SENDREQ_TIME)) MINUTE)
END
]]>
WHERE 1=1
<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
#userDataList[]#
</iterate>
</update>
<update id="MjonReservMsgDAO.updateRealTimeJJB01MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE MTMSG_B1_DATA
@ -705,6 +803,36 @@
</update>
<update id="MjonReservMsgDAO.updateReserveTimeJJB01MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE MTMSG_B1_DATA
SET INPUT_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE) < 0
THEN INPUT_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE) >= 30
THEN DATE_ADD(INPUT_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(INPUT_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE)) MINUTE)
END
]]> ,
RES_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE) < 0
THEN RES_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE) >= 30
THEN DATE_ADD(RES_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(RES_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE)) MINUTE)
END
]]>
WHERE 1=1
<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
#userDataList[]#
</iterate>
</update>
<update id="MjonReservMsgDAO.updateRealTimeJJB02MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE MTMSG_B2_DATA
@ -717,6 +845,67 @@
</update>
<update id="MjonReservMsgDAO.updateReserveTimeJJB02MsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE MTMSG_B2_DATA
SET INPUT_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE) < 0
THEN INPUT_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE) >= 30
THEN DATE_ADD(INPUT_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(INPUT_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), INPUT_DATE)) MINUTE)
END
]]> ,
RES_DATE =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE) < 0
THEN RES_DATE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE) >= 30
THEN DATE_ADD(RES_DATE, INTERVAL -30 MINUTE)
ELSE DATE_ADD(RES_DATE, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), RES_DATE)) MINUTE)
END
]]>
WHERE 1=1
<iterate prepend="AND USERDATA IN" open="(" close=")" conjunction="," property="userDataList">
#userDataList[]#
</iterate>
</update>
<update id="MjonReservMsgDAO.updateReserveTimeBizMsgSeqListByMsgSeq" parameterClass="mjonMsgResvVO">
UPDATE
BIZ_MSG
SET
REQUEST_TIME =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQUEST_TIME) < 0
THEN REQUEST_TIME
WHEN TIMESTAMPDIFF(MINUTE, NOW(), REQUEST_TIME) >= 30
THEN DATE_ADD(REQUEST_TIME, INTERVAL -30 MINUTE)
ELSE DATE_ADD(REQUEST_TIME, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), REQUEST_TIME)) MINUTE)
END
]]> ,
SEND_TIME =
<![CDATA[
CASE
WHEN TIMESTAMPDIFF(MINUTE, NOW(), SEND_TIME) < 0
THEN SEND_TIME
WHEN TIMESTAMPDIFF(MINUTE, NOW(), SEND_TIME) >= 30
THEN DATE_ADD(SEND_TIME, INTERVAL -30 MINUTE)
ELSE DATE_ADD(SEND_TIME, INTERVAL -(TIMESTAMPDIFF(MINUTE, NOW(), SEND_TIME)) MINUTE)
END
]]>
WHERE 1=1
<iterate prepend="AND USER_KEY IN" open="(" close=")" conjunction="," property="userDataList">
#userDataList[]#
</iterate>
</update>
</sqlMap>

View File

@ -15,12 +15,21 @@
<!-- 등급제 시행여부 상세 -->
<select id="mberGrdDAO.selectMberSettingDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO">
<![CDATA[
SELECT
GRD_NOTI AS grdNoti
, GRD_DATE AS grdDate
, DATE_FORMAT(GRD_DATE, '%Y-%m-%d' ) AS grdDate
, CASE
WHEN IFNULL(GRD_DATE, '') = ''
THEN 'N'
WHEN DATE_FORMAT(GRD_DATE, '%Y-%m-%d') <= DATE_FORMAT(NOW(), '%Y-%m-%d')
THEN 'Y'
ELSE 'N'
END grdDatePrgYn
FROM
MJ_MBER_SETTING
LIMIT 1
]]>
</select>
@ -40,13 +49,33 @@
, A.REG_DATE AS regDate
, A.EDIT_ID AS editId
, A.EDIT_DATE AS editDate
FROM mj_mber_grd_setting A
FROM MJ_MBER_GRD_SETTING A
ORDER BY A.GRD_SET_NO ASC
</select>
<!-- 등급제 설정 상세 -->
<select id="mberGrdDAO.selectMberGrdSettingDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO">
SELECT
A.GRD_SET_NO AS grdSetNo
, A.GRD_SET_NM AS grdSetNm
, FLOOR(A.STD_AMT) AS stdAmt
, FORMAT(FLOOR(A.STD_AMT),0) AS stdAmtComma
, A.SHORT_PRICE AS shortPrice
, A.LONG_PRICE AS longPrice
, A.PICTURE_PRICE AS picturePrice
, A.PICTURE2_PRICE AS picture2Price
, A.PICTURE3_PRICE AS picture3Price
, A.REG_ID AS regId
, A.REG_DATE AS regDate
, A.EDIT_ID AS editId
, A.EDIT_DATE AS editDate
FROM MJ_MBER_GRD_SETTING A
WHERE A.GRD_SET_NO = #grdSetNo#
</select>
<!-- 등급제 설정 일괄변경 일괄변경 -->
<update id="mberGrdDAO.updateGrdSetting" parameterClass="mberGrdVO">
UPDATE mj_mber_grd_setting A
UPDATE MJ_MBER_GRD_SETTING A
SET
A.STD_AMT = #stdAmt#
, A.SHORT_PRICE = #shortPrice#
@ -59,6 +88,71 @@
WHERE A.GRD_SET_NO = #grdSetNo#
</update>
<!-- 회원별 등급 목록 -->
<select id="mberGrdDAO.selectMberGrdList" parameterClass="mberGrdVO" resultClass="mberGrdVO">
SELECT
COUNT(A.MBER_ID) OVER() AS totCnt
, A.MBER_ID AS mberId
, C.MBER_NM AS mberNm
, A.GRD_SET_NO AS grdSetNo
, B.GRD_SET_NM AS grdSetNm
, A.SHORT_PRICE AS shortPrice
, A.LONG_PRICE AS longPrice
, A.PICTURE_PRICE AS picturePrice
, A.PICTURE2_PRICE AS picture2Price
, A.PICTURE3_PRICE AS picture3Price
, A.AMT AS amt
, A.TOT_AMT AS totAmt
, DATE_FORMAT(A.GRD_DATE, '%Y-%m-%d') AS grdDate
, DATE_FORMAT(A.GRD_START_DATE, '%Y-%m-%d') AS grdStartDate
, DATE_FORMAT(A.GRD_END_DATE, '%Y-%m-%d') AS grdEndDate
, A.GRD_STATUS AS grdStatus
, CASE
WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
THEN '대기'
WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
THEN '진행'
WHEN A.GRD_STATUS = 'N'
THEN '대기'
WHEN A.GRD_STATUS = 'E'
THEN '종료'
ELSE '종료'
END AS grdStatusNm
, A.REG_ID AS regId
, DATE_FORMAT(A.REG_DATE, '%Y-%m-%d %H:%i') AS regDate
, A.EDIT_ID AS editId
, DATE_FORMAT(A.EDIT_DATE, '%Y-%m-%d %H:%i') AS editDate
FROM
MJ_MBER_GRD_INFO A
INNER JOIN MJ_MBER_GRD_SETTING B
ON A.GRD_SET_NO = B.GRD_SET_NO
INNER JOIN LETTNGNRLMBER C
ON A.MBER_ID = C.MBER_ID
LEFT OUTER JOIN MJ_EVENT_MBER_INFO E
ON A.MBER_ID = E.MBER_ID
WHERE 1=1
AND C.MBER_STTUS = 'Y'
<isNotEmpty property="searchKeyword">
<isEqual prepend="AND" property="searchCondition" compareValue="">
A.MBER_ID = #searchKeyword#
</isEqual>
<isEqual prepend="AND" property="searchCondition" compareValue="1">
A.MBER_ID = #searchKeyword#
</isEqual>
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchGrdStatus">
A.GRD_STATUS = #searchGrdStatus#
</isNotEmpty>
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<!-- 회원별 등급 상세 -->
<select id="mberGrdDAO.selectMberGrdDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO">
SELECT
@ -72,21 +166,101 @@
, AMT AS amt
, TOT_AMT AS totAmt
, GRD_START_DATE AS grdStartDate
, GRD_END_DATE AS grd_endDate
, GRD_END_DATE AS grdEndDate
, GRD_STATUS AS grdStatus
, REG_ID AS regId
, REG_DATE AS regDate
, EDIT_ID AS editId
, EDIT_DATE AS editDate
FROM
mj_mber_grd_info
MJ_MBER_GRD_INFO
WHERE
MBER_ID = #mberId#
LIMIT 1
</select>
<!-- 회원 등급제 대상여부 정보(사용자화면용) -->
<select id="mberGrdDAO.selectMberGrdInfo" parameterClass="String" resultClass="mberGrdVO">
SELECT
M.mberId
, blineCode
, M.grdSetNo
, M.grdSetNm
, M.shortPrice
, M.longPrice
, M.picturePrice
, M.picture2Price
, M.picture3Price
FROM (
SELECT
A.MBER_ID AS mberId
, IFNULL(A.BLINE_CODE, 'N') AS blineCode
, G.GRD_SET_NO AS grdSetNo
, S.GRD_SET_NM AS grdSetNm
, G.SHORT_PRICE AS shortPrice
, G.LONG_PRICE AS longPrice
, G.PICTURE_PRICE AS picturePrice
, G.PICTURE2_PRICE AS picture2Price
, G.PICTURE3_PRICE AS picture3Price
, CASE
WHEN
(A.SHORT_PRICE > 0
AND (B.SHORT_PRICE > A.SHORT_PRICE
OR B.LONG_PRICE > A.LONG_PRICE
OR B.PICTURE_PRICE > A.PICTURE_PRICE
OR B.PICTURE2_PRICE > A.PICTURE2_PRICE
OR B.PICTURE3_PRICE > A.PICTURE3_PRICE)
)
THEN 'Y'
ELSE 'N'
END isSalePrice
FROM LETTNGNRLMBER A
INNER JOIN MJ_MBER_GRD_INFO G
ON A.MBER_ID = G.MBER_ID
INNER JOIN MJ_MBER_GRD_SETTING S
ON G.GRD_SET_NO = S.GRD_SET_NO
JOIN MJ_MBER_SETTING B
WHERE 1=1
AND G.GRD_STATUS = 'Y'
AND NOW() BETWEEN G.GRD_START_DATE AND G.GRD_END_DATE
AND G.MBER_ID = #mberId#
) M
WHERE M.isSalePrice = 'N'
OR M.blineCode != 'N'
LIMIT 1
</select>
<!-- 회원별 등급 누적결제액 상세 -->
<select id="mberGrdDAO.selectMberGrdAmtDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO">
<![CDATA[
SELECT
M.USER_ID AS mberId
, M.AMT_SUM AS totAmt
, M.GRD_SET_NO AS grdSetNo
FROM (
SELECT
S.USER_ID
, SUM(S.AMT) AS AMT_SUM_ORIGIN
, (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
, (
SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
) GRD_SET_NO
FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
ON S.USER_ID = SS.MBER_ID
WHERE S.PG_STATUS = '1'
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
GROUP BY S.USER_ID
) M
WHERE M.GRD_SET_NO IS NOT NULL
AND M.AMT_SUM > 0
AND M.USER_ID = #mberId#
]]>
</select>
<!-- 회원별 등급 등록 -->
<insert id="mberGrdDAO.insertMberGrd" parameterClass="mberGrdVO">
INSERT INTO mj_mber_grd_info
INSERT INTO MJ_MBER_GRD_INFO
(
MBER_ID
, GRD_SET_NO
@ -97,6 +271,7 @@
, PICTURE3_PRICE
, AMT
, TOT_AMT
, GRD_DATE
, GRD_START_DATE
, GRD_END_DATE
, GRD_STATUS
@ -116,8 +291,9 @@
, #picture3Price#
, #amt#
, #totAmt#
, #grdDate#
, #grdStartDate#
, #grd_endDate#
, #grdEndDate#
, #grdStatus#
, #regId#
, NOW()
@ -128,7 +304,7 @@
<!-- 회원별 등급 수정 -->
<update id="mberGrdDAO.updateMberGrd" parameterClass="mberGrdVO">
UPDATE mj_mber_grd_info SET
UPDATE MJ_MBER_GRD_INFO SET
MBER_ID = #mberId#
, GRD_SET_NO = #grdSetNo#
, SHORT_PRICE = #shortPrice#
@ -136,12 +312,9 @@
, PICTURE_PRICE = #picturePrice#
, PICTURE2_PRICE = #picture2Price#
, PICTURE3_PRICE = #picture3Price#
, AMT = #amt#
, AMT = #amt#
, TOT_AMT = #totAmt#
, GRD_START_DATE = #grdStartDate#
, GRD_END_DATE = #grd_endDate#
, GRD_STATUS = #grdStatus#
, EDIT_ID = #editId#
, EDIT_ID = #editId#
, EDIT_DATE = NOW()
WHERE
MBER_ID = #mberId#
@ -163,17 +336,17 @@
, SUM(S.AMT) AS AMT_SUM_ORIGIN
, (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
, (
SELECT MIN(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
) GRD_SET_NO
FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
ON S.USER_ID = SS.MBER_ID
AND SS.EVENT_START_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
WHERE S.PG_STATUS = '1'
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
GROUP BY S.USER_ID
) M
WHERE M.GRD_SET_NO IS NOT NULL
AND M.AMT_SUM > 0
) B
ON A.MBER_ID = B.USER_ID
INNER JOIN MJ_MBER_GRD_SETTING C
@ -186,18 +359,57 @@
, A.PICTURE2_PRICE = C.PICTURE2_PRICE
, A.PICTURE3_PRICE = C.PICTURE3_PRICE
, A.TOT_AMT = B.AMT_SUM
, A.GRD_START_DATE = CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
, A.EDIT_DATE = NOW()
WHERE B.GRD_SET_NO IS NOT NULL
AND A.GRD_SET_NO >= B.GRD_SET_NO
AND GRD_STATUS NOT IN ('N', 'E')
AND NOW() BETWEEN GRD_START_DATE AND GRD_END_DATE
AND A.GRD_SET_NO > B.GRD_SET_NO
AND A.GRD_STATUS = 'Y'
AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
]]>
</update>
<!-- 문자할인, B선라인 대상자 초기화 -->
<update id="mberGrdDAO.updateMberGrdEndBySale" parameterClass="mberGrdVO">
<![CDATA[
UPDATE MJ_MBER_GRD_INFO SET
GRD_END_DATE = NOW()
, GRD_STATUS = 'E'
, EDIT_DATE = NOW()
WHERE MBER_ID IN (
SELECT
M.MBER_ID
FROM (
SELECT
A.MBER_ID
, IFNULL(A.BLINE_CODE, 'N') AS BLINE_CODE
, CASE
WHEN
(A.SHORT_PRICE > 0
AND (B.SHORT_PRICE > A.SHORT_PRICE
OR B.LONG_PRICE > A.LONG_PRICE
OR B.PICTURE_PRICE > A.PICTURE_PRICE
OR B.PICTURE2_PRICE > A.PICTURE2_PRICE
OR B.PICTURE3_PRICE > A.PICTURE3_PRICE)
)
THEN 'Y'
ELSE 'N'
END isSalePrice
FROM LETTNGNRLMBER A
INNER JOIN MJ_MBER_GRD_INFO G
ON A.MBER_ID = G.MBER_ID
JOIN MJ_MBER_SETTING B
WHERE 1=1
AND G.GRD_STATUS != 'E'
) M
WHERE M.isSalePrice = 'Y'
OR M.BLINE_CODE != 'N'
)
]]>
</update>
<!-- 회원별 등급 초기화 -->
<update id="mberGrdDAO.updateMberGrdEndAll" parameterClass="mberGrdVO">
UPDATE mj_mber_grd_info SET
UPDATE MJ_MBER_GRD_INFO SET
GRD_END_DATE = NOW()
, GRD_STATUS = 'E'
, EDIT_ID = #editId#
@ -212,15 +424,35 @@
COUNT(0)
FROM MJ_MBER_GRD_INFO A
WHERE A.MBER_ID = #mberId#
AND GRD_STATUS NOT IN ('N', 'E')
AND NOW() BETWEEN GRD_START_DATE AND GRD_END_DATE
AND A.GRD_STATUS = 'Y'
AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
LIMIT 1
</select>
<!-- 회원별 이벤트 진행여부 -->
<select id="mberGrdDAO.selectMberEventPrgCnt" parameterClass="String" resultClass="Integer">
SELECT
COUNT(0)
FROM MJ_EVENT_MBER_INFO A
WHERE A.MBER_ID = #mberId#
AND A.EVENT_STATUS = 'Y'
AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(A.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(A.EVENT_END_DATE, '%Y-%m-%d')
LIMIT 1
</select>
<!-- 회원별 등급 저장여부 -->
<select id="mberGrdDAO.selectMberGrdSaveCnt" parameterClass="String" resultClass="Integer">
SELECT
COUNT(0)
FROM MJ_MBER_GRD_INFO A
WHERE A.MBER_ID = #mberId#
LIMIT 1
</select>
<!-- 회원별 등급 히스토리 등록 -->
<insert id="mberGrdDAO.insertMberGrdHist" parameterClass="mberGrdVO">
INSERT INTO mj_mber_grd_hist
INSERT INTO MJ_MBER_GRD_HIST
(
MBER_ID
, GRD_SET_NO
@ -231,6 +463,7 @@
, PICTURE3_PRICE
, AMT
, TOT_AMT
, GRD_DATE
, REG_ID
, REG_DATE
, EDIT_ID
@ -247,6 +480,7 @@
, #picture3Price#
, #amt#
, #totAmt#
, #grdDate#
, #regId#
, NOW()
, #editId#
@ -254,4 +488,64 @@
)
</insert>
<!-- 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용) -->
<select id="mberGrdDAO.selectMberGrdHistByGrdDateList" parameterClass="mberGrdVO" resultClass="mberGrdVO">
SELECT
COUNT(MBER_ID) OVER() AS totCnt
, A.MBER_ID AS mberId
, A.GRD_SET_NO AS grdSetNo
, A.SHORT_PRICE AS shortPrice
, A.LONG_PRICE AS longPrice
, A.PICTURE_PRICE AS picturePrice
, A.PICTURE2_PRICE AS picture2Price
, A.PICTURE3_PRICE AS picture3Price
, A.AMT AS amt
, A.TOT_AMT AS totAmt
, A.GRD_DATE AS grdDate
, A.REG_ID AS regId
, A.REG_DATE AS regDate
, A.EDIT_ID AS editId
, A.EDIT_DATE AS editDate
FROM MJ_MBER_GRD_HIST A
WHERE 1=1
AND A.MBER_ID = #mberId#
AND A.GRD_DATE >= (SELECT S.GRD_DATE FROM MJ_MBER_GRD_INFO S WHERE S.MBER_ID = #mberId#)
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<!-- 회원별 등급 히스토리 목록 -->
<select id="mberGrdDAO.selectMberGrdHistList" parameterClass="mberGrdVO" resultClass="mberGrdVO">
SELECT
COUNT(MBER_ID) OVER() AS totCnt
, A.MBER_ID AS mberId
, A.GRD_SET_NO AS grdSetNo
, A.SHORT_PRICE AS shortPrice
, A.LONG_PRICE AS longPrice
, A.PICTURE_PRICE AS picturePrice
, A.PICTURE2_PRICE AS picture2Price
, A.PICTURE3_PRICE AS picture3Price
, A.AMT AS amt
, A.TOT_AMT AS totAmt
, A.GRD_DATE AS grdDate
, A.REG_ID AS regId
, A.REG_DATE AS regDate
, A.EDIT_ID AS editId
, A.EDIT_DATE AS editDate
FROM MJ_MBER_GRD_HIST A
WHERE 1=1
AND A.MBER_ID = #mberId#
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
</sqlMap>

View File

@ -1668,7 +1668,7 @@
LEFT JOIN MJ_MSG_GROUP_DATA MGD
ON A.msgGroupId = MGD.MSG_GROUP_ID
WHERE MGD.USER_ID = #mberId#
AND MGD.RESERVE_YN = 'N'
<!-- AND MGD.RESERVE_YN = 'N' -->
AND MGD.RESERVE_C_YN = 'N'
AND MGD.DELAY_YN = 'Y'
AND MGD.DELAY_COMPLETE_YN = 'N'

View File

@ -1290,15 +1290,17 @@
</select>
<select id="userManageDAO.selectAdminSmsNoticeYn" parameterClass="userVO" resultClass="userVO">
SELECT
ADMIN_SMS_NOTICE_YN AS adminSmsNoticeYn,
PRE_PAYMENT_YN AS prePaymentYn,
SMISHING_YN AS smishingYn,
AUTO_CASH AS autoCash,
IFNULL(BLINE_CODE, 'N') AS blineCode,
IFNULL(RECOMMEND_ID, '') AS recommendId
FROM LETTNGNRLMBER
WHERE MBER_ID = #mberId#
SELECT
ADMIN_SMS_NOTICE_YN AS adminSmsNoticeYn
,PRE_PAYMENT_YN AS prePaymentYn
,SMISHING_YN AS smishingYn
,AUTO_CASH AS autoCash
,IFNULL(BLINE_CODE, 'N') AS blineCode
,IFNULL(RECOMMEND_ID, '') AS recommendId
FROM
LETTNGNRLMBER
WHERE
MBER_ID = #mberId#
</select>
<update id="userManageDAO.updateUserAdminSmsNoticeYn" parameterClass="userVO">

View File

@ -275,7 +275,7 @@
var confCode = $("#confCode").val();
if (!confirm('문자발송 사용여부는 전송사 비율과 상관없이\n사용자 문자 발송 사용여부가 일괄 적용됩니다.(주의)\n\n수정 하시겠습니까?')){
if (!confirm('문자, 알림톡 사용자화면 발송 사용여부가 변경됩니다.\n긴급 시스템작업시에만 사용해주세요.\n수정 하시겠습니까?')){
return false;
}
@ -374,7 +374,7 @@
<br><br />
<div class="listTop maxWth">
<span class="tType4 c_e40000 fwBold">
<p >문자발송 사용여부 - 전송사 비율과 상관없이, 사용자 문자 발송 사용여부 일괄 적용(주의)</p>
<p>문자, 알림톡 발송 사용여부 - 문자, 알림톡 사용자화면 발송 사용여부(주의)</p>
</span>
</div>
<div class="tableWrap maxWth">
@ -386,7 +386,7 @@
<tbody>
<tr>
<th>
문자발송 사용여부
문자, 알림톡 발송 사용여부
</th>
<td>
<ec:select codeId="CONF01" name="confCode" id="confCode" css="class='select'" selectedValue="${confVO.confCode}" />

View File

@ -571,7 +571,14 @@ function fn_updateSendRealTime(userId, msgGroupId){
<td class="sms_detail left">
<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: 100px;">

View File

@ -1183,44 +1183,6 @@ function fnMberSmishingYn(){
}
//알림톡 스미싱의심 여부
function fnMberAtSmishingYn(){
var form = document.mberManageVO;
var atSmishingYn = form.atSmishingYn.value;
if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){
$.ajax({
type: "POST",
url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do",
data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"},
dataType:'json',
async: false,
success: function (data, status) {
if (data.isSuccess) {
alert("변경 완료했습니다.");
}
else {
alert(data.msg);
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) {
alert("에러가 발생했습니다."); console.log("ERROR : ", e);
}
});
}
}
// VIP 여부
function fnMberVIPYn(){
var form = document.mberManageVO;
@ -2422,6 +2384,331 @@ function fnMberExceptSpamYn(){
}
//알림톡 지연 기능추가 -------------------------------------------------------
//알림톡 스미싱의심 여부
function fnMberAtSmishingYn(){
var form = document.mberManageVO;
var atSmishingYn = form.atSmishingYn.value;
if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){
$.ajax({
type: "POST",
url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do",
data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"},
dataType:'json',
async: false,
success: function (data, status) {
if (data.isSuccess) {
alert("변경 완료했습니다.");
}
else {
alert(data.msg);
}
},
beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
},
complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
},
error: function (e) {
alert("에러가 발생했습니다."); console.log("ERROR : ", e);
}
});
}
}
//지연 알림톡 전체선택
function kakaoATDelayCheckAll(){
var checkField = document.kakaoATDelayForm.kakaoATCheckDelayField;
if(document.kakaoATDelayForm.kakaoATCheckAll.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 kakaoATDelaySendArray(){
var userId = document.modiForm.mberId.value; //사용자 회원 아이디
var form = document.kakaoATDelayForm;
if($("input:checkbox[name='kakaoATCheckDelayField']").is(":checked")==false){
alert("선택된 알림톡이 없습니다.");
return;
}
var checkField = form.kakaoATCheckDelayField;
var id = form.kakaoATCheckDelayId;
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;
}
}
}
var msgGroupId = checkedIds;
var msg = "";
var url = "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do";
var json = {"msgGroupId" : msgGroupId, "userId" : userId};
if(confirm("해당 지연 알림톡을 즉시 발송 하시겠습니까?")){
$.ajax({
type: "POST"
, url: url
, data: json
, dataType:'json'
, async: false
, success: function (data, status) {
var result = data.isStatus;
var msg = data.msg;
if (result == 'loginFail') {
alert(msg);
location.reload();
}else if(result == 'dateFail'){
alert(msg);
location.reload();
}else if(result == 'fail'){
alert(msg);
return false;
}else{
alert(msg);
location.reload();
}
}
, beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
}
, complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
, error: function (e) {
alert("에러가 발생했습니다."); console.log("ERROR : ", e);
}
});
}
}
//지연 알림톡 즉시 발송
function kakaoATDelaySend(msgGroupId){
var userId = document.modiForm.mberId.value; //사용자 회원 아이디
var msg = "";
var url = "/uss/ion/msg/updateKakaoATDelaySendRealTimeDataAjax.do";
var json = {"msgGroupId" : msgGroupId, "userId" : userId};
if(confirm("해당 지연 알림톡을 즉시 발송 하시겠습니까?")){
$.ajax({
type: "POST"
, url: url
, data: json
, dataType:'json'
, async: false
, success: function (data, status) {
var result = data.isStatus;
var msg = data.msg;
if (result == 'loginFail') {
alert(msg);
location.reload();
}else if(result == 'dateFail'){
alert(msg);
location.reload();
}else if(result == 'fail'){
alert(msg);
return false;
}else{
alert(msg);
location.reload();
}
}
, beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
}
, complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
, error: function (e) {
alert("에러가 발생했습니다."); console.log("ERROR : ", e);
}
});
}
}
//지연 알림톡 발송취소 리스트
function kakaoATDelayCancelArray(){
var userId = document.modiForm.mberId.value; //사용자 회원 아이디
var form = document.kakaoATDelayForm;
if($("input:checkbox[name='kakaoATCheckDelayField']").is(":checked")==false){
alert("선택된 알림톡이 없습니다.");
return;
}
var checkField = form.kakaoATCheckDelayField;
var id = form.kakaoATCheckDelayId;
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;
}
}
}
var msgGroupId = checkedIds;
var msg = "";
var url = "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do";
var json = {"msgGroupId" : msgGroupId, "userId" : userId};
if(confirm("해당 지연 알림톡을 발송취소 하시겠습니까?")){
$.ajax({
type: "POST"
, url: url
, data: json
, dataType:'json'
, async: false
, success: function (data, status) {
var result = data.isStatus;
var msg = data.msg;
if (result == 'loginFail') {
alert(msg);
location.reload();
}else if(result == 'dateFail'){
alert(msg);
location.reload();
}else if(result == 'fail'){
alert(msg);
return false;
}else{
alert(msg);
//회원 이용정지 처리하기
//fn_updateMberSttus(msgGroupId);
fn_MsgDelayCancel_after();
}
}
, beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
}
, complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
, error: function (e) {
alert("에러가 발생했습니다."); console.log("ERROR : ", e);
}
});
}
}
//지연 알림톡 발송취소
function kakaoATDelayCancel(msgGroupId){
var userId = document.modiForm.mberId.value; //사용자 회원 아이디
var msg = "";
var url = "/uss/ion/msg/deleteKakaoATDelaySendCancelDataAjax.do";
var json = {"msgGroupId" : msgGroupId, "userId" : userId};
if(confirm("해당 지연 알림톡을 발송취소 하시겠습니까?")){
$.ajax({
type: "POST"
, url: url
, data: json
, dataType:'json'
, async: false
, success: function (data, status) {
var result = data.isStatus;
var msg = data.msg;
if (result == 'loginFail') {
alert(msg);
location.reload();
}else if(result == 'dateFail'){
alert(msg);
location.reload();
}else if(result == 'fail'){
alert(msg);
return false;
}else{
alert(msg);
//회원 이용정지 처리하기
//fn_updateMberSttus(msgGroupId);
fn_MsgDelayCancel_after();
}
}
, beforeSend: function () {
//로딩창 show
$('.loading_layer').addClass('active');
}
, complete: function () {
//로딩창 hide
$('.loading_layer').removeClass('active');
}
, error: function (e) {
alert("에러가 발생했습니다."); console.log("ERROR : ", e);
}
});
}
}
</script>
<style>
.fileView {border-bottom: inherit !important;}
@ -2574,7 +2861,6 @@ function fnMberExceptSpamYn(){
</select>
</td>
</tr>
<%--
<tr>
<th>스미싱 의심(카톡)</th>
<td>
@ -2585,9 +2871,8 @@ function fnMberExceptSpamYn(){
</td>
<th></th>
<td>
</td>
</td>
</tr>
--%>
<tr>
<th>전용 전송사</th>
<td>
@ -3022,7 +3307,6 @@ function fnMberExceptSpamYn(){
</select>
</td>
</tr>
<%--
<tr>
<th>스미싱 의심(카톡)</th>
<td>
@ -3035,7 +3319,6 @@ function fnMberExceptSpamYn(){
<td>
</td>
</tr>
--%>
<tr>
<th>전용 전송사</th>
<td>
@ -3399,7 +3682,14 @@ function fnMberExceptSpamYn(){
<td class="sms_detail" style="text-align: left;">
<c:choose>
<c:when test="${empty mjonMsgSentList.smsTxt}">
그림문자
<c:choose>
<c:when test="${mjonMsgSentList.msgType eq '4'}">
내용없음
</c:when>
<c:otherwise>
그림문자
</c:otherwise>
</c:choose>
<div class="sms_detail_hover">
<c:if test="${not empty fn:split(mjonMsgSentList.atchFiles, '^')[0]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(mjonMsgSentList.atchFiles, '^')[0]}&fileSn=0" style="width: 110px;">
@ -3580,15 +3870,22 @@ function fnMberExceptSpamYn(){
<c:otherwise>
-
</c:otherwise>
</c:choose>
</c:choose>
</c:otherwise>
</c:choose> </td>
</c:choose>
</td>
<td><c:out value="${mjonMsgSentList.callFrom}"/></td>
<td class="sms_detail" style="text-align: left;">
<c:choose>
<c:when test="${empty mjonMsgSentList.smsTxt}">
그림문자
<c:choose>
<c:when test="${mjonMsgSentList.msgType eq '4'}">
내용없음
</c:when>
<c:otherwise>
그림문자
</c:otherwise>
</c:choose>
<div class="sms_detail_hover">
<c:if test="${not empty fn:split(mjonMsgSentList.atchFiles, '^')[0]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(mjonMsgSentList.atchFiles, '^')[0]}&fileSn=0" style="width: 110px;">
@ -3751,6 +4048,9 @@ function fnMberExceptSpamYn(){
</c:choose>
</td>
<td>
<c:if test="${mjonMsgDelaySentList.reserveYn eq 'Y'}">
[예약]
</c:if>
<c:choose>
<c:when test="${not empty mjonMsgDelaySentList.sentDate}">
<fmt:formatDate value="${mjonMsgDelaySentList.sentDate}" pattern="yyyy-MM-dd HH:mm"/>
@ -3769,24 +4069,16 @@ function fnMberExceptSpamYn(){
</td>
<td><c:out value="${mjonMsgDelaySentList.callFrom}"/></td>
<td class="sms_detail" style="text-align: left;">
<%--
<div class="ellipsis_line">
<!-- 그림문자 중 텍스트 내용은 없고 그림 이미지만 있는경우 처리 -->
<c:choose>
<c:when test="${empty mjonMsgDelaySentList.smsTxt && not empty mjonMsgDelaySentList.filePath1}">
그림이미지
</c:when>
<c:otherwise>
<c:out value="${mjonMsgDelaySentList.smsTxt}"/>
</c:otherwise>
</c:choose>
</div>
--%>
<c:choose>
<c:when test="${empty mjonMsgDelaySentList.smsTxt}">
그림문자
<c:choose>
<c:when test="${mjonMsgDelaySentList.msgType eq '4'}">
내용없음
</c:when>
<c:otherwise>
그림문자
</c:otherwise>
</c:choose>
<div class="sms_detail_hover">
<c:if test="${not empty fn:split(mjonMsgDelaySentList.atchFiles, '^')[0]}">
<img class="MyMsgImg1" src="/cmm/fms/getImage2.do?atchFileId=${fn:split(mjonMsgDelaySentList.atchFiles, '^')[0]}&fileSn=0" style="width: 120px;">
@ -4105,23 +4397,23 @@ function fnMberExceptSpamYn(){
<c:otherwise>
-
</c:otherwise>
</c:choose>
</c:choose>
</c:otherwise>
</c:choose>
</c:choose>
</td>
</td>
<td><c:out value="${kakaoReserveList.yellowId}"/></td>
<td class="sms_detail" style="text-align: left;">
<c:choose>
<c:when test="${empty kakaoReserveList.smsTxt}">
-
-
</c:when>
<c:otherwise>
<div class="ellipsis_line">
<c:out value="${kakaoReserveList.smsTxt}"/>
</div>
</c:otherwise>
</c:choose>
</c:choose>
</td>
<td><fmt:formatNumber value="${kakaoReserveList.msgGroupCnt}" type="number" /></td>
<td><fmt:formatNumber value="${kakaoReserveList.successCount}" type="number" /></td>
@ -4143,7 +4435,141 @@ function fnMberExceptSpamYn(){
</div>
</div>
<!-- 최근 카카오톡 전송 내역 -->
<!-- 최근 알림톡 지연 내역 -->
<form id="kakaoATDelayForm" name="kakaoATDelayForm" mehoth="post">
<div class="title_box">
<p>최근 알림톡 지연 내역</p>
<div class="button_box">
<button type="button" onclick="kakaoATDelaySendArray(); return false;" class="fillBlue">발송승인</button>
<button type="button" onclick="kakaoATDelayCancelArray(); return false;" class="fillRed">발송취소</button>
</div>
</div>
<table class="user_table_col">
<colgroup>
<col style="width:5%;">
<col style="width:9%;">
<col style="width:13%;">
<col style="width:15%;">
<col style="width:auto;">
<col style="width:8%;">
<col style="width:8%;">
<col style="width:8%;">
<col style="width:8%;">
</colgroup>
<thead>
<tr>
<th>
<input type="checkbox" name="kakaoATCheckAll" id="kakaoATCheckAll" onclick="kakaoATDelayCheckAll();" />
<label for="kakaoATCheckAll"></label>
</th>
<th>종류</th>
<th>등록일시</th>
<th>전송일시</th>
<th>채널ID</th>
<th>내용</th>
<th>건수</th>
<th>발송</th>
<th>취소</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty kakaoATDelaySentList}">
<c:forEach var="kakaoDelayInfo" items="${kakaoATDelaySentList}" varStatus="status">
<c:if test="${status.count < 4}">
<tr>
<td>
<input name="kakaoATCheckDelayField" id="<c:out value='${kakaoDelayInfo.msgGroupId}'/>" title="Check <c:out value="${status.count}"/>" type="checkbox"/>
<label for="<c:out value="${result.uniqId}"/>"></label>
<input name="kakaoATCheckDelayId" type="hidden" class="${result.userId}" value="<c:out value='${kakaoDelayInfo.msgGroupId}'/>"/>
</td>
<td>
<c:choose>
<c:when test="${kakaoDelayInfo.msgType == '8'}">
알림톡
</c:when>
<c:when test="${kakaoDelayInfo.msgType == '9'}">
친구톡
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${not empty kakaoDelayInfo.regDate}">
<fmt:parseDate value="${kakaoDelayInfo.regDate}" var="kakaoDelayRegdate" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="${kakaoDelayRegdate}" pattern="MM-dd HH:mm"/>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:if test="${kakaoDelayInfo.reserveYn eq 'Y'}">
[예약]
</c:if>
<c:choose>
<c:when test="${not empty kakaoDelayInfo.sentDate}">
<fmt:formatDate value="${kakaoDelayInfo.sentDate}" pattern="yyyy-MM-dd HH:mm"/>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${kakaoDelayInfo.atDelayYn eq 'Y'}">
[스미싱의심]
<fmt:parseDate value="${kakaoDelayInfo.reqDate}" var="kakaoDelayReqDate" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="${kakaoDelayReqDate}" pattern="MM-dd HH:mm"/>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${kakaoDelayInfo.yellowId}"/>
</td>
<td class="sms_detail" style="text-align: left;">
<c:choose>
<c:when test="${empty kakaoDelayInfo.smsTxt}">
-
</c:when>
<c:otherwise>
<div class="ellipsis_line">
<c:out value="${kakaoDelayInfo.smsTxt}"/>
</div>
</c:otherwise>
</c:choose>
</td>
<td>
<fmt:formatNumber value="${kakaoDelayInfo.msgGroupCnt}" type="number" />
</td>
<td>
<button type="button" class="thinfill" id="kakaoATDelaySend${status.count}" name="msgDelaySend"
onclick="kakaoATDelaySend('<c:out value="${kakaoDelayInfo.msgGroupId}"/>'); return false;">승인</button>
</td>
<td>
<button type="button" class="thinfill" id="kakaoATDelayCancel${status.count}" name="msgDelayCancel"
onclick="kakaoATDelayCancel('<c:out value="${kakaoDelayInfo.msgGroupId}"/>'); return false;">취소</button>
</td>
</tr>
</c:if>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="9">카카오톡 발송 내역이 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</form>
<!-- 최근 팩스 전송 내역 -->
<div class="title_box">
<p>최근 팩스 전송 내역</p>
<div class="button_box">
@ -4204,8 +4630,8 @@ function fnMberExceptSpamYn(){
<col style="width:calc(100%/2);">
<col style="width:calc(100%/2);">
<col style="width:calc(100%/2);">
<col style="width:calc(100%/2);">
<col style="width:calc(100%/2);">
<col style="width:calc(100%/2);">
<col style="width:calc(100%/2);">
</colgroup>
<thead>
<tr>
@ -4252,7 +4678,7 @@ function fnMberExceptSpamYn(){
<span class="c_999999">발신번호 차단</span>
</c:otherwise>
</c:choose>
</td>
</td>
</tr>
</c:forEach>
</c:when>
@ -4370,7 +4796,7 @@ function fnMberExceptSpamYn(){
<c:set var="userPriceL" value="${longPrice}"/>
<c:set var="userPriceP" value="${picturePrice}"/>
<c:set var="userPriceP2" value="${picture2Price}"/>
<c:set var="userPriceP3" value="${picture3Price}"/>
<c:set var="userPriceP3" value="${picture3Price}"/>
<tr>
<td>고객단가</td>
<td>
@ -4511,7 +4937,7 @@ function fnMberExceptSpamYn(){
</c:otherwise>
</c:choose>
</div>
</td>
</td>
<td>
<c:choose>
<c:when test="${userLogin.loginYn == 'Y'}">
@ -4824,7 +5250,7 @@ function fnMberExceptSpamYn(){
<br>
작성 : <c:out value="${result.frstRegisterId}"/>(<c:out value="${result.mberNm}"/> <c:out value="${result.ofcpsNm}"/>)
<br>
일시 : <c:out value="${result.frstRegistPnttm}"/>
일시 : <c:out value="${result.frstRegistPnttm}"/>
</li>
</c:forEach>
</ul>

View File

@ -0,0 +1,233 @@
<%--
Class Name : webTitleList.jsp
Description : webTitleList 화면
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2009.02.01 lee.m.j 최초 생성
2011.08.31 JJY 경량환경 버전 생성
author : 공통서비스 개발팀 lee.m.j
since : 2009.02.01
--%>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page import="itn.com.cmm.LoginVO"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Language" content="ko">
<title>등급제 내역</title>
<script type="text/javaScript" language="javascript" defer="defer">
$( document ).ready(function(){
// change 함수
$("#searchGrdStatus").change(function(e){
linkPage(1); 
});
});
function fn_search(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/sym/grd/selectMberGrdList.do'/>";
listForm.submit();
}
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 setMberGrdChk(mberId) {
$.ajax({
type: "POST",
url: "/sym/grd/mberGrdChkAjax.do",
data: {"mberId" : mberId},
dataType:'json',
async: false,
success: function (data) {
if (data.isSuccess) {
var sHtml = "";
sHtml += "단문 : " + data.rtnMberGrdVO.shortPrice;
sHtml += ", 장문 : " + data.rtnMberGrdVO.longPrice;
sHtml += ", 그림1 : " + data.rtnMberGrdVO.picturePrice;
sHtml += ", 그림2 : " + data.rtnMberGrdVO.picture2Price;
sHtml += ", 그림3 : " + data.rtnMberGrdVO.picture3Price;
alert(sHtml);
//$("#tr_"+data.rtnMberGrdVO.mberId).attr("title", sHtml);
}
else {
alert("Msg : " + data.msg);
}
},
error: function (e) {
alert("ERROR : " + JSON.stringify(e));
}
});
}
</script>
</head>
<body>
<noscript>자바스크립트를 지원하지 않는 브라우저에서는 일부 기능을 사용하실 수 없습니다.</noscript>
<form name="listForm" action="<c:url value='/sym/grd/selectMberGrdList.do'/>" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}' default='1' />"/>
<input type="hidden" name="metaTagNo" >
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<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">
<select id="searchGrdStatus" name="searchGrdStatus" title="상태">
<option value="" <c:if test="${empty searchVO.searchGrdStatus }">selected="selected"</c:if> >상태</option>
<option value="Y" <c:if test="${searchVO.searchGrdStatus == 'Y'}">selected="selected"</c:if> >진행중</option>
<option value="N" <c:if test="${searchVO.searchGrdStatus == 'N'}">selected="selected"</c:if> >미진행</option>
<option value="E" <c:if test="${searchVO.searchGrdStatus == 'E'}">selected="selected"</c:if> >종료</option>
</select>
<select id="searchCondition" name="searchCondition">
<option value="" <c:if test="${empty searchVO.searchCondition}">selected="selected"</c:if>>전체</option>
<option value="1" <c:if test="${searchVO.searchCondition == '1'}">selected="selected"</c:if>>아이디</option>
</select>
<input id="searchKeyword" name="searchKeyword" class="recentSearch" type="text" value="<c:out value='${searchVO.searchKeyword}'/>" size="25" 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>건
&nbsp;&nbsp;&nbsp; * 누적결제액은 문자할인이벤트 대상 결제금액을 제외한 합계금액입니다.
</p>
<div class="rightWrap">
<!-- <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: 8%">
<col style="width: auto;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 10%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 6%">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>아이디<input type="button" class="sortBtn sort" id="sort_mberId"></th>
<th>이름<input type="button" class="sortBtn sort" id="sort_mberNm"></th>
<th>등급<input type="button" class="sortBtn sort" id="sort_grdSetNo"></th>
<th>누적결제액<input type="button" class="sortBtn sort" id="sort_totAmt"></th>
<th>등급제 시행일<input type="button" class="sortBtn sort" id="sort_grdDate"></th>
<th>시작일<input type="button" class="sortBtn sort" id="sort_grdStartDate"></th>
<th>종료일 <input type="button" class="sortBtn sort" id="sort_grdEndDate"></th>
<th>등록일 <input type="button" class="sortBtn sort" id="sort_regDate"></th>
<th>상태<input type="button" class="sortBtn sort" id="sort_grdStatusNm"></th>
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${resultList}" varStatus="status">
<tr id="tr_${result.mberId}">
<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 nowrap="nowrap">
<a href="#" onclick="javascript:fnSelectMber('<c:out value="${result.mberId}"/>'); return false;">
<c:out value="${result.mberId}"/>
</a>
</td>
<td nowrap="nowrap">
<c:out value="${result.mberNm}"/>
</td>
<td nowrap="nowrap">
<c:out value="${result.grdSetNm}"/>(<c:out value="${result.grdSetNo}"/>)
</td>
<td nowrap="nowrap" class="right">
<fmt:formatNumber value="${result.totAmt}" pattern="#,###" />
</td>
<td nowrap="nowrap">
<c:out value="${result.grdDate}"/>
</td>
<td nowrap="nowrap">
<c:out value="${result.grdStartDate}"/>
</td>
<td nowrap="nowrap">
<c:out value="${result.grdEndDate}"/>
</td>
<td nowrap="nowrap">
<c:out value="${result.regDate}"/>
</td>
<td nowrap="nowrap">
<c:out value="${result.grdStatusNm}"/>
</td>
</tr>
</c:forEach>
</tbody>
<c:if test="${empty resultList}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</table>
</div>
<div class="btnWrap">
</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="modiForm2" id="modiForm2" method="post">
<input name="mberId" type="hidden" />
</form>
<form name="searchForm" method="get" action="<c:url value='/sym/grd/selectMberGrdList.do'/>">
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}' default='1' />"/>
<input name="searchCondition" type="hidden" />
<input name="searchKeyword" type="hidden" />
</form>
</body>
</html>

View File

@ -84,6 +84,32 @@
}
}
// 등급제 적용 테스트
function setMberGrdSave() {
if(confirm("등급제 적용하시겠습니까?")) {
$.ajax({
type: "POST",
url: "/sym/grd/mberGrdSaveAjax.do",
data: {},
dataType:'json',
async: false,
success: function (data) {
if (data.isSuccess) {
alert("저장 완료했습니다.");
location.reload();
}
else {
alert("Msg : " + data.msg);
}
},
error: function (e) {
alert("ERROR : " + JSON.stringify(e));
}
});
}
}
</script>
</head>
<body>
@ -172,6 +198,7 @@
<br />
<div class="btnWrap">
<input type="button" class="btnType2" value="모든 고객 등급 초기화" onclick="javascript:setMberGrdEndMassEdit(); return false;">
<input type="button" class="btnType2" value="등급제 적용테스트" onclick="javascript:setMberGrdSave(); return false;">
<input type="button" class="btnType1" value="취소" onclick="javascript:location.reload(); return false;">
<input type="button" class="btnType1" value="수정" onclick="javascript:setMberGrdSettingMassEdit(); return false;">
</div>

View File

@ -150,6 +150,7 @@ function fnSelectMber(mberId) {
<input type="hidden" name="detailType" value="<c:out value="${searchVO.detailType}" />" />
<input type="hidden" name="ntceBgnde" id="ntceBgnde" value="">
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<input type="hidden" name="userId" id="userId" value="<c:out value="${searchVO.userId}" />" />
<div class="contWrap">
<div class="pageTitle">

View File

@ -351,10 +351,10 @@ function fnSmishingUpdate(flag) {
if(checkedIds.length > 0) {
var msg = "";
if(flag == 'on') {
document.listForm.smishingYn.value='Y';
document.listForm.atSmishingYn.value='Y';
msg = "선택하신 사용자의 스미싱의심을 On 하시겠습니까?";
} else {
document.listForm.smishingYn.value='N';
document.listForm.atSmishingYn.value='N';
msg = "선택하신 사용자의 스미싱의심을 Off 하시겠습니까?";
}
if(confirm(msg)){
@ -398,7 +398,7 @@ function fnSmishingUpdate(flag) {
<input type="hidden" name="ntceEndde" id="ntceEndde" value="">
<input type="hidden" name="adminSmsNoticeYn" value=""/>
<input name="checkedIdForDel" type="hidden" />
<input type="hidden" name="smishingYn" value=""/>
<input type="hidden" name="atSmishingYn" value=""/>
<div class="contWrap">
<div class="pageTitle">
@ -484,9 +484,8 @@ function fnSmishingUpdate(flag) {
<col style="width: 5%">
<col style="width: 13%">
<col style="width: 13%">
<%-- <col style="width: 10%"> --%>
<col style="width: 10%">
<%-- <col style="width: 10%"> --%>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 5%">
<col style="width: auto">
@ -498,15 +497,12 @@ function fnSmishingUpdate(flag) {
<th>번호<input type="button" class="sort sortBtn" id="sort_msgGroupId"></th>
<th>아이디<input type="button" class="sort sortBtn" id="sort_userId"></th>
<th>채널ID<input type="button" class="sort sortBtn" id="sort_yellowId"></th>
<!-- <th>qkf<input type="button" class="sort sortBtn" id="sort_callFrom"></th> -->
<th>발송건수<input type="button" class="sort sortBtn" id="sort_msgGroupCnt"></th>
<!-- <th>스미싱의심</th> -->
<th>스미싱의심</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_msgType"></th>
<!-- <th>전송사<input type="button" class="sort sortBtn" id="sort_agentCodeTxt"></th> -->
<!-- <th>통신사<input type="button" class="sort sortBtn" id="sort_rsltNet"></th> -->
</tr>
</thead>
<tbody>
@ -516,7 +512,7 @@ function fnSmishingUpdate(flag) {
<input name="checkField" id="<c:out value="${result.userId}"/>" 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.userId}'/>"/>
</td>
<td>
<td <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
@ -524,23 +520,17 @@ function fnSmishingUpdate(flag) {
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td>
<td <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<div class="id_box <c:if test='${result.vipYn eq "Y" }'>vip</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>
</div>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<c:out value="${result.yellowId}"/>
</td>
<%-- <td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">class="smishing" style="cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<c:out value="${result.callFrom}"/>
</td> --%>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;line-height:30px;text-align:right;">
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:out value="${result.yellowId}"/>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;line-height:30px;text-align:right;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:choose>
<c:when test="${result.successCount > 0}">
<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
@ -549,20 +539,50 @@ function fnSmishingUpdate(flag) {
<span style="color: #0000FF;">
<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
<c:if test="${result.msgGroupCnt eq result.callRejectionCount && result.callbackYn eq 'N' && result.userCallbackYn eq 'N' }">
<%-- <input type="button" style="margin-left:3px;margin-right:0;vertical-align:top;" class="btnType1" onclick="fn_sendMsgData('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.callFrom}"/>','<c:out value="${result.userId}"/>');" value="문자" /> --%>
</c:if>
<%-- <input type="button" style="margin-left:3px;margin-right:0;vertical-align:top;" class="btnType1" onclick="fn_sendMsgData('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.callFrom}"/>','<c:out value="${result.userId}"/>');" value="문자" /> --%>
</c:if>
<c:if test="${result.callbackYn eq 'Y' }">
<span style="color: #0000FF;" title="번호도용 문자차단 안내문자 발송완료">안내완료</span>
</c:if>
<span style="color: #0000FF;" title="번호도용 문자차단 안내문자 발송완료">안내완료</span>
</c:if>
</span>
</c:otherwise>
</c:choose>
</c:choose>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" title="<c:out value="${result.rsltDate}"/>">
<td <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:choose>
<c:when test="${result.atDelayYn eq 'Y'}">
<c:choose>
<c:when test="${result.atDelayCompleteYn eq 'Y' && not empty result.cancelDate}">
<span style="color: #0000FF;">
<c:if test="${result.smishingYn eq 'Y'}">온</c:if><c:if test="${result.smishingYn eq 'N'}">오프</c:if>[이용정지]
<span style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;margin-top:3px;" title="<c:out value="${result.cancelDate}"/>">
<fmt:parseDate value="${result.cancelDate}" var="cancelDateValue" pattern="yyyy-MM-dd HH:mm"/>
<fmt:formatDate value="${cancelDateValue}" pattern="MM-dd HH:mm"/>
</span>
</span>
</c:when>
<c:when test="${result.atDelayCompleteYn eq 'N'}">
<c:if test="${result.atSmishingYn eq 'Y'}">온</c:if>
<c:if test="${result.atSmishingYn eq 'N'}">오프</c:if>[미처리]
</c:when>
<c:otherwise>
<span style="color: #0000FF;">
<c:if test="${result.atSmishingYn eq 'Y'}">온</c:if>
<c:if test="${result.atSmishingYn eq 'N'}">오프</c:if>[승인]
</span>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" title="<c:out value="${result.rsltDate}"/>" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<fmt:parseDate value="${result.reqDate}" var="reqDateValue" pattern="yyyy-MM-dd HH:mm"/>
<fmt:formatDate value="${reqDateValue}" pattern="MM-dd HH:mm"/>
<fmt:formatDate value="${reqDateValue}" pattern="MM-dd HH:mm"/>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}'); return false;" style="cursor:pointer;">
<td onclick="fn_detail_list('${result.msgGroupId}', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:choose>
<c:when test="${result.reserveYn eq 'Y'}">
예약
@ -572,25 +592,20 @@ function fnSmishingUpdate(flag) {
</c:otherwise>
</c:choose>
</td>
<td class="sms_detail left" onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<td class="sms_detail left <c:if test="${result.atSmishingYn eq 'Y'}">smishing</c:if>" onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<p><c:out value="${result.smsTxt}"/></p>
<div class="sms_detail_hover">
<c:out value="${fn:replace(fn:replace(result.smsTxt, newLineChar, '<br/>'), newLineChar2, '<br/>')}" escapeXml="false"/>
</div>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:out value="${result.msgTypeName}"/>
</td>
<%-- <td><c:out value="${result.conectMthdTxt}"/></td> --%>
<%-- <td <c:if test="${result.smishingYn eq 'Y'}">class="smishing"</c:if>>
<c:out value="${result.agentCodeTxt}"/>
</td> --%>
<%-- <td><c:out value="${result.rsltNet}"/></td> --%>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
<tr><td colspan="8"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
<tr><td colspan="10"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>

View File

@ -456,7 +456,7 @@ function fnAtSmishingUpdate(flag) {
<col style="width: 13%">
<%-- <col style="width: 10%"> --%>
<col style="width: 10%">
<%-- <col style="width: 10%"> --%>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 5%">
<col style="width: auto">
@ -468,15 +468,12 @@ function fnAtSmishingUpdate(flag) {
<th>번호<input type="button" class="sort sortBtn" id="sort_msgGroupId"></th>
<th>아이디<input type="button" class="sort sortBtn" id="sort_userId"></th>
<th>채널ID<input type="button" class="sort sortBtn" id="sort_yellowId"></th>
<!-- <th>qkf<input type="button" class="sort sortBtn" id="sort_callFrom"></th> -->
<th>발송건수<input type="button" class="sort sortBtn" id="sort_msgGroupCnt"></th>
<!-- <th>스미싱의심</th> -->
<th>스미싱의심</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_msgType"></th>
<!-- <th>전송사<input type="button" class="sort sortBtn" id="sort_agentCodeTxt"></th> -->
<!-- <th>통신사<input type="button" class="sort sortBtn" id="sort_rsltNet"></th> -->
</tr>
</thead>
<tbody>
@ -486,7 +483,7 @@ function fnAtSmishingUpdate(flag) {
<input name="checkField" id="<c:out value="${result.userId}"/>" 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.userId}'/>"/>
</td>
<td>
<td <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</c:if>
@ -494,23 +491,17 @@ function fnAtSmishingUpdate(flag) {
<c:out value="${(paginationInfo.currentPageNo - 1) * paginationInfo.recordCountPerPage + status.count}"/>
</c:if>
</td>
<td>
<td <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<div class="id_box <c:if test='${result.vipYn eq "Y" }'>vip</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>
</div>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:out value="${result.yellowId}"/>
</td>
<%-- <td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.atSmishingYn eq 'Y'}">class="atSmishingYn" style="cursor:pointer;"</c:if><c:if test="${result.atSmishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
<c:out value="${result.callFrom}"/>
</td> --%>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;line-height:30px;text-align:right;">
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:choose>
<c:when test="${result.successCount > 0}">
<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
@ -519,20 +510,51 @@ function fnAtSmishingUpdate(flag) {
<span style="color: #0000FF;">
<c:out value="${result.msgGroupCnt}"/>(<fmt:formatNumber value="${(result.successCount / result.msgGroupCnt) * 100}" pattern="#,###" />%)
<c:if test="${result.msgGroupCnt eq result.callRejectionCount && result.callbackYn eq 'N' && result.userCallbackYn eq 'N' }">
<%-- <input type="button" style="margin-left:3px;margin-right:0;vertical-align:top;" class="btnType1" onclick="fn_sendMsgData('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.callFrom}"/>','<c:out value="${result.userId}"/>');" value="문자" /> --%>
</c:if>
</c:if>
<c:if test="${result.callbackYn eq 'Y' }">
<span style="color: #0000FF;" title="번호도용 문자차단 안내문자 발송완료">안내완료</span>
</c:if>
<span style="color: #0000FF;" title="번호도용 문자차단 안내문자 발송완료">안내완료</span>
</c:if>
</span>
</c:otherwise>
</c:choose>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" title="<c:out value="${result.rsltDate}"/>">
<td <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:choose>
<c:when test="${result.atDelayYn eq 'Y'}">
<c:choose>
<c:when test="${result.atDelayCompleteYn eq 'Y' && not empty result.cancelDate}">
<span style="color: #0000FF;">
<c:if test="${result.atSmishingYn eq 'Y'}">온</c:if>
<c:if test="${result.atSmishingYn eq 'N'}">오프</c:if>[이용정지]
<span style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;margin-top:3px;" title="<c:out value="${result.cancelDate}"/>">
<fmt:parseDate value="${result.cancelDate}" var="cancelDateValue" pattern="yyyy-MM-dd HH:mm"/>
<fmt:formatDate value="${cancelDateValue}" pattern="MM-dd HH:mm"/>
</span>
</span>
</c:when>
<c:when test="${result.atDelayCompleteYn eq 'N'}">
<c:if test="${result.atSmishingYn eq 'Y'}">온</c:if>
<c:if test="${result.atSmishingYn eq 'N'}">오프</c:if>[미처리]
</c:when>
<c:otherwise>
<span style="color: #0000FF;">
<c:if test="${result.atSmishingYn eq 'Y'}">온</c:if>
<c:if test="${result.atSmishingYn eq 'N'}">오프</c:if>[승인]
</span>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" title="<c:out value="${result.rsltDate}"/>" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<fmt:parseDate value="${result.reqDate}" var="reqDateValue" pattern="yyyy-MM-dd HH:mm"/>
<fmt:formatDate value="${reqDateValue}" pattern="MM-dd HH:mm"/>
</td>
<td onclick="fn_detail_list('${result.msgGroupId}', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<td onclick="fn_detail_list('${result.msgGroupId}', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:choose>
<c:when test="${result.reserveYn eq 'Y'}">
예약
@ -542,20 +564,15 @@ function fnAtSmishingUpdate(flag) {
</c:otherwise>
</c:choose>
</td>
<td class="sms_detail left" onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<td class="sms_detail left <c:if test="${result.atSmishingYn eq 'Y'}">smishing</c:if>" onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<p><c:out value="${result.smsTxt}"/></p>
<div class="sms_detail_hover">
<c:out value="${fn:replace(fn:replace(result.smsTxt, newLineChar, '<br/>'), newLineChar2, '<br/>')}" escapeXml="false"/>
</div>
</td>
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;">
<td onclick="fn_detail_list('<c:out value="${result.msgGroupId}"/>', '<c:out value="${result.userId}"/>'); return false;" style="cursor:pointer;" <c:if test="${result.atSmishingYn eq 'Y'}">class="smishing"</c:if>>
<c:out value="${result.msgTypeName}"/>
</td>
<%-- <td><c:out value="${result.conectMthdTxt}"/></td> --%>
<%-- <td <c:if test="${result.atSmishingYn eq 'Y'}">class="atSmishingYn"</c:if>>
<c:out value="${result.agentCodeTxt}"/>
</td> --%>
<%-- <td><c:out value="${result.rsltNet}"/></td> --%>
</tr>
</c:forEach>
<c:if test="${empty resultList}">
@ -565,10 +582,8 @@ function fnAtSmishingUpdate(flag) {
</table>
</div>
<div class="btnWrap" style="margin-bottom: 15px;">
<!--
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('on'); return false;" value="알림톡 스미싱 ON">
<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('off'); return false;" value="알림톡 스미싱 OFF">
-->
</div>
<!-- 페이지 네비게이션 시작 -->

View File

@ -307,7 +307,14 @@ function fnSelectMber(mberId) {
<td class="sms_detail left <c:if test="${result.smishingYn eq 'Y'}">smishing</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;">

View File

@ -471,7 +471,14 @@ function fnSmishingUpdate(flag) {
<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;">

View File

@ -585,7 +585,14 @@ function fnSmishingUpdate(flag) {
<td class="sms_detail left <c:if test="${result.smishingYn eq 'Y'}">smishing</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;">

View File

@ -304,7 +304,14 @@ function fnSetCalMonth(val) {
<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;">

View File

@ -177,40 +177,12 @@
</div>
</div>
<div class="clause_list_body">
<div class="agree_text">
<div>
<p class="top_tit_text">서비스 이용약관</p>
<p class="date_text">제정 2022. 06. 13</p>
<p class="tit_text">제1장 총 칙</p>
<p class="stit_text">제1조(목적) 이 약관은 주식회사 아이티앤(이하“회사”)이 제공하는
인터넷 서비스 문자온(www.munjaon.co.kr, 이하 “서비스”)를 이용함에 있어 회사와 회원(이용자)의
권리, 의무, 책임사항 및 기타 필요한 사항을 규정함을목적으로 합니다.</p>
<p class="stit_text">제2조(용어의 정의) 이 약관에서 사용하는 용어의정의는 다음과
같습니다.</p>
<ul class="policy_list sec_list">
<li><span>1.</span> 문자온 : 회사의 서비스명으로 회원이전송하고자 하는
내용‧정보 등을 문자메시지, 멀티미디어메시지,카카오톡, 팩스 등 다양한 메시지 형태로 변화시켜 전송하는 서비스
및 회원이 제3자로부터 메시지를 수신할 수 있도록 하는 서비스</li>
<li><span>2.</span> 회원 : 회사에 개인정보를 제공하여 이용계약을체결하고, 이용자
아이디(ID)를 부여 받은자로서 회사가 제공하는서비스를 지속적으로 이용할 수 있는 자</li>
<li><span>3.</span> 아이디(ID) : 회원의 식별과 서비스 이용을 위하여회원이 정하고
회사가 승인하는 문자와 숫자의 조합</li>
<li><span>4.</span> 비밀번호 : 회원이 부여 받은 아이디(ID)와 일치된회원임을
확인하고, 회원의 비밀을 보호하기 위해 회원이 설정한 문자와숫자의 조합</li>
<li><span>5.</span> 휴면아이디 : 12개월 이상 계속해서 로그인을포함한 서비스 이용이
없는 아이디</li>
<li><span>6.</span> 해지 : 회사와 회원 간 맺은 이용계약을 해지하는것</li>
<li><span>7.</span> 스팸메시지 : 정보통신망을 통해 수신자의명시적인 사전 동의없이
일방적으로 전송 또는 게시되는 영리목적의광고성 정보</li>
<li><span>8.</span> 불법스팸메시지 : 『정보통신망법』 제50조 내지제50조의8의 규정을
위반하여 전송 또는 게시되는 영리목적의 광고성정보를 말하며, 불법스팸은 형사처벌 및 과태료 부과의 대상이 됨</li>
<li><span>9.</span> 문자피싱메시지 : 전자금융사기를 목적으로 전송또는 게시되는 정보</li>
<li><span>10.</span> 스미싱메시지 : 메시지 내용 중 인터넷 주소를클릭하면 악성코드가
설치되어 수신자가 모르는 사이에 금전적 피해 또는개인‧금융정보 탈취 피해를 야기하는 메시지</li>
<li><span>11.</span> 카카오톡 : 주식회사 카카오(이하 ”카카오”)가운영하는 모바일
메신저 기반의 실시간 커뮤니케이션 서비스로 알림톡,친구톡 또는 해당 서비스를 제공하는 어플리케이션</li>
</ul>
</div>
<div class="agree_text" style="padding-top: 0px;">
<c:forEach var="result" items="${resultList}" varStatus="status">
<p class="tit_text"><c:out value="${result.termsSj}"/></p>
<p><c:out value="${result.termsCn}" escapeXml="false"/></p>
</c:forEach>
</div>
</div>
</li>

View File

@ -808,8 +808,8 @@ function TabTypePay(obj, tabId) {
</div>--%>
<div>
<p class="tab_tit">충전수단 선택</p>
<ul class="area_tab type03">
<li class="btn_charge0 btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
<ul class="area_tab">
<li class="btn_charge_simple btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
<li class="btn_charge1 btn_tab"><button type="button" onclick="TabTypePay(this,'1');"><i></i>신용카드</button></li>
<li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'2');" id="btnDdedicatedAccount"><i></i>전용계좌</button></li>
<li class="btn_charge5 btn_tab"><button type="button" onclick="TabTypePay(this,'5');"><i></i>즉시이체</button></li>

View File

@ -51,6 +51,11 @@
return false;
}
if(!moneyChk()){
return false;
}
if(!valueChk()){
return false;
}
@ -152,6 +157,21 @@
}
function moneyChk(){
//회원 보유 잔액 비교
var totPriceOnly = stringReplaceAll($('#totalPriceTxt').text() , ",", "");
var userMoneyOnly = stringReplaceAll($('#hdUserMoney').text(), ",", "");
if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){
alert("팩스 발송에 필요한 회원님의 보유 잔액이 부족 합니다.");
return false;
}
return true;
}
function valueChk(){
if($('#title').val() == ''){
alert('제목을 입력해 주세요.');

View File

@ -46,7 +46,7 @@
</li>
<li>
<p>2</p>
<p><span>문자 메시지 대비</span> 75% 이상 저렴</p>
<p><span>문자 메시지 대비</span> 65% 이상 저렴</p>
</li>
<li>
<p>3</p>
@ -91,11 +91,11 @@
<p class="name">알림톡</p>
<div class="icon">
<img src="/publish/images/kakao_intro_cont/kakao.jpg.jpg" alt="카카오">
<p class="price">6.5원</p>
<p class="price">6.9원</p>
</div>
</div>
<div class="text">
<p>문자 대비&nbsp;<span>75% 저렴</span></p>
<p>문자 대비&nbsp;<span>65% 저렴</span></p>
</div>
</div>
<div class="fight-line"></div>

View File

@ -434,11 +434,38 @@ function excelDownload(){
}
function checkConf() {
var confCheck = false;
$.ajax({
type: "POST",
url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do",
data: {},
dataType:'json',
async: false,
success: function (returnData, status) {
if(returnData.result == "fail") {
console.log(returnData.message);
}else if(returnData.result == "success"){
confCheck = true;
}
}
,error: function (e) {console.log("ERROR : ", e); }
});
return confCheck;
}
/*
* 등록된 발신 탬플릿 카카오톡 전송
*/
function sendTemplateInfo(){
if(!checkConf()){ //문자온 conf-check
alert("현재 알림톡 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요.");
return false;
}
if(!usrDeptChk()){
return false;
}
@ -1055,6 +1082,8 @@ function goToPayUserKaKaoView(){
<input type="hidden" id="callToList" name="callToList" value=""> <!--완 받는사람 리스트-->
<input type="hidden" id="varNmList" name="varNmList" value=""> <!--완 변수 이름 리스트-->
<input type="hidden" id="varValList" name="varValList" value=""> <!--완 변수 리스트-->
<input type="hidden" id="atSmishingYn" name="atSmishingYn" value="${atSmishingYn}"> <!--알림톡 스미싱 여부-->
</form>
<form id="excelForm" name="excelForm" action="<c:url value='/web/mjon/alimtalk/kakaoApiNotityTalkSampleExcelDownload.do'/>">

View File

@ -1074,7 +1074,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="layer_popup pointPop">
<div class="layer_popup_cont">
<a href="/web/mjon/alimtalk/kakaoAlimtalkMsgDataView.do" title="알림톡 링크 이동">
<img src="/publish/images/main/popup_allimtalk_230523.jpg" alt="문자 ON 문자온 알림톡, 대한민국 최저가 선언! 조건없이 무조건 6.9원! 기업전용 / 1,000자 이하 텍스트&이미지 / 문자 대비 75% 저렴 카카오 '알림톡' 서비스 오픈! 알림톡 바로가기">
<img src="/publish/images/main/popup_allimtalk_230712.jpg" alt="문자 ON 문자온 알림톡, 대한민국 최저가 선언! 조건없이 무조건 6.9원! 기업전용 / 1,000자 이하 텍스트&이미지 / 문자 대비 65% 저렴 카카오 '알림톡' 서비스 오픈! 알림톡 바로가기">
</a>
</div>
<div class="popup_btm">
@ -1169,16 +1169,16 @@ function fn_click_banner_add_stat(bannerMenuCode){
<div class="swiper-container visual_swiper">
<div class="swiper-wrapper" id="mainSwiperWrapperArea">
<div class="swiper-slide">
<div class="slideImg"><img src="/publish/images/main/f_visual_06_20230523.jpg" alt="문자온, 카카오 '알림톡' 서비스 오픈! 문자온 알림톡, 대한민국 최저가 선언! 조건없이 무조건 6.9원! 카카오톡 채널아이디 추가를 하지 않은 이용자에게도 카카오톡 메시지 발송이 가능한 서비스! 알림톡 바로가기 알림톡 도착 kakao 문자온에서 알림톡이 도착하였습니다! 기업전용/1,000자 이하 텍스트 & 이미지/문자 대비 75% 저렴" usemap="#allimtalk-map"></div>
<div class="slideImg"><img src="/publish/images/main/f_visual_06_20230712.jpg" alt="문자온, 카카오 '알림톡' 서비스 오픈! 문자온 알림톡, 대한민국 최저가 선언! 조건없이 무조건 6.9원! 카카오톡 채널아이디 추가를 하지 않은 이용자에게도 카카오톡 메시지 발송이 가능한 서비스! 알림톡 바로가기 알림톡 도착 kakao 문자온에서 알림톡이 도착하였습니다! 기업전용/1,000자 이하 텍스트 & 이미지/문자 대비 65% 저렴" usemap="#allimtalk-map"></div>
</div>
<div class="swiper-slide">
<div class="slideImg"><img src="/publish/images/main/f_visual_01_20230621.jpg" alt="문자는 이제, 문자온! 단 한번, 국내 최저가! 인생 최저가! 첫결제 단문 7.5원 장문 32원 그림 59원 복날이닭 삼계탕 드시고 건강한 여름 보내세요 Summer 떠나요 힐링여행" usemap="#image-map" /></div>
<div class="slideImg"><img src="/publish/images/main/f_visual_01_20230706.jpg" alt="문자는 이제, 문자온! 단 한번, 국내 최저가! 인생 최저가! 첫결제 단문 7.5원 장문 32원 그림 59원 제헌절 7月17日 제헌절 대한민국 헌법공포 기념 국경일" usemap="#image-map" /></div>
</div>
<div class="swiper-slide">
<div class="slideImg"><img src="/publish/images/main/f_visual_02_20221116.jpg" alt="문자도 보내고! 현금도 챙기는! 문자온만의 특별한 혜택! 결제금액의 2% 포인트 추가 적립! 포인트 1만점 이상 적립 시 현금페이백" /></div>
</div>
<div class="swiper-slide">
<div class="slideImg"><img src="/publish/images/main/f_visual_03_20230621.jpg" alt="다른 사이트에는 없다! 오직 문자온에만 있다! 최고의 디자이너가 직접 제작하는 그림문자 맞춤제작을 통해 나만의 문자를 디자인 해보세요 해수욕장 숙박권 Summer 썸머축제 이벤트 안내 미리 예매만 해도 숙박권 70% 할인!! 엠제이여행사에서 해수욕장 숙박권을 예매하신 고객분들에게 최고급 호텔 숙박권을 무료로 드립니다 70% 할인 복날이닭 할인받자! 3만원할인 ₩12,900 마지막 복날 마지막 찬스 할인받고 복날 치킨 즐기세요! DCCHANCE 8.11(목) - 12(금) 단 2일! 고소하고 시원하게 콩국수 이以냉冷치治열熱 시원한 여름시즌메뉴로 무더위를 시원하게 극복하세요. 매콤하고 시원하게 열무말이 국수" /></div>
<div class="slideImg"><img src="/publish/images/main/f_visual_03_20230706.jpg" alt="다른 사이트에는 없다! 오직 문자온에만 있다! 최고의 디자이너가 직접 제작하는 그림문자 맞춤제작을 통해 나만의 문자를 디자인 해보세요 LOGO 제헌절 퀴즈 이벤트 이벤트 기간 2099년 7월 1일 ~ 7월 17일 7월 17일은 제헌절! 퀴즈풀고 경품받기 헌법 제1조 제2항 대한민국 주권은 ○○에게 있고 모든권력은 ○○으로부터 나온다. 이벤트 게시글에 댓글로 남겨주시면 정답을 맞추신 분께는 추첨을 통해 경품을 보내드려요! 기간 : 07.07 ~ 07.17 LOGO 7월 17일 제헌절 제헌절 이벤트 제한절에 태극기를 게양하신 사진 또는 영상을 개인 SNS에 업로드 후 페이스북 이벤트 글에 링크와 함께 댓글을 남겨주세요" /></div>
</div>
<div class="swiper-slide">
<div class="slideImg"><img src="/publish/images/main/f_visual_04_20221116.jpg" alt="문자는 이제, 문자온! 선택은 역시 문자온! 문자사이트 선택의 5가지 기준 1. 가격, 속도, 성능, 기능, 보안이 보장되는가? 2. 결제, 정산, 계산서 발행 등 업무가 자동화 되어 있고 편리한가? 3. 최신 IT 기술과 트렌드가 반영되어 있는가? 4. 회원가입 및 발신번호 인증이 쉽고 빠르며, 대량문자를 전송하기에 사용이 편리한가? 5. 매일 문자샘플이 업데이트 되고, CS 및 기술응대가 실시간적으로 이루어지는가?" /></div>

View File

@ -343,7 +343,13 @@ $(document).on("click", "#chkAll", function(e) {
</table>
<div class="excel_middle">
<div class="select_btnWrap clearfix">
<div class="add_text2">※ 요금 결제내역은 결제일을 기준으로 최대 6개월까지만 조회 가능합니다.</div>
<div class="add_text2" style="line-height: 1.2em;">
※ 요금 결제내역은 결제일을 기준으로 최대 6개월까지만 조회가능합니다.
<!--
<br />
※ 간편결제 영수증은 결제하신 서비스를 통해 제공됩니다.
-->
</div>
<div>
<button type="button" class="excel_btn" onclick="javascript:payExcelDownload();">
<i class="downroad"></i>엑셀 다운로드
@ -514,7 +520,7 @@ $(document).on("click", "#chkAll", function(e) {
<c:if test="${result.rcptType eq '0'}">
<p class="fwRg c_002c9a">간이영수증 발행완료</p>
</c:if>
<c:if test="${result.payMethod == 'CARD' || result.payMethod == 'SPAY'}">
<c:if test="${result.payMethod == 'CARD'}">
<button type="button" class="btnType btnType20" onclick="fnPrintReceipt('<c:out value="${result.tid}"/>', '<c:out value="${result.pgCode}"/>', '<c:out value="${result.svcId}"/>', '<c:out value="${result.mrctTrdNo}"/>', '<c:out value="${result.trdNo}"/>', '<c:out value="${result.regDate}"/>'); return false;">카드전표</button>
</c:if>
</c:if>

View File

@ -6,6 +6,10 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%>
<style>
.charg_cont .area_tab li{ width: calc((100% - 80px)/5);}
</style>
<!-- KG 모빌리언스 -->
<script src="https://mup.mobilians.co.kr/js/ext/ext_inc_comm.js"></script>
<script type="text/javascript" src="<c:url value='/js/MJUtill.js'/>"></script>
@ -639,7 +643,7 @@ function TabTypePay(obj, tabId) {
<div>
<p class="tab_tit">충전수단 선택</p>
<ul class="area_tab">
<li class="btn_charge0 btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
<li class="btn_charge_simple btn_tab active"><button type="button" onclick="TabTypePay(this,'0');"><i></i>간편결제</button></li>
<li class="btn_charge1 btn_tab"><button type="button" onclick="TabTypePay(this,'1');"><i></i>신용카드</button></li>
<li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'2');" id="btnDdedicatedAccount"><i></i>전용계좌</button></li>
<!-- <li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'3');"><i></i>무통장입금</button></li> -->

View File

@ -99,6 +99,20 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border:
.login2 .login_info .login2_name p {color: #222; font-weight: 400; vertical-align: top; font-weight: 500; height: 16px; white-space:nowrap;}
.login2 .login_info .login2_name span {width: 61px;padding:0 10px 0 0;margin: 0 0 0 -5px;}
.login2 .login_info i {background-image: url(/publish/images/mypageIcon2.png);width: 34px;height: 34px;margin-right: 5px;}
/*등급별 아이콘*/
.login2 .login_info i.vvip{background-image: url(/publish/images/level/level_icon/vvip_icon.png);}
.login2 .login_info i.vip{background-image: url(/publish/images/level/level_icon/vip_icon.png);}
.login2 .login_info i.gold{background-image: url(/publish/images/level/level_icon/gold_icon.png);}
.login2 .login_info i.sliver{background-image: url(/publish/images/level/level_icon/sliver_icon.png);}
.login2 .login_info i.black{background-image: url(/publish/images/level/level_icon/black_icon.png);}
.login2 .login_info i.red{background-image: url(/publish/images/level/level_icon/red_icon.png);}
.login2 .login_info i.purple{background-image: url(/publish/images/level/level_icon/purple_icon.png);}
.login2 .login_info i.blue{background-image: url(/publish/images/level/level_icon/blue_icon.png);}
.login2 .login_info i.orange{background-image: url(/publish/images/level/level_icon/orange_icon.png);}
.login2 .login_info i.green{background-image: url(/publish/images/level/level_icon/green_icon.png);}
.login2 .login_info i.yellow{background-image: url(/publish/images/level/level_icon/yellow_icon.png);}
.login2 .login_info i.white{background-image: url(/publish/images/level/level_icon/white_icon.png);}
/*등급별 아이콘 끝*/
.login2 .login_info button {margin-right: 2px;}
.login2 .login_pay {display:flex;}
.login2 .check_money p span, .login2 .point p span {padding-left: 4px;}
@ -220,6 +234,7 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border:
.quickMenu .quickMenuIn li i.quick9 {background-image: url(/publish/images/quick9.png);width: 24px; height:20px;}
.quickMenu .quickMenuIn li i.quick10 {background-image: url(/publish/images/quick10.png);width: 21px; height:20px;}
.quickMenu .quickMenuIn li i.quick11 {background-image: url(/publish/images/quick11.png);width: 20px; height:20px;}
.quickMenu .quickMenuIn li i.quick12 {background-image: url(/publish/images/level/quick12.png);width: 20px; height:20px;}
.quickMenu .quickMenuIn li span {display: block;font-size: 12px;color: #555;padding-top: 8px;}
.quickMenu .goTop {background-color: #929599;color: #fff;width: 90px;padding: 10px 0;border-radius: 0 0 8px 8px;font-size: 20px;}
.quickMenu .goTop i {background-image: url(/publish/images/goTop.png);width: 12px;height: 10px;margin-left: 5px;margin-bottom: 5px;}
@ -234,6 +249,7 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border:
.quickMenu .quickMenuIn li:hover i.quick9 {background-image: url(/publish/images/quick9_hover.png);width: 24px; height:20px;}
.quickMenu .quickMenuIn li:hover i.quick10 {background-image: url(/publish/images/quick10_hover.png);width: 21px; height:20px;}
.quickMenu .quickMenuIn li:hover i.quick11 {background-image: url(/publish/images/quick11_hover.png);width: 20px; height:20px;}
.quickMenu .quickMenuIn li:hover i.quick12 {background-image: url(/publish/images/level/quick12_hover.png);width: 20px; height:20px;}
.quickMenu .quickMenuIn li:hover span {color: #002c9a;font-weight: 500;}
.quickMenu .quick_kakaobtn {position:absolute;right:0;bottom:-100px;width:90px;height:90px;font-size:0;text-indent:-9999em;background:url(/publish/images/content/icon_quick_kakao.png) no-repeat left top;z-index:15;}
.quickMenu .quick_kakaobtn a {display:block;width:100%;height:100%;}

View File

@ -90,7 +90,7 @@ input[type=text]::-ms-reveal, input[type=password]::-ms-reveal, input[type=email
/* tabTpye1 */
.tabType1 {background-color: #fff;width: 100%;border-radius: 10px; display: flex;text-align: center;margin-bottom: 20px;border:2px solid #46484a;}
.tabType1 li {flex-basis: calc(100%/2); position: relative;}
.tabType1 li button {width: 100%;padding: 13px 0;font-size: 18px;position:relative;z-index:1;}
.tabType1 li button {width: 100%;padding: 13px 0;font-size: 16px;position:relative;z-index:1;}
.tabType1 li.active {background-color: #46484a;}
.tabType1 li.active:after {content:'';position:absolute;left:-1px;top:-1px;width:100%;height:100%;border:1px solid #46484a;}
.tabType1 li.active button {color: #fff;border:1px solid #46484a;background-color: #46484a;}
@ -427,7 +427,7 @@ input[type=text]::-ms-reveal, input[type=password]::-ms-reveal, input[type=email
.tType1 tbody tr th.billingAmount button.cal_btn {position: absolute;right: 0; top: 50%;transform: translateY(-50%);background-color: #fbc72b;width: 88px;height: 32px;border-radius: 5px;}
.tType1 tbody tr th.billingAmount button.cal_btn:hover {box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);}
.tType1 tbody tr th.billingAmount button.cal_btn i {background-image: url(/publish/images/content/calIcon.png);width: 12px;height: 16px;margin: 0 3px 2px 0;}
.tType1 tbody tr th.billingAmount .pay_type {background-color: #fff; border-radius: 5px; height: 60px; padding: 12px 13px; box-sizing: border-box;}
.tType1 tbody tr th.billingAmount .pay_type {background-color: #fff; border-radius: 5px 5px 0 0; height: 60px; padding: 12px 13px; box-sizing: border-box;}
.tType1 tbody tr th.billingAmount .pay_type button.btn_event_cash{width: 100px;}
.tType1 tbody tr th.billingAmount .pay_type:last-child {margin-top: 10px;}
.tType1 tbody tr th.billingAmount .pay_type>div:first-child {float: left;margin:0 0 0 5px;}
@ -447,6 +447,21 @@ input[type=text]::-ms-reveal, input[type=password]::-ms-reveal, input[type=email
.tType1 tbody select.sel_number {width: 340px; height: 40px; padding: 0 20px; background-color: #f2f2f2;border-radius: 5px; border: 0;color: #002c9a;font-weight: 400;font-size: 16px;background-image: url(/publish/images/select_search.png); background-repeat: no-repeat; background-position: 94% center;}
.tType1 tbody input[type="text"]::placeholder {color: #a6a6a6;}
.tType1 tbody input:disabled {background-color: #dedede;}
/*발송금액 아래 등급별 가격안내 추가*/
.my_price_wrap .center-line{width: 96%; height: 1px; background-color: #e5e5e5; margin: 0 auto;}
.my_price_wrap{letter-spacing: -0.5px; width: calc(100% - 100px); background-color: #fff; border-radius: 0 0 5px 5px; width: 100%;}
.my_price_wrap ul{display: flex; width: calc(100% - 20px); border-bottom: 1px dashed #d5d5d5; margin: 0 auto; padding: 15px 0px 15px 5px; align-items: center; flex-wrap: wrap; box-sizing: border-box;}
.my_price_wrap ul:last-child{border: 0; align-items: flex-start;}
.my_price_wrap ul:first-child li:last-child{margin: 0; padding: 0}
.my_price_wrap .title{font-size: 17px; font-weight: 400; color: #222; margin-top: 1px;}
.my_price_wrap .title span{font-size: 15px;}
.my_price_wrap .title img{margin: 0 8px 0 0; vertical-align: top;}
.my_price_wrap .type{border: 1px solid #46484a; border-radius: 3px; margin-right: 3px; color: #46484a; padding: 0 4px 1px 4px;}
.my_price_wrap .type, .price_line{font-size: 16px; font-weight: 400; color: #555;}
.my_price_wrap .price{color: #e40000; font-size: 18px; font-weight: 700;}
.my_price_wrap .line{font-size: 14px; color: #ababab;}
/*// tType1 */
/*// sub page 반복 */
@ -806,7 +821,7 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.ext_info li:nth-child(1) i {background-image: url(/publish/images/content/list_view_icon1.png); width: 16px; height: 16px; }
.ext_info li:nth-child(2) i {background-image: url(/publish/images/content/list_view_icon2.png); width: 16px; height: 16px; margin: 0 10px 3px 0;}
.ext_info li:nth-child(3) i {background-image: url(/publish/images/content/hits_icon.png); width: 24px; height: 14px; margin: 0 10px 3px 0; opacity: 0.9;}
.view_wrap .view_cont {padding: 40px 00px; box-sizing: border-box; border-bottom: 1px solid #d5d5d5;}
/*.view_wrap .view_cont {padding: 40px 00px; box-sizing: border-box; border-bottom: 1px solid #d5d5d5;}*/
.view_wrap .view_cont .cont_in {font-size: 18px; line-height: 1.5; font-weight: 300;}
.view_wrap .view_cont .cont_in .img_cont {text-align: center; margin-bottom: 70px;}
@ -916,6 +931,11 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.pay_cont .excel_middle {margin: 20px 0 10px 0;}
.pay_cont .excel_middle .selType2 {width: 82px; height: 32px; margin-left: 0;}
.pay_cont .select_btnWrap .add_text2 {font-size: 16px; padding-top: 7px; color: #666; font-weight: 300;}
/*등급 및 누적결제액 확인 버튼 추가*/
.pay_cont .excel_middle .level_btn{margin: 0 5px; border: 1px solid #002c9a; color: #002c9a;}
.pay_cont .excel_middle .level_btn img{margin-top: -3px;}
.pay_cont .excel_middle .print_btn {margin: 0 5px;}
.pay_cont .pay_info {display: flex; justify-content: center; background-color: #efeff0; width: 100%; padding: 16px 0; border-radius: 5px; margin: 20px 0 50px 0; box-sizing: border-box; }
.pay_cont .pay_info p:nth-child(1) {font-size: 18px;}
@ -1055,18 +1075,22 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.charg_cont.current {display: block;}
.charg_cont .tab_tit{font-size: 24px; font-weight: bold; color: #222; margin-bottom: 20px; margin-top: 40px;}
.charg_cont .area_tab{display: flex; width: 100%; justify-content: space-between;}
/* 간편결제 오픈
.charg_cont .area_tab li{ width: calc((100% - 80px)/5); border: 1px solid #ddd; border-radius: 5px; position: relative; box-sizing: border-box; text-align: center;} */
.charg_cont .area_tab li{ width: calc((100% - 80px)/4); border: 1px solid #ddd; border-radius: 5px; position: relative; box-sizing: border-box; text-align: center;}
.charg_cont .area_tab li button {font-size: 22px; font-weight: 400; width: 100%; height: 100%; padding: 60px 20px 40px 20px;position:relative;z-index:1;}
.charg_cont .area_tab li.active {border: 3px solid #fbc72b;}
.charg_cont .area_tab li.active::before{background-image: url(/publish/images/content/icon_chargeCheck2.png); background-color: #fbc72b; border: 2px solid #fbc72b;}
.charg_cont .area_tab li::before{position: absolute; content: " "; width: 31px; height: 31px; border: 3px solid #ccc; right: 15px; top: 15px; border-radius: 100%; background-image: url(/publish/images/content/icon_chargeCheck1.png); background-repeat: no-repeat; background-position: center 58%;}
.charg_cont .area_tab button i{width: 65px; height: 55px; display: block; margin: 0 auto 15px auto; background-position: center;}
.charg_cont .area_tab .btn_charge1 i{background-image: url(/publish/images/content/icon_charging1.png);}
.charg_cont .area_tab .btn_charge2 i{background-image: url(/publish/images/content/icon_charging2.png);}
.charg_cont .area_tab .btn_charge3 i{background-image: url(/publish/images/content/icon_charging3.png);}
.charg_cont .area_tab .btn_charge_simple i{background-image: url(/publish/images/simple.png);}
.charg_cont .area_tab .btn_charge1 i{background-image: url(/publish/images/content/icon_charging2.png);}
.charg_cont .area_tab .btn_charge2 i{background-image: url(/publish/images/content/icon_charging3.png);}
.charg_cont .area_tab .btn_charge4 i{background-image: url(/publish/images/content/icon_charging4.png);}
.charg_cont .area_tab .btn_charge5 i{background-image: url(/publish/images/content/icon_charging5.png);}
.charg_cont .area_tab+.checkbox_wrap{margin-top: 18px; color: #666; font-weight: 300; font-size: 18px; text-align: right; width: 100%;}
/* 간편결제 오픈
.charg_cont .area_tab.type03 li {width:calc(100%/4 - 15px);} */
.charg_cont .area_tab.type03 li {width:calc(100%/3 - 15px);}
.charg_cont .checkbox_wrap input[type="checkbox"],
.charg_cont .checkbox_wrap input[type="radio"]{display: none;}
@ -1143,6 +1167,33 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.charg_cont .tType1 .box_input.flex input{border: 1px solid #ccc;}
.charg_cont .tType1 .box_input.flex input[type="text"] {width: 200px;background-color: #fff;}
.charg_cont .tType1 .box_input.flex button{background-color: #002c9a; color: #fff; border: 0; margin-left: 10px;}
/*누적결제액별 등급 및 단간 추가*/
.accrue_price{width: 100%; height: 105px; border-radius: 5px; background-color: #f2f2f2;}
.accrue_price p{font-size: 22px; font-weight: 700; line-height: 105px; margin-left: 53px;}
.accrue_price p span{border-radius: 5px; background-color: #fff; padding: 10px 10px 10px 10px; font-size: 18px; font-weight: 400;}
.accrue_price p span img{margin-right: 5px; margin-top: -5px;}
.accrue_price p span span{padding: 0; font-size: 22px; font-weight: 700; color: #e40000;}
.accrue_level .tType1_title{margin-top: 40px;}
.accrue_level .tType1_title img{margin-top: -5px;}
.accrue_level .tType2{width: 100%; border-top: 1px solid #000; text-align: center;}
.accrue_level .tType2 thead tr{background-color: #f7f7f7; border-bottom: 1px solid #e5e5e5;}
.accrue_level .tType2 thead tr th{height: 46px; font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; vertical-align: middle;}
.accrue_level .tType2 thead tr th:last-child{border-right: 0;}
.accrue_level .tType2 tbody tr{border-bottom: 1px solid #e5e5e5;}
.accrue_level .tType2 tbody tr th{font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; height: 42px; vertical-align: middle;}
.accrue_level .tType2 tbody tr td{font-size: 16px; font-weight: 300; border-right: 1px solid #e5e5e5; vertical-align: middle; line-height: 1.4;}
.accrue_level .tType2 tbody tr td:last-child{border-right: 0;}
.accrue_level .tType2 tbody tr td:last-child>span {font-weight: 400;}
.accrue_level .tType2_level tbody tr th{font-weight: 300;}
.accrue_level .tType2_level tbody tr .level_price{font-weight: 500;}
.accrue_level .level_first{font-weight: 400; font-size: 18px; color: #666;}
.accrue_level .level span{font-weight: 400; font-size: 18px; color: #666;}
.accrue_level .tType2 .th_second span{font-size: 15px; font-weight: 300;}
.accrue_level .reqTxt4_last{text-indent: -12px; margin: 0px 0px 0px 11px;}
/* //결제하기 */
/* 요금안내/견적내기 */
@ -1153,11 +1204,15 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.fee_cont .tType2 thead tr th{height: 46px; font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; vertical-align: middle;}
.fee_cont .tType2 thead tr th:last-child{border-right: 0;}
.fee_cont .tType2 tbody tr{border-bottom: 1px solid #e5e5e5;}
.fee_cont .tType2 tbody tr th{font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; height: 50px; vertical-align: middle;}
.fee_cont .tType2 tbody tr td{font-size: 16px; font-weight: 300; border-right: 1px solid #e5e5e5; vertical-align: middle; line-height: 1.4;}
.fee_cont .tType2 tbody tr td:last-child{border-right: 0;}
.fee_cont .tType2 tbody tr td:last-child>span {font-weight: 400;}
/*문자(등급별 요금 안내) 테이블 높이 수정*/
.fee_cont .tType2 .level_table th{height: 42px;}
.fee_cont .tType1 select, .fee_cont .tType1 input{border: 0; background-color: #f2f2f2;}
.fee_cont .btn_add{float: right;}
.fee_cont .btn_add img{margin-left: 5px;}
@ -1189,6 +1244,14 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.tb_wrap.totalPrice_tb .tType4 tbody td {font-size: 18px; font-weight: 400; color: #222; height: 52px; line-height: 31px; position: relative;}
.tb_wrap.totalPrice_tb .tType4 tbody td select {height: 36px; top: 8px; border: 2px solid; }
/*문자(등급별 요금 안내)*/
.fee_cont .tType2_level tbody tr th{font-weight: 300;}
.fee_cont .tType2_level tbody tr .level_price{font-weight: 500;}
.fee_cont .level_first{font-weight: 400; font-size: 18px; color: #666;}
.fee_cont .level span{font-weight: 400; font-size: 18px; color: #666;}
.fee_cont .tType2 .th_second span{font-size: 15px; font-weight: 300;}
.fee_cont .reqTxt4_last{text-indent: -12px; margin: 0px 0px 0px 11px;}
/* //요금안내/견적내기 */
/* 예약관리 */
@ -1559,7 +1622,7 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
/* .fax_content .final_wrap .pay_type {border-radius: 5px; height: 60px; padding: 12px 13px; box-sizing: border-box;} */
.fax_content .final_wrap .pay_type:last-child {margin-top: 10px;}
/* .fax_content .final_wrap .pay_type>div:first-child {float: left;margin:0 0 0 5px; background-color: #fff;} */
.fax_content .final_wrap .pay_type>div:first-child {display:inline-block;width: calc(100% - 187px); background-color: #fff;padding: 8px 15px; border-radius: 5px;}
.fax_content .final_wrap .pay_type>div:first-child {display:inline-block;width: calc(100% - 187px); background-color: #fff; padding: 8px 15px; border-radius: 5px;}
.fax_content .final_wrap .pay_type>div .won {display:inline-block;margin:9px 11px 0 -34px;font-size:16px;vertical-align:top;color:#9a9a9a;}
.fax_content .final_wrap .pay_type>div:last-child {display:inline-block;max-width: 150px; width: 100%;}
.fax_content .final_wrap .pay_type>div:last-child button{width: 100%;}
@ -1598,6 +1661,9 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
.fax_content .qmMark:hover+.send_hover_cont{display: block;}
.fax_content .qmMark+.send_hover_cont li{text-indent: -9px; margin: 0 0 0 9px;}
/* 카톡전송 > 알림톡 소개 */
.kakao_intro_cont{letter-spacing: -0.5px; /*word-break: keep-all;*/}
.kakao_intro_cont .heading h2{letter-spacing: 0;}

View File

@ -202,6 +202,9 @@
.btn_custom img{vertical-align: middle; margin-top: -4px; margin-right: 2px;}
.btn_custom:hover {box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.12);}
/*요금안내 top 배너 시작*/
.price_top_banner{position: fixed; right: 4%; top: 160px; z-index: 20;}
/* media queries */
@media screen and (max-width: 1800px){
/* content2 문자샘플 영역 */

View File

@ -293,7 +293,7 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare
/* //join4 - 가입완료 */
/* 마이페이지 */
/* 메인화면 */
.my_dashboard {margin-top: 40px;}
@ -359,6 +359,7 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare
.my_dashboard table tbody tr:last-child td {border-bottom: 1px solid transparent; }
.my_dashboard table tbody tr:last-child td:first-child {border-bottom: 1px solid transparent; border-radius: 0 0 0 5px;}
.my_dashboard table tbody tr:last-child td:last-child {border-bottom: 1px solid transparent; border-radius: 0 0 5px 0 ;}
/* mypage dashboard cont1 */
.my_dashboard .my_dashboard_cont1 {padding: 25px 30px;}
.my_dashboard_cont1>div {display: flex; align-items: center;}
@ -367,6 +368,18 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare
.my_dashboard .my_dashboard_cont1 button {font-size: 17px; height: 45px; padding: 0 15px; border: 1px solid #002c9a; border-radius: 5px; margin-left: 15px; color: #002c9a; background-color: #fff; position: relative; right: 5px; top: 3px;}
.my_dashboard_cont1>span {background-color: #fff; height: 43px; padding: 0 30px; border-radius: 21.5px; align-items: center; display: flex; font-weight: 300;}
.my_dashboard_cont1>span>span {font-weight: 500;}
/* mypage dashboard cont1 등급제 기간 추가 - 기간 지나면 이부분 삭제 */
.my_dashboard .my_dashboard_cont1 {padding: 25px 30px;}
.my_dashboard_cont1>div {display: flex; align-items: center;}
.my_dashboard_cont1 p {font-size: 16px; font-weight: 300;}
.my_dashboard_cont1 p span {font-size: 24px; font-weight: 600; padding-right: 3px; margin-left: -20px;}
.my_dashboard .my_dashboard_cont1 button {font-size: 17px; height: 45px; padding: 0 8px; border: 1px solid #002c9a; border-radius: 5px; margin-left: 15px; color: #002c9a; background-color: #fff; position: relative; right: 5px; top: 3px;}
.my_dashboard_cont1>span {background-color: #fff; height: 43px; padding: 0 30px; border-radius: 21.5px; align-items: center; display: flex; font-weight: 300;}
.my_dashboard_cont1>span>span {font-weight: 500;}
.my_dashboard .my_dashboard_cont1 .level_icon{margin: 0 7px 0 0; display: block; width: 46px; height: 80px; text-align: center; padding: 0; background-color: transparent; border: 0;}
.my_dashboard_cont1 .level_icon p{font-size: 14px; font-weight: 400; margin-top: 2px; color: #444;}
/* mypage dashboard cont2 */
.my_dashboard .my_dashboard_cont2 {width: 100%; flex-flow: wrap;}
.dashboard_info {display: flex; flex-flow: wrap; width: 100%; justify-content: space-between;}
@ -642,6 +655,11 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare
.limited_wrap .limited_button {margin:40px 0;}
.limited_wrap .limited_button .btnType {width:160px;margin:0 3px;}
/* 마이페이지 */
/*등급제 아이콘 추가*/
/* media queries */
@ -652,6 +670,14 @@ input[type="password"].list_inputType1 {padding: 0px;background-color: transpare
.my_dashboard .send_price{width: calc(100% - 340px);}
.send_top .send_price li{letter-spacing: -1px;}
.send_top .send_price .title{padding: 0 4px 0 0;}
/* mypage dashboard cont1 등급제 기간 추가 - 기간 지나면 이부분 삭제 */
.my_dashboard_cont1 p {font-size: 17px;}
.my_dashboard_cont1 p span {font-size: 22px;}
.my_dashboard .my_dashboard_cont1 button {font-size: 16px; padding: 0 8px; margin: 0 0 0 13px; color: #002c9a;}
.my_dashboard_cont1 .level_icon{margin: 0 22px 0 0;}
.my_dashboard .send_price{margin: 0 -24px 0 0;}
.my_dashboard .send_price .price_title{width: 75px;}
}
@media only screen and (max-width:1380px){

View File

@ -1114,6 +1114,15 @@
/* 결제완료 */
/* 누적결제액 세부내역 팝업 */
.level_popup .popup_heading p span{font-size: 18px; font-weight: 400;}
.level_popup .candidate_table .tb_wrap{min-height: auto;}
.level_popup .candidate_table table tr:first-child{border-top: 0;}
.level_popup .level_tx{margin: -20px 0 3px 0; font-size: 16px; font-weight: 300;}
.level_popup .layer_in .level_title th{ font-size: 15px; font-weight: 400; text-align: center;}
.level_popup .layer_in .level_text td{font-size: 15px; font-weight: 300; text-align: center; height: 40px;}
.level_popup .pagination{margin-top: 20px;}
/* ie */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* 특수문자 */

View File

@ -282,388 +282,7 @@
문자온 이벤트 및 혜택을 문자, 카카오톡, 메일로 수신하는 것에 동의합니다.</label></li>
</ul> -->
</div>
<div class="serv_content charg_cont">
<div>
<p class="tab_tit">충전수단 선택</p>
<ul class="area_tab">
<li class="btn_charge1 btn_tab active"><button type="button"
onclick="TabTypePay(this,'1');"><i></i>신용카드</button></li>
<li class="btn_charge2 btn_tab"><button type="button"
onclick="TabTypePay(this,'2');"
id="btnDdedicatedAccount"><i></i>전용계좌</button></li>
<!-- <li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'3');"><i></i>무통장입금</button></li> -->
<li class="btn_charge4 btn_tab"><button type="button"
onclick="TabTypePay(this,'4');"><i></i>휴대폰결제</button></li>
<li class="btn_charge5 btn_tab"><button type="button"
onclick="TabTypePay(this,'5');"><i></i>즉시이체</button></li>
</ul>
<div class="checkbox_wrap"><input type="checkbox" id="agree"><label
for="agree">선택한 수단을 다음 충전 시에도
이용합니다.</label></div>
<!-- 신용카드 -->
<div class="area_tabcont on" id="tab2_1">
<p class="tType1_title"><img
src="/publish/images/content/icon_charging1_small.png"
alt=""> 신용카드</p>
<table class="tType1">
<caption></caption>
<colgroup>
<col style="width: 100px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="charge_content">
<th scope="row">충전금액</th>
<td class="flex">
<select name="tempPrice" id="tempPrice"
class="list_seType1">
<option value="5000">5,000</option>
<option value="10000">10,000</option>
<option value="20000">20,000</option>
<option value="30000">30,000</option>
<option value="50000" selected>50,000</option>
<option value="100000">100,000</option>
<option value="200000">200,000</option>
<option value="300000">300,000</option>
<option value="500000">500,000</option>
<option value="700000">700,000</option>
<option value="900000">900,000</option>
<option value="1000000">1,000,000</option>
<option value="1200000">1,200,000</option>
<option value="1500000">1,500,000</option>
<option value="2000000">2,000,000</option>
<option value="2500000">2,500,000</option>
<option value="3000000">3,000,000</option>
</select>
<!-- <input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<p class="input_in"></p>
<button type="button" class="btnType1" onclick="setPrice(this , '3000'); return false;">+ 3천원</button>
<button type="button" onclick="setPrice(this , '5000'); return false;">+ 5천원</button>
<button type="button" onclick="setPrice(this , '10000'); return false;">+ 1만원</button>
<button type="button" onclick="setPrice(this , '100000'); return false;">+ 10만원</button>
<button type="button" onclick="setPrice(this , '1000000'); return false;">+ 100만원</button>--%>
<p class="input_in"></p> -->
<!-- <span class="reqTxt6">※ 최소 3천원 이상부터 결제 가능합니다.</span> -->
</td>
</tr>
<tr>
<td colspan="2">
<div class="amount_wrap">
<dl>
<dt>최종 결제금액 :</dt>
<dd>
<ul>
<li><strong id="supplyPriceStr">5,000</strong>원(공급가액)
</li>
<li><span class="plus"></span><strong id="vatPriceStr">500</strong>원(부가세)
</li>
<li class="total"><span class="equal"></span><strong id="lastPriceStr">5,500</strong>원(최종금액)
</li>
</ul>
</dd>
</dl>
<button type="button" class="btnType"
onclick="pgOpenerPopup(); return false;">충전하기</button>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="area_text">
<!-- <p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(010-8432-9333)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p> -->
<p>- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.
</p>
<p>- 카드사별 정책상 충전금액 제한이 있을 수 있습니다. 단, ARS 신용카드
결제는 충전금액 제한 없이 이용하실 수 있습니다.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //신용카드 -->
<!-- 전용계좌 -->
<div class="area_tabcont" id="tab2_2">
<!-- 신규계좌발급 시 -->
<p class="tType1_title"><img
src="/publish/images/content/icon_charging1_small.png"
alt="계좌 이미"> 전용계좌</p>
<table class="tType1">
<caption></caption>
<colgroup>
<col style="width: 65%">
<col style="width: 35%">
</colgroup>
<tbody>
<tr>
<td>
<div class="area_text">
<c:choose>
<c:when test="${not empty resultMyList}">
<p>입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능,
5천원 이상 입금 가능)</p>
</c:when>
<c:otherwise>
<p>1. 현재 발급받은 전용계좌가 없습니다.</p>
<p>2. 입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능,
5천원 이상 입금 가능)</p>
</c:otherwise>
</c:choose>
<!-- <p>3. 발급받은 전용계좌는 3개월 미사용시 자동 해지됩니다.</p> -->
</div>
</td>
<td class="right">
<label for="bankCd" class="label">은행선택</label>
<select name="bankCd" id="bankCd">
<option value="">은행선택</option>
<c:forEach var="result" items="${resultList}"
varStatus="status">
<option value="${result.bankCd}">
${result.codeNm}</option>
</c:forEach>
</select>
<p class="input_in" style="margin-right:5px;"></p>
<button type="button"
onclick="fnNewBankAccount(); return false;">신규계좌받기</button>
</td>
</tr>
</tbody>
</table>
<!-- 기존 계좌있을 시 -->
<p class="tType1_title"><img
src="/publish/images/content/icon_charging1_small.png"
alt="계좌 이미"> 전용계좌</p>
<table class="tType1">
<caption></caption>
<colgroup>
<col style="width: 65%">
<col style="width: 35%;">
</colgroup>
<tbody>
<c:choose>
<c:when test="${not empty resultMyList}">
<c:forEach var="result" items="${resultMyList}"
varStatus="status">
<tr>
<td>
<div class="checkbox_wrap">
<input type="radio"
id="chkAccount${status.count}"
name="chkAccount"
value="<c:out value='${result.bankCd}'/>_<c:out value='${result.codeNm}'/>_<c:out value='${result.acctNo}'/>">
<label
for="chkAccount${status.count}"></label>
<c:out value='${result.codeNm}' />
<c:out value='${result.acctNo}' />
</div>
<div class="account_holder">
(예금주 :
<c:out value="${result.cmfNm}" />)
</div>
</td>
<td class="right">
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="2">
<div>
보유한 전용 계좌가 없습니다.
</div>
</td>
</tr>
</c:otherwise>
</c:choose>
<tr>
<td colspan="2">
<div class="area_text">
<p>- 전용계좌는 개설일로부터 <span>3개월 미사용 시 자동
해지</span>됩니다.</p>
<p>- 전용계좌에 <span>5,000원 이상 입금</span> 시, 연중무휴
<span>실시간 자동 충전이</span> 가능합니다.</p>
<!-- <p>- 예금주 : 문자온</p> -->
<p>- 계좌번호 문자로 받기(일/3회까지)
<label for="" class="label">전화번호 입력</label>
<input type="text" id="callTo" name="callTo"
maxLength="11"
placeholder="- 없이 받으실 휴대폰 번호를 입력해주세요."
onfocus="this.placeholder=''"
onblur="this.placeholder='- 없이 전화번호를 입력해주세요'">
<button type="button"
onclick="fnSmsSend(<c:out value='${resultMsgInfo.sendCnt}'/>); return false;">문자받기</button>
</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //전용계좌 -->
<!-- 휴대폰 -->
<div class="area_tabcont" id="tab2_4">
<p class="tType1_title"><img
src="/publish/images/content/icon_charging4_small.png"
alt=""> 휴대폰결제</p>
<table class="tType1">
<caption></caption>
<colgroup>
<col style="width: 100px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="charge_content">
<th scope="row">충전금액</th>
<td class="flex">
<select name="tempPrice" id="tempPrice"
class="list_seType1">
<option value="5000">5,000</option>
<option value="10000">10,000</option>
<option value="20000">20,000</option>
<option value="30000">30,000</option>
<option value="50000" selected>50,000</option>
<option value="100000">100,000</option>
<option value="150000">150,000</option>
</select>
<!-- <input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<p class="input_in"></p>
<button type="button" class="btnType1" onclick="setPrice(this , '3000'); return false;">+ 3천원</button>
<button type="button" onclick="setPrice(this , '5000'); return false;">+ 5천원</button>
<button type="button" onclick="setPrice(this , '10000'); return false;">+ 1만원</button>
<button type="button" onclick="setPrice(this , '100000'); return false;">+ 10만원</button>
<button type="button" onclick="setPrice(this , '1000000'); return false;">+ 100만원</button>--%>
<p class="input_in"></p> -->
<!-- <span class="reqTxt6">※ 최소 3천원 이상부터 결제 가능합니다.</span> -->
</td>
</tr>
<tr>
<td colspan="2">
<div class="amount_wrap">
<dl>
<dt>최종 결제금액 :</dt>
<dd>
<ul>
<li><strong id="supplyPriceStr">5,000</strong>원(공급가액)
</li>
<li><span class="plus"></span><strong id="vatPriceStr">500</strong>원(부가세)
</li>
<li class="total"><span class="equal"></span><strong id="lastPriceStr">5,500</strong>원(최종금액)
</li>
</ul>
</dd>
</dl>
<button type="button" class="btnType"
onclick="pgOpenerPopup(); return false;">충전하기</button>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="area_text">
<p>- 월 30만원 한도 내에서 충전하실 수 있습니다.</p>
<p>- 휴대폰 소액결제 제한에 관한 사항은 가입하신 통신사를 통해 확인하실 수
있습니다.</p>
<p>- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.
</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //휴대폰 -->
<!-- 즉시이체 -->
<div class="area_tabcont" id="tab2_5">
<p class="tType1_title"><img
src="/publish/images/content/icon_charging5_small.png"
alt=""> 즉시이체</p>
<table class="tType1">
<caption></caption>
<colgroup>
<col style="width: 100px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="charge_content">
<th scope="row">충전금액</th>
<td class="flex">
<select name="tempPrice" id="tempPrice"
class="list_seType1">
<option value="5000">5,000</option>
<option value="10000">10,000</option>
<option value="20000">20,000</option>
<option value="30000">30,000</option>
<option value="50000" selected>50,000</option>
<option value="100000">100,000</option>
<option value="200000">200,000</option>
<option value="300000">300,000</option>
<option value="500000">500,000</option>
<option value="700000">700,000</option>
<option value="900000">900,000</option>
<option value="1000000">1,000,000</option>
<option value="1200000">1,200,000</option>
<option value="1500000">1,500,000</option>
<option value="2000000">2,000,000</option>
<option value="2500000">2,500,000</option>
<option value="3000000">3,000,000</option>
</select>
<!-- <input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<p class="input_in"></p>
<button type="button" class="btnType1" onclick="setPrice(this , '3000'); return false;">+ 3천원</button>
<button type="button" onclick="setPrice(this , '5000'); return false;">+ 5천원</button>
<button type="button" onclick="setPrice(this , '10000'); return false;">+ 1만원</button>
<button type="button" onclick="setPrice(this , '100000'); return false;">+ 10만원</button>
<button type="button" onclick="setPrice(this , '1000000'); return false;">+ 100만원</button>--%>
<p class="input_in"></p> -->
<!-- <span class="reqTxt6">※ 최소 3천원 이상부터 결제 가능합니다.</span> -->
</td>
</tr>
<tr>
<td colspan="2">
<div class="amount_wrap">
<dl>
<dt>최종 결제금액 :</dt>
<dd>
<ul>
<li><strong id="supplyPriceStr">5,000</strong>원(공급가액)
</li>
<li><span class="plus"></span><strong id="vatPriceStr">500</strong>원(부가세)
</li>
<li class="total"><span class="equal"></span><strong id="lastPriceStr">5,500</strong>원(최종금액)
</li>
</ul>
</dd>
</dl>
<button type="button" class="btnType"
onclick="pgOpenerPopup(); return false;">충전하기</button>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="area_text">
<p>- 나이스페이 결제를 이용하여 인터넷뱅킹처럼 로그인 없이 간단한 정보 입력만으로
실시간 계좌 이체</p>
<p>&nbsp; (일반결제, 간편결제, 앱결제)를 할 수 있는 간편한 결제
수단입니다.(소득공제 및 지출증빙 가능)</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //즉시이체 -->
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -284,26 +284,24 @@
<div>
<p class="tab_tit">충전수단 선택</p>
<ul class="area_tab">
<li class="btn_charge1 btn_tab active"><button type="button"
onclick="TabTypePay(this,'1');"><i></i>신용카드</button></li>
<li class="btn_charge2 btn_tab"><button type="button"
onclick="TabTypePay(this,'2');"
id="btnDdedicatedAccount"><i></i>전용계좌</button></li>
<li class="btn_charge_simple btn_tab active">
<button type="button" onclick="TabTypePay(this,'1');"><i></i>간편결제</button>
</li>
<li class="btn_charge1 btn_tab">
<button type="button" onclick="TabTypePay(this,'2');"><i></i>신용카드</button>
</li>
<li class="btn_charge2 btn_tab">
<button type="button" onclick="TabTypePay(this,'3');" id="btnDdedicatedAccount"><i></i>전용계좌</button>
</li>
<!-- <li class="btn_charge2 btn_tab"><button type="button" onclick="TabTypePay(this,'3');"><i></i>무통장입금</button></li> -->
<li class="btn_charge4 btn_tab"><button type="button"
onclick="TabTypePay(this,'4');"><i></i>휴대폰결제</button></li>
<li class="btn_charge5 btn_tab"><button type="button"
onclick="TabTypePay(this,'5');"><i></i>즉시이체</button></li>
<!-- <li class="btn_charge4 btn_tab"><button type="button" onclick="TabTypePay(this,'4');"><i></i>휴대폰결제</button></li> -->
<li class="btn_charge5 btn_tab"><button type="button" onclick="TabTypePay(this,'4');"><i></i>즉시이체</button></li>
</ul>
<div class="checkbox_wrap"><input type="checkbox" id="agree"><label
for="agree">선택한 수단을 다음 충전 시에도
이용합니다.</label></div>
<div class="checkbox_wrap"><input type="checkbox" id="agree"><label for="agree">선택한 수단을 다음 충전 시에도 이용합니다.</label></div>
<!-- 신용카드 -->
<!-- 간편결제 -->
<div class="area_tabcont on" id="tab2_1">
<p class="tType1_title"><img
src="/publish/images/content/icon_charging1_small.png"
alt=""> 신용카드</p>
<p class="tType1_title"><img src="/publish/images/simple_small.png" alt="간편결제"> 간편결제</p>
<table class="tType1">
<caption></caption>
<colgroup>
@ -314,8 +312,7 @@
<tr class="charge_content">
<th scope="row">충전금액</th>
<td class="flex">
<select name="tempPrice" id="tempPrice"
class="list_seType1">
<select name="tempPrice" id="tempPrice" class="list_seType1">
<option value="5000">5,000</option>
<option value="10000">10,000</option>
<option value="20000">20,000</option>
@ -334,6 +331,7 @@
<option value="2500000">2,500,000</option>
<option value="3000000">3,000,000</option>
</select>
<p class="input_in"></p>
<!-- <input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<p class="input_in"></p>
<button type="button" class="btnType1" onclick="setPrice(this , '3000'); return false;">+ 3천원</button>
@ -352,11 +350,90 @@
<dt>최종 결제금액 :</dt>
<dd>
<ul>
<li><strong id="supplyPriceStr">5,000</strong>원(공급가액)
<li><strong id="supplyPriceStr">50,000</strong>원(공급가액)
</li>
<li><span class="plus"></span><strong id="vatPriceStr">500</strong>원(부가세)
<li><span class="plus"></span><strong id="vatPriceStr">5,000</strong>원(부가세)
</li>
<li class="total"><span class="equal"></span><strong id="lastPriceStr">5,500</strong>원(최종금액)
<li class="total"><span class="equal"></span><strong id="lastPriceStr">55,000</strong>원(최종금액)
</li>
</ul>
</dd>
</dl>
<button type="button" class="btnType"
onclick="pgOpenerPopup(); return false;">충전하기</button>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="area_text">
<!-- <p><span class="c_222222">- 신용카드 결제가 어려우신 고객께서는 문자온 고객센터(010-8432-9333)를 통해서도 ARS 신용카드 결제를 하실 수 있습니다.</span></p> -->
<p>- 인터넷 익스플로러 이용 고객께서는 도구-팝업 차단 해제 후 충전이 가능합니다.</p>
<p>- 결제사별 정책상 충전금액 제한이 있을 수 있습니다.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //간편결제 -->
<!-- 신용카드 -->
<div class="area_tabcont" id="tab2_2">
<p class="tType1_title"><img src="/publish/images/credit_small.png" alt="신용카드"> 신용카드</p>
<table class="tType1">
<caption></caption>
<colgroup>
<col style="width: 100px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr class="charge_content">
<th scope="row">충전금액</th>
<td class="flex">
<select name="tempPrice" id="tempPrice" class="list_seType1">
<option value="5000">5,000</option>
<option value="10000">10,000</option>
<option value="20000">20,000</option>
<option value="30000">30,000</option>
<option value="50000" selected>50,000</option>
<option value="100000">100,000</option>
<option value="200000">200,000</option>
<option value="300000">300,000</option>
<option value="500000">500,000</option>
<option value="700000">700,000</option>
<option value="900000">900,000</option>
<option value="1000000">1,000,000</option>
<option value="1200000">1,200,000</option>
<option value="1500000">1,500,000</option>
<option value="2000000">2,000,000</option>
<option value="2500000">2,500,000</option>
<option value="3000000">3,000,000</option>
</select>
<p class="input_in"></p>
<!-- <input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<p class="input_in"></p>
<button type="button" class="btnType1" onclick="setPrice(this , '3000'); return false;">+ 3천원</button>
<button type="button" onclick="setPrice(this , '5000'); return false;">+ 5천원</button>
<button type="button" onclick="setPrice(this , '10000'); return false;">+ 1만원</button>
<button type="button" onclick="setPrice(this , '100000'); return false;">+ 10만원</button>
<button type="button" onclick="setPrice(this , '1000000'); return false;">+ 100만원</button>--%>
<p class="input_in"></p> -->
<!-- <span class="reqTxt6">※ 최소 3천원 이상부터 결제 가능합니다.</span> -->
</td>
</tr>
<tr>
<td colspan="2">
<div class="amount_wrap">
<dl>
<dt>최종 결제금액 :</dt>
<dd>
<ul>
<li><strong id="supplyPriceStr">50,000</strong>원(공급가액)
</li>
<li><span class="plus"></span><strong id="vatPriceStr">5,000</strong>원(부가세)
</li>
<li class="total"><span class="equal"></span><strong id="lastPriceStr">55,000</strong>원(최종금액)
</li>
</ul>
</dd>
@ -383,11 +460,9 @@
<!-- //신용카드 -->
<!-- 전용계좌 -->
<div class="area_tabcont" id="tab2_2">
<div class="area_tabcont current" id="tab2_3">
<!-- 신규계좌발급 시 -->
<p class="tType1_title"><img
src="/publish/images/content/icon_charging1_small.png"
alt="계좌 이미"> 전용계좌</p>
<p class="tType1_title"><img src="/publish/images/content/icon_charging1_small.png" alt="계좌 이미"> 전용계좌</p>
<table class="tType1">
<caption></caption>
<colgroup>
@ -398,18 +473,11 @@
<tr>
<td>
<div class="area_text">
<c:choose>
<c:when test="${not empty resultMyList}">
<p>입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능,
5천원 이상 입금 가능)</p>
</c:when>
<c:otherwise>
<p>1. 현재 발급받은 전용계좌가 없습니다.</p>
<p>2. 입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능,
5천원 이상 입금 가능)</p>
</c:otherwise>
</c:choose>
<div class="area_text">
<p>1. <span>첫결제 이벤트는 최대 50만원까지만 적용이 됩니다.</span></p>
<p>2. 현재 발급받은 전용계좌가 없습니다.</p>
<p>3. 입금 즉시 자동 충전되는 나만의 전용계좌 개설(평생 사용가능, 5천원 이상 입금 가능)</p>
</div>
<!-- <p>3. 발급받은 전용계좌는 3개월 미사용시 자동 해지됩니다.</p> -->
</div>
</td>
@ -417,84 +485,55 @@
<label for="bankCd" class="label">은행선택</label>
<select name="bankCd" id="bankCd">
<option value="">은행선택</option>
<c:forEach var="result" items="${resultList}"
varStatus="status">
<option value="${result.bankCd}">
${result.codeNm}</option>
</c:forEach>
<option value="003">기업은행</option>
<option value="004">국민은행</option>
<option value="011">농협은행</option>
<option value="020">우리은행</option>
<option value="081">하나은행</option>
<option value="088">신한은행</option>
</select>
<p class="input_in" style="margin-right:5px;"></p>
<button type="button"
onclick="fnNewBankAccount(); return false;">신규계좌받기</button>
<button type="button" onclick="fnNewBankAccount(); return false;">신규계좌받기</button>
</td>
</tr>
</tbody>
</table>
<!-- 기존 계좌있을 시 -->
<p class="tType1_title"><img
src="/publish/images/content/icon_charging1_small.png"
alt="계좌 이미"> 전용계좌</p>
<p style="margin-top: 40px;" class="tType1_title"><img src="/publish/images/content/icon_charging1_small.png" alt="계좌 이미"> 전용계좌</p>
<table class="tType1">
<caption></caption>
<colgroup>
<col style="width: 65%">
<col style="width: 35%;">
</colgroup>
<tbody>
<c:choose>
<c:when test="${not empty resultMyList}">
<c:forEach var="result" items="${resultMyList}"
varStatus="status">
<tr>
<td>
<div class="checkbox_wrap">
<input type="radio"
id="chkAccount${status.count}"
name="chkAccount"
value="<c:out value='${result.bankCd}'/>_<c:out value='${result.codeNm}'/>_<c:out value='${result.acctNo}'/>">
<label
for="chkAccount${status.count}"></label>
<c:out value='${result.codeNm}' />
<c:out value='${result.acctNo}' />
</div>
<div class="account_holder">
(예금주 :
<c:out value="${result.cmfNm}" />)
</div>
</td>
<td class="right">
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="2">
<div>
보유한 전용 계좌가 없습니다.
</div>
</td>
</tr>
</c:otherwise>
</c:choose>
<tbody>
<tr>
<td colspan="2">
<div>
보유한 전용 계좌가 없습니다.
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="area_text">
<p>- 전용계좌는 개설일로부터 <span>3개월 미사용 시 자동
해지</span>됩니다.</p>
<p>- 전용계좌에 <span>5,000원 이상 입금</span> 시, 연중무휴
<span>실시간 자동 충전이</span> 가능합니다.</p>
<p>- <span>첫결제 이벤트는 최대 50만원까지만 적용이 됩니다.</span></p>
<p>- 전용계좌는 개설일로부터 <span>3개월 미사용 시 자동 해지</span>됩니다.</p>
<p>- 전용계좌에 <span>5,000원 이상 입금</span> 시, 연중무휴 <span>실시간 자동 충전이</span> 가능합니다.</p>
<!-- <p>- 예금주 : 문자온</p> -->
<p>- 계좌번호 문자로 받기(일/3회까지)
<p>- 계좌번호 문자로 받기(일/3회까지)
<label for="" class="label">전화번호 입력</label>
<input type="text" id="callTo" name="callTo"
maxLength="11"
placeholder="- 없이 받으실 휴대폰 번호를 입력해주세요."
onfocus="this.placeholder=''"
onblur="this.placeholder='- 없이 전화번호를 입력해주세요'">
<button type="button"
onclick="fnSmsSend(<c:out value='${resultMsgInfo.sendCnt}'/>); return false;">문자받기</button>
<input type="text" id="callTo" name="callTo" maxlength="11" placeholder="- 없이 받으실 휴대폰 번호를 입력해주세요." onfocus="this.placeholder=''" onblur="this.placeholder='- 없이 전화번호를 입력해주세요'">
<button type="button" onclick="fnSmsSend(); return false;">문자받기</button>
</p>
</div>
</td>
@ -504,7 +543,7 @@
</div>
<!-- //전용계좌 -->
<!-- 휴대폰 -->
<!-- 휴대폰
<div class="area_tabcont" id="tab2_4">
<p class="tType1_title"><img
src="/publish/images/content/icon_charging4_small.png"
@ -529,7 +568,7 @@
<option value="100000">100,000</option>
<option value="150000">150,000</option>
</select>
<!-- <input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<p class="input_in"></p>
<button type="button" class="btnType1" onclick="setPrice(this , '3000'); return false;">+ 3천원</button>
<button type="button" onclick="setPrice(this , '5000'); return false;">+ 5천원</button>
@ -537,7 +576,7 @@
<button type="button" onclick="setPrice(this , '100000'); return false;">+ 10만원</button>
<button type="button" onclick="setPrice(this , '1000000'); return false;">+ 100만원</button>--%>
<p class="input_in"></p> -->
<!-- <span class="reqTxt6">※ 최소 3천원 이상부터 결제 가능합니다.</span> -->
<!-- <span class="reqTxt6">※ 최소 3천원 이상부터 결제 가능합니다.</span>
</td>
</tr>
<tr>
@ -574,11 +613,11 @@
</tr>
</tbody>
</table>
</div>
</div>-->
<!-- //휴대폰 -->
<!-- 즉시이체 -->
<div class="area_tabcont" id="tab2_5">
<div class="area_tabcont" id="tab2_4">
<p class="tType1_title"><img
src="/publish/images/content/icon_charging5_small.png"
alt=""> 즉시이체</p>
@ -612,6 +651,7 @@
<option value="2500000">2,500,000</option>
<option value="3000000">3,000,000</option>
</select>
<p class="input_in"></p>
<!-- <input type="text" numberOnly placeholder="금액을 입력해주세요" name="tempPrice" class="tempPrice" onfocus="this.placeholder=''" onblur="this.placeholder='금액을 입력해주세요'">
<p class="input_in"></p>
<button type="button" class="btnType1" onclick="setPrice(this , '3000'); return false;">+ 3천원</button>
@ -630,11 +670,11 @@
<dt>최종 결제금액 :</dt>
<dd>
<ul>
<li><strong id="supplyPriceStr">5,000</strong>원(공급가액)
<li><strong id="supplyPriceStr">50,000</strong>원(공급가액)
</li>
<li><span class="plus"></span><strong id="vatPriceStr">500</strong>원(부가세)
<li><span class="plus"></span><strong id="vatPriceStr">5,000</strong>원(부가세)
</li>
<li class="total"><span class="equal"></span><strong id="lastPriceStr">5,500</strong>원(최종금액)
<li class="total"><span class="equal"></span><strong id="lastPriceStr">55,000</strong>원(최종금액)
</li>
</ul>
</dd>

View File

@ -18,6 +18,15 @@
<!-- <p>***<span class="font1"> (컨텐츠)</span> : 반복적으로 사용 안함</p>
<p>***<span class="font2"> (보드)</span> : 반복적으로 사용</p> -->
<ul class="page">
<li><a href="/publish/firstpay_event.html">firstpay_event.html</a>충전수단 선택 내용 삭제</li>
<li><a href="/publish/firstpay_event2.html">firstpay_event2.html</a>충전수단 선택 내용 수정 </li>
<li><a href="/publish/payment2.html">payment2.html</a>결제관리 > 결제하기 > 충전수단 선택 > 간편결제추가 + 등급별금액&누적결제액별 등급 및 단가(테이블 및 텍스트 추가)</li>
<li><a href="/publish/firstpay_event2.html">firstpay_event2.html</a>고객센터 > 이벤트페이지 > 충전수단 선택 내용 추가 </li>
<li><a href="/publish/index_2023.html">index_2023.html</a>로그인 바 > 등급별 아이콘 이미지 추가 + 홍길동(개인)으로 이름 변경 (님)자 제거 + 요금안내 페이지 이동 탑 배너 추가 + 퀵메뉴 > 맞춤제작을 요금안내로 변경</li>
<li><a href="/publish/mypage_index_2023.html">mypage_index_2023.html</a>마이페이지 > 등급별 아이콘 버튼 추가 + 등급별 아이콘 버튼 클릭 > 팝업추가</li>
<li><a href="/publish/payment3.html">payment3.html</a>결제관리 > 요금결제내역 > 간편결제 결제내역 tap추가 + 등급 및 누적결제액 확인 버튼 추가 + 등급 및 누적결제액 확인 버튼 클릭 > 팝업추가</li>
<li><a href="/publish/sub1_2023.html">sub1_2023.html</a>문자발송 > 문자전송 > 발송금액 > 나의단가 금액 추가</li>
<li><a href="/publish/payment1.html">payment1.html</a>결제관리 > 요금안내/견적안내(테이블 및 텍스트 추가)</li>
<li><a href="/publish/kakao_allimtalk_intro.html">kakao_allimtalk_intro.html</a>카카오톡 소개</li>
<li><a href="/publish/popup_pay_complete.html">popup_pay_complete.html</a>결제완료 팝업</li>
<li><a href="/publish/payment4.html">payment4.html</a>요금사용내역(발송내역, 세부내역 타이틀 추가)</li>

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

View File

@ -70,7 +70,16 @@
</div>
<!--// skip 메뉴 -->
<div class="quickMenu">
<!--// 요금안내 top 배너 시작 -->
<img class="price_top_banner" src="/publish/images/level/top_banner.png" alt="최저 8.1원 요금안내" usemap="#topbanner">
<map name="topbanner">
<area shape="poly" coords="45,165,194,164,182,183,155,200,124,208,85,202,63,187,46,167" href="https://www.munjaon.co.kr/web/pay/PayGuide.do" alt="">
</map>
<!--// 요금안내 top 배너 끝-->
<!--// quick 메뉴 시작 -->
<!--quick 메뉴 변경전
<div class="quickMenu">
<div>
<p class="quick_title">QUICK<br>MENU</p>
<p class="quick_title2">QUICK</p>
@ -115,7 +124,87 @@
<button type="button" class="goTop" title="맨 위로 이동">TOP<i></i></button>
</div>
</div>
<!--// quick 메뉴 -->
-->
<!--quick 메뉴 변경후 시작-->
<div class="quickMenu main">
<div>
<p class="quick_title">QUICK<br>MENU</p>
<p class="quick_title2">QUICK</p>
<ul class="quickMenuIn">
<!--
<li>
<a href="#" rel="nosublink"><i class="quick2"></i><span>카톡상담</span></a>
<div class="hover_cont">카톡상담</div>
</li>
<li>
<a href="#" rel="nosublink"><i class="quick3"></i><span>원격지원</span></a>
<div class="hover_cont">원격지원</div>
</li>
-->
<!-- 맞춤제작
<li>
<a href="/web/pay/PayGuide.do" rel="nosublink"><i class="quick4"></i><span>맞춤제작</span></a>
<div class="hover_cont">맞춤제작</div>
</li>
-->
<li>
<a href="/web/pay/PayGuide.do" rel="nosublink"><i class="quick12"></i><span>요금안내</span></a>
<div class="hover_cont">요금안내</div>
</li>
<li>
<a href="/web/mjon/addr/selectAddrList.do" rel="nosublink"><i class="quick10"></i><span>주소록 관리</span></a>
<div class="hover_cont">주소록 관리</div>
</li>
<li>
<a href="/web/user/sendNumberManage.do"><i class="quick5"></i><span>발신번호 관리</span></a>
<div class="hover_cont">발신번호 관리</div>
</li>
<li style="margin-top: 1px;">
<a href="/web/mjon/msgdata/excel/selectMsgExcelDataView.do"><i class="quick6"></i><span>엑셀 대량전송</span></a>
<div class="hover_cont">엑셀 대량전송</div>
</li>
<li>
<a href="/web/pay/PayGuide.do?tabType=2" rel="nosublink"><i class="quick7"></i><span>견적서</span></a>
<div class="hover_cont">견적서</div>
</li>
<li style="margin-top: 1px;">
<a href="/web/member/pay/PayList.do" rel="nosublink"><i class="quick8"></i><span>결제관리</span></a>
<div class="hover_cont">결제관리</div>
</li>
<!--
<li>
<a href="/web/member/pay/BillPub.do" rel="nosublink"><i class="quick9"></i><span>계산서/영수증</span></a>
<div class="hover_cont">계산서/영수증</div>
</li>
-->
<li>
<a href="/web/member/pay/BillPub.do" rel="nosublink"><i class="quick9"></i><span>세금계산서</span></a>
<div class="hover_cont">세금계산서</div>
</li>
<li class="cscenter">
<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>
<ul class="info">
<li>· 월~금 : 09:30 ~ 18:30</li>
<li>· 점심시간 : 13:00 ~ 14:00</li>
<li>· 토, 일요일 및 법정공휴일 휴무</li>
</ul>
<div class="cskakao">
<a href="http://pf.kakao.com/_PxoTtb/chat" class="kakao" target="_blank" rel="nosublink">카톡 상담</a>
<a href="javascript:void(0);" class="remote" onclick="remotePop('https://939.co.kr/munjaon/');" rel="nosublink">원격지원</a>
</div>
</div>
</li>
</ul>
<button type="button" class="goTop" title="맨 위로 이동">TOP<i></i></button>
</div>
<div class="quick_kakaobtn main"><a href="http://pf.kakao.com/_PxoTtb/chat" target="_blank" rel="nosublink">카카오톡 상담</a></div>
</div>
<!--// quick 메뉴 끝 -->
<!-- header 영역 -->
<header id="header" class="header sub">
<!-- header top 영역 -->
@ -188,8 +277,8 @@
<div class="login_info">
<i></i>
<div class="login2_name">
<p>홍길동홍길동홍길동홍길동</p>
<span>(개인)</span>
<p>홍길동</p>
<span>(개인)</span>
</div>
<div class="session">
<span>08:46</span>

View File

@ -264,7 +264,7 @@
<div class="fight-img">
<p class="name">문자</p>
<div class="icon">
<img src="/publish/images/kakao_intro_cont/message.jpg.jpg" alt="문자">
<img src="/publish/images/kakao_intro_cont/message.jpg" alt="문자">
<p class="price">18원</p>
</div>
</div>
@ -272,7 +272,7 @@
<div class="fight-img kakao">
<p class="name">알림톡</p>
<div class="icon">
<img src="/publish/images/kakao_intro_cont/kakao.jpg.jpg" alt="카카오">
<img src="/publish/images/kakao_intro_cont/kakao.jpg" alt="카카오">
<p class="price">6.5원</p>
</div>
</div>
@ -285,7 +285,7 @@
<div class="fight-img">
<p class="name">문자</p>
<div class="icon">
<img src="/publish/images/kakao_intro_cont/message.jpg.jpg" alt="문자">
<img src="/publish/images/kakao_intro_cont/message.jpg" alt="문자">
<p class="price">90Byte</p>
</div>
</div>
@ -293,7 +293,7 @@
<div class="fight-img kakao">
<p class="name">알림톡</p>
<div class="icon">
<img src="/publish/images/kakao_intro_cont/kakao.jpg.jpg" alt="카카오">
<img src="/publish/images/kakao_intro_cont/kakao.jpg" alt="카카오">
<p class="price">1,000글자</p>
</div>
</div>

Some files were not shown because too many files have changed in this diff Show More