관리자 변경 중

This commit is contained in:
leejunho 2025-10-20 12:51:57 +09:00
parent 16a432b15e
commit be76b2e446
11 changed files with 719 additions and 528 deletions

View File

@ -36,6 +36,8 @@ import org.springmodules.validation.commons.DefaultBeanValidator;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.fdl.string.EgovStringUtil;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO;
import kcc.com.cmm.EgovMessageSource;
@ -52,6 +54,7 @@ import kcc.com.uss.ion.pwm.service.PopupManageVO;
import kcc.com.uss.ion.pwm.service.PopupzoneVO;
import kcc.com.uss.ion.pwm.service.SocialVO;
import kcc.let.sym.site.service.EgovSiteManagerService;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
/**
* 개요
@ -115,6 +118,10 @@ public class EgovPopupManageController {
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
/**
* 팝업창관리 목록을 조회한다.
* @param popupManageVO
@ -554,7 +561,11 @@ public class EgovPopupManageController {
popupzoneVo.setSearchSortCnd("SORT");
popupzoneVo.setSearchSortOrd("asc");
}
List<?> popupzoneList = egovPopupManageService.selectPopupzoneList(popupzoneVo);
List<EgovMap> popupzoneList = (List<EgovMap>)egovPopupManageService.selectPopupzoneList(popupzoneVo);
popupzoneList.forEach(t -> {
egovCryptoUtil.decryptEgovMap(t, "registerId");
});
model.addAttribute("popupzoneList", popupzoneList);
/* 타겟 코드 */
@ -584,6 +595,7 @@ public class EgovPopupManageController {
if("Modify".equals((String)commandMap.get("pageType"))){ //수정
String pozId = (String)commandMap.get("selectedId");
popupzoneVO = egovPopupManageService.selectPopupzoneVO(pozId);
popupzoneVO.setRegisterId(egovCryptoUtil.decrypt(popupzoneVO.getRegisterId()));
if(popupzoneVO != null){
popupzoneVO.setBeSort(popupzoneVO.getSort());
FileVO fileVO = new FileVO();
@ -781,7 +793,11 @@ public class EgovPopupManageController {
if(null != loginVO && !"super".equals(loginVO.getSiteId())){ //각각의 사이트
mainzoneVO.setSiteId(loginVO.getSiteId());
}
List<?> mainzoneList = egovPopupManageService.selectMainzoneList(mainzoneVO);
List<EgovMap> mainzoneList = (List<EgovMap>)egovPopupManageService.selectMainzoneList(mainzoneVO);
mainzoneList.forEach(t -> {
egovCryptoUtil.decryptEgovMap(t, "registerId");
});
model.addAttribute("mainzoneList", mainzoneList);
int totCnt = egovPopupManageService.selectMainzoneCount(mainzoneVO);
@ -854,6 +870,7 @@ public class EgovPopupManageController {
if("Modify".equals((String)commandMap.get("pageType"))){ //수정
String mazId = (String)commandMap.get("selectedId");
mainzoneVO = egovPopupManageService.selectMainzoneVO(mazId);
mainzoneVO.setRegisterId(egovCryptoUtil.decrypt(mainzoneVO.getRegisterId()));
if(mainzoneVO != null){
mainzoneVO.setBeSort(mainzoneVO.getSort());

View File

@ -10,6 +10,7 @@ import java.lang.management.ThreadMXBean;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@ -39,6 +40,7 @@ import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.util.IpUtil;
import kcc.com.cmm.util.RedirectUrlMaker;
import kcc.com.uss.ion.bnr.service.BannerVO;
import kcc.com.uss.ion.bnr.service.EgovBannerService;
@ -64,6 +66,12 @@ import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.notify.service.NotifyManageVO;
import kcc.let.uss.olp.qmc.service.EgovQustnrManageService;
import kcc.let.uss.umt.service.EgovUserManageService;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.cmm.VeConstants;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngService;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
/**
* 템플릿 메인 페이지 컨트롤러 클래스(Sample 소스)
@ -138,6 +146,17 @@ public class EgovMainController {
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//과정 관리
@Resource(name = "cndtnTrgtInfoMngService")
private CndtnTrgtMngService cndtnTrgtInfoMngService;
//과정 관리 - 시정명령
@Resource(name = "cmdTrgtInfoMngService")
private CmdTrgtMngService cmdTrgtInfoMngService;
/**
@ -222,28 +241,83 @@ public class EgovMainController {
, ModelMap model
, HttpSession session) throws Exception{
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
/*
* notify..?
*/
/** pageing */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex());
paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit());
paginationInfo.setPageSize(notifyManageVO.getPageSize());
notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex());
notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
notifyManageVO.setToUserId(loginVO.getId());
List<NotifyManageVO> resultList = notifyManageService.selectPagingList(notifyManageVO);
List<NotifyManageVO> notifyresultList = notifyManageService.selectPagingList(notifyManageVO);
paginationInfo.setTotalRecordCount(resultList.size() > 0 ? resultList.get(0).getTotCnt() : 0);
paginationInfo.setTotalRecordCount(notifyresultList.size() > 0 ? notifyresultList.get(0).getTotCnt() : 0);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("list", resultList);
model.addAttribute("list", notifyresultList);
/*
* (조건부기소유예)
* 대상자 정보
*/
Map<String, Object> cndtnTrgtInfoList = this.cndtnTrgtInfo();
//전체건수
model.addAttribute("cndtnTrgtInfoAllCnt", cndtnTrgtInfoList.get("cndtnTrgtInfoAllCnt"));
//완료건수
model.addAttribute("cndtnTrgtInfoCompleteCnt", cndtnTrgtInfoList.get("cndtnTrgtInfoCompleteCnt"));
//취소건수
model.addAttribute("cndtnTrgtInfoCancelCnt", cndtnTrgtInfoList.get("cndtnTrgtInfoCancelCnt"));
/*
* (시정명령)
* 대상자 정보
*/
Map<String, Object> cmdTrgtInfoList = this.cmdTrgtInfo();
//전체건수
model.addAttribute("cmdtnTrgtAllCnt", cmdTrgtInfoList.get("cmdtnTrgtAllCnt"));
//완료건수
model.addAttribute("cmdtnTrgtCompleteCnt", cmdTrgtInfoList.get("cmdtnTrgtCompleteCnt"));
//취소건수
model.addAttribute("cmdtnTrgtCancelCnt", cmdTrgtInfoList.get("cmdtnTrgtCancelCnt"));
/*
* (조건부기소유예)
* 과정신청기간 현황
*/
/*
* (시정명령)
* 과정신청기간 현황
*/
/*
* (예방교육)
* 과정신청기간 현황
*/
/*
* (조건부기소유예)
* 확정과정 현황
*/
/*
* (시정명령)
* 확정과정 현황
*/
/*
* (예방교육)
* 확정과정 현황
*/
return "main/EgovMainList";
/*
@ -572,6 +646,10 @@ public class EgovMainController {
model.addAttribute("quickList", quickList);
}
user.setName(egovCryptoUtil.decrypt(user.getName()));
model.addAttribute("userInfo", user);
model.addAttribute("userIp", IpUtil.getClientIP(req));
}catch(Exception ex) {
ex.printStackTrace();
}
@ -1001,4 +1079,55 @@ public class EgovMainController {
System.out.println( "CPU Usage: " + usage );
}
private Map<String, Object> cndtnTrgtInfo(){
CndtnTrgtMngVO cndtnTrgtInfoMngVO = new CndtnTrgtMngVO();
cndtnTrgtInfoMngVO.setSearchQuery("");
cndtnTrgtInfoMngVO.setRecordCountPerPage(2147483647);
cndtnTrgtInfoMngVO.setFirstIndex(0);
List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
//전체건수
Integer allCnt = cndtnTrgtInfoMngVOList != null ? cndtnTrgtInfoMngVOList.size() : 0;
//완료건수
Long completeCnt = cndtnTrgtInfoMngVOList.stream().filter(t -> VeConstants.REQ_STATE_CD_COMPLETE.equals(t.getReqStateCd())).count();
//취소건수
Long cancelCnt = cndtnTrgtInfoMngVOList.stream().filter(t -> VeConstants.REQ_STATE_CD_EDUCANCEL.equals(t.getReqStateCd())).count();
Map<String, Object> returnMap = new HashMap<String, Object>();
returnMap.put("cndtnTrgtInfoAllCnt", allCnt);
returnMap.put("cndtnTrgtInfoCompleteCnt", completeCnt);
returnMap.put("cndtnTrgtInfoCancelCnt", cancelCnt);
return returnMap;
}
private Map<String, Object> cmdTrgtInfo(){
CmdTrgtMngVO cmdtnTrgtMngVO = new CmdTrgtMngVO();
cmdtnTrgtMngVO.setSearchQuery("");
cmdtnTrgtMngVO.setRecordCountPerPage(2147483647);
cmdtnTrgtMngVO.setFirstIndex(0);
// List<CndtnTrgtMngVO> cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO);
List<CmdTrgtMngVO> cmdtnTrgtMngVOList = cmdTrgtInfoMngService.selectPagingList(cmdtnTrgtMngVO);;
//전체건수
Integer allCnt = cmdtnTrgtMngVOList != null ? cmdtnTrgtMngVOList.size() : 0;
//완료건수
Long completeCnt = cmdtnTrgtMngVOList.stream().filter(t -> VeConstants.REQ_STATE_CD_COMPLETE.equals(t.getReqStateCd())).count();
//취소건수
Long cancelCnt = cmdtnTrgtMngVOList.stream().filter(t -> VeConstants.REQ_STATE_CD_EDUCANCEL.equals(t.getReqStateCd())).count();
Map<String, Object> returnMap = new HashMap<String, Object>();
returnMap.put("cmdtnTrgtAllCnt", allCnt);
returnMap.put("cmdtnTrgtCompleteCnt", completeCnt);
returnMap.put("cmdtnTrgtCancelCnt", cancelCnt);
return returnMap;
}
}

View File

@ -62,243 +62,243 @@ public class AnotaionSchedule {
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//@RequestMapping("/sym/site/AdminLogMngTest.do")
//@Scheduled(fixedDelay = 1000)
// @Scheduled(cron="30 0 0 * * ?")
public void SchDeleteMember() throws Exception { //설정에 따른 회원삭제 / 관리자로그 설정삭제
try {
SiteManagerVO siteManagerVO =new SiteManagerVO();
/** paging */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(siteManagerVO.getPageIndex());
paginationInfo.setRecordCountPerPage(siteManagerVO.getPageUnit());
paginationInfo.setPageSize(siteManagerVO.getPageSize());
siteManagerVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
siteManagerVO.setLastIndex(paginationInfo.getLastRecordIndex());
siteManagerVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
List<SiteManagerVO> siteManagerList= egovSiteManagerService.selectSiteManagerList(siteManagerVO) ;
for(SiteManagerVO tempSiteManagerVO : siteManagerList){
if(!"9".equals(tempSiteManagerVO.getIdWithdrawCd())) { //탈퇴회원 영구보관이 아니면
userManageService.deleteMemberSchedule(tempSiteManagerVO);
}
if(null!=tempSiteManagerVO.getAdminlogKpCd() && !"N".equals(tempSiteManagerVO.getAdminlogKpCd())) { //관리자로그 보관설정 영구보관이 아니면
switch (tempSiteManagerVO.getAdminlogKpCd()) {// M:1개월,3:3개월,6:6개월보관,Y:1년, N:영구보관
case "M":
tempSiteManagerVO.setAdminlogKpCd("1");
case "Y":
tempSiteManagerVO.setAdminlogKpCd("12");
default:
}
userManageService.deleteAdminLogSchedule(tempSiteManagerVO);
}
}
}catch(Exception e) {
System.out.println("Exception Error");
}
}
/*
* 매일 새벽1시에 청소년 찾교 신청자 개인 정보 초기화 (담당자, 휴대폰, 전화 , 이메일)
* */
// Schdule Lock (2분동안)
@Scheduled(cron = "0 0 1 * * ?")
//@Scheduled(cron = "0 * * * * ?")
public void deletePrivacy4tngr() throws Exception {
// do something...
try {
System.out.println("=============AnotaionSchedule=====deletePrivacy4tngr =============>");
//문자 환불, 팩스 환불
deletePrivacy("10");
deletePrivacy("TWO");
/*
// 문자 환불
schdlrManageService.msgFailPayBack();
* */
// do something...
}catch(Exception ex) {
ex.printStackTrace();
}
}
/**
* @methodName : oneDayBeforeTrainingStartDate
* @author : 이호영
* @date : 2023.12.01
* @description :
* @throws Exception
*/
@Scheduled(cron = "0 21 18 * * ?")
// @Scheduled(cron = "0 0 9 * * ?")
public void oneDayBeforeTrainingStartDate() throws Exception {
// do something...
try {
System.out.println("=============AnotaionSchedule=====deletePrivacy4tngr =============>");
//권한에 따른 로그인 정보 가져오기
//메일 발송 시작
//================================================================
//메일 발송 VeSendMail 파라미터 정리
//1. sndFlag = 메뉴 구분
// C -> 찾교청소년
// Z -> 찾교청소년-교육확정알림(교육배치목록-확정된 강의 알림 버튼) : 청소년>교육확정 메일본문 수정 메뉴에서 관리
// S -> 찾교성인
// G -> 체험교실
// W -> 교육콘텐츠
// A -> 기반강화
// B -> 기소유예
//2. sndTo = 수신자
//3. vEEduAplctVO = eduAplctOrd(pk)
// sndHstryOrd(pk)
// sndCd(10 - sms, 20 - email)
// sndId(발송자)
// sndCn(발송내용)
//================================================================
// 기반 테스트
// this.sendLctrDivCd("50", "2", "A");
// 기반강화
// this.sendLctrDivCd50("50", "1", "A"); // LCTR_DIV_CD 50, A 기반강화, 1 하루후
// 기소유예
// this.sendLctrDivCd("60", "2", "B"); // LCTR_DIV_CD 60, A 기반강화, 1 하루후
/*
VeSendSMS sendSMS = new VeSendSMS();
Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn());
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
//문자 발송 성공 로그
if("1".equals(resultMap.get("result_code"))){
String snd_ord = sndGnrService.getNextStringId();
vEEduAplctVO.setSndHstryOrd(snd_ord);
vEEduAplctVO.setSndId(loginVO.getUniqId());
vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone());
vEEduAplctSndHstryService.insert(vEEduAplctVO);
}else {
result = "fail";
message = resultMap.get("message").toString();
}
*/
}catch(Exception ex) {
ex.printStackTrace();
}
}
private void sendLctrDivCd(String lctrDivCd, String diffDay, String sndFlag) throws Exception {
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setLctrDivCd(lctrDivCd);
vEPrcsDetailVO.setDiffDay(diffDay);
if("10".equals(lctrDivCd)) { //청소년
vEPrcsDetailVO.setSndFlag("C");
}else if("20".equals(lctrDivCd)) { //성인
vEPrcsDetailVO.setSndFlag("S");
}else if("30".equals(lctrDivCd)) { //체험교실
vEPrcsDetailVO.setSndFlag("G");
}else if("40".equals(lctrDivCd)) { //기반강화
vEPrcsDetailVO.setSndFlag("A");
}else { //기소유예
vEPrcsDetailVO.setSndFlag("B");
}
List<VEPrcsDetailVO> VEEduAplctVOList = vEPrcsAplctPrdService.selectOneDayBeforeTrainingStartDate(vEPrcsDetailVO);
for(VEPrcsDetailVO vo : VEEduAplctVOList) {
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vo.getEduAplctOrd());
vEEduAplctVO.setEmail(vo.getEmail());
vEEduAplctVO.setSndFlag(sndFlag);
vEEduAplctVO.setSndCn("안녕하세요 \n"+egovCryptoUtil.decrypt(vo.getMberNm())+"님이 신청해주신 \n"
+ vo.getPrcsNm()+"교육이 "+vo.getEduStrtPnttm()+"날 시작합니다.");
System.out.println(" vEEduAplctVO.getSndCn() :: "+vEEduAplctVO.getSndCn());
this.sendMailModule(vEEduAplctVO);
this.sendSmsModule(vEEduAplctVO);
}
}
private void sendSmsModule(VEEduAplctVO vEEduAplctVO) throws Exception {
VeSendSMS sendSMS = new VeSendSMS();
// String phone = vEEduAplctVO.getClphone();
// 테스트
String phone = "01083584250";
Map<String, Object> resultMap = sendSMS.VeSendSMS(phone, vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
//문자 발송 성공 로그
if("1".equals(resultMap.get("result_code"))){
String snd_ord = sndGnrService.getNextStringId();
vEEduAplctVO.setSndHstryOrd(snd_ord);
vEEduAplctVO.setSndId("");
vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone());
vEEduAplctSndHstryService.insert(vEEduAplctVO);
}else {
}
}
private void sendMailModule(VEEduAplctVO vEEduAplctVO) {
VeSendMail sendMail = new VeSendMail();
if("".equals(vEEduAplctVO.getSndFlag())) {
vEEduAplctVO.setSndFlag("test");
}
if("".equals(vEEduAplctVO.getEmail())) {
vEEduAplctVO.setEmail("tolag3@gmail.com");
}
// 테스트
// 테스트
// 테스트
vEEduAplctVO.setEmail("hehihoho3@gmail.com");
try {
// String message = "정상적으로 발송되었습니다.";
String result = sendMail.VeSendMail(vEEduAplctVO.getSndFlag() // 기반강화 50 , 기소유예 60
, vEEduAplctVO.getEmail()
, vEEduAplctVO
);
if("success".equals(result)) {
//메일 발송 로그
vEEduAplctVO.setSndHstryOrd(sndGnrService.getNextStringId());
vEEduAplctVO.setSndId("");
vEEduAplctVO.setTrgt(vEEduAplctVO.getEmail());
vEEduAplctSndHstryService.insert(vEEduAplctVO);
}else {
// message = "발송 실패하였습니다.";
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
////////////////////////////////////////////////
//개인 정보 삭제
////////////////////////////////////////////////
private void deletePrivacy(String p_type) throws Exception {
//개인 정보 삭제 - ve_edu_aplct
System.out.println("==== deletePrivacy ===="+p_type);
VEEduAplctVO paramVO = new VEEduAplctVO();
paramVO.setLctrDivCd(p_type);
vEEduAplctService.privacyUpdate(paramVO);
}
// //@RequestMapping("/sym/site/AdminLogMngTest.do")
// //@Scheduled(fixedDelay = 1000)
//// @Scheduled(cron="30 0 0 * * ?")
// public void SchDeleteMember() throws Exception { //설정에 따른 회원삭제 / 관리자로그 설정삭제
// try {
// SiteManagerVO siteManagerVO =new SiteManagerVO();
// /** paging */
// PaginationInfo paginationInfo = new PaginationInfo();
// paginationInfo.setCurrentPageNo(siteManagerVO.getPageIndex());
// paginationInfo.setRecordCountPerPage(siteManagerVO.getPageUnit());
// paginationInfo.setPageSize(siteManagerVO.getPageSize());
// siteManagerVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
// siteManagerVO.setLastIndex(paginationInfo.getLastRecordIndex());
// siteManagerVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
// List<SiteManagerVO> siteManagerList= egovSiteManagerService.selectSiteManagerList(siteManagerVO) ;
// for(SiteManagerVO tempSiteManagerVO : siteManagerList){
// if(!"9".equals(tempSiteManagerVO.getIdWithdrawCd())) { //탈퇴회원 영구보관이 아니면
// userManageService.deleteMemberSchedule(tempSiteManagerVO);
// }
//
// if(null!=tempSiteManagerVO.getAdminlogKpCd() && !"N".equals(tempSiteManagerVO.getAdminlogKpCd())) { //관리자로그 보관설정 영구보관이 아니면
// switch (tempSiteManagerVO.getAdminlogKpCd()) {// M:1개월,3:3개월,6:6개월보관,Y:1년, N:영구보관
// case "M":
// tempSiteManagerVO.setAdminlogKpCd("1");
// case "Y":
// tempSiteManagerVO.setAdminlogKpCd("12");
// default:
// }
// userManageService.deleteAdminLogSchedule(tempSiteManagerVO);
// }
// }
// }catch(Exception e) {
// System.out.println("Exception Error");
// }
// }
//
// /*
// * 매일 새벽1시에 청소년 찾교 신청자 개인 정보 초기화 (담당자, 휴대폰, 전화 , 이메일)
// * */
// // Schdule Lock (2분동안)
// @Scheduled(cron = "0 0 1 * * ?")
// //@Scheduled(cron = "0 * * * * ?")
// public void deletePrivacy4tngr() throws Exception {
//
// // do something...
// try {
// System.out.println("=============AnotaionSchedule=====deletePrivacy4tngr =============>");
//
// //문자 환불, 팩스 환불
// deletePrivacy("10");
// deletePrivacy("TWO");
// /*
// // 문자 환불
// schdlrManageService.msgFailPayBack();
// * */
//
//
// // do something...
//
// }catch(Exception ex) {
// ex.printStackTrace();
// }
// }
//
// /**
// * @methodName : oneDayBeforeTrainingStartDate
// * @author : 이호영
// * @date : 2023.12.01
// * @description :
// * @throws Exception
// */
// @Scheduled(cron = "0 21 18 * * ?")
//// @Scheduled(cron = "0 0 9 * * ?")
// public void oneDayBeforeTrainingStartDate() throws Exception {
//
// // do something...
// try {
// System.out.println("=============AnotaionSchedule=====deletePrivacy4tngr =============>");
//
//
// //권한에 따른 로그인 정보 가져오기
//
// //메일 발송 시작
// //================================================================
// //메일 발송 VeSendMail 파라미터 정리
// //1. sndFlag = 메뉴 구분
// // C -> 찾교청소년
// // Z -> 찾교청소년-교육확정알림(교육배치목록-확정된 강의 알림 버튼) : 청소년>교육확정 메일본문 수정 메뉴에서 관리
// // S -> 찾교성인
// // G -> 체험교실
// // W -> 교육콘텐츠
// // A -> 기반강화
// // B -> 기소유예
// //2. sndTo = 수신자
// //3. vEEduAplctVO = eduAplctOrd(pk)
// // sndHstryOrd(pk)
// // sndCd(10 - sms, 20 - email)
// // sndId(발송자)
// // sndCn(발송내용)
// //================================================================
//
// // 기반 테스트
//// this.sendLctrDivCd("50", "2", "A");
// // 기반강화
//// this.sendLctrDivCd50("50", "1", "A"); // LCTR_DIV_CD 50, A 기반강화, 1 하루후
// // 기소유예
//// this.sendLctrDivCd("60", "2", "B"); // LCTR_DIV_CD 60, A 기반강화, 1 하루후
//
//
// /*
//
// VeSendSMS sendSMS = new VeSendSMS();
// Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn());
//
// LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
//
// //문자 발송 성공 로그
// if("1".equals(resultMap.get("result_code"))){
// String snd_ord = sndGnrService.getNextStringId();
// vEEduAplctVO.setSndHstryOrd(snd_ord);
// vEEduAplctVO.setSndId(loginVO.getUniqId());
// vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone());
// vEEduAplctSndHstryService.insert(vEEduAplctVO);
// }else {
// result = "fail";
// message = resultMap.get("message").toString();
// }
// */
// }catch(Exception ex) {
// ex.printStackTrace();
// }
// }
//
// private void sendLctrDivCd(String lctrDivCd, String diffDay, String sndFlag) throws Exception {
// VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
// vEPrcsDetailVO.setLctrDivCd(lctrDivCd);
// vEPrcsDetailVO.setDiffDay(diffDay);
//
// if("10".equals(lctrDivCd)) { //청소년
// vEPrcsDetailVO.setSndFlag("C");
// }else if("20".equals(lctrDivCd)) { //성인
// vEPrcsDetailVO.setSndFlag("S");
// }else if("30".equals(lctrDivCd)) { //체험교실
// vEPrcsDetailVO.setSndFlag("G");
// }else if("40".equals(lctrDivCd)) { //기반강화
// vEPrcsDetailVO.setSndFlag("A");
// }else { //기소유예
// vEPrcsDetailVO.setSndFlag("B");
// }
//
// List<VEPrcsDetailVO> VEEduAplctVOList = vEPrcsAplctPrdService.selectOneDayBeforeTrainingStartDate(vEPrcsDetailVO);
//
// for(VEPrcsDetailVO vo : VEEduAplctVOList) {
// VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// vEEduAplctVO.setEduAplctOrd(vo.getEduAplctOrd());
// vEEduAplctVO.setEmail(vo.getEmail());
// vEEduAplctVO.setSndFlag(sndFlag);
//
// vEEduAplctVO.setSndCn("안녕하세요 \n"+egovCryptoUtil.decrypt(vo.getMberNm())+"님이 신청해주신 \n"
// + vo.getPrcsNm()+"교육이 "+vo.getEduStrtPnttm()+"날 시작합니다.");
//
// System.out.println(" vEEduAplctVO.getSndCn() :: "+vEEduAplctVO.getSndCn());
// this.sendMailModule(vEEduAplctVO);
// this.sendSmsModule(vEEduAplctVO);
//
// }
// }
//
// private void sendSmsModule(VEEduAplctVO vEEduAplctVO) throws Exception {
// VeSendSMS sendSMS = new VeSendSMS();
//// String phone = vEEduAplctVO.getClphone();
// // 테스트
// String phone = "01083584250";
//
// Map<String, Object> resultMap = sendSMS.VeSendSMS(phone, vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
//
//
// //문자 발송 성공 로그
// if("1".equals(resultMap.get("result_code"))){
// String snd_ord = sndGnrService.getNextStringId();
// vEEduAplctVO.setSndHstryOrd(snd_ord);
// vEEduAplctVO.setSndId("");
// vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone());
// vEEduAplctSndHstryService.insert(vEEduAplctVO);
// }else {
// }
//
// }
//
// private void sendMailModule(VEEduAplctVO vEEduAplctVO) {
// VeSendMail sendMail = new VeSendMail();
// if("".equals(vEEduAplctVO.getSndFlag())) {
// vEEduAplctVO.setSndFlag("test");
// }
// if("".equals(vEEduAplctVO.getEmail())) {
// vEEduAplctVO.setEmail("tolag3@gmail.com");
// }
// // 테스트
// // 테스트
// // 테스트
// vEEduAplctVO.setEmail("hehihoho3@gmail.com");
//
// try {
//
// // String message = "정상적으로 발송되었습니다.";
// String result = sendMail.VeSendMail(vEEduAplctVO.getSndFlag() // 기반강화 50 , 기소유예 60
// , vEEduAplctVO.getEmail()
// , vEEduAplctVO
// );
//
// if("success".equals(result)) {
// //메일 발송 로그
// vEEduAplctVO.setSndHstryOrd(sndGnrService.getNextStringId());
//
// vEEduAplctVO.setSndId("");
// vEEduAplctVO.setTrgt(vEEduAplctVO.getEmail());
// vEEduAplctSndHstryService.insert(vEEduAplctVO);
// }else {
// // message = "발송 실패하였습니다.";
// }
//
// } catch (Exception e) {
// e.printStackTrace();
// // TODO: handle exception
// }
// }
//
//
// ////////////////////////////////////////////////
// //개인 정보 삭제
// ////////////////////////////////////////////////
// private void deletePrivacy(String p_type) throws Exception {
// //개인 정보 삭제 - ve_edu_aplct
// System.out.println("==== deletePrivacy ===="+p_type);
// VEEduAplctVO paramVO = new VEEduAplctVO();
// paramVO.setLctrDivCd(p_type);
// vEEduAplctService.privacyUpdate(paramVO);
//
// }
}

View File

@ -211,7 +211,7 @@ public class EgovLoginController {
* @exception Exception
*/
@RequestMapping(value = "/uat/uia/EgovLoginUsr.do")
public String adminLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
public String adminLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, RedirectAttributes rttr) throws Exception {
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
System.out.println("==start=");
@ -229,21 +229,23 @@ public class EgovLoginController {
LOGGER.debug("userIpCheck: [" + userIpCheck + "]");
loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyAllIP(loginPolicyVOCheck);
// boolean ipCheck = false;
// if (loginPolicyGroupList != null) {
// for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) {
//// if(userIpCheck.equals(tempPolicyVO.getIpInfo())){
// if (userIpCheck.contains(tempPolicyVO.getIpInfo())) {
// ipCheck = true;
// break;
// }
// }
// }
boolean ipCheck = false;
if (loginPolicyGroupList != null) {
for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) {
// if(userIpCheck.equals(tempPolicyVO.getIpInfo())){
if (userIpCheck.contains(tempPolicyVO.getIpInfo())) {
ipCheck = true;
break;
}
}
}
// 1. Spring Security 사용자권한 처리
// if (!ipCheck) {
// return "/cmm/error/ipFailure";
// }
if (!ipCheck) {
rttr.addFlashAttribute("message", "접근이 불가능한 아이피 입니다.");
return "redirect:/web/main/mainPage.do";
}
if (!isAuthenticated) {
// model.addAttribute("message",
// egovMessageSource.getMessage("fail.common.login"));

View File

@ -788,4 +788,10 @@ public class EgovCryptoUtil {
return vEAStngVOOList;
}
public EgovMap decryptEgovMap(EgovMap map, String keyNm) {
String encStr = map.get(keyNm).toString();
map.put(keyNm, this.decrypt(encStr));
return map;
}
}

View File

@ -200,4 +200,17 @@ public class VeConstants {
public static final String NOTI_STATUS_97 = "97"; // 서류요청
public static final String NOTI_STATUS_98 = "98"; // 서류제출
/*
* VEA005 대상자 정보 : 의뢰상태
*/
/**
*
*/
public static final String REQ_STATE_CD_COMPLETE = "30";
public static final String REQ_STATE_CD_EDUASG = "20";
public static final String REQ_STATE_CD_EDUCANCEL = "40";
public static final String REQ_STATE_CD_REQ = "15";
public static final String REQ_STATE_CD_NOTCOMPLETE = "35";
public static final String REQ_STATE_CD_EDUWAIT = "10";
}

View File

@ -20,7 +20,7 @@
<result property="tempSortNum" column="tempSortNum" columnIndex="10"/>
</resultMap>
<select id="selectAuthorRoleList" parameterClass="authorRoleManageVO" resultMap="authorRole">
<select id="authorRoleManageDAO.selectAuthorRoleList" parameterClass="authorRoleManageVO" resultMap="authorRole">
SELECT A.ROLE_CODE,
A.ROLE_NM,
A.ROLE_PTTRN,
@ -57,7 +57,7 @@
</select>
<select id="selectAuthorRoleListTotCnt" parameterClass="authorRoleManageVO" resultClass="int">
<select id="authorRoleManageDAO.selectAuthorRoleListTotCnt" parameterClass="authorRoleManageVO" resultClass="int">
SELECT COUNT(*) totcnt
FROM (
SELECT * FROM LETTNROLEINFO WHERE 1=1
@ -73,7 +73,7 @@
ON A.ROLE_CODE = B.ROLE_CODE
</select>
<insert id="insertAuthorRole" parameterClass="authorRoleManage">
<insert id="authorRoleManageDAO.insertAuthorRole" parameterClass="authorRoleManage">
<![CDATA[
INSERT INTO LETTNAUTHORROLERELATE
( AUTHOR_CODE
@ -87,7 +87,7 @@
]]>
</insert>
<delete id="deleteAuthorRole">
<delete id="authorRoleManageDAO.deleteAuthorRole">
<![CDATA[
DELETE FROM LETTNAUTHORROLERELATE
WHERE AUTHOR_CODE=#authorCode#

View File

@ -614,7 +614,10 @@
*/
SELECT TO_CHAR(A.CREAT_DT, 'YYYY-MM-DD HH24:MI' ) creatDt FROM LETTNADMINLOG A
WHERE A.CONECT_ID = #conectId#
/*
AND A.PROGRM_FILE_NM = 'selectActionSecurityLogin'
*/
AND A.PROGRM_FILE_NM = 'uat/uia/actionSecurityLogin.do'
ORDER BY A.CREAT_DT DESC
LIMIT 1
</select>

View File

@ -31,7 +31,6 @@
<script type="text/javaScript" language="javascript" defer="defer">
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
@ -39,265 +38,285 @@ function linkPage(pageNo){
listForm.submit();
}
function fn_goDetail(cmmNotifyOrd){
var form = document.detailForm ;
form.cmmNotifyOrd.value=cmmNotifyOrd;
form.action = "<c:url value='/cmm/main/mainDetail.do'/>";
form.submit();
}
//체크박스 전체 선택
function chkAll(thisObj){
$("input[name=chk]").prop("checked" , $(thisObj).is(":checked"));
}
function chkDelete(){
var chkLen = $(listForm).find("input[name=chk]:checked").length;
if(chkLen == 0){
alert("선택된 항목이 없습니다.");
return;
}
if(confirm("삭제하시겠습니까?")){
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/web/my/myNotifyMngDeleteAjax.do'/>"
$.ajax({
type : "Post",
url : url,
data : data,
dataType : 'json',
async : false,
processData : false,
contentType : false,
cache : false,
success : function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
location.reload();
}else{
alert("실패하였습니다.")
}
},
error : function(request, status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
})
}
}
</script>
</head>
<body>
<div class="cont_wrap dashboard">
<div class="box_wrap">
<div class="box">
<div class="box_tit">
<p>오늘의 교육 진행 현황</p>
</div>
<div class="box_cont today_box">
<div class="today_status status01">
<p>교육접수</p>
<i></i>
<span>18</span>
</div>
<i class="status_pcs"></i>
<div class="today_status status02">
<p>교육진행</p>
<i></i>
<span>18</span>
</div>
<i class="status_pcs"></i>
<div class="today_status status03">
<p>교육완료</p>
<i></i>
<span>18</span>
</div>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>교육관리</p>
</div>
<div class="box_cont system_box">
<a href="#" class="btn_system system01">
<p>교육 일정관리</p>
<span>바로가기 ></span>
</a>
<a href="#" class="btn_system system02">
<p>고육 종료관리</p>
<span>바로가기 ></span>
</a>
<a href="#" class="btn_system system03">
<p>교육 신청관리</p>
<span>바로가기 ></span>
</a>
<a href="#" class="btn_system system04">
<p>교육 강사관리</p>
<span>바로가기 ></span>
</a>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>교육건수</p>
</div>
<div class="box_cont ds_box">
<ul class="chartType01">
<li>
<p>접수</p>
<div class="chart_wrap">
<div></div>
</div>
<p class="case_number"><span>30</span>건</p>
</li>
<li>
<p>승인</p>
<div class="chart_wrap">
<div></div>
</div>
<p class="case_number"><span>30</span>건</p>
</li>
<li>
<p>진행</p>
<div class="chart_wrap">
<div></div>
</div>
<p class="case_number"><span>30</span>건</p>
</li>
<li>
<p>대기</p>
<div class="chart_wrap">
<div></div>
</div>
<p class="case_number"><span>30</span>건</p>
</li>
<li>
<p>완료</p>
<div class="chart_wrap">
<div></div>
</div>
<p class="case_number"><span>30</span>건</p>
</li>
</ul>
<ul class="chart_num">
<li>0</li>
<li>10</li>
<li>20</li>
<li>30</li>
<li>40</li>
</ul>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>교육신청현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list">
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>교육진행현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list state">
<li>
<a href="#" class="list_tit">· <img src="${pageContext.request.contextPath}/kccadrPb/adm/image/icon_new.png" class="icon_new"> 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line blue">승인요청</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line orange">대기중</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>교육종료현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list state">
<li>
<a href="#" class="list_tit">· 인사교육 프로그램 교재의 저작물</a>
<p class="list_writer">admin</p>
<p class="state fill gray">보고완료</p>
</li>
<li>
<a href="#" class="list_tit">· 음악저작물 제작 및 이용에 따른</a>
<p class="list_writer">admin</p>
<p class="state fill green">설문진행</p>
</li>
<li>
<a href="#" class="list_tit">· 부주의에 의한 성명표시권 침해</a>
<p class="list_writer">admin</p>
<p class="state fill purple">비용지급</p>
</li>
<li>
<a href="#" class="list_tit">· 학위논문에서의 정당한 인용의 문제</a>
<p class="list_writer">admin</p>
<p class="state fill gray">보고완료</p>
</li>
<li>
<a href="#" class="list_tit">· 저작물 이용허락 요청 후 무단이용</a>
<p class="list_writer">admin</p>
<p class="state fill gray">보고완료</p>
</li>
</div>
</div>
<div class="cont_wrap dashboard">
<div class="box_wrap">
<%-- ===========================================
조건부 기소유예 시작
============================================ --%>
<div class="box">
<div class="box_tit">
<p>조건부기소유예 대상자 목록 현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont today_box">
<div class="today_status status01">
<p>전체</p>
<i></i>
<span>${cndtnTrgtInfoAllCnt}</span>
</div>
<div class="today_status status02">
<p>완료</p>
<i></i>
<span>${cndtnTrgtInfoCompleteCnt}</span>
</div>
<div class="today_status status03">
<p>취소</p>
<i></i>
<span>${cndtnTrgtInfoCancelCnt}</span>
</div>
</div>
<!-- //cont -->
</div>
<div class="box">
<div class="box_tit">
<p>과정신청현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list">
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>확정과정현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list state">
<li>
<%-- <a href="#" class="list_tit">· <img src="${pageContext.request.contextPath}/kccadrPb/adm/image/icon_new.png" class="icon_new"> 상표권 교육조건부 기소유예</a> --%>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line blue">승인요청</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line orange">대기중</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
</div>
</div>
<%-- ===========================================
조건부 기소유예 끝
============================================ --%>
<%-- ===========================================
시정명령 시작
============================================ --%>
<div class="box">
<div class="box_tit">
<p>시정명령 대상자 정보 현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont today_box">
<div class="today_status status01">
<p>전체</p>
<i></i>
<span>${cmdtnTrgtAllCnt}</span>
</div>
<div class="today_status status02">
<p>완료</p>
<i></i>
<span>${cmdtnTrgtCompleteCnt}</span>
</div>
<div class="today_status status03">
<p>취소</p>
<i></i>
<span>${cmdtnTrgtCancelCnt}</span>
</div>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>과정신청현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list">
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>확정과정현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list state">
<li>
<%-- <a href="#" class="list_tit">· <img src="${pageContext.request.contextPath}/kccadrPb/adm/image/icon_new.png" class="icon_new"> 상표권 교육조건부 기소유예</a> --%>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line blue">승인요청</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line orange">대기중</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
</div>
</div>
<%-- ===========================================
시정명령 끝
============================================ --%>
<%-- ===========================================
예방교육 시작
============================================ --%>
<div class="box">
<div class="box_tit">
<p>과정신청현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list">
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="list_date">2025-08-08</p>
</li>
</div>
</div>
<div class="box">
<div class="box_tit">
<p>확정과정현황</p>
<button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
</div>
<div class="box_cont">
<ul class="dashboard_list state">
<li>
<%-- <a href="#" class="list_tit">· <img src="${pageContext.request.contextPath}/kccadrPb/adm/image/icon_new.png" class="icon_new"> 상표권 교육조건부 기소유예</a> --%>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line blue">승인요청</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line orange">대기중</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
<li>
<a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
<p class="list_writer">admin</p>
<p class="state line gray">배정완료</p>
</li>
</div>
</div>
<%-- ===========================================
예방교육 끝
============================================ --%>
</div>
</div>
<!-- //cont -->
</body>
</html>

View File

@ -89,7 +89,8 @@ function modifyMem(uniqId){
</li>
<li class="ip">
<i></i>
<p>IP : 218.123.45.678</p>
<!-- <p>IP : 218.123.45.678</p> -->
<p>IP : ${userIp}</p>
</li>
<li class="time_out">
<i></i>
@ -120,14 +121,15 @@ function modifyMem(uniqId){
<div class="area_right">
<ul class="user_info_ul">
<li>
<!-- <li>
<select name="" id="">
<option value="">관리팀</option>
<option value="">관리팀2</option>
</select>
</li>
</li> -->
<li>
슈퍼관리자(honggildong235)
${userInfo.name}(<c:out value="${userInfo.id}" />)
<!-- 슈퍼관리자(honggildong235) -->
</li>
</ul>
<button type="button" class="btn btn_text gray_fill btn_logout" onclick="location.href='<c:url value='/uat/uia/actionLogout.do'/>'">로그아웃</button>

View File

@ -309,7 +309,7 @@ function fn_egov_inqire_data(bbsId, nttId) {
<c:if test="${popipZoneList.istarget == 'N'}">
<a class="swiper-slide" href="javascript:popzoneOpen('${popipZoneList.mlink}','${popipZoneList.istarget}');" title="새창열림" >
<div>
<img style="cursor:pointer" onerror="this.src='/images/no_img.jpg'" alt="${popipZoneList.imgAlt} 팝업"
<img style="cursor:pointer" onerror="this.src='${pageContext.request.contextPath}/images/no_img.jpg'" alt="${popipZoneList.imgAlt} 팝업"
src='<c:url value='/uss/ion/pwm/getImage.do'/>?atchFileId=<c:out value="${popipZoneList.popupzoneImageFile}"/>' />
</div>
</a>
@ -317,7 +317,7 @@ function fn_egov_inqire_data(bbsId, nttId) {
<c:if test="${popipZoneList.istarget != 'N'}">
<a class="swiper-slide" href="javascript:popzoneOpen('${popipZoneList.mlink}','${popipZoneList.istarget}');">
<div>
<img style="cursor:pointer" onerror="this.src='/images/no_img.jpg'" alt="${popipZoneList.imgAlt} 팝업"
<img style="cursor:pointer" onerror="this.src='${pageContext.request.contextPath}/images/no_img.jpg'" alt="${popipZoneList.imgAlt} 팝업"
src='<c:url value='/uss/ion/pwm/getImage.do'/>?atchFileId=<c:out value="${popipZoneList.popupzoneImageFile}"/>' />
</div>
</a>