From 79c001f4b62e993ac11d880da2b400fb81c3b23f Mon Sep 17 00:00:00 2001 From: hylee Date: Wed, 1 Nov 2023 18:15:47 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EA=B6=8C=ED=95=9C=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=EC=88=98=EC=A0=95=20DATE=5FFORMAT(NOW(),?= =?UTF-8?q?=20'%Y-%m-%d'))=20=3D>=20TO=5FCHAR(SYSDATE,=20'YYYY-MM-DD'))?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqlmap/let/sec/ram/EgovAuthorManage_SQL_Tibero.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/egovframework/sqlmap/let/sec/ram/EgovAuthorManage_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/let/sec/ram/EgovAuthorManage_SQL_Tibero.xml index 0181e419..904e2a6f 100644 --- a/src/main/resources/egovframework/sqlmap/let/sec/ram/EgovAuthorManage_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/let/sec/ram/EgovAuthorManage_SQL_Tibero.xml @@ -67,7 +67,7 @@ , #authorNm# , #authorDc# , (SELECT CAST(MAX(sort_num)+1 AS VARCHAR(2)) FROM LETTNAUTHORINFO) - , DATE_FORMAT(NOW(), '%Y-%m-%d')) + , TO_CHAR(SYSDATE, 'YYYY-MM-DD')) ]]> From b6e4effa14de7b74b9784c2de908dcf5fc354a18 Mon Sep 17 00:00:00 2001 From: hehih Date: Thu, 2 Nov 2023 16:48:38 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EA=B8=B0?= =?UTF-8?q?=EC=86=8C=EC=9C=A0=EC=98=88=20-=20=EC=B2=A8=EB=B6=80=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EA=B8=B0=EB=8A=A5,=20=EA=B4=80=ED=95=A0=EC=B2=AD=20?= =?UTF-8?q?=EA=B3=B5=ED=86=B5=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/uat/uia/web/EgovLoginController.java | 4896 +++++++++-------- .../kcc/let/utl/fcc/service/VEPagingUtil.java | 558 +- .../endInfo/web/VEAdultEduEndController.java | 1682 +++--- .../web/EduRsltMngAdultController.java | 996 ++-- .../web/EduSchdlMngAdultController.java | 710 +-- .../trgtMng/service/CndtnTrgtMngVO.java | 7 + .../trgtMng/web/CndtnTrgtMngController.java | 107 +- .../spring/com/context-crypto.xml | 62 +- .../spring/com/context-properties.xml | 54 +- .../sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml | 472 +- .../ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml | 6 +- .../sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml | 704 +-- src/main/resources/log4j2.xml | 90 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp | 13 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp | 2 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp | 187 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp | 197 +- src/main/webapp/js/ncms_common_sendmail.js | 758 +-- src/main/webapp/js/util.js | 268 +- 19 files changed, 6074 insertions(+), 5695 deletions(-) diff --git a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java index 0cdea4f2..9ff8f4b6 100644 --- a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java @@ -1,2448 +1,2450 @@ -package kcc.let.uat.uia.web; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.math.BigInteger; -import java.net.URLEncoder; -import java.security.SecureRandom; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.annotation.Resource; -import javax.script.ScriptEngineManager; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.message.BasicNameValuePair; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; -import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; -import org.springframework.security.web.savedrequest.HttpSessionRequestCache; -import org.springframework.security.web.savedrequest.SavedRequest; -import org.springframework.security.web.util.matcher.AntPathRequestMatcher; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.web.context.support.WebApplicationContextUtils; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; - -import com.bandi.oauth.BandiSSOAgent; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import egovframework.rte.fdl.cmmn.trace.LeaveaTrace; -import egovframework.rte.fdl.property.EgovPropertyService; -import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; -import egovframework.rte.psl.dataaccess.util.EgovMap; -import kcc.com.cmm.EgovMessageSource; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.captcha.CaptchaUtil; -import kcc.com.cmm.spring.data.util.ProfileUtil; -import kcc.com.cmm.util.WebUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.cmm.service.SMSOracleService; -import kcc.let.sym.log.clg.service.EgovLoginLogService; -import kcc.let.sym.log.clg.service.LoginLog; -import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO; -import kcc.let.sym.site.service.EgovSiteManagerService; -import kcc.let.sym.site.service.SiteManagerVO; -import kcc.let.uat.uap.service.EgovLoginPolicyService; -import kcc.let.uat.uap.service.LoginPolicyVO; -import kcc.let.uat.uia.service.EgovLoginService; -import kcc.let.uat.uia.service.SsoLoginVO; -import kcc.let.uss.umt.service.EgovMberManageService; -import kcc.let.uss.umt.service.EgovUserManageService; -import kcc.let.uss.umt.service.MberManageConfigVO; -import kcc.let.uss.umt.service.UserDefaultVO; -import kcc.let.uss.umt.service.UserGuestVO; -import kcc.let.uss.umt.service.UserManageVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.let.utl.sim.service.EgovClntInfo; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrService; - -/** - * 일반 로그인, 인증서 로그인을 처리하는 컨트롤러 클래스 - * - * @author 공통서비스 개발팀 박지욱 - * @since 2009.03.06 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자          수정내용
- *  -------    --------    ---------------------------
- *  2009.03.06  박지욱          최초 생성
- *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
- *
- *      
- */ -@Controller -public class EgovLoginController { - -// static String RSA_WEB_KEY = "_RSA_WEB_Key_"; // 개인키 session key -// static String RSA_INSTANCE = "RSA"; // rsa transformation - private static final Logger LOGGER = LoggerFactory.getLogger(EgovLoginController.class); - - /** 네이버 인증 관련 */ - @Value("#{globalSettings['Globals.kcc.naver.clentId']}") - private String itnNaverClientId; - @Value("#{globalSettings['Globals.kcc.naver.clientSecret']}") - private String itnNaverClientSecret; - @Value("#{globalSettings['Globals.kcc.naver.returnUrl']}") - private String itnNaverReturnUrl; - - /** 카카오 인증 관련 */ - @Value("#{globalSettings['Globals.kcc.kakao.restApiKey']}") - private String itnKakaoRestApiKey; - @Value("#{globalSettings['Globals.kcc.kakao.returnUrl']}") - private String itnKakaoReturnUrl; - - /** SSO return URL */ - @Value("#{globalSettings['Globals.sso.returnSiteUrl']}") - private String returnSiteUrlGlobal; - @Value("#{globalSettings['Globals.sso.returnSiteCode']}") - private String returnSiteCodeGlobal; - - /** SSO 회원관련 URL */ - @Value("#{globalSettings['Globals.sso.joinUrl']}") - private String joinUrl_Global; - @Value("#{globalSettings['Globals.sso.modifyUrl']}") - private String modifyUrl_Global; - @Value("#{globalSettings['Globals.sso.idFindUrl']}") - private String idFindUrl_Global; - @Value("#{globalSettings['Globals.sso.pwFindUrl']}") - private String pwFindUrl_Global; - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - /** EgovLoginService */ - @Resource(name = "loginService") - private EgovLoginService loginService; - - /** EgovMessageSource */ - @Resource(name = "egovMessageSource") - EgovMessageSource egovMessageSource; - - /** EgovLoginPolicyService */ - @Resource(name = "egovLoginPolicyService") - EgovLoginPolicyService egovLoginPolicyService; - - /** EgovPropertyService */ - @Resource(name = "propertiesService") - protected EgovPropertyService propertiesService; - - /** TRACE */ - @Resource(name = "leaveaTrace") - LeaveaTrace leaveaTrace; - - @Resource(name = "EgovLoginLogService") - private EgovLoginLogService loginLogService; - - @Resource(name = "egovSiteManagerService") - private EgovSiteManagerService egovSiteManagerService; - - /** userManageService */ - @Resource(name = "userManageService") - private EgovUserManageService userManageService; - - /** mberManageService */ - @Resource(name = "mberManageService") - private EgovMberManageService mberManageService; - - @Resource(name = "SMSOracleService") - private SMSOracleService sMSOracleService; - - //강사 정보 - @Resource(name="vEInstrService") - private VEInstrService vEInstrService; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - /** 구동 환경 */ - @Value("#{property['Globals.prod.islocal']}") - private String environment; - - - /* - *//** - * (관리자)로그인 화면으로 들어간다 - * - * @param vo - 로그인후 이동할 URL이 담긴 LoginVO - * @return 로그인 페이지 - * @exception Exception - *//* - * @RequestMapping(value = "/uat/uia/egovLoginUsr.do") public String - * loginUsrView(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletRequest - * request, HttpServletResponse response, ModelMap model) throws Exception { - * return "uat/uia/EgovLoginUsr"; } - */ - - /** - * (관리자) 로그인 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/EgovLoginUsr.do") - public String adminLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - - System.out.println("==start="); - - if (isAuthenticated) - return "redirect:/cmm/main/mainPage.do"; -// initRsa(request); - - System.out.println("==end="); - - // 로그인 페이지 IP 체크 - List loginPolicyGroupList = new ArrayList(); - LoginPolicyVO loginPolicyVOCheck = new LoginPolicyVO(); - String userIpCheck = EgovClntInfo.getClntIP(request); - 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; -// } -// } -// } - - // 1. Spring Security 사용자권한 처리 -// if (!ipCheck) { -// return "/cmm/error/ipFailure"; -// } - if (!isAuthenticated) { - // model.addAttribute("message", - // egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - return "uat/uia/EgovLoginUsr"; - } - - /** - * (사용자) 로그인 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/login.do") - public String userLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - - // sns 회원가입 key 값 설정 - String naverClientId = itnNaverClientId; - String naverClientSecret = itnNaverClientSecret; - - String kakaoRestApiKey = itnKakaoRestApiKey; - String kakaoReturnUrl = itnKakaoReturnUrl; - - // config 정보 가져오기 - MberManageConfigVO mberConfigVO = new MberManageConfigVO(); - - List mberManageCnfVO = mberManageService.selectMberCnf(mberConfigVO); - - for (int i = 0; i < mberManageCnfVO.size(); i++) { - if (mberManageCnfVO.get(i).getIsSns().equals("Y")) { - if (mberManageCnfVO.get(i).getUseYn().equals("Y")) { - if (mberManageCnfVO.get(i).getConfigId().equals("snsNaver")) { - String redirectURI = URLEncoder.encode(itnNaverReturnUrl, "UTF-8"); - SecureRandom random = new SecureRandom(); - BigInteger state = new BigInteger(130, random); - String naver_url = "https://nid.naver.com/oauth2.0/authorize?response_type=code"; - naver_url += "&client_id=" + itnNaverClientId; - naver_url += "&redirect_url=" + redirectURI; - naver_url += "&state=" + state; - mberManageCnfVO.get(i).setSiteUrl(naver_url); - mberManageCnfVO.get(i).setSiteIcon("/img/login_naver_icon.png"); - - } else if (mberManageCnfVO.get(i).getConfigId().equals("snsKakao")) { - - String kakao_url = "https://kauth.kakao.com/oauth/authorize?response_type=code"; - kakao_url += "&client_id=" + kakaoRestApiKey; - kakao_url += "&redirect_uri=" + kakaoReturnUrl; - mberManageCnfVO.get(i).setSiteUrl(kakao_url); - mberManageCnfVO.get(i).setSiteIcon("/img/login_kakao_icon.png"); - - } else if (mberManageCnfVO.get(i).getConfigId().equals("snsGoogle")) { - - } - } - } - } - model.addAttribute("mberManageCnfVO", mberManageCnfVO); - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); -// initRsa(request); - return "web/login/EgovLoginGnrlUsr"; - } - - /** - * (사용자) SSO 로그인 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoLogin.do") - public String ssoLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - /* - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - */ - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - String test = (String) commandMap.get("test"); - - // 실서버 적용시 바꾸기 - String returnSiteUrl = returnSiteUrlGlobal; - String returnSiteCode = returnSiteCodeGlobal; - String idFindUrl = idFindUrl_Global; - String pwFindUrl = pwFindUrl_Global; - String joinUrl = joinUrl_Global; - - model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); - model.addAttribute("returnSiteCode", returnSiteCode); - model.addAttribute("idFindUrl", idFindUrl); - model.addAttribute("pwFindUrl", pwFindUrl); - model.addAttribute("joinUrl", joinUrl); - - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); - model.addAttribute("environment", environment); - //로컬은 셀렉트박스 로그인 - //개발은 e배움터 개발서버 로그인 - //운영은 e배움터 운영서버 로그인 - if("dev".equals(environment)) { - return "redirect:http://223.255.205.7/user/member/loginForm.do?eduOff=Y"; - } - if("real".equals(environment)) { - return "redirect:https://edu-copyright.or.kr/user/member/loginForm.do?eduOff=Y"; - } -// initRsa(request); - if (test != null && test.equals("test")) { - return "web/kccadr/login/SsoLoginUsr3"; - } else { - return "web/kccadr/login/SsoLoginUsr"; - } - } - - - /** - * 임시사용 - 개발서버에서 select방식 로그인을 유지하기 위한 - * - * @return String - * @exception Exception - */ - - /*231031.개발서버 selectbox 로그인용 임시 - 메소드 삭제*/ - @RequestMapping(value = "/web/user/login/ssoDevLogin.do") - public String ssoDevLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - /* - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - */ - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - String test = (String) commandMap.get("test"); - - // 실서버 적용시 바꾸기 - String returnSiteUrl = returnSiteUrlGlobal; - String returnSiteCode = returnSiteCodeGlobal; - String idFindUrl = idFindUrl_Global; - String pwFindUrl = pwFindUrl_Global; - String joinUrl = joinUrl_Global; - - model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); - model.addAttribute("returnSiteCode", returnSiteCode); - model.addAttribute("idFindUrl", idFindUrl); - model.addAttribute("pwFindUrl", pwFindUrl); - model.addAttribute("joinUrl", joinUrl); - - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); - model.addAttribute("environment", environment); - //로컬은 셀렉트박스 로그인 - //개발은 e배움터 개발서버 로그인 - //운영은 e배움터 운영서버 로그인 -// initRsa(request); - if (test != null && test.equals("test")) { - return "web/kccadr/login/SsoLoginUsr3"; - } else { - return "web/kccadr/login/SsoLoginUsr"; - } - } - - @RequestMapping(value = "/web/user/oraSms/sendSms.do") - public String oraSmsSend() throws Exception { - - //if (ProfileUtil.isProd()) { - LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Start"); - //sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 - //AdjReqMgrVO adjReqMgrVO = new AdjReqMgrVO(); - //sMSOracleService.insertSmsSend(adjReqMgrVO); - //sMSOracleService.insertSmsSendTest(); - LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@End"); - //} -// -// -// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); -// sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 -// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); - - return "redirect:/web/main/mainPage.do"; - } - - @RequestMapping(value = "/web/user/login/ssoLogin3.do") - public String ssoLogin3(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - // 로그인필요 URL 호출하여 온경우 - String beforeUrl = (String) commandMap.get("beforeUrl"); - String message = (String) commandMap.get("message"); - - // 실서버 적용시 바꾸기 - String returnSiteUrl = returnSiteUrlGlobal; - String returnSiteCode = returnSiteCodeGlobal; - - model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); - model.addAttribute("returnSiteCode", returnSiteCode); - - model.addAttribute("beforeUrl", beforeUrl); - model.addAttribute("message", message); -// initRsa(request); - return "web/kccadr/login/ssoLogin3"; - } - - /** - * (사용자) 통합회원 회원탈퇴, 개인정보수정. - * - * @return String - * @exception Exception - */ - @SuppressWarnings("deprecation") - @RequestMapping(value = "/web/user/login/ssoUsrModify.do") - public String ssoUsrModify(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - // 실서버 적용시 바꾸기 - /*String returnSiteUrl = "http://219.240.88.15:8091/web/user/login/ssoUsrModifyResult.do";*/ - String returnSiteUrl = returnSiteUrlGlobal; - - ssoLoginVO.setReturnSiteUrl(URLEncoder.encode(returnSiteUrl)); - - model.addAttribute("ssoLoginVO", ssoLoginVO); - - return "web/kccadr/login/SsoUserModify"; - } - - /** - * (사용자) 통합회원 회원탈퇴, 개인정보수정. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoUsrModifyResult.do") - public String ssoUsrModifyResult(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { - - return "redirect:/"; - } - - /** - * (사용자) 외부 개발자용 세션등록 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoSession.do") - public String ssoSession(HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) - return "redirect:/web/main/mainPage.do"; - - SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - model.addAttribute("membSeq", ssoLoginVO.getMembSeq()); - - return "web/kccadr/login/SsoLoginSessionRegist"; - } - - /** - * (사용자) 외부 개발자용 세션등록. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/ssoSessionRegist.do") - public String ssoSessionRegist(@ModelAttribute("ssoLoginVO") SsoLoginVO ssoLoginVO, HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) - throws Exception { - - request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); - - return "redirect:/web/main/mainPage.do"; - } - - /** - * (관리자) 일반(스프링 시큐리티) 로그인을 처리한다(관리자) - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/actionSecurityLogin.do") - public String selectActionSecurityLogin(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) - throws Exception { - - // Locale.setDefault(new Locale("en", "GB")); - Locale.setDefault(new Locale("ko", "Kr")); - - // 로그인 정보 check - if (loginVO.getId() == null || loginVO.getPassword() == null) { // 로그인 최초 화면 로딩 - // RSA 키 생성 -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } - - - loginVO.setId(loginVO.getId()); - loginVO.setPassword(loginVO.getPassword()); - - // 사용자일 경우 로그인 안되게 - if (null == loginService.getUserAuth(loginVO)) { // 아이디 없음. -// initRsa(request); - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } else { - if ("ROLE_USER_MEMBER".equals(loginService.getUserAuth(loginVO).getAuthority())) { // 일반사용자 로그인 -// initRsa(request); - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } else if ("ROLE_USER_MANAGER".equals(loginService.getUserAuth(loginVO).getAuthority())) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - } - - // 1. 로그인 처리 - LoginVO resultVO = loginService.actionLogin(loginVO); - - if (loginService.getUserAuth(resultVO) != null) { - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - } - - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } else { - if (resultVO.getPassMiss() > 5) { - model.addAttribute("message", "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } else { // 초기화 - loginService.updatePassMissReset(loginVO); - } - } - - // 2. 허용IP조회 - - boolean loginPolicyYn = false; - // String userIp = EgovClntInfo.getClntIP(request); - // 방화벽 아이피 조회 - - HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); - String userIp = req.getHeader("X-FORWARDED-FOR"); - if (userIp == null) { - userIp = req.getRemoteAddr(); - } - - System.out.println("--------userIp-------" + userIp + "-----------------"); - - LoginPolicyVO loginPolicyVO = new LoginPolicyVO(); - loginPolicyVO.setIpInfo(userIp); - -// boolean ipCheck = false; - /* boolean ipCheck = true; - List loginPolicyGroupList = new ArrayList(); - loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyAll(loginPolicyVO); - if (loginPolicyGroupList != null) { - for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) { - if (userIp.contains(tempPolicyVO.getIpInfo().trim())) { - ipCheck = true; - break; - } - } - } - - if (!ipCheck) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - }*/ - - // resultVO.siteId 의 각 로그인 ip를 조회함 - // if (resultVO != null && resultVO.getId() != null && - // !resultVO.getId().equals("") && loginPolicyYn) { - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - // 2. spring security 연동 - - request.getSession().setAttribute("LoginVO", resultVO); - - UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); - - ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); - - Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); - - if (beans.size() > 0) { - - springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; - springSecurity.setUsernameParameter("egov_security_username"); - springSecurity.setPasswordParameter("egov_security_password"); - springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); - - } else { - throw new IllegalStateException("No AuthenticationProcessingFilter"); - } - - System.out.println("==18=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==18=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - loginLog.setSiteId(user.getSiteId()); - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("adminId", user.getId()); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - } - } - - /* - * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); - * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); - * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("A"); - * loginLog.setDeviceType("P"); loginLog.setProgrmFileNm("adminLogin"); - * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); - */ - } - - System.out.println("forward:/uat/uia/actionMain.do"); - - return "forward:/uat/uia/actionMain.do"; // 성공 시 페이지.. (redirect 불가) - // 개인키 삭제 - // session.removeAttribute(EgovLoginController.RSA_WEB_KEY); - // return "blank"; // 성공 시 페이지.. (redirect 불가) - - } else { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); -// initRsa(request); - return "uat/uia/EgovLoginUsr"; - } - } - - /** - * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO ID/PW를 통한 로그인 처리) - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/actionSecurityLogin.do") - public String selectActionSecurityLoginWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, - RedirectAttributes redirectAttributes) throws Exception { - - ScriptEngineManager engine = new ScriptEngineManager(); - - // 로그인 정보 check - if (loginVO.getId() == null || loginVO.getPassword() == null) { - SsoLoginVO SsoLoginSessionChk = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - // SSOLoginVO 세션 체크 - if (SsoLoginSessionChk != null) { - - loginVO.setId(SsoLoginSessionChk.getMembId()); - loginVO.setPassword("1"); - } else { - model.addAttribute("message", "로그인을 다시 해주세요."); - // 로그인 페이지로 이동 - /*return "/web/kccadr/login/SsoLoginUsr";*/ - return "redirect:/web/user/login/ssoLogin.do"; - } - } - - SsoLoginVO ssologinVO = new SsoLoginVO(); - - /*231031.개발서버 selectbox 로그인용 임시 - isDev 삭제 처리*/ - if ((ProfileUtil.isLocal() || ProfileUtil.isTLocal() || ProfileUtil.isDev()) && "Y".equals(loginVO.getIsSelect())) { //비 sso login - - loginVO.setPassword("1"); - loginVO.setStatusAll("N"); - ssologinVO.setMembSeq(loginVO.getId()); //중요 - //loginVO = loginService.actionLogin(loginVO); - - //기존에 개발자 로그인은 selectbox와 mber_seq로 로그인 처리. - //e배움터 연동 후 mber_seq는 key로 사용하기 때문에 mber_id로 로그인 처리 과정 - //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 - loginVO = loginService.actionLoginMberId(loginVO); - - - //ssologinVO.setMembSeq(loginVO.getId()); //중요 - - //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 - - //ssologinVO.setMembSeq(loginVO.getId()); //중요 - - ssologinVO.setMembId(loginVO.getEmail()); - - // ================== 이름 암호화로 나오는 문제 해결 ==================== - ssologinVO.setMembName(egovCryptoUtil.decrypt(loginVO.getName())); - - System.out.println("==================임시=================="); - // ==== 계속 암호화에 암호화가 되서 임시로 넣음 - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); - - - ssologinVO.setSexCode("M"); - ssologinVO.setMembEmail(loginVO.getEmail()); - ssologinVO.setMembCelnum(loginVO.getMembCelnum()); - ssologinVO.setMembBirth(loginVO.getMembBirth()); - - /* - * ssologinVO.setMembSmsRecpYn(loginVO.getMembSmsRecpYn()); - * ssologinVO.setMembEmailRecpYn(loginVO.getMembEmailRecpYn()); - * - * ssologinVO.setDispsettMembDivisCode(loginVO.getDispsettMembDivisCode()); - * ssologinVO.setCorpnum(loginVO.getCorpnum()); - * ssologinVO.setBuisnRegnum(loginVO.getBuisnRegnum()); - * ssologinVO.setCompTitle(loginVO.getCompTitle()); - */ - - session.setAttribute("SSOLoginVO", ssologinVO); - - } else { //sso login - - ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - String SsoLoginResult = ""; -/* if (ssologinVO == null) { - SSO로그인 및 SSOLoginVO 세선 생성 - SsoLogin ssoLogin = new SsoLogin(); - SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), loginVO.getPassword(), request); - } - if ("fail".equals(SsoLoginResult)) { - redirectAttributes.addAttribute("message", "아이디 비밀번호를 확인해 주세요."); - redirectAttributes.addFlashAttribute("message", "아이디 비밀번호를 확인해 주세요."); - return "redirect:/web/user/login/ssoLogin.do"; - }*/ - } - -// ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - /*if ("".equals(ssologinVO.getDispsettMembDivisCode())) { - 신청 관련코드 받아오면 처리 - System.out.println("조정분류코드 없음"); - - }*/ - - // 기존에 있던 회원이 아니면 DB에 일련번호 저장 - /* UserManageVO userManageVO = new UserManageVO(); - userManageVO.setMberSeq(ssologinVO.getMembSeq()); - userManageVO = userManageService.selectKccadrUser(userManageVO); - if (null == userManageVO) { - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - String result = userManageService.insertUser(tmpUserManageVO); - - userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); - }else { //기존에 있던 회원이라면 이름 최신화 - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - userManageService.updateUserNm(tmpUserManageVO); - }*/ - - /*loginVO.setId(userManageVO.getEmplyrId()); - loginVO.setPassword(userManageVO.getPassword()); -*/ - /* - * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 - * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert - */ - - loginVO.setUserSe("GNR"); - // 로그인 정보 check - - /* - * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 - * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO - * == null) { // RSA 키 생성 initRsa(request); return - * "redirect:/web/user/login/login.do"; } else { - * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); - * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); - * loginVO.setMessage(pLoginVO.getMessage()); } } - */ - - // 관리자 유무 체크 - List authorities = (List) loginService.selectAuthorities(loginVO); - Boolean adminFlag = false; - for (EgovMap authority : authorities) { - // admin_auth_code 최하위 관리자 Roll 코드 - if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) - adminFlag = true; - } - - // 관리자 시 로그인 막기 - if (adminFlag) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - // RSA 키 생성 -// initRsa(request); - return "web/site/login/EgovLoginGnrlUsr"; - } - - // 1. 일반 로그인 처리 - LoginVO resultVO; - // 복호화 - - loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 - /* loginVO.setUserSe("GNR"); */ - resultVO = loginService.actionLogin(loginVO); - // 로그인 시 권한조회 - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - - System.out.println("==1=="); - - String alertMessage = ""; - if (!"admin".equals(loginVO.getId())) { - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - alertMessage = egovMessageSource.getMessage("fail.common.login"); - // 로그인 실패이면 메인페이지로 이동 - return goUserLoginPage(redirectAttributes, request, model, alertMessage); - } /* - * else{ if(resultVO.getPassMiss() > 5) { alertMessage = - * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return - * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else - * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); }else - * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } - */ - } - - boolean loginPolicyYn = true; - System.out.println("==12=="); - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - - // resultVO.siteId 의 각 로그인 ip를 조회함 - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - System.out.println("==13=="); - // LoginVO세션에 사용자 정보 넣기 - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembId(ssologinVO.getMembId()); - resultVO.setMembName(ssologinVO.getMembName()); - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembCi(ssologinVO.getMembCi()); - resultVO.setMembEmail(ssologinVO.getMembEmail()); - resultVO.setMembCelnum(ssologinVO.getMembCelnum()); - resultVO.setMembBirth(ssologinVO.getMembBirth()); - resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); - resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); - resultVO.setSexCode(ssologinVO.getSexCode()); - resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); - resultVO.setCorpnum(ssologinVO.getCorpnum()); - resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); - resultVO.setCompTitle(ssologinVO.getCompTitle()); - - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 - System.out.println("@@@@로그인VO:"+resultVO+"@@@@@@"); - UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); - ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); - Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); - if (beans.size() > 0) { - springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; - springSecurity.setUsernameParameter("egov_security_username"); - springSecurity.setPasswordParameter("egov_security_password"); - springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); - - } else { - throw new IllegalStateException("No AuthenticationProcessingFilter"); - } - System.out.println("==14=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==14=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - - // 최근검색어 조회 후 세션에 넣어줌 - /* - * UserManageVO tempUserManageVO = new UserManageVO(); - * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = - * userManageService.selectRecentSearchWord(tempUserManageVO); - * - * List lisRecentSearch = new ArrayList(); if(null != - * tempUserManageVO){ //ArrayList 로 세션 저장 - * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," - * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; - */ - } - } - - loginLog.setLoginId(uniqId); - loginLog.setLoginIp(ip); - loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O - loginLog.setErrOccrrAt("N"); - loginLog.setErrorCode(""); - // 로그인은 관리자, PC만 됨 - loginLog.setUserAt("U"); // 사용자 - loginLog.setDeviceType("P"); // PC - loginLog.setProgrmFileNm("adminLogin"); - loginLog.setMenuNm("관리자로그인"); - loginLogService.logInsertLoginLog(loginLog); - System.out.println("==15=0="); - } - -// session.setAttribute("beforeSiteUrl", request.getRequestURI()); - System.out.println("session.getAttributesession.getAttributesession.getAttributesession.getAttribute"); - loginVO.setBeforeUrl((String) request.getSession().getAttribute("beforeSiteUrl")); - // 로그인 전 URL 호출 시 - if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { - request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); - // 회원가입 시 메세지 처리 - if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { - request.getSession().setAttribute("registMessage", loginVO.getMessage()); - } - } - System.out.println("==16=0="); - // 개인키 삭제 - // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. - request.getSession().setAttribute("pageType", "web"); - return "blank"; // 성공 시 페이지.. (redirect 불가) - } else { - String message = egovMessageSource.getMessage("fail.common.login"); - redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); - redirectAttributes.addAttribute("message", message); - return "redirect:/web/user/login/login.do"; - } - } - - /** - * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO Token를 통한 로그인 처리) 통합회원 SSO 로그인 후 찾교시스템 배너 - * 클릭으로 로그인 - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - /* @RequestMapping(value = "/web/user/login/actionSecurityLoginToken.do") */ - @RequestMapping(value = "/kccadr/ssoLogin.do") - public String selectActionSecurityLoginTokenWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, - RedirectAttributes redirectAttributes) throws Exception { - - ScriptEngineManager engine = new ScriptEngineManager(); - - SsoLoginVO ssologinVO = new SsoLoginVO(); - ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - String SsoLoginResult = ""; - if( - request.getParameter("accessToken") == null - || request.getParameter("refreshToken") == null) { - System.out.println("토큰값 없음."); - return "redirect:/"; - } - - if (ssologinVO == null) { - /* SSO로그인 및 SSOLoginVO 세선 생성 */ - SsoLoginVO tmpssologinVO = new SsoLoginVO(); - - tmpssologinVO.setAccess_token(request.getParameter("accessToken")); - tmpssologinVO.setRefresh_token(request.getParameter("refreshToken")); - - SsoLoginResult = SsoTokenLogin.SsoTokenLogin(tmpssologinVO.getAccess_token(), tmpssologinVO.getRefresh_token(), request); - } - if ("fail".equals(SsoLoginResult)) { - model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); - return "redirect:/web/user/login/ssoLogin.do"; - } - - ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - - if ("".equals(ssologinVO.getDispsettMembDivisCode())) { - /* 신청 관련코드 받아오면 처리 */ - } - - // 기존에 있던 회원이 아니면 DB에 일련번호 저장 - UserManageVO userManageVO = new UserManageVO(); - userManageVO.setMberSeq(ssologinVO.getMembSeq()); - userManageVO = userManageService.selectKccadrUser(userManageVO); - if (null == userManageVO) { - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - String result = userManageService.insertUser(tmpUserManageVO); - - userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); - }else { //기존에 있던 회원이라면 이름 최신화 - UserManageVO tmpUserManageVO = new UserManageVO(); - tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); - tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); - tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); - userManageService.updateUserNm(tmpUserManageVO); - } - - loginVO.setId(userManageVO.getEmplyrId()); - loginVO.setPassword(userManageVO.getPassword()); - - /* - * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 - * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert - */ - - loginVO.setUserSe("GNR"); - // 로그인 정보 check - - /* - * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 - * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO - * == null) { // RSA 키 생성 initRsa(request); return - * "redirect:/web/user/login/login.do"; } else { - * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); - * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); - * loginVO.setMessage(pLoginVO.getMessage()); } } - */ - - // 관리자 유무 체크 - List authorities = (List) loginService.selectAuthorities(loginVO); - Boolean adminFlag = false; - for (EgovMap authority : authorities) { - // admin_auth_code 최하위 관리자 Roll 코드 - if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) - adminFlag = true; - } - - // 관리자 시 로그인 막기 - if (adminFlag) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - // RSA 키 생성 -// initRsa(request); - return "web/site/login/EgovLoginGnrlUsr"; - } - - // 1. 일반 로그인 처리 - LoginVO resultVO; - loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 - resultVO = loginService.actionLogin(loginVO); - // 로그인 시 권한조회 - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - - String alertMessage = ""; - if (!"admin".equals(loginVO.getId())) { - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - alertMessage = egovMessageSource.getMessage("fail.common.login"); - // 로그인 실패이면 메인페이지로 이동 - return goUserLoginPage(redirectAttributes, request, model, alertMessage); - } /* - * else{ if(resultVO.getPassMiss() > 5) { alertMessage = - * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return - * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else - * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); }else - * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } - */ - } - - boolean loginPolicyYn = true; - - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - - // resultVO.siteId 의 각 로그인 ip를 조회함 - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - - // LoginVO세션에 사용자 정보 넣기 - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembId(ssologinVO.getMembId()); - resultVO.setMembName(ssologinVO.getMembName()); - resultVO.setMembSeq(ssologinVO.getMembSeq()); - resultVO.setMembCi(ssologinVO.getMembCi()); - resultVO.setMembEmail(ssologinVO.getMembEmail()); - resultVO.setMembCelnum(ssologinVO.getMembCelnum()); - resultVO.setMembBirth(ssologinVO.getMembBirth()); - resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); - resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); - resultVO.setSexCode(ssologinVO.getSexCode()); - resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); - resultVO.setCorpnum(ssologinVO.getCorpnum()); - resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); - resultVO.setCompTitle(ssologinVO.getCompTitle()); - - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 - UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); - ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); - Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); - if (beans.size() > 0) { - springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; - springSecurity.setUsernameParameter("egov_security_username"); - springSecurity.setPasswordParameter("egov_security_password"); - springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); - - } else { - throw new IllegalStateException("No AuthenticationProcessingFilter"); - } - - System.out.println("==15=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==15=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - - // 최근검색어 조회 후 세션에 넣어줌 - /* - * UserManageVO tempUserManageVO = new UserManageVO(); - * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = - * userManageService.selectRecentSearchWord(tempUserManageVO); - * - * List lisRecentSearch = new ArrayList(); if(null != - * tempUserManageVO){ //ArrayList 로 세션 저장 - * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," - * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; - */ - } - } - - loginLog.setLoginId(uniqId); - loginLog.setLoginIp(ip); - loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O - loginLog.setErrOccrrAt("N"); - loginLog.setErrorCode(""); - // 로그인은 관리자, PC만 됨 - loginLog.setUserAt("U"); // 사용자 - loginLog.setDeviceType("P"); // PC - loginLog.setProgrmFileNm("adminLogin"); - loginLog.setMenuNm("관리자로그인"); - loginLogService.logInsertLoginLog(loginLog); - } - - // 로그인 전 URL 호출 시 - if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { - request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); - // 회원가입 시 메세지 처리 - if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { - request.getSession().setAttribute("registMessage", loginVO.getMessage()); - } - } - // 개인키 삭제 - // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. - request.getSession().setAttribute("pageType", "web"); - return "blank"; // 성공 시 페이지.. (redirect 불가) - } else { - String message = egovMessageSource.getMessage("fail.common.login"); - redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); - redirectAttributes.addAttribute("message", message); - return "redirect:/web/user/login/login.do"; - } - } - - /** - * (사용자) 외부 개발자용 로그인 처리 일반(스프링 시큐리티) 로그인을 처리한다 - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/web/user/login/actionSecurityLogin2.do") - public String selectActionSecurityLoginWeb2(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, - RedirectAttributes redirectAttributes) throws Exception { - - ScriptEngineManager engine = new ScriptEngineManager(); - - /* - * //로그인 정보 check if(loginVO.getId() == null || loginVO.getPassword() == null){ - * SsoLoginVO SsoLoginSessionChk = - * (SsoLoginVO)session.getAttribute("SSOLoginVO"); //SSOLoginVO 세션 체크 - * if(SsoLoginSessionChk != null) { - * - * loginVO.setId(SsoLoginSessionChk.getMembId()); loginVO.setPassword("1"); - * }else { model.addAttribute("message", "로그인을 다시 해주세요."); //로그인 페이지로 이동 return - * "/web/kccadr/login/SsoLoginUsr"; } } - * - * SsoLoginVO ssologinVO = new SsoLoginVO(); ssologinVO = - * (SsoLoginVO)session.getAttribute("SSOLoginVO"); String SsoLoginResult = ""; - * if(ssologinVO == null) { SSO로그인 및 SSOLoginVO 세선 생성 SsoLogin ssoLogin = new - * SsoLogin(); SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), - * loginVO.getPassword(), request); } if("fail".equals(SsoLoginResult)) { - * model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); return - * "/web/user/login/ssoLogin.do"; } - * - * ssologinVO = (SsoLoginVO)session.getAttribute("SSOLoginVO"); - * - * if("".equals(ssologinVO.getDispsettMembDivisCode())) { 신청 관련코드 받아오면 처리 } - */ - - // 기존에 있던 회원이 아니면 DB에 일련번호 저장 - UserManageVO userManageVO = new UserManageVO(); - userManageVO.setMberSeq(loginVO.getMembSeq()); - userManageVO = userManageService.selectKccadrUser(userManageVO); - SsoLoginVO ssoLoginVO = new SsoLoginVO(); - ssoLoginVO.setOtherUser("Y"); - ssoLoginVO.setMembSeq(userManageVO.getMberSeq()); - request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); - - loginVO.setId(userManageVO.getEmplyrId()); - loginVO.setPassword(userManageVO.getPassword()); - - /* - * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 - * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert - */ - - loginVO.setUserSe("GNR"); - // 로그인 정보 check - - /* - * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 - * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO - * == null) { // RSA 키 생성 initRsa(request); return - * "redirect:/web/user/login/login.do"; } else { - * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); - * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); - * loginVO.setMessage(pLoginVO.getMessage()); } } - */ - - // 관리자 유무 체크 - List authorities = (List) loginService.selectAuthorities(loginVO); - Boolean adminFlag = false; - for (EgovMap authority : authorities) { - // admin_auth_code 최하위 관리자 Roll 코드 - if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) - adminFlag = true; - } - - // 관리자 시 로그인 막기 - if (adminFlag) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - // RSA 키 생성 -// initRsa(request); - return "web/site/login/EgovLoginGnrlUsr"; - } - - // 1. 일반 로그인 처리 - LoginVO resultVO; - String password = loginVO.getPassword(); - loginVO.setId(loginVO.getId()); - loginVO.setPassword(password); - - loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 - /* loginVO.setUserSe("GNR"); */ - resultVO = loginService.actionLogin(loginVO); - // 로그인 시 권한조회 - resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); - - String alertMessage = ""; - if (!"admin".equals(loginVO.getId())) { - if (null == resultVO.getId()) { // 로그인 실패 - /* loginService.updatePassMissPlus(loginVO); */ - alertMessage = egovMessageSource.getMessage("fail.common.login"); - // 로그인 실패이면 메인페이지로 이동 - return goUserLoginPage(redirectAttributes, request, model, alertMessage); - } /* - * else{ if(resultVO.getPassMiss() > 5) { alertMessage = - * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return - * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else - * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); }else - * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = - * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, - * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } - */ - } - - boolean loginPolicyYn = true; - - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - - // resultVO.siteId 의 각 로그인 ip를 조회함 - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 - UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); - ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); - Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); - if (beans.size() > 0) { - springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; - springSecurity.setUsernameParameter("egov_security_username"); - springSecurity.setPasswordParameter("egov_security_password"); - springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); - - } else { - throw new IllegalStateException("No AuthenticationProcessingFilter"); - } - - System.out.println("==16=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==16=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - - { // 관리자 로그인 log 저장 - String uniqId = ""; - String ip = ""; - - /* Authenticated */ - LoginLog loginLog = new LoginLog(); - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated.booleanValue()) { - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - uniqId = user.getUniqId(); - ip = EgovClntInfo.getClntIP(request); - - HttpSession httpSession = request.getSession(true); - { - List siteManageList = new ArrayList(); - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setFirstIndex(0); - siteManagerVO.setRecordCountPerPage(100); - siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); - httpSession.setAttribute("siteManageList", siteManageList); - httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 - httpSession.setAttribute("esntlId", user.getPassword()); - - // 최근검색어 조회 후 세션에 넣어줌 - /* - * UserManageVO tempUserManageVO = new UserManageVO(); - * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = - * userManageService.selectRecentSearchWord(tempUserManageVO); - * - * List lisRecentSearch = new ArrayList(); if(null != - * tempUserManageVO){ //ArrayList 로 세션 저장 - * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," - * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; - */ - } - } - - loginLog.setLoginId(uniqId); - loginLog.setLoginIp(ip); - loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O - loginLog.setErrOccrrAt("N"); - loginLog.setErrorCode(""); - // 로그인은 관리자, PC만 됨 - loginLog.setUserAt("U"); // 사용자 - loginLog.setDeviceType("P"); // PC - loginLog.setProgrmFileNm("adminLogin"); - loginLog.setMenuNm("관리자로그인"); - loginLogService.logInsertLoginLog(loginLog); - } - - // 로그인 전 URL 호출 시 - if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { - request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); - // 회원가입 시 메세지 처리 - if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { - request.getSession().setAttribute("registMessage", loginVO.getMessage()); - } - } - // 개인키 삭제 - // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. - request.getSession().setAttribute("pageType", "web"); - - return "blank"; // 성공 시 페이지.. (redirect 불가) - } else { - String message = egovMessageSource.getMessage("fail.common.login"); - redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); - redirectAttributes.addAttribute("message", message); - return "redirect:/web/user/login/login.do"; - } - } - - /** - * 로그인 후 메인화면으로 들어간다 - * - * @param - * @return 로그인 페이지 - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/actionMain.do") - public String actionMain(HttpServletResponse response, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes, HttpSession session) throws Exception { - /* - * 1.로그인 성공시 메소드 호출(사용자/관리자 모두) 2.권한없는 페이지 호출시 메소드 호출됨 3.사용자 화면에서 권한 없어도 무조건 - * 이쪽으로 redirect됨(여기서 분기처리요망) - */ - // initial target url. 첫 호출 URL - - System.out.println("===========actionMain==========="); - - SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); // 사용자 최종 클릭 화면 - - //System.out.println(savedRequest.getRedirectUrl()); - - if (savedRequest != null) { // 권한업는 페이지 호출시 호출한 페이지 분기를 위해 - if (savedRequest.getRedirectUrl().contains("web")) { // 사용자페이지에서 옴 - session.setAttribute("pageType", "web"); - } else { - session.setAttribute("pageType", "admin"); - } - - System.out.println("===========actionMain===========0"); - System.out.println(savedRequest.getRedirectUrl()); - }else { - //session.setAttribute("pageType", "web"); - } - - - - // 1. Spring Security 사용자권한 처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - - System.out.println("===========isAuthenticated===========0"); - System.out.println(isAuthenticated); - - if (!isAuthenticated) { // 로그인이 안되었을경우 - if (session.getAttribute("pageType") != null) { // 사용자 로그인 추가 - if ("web".equals((String) session.getAttribute("pageType"))) { - // pageType(Web은 사용자 이외는 관리자) - if (savedRequest != null) { - session.setAttribute("beforeUrl", savedRequest.getRedirectUrl()); - /* return "redirect:/web/user/login/login.do"; */ - redirectAttributes.addFlashAttribute("message", "로그인 후 이용해 주세요."); - return "redirect:/web/user/login/ssoLogin.do"; - } - } else { - return "redirect:/uat/uia/EgovLoginUsr.do"; - } - } - return "forward:/uat/uia/EgovLoginUsr.do"; // 로그아웃 경우(사용자는 uat/uia/actionMain.do 사용안함) - } - - // 외부 개발자 판단 여부 - SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - if (ssoLoginVO != null && "Y".equals(ssoLoginVO.getOtherUser())) { - return "redirect:/web/user/login/ssoSession.do"; - } - - System.out.println("===========actionMain===========1"); - System.out.println(session.getAttribute("pageType")); - - - if (session.getAttribute("pageType") != null) { - if ("web".equals((String) session.getAttribute("pageType"))) { // 사용자 - LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - // 강사 로그인 시 - // 청소년 강사 && 성인 강사 -> 청소년저작권강사 대시보드 - // 성인 강사 -> 성인저작권강사 대시보드 - // 로 redirect - if("ROLE_USER_MANAGER".equals(loginVO.getAuthority())) { - VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO(); - - vEInstrDetailVO.setUserId(loginVO.getUniqId()); - vEInstrDetailVO = vEInstrService.selectDetail(vEInstrDetailVO); - - session.setAttribute("pageType", null); - - if("Y".equals(vEInstrDetailVO.getTngrInstrYn())) { - - //청소년 강사 대시보드 - return "redirect:/web/ve/instr/tngrVisitEdu/instrInfo/instrDashboard.do"; - }else if ("Y".equals(vEInstrDetailVO.getAdultInstrYn())) { - //성인 강사 대시보드 - return "redirect:/web/ve/instr/adultVisitEdu/instrInfo/instrDashboard.do"; - } - } - - if (session.getAttribute("beforeSiteUrl") != null) { // 사용자 메인 - String tempSessionUrl = (String) session.getAttribute("beforeSiteUrl"); -// tempSessionUrl = tempSessionUrl.replace("/offedu", ""); - session.setAttribute("pageType", null); - session.setAttribute("beforeSiteUrl", null); - - if("".equals(tempSessionUrl)) { - return "redirect:/"; - } - - return "redirect:" + tempSessionUrl; - /*return "redirect:/";*/ - } else { - /*System.out.println(savedRequest.getRedirectUrl());*/ - session.setAttribute("pageType", null); - return "redirect:/web/main/mainPage.do"; - } - } - } - - // e-배움터 연동 로그인 시 - LoginVO 세션의 return url로 이동 - try { - LoginVO eEduLoginVO = (LoginVO) session.getAttribute("LoginVO"); - if(eEduLoginVO != null) { - if(eEduLoginVO.getUrl() != null) { - return "redirect:" + eEduLoginVO.getUrl(); - } - } - }catch(Exception ex) { - ex.printStackTrace(); - } - - - // 관리자 로그인 시 - LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - - - System.out.println("===========actionMain===========2"); - System.out.println(loginService.getUserAuth(user).getAuthority()); - System.out.println(user.getAuthority()); - - if ("ROLE_ADMIN".equals(loginService.getUserAuth(user).getAuthority())) { // 수퍼관리자 경우 - //return "redirect:/cmm/main/mainPage.do"; - return "redirect:/kccadr/oprtn/tngrVisitEdu/areaLctrMngList.do"; - } else if ("ROLE_USER_MANAGER".equals(user.getAuthority())) { - return "redirect:/web/main/mainPage.do"; - } else if ("ROLE_VISIT".equals(user.getAuthority())) { - return "redirect:/cmm/main/mainPage.do"; - } else if ("ROLE_USER_MEMBER".equals(user.getAuthority())) { - System.out.println("비정상적인 사용자 redirect 임"); - return "redirect:/web/main/mainPage.do"; - } else { // 일반관리자 경우 - return "redirect:/EgovTopPageLink.do?link=/cop/bbs/SelectBBSMasterInfs.do&baseMenuNo=4300000"; - } - } - - /** - * (관리자)로그아웃한다. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/uat/uia/actionLogout.do") - public String selectActionLogout(HttpServletRequest request, ModelMap model, HttpServletResponse response) throws Exception { - request.getSession().invalidate(); - return "redirect:/uat/uia/EgovLoginUsr.do"; - } - - /** - * (사용자)로그아웃한다. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/web/uat/uia/actionLogout.do") - public String selectActionLogoutWeb(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - - SsoAgentInfo ssoagentinfo = new SsoAgentInfo(); - - String client_ip = "127.0.0.1"; - - if (!ProfileUtil.isLocal()) { - // SsoLoginVO 세션 정보 취득 - SsoLoginVO ssoLoginVO = new SsoLoginVO(); - HttpSession session = request.getSession(); - /*ssologin에서 e배움터 API 로그인으로 변경*/ - /*ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); - if (ssoLoginVO != null) { - if (!"USRCNFRM_00000002940".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002941".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002942".equals(ssoLoginVO.getMembId()) - || !"USRCNFRM_00000002943".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002944".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002550".equals(ssoLoginVO.getMembId()) - || !"USRCNFRM_00000002542".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002541".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002540".equals(ssoLoginVO.getMembId()) - || !"USRCNFRM_00000002533".equals(ssoLoginVO.getMembId())) { - BandiSSOAgent agent = new BandiSSOAgent(ssoUri, clientId, clientSecret, scope); - BandiSSOAgent agent = new BandiSSOAgent(ssoagentinfo.getSsoUri(), ssoagentinfo.getClientId(), ssoagentinfo.getClientSecret(), ssoagentinfo.getScope()); - - // sso 로그아웃 - agent.logout(ssoLoginVO.getAccess_token(), client_ip); - } - }*/ - } - - // Spring Security 로그아웃 - Authentication auth = SecurityContextHolder.getContext().getAuthentication(); - if (auth != null) { - new SecurityContextLogoutHandler().logout(request, response, auth); - } - - // 세션 제거 - request.getSession().invalidate(); - - return "redirect:/web/main/mainPage.do"; - } - - /* 캡차 테스트 */ - @RequestMapping(value = "/captcha/captchaTest.do") - public String captchaTest(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model) throws Exception { - return "cmm/chptcha/captchaTest"; - } - - /* 캡차 이미지 */ - @RequestMapping(value = "/captcha/captchaImg.do") - public String captchaImg1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - - return "cmm/chptcha/captchaImg"; - } - - /* 캡차 오디오 */ - @RequestMapping(value = "/captcha/captchaAudio.do") - public String captchaAudio1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - return "cmm/chptcha/captchaAudio"; - } - - /* 캡차 submit */ - @RequestMapping(value = "/captcha/captchaSubmit.do") - public ModelAndView captchaSubmit(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - String answer = (String) commandMap.get("answer"); - String captcha = (String) request.getSession().getAttribute("captcha"); - String message = "캡차 입력값이 일치하지 않습니다."; - if (answer != null && !"".equals(answer)) { - if (answer.equals(captcha)) { - message = "캡차 입력값이 일치합니다."; - } - } - modelAndView.addObject("message", message); - return modelAndView; - } - - /* 캡차 이미지 */ - @RequestMapping(value = "captchaImg.do") - public void cpatchaImg(HttpServletRequest request, HttpServletResponse response) throws Exception { - new CaptchaUtil().captchaImg(request, response); - } - - @RequestMapping(value = "captchaAudio.do") - public void cpatchaAudio(HttpServletRequest request, HttpServletResponse response) throws Exception { - new CaptchaUtil().captchaAudio(request, response); - } - - /** - * 로그인 후 메인화면으로 들어간다 - * - * @param - * @return 로그인 페이지 - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/actionLoign.do") - public String siteActionMain(@PathVariable("siteId") String siteId, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) throws Exception { - - // initial target url. 첫 호출 URL - SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); - String initialTargetUrl = ""; - if (savedRequest != null) { - initialTargetUrl = savedRequest.getRedirectUrl(); - } - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - - // 1. Spring Security 사용자권한 처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) { - // model.addAttribute("message", - // egovMessageSource.getMessage("fail.common.login")); - - if ("linc".equals(siteId) || "klc".equals(siteId)) { - return "web/" + siteFolder + "/main/MemberLogin"; - } else { - SiteManagerVO siteManagerVO = new SiteManagerVO(); - siteManagerVO.setSiteId(siteId); - setSiteinfo(siteManagerVO, model, request); - // return - // "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/main/MemberLogin"; - return "web/site/" + siteId + "/" + siteManagerVO.getIsMobile() + "/main/MemberLogin"; - } - } - - LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - if (null != loginVO && !"super".equals(loginVO.getSiteId())) { // 리스트, 수정, 입력 - if (siteId.equals(loginVO.getSiteId())) { // 사이트 아이디가 다르면 - session.setAttribute("pageType", "web"); - return "web/" + siteFolder + "/main/MemberLogin"; - } - } - - // 2. 메인 페이지 이동 - return "forward:/" + siteId + "/web/main/mainPage.do"; - } - - /** - * 일반사용자 (스프링 시큐리티) 로그인을 처리한다 - * - * @param vo - 아이디, 비밀번호가 담긴 LoginVO - * @param request - 세션처리를 위한 HttpServletRequest - * @return result - 로그인결과(세션정보) - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/actionSecurityLogin.do") - public String selectActionSiteSecurityLogin(@PathVariable("siteId") String siteId, @ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, - ModelMap model) throws Exception { - // 로그인 정보 check - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - if (loginVO.getId() == null || loginVO.getPassword() == null) { - return "web/" + siteFolder + "/main/MemberLogin"; - } - - // 1. 일반 로그인 처리(사이트) - LoginVO resultVO = loginService.siteActionLogin(loginVO); - // 접속IP - String userIp = EgovClntInfo.getClntIP(request); - if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { - // 세션에다 ip 등록 - resultVO.setIp(userIp); - // 2. spring security 연동 - request.getSession().setAttribute("LoginVO", resultVO); - request.getSession().setAttribute("pageType", "web"); - UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); - ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); - Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); - if (beans.size() > 0) { - springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; - springSecurity.setUsernameParameter("egov_security_username"); - springSecurity.setPasswordParameter("egov_security_password"); - springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); - - } else { - throw new IllegalStateException("No AuthenticationProcessingFilter"); - } - - System.out.println("==17=1="); - - springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); - - try{ - System.out.println("==17=1="); - System.out.println("EgovUserDetailsHelper.isAuthenticated()"); - System.out.println(EgovUserDetailsHelper.isAuthenticated()); - }catch(Exception ex){ - ex.printStackTrace(); - } - - return "blank"; // action.do 에서 일반사용자 분기처리 - } else { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "web/" + siteFolder + "/main/MemberLogin"; - } - } - - /** - * (사용자) 아이디 찾기. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/findUserId.do") - public String findUserId(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - return "web/site/kcc/login/findUserId"; - } - - /** - * (사용자) 비밀번호 찾기. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/findPassword.do") - public String findPassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - return "web/site/kcc/login/findPassword"; - } - - /** - * (사용자) 아이디 비밀번호 안내. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/findView.do") - public String findView(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/cmm/main/mainPage.do"; - - return "web/site/kcc/login/findView"; - } - - /** - * (사용자) 비밀번호 변경 화면. - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/changePassword.do") - public String changePassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/cmm/main/mainPage.do"; - - return "web/site/kcc/login/changePassword"; - } - - @RequestMapping(value = "/{siteId}/web/user/join/snsLink.do") - public String snsLink(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) { - String siteId = (String) session.getAttribute("siteId"); - model.addAttribute("loginVO", loginVO); - return "web/site/" + siteId + "/login/snsLinkPage"; - } - - @RequestMapping(value = "/{siteId}/web/user/join/snsLinkUpdate.do") - public String snsLinkUpdate(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) throws Exception { - String siteId = (String) session.getAttribute("siteId"); - String siteFolder = "site/" + siteId; - - loginService.updateSnsLink(loginVO); - - return "web/" + siteFolder + "/login/usrJoinComplete"; - } - - // (사용자) 회원가입 동의 화면 - @RequestMapping(value = "/{siteId}/web/user/join/usrJoinIntro.do") - public String usrJoinIntro(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("loginVO") LoginVO loginVO, - ModelMap model) throws Exception { - - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - model.addAttribute("site_path", "/" + siteFolder); - - MberManageConfigVO mberConfigVO = new MberManageConfigVO(); // 회원가입 환경설정 - mberConfigVO.setUseYn("Y"); // 사용하는것만 - mberConfigVO.setIsSns("N"); - mberConfigVO.setSiteId(siteId); - List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); - model.addAttribute("mberManageCnfList", mberManageCnfList); - model.addAttribute("loginVO", loginVO); - - // 약관가져오기 - SiteManagerVO termsVO = new SiteManagerVO(); - termsVO.setSiteId(siteId); - termsVO = egovSiteManagerService.selectSiteManagerVO(termsVO); - if (null != termsVO) { - if (!"N".equals(termsVO.getTermsYn())) { - model.addAttribute("termsVO", termsVO); - } - } - return "web/" + siteFolder + "/login/usrJoinIntro"; - - } - - // (사용자) 회원가입 화면 - @RequestMapping(value = "/{siteId}/web/user/join/usrJoinRegist.do") - public String usrJoinView(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, - @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - model.addAttribute("site_path", "/" + siteFolder); - return "web/" + siteFolder + "/login/usrJoinRegist"; - } - - /** - * (사용자) 회원가입 처리 - * - * @return String - * @exception Exception - */ - @RequestMapping(value = "/{siteId}/web/user/join/usrJoinInsert.do") - public String usrJoinInsert(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserGuestVO userManageVO, HttpServletRequest request, HttpServletResponse response, - ModelMap model, @RequestParam Map commandMap, RedirectAttributes redirectAttributes) throws Exception { - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (isAuthenticated) - return "redirect:/{siteId}/web/main/mainPage.do"; - - model.addAttribute("siteId", siteId); - String siteFolder = "site/" + siteId; - model.addAttribute("site_path", "/" + siteFolder); - -// UserVO userVO = (UserVO) request.getSession().getAttribute("selfauthUserVO"); -// // 본인인증 정보가 없거나, 인증정보와 번호가 다를때 -// if (userVO == null || !userManageVO.getMoblphonNo().equals(userVO.getMblNum())) { -// model.addAttribute("message", "비 정상적인 접근입니다. 본인인증을 해주세요."); -// return "web/login/usrJoinRegist"; -// } -// request.getSession().setAttribute("selfauthUserVO", null); - - // 본인인증 데이터 -// userManageVO.setEmplyrNm(userVO.getName()); -// userManageVO.setBrth(userVO.getBirYMD()); -// userManageVO.setMblDn(userVO.getMblDn()); -// userManageVO.setMoblphonNo(userVO.getMblNum()); - - // 기 가입된 휴대폰번호인지 확인 -// LoginVO vo = new LoginVO(); -// vo.setMblDn(userVO.getMblDn()); -// vo = loginService.searchIdByMblDn(vo); -// -// if (vo != null && vo.getId() != null) { -// } - - if (1 == 2) { - model.addAttribute("message", "이미 가입된 휴대폰 번호입니다."); - return "web/" + siteFolder + "/login/usrJoinRegist"; - } - - userManageVO.setAuthorCode("ROLE_GNRL_USER"); - userManageVO.setJoinType("2"); // 직접가입:2 - userManageVO.setCondition("1"); // 정상:1, 휴면:2, 탈퇴:3 - userManageVO.setUseYn("0"); // 사용:0 - - userManageService.insertUser(userManageVO); - - return "web/" + siteFolder + "/login/usrJoinComplete"; - } - - /** - * (사용자) 아이디 중복 확인 - * - * @return model - * @throws Exception - */ - @RequestMapping(value = "{siteId}/web/user/join/usrIdDplctCnfirmAjax.do") - public ModelAndView usrIdDplctCnfirmAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - String checkId = (String) commandMap.get("checkId"); - // checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); - - int usedCnt = userManageService.checkIdDplct(checkId); - modelAndView.addObject("usedCnt", usedCnt); - modelAndView.addObject("checkId", checkId); - - return modelAndView; - } - - /** - * (사용자) ID 찾기 - * - * @return model - * @throws Exception - */ - @RequestMapping(value = "{siteId}/web/user/join/selectUserIdAjax.do") - public ModelAndView selectUserIdAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - List usedNmList = userManageService.selectUserIdAjax(userManageVO); - - modelAndView.addObject("usedNmList", usedNmList); - return modelAndView; - } - - /** - * (사용자) password 찾기 - * - * @return model - * @throws Exception - */ - @RequestMapping(value = "{siteId}/web/user/join/selectUserPWAjax.do") - public ModelAndView selectPasswordAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - int usedCnt = userManageService.selectUserPWAjax(userManageVO); - - if (usedCnt > 0) { - String id = userManageVO.getEmplyrId() + "!!"; - userManageVO.setPassword(id); - userManageService.updateUserPWAjax(userManageVO); - } - modelAndView.addObject("usedCnt", usedCnt); - return modelAndView; - } - - private void setSiteinfo(SiteManagerVO siteManagerVO, ModelMap model, HttpServletRequest request) throws Exception { - SiteManagerVO tempSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO); - if (tempSiteManagerVO != null) { - siteManagerVO.setIsMobile("pc"); - siteManagerVO.setTheme(tempSiteManagerVO.getTheme()); - } else { - siteManagerVO.setTheme("01"); - } - WebUtil util = new WebUtil(); - if (util.isMobile(request)) { - siteManagerVO.setIsMobile("mobile"); - } - model.addAttribute("siteId", siteManagerVO.getSiteId()); - // model.addAttribute("site_path" , - // "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()); - model.addAttribute("site_path", "/site/" + siteManagerVO.getSiteId() + "/" + siteManagerVO.getIsMobile()); - } - - /** - * 복호화 - * - * @param privateKey - * @param securedValue - * @return - * @throws Exception - */ - /* - * private String decryptRsa(PrivateKey privateKey, String securedValue) throws - * Exception { Cipher cipher = - * Cipher.getInstance(EgovLoginController.RSA_INSTANCE); byte[] encryptedBytes = - * hexToByteArray(securedValue); cipher.init(Cipher.DECRYPT_MODE, privateKey); - * byte[] decryptedBytes = cipher.doFinal(encryptedBytes); String decryptedValue - * = new String(decryptedBytes, "utf-8"); // 문자 인코딩 주의. return decryptedValue; } - */ - - /** - * 16진 문자열을 byte 배열로 변환한다. - * - * @param hex - * @return - */ - public static byte[] hexToByteArray(String hex) { - if (hex == null || hex.length() % 2 != 0) { - return new byte[] {}; - } - - byte[] bytes = new byte[hex.length() / 2]; - for (int i = 0; i < hex.length(); i += 2) { - byte value = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); - bytes[(int) Math.floor(i / 2)] = value; - } - return bytes; - } - - /** - * rsa 공개키, 개인키 생성 - * - * @param request - */ - /* - * public void initRsa(HttpServletRequest request) { HttpSession session = - * request.getSession(); - * - * KeyPairGenerator generator; try { generator = - * KeyPairGenerator.getInstance(EgovLoginController.RSA_INSTANCE); - * generator.initialize(1024); - * - * KeyPair keyPair = generator.genKeyPair(); KeyFactory keyFactory = - * KeyFactory.getInstance(EgovLoginController.RSA_INSTANCE); PublicKey publicKey - * = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); - * - * session.setAttribute(EgovLoginController.RSA_WEB_KEY, privateKey); // - * session에 RSA 개인키를 세션에 저장 - * - * RSAPublicKeySpec publicSpec = (RSAPublicKeySpec) - * keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class); String - * publicKeyModulus = publicSpec.getModulus().toString(16); String - * publicKeyExponent = publicSpec.getPublicExponent().toString(16); - * - * request.setAttribute("RSAModulus", publicKeyModulus); // rsa modulus 를 - * request 에 추가 request.setAttribute("RSAExponent", publicKeyExponent); // rsa - * exponent 를 request 에 추가 } catch (Exception e) { // TODO Auto-generated catch - * block e.printStackTrace(); } } - */ - - // 사용자 에러페이지 표시후 로그인 페이지로 - private String goUserLoginPage(RedirectAttributes redirectAttributes, HttpServletRequest request, ModelMap model, String alertMessage) { - redirectAttributes.addFlashAttribute("message", alertMessage); - return "redirect:/"; - } - - /* SNS 추가 내역 */ - - @RequestMapping(value = "/snsLogin/naverOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) - public String naverRedirect(Model model, @RequestParam("code") String code, @RequestParam String state, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { - - String siteId = (String) session.getAttribute("siteId"); - JsonNode node = getAccessToken("naver", code, state); - - // 결과값 출력 - System.out.println("node : " + node); - - // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 - String token = node.get("access_token").toString(); - - // 세션에 담아준다. - session.setAttribute("token", token); - JsonNode userInfo = getUserInfo("naver", node.get("access_token")); - JsonNode response = userInfo.path("response"); - - String id = response.path("id").asText(); - String name = response.path("name").asText(); - String snsEmail = response.path("email").asText(); - - LoginVO loginVO = new LoginVO(); - loginVO.setSnsId(id); - loginVO.setName(name); - loginVO.setSnsEmail(snsEmail); - loginVO.setSnsSite("naver"); - model.addAttribute("loginVO", loginVO); - return "web/login/EgovUserSNSLogin"; - } - - @RequestMapping(value = "/snsLogin/kakaoOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) - public String kakaoRedirect(Model model, @RequestParam("code") String code, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { - JsonNode node = getAccessToken("kakao", code, ""); - - // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 - String token = node.get("access_token").toString(); - // 세션에 담아준다. - session.setAttribute("token", token); - JsonNode userInfo = getUserInfo("kakao", node.get("access_token")); - - String id = userInfo.path("id").asText(); - String name = userInfo.path("name").asText(); - String snsEmail = userInfo.path("email").asText(); - - // 유저정보 카카오에서 가져오기 Get properties - JsonNode properties = userInfo.path("properties"); - JsonNode kakao_account = userInfo.path("kakao_account"); - - id = userInfo.path("id").asText(); - name = null; - snsEmail = null; - - name = properties.path("nickname").asText(); - snsEmail = kakao_account.path("email").asText(); - - LoginVO loginVO = new LoginVO(); - loginVO.setSnsId(id); - loginVO.setName(name); - loginVO.setSnsEmail(snsEmail); - loginVO.setSnsSite("kakao"); - model.addAttribute("loginVO", loginVO); - -// return "forward:/"+siteId+"/web/user/login/actionSecurityLogin.do?snsnsId="+id+"&name="+name+"&email="+email+"&snsSite=kakao"; - return "web/login/EgovUserSNSLogin"; - - } - - public JsonNode getAccessToken(String site, String code, String state) { - - String RequestUrl = ""; - List postParams = new ArrayList(); - - if (site.equals("kakao")) { - RequestUrl = "https://kauth.kakao.com/oauth/token"; - postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); - postParams.add(new BasicNameValuePair("client_id", itnKakaoRestApiKey)); - postParams.add(new BasicNameValuePair("code", code)); - - } else if (site.equals("naver")) { - RequestUrl = "https://nid.naver.com/oauth2.0/token"; - - postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); - postParams.add(new BasicNameValuePair("client_id", itnNaverClientId)); - postParams.add(new BasicNameValuePair("client_secret", itnNaverClientSecret)); - postParams.add(new BasicNameValuePair("code", code)); - postParams.add(new BasicNameValuePair("state", state)); - - } else if (site.equals("google")) { - - } - - final HttpClient client = HttpClientBuilder.create().build(); - final HttpPost post = new HttpPost(RequestUrl); - - JsonNode returnNode = null; - - try { - post.setEntity(new UrlEncodedFormEntity(postParams)); - final HttpResponse response = client.execute(post); - final int responseCode = response.getStatusLine().getStatusCode(); - - // JSON 형태 반환값 처리 - ObjectMapper mapper = new ObjectMapper(); - returnNode = mapper.readTree(response.getEntity().getContent()); - - } catch (UnsupportedEncodingException e) { - System.out.println("UnsupportedEncodingException Occured!!!"); - } catch (ClientProtocolException e) { - System.out.println("ClientProtocolException Occured!!!"); - } catch (IOException e) { - System.out.println("IOException Occured!!!"); - } finally { - } - return returnNode; - } - - public JsonNode getUserInfo(String site, JsonNode accessToken) { - - // String CLIENT_ID = K_CLIENT_ID; // REST API KEY - // String REDIRECT_URI = K_REDIRECT_URI; // 리다이렉트 URI - // String code = autorize_code; // 로그인 과정중 얻은 토큰 값 - String RequestUrl = ""; - - if (site.equals("kakao")) { - RequestUrl = "https://kapi.kakao.com/v2/user/me"; - - } else if (site.equals("naver")) { - RequestUrl = "https://openapi.naver.com/v1/nid/me"; - - } else if (site.equals("google")) { - - } - - final HttpClient client = HttpClientBuilder.create().build(); - final HttpPost post = new HttpPost(RequestUrl); - - // add header - post.addHeader("Authorization", "Bearer " + accessToken); - - JsonNode returnNode = null; - - try { - final HttpResponse response = client.execute(post); - final int responseCode = response.getStatusLine().getStatusCode(); - // JSON 형태 반환값 처리 - ObjectMapper mapper = new ObjectMapper(); - returnNode = mapper.readTree(response.getEntity().getContent()); - - } catch (UnsupportedEncodingException e) { - System.out.println("UnsupportedEncodingException Occured!!!"); - } catch (ClientProtocolException e) { - System.out.println("ClientProtocolException Occured!!!"); - } catch (IOException e) { - System.out.println("IOException Occured!!!"); - } finally { - // clear resources - } - return returnNode; - } - -} - -class RequestWrapperForSecurity extends HttpServletRequestWrapper { - private String username = null; - private String password = null; - - public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) { - super(request); - this.username = username; - this.password = password; - } - - @Override - public String getServletPath() { - return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; - } - - @Override - public String getRequestURI() { - return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; - } - - @Override - public String getParameter(String name) { - if (name.equals("egov_security_username")) { - return username; - } - - if (name.equals("egov_security_password")) { - return password; - } - - return super.getParameter(name); - } +package kcc.let.uat.uia.web; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.net.URLEncoder; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.annotation.Resource; +import javax.script.ScriptEngineManager; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicNameValuePair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.security.web.savedrequest.HttpSessionRequestCache; +import org.springframework.security.web.savedrequest.SavedRequest; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.bandi.oauth.BandiSSOAgent; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import egovframework.rte.fdl.cmmn.trace.LeaveaTrace; +import egovframework.rte.fdl.property.EgovPropertyService; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import egovframework.rte.psl.dataaccess.util.EgovMap; +import kcc.com.cmm.EgovMessageSource; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.captcha.CaptchaUtil; +import kcc.com.cmm.spring.data.util.ProfileUtil; +import kcc.com.cmm.util.WebUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.cmm.service.SMSOracleService; +import kcc.let.sym.log.clg.service.EgovLoginLogService; +import kcc.let.sym.log.clg.service.LoginLog; +import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO; +import kcc.let.sym.site.service.EgovSiteManagerService; +import kcc.let.sym.site.service.SiteManagerVO; +import kcc.let.uat.uap.service.EgovLoginPolicyService; +import kcc.let.uat.uap.service.LoginPolicyVO; +import kcc.let.uat.uia.service.EgovLoginService; +import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.uss.umt.service.EgovMberManageService; +import kcc.let.uss.umt.service.EgovUserManageService; +import kcc.let.uss.umt.service.MberManageConfigVO; +import kcc.let.uss.umt.service.UserDefaultVO; +import kcc.let.uss.umt.service.UserGuestVO; +import kcc.let.uss.umt.service.UserManageVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.let.utl.sim.service.EgovClntInfo; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrService; + +/** + * 일반 로그인, 인증서 로그인을 처리하는 컨트롤러 클래스 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자          수정내용
+ *  -------    --------    ---------------------------
+ *  2009.03.06  박지욱          최초 생성
+ *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
+ *
+ *      
+ */ +@Controller +public class EgovLoginController { + +// static String RSA_WEB_KEY = "_RSA_WEB_Key_"; // 개인키 session key +// static String RSA_INSTANCE = "RSA"; // rsa transformation + private static final Logger LOGGER = LoggerFactory.getLogger(EgovLoginController.class); + + /** 네이버 인증 관련 */ + @Value("#{globalSettings['Globals.kcc.naver.clentId']}") + private String itnNaverClientId; + @Value("#{globalSettings['Globals.kcc.naver.clientSecret']}") + private String itnNaverClientSecret; + @Value("#{globalSettings['Globals.kcc.naver.returnUrl']}") + private String itnNaverReturnUrl; + + /** 카카오 인증 관련 */ + @Value("#{globalSettings['Globals.kcc.kakao.restApiKey']}") + private String itnKakaoRestApiKey; + @Value("#{globalSettings['Globals.kcc.kakao.returnUrl']}") + private String itnKakaoReturnUrl; + + /** SSO return URL */ + @Value("#{globalSettings['Globals.sso.returnSiteUrl']}") + private String returnSiteUrlGlobal; + @Value("#{globalSettings['Globals.sso.returnSiteCode']}") + private String returnSiteCodeGlobal; + + /** SSO 회원관련 URL */ + @Value("#{globalSettings['Globals.sso.joinUrl']}") + private String joinUrl_Global; + @Value("#{globalSettings['Globals.sso.modifyUrl']}") + private String modifyUrl_Global; + @Value("#{globalSettings['Globals.sso.idFindUrl']}") + private String idFindUrl_Global; + @Value("#{globalSettings['Globals.sso.pwFindUrl']}") + private String pwFindUrl_Global; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + /** EgovLoginService */ + @Resource(name = "loginService") + private EgovLoginService loginService; + + /** EgovMessageSource */ + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + /** EgovLoginPolicyService */ + @Resource(name = "egovLoginPolicyService") + EgovLoginPolicyService egovLoginPolicyService; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + /** TRACE */ + @Resource(name = "leaveaTrace") + LeaveaTrace leaveaTrace; + + @Resource(name = "EgovLoginLogService") + private EgovLoginLogService loginLogService; + + @Resource(name = "egovSiteManagerService") + private EgovSiteManagerService egovSiteManagerService; + + /** userManageService */ + @Resource(name = "userManageService") + private EgovUserManageService userManageService; + + /** mberManageService */ + @Resource(name = "mberManageService") + private EgovMberManageService mberManageService; + + @Resource(name = "SMSOracleService") + private SMSOracleService sMSOracleService; + + //강사 정보 + @Resource(name="vEInstrService") + private VEInstrService vEInstrService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + /** 구동 환경 */ + @Value("#{property['Globals.prod.islocal']}") + private String environment; + + + /* + *//** + * (관리자)로그인 화면으로 들어간다 + * + * @param vo - 로그인후 이동할 URL이 담긴 LoginVO + * @return 로그인 페이지 + * @exception Exception + *//* + * @RequestMapping(value = "/uat/uia/egovLoginUsr.do") public String + * loginUsrView(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletRequest + * request, HttpServletResponse response, ModelMap model) throws Exception { + * return "uat/uia/EgovLoginUsr"; } + */ + + /** + * (관리자) 로그인 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/EgovLoginUsr.do") + public String adminLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + System.out.println("==start="); + + if (isAuthenticated) + return "redirect:/cmm/main/mainPage.do"; +// initRsa(request); + + System.out.println("==end="); + + // 로그인 페이지 IP 체크 + List loginPolicyGroupList = new ArrayList(); + LoginPolicyVO loginPolicyVOCheck = new LoginPolicyVO(); + String userIpCheck = EgovClntInfo.getClntIP(request); + 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; +// } +// } +// } + + // 1. Spring Security 사용자권한 처리 +// if (!ipCheck) { +// return "/cmm/error/ipFailure"; +// } + if (!isAuthenticated) { + // model.addAttribute("message", + // egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + return "uat/uia/EgovLoginUsr"; + } + + /** + * (사용자) 로그인 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/login.do") + public String userLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + + // sns 회원가입 key 값 설정 + String naverClientId = itnNaverClientId; + String naverClientSecret = itnNaverClientSecret; + + String kakaoRestApiKey = itnKakaoRestApiKey; + String kakaoReturnUrl = itnKakaoReturnUrl; + + // config 정보 가져오기 + MberManageConfigVO mberConfigVO = new MberManageConfigVO(); + + List mberManageCnfVO = mberManageService.selectMberCnf(mberConfigVO); + + for (int i = 0; i < mberManageCnfVO.size(); i++) { + if (mberManageCnfVO.get(i).getIsSns().equals("Y")) { + if (mberManageCnfVO.get(i).getUseYn().equals("Y")) { + if (mberManageCnfVO.get(i).getConfigId().equals("snsNaver")) { + String redirectURI = URLEncoder.encode(itnNaverReturnUrl, "UTF-8"); + SecureRandom random = new SecureRandom(); + BigInteger state = new BigInteger(130, random); + String naver_url = "https://nid.naver.com/oauth2.0/authorize?response_type=code"; + naver_url += "&client_id=" + itnNaverClientId; + naver_url += "&redirect_url=" + redirectURI; + naver_url += "&state=" + state; + mberManageCnfVO.get(i).setSiteUrl(naver_url); + mberManageCnfVO.get(i).setSiteIcon("/img/login_naver_icon.png"); + + } else if (mberManageCnfVO.get(i).getConfigId().equals("snsKakao")) { + + String kakao_url = "https://kauth.kakao.com/oauth/authorize?response_type=code"; + kakao_url += "&client_id=" + kakaoRestApiKey; + kakao_url += "&redirect_uri=" + kakaoReturnUrl; + mberManageCnfVO.get(i).setSiteUrl(kakao_url); + mberManageCnfVO.get(i).setSiteIcon("/img/login_kakao_icon.png"); + + } else if (mberManageCnfVO.get(i).getConfigId().equals("snsGoogle")) { + + } + } + } + } + model.addAttribute("mberManageCnfVO", mberManageCnfVO); + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); +// initRsa(request); + return "web/login/EgovLoginGnrlUsr"; + } + + /** + * (사용자) SSO 로그인 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoLogin.do") + public String ssoLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + /* + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + */ + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + String test = (String) commandMap.get("test"); + + // 실서버 적용시 바꾸기 + String returnSiteUrl = returnSiteUrlGlobal; + String returnSiteCode = returnSiteCodeGlobal; + String idFindUrl = idFindUrl_Global; + String pwFindUrl = pwFindUrl_Global; + String joinUrl = joinUrl_Global; + + model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); + model.addAttribute("returnSiteCode", returnSiteCode); + model.addAttribute("idFindUrl", idFindUrl); + model.addAttribute("pwFindUrl", pwFindUrl); + model.addAttribute("joinUrl", joinUrl); + + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); + model.addAttribute("environment", environment); + //로컬은 셀렉트박스 로그인 + //개발은 e배움터 개발서버 로그인 + //운영은 e배움터 운영서버 로그인 + if("dev".equals(environment)) { + return "redirect:http://223.255.205.7/user/member/loginForm.do?eduOff=Y"; + } + if("real".equals(environment)) { + return "redirect:https://edu-copyright.or.kr/user/member/loginForm.do?eduOff=Y"; + } +// initRsa(request); + if (test != null && test.equals("test")) { + return "web/kccadr/login/SsoLoginUsr3"; + } else { + return "web/kccadr/login/SsoLoginUsr"; + } + } + + + /** + * 임시사용 - 개발서버에서 select방식 로그인을 유지하기 위한 + * + * @return String + * @exception Exception + */ + + /*231031.개발서버 selectbox 로그인용 임시 + 메소드 삭제*/ + @RequestMapping(value = "/web/user/login/ssoDevLogin.do") + public String ssoDevLogin(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if ("".equals(s_userCheckNInfo)) return "redirect:/web/main/mainPage.do"; + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + /* + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + */ + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + String test = (String) commandMap.get("test"); + + // 실서버 적용시 바꾸기 + String returnSiteUrl = returnSiteUrlGlobal; + String returnSiteCode = returnSiteCodeGlobal; + String idFindUrl = idFindUrl_Global; + String pwFindUrl = pwFindUrl_Global; + String joinUrl = joinUrl_Global; + + model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); + model.addAttribute("returnSiteCode", returnSiteCode); + model.addAttribute("idFindUrl", idFindUrl); + model.addAttribute("pwFindUrl", pwFindUrl); + model.addAttribute("joinUrl", joinUrl); + + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); + model.addAttribute("environment", environment); + //로컬은 셀렉트박스 로그인 + //개발은 e배움터 개발서버 로그인 + //운영은 e배움터 운영서버 로그인 +// initRsa(request); + if (test != null && test.equals("test")) { + return "web/kccadr/login/SsoLoginUsr3"; + } else { + return "web/kccadr/login/SsoLoginUsr"; + } + } + + @RequestMapping(value = "/web/user/oraSms/sendSms.do") + public String oraSmsSend() throws Exception { + + //if (ProfileUtil.isProd()) { + LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Start"); + //sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 + //AdjReqMgrVO adjReqMgrVO = new AdjReqMgrVO(); + //sMSOracleService.insertSmsSend(adjReqMgrVO); + //sMSOracleService.insertSmsSendTest(); + LOGGER.debug("@ prod @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@End"); + //} +// +// +// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); +// sMSOracleService.selectOracleTest(); // 연동 테스트. 콘솔 로그 확인 +// LOGGER.debug("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); + + return "redirect:/web/main/mainPage.do"; + } + + @RequestMapping(value = "/web/user/login/ssoLogin3.do") + public String ssoLogin3(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + // 로그인필요 URL 호출하여 온경우 + String beforeUrl = (String) commandMap.get("beforeUrl"); + String message = (String) commandMap.get("message"); + + // 실서버 적용시 바꾸기 + String returnSiteUrl = returnSiteUrlGlobal; + String returnSiteCode = returnSiteCodeGlobal; + + model.addAttribute("returnSiteUrl", (URLEncoder.encode(returnSiteUrl))); + model.addAttribute("returnSiteCode", returnSiteCode); + + model.addAttribute("beforeUrl", beforeUrl); + model.addAttribute("message", message); +// initRsa(request); + return "web/kccadr/login/ssoLogin3"; + } + + /** + * (사용자) 통합회원 회원탈퇴, 개인정보수정. + * + * @return String + * @exception Exception + */ + @SuppressWarnings("deprecation") + @RequestMapping(value = "/web/user/login/ssoUsrModify.do") + public String ssoUsrModify(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + // 실서버 적용시 바꾸기 + /*String returnSiteUrl = "http://219.240.88.15:8091/web/user/login/ssoUsrModifyResult.do";*/ + String returnSiteUrl = returnSiteUrlGlobal; + + ssoLoginVO.setReturnSiteUrl(URLEncoder.encode(returnSiteUrl)); + + model.addAttribute("ssoLoginVO", ssoLoginVO); + + return "web/kccadr/login/SsoUserModify"; + } + + /** + * (사용자) 통합회원 회원탈퇴, 개인정보수정. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoUsrModifyResult.do") + public String ssoUsrModifyResult(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam Map commandMap, HttpSession session) throws Exception { + + return "redirect:/"; + } + + /** + * (사용자) 외부 개발자용 세션등록 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoSession.do") + public String ssoSession(HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) + return "redirect:/web/main/mainPage.do"; + + SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + model.addAttribute("membSeq", ssoLoginVO.getMembSeq()); + + return "web/kccadr/login/SsoLoginSessionRegist"; + } + + /** + * (사용자) 외부 개발자용 세션등록. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/ssoSessionRegist.do") + public String ssoSessionRegist(@ModelAttribute("ssoLoginVO") SsoLoginVO ssoLoginVO, HttpServletRequest request, HttpServletResponse response, ModelMap model, HttpSession session) + throws Exception { + + request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); + + return "redirect:/web/main/mainPage.do"; + } + + /** + * (관리자) 일반(스프링 시큐리티) 로그인을 처리한다(관리자) + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionSecurityLogin.do") + public String selectActionSecurityLogin(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) + throws Exception { + + // Locale.setDefault(new Locale("en", "GB")); + Locale.setDefault(new Locale("ko", "Kr")); + + // 로그인 정보 check + if (loginVO.getId() == null || loginVO.getPassword() == null) { // 로그인 최초 화면 로딩 + // RSA 키 생성 +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } + + + loginVO.setId(loginVO.getId()); + loginVO.setPassword(loginVO.getPassword()); + + // 사용자일 경우 로그인 안되게 + if (null == loginService.getUserAuth(loginVO)) { // 아이디 없음. +// initRsa(request); + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } else { + if ("ROLE_USER_MEMBER".equals(loginService.getUserAuth(loginVO).getAuthority())) { // 일반사용자 로그인 +// initRsa(request); + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } else if ("ROLE_USER_MANAGER".equals(loginService.getUserAuth(loginVO).getAuthority())) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + } + + // 1. 로그인 처리 + LoginVO resultVO = loginService.actionLogin(loginVO); + + if (loginService.getUserAuth(resultVO) != null) { + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + } + + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } else { + if (resultVO.getPassMiss() > 5) { + model.addAttribute("message", "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } else { // 초기화 + loginService.updatePassMissReset(loginVO); + } + } + + // 2. 허용IP조회 + + boolean loginPolicyYn = false; + // String userIp = EgovClntInfo.getClntIP(request); + // 방화벽 아이피 조회 + + HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); + String userIp = req.getHeader("X-FORWARDED-FOR"); + if (userIp == null) { + userIp = req.getRemoteAddr(); + } + + System.out.println("--------userIp-------" + userIp + "-----------------"); + + LoginPolicyVO loginPolicyVO = new LoginPolicyVO(); + loginPolicyVO.setIpInfo(userIp); + +// boolean ipCheck = false; + /* boolean ipCheck = true; + List loginPolicyGroupList = new ArrayList(); + loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyAll(loginPolicyVO); + if (loginPolicyGroupList != null) { + for (LoginPolicyVO tempPolicyVO : loginPolicyGroupList) { + if (userIp.contains(tempPolicyVO.getIpInfo().trim())) { + ipCheck = true; + break; + } + } + } + + if (!ipCheck) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + }*/ + + // resultVO.siteId 의 각 로그인 ip를 조회함 + // if (resultVO != null && resultVO.getId() != null && + // !resultVO.getId().equals("") && loginPolicyYn) { + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + + request.getSession().setAttribute("LoginVO", resultVO); + + UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); + + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); + + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + + if (beans.size() > 0) { + + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); + + } else { + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + + System.out.println("==18=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==18=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + loginLog.setSiteId(user.getSiteId()); + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("adminId", user.getId()); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + } + } + + /* + * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); + * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); + * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("A"); + * loginLog.setDeviceType("P"); loginLog.setProgrmFileNm("adminLogin"); + * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); + */ + } + + System.out.println("forward:/uat/uia/actionMain.do"); + + return "forward:/uat/uia/actionMain.do"; // 성공 시 페이지.. (redirect 불가) + // 개인키 삭제 + // session.removeAttribute(EgovLoginController.RSA_WEB_KEY); + // return "blank"; // 성공 시 페이지.. (redirect 불가) + + } else { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); +// initRsa(request); + return "uat/uia/EgovLoginUsr"; + } + } + + /** + * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO ID/PW를 통한 로그인 처리) + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/actionSecurityLogin.do") + public String selectActionSecurityLoginWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, + RedirectAttributes redirectAttributes) throws Exception { + + ScriptEngineManager engine = new ScriptEngineManager(); + + // 로그인 정보 check + if (loginVO.getId() == null || loginVO.getPassword() == null) { + SsoLoginVO SsoLoginSessionChk = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + // SSOLoginVO 세션 체크 + if (SsoLoginSessionChk != null) { + + loginVO.setId(SsoLoginSessionChk.getMembId()); + loginVO.setPassword("1"); + } else { + model.addAttribute("message", "로그인을 다시 해주세요."); + // 로그인 페이지로 이동 + /*return "/web/kccadr/login/SsoLoginUsr";*/ + return "redirect:/web/user/login/ssoLogin.do"; + } + } + + SsoLoginVO ssologinVO = new SsoLoginVO(); + + /*231031.개발서버 selectbox 로그인용 임시 + isDev 삭제 처리*/ + if ((ProfileUtil.isLocal() || ProfileUtil.isTLocal() || ProfileUtil.isDev()) && "Y".equals(loginVO.getIsSelect())) { //비 sso login + + loginVO.setPassword("1"); + loginVO.setStatusAll("N"); + ssologinVO.setMembSeq(loginVO.getId()); //중요 + //loginVO = loginService.actionLogin(loginVO); + + //기존에 개발자 로그인은 selectbox와 mber_seq로 로그인 처리. + //e배움터 연동 후 mber_seq는 key로 사용하기 때문에 mber_id로 로그인 처리 과정 + //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 + loginVO = loginService.actionLoginMberId(loginVO); + + + //ssologinVO.setMembSeq(loginVO.getId()); //중요 + + //loginVO = loginService.actionLoginDev(loginVO); //개발자 아이디 선택 로그인시 + + //ssologinVO.setMembSeq(loginVO.getId()); //중요 + + ssologinVO.setMembId(loginVO.getEmail()); + + // ================== 이름 암호화로 나오는 문제 해결 ==================== + ssologinVO.setMembName(egovCryptoUtil.decrypt(loginVO.getName())); + + System.out.println("==================임시=================="); + // ==== 계속 암호화에 암호화가 되서 임시로 넣음 + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + ssologinVO.setMembName(egovCryptoUtil.decrypt(ssologinVO.getMembName())); + + + ssologinVO.setSexCode("M"); + ssologinVO.setMembEmail(loginVO.getEmail()); + ssologinVO.setMembCelnum(loginVO.getMembCelnum()); + ssologinVO.setMembBirth(loginVO.getMembBirth()); + + /* + * ssologinVO.setMembSmsRecpYn(loginVO.getMembSmsRecpYn()); + * ssologinVO.setMembEmailRecpYn(loginVO.getMembEmailRecpYn()); + * + * ssologinVO.setDispsettMembDivisCode(loginVO.getDispsettMembDivisCode()); + * ssologinVO.setCorpnum(loginVO.getCorpnum()); + * ssologinVO.setBuisnRegnum(loginVO.getBuisnRegnum()); + * ssologinVO.setCompTitle(loginVO.getCompTitle()); + */ + + session.setAttribute("SSOLoginVO", ssologinVO); + + } else { //sso login + + ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + String SsoLoginResult = ""; +/* if (ssologinVO == null) { + SSO로그인 및 SSOLoginVO 세선 생성 + SsoLogin ssoLogin = new SsoLogin(); + SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), loginVO.getPassword(), request); + } + if ("fail".equals(SsoLoginResult)) { + redirectAttributes.addAttribute("message", "아이디 비밀번호를 확인해 주세요."); + redirectAttributes.addFlashAttribute("message", "아이디 비밀번호를 확인해 주세요."); + return "redirect:/web/user/login/ssoLogin.do"; + }*/ + } + +// ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + /*if ("".equals(ssologinVO.getDispsettMembDivisCode())) { + 신청 관련코드 받아오면 처리 + System.out.println("조정분류코드 없음"); + + }*/ + + // 기존에 있던 회원이 아니면 DB에 일련번호 저장 + /* UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberSeq(ssologinVO.getMembSeq()); + userManageVO = userManageService.selectKccadrUser(userManageVO); + if (null == userManageVO) { + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + String result = userManageService.insertUser(tmpUserManageVO); + + userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); + }else { //기존에 있던 회원이라면 이름 최신화 + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + userManageService.updateUserNm(tmpUserManageVO); + }*/ + + /*loginVO.setId(userManageVO.getEmplyrId()); + loginVO.setPassword(userManageVO.getPassword()); +*/ + /* + * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 + * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert + */ + + loginVO.setUserSe("GNR"); + // 로그인 정보 check + + /* + * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 + * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO + * == null) { // RSA 키 생성 initRsa(request); return + * "redirect:/web/user/login/login.do"; } else { + * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); + * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + * loginVO.setMessage(pLoginVO.getMessage()); } } + */ + + // 관리자 유무 체크 + List authorities = (List) loginService.selectAuthorities(loginVO); + Boolean adminFlag = false; + for (EgovMap authority : authorities) { + // admin_auth_code 최하위 관리자 Roll 코드 + if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) + adminFlag = true; + } + + // 관리자 시 로그인 막기 + if (adminFlag) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + // RSA 키 생성 +// initRsa(request); + return "web/site/login/EgovLoginGnrlUsr"; + } + + // 1. 일반 로그인 처리 + LoginVO resultVO; + // 복호화 + + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + /* loginVO.setUserSe("GNR"); */ + resultVO = loginService.actionLogin(loginVO); + // 로그인 시 권한조회 + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + + System.out.println("==1=="); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + alertMessage = egovMessageSource.getMessage("fail.common.login"); + // 로그인 실패이면 메인페이지로 이동 + return goUserLoginPage(redirectAttributes, request, model, alertMessage); + } /* + * else{ if(resultVO.getPassMiss() > 5) { alertMessage = + * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return + * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else + * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } + */ + } + + boolean loginPolicyYn = true; + System.out.println("==12=="); + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + System.out.println("==13=="); + // LoginVO세션에 사용자 정보 넣기 + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembId(ssologinVO.getMembId()); + resultVO.setMembName(ssologinVO.getMembName()); + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembCi(ssologinVO.getMembCi()); + resultVO.setMembEmail(ssologinVO.getMembEmail()); + resultVO.setMembCelnum(ssologinVO.getMembCelnum()); + resultVO.setMembBirth(ssologinVO.getMembBirth()); + resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); + resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); + resultVO.setSexCode(ssologinVO.getSexCode()); + resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); + resultVO.setCorpnum(ssologinVO.getCorpnum()); + resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); + resultVO.setCompTitle(ssologinVO.getCompTitle()); + + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 + System.out.println("@@@@로그인VO:"+resultVO+"@@@@@@"); + UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); + + } else { + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + System.out.println("==14=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==14=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + + loginLog.setLoginId(uniqId); + loginLog.setLoginIp(ip); + loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O + loginLog.setErrOccrrAt("N"); + loginLog.setErrorCode(""); + // 로그인은 관리자, PC만 됨 + loginLog.setUserAt("U"); // 사용자 + loginLog.setDeviceType("P"); // PC + loginLog.setProgrmFileNm("adminLogin"); + loginLog.setMenuNm("관리자로그인"); + loginLogService.logInsertLoginLog(loginLog); + System.out.println("==15=0="); + } + +// session.setAttribute("beforeSiteUrl", request.getRequestURI()); + System.out.println("session.getAttributesession.getAttributesession.getAttributesession.getAttribute"); + loginVO.setBeforeUrl((String) request.getSession().getAttribute("beforeSiteUrl")); + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + System.out.println("==16=0="); + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + return "blank"; // 성공 시 페이지.. (redirect 불가) + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addAttribute("message", message); + return "redirect:/web/user/login/login.do"; + } + } + + /** + * (사용자) 일반(스프링 시큐리티) 로그인을 처리한다(SSO Token를 통한 로그인 처리) 통합회원 SSO 로그인 후 찾교시스템 배너 + * 클릭으로 로그인 + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + /* @RequestMapping(value = "/web/user/login/actionSecurityLoginToken.do") */ + @RequestMapping(value = "/kccadr/ssoLogin.do") + public String selectActionSecurityLoginTokenWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, + RedirectAttributes redirectAttributes) throws Exception { + + ScriptEngineManager engine = new ScriptEngineManager(); + + SsoLoginVO ssologinVO = new SsoLoginVO(); + ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + String SsoLoginResult = ""; + if( + request.getParameter("accessToken") == null + || request.getParameter("refreshToken") == null) { + System.out.println("토큰값 없음."); + return "redirect:/"; + } + + if (ssologinVO == null) { + /* SSO로그인 및 SSOLoginVO 세선 생성 */ + SsoLoginVO tmpssologinVO = new SsoLoginVO(); + + tmpssologinVO.setAccess_token(request.getParameter("accessToken")); + tmpssologinVO.setRefresh_token(request.getParameter("refreshToken")); + + SsoLoginResult = SsoTokenLogin.SsoTokenLogin(tmpssologinVO.getAccess_token(), tmpssologinVO.getRefresh_token(), request); + } + if ("fail".equals(SsoLoginResult)) { + model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); + return "redirect:/web/user/login/ssoLogin.do"; + } + + ssologinVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + + if ("".equals(ssologinVO.getDispsettMembDivisCode())) { + /* 신청 관련코드 받아오면 처리 */ + } + + // 기존에 있던 회원이 아니면 DB에 일련번호 저장 + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberSeq(ssologinVO.getMembSeq()); + userManageVO = userManageService.selectKccadrUser(userManageVO); + if (null == userManageVO) { + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setAuthorCode("ROLE_USER_MEMBER"); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + String result = userManageService.insertUser(tmpUserManageVO); + + userManageVO = userManageService.selectKccadrUser(tmpUserManageVO); + }else { //기존에 있던 회원이라면 이름 최신화 + UserManageVO tmpUserManageVO = new UserManageVO(); + tmpUserManageVO.setMberSeq(ssologinVO.getMembSeq()); + tmpUserManageVO.setEmplyrNm(ssologinVO.getMembName()); + tmpUserManageVO = egovCryptoUtil.encryptUserManageVO(tmpUserManageVO); + userManageService.updateUserNm(tmpUserManageVO); + } + + loginVO.setId(userManageVO.getEmplyrId()); + loginVO.setPassword(userManageVO.getPassword()); + + /* + * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 + * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert + */ + + loginVO.setUserSe("GNR"); + // 로그인 정보 check + + /* + * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 + * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO + * == null) { // RSA 키 생성 initRsa(request); return + * "redirect:/web/user/login/login.do"; } else { + * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); + * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + * loginVO.setMessage(pLoginVO.getMessage()); } } + */ + + // 관리자 유무 체크 + List authorities = (List) loginService.selectAuthorities(loginVO); + Boolean adminFlag = false; + for (EgovMap authority : authorities) { + // admin_auth_code 최하위 관리자 Roll 코드 + if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) + adminFlag = true; + } + + // 관리자 시 로그인 막기 + if (adminFlag) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + // RSA 키 생성 +// initRsa(request); + return "web/site/login/EgovLoginGnrlUsr"; + } + + // 1. 일반 로그인 처리 + LoginVO resultVO; + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + resultVO = loginService.actionLogin(loginVO); + // 로그인 시 권한조회 + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + alertMessage = egovMessageSource.getMessage("fail.common.login"); + // 로그인 실패이면 메인페이지로 이동 + return goUserLoginPage(redirectAttributes, request, model, alertMessage); + } /* + * else{ if(resultVO.getPassMiss() > 5) { alertMessage = + * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return + * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else + * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } + */ + } + + boolean loginPolicyYn = true; + + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + + // LoginVO세션에 사용자 정보 넣기 + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembId(ssologinVO.getMembId()); + resultVO.setMembName(ssologinVO.getMembName()); + resultVO.setMembSeq(ssologinVO.getMembSeq()); + resultVO.setMembCi(ssologinVO.getMembCi()); + resultVO.setMembEmail(ssologinVO.getMembEmail()); + resultVO.setMembCelnum(ssologinVO.getMembCelnum()); + resultVO.setMembBirth(ssologinVO.getMembBirth()); + resultVO.setMembSmsRecpYn(ssologinVO.getMembSmsRecpYn()); + resultVO.setMembEmailRecpYn(ssologinVO.getMembEmailRecpYn()); + resultVO.setSexCode(ssologinVO.getSexCode()); + resultVO.setDispsettMembDivisCode(ssologinVO.getDispsettMembDivisCode()); + resultVO.setCorpnum(ssologinVO.getCorpnum()); + resultVO.setBuisnRegnum(ssologinVO.getBuisnRegnum()); + resultVO.setCompTitle(ssologinVO.getCompTitle()); + + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 + UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); + + } else { + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + + System.out.println("==15=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==15=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + + loginLog.setLoginId(uniqId); + loginLog.setLoginIp(ip); + loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O + loginLog.setErrOccrrAt("N"); + loginLog.setErrorCode(""); + // 로그인은 관리자, PC만 됨 + loginLog.setUserAt("U"); // 사용자 + loginLog.setDeviceType("P"); // PC + loginLog.setProgrmFileNm("adminLogin"); + loginLog.setMenuNm("관리자로그인"); + loginLogService.logInsertLoginLog(loginLog); + } + + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + return "blank"; // 성공 시 페이지.. (redirect 불가) + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addAttribute("message", message); + return "redirect:/web/user/login/login.do"; + } + } + + /** + * (사용자) 외부 개발자용 로그인 처리 일반(스프링 시큐리티) 로그인을 처리한다 + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/web/user/login/actionSecurityLogin2.do") + public String selectActionSecurityLoginWeb2(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session, + RedirectAttributes redirectAttributes) throws Exception { + + ScriptEngineManager engine = new ScriptEngineManager(); + + /* + * //로그인 정보 check if(loginVO.getId() == null || loginVO.getPassword() == null){ + * SsoLoginVO SsoLoginSessionChk = + * (SsoLoginVO)session.getAttribute("SSOLoginVO"); //SSOLoginVO 세션 체크 + * if(SsoLoginSessionChk != null) { + * + * loginVO.setId(SsoLoginSessionChk.getMembId()); loginVO.setPassword("1"); + * }else { model.addAttribute("message", "로그인을 다시 해주세요."); //로그인 페이지로 이동 return + * "/web/kccadr/login/SsoLoginUsr"; } } + * + * SsoLoginVO ssologinVO = new SsoLoginVO(); ssologinVO = + * (SsoLoginVO)session.getAttribute("SSOLoginVO"); String SsoLoginResult = ""; + * if(ssologinVO == null) { SSO로그인 및 SSOLoginVO 세선 생성 SsoLogin ssoLogin = new + * SsoLogin(); SsoLoginResult = ssoLogin.SsoLogin(loginVO.getId(), + * loginVO.getPassword(), request); } if("fail".equals(SsoLoginResult)) { + * model.addAttribute("message", "아이디, 비밀번호를 확인해 주세요."); return + * "/web/user/login/ssoLogin.do"; } + * + * ssologinVO = (SsoLoginVO)session.getAttribute("SSOLoginVO"); + * + * if("".equals(ssologinVO.getDispsettMembDivisCode())) { 신청 관련코드 받아오면 처리 } + */ + + // 기존에 있던 회원이 아니면 DB에 일련번호 저장 + UserManageVO userManageVO = new UserManageVO(); + userManageVO.setMberSeq(loginVO.getMembSeq()); + userManageVO = userManageService.selectKccadrUser(userManageVO); + SsoLoginVO ssoLoginVO = new SsoLoginVO(); + ssoLoginVO.setOtherUser("Y"); + ssoLoginVO.setMembSeq(userManageVO.getMberSeq()); + request.getSession().setAttribute("SSOLoginVO", ssoLoginVO); + + loginVO.setId(userManageVO.getEmplyrId()); + loginVO.setPassword(userManageVO.getPassword()); + + /* + * ssoLoginVO에서 아이디와, 일련번호, 부가가입여부 체크해서 DB에 일치하는 정보가 있는지 체크하고 일치하면 통과, 없으면 + * ssoLoginVO에서 일련번호, 부가가입여부를 포함한 사용자 정보 DB에 insert + */ + + loginVO.setUserSe("GNR"); + // 로그인 정보 check + + /* + * if(loginVO.getId() == null || loginVO.getPassword() == null){ // 회원가입 시 로그인 + * 처리 LoginVO pLoginVO = (LoginVO)request.getAttribute("pLoginVO"); if (pLoginVO + * == null) { // RSA 키 생성 initRsa(request); return + * "redirect:/web/user/login/login.do"; } else { + * loginVO.setId(pLoginVO.getId()); loginVO.setPassword(pLoginVO.getPassword()); + * loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + * loginVO.setMessage(pLoginVO.getMessage()); } } + */ + + // 관리자 유무 체크 + List authorities = (List) loginService.selectAuthorities(loginVO); + Boolean adminFlag = false; + for (EgovMap authority : authorities) { + // admin_auth_code 최하위 관리자 Roll 코드 + if (authority.get("authorCode").equals(propertiesService.getString("admin_auth_code"))) + adminFlag = true; + } + + // 관리자 시 로그인 막기 + if (adminFlag) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + // RSA 키 생성 +// initRsa(request); + return "web/site/login/EgovLoginGnrlUsr"; + } + + // 1. 일반 로그인 처리 + LoginVO resultVO; + String password = loginVO.getPassword(); + loginVO.setId(loginVO.getId()); + loginVO.setPassword(password); + + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + /* loginVO.setUserSe("GNR"); */ + resultVO = loginService.actionLogin(loginVO); + // 로그인 시 권한조회 + resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + if (null == resultVO.getId()) { // 로그인 실패 + /* loginService.updatePassMissPlus(loginVO); */ + alertMessage = egovMessageSource.getMessage("fail.common.login"); + // 로그인 실패이면 메인페이지로 이동 + return goUserLoginPage(redirectAttributes, request, model, alertMessage); + } /* + * else{ if(resultVO.getPassMiss() > 5) { alertMessage = + * "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 관리자에게 문의하시기 바랍니다."; return + * goUserLoginPage(redirectAttributes, request, model, alertMessage); }else + * if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } loginService.updatePassMissReset(loginVO); } + */ + } + + boolean loginPolicyYn = true; + + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성 + UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); + + } else { + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + + System.out.println("==16=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==16=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + + loginLog.setLoginId(uniqId); + loginLog.setLoginIp(ip); + loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O + loginLog.setErrOccrrAt("N"); + loginLog.setErrorCode(""); + // 로그인은 관리자, PC만 됨 + loginLog.setUserAt("U"); // 사용자 + loginLog.setDeviceType("P"); // PC + loginLog.setProgrmFileNm("adminLogin"); + loginLog.setMenuNm("관리자로그인"); + loginLogService.logInsertLoginLog(loginLog); + } + + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + + return "blank"; // 성공 시 페이지.. (redirect 불가) + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addAttribute("message", message); + return "redirect:/web/user/login/login.do"; + } + } + + /** + * 로그인 후 메인화면으로 들어간다 + * + * @param + * @return 로그인 페이지 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionMain.do") + public String actionMain(HttpServletResponse response, HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes, HttpSession session) throws Exception { + /* + * 1.로그인 성공시 메소드 호출(사용자/관리자 모두) 2.권한없는 페이지 호출시 메소드 호출됨 3.사용자 화면에서 권한 없어도 무조건 + * 이쪽으로 redirect됨(여기서 분기처리요망) + */ + // initial target url. 첫 호출 URL + + System.out.println("===========actionMain==========="); + + SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); // 사용자 최종 클릭 화면 + + //System.out.println(savedRequest.getRedirectUrl()); + + if (savedRequest != null) { // 권한업는 페이지 호출시 호출한 페이지 분기를 위해 + if (savedRequest.getRedirectUrl().contains("web")) { // 사용자페이지에서 옴 + session.setAttribute("pageType", "web"); + } else { + session.setAttribute("pageType", "admin"); + } + + System.out.println("===========actionMain===========0"); + System.out.println(savedRequest.getRedirectUrl()); + }else { + //session.setAttribute("pageType", "web"); + } + + + + // 1. Spring Security 사용자권한 처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + System.out.println("===========isAuthenticated===========0"); + System.out.println(isAuthenticated); + + if (!isAuthenticated) { // 로그인이 안되었을경우 + if (session.getAttribute("pageType") != null) { // 사용자 로그인 추가 + if ("web".equals((String) session.getAttribute("pageType"))) { + // pageType(Web은 사용자 이외는 관리자) + if (savedRequest != null) { + session.setAttribute("beforeUrl", savedRequest.getRedirectUrl()); + /* return "redirect:/web/user/login/login.do"; */ + redirectAttributes.addFlashAttribute("message", "로그인 후 이용해 주세요."); + return "redirect:/web/user/login/ssoLogin.do"; + } + } else { + return "redirect:/uat/uia/EgovLoginUsr.do"; + } + } + return "forward:/uat/uia/EgovLoginUsr.do"; // 로그아웃 경우(사용자는 uat/uia/actionMain.do 사용안함) + } + + // 외부 개발자 판단 여부 + SsoLoginVO ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + if (ssoLoginVO != null && "Y".equals(ssoLoginVO.getOtherUser())) { + return "redirect:/web/user/login/ssoSession.do"; + } + + System.out.println("===========actionMain===========1"); + System.out.println(session.getAttribute("pageType")); + + + if (session.getAttribute("pageType") != null) { + if ("web".equals((String) session.getAttribute("pageType"))) { // 사용자 + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + // 강사 로그인 시 + // 청소년 강사 && 성인 강사 -> 청소년저작권강사 대시보드 + // 성인 강사 -> 성인저작권강사 대시보드 + // 로 redirect + if("ROLE_USER_MANAGER".equals(loginVO.getAuthority())) { + VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO(); + + vEInstrDetailVO.setUserId(loginVO.getUniqId()); + vEInstrDetailVO = vEInstrService.selectDetail(vEInstrDetailVO); + + session.setAttribute("pageType", null); + + if("Y".equals(vEInstrDetailVO.getTngrInstrYn())) { + + //청소년 강사 대시보드 + return "redirect:/web/ve/instr/tngrVisitEdu/instrInfo/instrDashboard.do"; + }else if ("Y".equals(vEInstrDetailVO.getAdultInstrYn())) { + //성인 강사 대시보드 + return "redirect:/web/ve/instr/adultVisitEdu/instrInfo/instrDashboard.do"; + } + } + + if (session.getAttribute("beforeSiteUrl") != null) { // 사용자 메인 + String tempSessionUrl = (String) session.getAttribute("beforeSiteUrl"); +// tempSessionUrl = tempSessionUrl.replace("/offedu", ""); + session.setAttribute("pageType", null); + session.setAttribute("beforeSiteUrl", null); + + if("".equals(tempSessionUrl)) { + return "redirect:/"; + } + + return "redirect:" + tempSessionUrl; + /*return "redirect:/";*/ + } else { + /*System.out.println(savedRequest.getRedirectUrl());*/ + session.setAttribute("pageType", null); + return "redirect:/web/main/mainPage.do"; + } + } + } + + // e-배움터 연동 로그인 시 - LoginVO 세션의 return url로 이동 + try { + LoginVO eEduLoginVO = (LoginVO) session.getAttribute("LoginVO"); + if(eEduLoginVO != null) { + if(eEduLoginVO.getUrl() != null) { + return "redirect:" + eEduLoginVO.getUrl(); + } + } + }catch(Exception ex) { + ex.printStackTrace(); + } + + + // 관리자 로그인 시 + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + + + System.out.println("===========actionMain===========2"); + System.out.println(loginService.getUserAuth(user).getAuthority()); + System.out.println(user.getAuthority()); + + if ("ROLE_ADMIN".equals(loginService.getUserAuth(user).getAuthority())) { // 수퍼관리자 경우 + //return "redirect:/cmm/main/mainPage.do"; + return "redirect:/kccadr/oprtn/tngrVisitEdu/areaLctrMngList.do"; + } else if ("ROLE_USER_MANAGER".equals(user.getAuthority())) { + return "redirect:/web/main/mainPage.do"; + } else if ("ROLE_VISIT".equals(user.getAuthority())) { + return "redirect:/cmm/main/mainPage.do"; + } else if ("ROLE_ADR_JRSDC".equals(user.getAuthority())) { + return "redirect:/kccadr/oprtn/cndtnSspnIdtmt/trgtList.do"; + } else if ("ROLE_USER_MEMBER".equals(user.getAuthority())) { + System.out.println("비정상적인 사용자 redirect 임"); + return "redirect:/web/main/mainPage.do"; + } else { // 일반관리자 경우 + return "redirect:/EgovTopPageLink.do?link=/cop/bbs/SelectBBSMasterInfs.do&baseMenuNo=4300000"; + } + } + + /** + * (관리자)로그아웃한다. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionLogout.do") + public String selectActionLogout(HttpServletRequest request, ModelMap model, HttpServletResponse response) throws Exception { + request.getSession().invalidate(); + return "redirect:/uat/uia/EgovLoginUsr.do"; + } + + /** + * (사용자)로그아웃한다. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/web/uat/uia/actionLogout.do") + public String selectActionLogoutWeb(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + + SsoAgentInfo ssoagentinfo = new SsoAgentInfo(); + + String client_ip = "127.0.0.1"; + + if (!ProfileUtil.isLocal()) { + // SsoLoginVO 세션 정보 취득 + SsoLoginVO ssoLoginVO = new SsoLoginVO(); + HttpSession session = request.getSession(); + /*ssologin에서 e배움터 API 로그인으로 변경*/ + /*ssoLoginVO = (SsoLoginVO) session.getAttribute("SSOLoginVO"); + if (ssoLoginVO != null) { + if (!"USRCNFRM_00000002940".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002941".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002942".equals(ssoLoginVO.getMembId()) + || !"USRCNFRM_00000002943".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002944".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002550".equals(ssoLoginVO.getMembId()) + || !"USRCNFRM_00000002542".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002541".equals(ssoLoginVO.getMembId()) || !"USRCNFRM_00000002540".equals(ssoLoginVO.getMembId()) + || !"USRCNFRM_00000002533".equals(ssoLoginVO.getMembId())) { + BandiSSOAgent agent = new BandiSSOAgent(ssoUri, clientId, clientSecret, scope); + BandiSSOAgent agent = new BandiSSOAgent(ssoagentinfo.getSsoUri(), ssoagentinfo.getClientId(), ssoagentinfo.getClientSecret(), ssoagentinfo.getScope()); + + // sso 로그아웃 + agent.logout(ssoLoginVO.getAccess_token(), client_ip); + } + }*/ + } + + // Spring Security 로그아웃 + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null) { + new SecurityContextLogoutHandler().logout(request, response, auth); + } + + // 세션 제거 + request.getSession().invalidate(); + + return "redirect:/web/main/mainPage.do"; + } + + /* 캡차 테스트 */ + @RequestMapping(value = "/captcha/captchaTest.do") + public String captchaTest(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model) throws Exception { + return "cmm/chptcha/captchaTest"; + } + + /* 캡차 이미지 */ + @RequestMapping(value = "/captcha/captchaImg.do") + public String captchaImg1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + + return "cmm/chptcha/captchaImg"; + } + + /* 캡차 오디오 */ + @RequestMapping(value = "/captcha/captchaAudio.do") + public String captchaAudio1(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + return "cmm/chptcha/captchaAudio"; + } + + /* 캡차 submit */ + @RequestMapping(value = "/captcha/captchaSubmit.do") + public ModelAndView captchaSubmit(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String answer = (String) commandMap.get("answer"); + String captcha = (String) request.getSession().getAttribute("captcha"); + String message = "캡차 입력값이 일치하지 않습니다."; + if (answer != null && !"".equals(answer)) { + if (answer.equals(captcha)) { + message = "캡차 입력값이 일치합니다."; + } + } + modelAndView.addObject("message", message); + return modelAndView; + } + + /* 캡차 이미지 */ + @RequestMapping(value = "captchaImg.do") + public void cpatchaImg(HttpServletRequest request, HttpServletResponse response) throws Exception { + new CaptchaUtil().captchaImg(request, response); + } + + @RequestMapping(value = "captchaAudio.do") + public void cpatchaAudio(HttpServletRequest request, HttpServletResponse response) throws Exception { + new CaptchaUtil().captchaAudio(request, response); + } + + /** + * 로그인 후 메인화면으로 들어간다 + * + * @param + * @return 로그인 페이지 + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/actionLoign.do") + public String siteActionMain(@PathVariable("siteId") String siteId, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session) throws Exception { + + // initial target url. 첫 호출 URL + SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); + String initialTargetUrl = ""; + if (savedRequest != null) { + initialTargetUrl = savedRequest.getRedirectUrl(); + } + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + + // 1. Spring Security 사용자권한 처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) { + // model.addAttribute("message", + // egovMessageSource.getMessage("fail.common.login")); + + if ("linc".equals(siteId) || "klc".equals(siteId)) { + return "web/" + siteFolder + "/main/MemberLogin"; + } else { + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setSiteId(siteId); + setSiteinfo(siteManagerVO, model, request); + // return + // "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/main/MemberLogin"; + return "web/site/" + siteId + "/" + siteManagerVO.getIsMobile() + "/main/MemberLogin"; + } + } + + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + if (null != loginVO && !"super".equals(loginVO.getSiteId())) { // 리스트, 수정, 입력 + if (siteId.equals(loginVO.getSiteId())) { // 사이트 아이디가 다르면 + session.setAttribute("pageType", "web"); + return "web/" + siteFolder + "/main/MemberLogin"; + } + } + + // 2. 메인 페이지 이동 + return "forward:/" + siteId + "/web/main/mainPage.do"; + } + + /** + * 일반사용자 (스프링 시큐리티) 로그인을 처리한다 + * + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/actionSecurityLogin.do") + public String selectActionSiteSecurityLogin(@PathVariable("siteId") String siteId, @ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, + ModelMap model) throws Exception { + // 로그인 정보 check + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + if (loginVO.getId() == null || loginVO.getPassword() == null) { + return "web/" + siteFolder + "/main/MemberLogin"; + } + + // 1. 일반 로그인 처리(사이트) + LoginVO resultVO = loginService.siteActionLogin(loginVO); + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); + request.getSession().setAttribute("pageType", "web"); + UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); + + } else { + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + + System.out.println("==17=1="); + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + + try{ + System.out.println("==17=1="); + System.out.println("EgovUserDetailsHelper.isAuthenticated()"); + System.out.println(EgovUserDetailsHelper.isAuthenticated()); + }catch(Exception ex){ + ex.printStackTrace(); + } + + return "blank"; // action.do 에서 일반사용자 분기처리 + } else { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "web/" + siteFolder + "/main/MemberLogin"; + } + } + + /** + * (사용자) 아이디 찾기. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/findUserId.do") + public String findUserId(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + return "web/site/kcc/login/findUserId"; + } + + /** + * (사용자) 비밀번호 찾기. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/findPassword.do") + public String findPassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + return "web/site/kcc/login/findPassword"; + } + + /** + * (사용자) 아이디 비밀번호 안내. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/findView.do") + public String findView(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/cmm/main/mainPage.do"; + + return "web/site/kcc/login/findView"; + } + + /** + * (사용자) 비밀번호 변경 화면. + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/changePassword.do") + public String changePassword(@PathVariable("siteId") String siteId, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/cmm/main/mainPage.do"; + + return "web/site/kcc/login/changePassword"; + } + + @RequestMapping(value = "/{siteId}/web/user/join/snsLink.do") + public String snsLink(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) { + String siteId = (String) session.getAttribute("siteId"); + model.addAttribute("loginVO", loginVO); + return "web/site/" + siteId + "/login/snsLinkPage"; + } + + @RequestMapping(value = "/{siteId}/web/user/join/snsLinkUpdate.do") + public String snsLinkUpdate(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model, HttpSession session) throws Exception { + String siteId = (String) session.getAttribute("siteId"); + String siteFolder = "site/" + siteId; + + loginService.updateSnsLink(loginVO); + + return "web/" + siteFolder + "/login/usrJoinComplete"; + } + + // (사용자) 회원가입 동의 화면 + @RequestMapping(value = "/{siteId}/web/user/join/usrJoinIntro.do") + public String usrJoinIntro(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("loginVO") LoginVO loginVO, + ModelMap model) throws Exception { + + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + model.addAttribute("site_path", "/" + siteFolder); + + MberManageConfigVO mberConfigVO = new MberManageConfigVO(); // 회원가입 환경설정 + mberConfigVO.setUseYn("Y"); // 사용하는것만 + mberConfigVO.setIsSns("N"); + mberConfigVO.setSiteId(siteId); + List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); + model.addAttribute("mberManageCnfList", mberManageCnfList); + model.addAttribute("loginVO", loginVO); + + // 약관가져오기 + SiteManagerVO termsVO = new SiteManagerVO(); + termsVO.setSiteId(siteId); + termsVO = egovSiteManagerService.selectSiteManagerVO(termsVO); + if (null != termsVO) { + if (!"N".equals(termsVO.getTermsYn())) { + model.addAttribute("termsVO", termsVO); + } + } + return "web/" + siteFolder + "/login/usrJoinIntro"; + + } + + // (사용자) 회원가입 화면 + @RequestMapping(value = "/{siteId}/web/user/join/usrJoinRegist.do") + public String usrJoinView(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, + @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + model.addAttribute("site_path", "/" + siteFolder); + return "web/" + siteFolder + "/login/usrJoinRegist"; + } + + /** + * (사용자) 회원가입 처리 + * + * @return String + * @exception Exception + */ + @RequestMapping(value = "/{siteId}/web/user/join/usrJoinInsert.do") + public String usrJoinInsert(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserGuestVO userManageVO, HttpServletRequest request, HttpServletResponse response, + ModelMap model, @RequestParam Map commandMap, RedirectAttributes redirectAttributes) throws Exception { + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated) + return "redirect:/{siteId}/web/main/mainPage.do"; + + model.addAttribute("siteId", siteId); + String siteFolder = "site/" + siteId; + model.addAttribute("site_path", "/" + siteFolder); + +// UserVO userVO = (UserVO) request.getSession().getAttribute("selfauthUserVO"); +// // 본인인증 정보가 없거나, 인증정보와 번호가 다를때 +// if (userVO == null || !userManageVO.getMoblphonNo().equals(userVO.getMblNum())) { +// model.addAttribute("message", "비 정상적인 접근입니다. 본인인증을 해주세요."); +// return "web/login/usrJoinRegist"; +// } +// request.getSession().setAttribute("selfauthUserVO", null); + + // 본인인증 데이터 +// userManageVO.setEmplyrNm(userVO.getName()); +// userManageVO.setBrth(userVO.getBirYMD()); +// userManageVO.setMblDn(userVO.getMblDn()); +// userManageVO.setMoblphonNo(userVO.getMblNum()); + + // 기 가입된 휴대폰번호인지 확인 +// LoginVO vo = new LoginVO(); +// vo.setMblDn(userVO.getMblDn()); +// vo = loginService.searchIdByMblDn(vo); +// +// if (vo != null && vo.getId() != null) { +// } + + if (1 == 2) { + model.addAttribute("message", "이미 가입된 휴대폰 번호입니다."); + return "web/" + siteFolder + "/login/usrJoinRegist"; + } + + userManageVO.setAuthorCode("ROLE_GNRL_USER"); + userManageVO.setJoinType("2"); // 직접가입:2 + userManageVO.setCondition("1"); // 정상:1, 휴면:2, 탈퇴:3 + userManageVO.setUseYn("0"); // 사용:0 + + userManageService.insertUser(userManageVO); + + return "web/" + siteFolder + "/login/usrJoinComplete"; + } + + /** + * (사용자) 아이디 중복 확인 + * + * @return model + * @throws Exception + */ + @RequestMapping(value = "{siteId}/web/user/join/usrIdDplctCnfirmAjax.do") + public ModelAndView usrIdDplctCnfirmAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String checkId = (String) commandMap.get("checkId"); + // checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); + + int usedCnt = userManageService.checkIdDplct(checkId); + modelAndView.addObject("usedCnt", usedCnt); + modelAndView.addObject("checkId", checkId); + + return modelAndView; + } + + /** + * (사용자) ID 찾기 + * + * @return model + * @throws Exception + */ + @RequestMapping(value = "{siteId}/web/user/join/selectUserIdAjax.do") + public ModelAndView selectUserIdAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + List usedNmList = userManageService.selectUserIdAjax(userManageVO); + + modelAndView.addObject("usedNmList", usedNmList); + return modelAndView; + } + + /** + * (사용자) password 찾기 + * + * @return model + * @throws Exception + */ + @RequestMapping(value = "{siteId}/web/user/join/selectUserPWAjax.do") + public ModelAndView selectPasswordAjax(@PathVariable("siteId") String siteId, @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + int usedCnt = userManageService.selectUserPWAjax(userManageVO); + + if (usedCnt > 0) { + String id = userManageVO.getEmplyrId() + "!!"; + userManageVO.setPassword(id); + userManageService.updateUserPWAjax(userManageVO); + } + modelAndView.addObject("usedCnt", usedCnt); + return modelAndView; + } + + private void setSiteinfo(SiteManagerVO siteManagerVO, ModelMap model, HttpServletRequest request) throws Exception { + SiteManagerVO tempSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO); + if (tempSiteManagerVO != null) { + siteManagerVO.setIsMobile("pc"); + siteManagerVO.setTheme(tempSiteManagerVO.getTheme()); + } else { + siteManagerVO.setTheme("01"); + } + WebUtil util = new WebUtil(); + if (util.isMobile(request)) { + siteManagerVO.setIsMobile("mobile"); + } + model.addAttribute("siteId", siteManagerVO.getSiteId()); + // model.addAttribute("site_path" , + // "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()); + model.addAttribute("site_path", "/site/" + siteManagerVO.getSiteId() + "/" + siteManagerVO.getIsMobile()); + } + + /** + * 복호화 + * + * @param privateKey + * @param securedValue + * @return + * @throws Exception + */ + /* + * private String decryptRsa(PrivateKey privateKey, String securedValue) throws + * Exception { Cipher cipher = + * Cipher.getInstance(EgovLoginController.RSA_INSTANCE); byte[] encryptedBytes = + * hexToByteArray(securedValue); cipher.init(Cipher.DECRYPT_MODE, privateKey); + * byte[] decryptedBytes = cipher.doFinal(encryptedBytes); String decryptedValue + * = new String(decryptedBytes, "utf-8"); // 문자 인코딩 주의. return decryptedValue; } + */ + + /** + * 16진 문자열을 byte 배열로 변환한다. + * + * @param hex + * @return + */ + public static byte[] hexToByteArray(String hex) { + if (hex == null || hex.length() % 2 != 0) { + return new byte[] {}; + } + + byte[] bytes = new byte[hex.length() / 2]; + for (int i = 0; i < hex.length(); i += 2) { + byte value = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); + bytes[(int) Math.floor(i / 2)] = value; + } + return bytes; + } + + /** + * rsa 공개키, 개인키 생성 + * + * @param request + */ + /* + * public void initRsa(HttpServletRequest request) { HttpSession session = + * request.getSession(); + * + * KeyPairGenerator generator; try { generator = + * KeyPairGenerator.getInstance(EgovLoginController.RSA_INSTANCE); + * generator.initialize(1024); + * + * KeyPair keyPair = generator.genKeyPair(); KeyFactory keyFactory = + * KeyFactory.getInstance(EgovLoginController.RSA_INSTANCE); PublicKey publicKey + * = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); + * + * session.setAttribute(EgovLoginController.RSA_WEB_KEY, privateKey); // + * session에 RSA 개인키를 세션에 저장 + * + * RSAPublicKeySpec publicSpec = (RSAPublicKeySpec) + * keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class); String + * publicKeyModulus = publicSpec.getModulus().toString(16); String + * publicKeyExponent = publicSpec.getPublicExponent().toString(16); + * + * request.setAttribute("RSAModulus", publicKeyModulus); // rsa modulus 를 + * request 에 추가 request.setAttribute("RSAExponent", publicKeyExponent); // rsa + * exponent 를 request 에 추가 } catch (Exception e) { // TODO Auto-generated catch + * block e.printStackTrace(); } } + */ + + // 사용자 에러페이지 표시후 로그인 페이지로 + private String goUserLoginPage(RedirectAttributes redirectAttributes, HttpServletRequest request, ModelMap model, String alertMessage) { + redirectAttributes.addFlashAttribute("message", alertMessage); + return "redirect:/"; + } + + /* SNS 추가 내역 */ + + @RequestMapping(value = "/snsLogin/naverOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) + public String naverRedirect(Model model, @RequestParam("code") String code, @RequestParam String state, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { + + String siteId = (String) session.getAttribute("siteId"); + JsonNode node = getAccessToken("naver", code, state); + + // 결과값 출력 + System.out.println("node : " + node); + + // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 + String token = node.get("access_token").toString(); + + // 세션에 담아준다. + session.setAttribute("token", token); + JsonNode userInfo = getUserInfo("naver", node.get("access_token")); + JsonNode response = userInfo.path("response"); + + String id = response.path("id").asText(); + String name = response.path("name").asText(); + String snsEmail = response.path("email").asText(); + + LoginVO loginVO = new LoginVO(); + loginVO.setSnsId(id); + loginVO.setName(name); + loginVO.setSnsEmail(snsEmail); + loginVO.setSnsSite("naver"); + model.addAttribute("loginVO", loginVO); + return "web/login/EgovUserSNSLogin"; + } + + @RequestMapping(value = "/snsLogin/kakaoOauth.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST }) + public String kakaoRedirect(Model model, @RequestParam("code") String code, HttpSession session, HttpServletRequest req, RedirectAttributes redirectAttributes) { + JsonNode node = getAccessToken("kakao", code, ""); + + // 노드 안에 있는 access_token값을 꺼내 문자열로 변환 + String token = node.get("access_token").toString(); + // 세션에 담아준다. + session.setAttribute("token", token); + JsonNode userInfo = getUserInfo("kakao", node.get("access_token")); + + String id = userInfo.path("id").asText(); + String name = userInfo.path("name").asText(); + String snsEmail = userInfo.path("email").asText(); + + // 유저정보 카카오에서 가져오기 Get properties + JsonNode properties = userInfo.path("properties"); + JsonNode kakao_account = userInfo.path("kakao_account"); + + id = userInfo.path("id").asText(); + name = null; + snsEmail = null; + + name = properties.path("nickname").asText(); + snsEmail = kakao_account.path("email").asText(); + + LoginVO loginVO = new LoginVO(); + loginVO.setSnsId(id); + loginVO.setName(name); + loginVO.setSnsEmail(snsEmail); + loginVO.setSnsSite("kakao"); + model.addAttribute("loginVO", loginVO); + +// return "forward:/"+siteId+"/web/user/login/actionSecurityLogin.do?snsnsId="+id+"&name="+name+"&email="+email+"&snsSite=kakao"; + return "web/login/EgovUserSNSLogin"; + + } + + public JsonNode getAccessToken(String site, String code, String state) { + + String RequestUrl = ""; + List postParams = new ArrayList(); + + if (site.equals("kakao")) { + RequestUrl = "https://kauth.kakao.com/oauth/token"; + postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); + postParams.add(new BasicNameValuePair("client_id", itnKakaoRestApiKey)); + postParams.add(new BasicNameValuePair("code", code)); + + } else if (site.equals("naver")) { + RequestUrl = "https://nid.naver.com/oauth2.0/token"; + + postParams.add(new BasicNameValuePair("grant_type", "authorization_code")); + postParams.add(new BasicNameValuePair("client_id", itnNaverClientId)); + postParams.add(new BasicNameValuePair("client_secret", itnNaverClientSecret)); + postParams.add(new BasicNameValuePair("code", code)); + postParams.add(new BasicNameValuePair("state", state)); + + } else if (site.equals("google")) { + + } + + final HttpClient client = HttpClientBuilder.create().build(); + final HttpPost post = new HttpPost(RequestUrl); + + JsonNode returnNode = null; + + try { + post.setEntity(new UrlEncodedFormEntity(postParams)); + final HttpResponse response = client.execute(post); + final int responseCode = response.getStatusLine().getStatusCode(); + + // JSON 형태 반환값 처리 + ObjectMapper mapper = new ObjectMapper(); + returnNode = mapper.readTree(response.getEntity().getContent()); + + } catch (UnsupportedEncodingException e) { + System.out.println("UnsupportedEncodingException Occured!!!"); + } catch (ClientProtocolException e) { + System.out.println("ClientProtocolException Occured!!!"); + } catch (IOException e) { + System.out.println("IOException Occured!!!"); + } finally { + } + return returnNode; + } + + public JsonNode getUserInfo(String site, JsonNode accessToken) { + + // String CLIENT_ID = K_CLIENT_ID; // REST API KEY + // String REDIRECT_URI = K_REDIRECT_URI; // 리다이렉트 URI + // String code = autorize_code; // 로그인 과정중 얻은 토큰 값 + String RequestUrl = ""; + + if (site.equals("kakao")) { + RequestUrl = "https://kapi.kakao.com/v2/user/me"; + + } else if (site.equals("naver")) { + RequestUrl = "https://openapi.naver.com/v1/nid/me"; + + } else if (site.equals("google")) { + + } + + final HttpClient client = HttpClientBuilder.create().build(); + final HttpPost post = new HttpPost(RequestUrl); + + // add header + post.addHeader("Authorization", "Bearer " + accessToken); + + JsonNode returnNode = null; + + try { + final HttpResponse response = client.execute(post); + final int responseCode = response.getStatusLine().getStatusCode(); + // JSON 형태 반환값 처리 + ObjectMapper mapper = new ObjectMapper(); + returnNode = mapper.readTree(response.getEntity().getContent()); + + } catch (UnsupportedEncodingException e) { + System.out.println("UnsupportedEncodingException Occured!!!"); + } catch (ClientProtocolException e) { + System.out.println("ClientProtocolException Occured!!!"); + } catch (IOException e) { + System.out.println("IOException Occured!!!"); + } finally { + // clear resources + } + return returnNode; + } + +} + +class RequestWrapperForSecurity extends HttpServletRequestWrapper { + private String username = null; + private String password = null; + + public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) { + super(request); + this.username = username; + this.password = password; + } + + @Override + public String getServletPath() { + return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; + } + + @Override + public String getRequestURI() { + return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; + } + + @Override + public String getParameter(String name) { + if (name.equals("egov_security_username")) { + return username; + } + + if (name.equals("egov_security_password")) { + return password; + } + + return super.getParameter(name); + } } \ No newline at end of file diff --git a/src/main/java/kcc/let/utl/fcc/service/VEPagingUtil.java b/src/main/java/kcc/let/utl/fcc/service/VEPagingUtil.java index f2add14c..864152af 100644 --- a/src/main/java/kcc/let/utl/fcc/service/VEPagingUtil.java +++ b/src/main/java/kcc/let/utl/fcc/service/VEPagingUtil.java @@ -1,280 +1,280 @@ -package kcc.let.utl.fcc.service; - -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO; - -/** - * - * paging 에 대한 Util 클래스 - * @author 사업기술본부 조용준(ITN) - * @since 2021.07.16 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2021.07.16  조용준          최초 생성 *   
- *
- * 
- */ -@Component("vEPagingUtil") -public class VEPagingUtil { - - private static final Logger LOGGER = LoggerFactory.getLogger(VEPagingUtil.class); - - - ////////////////////////////////////////////////// - // - // VEInstrAsgnmVO paging - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - public PaginationInfo setPagingStep1_VEInstrAsgnmVO( - PaginationInfo p_paginationInfo, - VEInstrAsgnmVO p_VEInstrAsgnmVO - ){ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrAsgnmVO()"); - - // pageing step1 - p_paginationInfo.setCurrentPageNo(p_VEInstrAsgnmVO.getPageIndex()); - p_paginationInfo.setRecordCountPerPage(p_VEInstrAsgnmVO.getPageUnit()); - p_paginationInfo.setPageSize(p_VEInstrAsgnmVO.getPageSize()); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - public VEInstrAsgnmVO setPagingStep2_VEInstrAsgnmVO( - VEInstrAsgnmVO p_VEInstrAsgnmVO - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); - - // pageing step2 - p_VEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_VEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_VEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_VEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_VEInstrAsgnmVO.setSearchSortCnd("prcs_ord"); - p_VEInstrAsgnmVO.setSearchSortOrd("desc"); - } - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_VEInstrAsgnmVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - public PaginationInfo setPagingStep3_VEInstrAsgnmVO( - List p_VEInstrAsgnmVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrAsgnmVO()"); - - // pageing step3 - int totCnt = 0; - if(p_VEInstrAsgnmVOList.size() > 0) totCnt = p_VEInstrAsgnmVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - ////////////////////////////////////////////////// - // - // VELctrDetailVO paging - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - public PaginationInfo setPagingStep1_VELctrDetailVO( - PaginationInfo p_paginationInfo, - VELctrDetailVO p_VELctrDetailVO - ){ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep1_VELctrDetailVO()"); - - // pageing step1 - p_paginationInfo.setCurrentPageNo(p_VELctrDetailVO.getPageIndex()); - p_paginationInfo.setRecordCountPerPage(p_VELctrDetailVO.getPageUnit()); - p_paginationInfo.setPageSize(p_VELctrDetailVO.getPageSize()); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - public VELctrDetailVO setPagingStep2_VELctrDetailVO( - VELctrDetailVO p_VELctrDetailVO - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); - - // pageing step2 - p_VELctrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_VELctrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_VELctrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_VELctrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_VELctrDetailVO.setSearchSortCnd("prcs_ord"); - p_VELctrDetailVO.setSearchSortOrd("desc"); - } - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_VELctrDetailVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - public PaginationInfo setPagingStep3_VELctrDetailVO( - List p_VELctrDetailVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep3_VELctrDetailVO()"); - - // pageing step3 - int totCnt = 0; - if(p_VELctrDetailVOList.size() > 0) totCnt = p_VELctrDetailVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - - ////////////////////////////////////////////////// - // - // VEInstrDetailVO paging - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - public PaginationInfo setPagingStep1_VEInstrDetailVO( - PaginationInfo p_paginationInfo, - VEInstrDetailVO p_VEInstrDetailVO - ){ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrDetailVO()"); - - // pageing step1 - p_paginationInfo.setCurrentPageNo(p_VEInstrDetailVO.getPageIndex()); - p_paginationInfo.setRecordCountPerPage(p_VEInstrDetailVO.getPageUnit()); - p_paginationInfo.setPageSize(p_VEInstrDetailVO.getPageSize()); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - public VEInstrDetailVO setPagingStep2_VEInstrDetailVO( - VEInstrDetailVO p_VEInstrDetailVO - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep2_p_VEInstrDetailVO()"); - - // pageing step2 - p_VEInstrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_VEInstrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_VEInstrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_VEInstrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_VEInstrDetailVO.setSearchSortCnd("prcs_ord"); - p_VEInstrDetailVO.setSearchSortOrd("desc"); - } - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_VEInstrDetailVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - public PaginationInfo setPagingStep3_VEInstrDetailVO( - List p_VEInstrDetailVO - - , PaginationInfo p_paginationInfo - )throws Exception{ - - try { - LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrDetailVO()"); - - // pageing step3 - int totCnt = 0; - if(p_VEInstrDetailVO.size() > 0) totCnt = p_VEInstrDetailVO.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - } catch(IllegalArgumentException e) { - LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); - } catch (Exception e) { - LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); - } - - return p_paginationInfo; - } +package kcc.let.utl.fcc.service; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO; + +/** + * + * paging 에 대한 Util 클래스 + * @author 사업기술본부 조용준(ITN) + * @since 2021.07.16 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.07.16  조용준          최초 생성 *   
+ *
+ * 
+ */ +@Component("vEPagingUtil") +public class VEPagingUtil { + + private static final Logger LOGGER = LoggerFactory.getLogger(VEPagingUtil.class); + + + ////////////////////////////////////////////////// + // + // VEInstrAsgnmVO paging + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + public PaginationInfo setPagingStep1_VEInstrAsgnmVO( + PaginationInfo p_paginationInfo, + VEInstrAsgnmVO p_VEInstrAsgnmVO + ){ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrAsgnmVO()"); + + // pageing step1 + p_paginationInfo.setCurrentPageNo(p_VEInstrAsgnmVO.getPageIndex()); + p_paginationInfo.setRecordCountPerPage(p_VEInstrAsgnmVO.getPageUnit()); + p_paginationInfo.setPageSize(p_VEInstrAsgnmVO.getPageSize()); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + public VEInstrAsgnmVO setPagingStep2_VEInstrAsgnmVO( + VEInstrAsgnmVO p_VEInstrAsgnmVO + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); + + // pageing step2 + p_VEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_VEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_VEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_VEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_VEInstrAsgnmVO.setSearchSortCnd("prcs_ord"); + p_VEInstrAsgnmVO.setSearchSortOrd("desc"); + } + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_VEInstrAsgnmVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + public PaginationInfo setPagingStep3_VEInstrAsgnmVO( + List p_VEInstrAsgnmVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrAsgnmVO()"); + + // pageing step3 + int totCnt = 0; + if(p_VEInstrAsgnmVOList.size() > 0) totCnt = p_VEInstrAsgnmVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + ////////////////////////////////////////////////// + // + // VELctrDetailVO paging + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + public PaginationInfo setPagingStep1_VELctrDetailVO( + PaginationInfo p_paginationInfo, + VELctrDetailVO p_VELctrDetailVO + ){ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep1_VELctrDetailVO()"); + + // pageing step1 + p_paginationInfo.setCurrentPageNo(p_VELctrDetailVO.getPageIndex()); + p_paginationInfo.setRecordCountPerPage(p_VELctrDetailVO.getPageUnit()); + p_paginationInfo.setPageSize(p_VELctrDetailVO.getPageSize()); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + public VELctrDetailVO setPagingStep2_VELctrDetailVO( + VELctrDetailVO p_VELctrDetailVO + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep2_VEInstrAsgnmVO()"); + + // pageing step2 + p_VELctrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_VELctrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_VELctrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_VELctrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_VELctrDetailVO.setSearchSortCnd("prcs_ord"); + p_VELctrDetailVO.setSearchSortOrd("desc"); + } + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_VELctrDetailVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + public PaginationInfo setPagingStep3_VELctrDetailVO( + List p_VELctrDetailVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep3_VELctrDetailVO()"); + + // pageing step3 + int totCnt = 0; + if(p_VELctrDetailVOList.size() > 0) totCnt = p_VELctrDetailVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + + ////////////////////////////////////////////////// + // + // VEInstrDetailVO paging + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + public PaginationInfo setPagingStep1_VEInstrDetailVO( + PaginationInfo p_paginationInfo, + VEInstrDetailVO p_VEInstrDetailVO + ){ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep1_VEInstrDetailVO()"); + + // pageing step1 + p_paginationInfo.setCurrentPageNo(p_VEInstrDetailVO.getPageIndex()); + p_paginationInfo.setRecordCountPerPage(p_VEInstrDetailVO.getPageUnit()); + p_paginationInfo.setPageSize(p_VEInstrDetailVO.getPageSize()); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + public VEInstrDetailVO setPagingStep2_VEInstrDetailVO( + VEInstrDetailVO p_VEInstrDetailVO + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep2_p_VEInstrDetailVO()"); + + // pageing step2 + p_VEInstrDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_VEInstrDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_VEInstrDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_VEInstrDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_VEInstrDetailVO.setSearchSortCnd("prcs_ord"); + p_VEInstrDetailVO.setSearchSortOrd("desc"); + } + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_VEInstrDetailVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + public PaginationInfo setPagingStep3_VEInstrDetailVO( + List p_VEInstrDetailVO + + , PaginationInfo p_paginationInfo + )throws Exception{ + + try { + LOGGER.debug("VEPagingUtil-setPagingStep3_VEInstrDetailVO()"); + + // pageing step3 + int totCnt = 0; + if(p_VEInstrDetailVO.size() > 0) totCnt = p_VEInstrDetailVO.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + + return p_paginationInfo; + } } \ No newline at end of file diff --git a/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java b/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java index 72bb6b93..928adc42 100644 --- a/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java +++ b/src/main/java/kcc/ve/instr/adultVisitEdu/endInfo/web/VEAdultEduEndController.java @@ -1,841 +1,841 @@ -package kcc.ve.instr.adultVisitEdu.endInfo.web; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.net.URLEncoder; -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.util.FileCopyUtils; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartHttpServletRequest; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; - -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.com.cmm.EgovMessageSource; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.FileVO; -import kcc.com.cmm.util.IpUtil; -import kcc.com.cmm.web.EgovFileDownloadController; -import kcc.com.utl.user.service.CheckFileUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.sch.service.SchduleManageService; -import kcc.kccadr.sch.service.SchduleManageVO; -import kcc.let.uat.uia.service.SsoLoginVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.let.utl.fcc.service.EgovCryptoUtil4VO; -import kcc.ve.cmm.VeConstants; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; -import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; -import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRsltRprtService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; - - -@Controller -public class VEAdultEduEndController { - - // eGov 공통 메세지 - @Resource(name = "egovMessageSource") - EgovMessageSource egovMessageSource; - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - //강사상세 정보 - @Resource(name="vEInstrDetailService") - private VEInstrDetailService vEInstrDetailService; - - //결과보고 - @Resource(name="vEEduRsltRprtService") - private VEEduRsltRprtService vEEduRsltRprtService; - - //배정 MIX 정보 - @Resource(name="vEAsgnmMIXService") - private VEAsgnmMIXService vEAsgnmMIXService; - - //강의 - @Resource(name="vEPrcsService") - private VEPrcsService vEPrcsService; - - //강사료 - @Resource(name="vEInstrFeeService") - private VEInstrFeeService vEInstrFeeService; - - //숙박 - @Resource(name="vEAcmdtAplctService") - private VEAcmdtAplctService vEAcmdtAplctService; - - //VO 암/복호화 - @Resource(name="egovCryptoUtil4VO") - private EgovCryptoUtil4VO egovCryptoUtil4VO; - - // 파일첨부 - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - //파일 체크 util - @Resource(name = "checkFileUtil") - private CheckFileUtil checkFileUtil; - - //NOTI 서비스 - @Resource(name="vEAsgnmNotiService") - private VEAsgnmNotiService vEAsgnmNotiService; - - //일정 정보 - @Resource(name = "schduleManageService") - private SchduleManageService schduleManageService; - - private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); - - /** - * 브라우저 구분 얻기. - * - * @param request - * @return - */ - private String getBrowser(HttpServletRequest request) { - String header = request.getHeader("User-Agent"); - if (header.indexOf("MSIE") > -1) { - return "MSIE"; - } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 - return "Trident"; - } else if (header.indexOf("Chrome") > -1) { - return "Chrome"; - } else if (header.indexOf("Opera") > -1) { - return "Opera"; - } - return "Firefox"; - } - - //청소년강사 강의 종료교육 목록 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do") - public String instrEduEndList( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , ModelMap model - , RedirectAttributes redirectAttributes - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - if (loginVO == null || ssoLoginVO == null) { - return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - - //3.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); - - - //4. pageing step2 - vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); - - vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); - vEInstrAsgnmVO.setInstrDiv("20"); - vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - vEInstrAsgnmVO.setMenuNo("9991300"); - } - - List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); - - //6.pageing step3 - paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); - - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList"; - } - - //청소년강사 강의 종료교육 목록 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do") - public String instrEduEndSchdl( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , ModelMap model - , RedirectAttributes redirectAttributes - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - if (loginVO == null || ssoLoginVO == null) { - return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - - //3.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); - - - //4. pageing step2 - vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); - - vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); - vEInstrAsgnmVO.setInstrDiv("20"); - vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - vEInstrAsgnmVO.setMenuNo("9991300"); - } - - List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); - - //6.pageing step3 - paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); - - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl"; - } - - @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do") - @ResponseBody - public List adultSchduleManagerAjaxLoadData(@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO, ModelMap model) throws Exception { - schduleManageVO.setAprvlCd("60"); - schduleManageVO.setLctrDivCd("10"); - - schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", "")); - - return schduleManageService.selectSchManageStatusList(schduleManageVO); - } - - //청소년강사 강의 종료교육 상세 - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do") - public String instrEduEndDetail( - @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - - , ModelMap model - , RedirectAttributes redirectAttributes - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - try{ - System.out.println("adultVisitEdu-endInfo-instrEduEndDetail"); - //로그인 처리==================================== - //로그인 정보 가져오기 - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - if (loginVO == null || ssoLoginVO == null) { - return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. - } - model.addAttribute("ssoLoginVO", ssoLoginVO); - model.addAttribute("loginVO", loginVO); - //로그인 처리==================================== - - // 교육차시 강사배정 정보 - VEInstrAsgnmVO vEInstrAsgnmVOInfo = new VEInstrAsgnmVO(); - vEInstrAsgnmVOInfo = vEAsgnmMIXService.selectAsgnmRqstDetail(vEInstrAsgnmVO); - - // 강사 상세정보 - VEInstrDetailVO vEInstrDetailVOInfo = new VEInstrDetailVO(); - vEInstrDetailVOInfo.setInstrDiv("20"); - vEInstrDetailVOInfo.setUserId(loginVO.getUniqId()); - vEInstrDetailVOInfo.setUseYn("Y"); - vEInstrDetailVOInfo = vEInstrDetailService.selectDetail(vEInstrDetailVOInfo); - if (vEInstrDetailVOInfo != null) { - //데이터 복호화 - VO 단위로 만들어서 사용 - VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); - vEEduAplctVO.setInstrNm(vEInstrDetailVOInfo.getInstrNm()); - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - vEInstrDetailVOInfo.setInstrNm(vEEduAplctVO.getInstrNm()); - } - - //강사료 - VEInstrFeeAcmdtVO instrFee = new VEInstrFeeAcmdtVO(); - instrFee.setEduAplctOrd(vEInstrAsgnmVO.getEduAplctOrd()); - instrFee.setEduChasiOrd(vEInstrAsgnmVO.getEduChasiOrd()); - - instrFee = vEInstrFeeService.selectDetail(instrFee); - - //강사료 제외 합계 - int instrFeeSum = Integer.parseInt(instrFee.getInstrFee()) - + Integer.parseInt(instrFee.getBsnsTripFee()) - + Integer.parseInt(instrFee.getSpareFee()); - instrFee.setInstrFeeSum(instrFeeSum); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setUseYn("Y"); - vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); - List vEPrcsDetailVOList = vEPrcsService.selectTngrPrcsList(vEPrcsDetailVO); - model.addAttribute("prcsList", vEPrcsDetailVOList); - - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEInstrAsgnmVOInfo != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEInstrAsgnmVOInfo.getLctrPlanAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("eduAplctOrd", vEInstrAsgnmVO.getEduAplctOrd()); - model.addAttribute("eduChasiOrd", vEInstrAsgnmVO.getEduChasiOrd()); - model.addAttribute("info", vEInstrAsgnmVOInfo); - model.addAttribute("info2", vEInstrDetailVOInfo); - model.addAttribute("instrFee", instrFee); - model.addAttribute("cryptoUtil",egovCryptoUtil); - - //20220222 우영두 추가 - //강의내역 NOTI 입력 - VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); - - vEAsgnmNotiVO.setTblUniqOrd(vEInstrAsgnmVO.getEduChasiOrd()); - vEAsgnmNotiVO.setFrstRegisterId(loginVO.getUniqId()); - - try { - System.out.println("session.getAttribute(menuNo).toString()"); - System.out.println(session.getAttribute("menuNo").toString()); - vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); - }catch(Exception ex) { - ex.printStackTrace(); - } - - vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); - - vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); - - }catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail"; - } - - /** - * 결과보고 팝업 - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop.do") - public String filePopup( - @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO - ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - try { - vEEduRprtVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEEduRprtVO != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEEduRprtVO.getAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - model.addAttribute("vEEduRprtVO", vEEduRprtVO); - model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); - } - catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop"; - } - - /** - * 숙박신청자 영수증 등록 팝업 - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtRegPop.do") - public String eduAcmdtRegPop( - @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO - ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - try { - vEInstrFeeAcmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); - - //파일 정보 가져오기 - int fileCnt = 0; - List result = null; - if (vEInstrFeeAcmdtVO != null) { - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(vEInstrFeeAcmdtVO.getAtchFileId()); - result = fileService.selectFileInfs(fileVO); - fileCnt = result.size(); - } - else { - fileCnt = 0; - } - model.addAttribute("fileList", result); - model.addAttribute("fileListCnt", fileCnt); - model.addAttribute("vEInstrFeeAcmdtVO", vEInstrFeeAcmdtVO); - model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); - } - catch(Exception ex) { - ex.printStackTrace(); - } - - return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPop"; - } - - /** - * 결과보고 Ajax - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtPopupAjax.do") - public ModelAndView filePopupAjax( - @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO - , ModelMap model - //, RedirectAttributes redirectAttributes - , HttpServletRequest request - , final MultipartHttpServletRequest multiRequest - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - /* - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if (!"".equals(s_userCheckNInfo)) { - modelAndView.addObject("result", "loginFail"); - return modelAndView; - } - */ - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - //로그인 처리==================================== - - - //step2.파일 처리==================================== - //파일 정상 처리 여부와 첨부 파일 정보 - //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); - //파일 제한 수량 가져오기, 없으면 기본값 사용 - int i_file_limit = checkFileUtil.getLimitCount(request); // file count - int i_limit_size = checkFileUtil.getLimitSize(request); // file MB - String s_file_exts = checkFileUtil.getS_exts(); // file exts - - - //step2.기존 첨부파일 체크 후 저장 하기 - String s_atchFileId = ""; - VEEduRprtVO fileVEEduAplctVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); - if (fileVEEduAplctVO != null) { - s_atchFileId = fileVEEduAplctVO.getAtchFileId(); - } - - //DB에서 실제 첨부파일 존재 여부 확인 - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(s_atchFileId); - List result = fileService.selectFileInfs(fileVO); - if (result.size()<=0) { - s_atchFileId = ""; - } - - if ("".equals(s_atchFileId)) { - s_atchFileId = checkFileUtil.fileValCheckNdbInsert( - multiRequest, modelAndView - , "EDURSLTRPRT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - ); //EXT, MB size and ea - }else { - s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( - multiRequest, modelAndView - , "EDURSLTRPRT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - , s_atchFileId - ); - } - - if ("ERROR".equals(s_atchFileId)) return modelAndView; - - //step2.파일 처리==================================== - - try { - //결과 저장 - vEEduRprtVO.setAtchFileId(s_atchFileId); - - //최초등록 시 - if(fileVEEduAplctVO == null) { - vEEduRprtVO.setFrstRegisterId(loginVO.getUniqId()); - } else { //수정 시 - vEEduRprtVO.setLastUpdusrId(loginVO.getUniqId()); - } - - vEEduRsltRprtService.insert(vEEduRprtVO); - - }catch(Exception ex) { - System.out.println("Exception vEEduRsltRprtService.insert"); - } - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - /** - * 영수증 등록 Ajax - */ - @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPopupAjax.do") - public ModelAndView eduAcmdtPopupAjax( - @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO - , ModelMap model - //, RedirectAttributes redirectAttributes - , HttpServletRequest request - , final MultipartHttpServletRequest multiRequest - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - //로그인 처리==================================== - //로그인 정보 가져오기 - /* - String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - if (!"".equals(s_userCheckNInfo)) { - modelAndView.addObject("result", "loginFail"); - return modelAndView; - } - */ - - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 - //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - - //로그인 처리==================================== - - - //step2.파일 처리==================================== - //파일 정상 처리 여부와 첨부 파일 정보 - //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); - //파일 제한 수량 가져오기, 없으면 기본값 사용 - int i_file_limit = checkFileUtil.getLimitCount(request); // file count - int i_limit_size = checkFileUtil.getLimitSize(request); // file MB - String s_file_exts = checkFileUtil.getS_exts(); // file exts - - - //step2.기존 첨부파일 체크 후 저장 하기 - String s_atchFileId = ""; - VEInstrFeeAcmdtVO acmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); - s_atchFileId = acmdtVO.getAtchFileId(); - - //DB에서 실제 첨부파일 존재 여부 확인 - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(s_atchFileId); - List result = fileService.selectFileInfs(fileVO); - if (result.size()<=0) { - s_atchFileId = ""; - } - - if ("".equals(s_atchFileId)) { - s_atchFileId = checkFileUtil.fileValCheckNdbInsert( - multiRequest, modelAndView - , "ACMDTRECEIPT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - ); //EXT, MB size and ea - }else { - s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( - multiRequest, modelAndView - , "ACMDTRECEIPT_" //file_name_prefix - , s_file_exts - , i_limit_size - , i_file_limit - , s_atchFileId - ); - } - - if ("ERROR".equals(s_atchFileId)) return modelAndView; - - //step2.파일 처리==================================== - - try { - //결과 저장 - vEInstrFeeAcmdtVO.setAtchFileId(s_atchFileId); - vEInstrFeeAcmdtVO.setLastUpdusrId(loginVO.getUniqId()); - - vEAcmdtAplctService.update(vEInstrFeeAcmdtVO); - - }catch(Exception ex) { - System.out.println("Exception vEAcmdtAplctService.update"); - } - - modelAndView.addObject("result", "success"); - - return modelAndView; - } - - //첨부파일 이름 변경하여 다운로드 - /** - * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. - * - * @param commandMap - * @param response - * @throws Exception - */ - @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/FileDown.do") - public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { - - String atchFileId = (String) commandMap.get("atchFileId"); - String fileSn = (String) commandMap.get("fileSn"); - String newFileNm = (String) commandMap.get("newFileNm"); - - /*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();*/ - - /*if (isAuthenticated) {*/ - - FileVO fileVO = new FileVO(); - fileVO.setAtchFileId(atchFileId); - fileVO.setFileSn(fileSn); - FileVO fvo = fileService.selectFileInf(fileVO); - if(fvo == null){ - response.setContentType("application/x-msdownload"); - PrintWriter printwriter = response.getWriter(); - printwriter.println(""); - printwriter.println("


Could not get file name:

"); - printwriter.println("


Back

"); - printwriter.println("


© webAccess"); - printwriter.println(""); - printwriter.flush(); - printwriter.close(); - return ; - } - - File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); - long fSize = uFile.length(); - - if (fSize > 0) { - String mimetype = "application/x-msdownload"; - - response.setContentType(mimetype); -// setDisposition(fvo.getOrignlFileNm(), request, response); - setDisposition(newFileNm+"."+fvo.getFileExtsn(), request, response); //받아온 파일명으로 다운로드 실행 - //response.setContentLength(fSize); - - BufferedInputStream in = null; - BufferedOutputStream out = null; - - try { - in = new BufferedInputStream(new FileInputStream(uFile)); - out = new BufferedOutputStream(response.getOutputStream()); - - FileCopyUtils.copy(in, out); - out.flush(); - } catch (Exception ex) { - LOGGER.debug("IGNORED: {}", ex.getMessage()); - } finally { - if (in != null) { - try { - in.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); - } - } - if (out != null) { - try { - out.close(); - } catch (Exception ignore) { - LOGGER.debug("IGNORED: {}", ignore.getMessage()); - } - } - } - - } else { - response.setContentType("application/x-msdownload"); - - PrintWriter printwriter = response.getWriter(); - printwriter.println(""); - printwriter.println("


Could not get file name:
" + fvo.getOrignlFileNm() + "

"); - printwriter.println("


Back

"); - printwriter.println("


© webAccess"); - printwriter.println(""); - printwriter.flush(); - printwriter.close(); - } - /*}*/ - } - - - - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEInstrAsgnmVO p_vEInstrAsgnmVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEInstrAsgnmVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEInstrAsgnmVO.getPageUnit()); - paginationInfo.setPageSize(p_vEInstrAsgnmVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEInstrAsgnmVO setPagingStep2( - VEInstrAsgnmVO p_vEInstrAsgnmVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEInstrAsgnmVO.setSearchSortCnd("user_id"); - p_vEInstrAsgnmVO.setSearchSortOrd("desc"); - } - - return p_vEInstrAsgnmVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEInstrAsgnmVOList - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEInstrAsgnmVOList.size() > 0) totCnt = p_vEInstrAsgnmVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } - - /** - * Disposition 지정하기. - * - * @param filename - * @param request - * @param response - * @throws Exception - */ - private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception { - String browser = getBrowser(request); - - String dispositionPrefix = "attachment; filename="; - String encodedFilename = null; - - if (browser.equals("MSIE")) { - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 - encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); - } else if (browser.equals("Firefox")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Opera")) { - encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; - } else if (browser.equals("Chrome")) { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < filename.length(); i++) { - char c = filename.charAt(i); - if (c > '~') { - sb.append(URLEncoder.encode("" + c, "UTF-8")); - } else { - sb.append(c); - } - } - encodedFilename = sb.toString(); - } else { - //throw new RuntimeException("Not supported browser"); - throw new IOException("Not supported browser"); - } - -// response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); // 파일명에 콤마 포함시 오류 - response.setHeader("Content-Disposition", dispositionPrefix + "\"" + encodedFilename + "\""); - - if ("Opera".equals(browser)) { - response.setContentType("application/octet-stream;charset=UTF-8"); - } - } - -} +package kcc.ve.instr.adultVisitEdu.endInfo.web; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.EgovMessageSource; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.util.IpUtil; +import kcc.com.cmm.web.EgovFileDownloadController; +import kcc.com.utl.user.service.CheckFileUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.sch.service.SchduleManageService; +import kcc.kccadr.sch.service.SchduleManageVO; +import kcc.let.uat.uia.service.SsoLoginVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.let.utl.fcc.service.EgovCryptoUtil4VO; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAcmdtAplctService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrAsgnmVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeAcmdtVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEInstrFeeService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; +import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO; +import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRsltRprtService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; + + +@Controller +public class VEAdultEduEndController { + + // eGov 공통 메세지 + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + //강사상세 정보 + @Resource(name="vEInstrDetailService") + private VEInstrDetailService vEInstrDetailService; + + //결과보고 + @Resource(name="vEEduRsltRprtService") + private VEEduRsltRprtService vEEduRsltRprtService; + + //배정 MIX 정보 + @Resource(name="vEAsgnmMIXService") + private VEAsgnmMIXService vEAsgnmMIXService; + + //강의 + @Resource(name="vEPrcsService") + private VEPrcsService vEPrcsService; + + //강사료 + @Resource(name="vEInstrFeeService") + private VEInstrFeeService vEInstrFeeService; + + //숙박 + @Resource(name="vEAcmdtAplctService") + private VEAcmdtAplctService vEAcmdtAplctService; + + //VO 암/복호화 + @Resource(name="egovCryptoUtil4VO") + private EgovCryptoUtil4VO egovCryptoUtil4VO; + + // 파일첨부 + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + //파일 체크 util + @Resource(name = "checkFileUtil") + private CheckFileUtil checkFileUtil; + + //NOTI 서비스 + @Resource(name="vEAsgnmNotiService") + private VEAsgnmNotiService vEAsgnmNotiService; + + //일정 정보 + @Resource(name = "schduleManageService") + private SchduleManageService schduleManageService; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); + + /** + * 브라우저 구분 얻기. + * + * @param request + * @return + */ + private String getBrowser(HttpServletRequest request) { + String header = request.getHeader("User-Agent"); + if (header.indexOf("MSIE") > -1) { + return "MSIE"; + } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 + return "Trident"; + } else if (header.indexOf("Chrome") > -1) { + return "Chrome"; + } else if (header.indexOf("Opera") > -1) { + return "Opera"; + } + return "Firefox"; + } + + //청소년강사 강의 종료교육 목록 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do") + public String instrEduEndList( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + if (loginVO == null || ssoLoginVO == null) { + return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + + //3.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); + + + //4. pageing step2 + vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); + + vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); + vEInstrAsgnmVO.setInstrDiv("20"); + vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + vEInstrAsgnmVO.setMenuNo("9991300"); + } + + List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); + + //6.pageing step3 + paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); + + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList"; + } + + //청소년강사 강의 종료교육 목록 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do") + public String instrEduEndSchdl( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + if (loginVO == null || ssoLoginVO == null) { + return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + + //3.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO); + + + //4. pageing step2 + vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo); + + vEInstrAsgnmVO.setUserId(loginVO.getUniqId()); + vEInstrAsgnmVO.setInstrDiv("20"); + vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50 + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + vEInstrAsgnmVO.setMenuNo("9991300"); + } + + List vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO); + + //6.pageing step3 + paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo); + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList); + + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl"; + } + + @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do") + @ResponseBody + public List adultSchduleManagerAjaxLoadData(@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO, ModelMap model) throws Exception { + schduleManageVO.setAprvlCd("60"); + schduleManageVO.setLctrDivCd("10"); + + schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", "")); + + return schduleManageService.selectSchManageStatusList(schduleManageVO); + } + + //청소년강사 강의 종료교육 상세 + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do") + public String instrEduEndDetail( + @ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + + , ModelMap model + , RedirectAttributes redirectAttributes + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + try{ + System.out.println("adultVisitEdu-endInfo-instrEduEndDetail"); + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + if (loginVO == null || ssoLoginVO == null) { + return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다. + } + model.addAttribute("ssoLoginVO", ssoLoginVO); + model.addAttribute("loginVO", loginVO); + //로그인 처리==================================== + + // 교육차시 강사배정 정보 + VEInstrAsgnmVO vEInstrAsgnmVOInfo = new VEInstrAsgnmVO(); + vEInstrAsgnmVOInfo = vEAsgnmMIXService.selectAsgnmRqstDetail(vEInstrAsgnmVO); + + // 강사 상세정보 + VEInstrDetailVO vEInstrDetailVOInfo = new VEInstrDetailVO(); + vEInstrDetailVOInfo.setInstrDiv("20"); + vEInstrDetailVOInfo.setUserId(loginVO.getUniqId()); + vEInstrDetailVOInfo.setUseYn("Y"); + vEInstrDetailVOInfo = vEInstrDetailService.selectDetail(vEInstrDetailVOInfo); + if (vEInstrDetailVOInfo != null) { + //데이터 복호화 - VO 단위로 만들어서 사용 + VEEduAplctVO vEEduAplctVO = new VEEduAplctVO(); + vEEduAplctVO.setInstrNm(vEInstrDetailVOInfo.getInstrNm()); + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + vEInstrDetailVOInfo.setInstrNm(vEEduAplctVO.getInstrNm()); + } + + //강사료 + VEInstrFeeAcmdtVO instrFee = new VEInstrFeeAcmdtVO(); + instrFee.setEduAplctOrd(vEInstrAsgnmVO.getEduAplctOrd()); + instrFee.setEduChasiOrd(vEInstrAsgnmVO.getEduChasiOrd()); + + instrFee = vEInstrFeeService.selectDetail(instrFee); + + //강사료 제외 합계 + int instrFeeSum = Integer.parseInt(instrFee.getInstrFee()) + + Integer.parseInt(instrFee.getBsnsTripFee()) + + Integer.parseInt(instrFee.getSpareFee()); + instrFee.setInstrFeeSum(instrFeeSum); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setUseYn("Y"); + vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); + List vEPrcsDetailVOList = vEPrcsService.selectTngrPrcsList(vEPrcsDetailVO); + model.addAttribute("prcsList", vEPrcsDetailVOList); + + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEInstrAsgnmVOInfo != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEInstrAsgnmVOInfo.getLctrPlanAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("eduAplctOrd", vEInstrAsgnmVO.getEduAplctOrd()); + model.addAttribute("eduChasiOrd", vEInstrAsgnmVO.getEduChasiOrd()); + model.addAttribute("info", vEInstrAsgnmVOInfo); + model.addAttribute("info2", vEInstrDetailVOInfo); + model.addAttribute("instrFee", instrFee); + model.addAttribute("cryptoUtil",egovCryptoUtil); + + //20220222 우영두 추가 + //강의내역 NOTI 입력 + VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); + + vEAsgnmNotiVO.setTblUniqOrd(vEInstrAsgnmVO.getEduChasiOrd()); + vEAsgnmNotiVO.setFrstRegisterId(loginVO.getUniqId()); + + try { + System.out.println("session.getAttribute(menuNo).toString()"); + System.out.println(session.getAttribute("menuNo").toString()); + vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); + }catch(Exception ex) { + ex.printStackTrace(); + } + + vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); + + vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); + + }catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail"; + } + + /** + * 결과보고 팝업 + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop.do") + public String filePopup( + @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO + ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + try { + vEEduRprtVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEEduRprtVO != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEEduRprtVO.getAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + model.addAttribute("vEEduRprtVO", vEEduRprtVO); + model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); + } + catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtRegPop"; + } + + /** + * 숙박신청자 영수증 등록 팝업 + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtRegPop.do") + public String eduAcmdtRegPop( + @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO + ,@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + try { + vEInstrFeeAcmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); + + //파일 정보 가져오기 + int fileCnt = 0; + List result = null; + if (vEInstrFeeAcmdtVO != null) { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vEInstrFeeAcmdtVO.getAtchFileId()); + result = fileService.selectFileInfs(fileVO); + fileCnt = result.size(); + } + else { + fileCnt = 0; + } + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", fileCnt); + model.addAttribute("vEInstrFeeAcmdtVO", vEInstrFeeAcmdtVO); + model.addAttribute("vEInstrAsgnmVO", vEInstrAsgnmVO); + } + catch(Exception ex) { + ex.printStackTrace(); + } + + return "/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPop"; + } + + /** + * 결과보고 Ajax + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduRsltRprtPopupAjax.do") + public ModelAndView filePopupAjax( + @ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + /* + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if (!"".equals(s_userCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + */ + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //step2.기존 첨부파일 체크 후 저장 하기 + String s_atchFileId = ""; + VEEduRprtVO fileVEEduAplctVO = vEEduRsltRprtService.selectDetail(vEEduRprtVO); + if (fileVEEduAplctVO != null) { + s_atchFileId = fileVEEduAplctVO.getAtchFileId(); + } + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_atchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_atchFileId = ""; + } + + if ("".equals(s_atchFileId)) { + s_atchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "EDURSLTRPRT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + }else { + s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "EDURSLTRPRT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + , s_atchFileId + ); + } + + if ("ERROR".equals(s_atchFileId)) return modelAndView; + + //step2.파일 처리==================================== + + try { + //결과 저장 + vEEduRprtVO.setAtchFileId(s_atchFileId); + + //최초등록 시 + if(fileVEEduAplctVO == null) { + vEEduRprtVO.setFrstRegisterId(loginVO.getUniqId()); + } else { //수정 시 + vEEduRprtVO.setLastUpdusrId(loginVO.getUniqId()); + } + + vEEduRsltRprtService.insert(vEEduRprtVO); + + }catch(Exception ex) { + System.out.println("Exception vEEduRsltRprtService.insert"); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + /** + * 영수증 등록 Ajax + */ + @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/popup/eduAcmdtPopupAjax.do") + public ModelAndView eduAcmdtPopupAjax( + @ModelAttribute("vEInstrFeeAcmdtVO") VEInstrFeeAcmdtVO vEInstrFeeAcmdtVO + , ModelMap model + //, RedirectAttributes redirectAttributes + , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 처리==================================== + //로그인 정보 가져오기 + /* + String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + if (!"".equals(s_userCheckNInfo)) { + modelAndView.addObject("result", "loginFail"); + return modelAndView; + } + */ + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + //SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //step2.기존 첨부파일 체크 후 저장 하기 + String s_atchFileId = ""; + VEInstrFeeAcmdtVO acmdtVO = vEAcmdtAplctService.selectDetail(vEInstrFeeAcmdtVO); + s_atchFileId = acmdtVO.getAtchFileId(); + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_atchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_atchFileId = ""; + } + + if ("".equals(s_atchFileId)) { + s_atchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "ACMDTRECEIPT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + }else { + s_atchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "ACMDTRECEIPT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + , s_atchFileId + ); + } + + if ("ERROR".equals(s_atchFileId)) return modelAndView; + + //step2.파일 처리==================================== + + try { + //결과 저장 + vEInstrFeeAcmdtVO.setAtchFileId(s_atchFileId); + vEInstrFeeAcmdtVO.setLastUpdusrId(loginVO.getUniqId()); + + vEAcmdtAplctService.update(vEInstrFeeAcmdtVO); + + }catch(Exception ex) { + System.out.println("Exception vEAcmdtAplctService.update"); + } + + modelAndView.addObject("result", "success"); + + return modelAndView; + } + + //첨부파일 이름 변경하여 다운로드 + /** + * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. + * + * @param commandMap + * @param response + * @throws Exception + */ + @RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/FileDown.do") + public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { + + String atchFileId = (String) commandMap.get("atchFileId"); + String fileSn = (String) commandMap.get("fileSn"); + String newFileNm = (String) commandMap.get("newFileNm"); + + /*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();*/ + + /*if (isAuthenticated) {*/ + + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(atchFileId); + fileVO.setFileSn(fileSn); + FileVO fvo = fileService.selectFileInf(fileVO); + if(fvo == null){ + response.setContentType("application/x-msdownload"); + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


Could not get file name:

"); + printwriter.println("


Back

"); + printwriter.println("


© webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + return ; + } + + File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + long fSize = uFile.length(); + + if (fSize > 0) { + String mimetype = "application/x-msdownload"; + + response.setContentType(mimetype); +// setDisposition(fvo.getOrignlFileNm(), request, response); + setDisposition(newFileNm+"."+fvo.getFileExtsn(), request, response); //받아온 파일명으로 다운로드 실행 + //response.setContentLength(fSize); + + BufferedInputStream in = null; + BufferedOutputStream out = null; + + try { + in = new BufferedInputStream(new FileInputStream(uFile)); + out = new BufferedOutputStream(response.getOutputStream()); + + FileCopyUtils.copy(in, out); + out.flush(); + } catch (Exception ex) { + LOGGER.debug("IGNORED: {}", ex.getMessage()); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + if (out != null) { + try { + out.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + } + + } else { + response.setContentType("application/x-msdownload"); + + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


Could not get file name:
" + fvo.getOrignlFileNm() + "

"); + printwriter.println("


Back

"); + printwriter.println("


© webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + } + /*}*/ + } + + + + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEInstrAsgnmVO p_vEInstrAsgnmVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEInstrAsgnmVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEInstrAsgnmVO.getPageUnit()); + paginationInfo.setPageSize(p_vEInstrAsgnmVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEInstrAsgnmVO setPagingStep2( + VEInstrAsgnmVO p_vEInstrAsgnmVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEInstrAsgnmVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEInstrAsgnmVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEInstrAsgnmVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEInstrAsgnmVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEInstrAsgnmVO.setSearchSortCnd("user_id"); + p_vEInstrAsgnmVO.setSearchSortOrd("desc"); + } + + return p_vEInstrAsgnmVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEInstrAsgnmVOList + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEInstrAsgnmVOList.size() > 0) totCnt = p_vEInstrAsgnmVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } + + /** + * Disposition 지정하기. + * + * @param filename + * @param request + * @param response + * @throws Exception + */ + private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception { + String browser = getBrowser(request); + + String dispositionPrefix = "attachment; filename="; + String encodedFilename = null; + + if (browser.equals("MSIE")) { + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Firefox")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Opera")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Chrome")) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < filename.length(); i++) { + char c = filename.charAt(i); + if (c > '~') { + sb.append(URLEncoder.encode("" + c, "UTF-8")); + } else { + sb.append(c); + } + } + encodedFilename = sb.toString(); + } else { + //throw new RuntimeException("Not supported browser"); + throw new IOException("Not supported browser"); + } + +// response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); // 파일명에 콤마 포함시 오류 + response.setHeader("Content-Disposition", dispositionPrefix + "\"" + encodedFilename + "\""); + + if ("Opera".equals(browser)) { + response.setContentType("application/octet-stream;charset=UTF-8"); + } + } + +} diff --git a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java index a4e3ddff..b09e2ed9 100644 --- a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java +++ b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduRsltMng/web/EduRsltMngAdultController.java @@ -1,498 +1,498 @@ -package kcc.ve.oprtn.adultVisitEdu.eduRsltMng.web; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Properties; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.ModelAttribute; -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 kcc.com.cmm.LoginVO; -import kcc.com.cmm.service.EgovCmmUseService; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.EgovFileMngUtil; -import kcc.com.cmm.service.FileVO; -import kcc.com.cmm.spring.data.util.ExcelUtil; -import kcc.com.cmm.util.IpUtil; -import kcc.com.cmm.util.StringUtil; -import kcc.com.utl.user.service.CheckAdrProcessUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; -import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; -import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService; -import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.ve.cmm.VeConstants; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduExcelVO; -import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduPnltyService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; -import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; - -/** - * 교육보고관리(관리자-성인찾아가는저작권교육) - * 교육보고관리에 관한 controller 클래스를 정의한다. - * @author 조용준 - * @since 2021.12.16 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2021.12.16  조용준          최초 생성
- *
- * 
- */ - -@Controller -@RequestMapping("/kccadr/oprtn/adultVisitEdu") -public class EduRsltMngAdultController { - - private static final Logger LOGGER = LoggerFactory.getLogger(EduRsltMngAdultController.class); - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //과정 관리 - @Resource(name = "vEPrcsService") - private VEPrcsService vEPrcsService; - - //신청과정 관리 - @Resource(name = "vEEduMIXService") - private VEEduMIXService vEEduMIXService; - - //교육신청 - @Resource(name = "vEEduAplctService") - private VEEduAplctService vEEduAplctService; - - //교육과정신청 - @Resource(name = "vEPrcsMIXService") - private VEPrcsMIXService vEPrcsMIXService; - - //차시 - @Resource(name = "vEEduChasiService") - private VEEduChasiService vVEEduChasiService; - - // eGov 공통코드 - @Resource(name = "EgovCmmUseService") - private EgovCmmUseService cmmUseService; - - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - // global 프로퍼티 - @Resource(name="globalSettings") - protected Properties propertiesService; - - //첨부파일 경로, realPath 설정 - @Resource(name="EgovFileMngUtil") - private EgovFileMngUtil fileUtil; - - // 첨부파일 정보 - @Resource(name="EgovFileMngService") - private EgovFileMngService fileMngService; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - - @Resource(name="KccadrMgrUdtService") - private KccadrMgrUdtService kccadrMgrUdtService; - - // 교육신청 서비스단 - @Resource(name = "checkAdrProcessUtil") - private CheckAdrProcessUtil checkAdrProcessUtil; - - // 교육패널티 - @Resource(name = "vEEduPnltyService") - private VEEduPnltyService vEEduPnltyService; - - // 강의배정정보 - @Resource(name = "vEAsgnmMIXService") - private VEAsgnmMIXService vEAsgnmMIXService; - - @Resource(name = "egovQustnrRespondInfoService") - private EgovQustnrRespondInfoService egovQustnrRespondInfoService; - - //NOTI 서비스 - @Resource(name="vEAsgnmNotiService") - private VEAsgnmNotiService vEAsgnmNotiService; - - /** - * 교육결과관리 목록 화면 - */ - @RequestMapping("eduRsltMngList.do") - public String eduRsltMngList( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , HttpSession session - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - //로그인 처리==================================== - - // 검색자가 '강사이름'일 때, 암호화하여 검색자에 set한다. - if("2".equals(vEEduAplctVO.getSearchCondition())) { - vEEduAplctVO.setSearchKeyword(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchKeyword())); - } - - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); - - //2. pageing step2 - vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); - vEEduAplctVO.setInstrDiv("20"); // 성인 교육 코드 - vEEduAplctVO.setLctrDivCd("20"); - vEEduAplctVO.setAprvlCd("60"); - vEEduAplctVO.setNotiUserId(user.getUniqId()); - vEEduAplctVO.setMenuNo(session.getAttribute("menuNo").toString()); - - vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO); - - - List vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList(vEEduAplctVO); - VEEduAplctVO vo = new VEEduAplctVO(); - for(int i=0; i < vEEduAplctVOList.size(); i++) { - vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i)); - vEEduAplctVOList.get(i).setChrgNm(vo.getChrgNm()); - } - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); - - // 검색자가 '강사이름'일 때, 복호화하여 검색자에 set 한다. - if("2".equals(vEEduAplctVO.getSearchCondition())) { - vEEduAplctVO.setSearchKeyword(egovCryptoUtil.decrypt(vEEduAplctVO.getSearchKeyword())); - } - - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("list", vEEduAplctVOList); - - - //대상 리스트, 페이징 정보 전달 - //model.addAttribute("resultList", vEEduAplctVOList); - - - return "oprtn/adultVisitEdu/eduRsltMngList"; - } - - /** - * 교육결과관리 등록 화면 - */ - @RequestMapping("eduRsltMngReg.do") - public String eduRsltMngReg( - @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - - return "oprtn/adultVisitEdu/eduRsltMngReg"; - - } - - - /** - * 교육결과관리 상세 화면 - */ - @RequestMapping("eduRsltMngDetail.do") - public String eduRsltMngDetail( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpSession session - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; - //로그인 처리==================================== - String chasiOrd = vEEduAplctVO.getEduChasiOrd(); - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - vEEduAplctVO.setEduChasiOrd(chasiOrd); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - model.addAttribute("list", vEPrcsDetailVOList); - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - - vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_20);// 청소년교육 코드 - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - vEEduChasiVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - VEEduChasiVO vo = new VEEduChasiVO(); - for(int i=0; i < vEEduChasiVOList.size(); i++) { - vo = egovCryptoUtil.decryptVEEduChasiVO(vEEduChasiVOList.get(i)); - vEEduChasiVOList.get(i).setInstrNm(vo.getInstrNm()); - } - - model.addAttribute("chasiList", vEEduChasiVOList); - - // 설문조사 정보 - QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); - qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20); - QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO); - - // 설문조사 문항리스트 조회 - Map commandMap =new HashMap(); - commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001"); - commandMap.put("qestnrId",info.getQestnrId()); //문제 ID - model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap)); - - // 설문조사 결과 조회 - qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); - List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyList(qustnrRespondInfoVO); - if(chasiSrvyList.size() > 0) { - model.addAttribute("qestnrRespondent", chasiSrvyList.get(0).getQestnrRespondent()); - model.addAttribute("qestnrParticipant", chasiSrvyList.get(0).getQestnrParticipant()); - model.addAttribute("chasiSrvyList",chasiSrvyList); - } - - - - /* - System.out.println("------------------------"); - //전체 차시 배정 강사 정보 - vEInstrAsgnmVO.setEduChasiOrd(""); - List selectAsgnmInstrList = vEAsgnmMIXService.selectAsgnmInstrList(vEInstrAsgnmVO); - model.addAttribute("listChasi", selectAsgnmInstrList); - System.out.println("------------------------======================="); - */ - - //20220223 우영두 추가 - //강의내역 NOTI 입력 - VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); - String tblUnitOrd = ""; - if(StringUtil.isNotEmpty(vEEduAplctVO.getEduChasiOrd())) { - tblUnitOrd = vEEduAplctVO.getEduChasiOrd(); - }else { - tblUnitOrd = vEEduAplctVO.getEduAplctOrd(); - } - - vEAsgnmNotiVO.setTblUniqOrd(tblUnitOrd); - vEAsgnmNotiVO.setFrstRegisterId(user.getUniqId()); - vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); - vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); - - vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); - - - return "oprtn/adultVisitEdu/eduRsltMngDetail"; - } - - /** - * 교육결과반려 처리 팝업 - */ - @RequestMapping("popup/eduRsltMngDetailRfslSecurityPopup.do") - public String eduRsltMngDetailRfslSecurityPopup( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - - model.addAttribute("list", vEPrcsDetailVOList); - - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - - model.addAttribute("chasiList", vEEduChasiVOList); - - - return "oprtn/adultVisitEdu/popup/eduRsltMngDetailRfslSecurityPopup"; - } - - - @SuppressWarnings("rawtypes") - @RequestMapping(value = "eduRsltSrvyExcelDownLoad.do") - public ModelAndView eduRsltSrvyExcelDownLoad(@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO, ModelMap model) throws Exception { - - try { - // 설문조사 정보 - QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); - qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); - List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyExcelList(qustnrRespondInfoVO); - - - - System.out.println("out-list-1"); - - List excelData = new ArrayList<>(); - excelData.addAll(chasiSrvyList); - - // 세팅값 - String title = "성인 찾아가는 저작권 교육"; - int[] width = { - 18000, 4000, 4000, 4000, 4000, 4000 - }; // 너비 - - //33개 항목 - String[] header = { - "평가문항", "매우만족", "만족", "보통", "불만족", "매우불만족" - }; - - String[] order = { - "RespondAnswerCn","VerySatisfied","Satisfied","Neither","Dissatisfied","VeryDissatisfied" - }; - - // 호출 - SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); - model.addAttribute("locale", Locale.KOREA); - model.addAttribute("workbook", workbook); - model.addAttribute("workbookName", title); - - }catch(Exception ep) { - ep.getStackTrace(); - } - - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("excelDownloadView"); - modelAndView.addObject(model); - return modelAndView; - } - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - // - // private function - // - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEEduAplctVO p_vEEduAplctVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); - paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEEduAplctVO setPagingStep2( - VEEduAplctVO p_vEEduAplctVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); - p_vEEduAplctVO.setSearchSortOrd("desc"); - } - - return p_vEEduAplctVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEEduAplctVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } -} +package kcc.ve.oprtn.adultVisitEdu.eduRsltMng.web; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Properties; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +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 kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.EgovFileMngUtil; +import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.spring.data.util.ExcelUtil; +import kcc.com.cmm.util.IpUtil; +import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckAdrProcessUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; +import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; +import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService; +import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEAsgnmMIXService; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduExcelVO; +import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduPnltyService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiService; +import kcc.ve.oprtn.asgnmnoti.service.VEAsgnmNotiVO; + +/** + * 교육보고관리(관리자-성인찾아가는저작권교육) + * 교육보고관리에 관한 controller 클래스를 정의한다. + * @author 조용준 + * @since 2021.12.16 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.12.16  조용준          최초 생성
+ *
+ * 
+ */ + +@Controller +@RequestMapping("/kccadr/oprtn/adultVisitEdu") +public class EduRsltMngAdultController { + + private static final Logger LOGGER = LoggerFactory.getLogger(EduRsltMngAdultController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //과정 관리 + @Resource(name = "vEPrcsService") + private VEPrcsService vEPrcsService; + + //신청과정 관리 + @Resource(name = "vEEduMIXService") + private VEEduMIXService vEEduMIXService; + + //교육신청 + @Resource(name = "vEEduAplctService") + private VEEduAplctService vEEduAplctService; + + //교육과정신청 + @Resource(name = "vEPrcsMIXService") + private VEPrcsMIXService vEPrcsMIXService; + + //차시 + @Resource(name = "vEEduChasiService") + private VEEduChasiService vVEEduChasiService; + + // eGov 공통코드 + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + // global 프로퍼티 + @Resource(name="globalSettings") + protected Properties propertiesService; + + //첨부파일 경로, realPath 설정 + @Resource(name="EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + // 첨부파일 정보 + @Resource(name="EgovFileMngService") + private EgovFileMngService fileMngService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + + @Resource(name="KccadrMgrUdtService") + private KccadrMgrUdtService kccadrMgrUdtService; + + // 교육신청 서비스단 + @Resource(name = "checkAdrProcessUtil") + private CheckAdrProcessUtil checkAdrProcessUtil; + + // 교육패널티 + @Resource(name = "vEEduPnltyService") + private VEEduPnltyService vEEduPnltyService; + + // 강의배정정보 + @Resource(name = "vEAsgnmMIXService") + private VEAsgnmMIXService vEAsgnmMIXService; + + @Resource(name = "egovQustnrRespondInfoService") + private EgovQustnrRespondInfoService egovQustnrRespondInfoService; + + //NOTI 서비스 + @Resource(name="vEAsgnmNotiService") + private VEAsgnmNotiService vEAsgnmNotiService; + + /** + * 교육결과관리 목록 화면 + */ + @RequestMapping("eduRsltMngList.do") + public String eduRsltMngList( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , HttpSession session + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + //로그인 처리==================================== + + // 검색자가 '강사이름'일 때, 암호화하여 검색자에 set한다. + if("2".equals(vEEduAplctVO.getSearchCondition())) { + vEEduAplctVO.setSearchKeyword(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchKeyword())); + } + + + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); + + //2. pageing step2 + vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); + vEEduAplctVO.setInstrDiv("20"); // 성인 교육 코드 + vEEduAplctVO.setLctrDivCd("20"); + vEEduAplctVO.setAprvlCd("60"); + vEEduAplctVO.setNotiUserId(user.getUniqId()); + vEEduAplctVO.setMenuNo(session.getAttribute("menuNo").toString()); + + vEEduAplctVO = egovCryptoUtil.encryptVEEduAplctVOInfo(vEEduAplctVO); + + + List vEEduAplctVOList = vEEduMIXService.selectTngrRsltPagingList(vEEduAplctVO); + VEEduAplctVO vo = new VEEduAplctVO(); + for(int i=0; i < vEEduAplctVOList.size(); i++) { + vo = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVOList.get(i)); + vEEduAplctVOList.get(i).setChrgNm(vo.getChrgNm()); + } + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); + + // 검색자가 '강사이름'일 때, 복호화하여 검색자에 set 한다. + if("2".equals(vEEduAplctVO.getSearchCondition())) { + vEEduAplctVO.setSearchKeyword(egovCryptoUtil.decrypt(vEEduAplctVO.getSearchKeyword())); + } + + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEEduAplctVOList); + + + //대상 리스트, 페이징 정보 전달 + //model.addAttribute("resultList", vEEduAplctVOList); + + + return "oprtn/adultVisitEdu/eduRsltMngList"; + } + + /** + * 교육결과관리 등록 화면 + */ + @RequestMapping("eduRsltMngReg.do") + public String eduRsltMngReg( + @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + + return "oprtn/adultVisitEdu/eduRsltMngReg"; + + } + + + /** + * 교육결과관리 상세 화면 + */ + @RequestMapping("eduRsltMngDetail.do") + public String eduRsltMngDetail( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpSession session + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + //로그인 처리==================================== + String chasiOrd = vEEduAplctVO.getEduChasiOrd(); + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + vEEduAplctVO.setEduChasiOrd(chasiOrd); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + model.addAttribute("list", vEPrcsDetailVOList); + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + + vEEduChasiVO.setInstrDiv(VeConstants.LCTR_DIV_CD_20);// 청소년교육 코드 + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + vEEduChasiVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + VEEduChasiVO vo = new VEEduChasiVO(); + for(int i=0; i < vEEduChasiVOList.size(); i++) { + vo = egovCryptoUtil.decryptVEEduChasiVO(vEEduChasiVOList.get(i)); + vEEduChasiVOList.get(i).setInstrNm(vo.getInstrNm()); + } + + model.addAttribute("chasiList", vEEduChasiVOList); + + // 설문조사 정보 + QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); + qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20); + QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO); + + // 설문조사 문항리스트 조회 + Map commandMap =new HashMap(); + commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001"); + commandMap.put("qestnrId",info.getQestnrId()); //문제 ID + model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap)); + + // 설문조사 결과 조회 + qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); + List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyList(qustnrRespondInfoVO); + if(chasiSrvyList.size() > 0) { + model.addAttribute("qestnrRespondent", chasiSrvyList.get(0).getQestnrRespondent()); + model.addAttribute("qestnrParticipant", chasiSrvyList.get(0).getQestnrParticipant()); + model.addAttribute("chasiSrvyList",chasiSrvyList); + } + + + + /* + System.out.println("------------------------"); + //전체 차시 배정 강사 정보 + vEInstrAsgnmVO.setEduChasiOrd(""); + List selectAsgnmInstrList = vEAsgnmMIXService.selectAsgnmInstrList(vEInstrAsgnmVO); + model.addAttribute("listChasi", selectAsgnmInstrList); + System.out.println("------------------------======================="); + */ + + //20220223 우영두 추가 + //강의내역 NOTI 입력 + VEAsgnmNotiVO vEAsgnmNotiVO = new VEAsgnmNotiVO(); + String tblUnitOrd = ""; + if(StringUtil.isNotEmpty(vEEduAplctVO.getEduChasiOrd())) { + tblUnitOrd = vEEduAplctVO.getEduChasiOrd(); + }else { + tblUnitOrd = vEEduAplctVO.getEduAplctOrd(); + } + + vEAsgnmNotiVO.setTblUniqOrd(tblUnitOrd); + vEAsgnmNotiVO.setFrstRegisterId(user.getUniqId()); + vEAsgnmNotiVO.setMenuNo(session.getAttribute("menuNo").toString()); + vEAsgnmNotiVO.setUrlPath(IpUtil.getRequestURI(request)); + + vEAsgnmNotiService.insertAsgnmNotiInfo(vEAsgnmNotiVO); + + + return "oprtn/adultVisitEdu/eduRsltMngDetail"; + } + + /** + * 교육결과반려 처리 팝업 + */ + @RequestMapping("popup/eduRsltMngDetailRfslSecurityPopup.do") + public String eduRsltMngDetailRfslSecurityPopup( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + + model.addAttribute("list", vEPrcsDetailVOList); + + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + + model.addAttribute("chasiList", vEEduChasiVOList); + + + return "oprtn/adultVisitEdu/popup/eduRsltMngDetailRfslSecurityPopup"; + } + + + @SuppressWarnings("rawtypes") + @RequestMapping(value = "eduRsltSrvyExcelDownLoad.do") + public ModelAndView eduRsltSrvyExcelDownLoad(@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO, ModelMap model) throws Exception { + + try { + // 설문조사 정보 + QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO(); + qustnrRespondInfoVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd()); + List chasiSrvyList = egovQustnrRespondInfoService.selectChasiSrvyExcelList(qustnrRespondInfoVO); + + + + System.out.println("out-list-1"); + + List excelData = new ArrayList<>(); + excelData.addAll(chasiSrvyList); + + // 세팅값 + String title = "성인 찾아가는 저작권 교육"; + int[] width = { + 18000, 4000, 4000, 4000, 4000, 4000 + }; // 너비 + + //33개 항목 + String[] header = { + "평가문항", "매우만족", "만족", "보통", "불만족", "매우불만족" + }; + + String[] order = { + "RespondAnswerCn","VerySatisfied","Satisfied","Neither","Dissatisfied","VeryDissatisfied" + }; + + // 호출 + SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + + }catch(Exception ep) { + ep.getStackTrace(); + } + + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + modelAndView.addObject(model); + return modelAndView; + } + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // + // private function + // + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEEduAplctVO p_vEEduAplctVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); + paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEEduAplctVO setPagingStep2( + VEEduAplctVO p_vEEduAplctVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); + p_vEEduAplctVO.setSearchSortOrd("desc"); + } + + return p_vEEduAplctVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEEduAplctVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } +} diff --git a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java index eff33704..0e9f6826 100644 --- a/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java +++ b/src/main/java/kcc/ve/oprtn/adultVisitEdu/eduSchdlMng/web/EduSchdlMngAdultController.java @@ -1,355 +1,355 @@ -package kcc.ve.oprtn.adultVisitEdu.eduSchdlMng.web; - -import java.util.List; -import java.util.Properties; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; - -import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; -import kcc.com.cmm.service.EgovCmmUseService; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.EgovFileMngUtil; -import kcc.com.utl.user.service.CheckAdrProcessUtil; -import kcc.com.utl.user.service.CheckLoginUtil; -import kcc.kccadr.adjreqmgr.service.AdjReqMgrService; -import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; -import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.ve.cmm.VeConstants; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; - -/** - * 교육일정관리(관리자-성인찾아가는저작권교육) - * 교육일정관리에 관한 controller 클래스를 정의한다. - * @author 조용준 - * @since 2021.12.16 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2021.12.16  조용준          최초 생성
- *
- * 
- */ - -@Controller -@RequestMapping("/kccadr/oprtn/adultVisitEdu") -public class EduSchdlMngAdultController { - - private static final Logger LOGGER = LoggerFactory.getLogger(EduSchdlMngAdultController.class); - - //로그인 체크 util - @Resource(name = "checkLoginUtil") - private CheckLoginUtil checkLoginUtil; - - //과정 관리 - @Resource(name = "vEPrcsService") - private VEPrcsService vEPrcsService; - - //신청과정 관리 - @Resource(name = "vEEduMIXService") - private VEEduMIXService vEEduMIXService; - - //교육신청 - @Resource(name = "vEEduAplctService") - private VEEduAplctService vEEduAplctService; - - //교육과정신청 - @Resource(name = "vEPrcsMIXService") - private VEPrcsMIXService vEPrcsMIXService; - - //차시 - @Resource(name = "vEEduChasiService") - private VEEduChasiService vVEEduChasiService; - - - // 교육신청 서비스단 - @Resource(name = "AdjReqMgrService") - private AdjReqMgrService adjReqMgrService; - - // eGov 공통코드 - @Resource(name = "EgovCmmUseService") - private EgovCmmUseService cmmUseService; - - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileService; - - // global 프로퍼티 - @Resource(name="globalSettings") - protected Properties propertiesService; - - //첨부파일 경로, realPath 설정 - @Resource(name="EgovFileMngUtil") - private EgovFileMngUtil fileUtil; - - // 첨부파일 정보 - @Resource(name="EgovFileMngService") - private EgovFileMngService fileMngService; - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - - @Resource(name="KccadrMgrUdtService") - private KccadrMgrUdtService kccadrMgrUdtService; - - // 교육신청 서비스단 - @Resource(name = "checkAdrProcessUtil") - private CheckAdrProcessUtil checkAdrProcessUtil; - - /** - * 교육일정관리 목록 화면 - */ - @RequestMapping("eduSchdlMngList.do") - public String eduSchdlMngList( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); //청소년 - - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); - //2. pageing step2 - vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); - //vEEduAplctVO.setLctrDivCd("30"); - List vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO); - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); - - - model.addAttribute("paginationInfo", paginationInfo); - - - //대상 리스트, 페이징 정보 전달 - model.addAttribute("list", vEEduAplctVOList); - - /* - //1.pageing step1 - PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); - - //2. pageing step2 - vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); - - List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO); - - //3.pageing step3 - paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); - - - model.addAttribute("paginationInfo", paginationInfo); - */ - - - //대상 리스트, 페이징 정보 전달 - //model.addAttribute("resultList", vEEduAplctVOList); - - - return "oprtn/adultVisitEdu/eduSchdlMngList"; - } - - - - /** - * 교육일정관리 등록 화면 - */ - @RequestMapping("eduSchdlMngReg.do") - public String eduSchdlMngReg( - @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO - , ModelMap model - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); - if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; - - //로그인 처리==================================== - - - return "oprtn/adultVisitEdu/eduSchdlMngReg"; - - } - - - /** - * 교육신청관리 상세 화면 - */ - @RequestMapping("eduSchdlMngDetail.do") - public String eduSchdlMngDetail( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - - model.addAttribute("list", vEPrcsDetailVOList); - - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - - model.addAttribute("chasiList", vEEduChasiVOList); - - - return "oprtn/adultVisitEdu/eduSchdlMngDetail"; - } - - /** - * 교육일정반려 처리 팝업 - */ - @RequestMapping("popup/eduSchdlMngDetailRfslSecurityPopup.do") - public String eduSchdlMngDetailRfslSecurityPopup( - @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO - , ModelMap model - , HttpServletRequest request - ) throws Exception { - - //로그인 처리==================================== - //로그인 정보 가져오기 - - //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); - //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; - - //로그인 처리==================================== - - - //기본데이터 불러오기 - vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); - - //데이터 복호화 - VO 단위로 만들어서 사용 - vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); - - model.addAttribute("info", vEEduAplctVO); - - - //사용자 교육신청 과정 리스트 - VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); - vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); - - model.addAttribute("list", vEPrcsDetailVOList); - - - //사용자 교육신청 차시 리스트 - VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); - vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); - - List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); - - model.addAttribute("chasiList", vEEduChasiVOList); - - - return "oprtn/adultVisitEdu/popup/eduSchdlMngDetailRfslSecurityPopup"; - } - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // - // - // private function - // - // - - //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 - private PaginationInfo setPagingStep1( - VEEduAplctVO p_vEEduAplctVO - )throws Exception{ - // pageing step1 - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); - paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); - - return paginationInfo; - } - - - //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 - private VEEduAplctVO setPagingStep2( - VEEduAplctVO p_vEEduAplctVO - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step2 - p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); - p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); - p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); - - if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); - p_vEEduAplctVO.setSearchSortOrd("desc"); - } - - return p_vEEduAplctVO; - } - - - //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 - private PaginationInfo setPagingStep3( - List p_vEEduAplctVOList - - , PaginationInfo p_paginationInfo - )throws Exception{ - // pageing step3 - int totCnt = 0; - if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); - p_paginationInfo.setTotalRecordCount(totCnt); - - return p_paginationInfo; - } -} +package kcc.ve.oprtn.adultVisitEdu.eduSchdlMng.web; + +import java.util.List; +import java.util.Properties; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; +import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.EgovFileMngUtil; +import kcc.com.utl.user.service.CheckAdrProcessUtil; +import kcc.com.utl.user.service.CheckLoginUtil; +import kcc.kccadr.adjreqmgr.service.AdjReqMgrService; +import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; +import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.ve.cmm.VeConstants; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService; + +/** + * 교육일정관리(관리자-성인찾아가는저작권교육) + * 교육일정관리에 관한 controller 클래스를 정의한다. + * @author 조용준 + * @since 2021.12.16 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2021.12.16  조용준          최초 생성
+ *
+ * 
+ */ + +@Controller +@RequestMapping("/kccadr/oprtn/adultVisitEdu") +public class EduSchdlMngAdultController { + + private static final Logger LOGGER = LoggerFactory.getLogger(EduSchdlMngAdultController.class); + + //로그인 체크 util + @Resource(name = "checkLoginUtil") + private CheckLoginUtil checkLoginUtil; + + //과정 관리 + @Resource(name = "vEPrcsService") + private VEPrcsService vEPrcsService; + + //신청과정 관리 + @Resource(name = "vEEduMIXService") + private VEEduMIXService vEEduMIXService; + + //교육신청 + @Resource(name = "vEEduAplctService") + private VEEduAplctService vEEduAplctService; + + //교육과정신청 + @Resource(name = "vEPrcsMIXService") + private VEPrcsMIXService vEPrcsMIXService; + + //차시 + @Resource(name = "vEEduChasiService") + private VEEduChasiService vVEEduChasiService; + + + // 교육신청 서비스단 + @Resource(name = "AdjReqMgrService") + private AdjReqMgrService adjReqMgrService; + + // eGov 공통코드 + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + // global 프로퍼티 + @Resource(name="globalSettings") + protected Properties propertiesService; + + //첨부파일 경로, realPath 설정 + @Resource(name="EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + // 첨부파일 정보 + @Resource(name="EgovFileMngService") + private EgovFileMngService fileMngService; + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + + @Resource(name="KccadrMgrUdtService") + private KccadrMgrUdtService kccadrMgrUdtService; + + // 교육신청 서비스단 + @Resource(name = "checkAdrProcessUtil") + private CheckAdrProcessUtil checkAdrProcessUtil; + + /** + * 교육일정관리 목록 화면 + */ + @RequestMapping("eduSchdlMngList.do") + public String eduSchdlMngList( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + //if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20); //청소년 + + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO); + //2. pageing step2 + vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo); + //vEEduAplctVO.setLctrDivCd("30"); + List vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo); + + + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", vEEduAplctVOList); + + /* + //1.pageing step1 + PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO); + + //2. pageing step2 + vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); + + List vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO); + + //3.pageing step3 + paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo); + + + model.addAttribute("paginationInfo", paginationInfo); + */ + + + //대상 리스트, 페이징 정보 전달 + //model.addAttribute("resultList", vEEduAplctVOList); + + + return "oprtn/adultVisitEdu/eduSchdlMngList"; + } + + + + /** + * 교육일정관리 등록 화면 + */ + @RequestMapping("eduSchdlMngReg.do") + public String eduSchdlMngReg( + @ModelAttribute("searchVO") AdjReqMgrVO adjReqMgrVO + , ModelMap model + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + + return "oprtn/adultVisitEdu/eduSchdlMngReg"; + + } + + + /** + * 교육신청관리 상세 화면 + */ + @RequestMapping("eduSchdlMngDetail.do") + public String eduSchdlMngDetail( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + + model.addAttribute("list", vEPrcsDetailVOList); + + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + + model.addAttribute("chasiList", vEEduChasiVOList); + + + return "oprtn/adultVisitEdu/eduSchdlMngDetail"; + } + + /** + * 교육일정반려 처리 팝업 + */ + @RequestMapping("popup/eduSchdlMngDetailRfslSecurityPopup.do") + public String eduSchdlMngDetailRfslSecurityPopup( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + //String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request); + //if (!"".equals(s_userCheckNInfo)) return s_userCheckNInfo; + + //로그인 처리==================================== + + + //기본데이터 불러오기 + vEEduAplctVO = vEEduAplctService.selectDetail(vEEduAplctVO); + + //데이터 복호화 - VO 단위로 만들어서 사용 + vEEduAplctVO = egovCryptoUtil.decryptVEEduAplctVOInfo(vEEduAplctVO); + + model.addAttribute("info", vEEduAplctVO); + + + //사용자 교육신청 과정 리스트 + VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO(); + vEPrcsDetailVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEPrcsDetailVOList = vEPrcsMIXService.selectMberEduAplctPrcsList(vEPrcsDetailVO); + + model.addAttribute("list", vEPrcsDetailVOList); + + + //사용자 교육신청 차시 리스트 + VEEduChasiVO vEEduChasiVO = new VEEduChasiVO(); + vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); + + List vEEduChasiVOList = vVEEduChasiService.selectList(vEEduChasiVO); + + model.addAttribute("chasiList", vEEduChasiVOList); + + + return "oprtn/adultVisitEdu/popup/eduSchdlMngDetailRfslSecurityPopup"; + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // + // private function + // + // + + //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 + private PaginationInfo setPagingStep1( + VEEduAplctVO p_vEEduAplctVO + )throws Exception{ + // pageing step1 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit()); + paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize()); + + return paginationInfo; + } + + + //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 + private VEEduAplctVO setPagingStep2( + VEEduAplctVO p_vEEduAplctVO + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step2 + p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); + p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); + p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); + + if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + p_vEEduAplctVO.setSearchSortCnd("prcs_ord"); + p_vEEduAplctVO.setSearchSortOrd("desc"); + } + + return p_vEEduAplctVO; + } + + + //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 + private PaginationInfo setPagingStep3( + List p_vEEduAplctVOList + + , PaginationInfo p_paginationInfo + )throws Exception{ + // pageing step3 + int totCnt = 0; + if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt(); + p_paginationInfo.setTotalRecordCount(totCnt); + + return p_paginationInfo; + } +} diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java index 734a158a..65da48fd 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java @@ -38,6 +38,7 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable { private String prsctrNm; // 검사성명 private String reqStateCd; // 의뢰상태코드 private String prcsAplctPrdOrdCmplt;// 중복확인을 위한 신청강의 PK + private String atchFileId;// 첨부파일 ID @@ -183,6 +184,12 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable { public void setPrcsAplctPrdOrdCmplt(String prcsAplctPrdOrdCmplt) { this.prcsAplctPrdOrdCmplt = prcsAplctPrdOrdCmplt; } + public String getAtchFileId() { + return atchFileId; + } + public void setAtchFileId(String atchFileId) { + this.atchFileId = atchFileId; + } diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java index 09075b59..11b2d14d 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java @@ -13,12 +13,16 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.FileVO; import kcc.com.cmm.util.StringUtil; +import kcc.com.utl.user.service.CheckFileUtil; import kcc.com.utl.user.service.CheckLoginUtil; import kcc.let.uat.uia.service.SsoLoginVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; @@ -85,6 +89,18 @@ public class CndtnTrgtMngController { //과정차시 관리 @Resource(name = "vEPrcsAplctPrdService") private VEPrcsAplctPrdService vEPrcsAplctPrdService; + + + //파일 체크 util + @Resource(name = "checkFileUtil") + private CheckFileUtil checkFileUtil; + + + //파일정보의 관리 + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + /* // 교육신청 서비스단 @@ -283,8 +299,8 @@ public class CndtnTrgtMngController { public ModelAndView cndtnEduPrcsMngRegAjax( @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO , ModelMap model - //, RedirectAttributes redirectAttributes , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest ) throws Exception { ModelAndView modelAndView = new ModelAndView(); @@ -304,8 +320,29 @@ public class CndtnTrgtMngController { LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //step2.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + String s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" //file_name_prefix + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + System.out.println("s_scholSealAtchFileId :: "+ s_scholSealAtchFileId); + cndtnTrgtInfoMngVO.setSspnIdtmtTrgtOrd(trgtOrdService.getNextStringId()); + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일 cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id // vEPrcsDetailVO.setPrcsOrd(prcsOrd); // vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 @@ -331,6 +368,7 @@ public class CndtnTrgtMngController { , ModelMap model //, RedirectAttributes redirectAttributes , HttpServletRequest request + , final MultipartHttpServletRequest multiRequest ) throws Exception { ModelAndView modelAndView = new ModelAndView(); @@ -351,6 +389,56 @@ public class CndtnTrgtMngController { SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + //step2.첨부파일 체크 후 저장 하기 + String s_scholSealAtchFileId = ""; + s_scholSealAtchFileId = cndtnTrgtInfoMngVO.getAtchFileId(); + + //DB에서 실제 첨부파일 존재 여부 확인 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(s_scholSealAtchFileId); + List result = fileService.selectFileInfs(fileVO); + if (result.size()<=0) { + s_scholSealAtchFileId = ""; + } + + + //step3.파일 처리==================================== + //파일 정상 처리 여부와 첨부 파일 정보 + //String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); + //파일 제한 수량 가져오기, 없으면 기본값 사용 + int i_file_limit = checkFileUtil.getLimitCount(request); // file count + int i_limit_size = checkFileUtil.getLimitSize(request); // file MB + String s_file_exts = checkFileUtil.getS_exts(); // file exts + + + //기존 파일 존재 여부에 따라서 insert or update 처리 + if ("".equals(s_scholSealAtchFileId)) { + //atchFileId = this.fileValCheckNdbInsert(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbInsert( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + ); //EXT, MB size and ea + cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); + }else { + //atchFileId = this.fileValCheckNdbUpdate(multiRequest, modelAndView, checkFileUtil.getS_exts(), i_limit_size, i_file_limit, atchFileId); //EXT, MB size and ea + s_scholSealAtchFileId = checkFileUtil.fileValCheckNdbUpdate( + multiRequest, modelAndView + , "APLCT_" + , s_file_exts + , i_limit_size + , i_file_limit + , s_scholSealAtchFileId + ); //EXT, MB size and ea + } + + if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; + + + + cndtnTrgtInfoMngVO.setLastUpdusrId(loginVO.getUniqId()); //esntl_id cndtnTrgtInfoMngService.update(cndtnTrgtInfoMngVO); @@ -383,7 +471,14 @@ public class CndtnTrgtMngController { //과정 조회 CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); model.addAttribute("info", cndtnTrgtInfoVO); - //세부과정 목록 조회 + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); return "oprtn/cndtnSspnIdtmt/trgtDetail"; } @@ -449,6 +544,14 @@ public class CndtnTrgtMngController { CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); model.addAttribute("info", cndtnTrgtInfoVO); + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + return "oprtn/cndtnSspnIdtmt/trgtMdfy"; } diff --git a/src/main/resources/egovframework/spring/com/context-crypto.xml b/src/main/resources/egovframework/spring/com/context-crypto.xml index b64790eb..aef09c6b 100644 --- a/src/main/resources/egovframework/spring/com/context-crypto.xml +++ b/src/main/resources/egovframework/spring/com/context-crypto.xml @@ -1,32 +1,32 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-properties.xml b/src/main/resources/egovframework/spring/com/context-properties.xml index c232d98f..41094778 100644 --- a/src/main/resources/egovframework/spring/com/context-properties.xml +++ b/src/main/resources/egovframework/spring/com/context-properties.xml @@ -1,27 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml index 6803769f..3fd5d575 100644 --- a/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/cmm/fms/EgovFile_SQL_Mysql.xml @@ -1,236 +1,236 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UPDATE - LETTNFILEDETAIL - SET - ORIGNL_FILE_NM = #orignlFileNm# - WHERE 1=1 - AND ATCH_FILE_ID = #atchFileId# - AND FILE_SN = #fileSn# - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE + LETTNFILEDETAIL + SET + ORIGNL_FILE_NM = #orignlFileNm# + WHERE 1=1 + AND ATCH_FILE_ID = #atchFileId# + AND FILE_SN = #fileSn# + + diff --git a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml index 297fb6bf..782b07ec 100644 --- a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml @@ -35,6 +35,7 @@ , req_nmbr , prsctr_nm , req_state_cd + , atch_file_id @@ -62,6 +63,7 @@ , a.req_nmbr AS reqNmbr , a.prsctr_nm AS prsctrNm , a.req_state_cd AS reqStateCd + , a.atch_file_id AS atchFileId @@ -93,6 +95,7 @@ , #reqNmbr# , #prsctrNm# , #reqStateCd# + , #atchFileId# ) @@ -131,7 +134,8 @@ , sex = #sex# , req_nmbr = #reqNmbr# , prsctr_nm = #prsctrNm# - , req_state_cd = #reqStateCd# + , req_state_cd = #reqStateCd# + , atch_file_id = #atchFileId# WHERE sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd# diff --git a/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml b/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml index c6d6d457..2b55ef23 100644 --- a/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml +++ b/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Cubrid.xml @@ -1,352 +1,352 @@ - - - - - - - - - - - ve_lctr_stng - - - - - instr_div, - user_id, - lctr_stng_ord, - - sun_lctr_yn, - mon_lctr_yn, - tue_lctr_yn, - wed_lctr_yn, - thu_lctr_yn, - fri_lctr_yn, - sat_lctr_yn, - zoom_yn, - yr_mxmm_asgnm_tm, - mnt_mnmm_tm, - prfrn_fld_cd, - onln_psbl_yn, - - sbmt_yn, - sbmt_pnttm, - aprvl_cd, - aprvl_pnttm, - aprvl_id, - aprvl_cn, - - frst_regist_pnttm, - frst_register_id, - last_updt_pnttm, - last_updusr_id, - - use_yn, - - isltn_psbl_yn, - cntns_lctr_psbl_yn, - - lctr_stng_yr, - asgnm_tm_1, - asgnm_tm_2, - asgnm_tm_3, - asgnm_tm_4, - asgnm_tm_5, - asgnm_tm_6, - asgnm_tm_7, - asgnm_tm_8, - asgnm_tm_9, - asgnm_tm_10, - asgnm_tm_11, - asgnm_tm_12 - - - - - - a.instr_div AS instrDiv, - a.user_id AS userId, - a.lctr_stng_ord AS lctrStngOrd, - - a.sun_lctr_yn AS sunLctrYn, - a.mon_lctr_yn AS monLctrYn, - a.tue_lctr_yn AS tueLctrYn, - a.wed_lctr_yn AS wedLctrYn, - a.thu_lctr_yn AS thuLctrYn, - a.fri_lctr_yn AS friLctrYn, - a.sat_lctr_yn AS satLctrYn, - a.zoom_yn AS zoomYn, - a.yr_mxmm_asgnm_tm AS yrMxmmAsgnmTm, - a.mnt_mnmm_tm AS mntMnmmTm, - a.prfrn_fld_cd AS prfrnFldCd, - a.onln_psbl_yn AS onlnPsblYn, - - a.sbmt_yn AS sbmtYn, - a.sbmt_pnttm AS sbmtPnttm, - a.aprvl_cd AS aprvlCd, - a.aprvl_pnttm AS aprvlPnttm, - - a.aprvl_id AS aprvlId, - a.aprvl_cn AS aprvlCn, - - DATE_FORMAT(a.frst_regist_pnttm,'%Y-%m-%d') AS frstRegistPnttm, - a.frst_register_id AS frstRegisterId, - DATE_FORMAT(a.last_updt_pnttm,'%Y-%m-%d') AS lastUpdtPnttm, - a.last_updusr_id AS lastUpdusrId, - - a.use_yn AS useYn, - - a.isltn_psbl_yn AS isltnPsblYn, - a.cntns_lctr_psbl_yn AS cntnsLctrPsblYn, - - a.lctr_stng_yr AS lctrStngYr, - a.asgnm_tm_1 AS asgnmTm1, - a.asgnm_tm_2 AS asgnmTm2, - a.asgnm_tm_3 AS asgnmTm3, - a.asgnm_tm_4 AS asgnmTm4, - a.asgnm_tm_5 AS asgnmTm5, - a.asgnm_tm_6 AS asgnmTm6, - a.asgnm_tm_7 AS asgnmTm7, - a.asgnm_tm_8 AS asgnmTm8, - a.asgnm_tm_9 AS asgnmTm9, - a.asgnm_tm_10 AS asgnmTm10, - a.asgnm_tm_11 AS asgnmTm11, - a.asgnm_tm_12 AS asgnmTm12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + ve_lctr_stng + + + + + instr_div, + user_id, + lctr_stng_ord, + + sun_lctr_yn, + mon_lctr_yn, + tue_lctr_yn, + wed_lctr_yn, + thu_lctr_yn, + fri_lctr_yn, + sat_lctr_yn, + zoom_yn, + yr_mxmm_asgnm_tm, + mnt_mnmm_tm, + prfrn_fld_cd, + onln_psbl_yn, + + sbmt_yn, + sbmt_pnttm, + aprvl_cd, + aprvl_pnttm, + aprvl_id, + aprvl_cn, + + frst_regist_pnttm, + frst_register_id, + last_updt_pnttm, + last_updusr_id, + + use_yn, + + isltn_psbl_yn, + cntns_lctr_psbl_yn, + + lctr_stng_yr, + asgnm_tm_1, + asgnm_tm_2, + asgnm_tm_3, + asgnm_tm_4, + asgnm_tm_5, + asgnm_tm_6, + asgnm_tm_7, + asgnm_tm_8, + asgnm_tm_9, + asgnm_tm_10, + asgnm_tm_11, + asgnm_tm_12 + + + + + + a.instr_div AS instrDiv, + a.user_id AS userId, + a.lctr_stng_ord AS lctrStngOrd, + + a.sun_lctr_yn AS sunLctrYn, + a.mon_lctr_yn AS monLctrYn, + a.tue_lctr_yn AS tueLctrYn, + a.wed_lctr_yn AS wedLctrYn, + a.thu_lctr_yn AS thuLctrYn, + a.fri_lctr_yn AS friLctrYn, + a.sat_lctr_yn AS satLctrYn, + a.zoom_yn AS zoomYn, + a.yr_mxmm_asgnm_tm AS yrMxmmAsgnmTm, + a.mnt_mnmm_tm AS mntMnmmTm, + a.prfrn_fld_cd AS prfrnFldCd, + a.onln_psbl_yn AS onlnPsblYn, + + a.sbmt_yn AS sbmtYn, + a.sbmt_pnttm AS sbmtPnttm, + a.aprvl_cd AS aprvlCd, + a.aprvl_pnttm AS aprvlPnttm, + + a.aprvl_id AS aprvlId, + a.aprvl_cn AS aprvlCn, + + DATE_FORMAT(a.frst_regist_pnttm,'%Y-%m-%d') AS frstRegistPnttm, + a.frst_register_id AS frstRegisterId, + DATE_FORMAT(a.last_updt_pnttm,'%Y-%m-%d') AS lastUpdtPnttm, + a.last_updusr_id AS lastUpdusrId, + + a.use_yn AS useYn, + + a.isltn_psbl_yn AS isltnPsblYn, + a.cntns_lctr_psbl_yn AS cntnsLctrPsblYn, + + a.lctr_stng_yr AS lctrStngYr, + a.asgnm_tm_1 AS asgnmTm1, + a.asgnm_tm_2 AS asgnmTm2, + a.asgnm_tm_3 AS asgnmTm3, + a.asgnm_tm_4 AS asgnmTm4, + a.asgnm_tm_5 AS asgnmTm5, + a.asgnm_tm_6 AS asgnmTm6, + a.asgnm_tm_7 AS asgnmTm7, + a.asgnm_tm_8 AS asgnmTm8, + a.asgnm_tm_9 AS asgnmTm9, + a.asgnm_tm_10 AS asgnmTm10, + a.asgnm_tm_11 AS asgnmTm11, + a.asgnm_tm_12 AS asgnmTm12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index f105363e..b19b0568 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -1,46 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp index 018a20ac..05e9b650 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtDetail.jsp @@ -107,7 +107,7 @@ 관할청 - + @@ -170,6 +170,17 @@ + + +

첨부파일

+ + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp index dc6792bd..d912d3c9 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp @@ -303,7 +303,7 @@ 형제 - + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp index 43093b00..c9f9485e 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMdfy.jsp @@ -29,7 +29,16 @@ 교육과정관리 @@ -227,6 +277,7 @@ +
@@ -281,7 +332,10 @@ 관할청 - " /> + @@ -358,6 +412,87 @@
+ + + + +

필수입력 항목*

+

첨부파일

+ + + + + +

첨부파일 가능 용량은 20MB입니다.

업로드 순서는 1.신청서 2.안내문 입니다.

+
+ + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + + "> + + "> + + +
+
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp index 6310e166..8e122c66 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp @@ -31,22 +31,9 @@ @@ -239,7 +271,10 @@ 관할청 - + @@ -316,6 +351,88 @@ + + + +

필수입력 항목*

+

첨부파일

+ + + + + +

첨부파일 가능 용량은 20MB입니다.

+
+ + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + + "> + + "> + + +
+
+ + + + diff --git a/src/main/webapp/js/ncms_common_sendmail.js b/src/main/webapp/js/ncms_common_sendmail.js index fff80920..9ead47f6 100644 --- a/src/main/webapp/js/ncms_common_sendmail.js +++ b/src/main/webapp/js/ncms_common_sendmail.js @@ -1,379 +1,379 @@ -$(document).ready(function(){ //공통 js - /* 목록 정렬 항목 아이콘 표시 */ - var searchSortCnd = $("[name='searchSortCnd']").val(); - var searchSortOrd = $("[name='searchSortOrd']").val(); - if (searchSortCnd != "" && searchSortOrd != "" && searchSortCnd != undefined && searchSortOrd != undefined) { - var $sort_div = $("#sort_"+ searchSortCnd); - var sortClass = 'sortBtnAsc' ; - if (searchSortOrd == "desc") sortClass = "sortBtnDesc"; - $sort_div.replaceClass('btn_sort' , sortClass) ; - $sort_div.attr("btn_sort", searchSortOrd); - } - - // 정렬 항목 이벤트 - $(".sort").click(function(e) { - listSortOrd(this); - }); - - //파일업로드 드래그앤 드롭 - var objDragAndDrop = $(".upload_area"); - $(document).on("dragenter",".upload_area",function(e){ - e.stopPropagation(); - e.preventDefault(); - //$(this).css('border', '2px solid #0B85A1'); - }); - $(document).on("dragover",".upload_area",function(e){ - e.stopPropagation(); - e.preventDefault(); - }); - $(document).on("drop",".upload_area",function(e){ - //$(this).css('border', '2px dotted #0B85A1'); - e.preventDefault(); - var files = e.originalEvent.dataTransfer.files; - handleFileUpload(files,objDragAndDrop); //파일업로드 - }); - - $(document).on('dragenter', function (e){ - e.stopPropagation(); - e.preventDefault(); - }); - $(document).on('dragover', function (e){ - e.stopPropagation(); - e.preventDefault(); - //objDragAndDrop.css('border', '2px dotted #0B85A1'); - }); - $(document).on('drop', function (e){ - e.stopPropagation(); - e.preventDefault(); - }); - - drawUploadArea() - $(function(){ //단일 파일업로드 - $('#file_temp').change(function(e){ - var objUpload = $(".upload_area"); - var files = $('#file_temp')[0].files; - handleFileUpload(files,objUpload); //파일업로드 - }); - }); - - //최대 업로드 파일갯수 화면 노출 세팅 - if($("[name='limitcount']").length>0){ - if($('.limitcount_li').length > 0){ - $('.limitcount_li').text($("[name='limitcount']").val()); - } - - } - - //프린트 워커 마크 - $('.printBtn').click(function(e){ - if(!confirm("프린트 하시겠습니까?")){ - return false; - } - var printPopup ; - printPopup= window.open("/tempPrint.html","print_open","width=760,height=750,top=0,left=0,noresizable,toolbar=no,status=no,scrollbars=yes,directory=n"); - }); -}); - -//목록 정렬 항목 클릭 -function listSortOrd(obj){ - var sortOrd = $(obj).attr("sortOrd"); - var sortCnd = $(obj).attr("id"); - - $("[name='searchSortCnd']").val(sortCnd.substring(5)); // 구분자 제거 - if (sortOrd == "desc") $("[name='searchSortOrd']").val("asc"); - else $("[name='searchSortOrd']").val("desc"); - linkPage('1'); //각 JSP마다 다를때 메소드 정의해 줘야됨 -} - -//인쇄 영역 공통 -function printDiv(divName) { - var printContents = $("."+divName).html(); - var originalContents = document.body.innerHTML; - document.body.innerHTML = printContents; - window.print(); - document.body.innerHTML = originalContents; - - //originalContents 다시 그려줘서 이전의 메소드 다시 재지정 - $(".sort").click(function(e) { - listSortOrd(this); - }); -} - -function printDiv2(divName) { - var printContents = document.getElementById(divName).innerHTML; - var originalContents = document.body.innerHTML; - document.body.innerHTML = printContents; - window.print(); - document.body.innerHTML = originalContents; -} - -/* 파일사이즈 가져오기 */ -function getStrFileSize(filesize){ - var sizeStr=""; - var sizeKB = filesize/1024; - if(parseInt(sizeKB) > 1024){ - var sizeMB = sizeKB/1024; - sizeStr = sizeMB.toFixed(2)+" MB"; - }else{ - sizeStr = sizeKB.toFixed(2)+" KB"; - } - return sizeStr; -} - -/* 파일 이미지 가져오기 */ -function getfile_img(file_name){ - var img_type = file_name.split('.')[file_name.split('.').length-1].toLowerCase(); - if(img_type == "xlsx"){ - img_type = "xls"; - }else if(img_type == "jpeg" || img_type == "png" || img_type == "bmp"){ - img_type = "jpg"; - }else if(img_type == "doc"){ - img_type = "hwp"; - } - - var img_url = ""; - switch (img_type) { - case "pdf" : - img_url = "/direct/img/enroll_pdf_file.png" ; - break; - case "xls" : - img_url = "/direct/img/enroll_exel_file.png" ; - break; - case "hwp" : - img_url = "/direct/img/enroll_hwp_file.png" ; - break; - case "jpg" : - img_url = "/direct/img/enroll_jpg_file.png" ; - break; - case "mp4" : - img_url = "/direct/img/enroll_mp4_file.png" ; - break; - case "ppt" : - img_url = "/direct/img/enroll_ppt_file.png" ; - break; - case "zip" : - img_url = "/direct/img/enroll_zip_file.png" ; - break; - default : - img_url = "/direct/img/enroll_jpg_file.png" ; - } - - return img_url ; -} - -/*등록 시간 가져오기 */ -function getDate(){ - var d = new Date(); - var year = d.getFullYear(); - var month = d.getMonth() + 1 ; month.toString().length < 2 ? month = "0"+month : month; - var date = d.getDate() ; date.toString().length < 2 ? date = "0"+date : date; - var currentDate = year+"-"+month+"-"+date+" "; - var hour = d.getHours(); hour.toString().length < 2 ? hour = "0"+hour : hour; - var minutes = d.getMinutes() ; minutes.toString().length < 2 ? minutes = "0"+minutes : minutes; - var seconds = d.getSeconds() ; seconds.toString().length < 2 ? seconds = "0"+seconds : hour; - currentTime = hour+"-"+minutes+"-"+seconds ; - return currentDate + currentTime ; -} - -/*파일 드래그앤 드롭*/ -/* 파일등록 */ -var _fileIdx = 0; -var _fileForm2 = new Array(); -function handleFileUpload(files,obj) //업로드 function -{ - var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB) - var limitcount = $("input[name=limitcount]").val()*1 ; - if($('#tbody_fiielist').find('tr').length + files.length > limitcount ){ - alert("업로드 파일은 최대 "+limitcount+"개 입니다."); - return ; - } - for (var i = 0; i < files.length; i++){ - if(files[i].size > limitsize){ - alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 50MB이하만 업로드 가능합니다."); - return ; - } - } - - for (var i = 0; i < files.length; i++) - { - var fd = new FormData(); - fd.append('file', files[i]); - var tmpObj = new Object(); - tmpObj.name = "file_" + _fileIdx; - tmpObj.fileObj = files[i]; - - _fileForm2.push(tmpObj); - sendFileToServer(fd, obj, files[i], _fileIdx); - _fileIdx++; - - var totalfileSize = 0; - $('.totalfileCount').text($('.item_file_size').length) ; - $('.item_file_size').each(function(){ - totalfileSize += $(this).val()*1 ; - }); - $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; - } -} - -function sendFileToServer(formData, obj , fileObj, _fileIdx) -{ - $('.no_img_box').hide(); //list 박스 형식 변경 - $('.file_list_div').show(); - var list_html = ""; - var tt = ""; - list_html += ''; - - list_html += ''+fileObj.name+''; - list_html += ''+getStrFileSize(fileObj.size)+''; - list_html += ''+getDate()+''; - list_html += ''; - list_html += ''; - list_html += ''; - list_html += ''; - $('#tbody_fiielist').append(list_html); -} - -function resetFileZone(){ - $('.file_size').each(function(index, element){ - $(this).text(getStrFileSize($(this).text())) ; - }); -} - -/* 등록되어 있는 파일 삭제버튼 클릭시 */ -function delAtchFile(itemId , fileSn){ - if(!confirm("삭제하시겠습니까?")){ - return false; - } - - $.ajax({ - type: "POST", - url: "/uss/ion/fms/fmsfileDeleteAjax.do", - data:{ "atchFileId" : itemId , "fileSn" : fileSn}, - dataType:'json', - cache: false, - async: false, - timeout: 600000, - success: function (returnData, status) { - if(status == 'success'){ - if(returnData.result == 'fail'){ - alert("삭제처리가 실패하였습니다."); - }else if(returnData.result == 'auth_fail'){ - alert("세션이 종료되었습니다."); - }else if(returnData.result =='success'){ - $('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn).remove(); - alert("삭제되었습니다."); - drawUploadArea(); - $('.td_txt_exist > img').attr('src', '/images/no_img.jpg') ; - } - }else{ - alert("삭제처리에 실패하였습니다."); - } - }, - error: function (e) { - console.log("ERROR : ", e); - alert("삭제처리에 실패하였습니다."); - } - }); -} - -/* 임시파일 삭제버튼 클릭시 */ -function delete_item(obj, fileIdx){ - $(obj).closest("tr").remove(); - _fileForm2.forEach(function(fobj, idx) { - if (fobj.name == ("file_" + fileIdx)) _fileForm2[idx] = ""; - }); - - if($('.item_file_size').length == 0){ - $('.file_upload_box ').show(); - $('.upload_box_text').show(); - $('.fileAfter').hide(); - }else{ - var totalfileSize = 0; - $('.totalfileCount').text($('.item_file_size').length) ; - $('.item_file_size').each(function(){ - totalfileSize += $(this).val()*1 ; - }); - $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; - } -} - -function drawUploadArea(){ - $('.no_img_box').hide(); //list 박스 형식 변경 - $('.file_list_div').show(); - - $('.file_name_text').each(function(index, item){ - $(this).parent().find('img').attr('src', getfile_img($(this).text())) ; //이미지 변경 - }); - $('.file_size_text').each(function(index, item){ - $(this).text(getStrFileSize($(this).attr('value'))) - }); - - var totalfileSize = 0; - $('.totalfileCount').text($('.item_file_size').length) ; - $('.item_file_size').each(function(){ - totalfileSize += $(this).val()*1 ; - }); - $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; - - - if( $("#tbody_fiielist > [class^=item]").length == 0 && $("#tbody_fiielist > [class^=item]").size() == 0 ){ - $('.no_img_box').show(); - $('.file_list_div ').hide(); - } -} - -/* 글 저장 function */ -function goSave(method_parm ){ //method_parm :관리자로그 메소드에서 사용.(파일업로드 부분 공통으로 사용하여, 페이지 구분을 위해) - if(undefined !=$("input[name=limitcount]").val() && ""!=$("input[name=limitcount]").val() ){ - if($('#tbody_fiielist').find('tr').length == 0){ - alert("첨부파일을 추가해 주십시오"); - return false; - } - } - - var msg; - msg = "해당 첨부파일을 수정하시겠습니까?"; - var data = new FormData(document.writeForm == undefined ? document.board : document.writeForm); - _fileForm2.forEach(function(obj, idx) { - if (obj) data.append("file"+idx, obj.fileObj); - }); - - var url = ""; - if($("#pageType").val() == "insert"){ - url = "/cop/bbs/insertBoardArticleAjax.do"; - }else{ - url = document.writeForm == undefined ? "/kcc/mail/itnSendMailPro.do" : "/kcc/mail/itnSendMailPro.do"; - } - - $.ajax({ - type: "POST", - enctype: 'multipart/form-data', - url: url, - data: data, - dataType:'json', - async: false, - processData: false, - contentType: false, - cache: false, - //timeout: 600000, - success: function (returnData, status) { - if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 - if("fail"==returnData.result){ - alert(returnData.message); - return; - } - alert("저장 되었습니다."); - goList(); - } else if(status== 'fail'){ - alert("저장에 실패하였습니다. !!"); - } - }, - error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); } - }); -} - -(function ($) { - $.fn.replaceClass = function (pFromClass, pToClass) { - return this.removeClass(pFromClass).addClass(pToClass); - }; -}(jQuery)); +$(document).ready(function(){ //공통 js + /* 목록 정렬 항목 아이콘 표시 */ + var searchSortCnd = $("[name='searchSortCnd']").val(); + var searchSortOrd = $("[name='searchSortOrd']").val(); + if (searchSortCnd != "" && searchSortOrd != "" && searchSortCnd != undefined && searchSortOrd != undefined) { + var $sort_div = $("#sort_"+ searchSortCnd); + var sortClass = 'sortBtnAsc' ; + if (searchSortOrd == "desc") sortClass = "sortBtnDesc"; + $sort_div.replaceClass('btn_sort' , sortClass) ; + $sort_div.attr("btn_sort", searchSortOrd); + } + + // 정렬 항목 이벤트 + $(".sort").click(function(e) { + listSortOrd(this); + }); + + //파일업로드 드래그앤 드롭 + var objDragAndDrop = $(".upload_area"); + $(document).on("dragenter",".upload_area",function(e){ + e.stopPropagation(); + e.preventDefault(); + //$(this).css('border', '2px solid #0B85A1'); + }); + $(document).on("dragover",".upload_area",function(e){ + e.stopPropagation(); + e.preventDefault(); + }); + $(document).on("drop",".upload_area",function(e){ + //$(this).css('border', '2px dotted #0B85A1'); + e.preventDefault(); + var files = e.originalEvent.dataTransfer.files; + handleFileUpload(files,objDragAndDrop); //파일업로드 + }); + + $(document).on('dragenter', function (e){ + e.stopPropagation(); + e.preventDefault(); + }); + $(document).on('dragover', function (e){ + e.stopPropagation(); + e.preventDefault(); + //objDragAndDrop.css('border', '2px dotted #0B85A1'); + }); + $(document).on('drop', function (e){ + e.stopPropagation(); + e.preventDefault(); + }); + + drawUploadArea() + $(function(){ //단일 파일업로드 + $('#file_temp').change(function(e){ + var objUpload = $(".upload_area"); + var files = $('#file_temp')[0].files; + handleFileUpload(files,objUpload); //파일업로드 + }); + }); + + //최대 업로드 파일갯수 화면 노출 세팅 + if($("[name='limitcount']").length>0){ + if($('.limitcount_li').length > 0){ + $('.limitcount_li').text($("[name='limitcount']").val()); + } + + } + + //프린트 워커 마크 + $('.printBtn').click(function(e){ + if(!confirm("프린트 하시겠습니까?")){ + return false; + } + var printPopup ; + printPopup= window.open("/tempPrint.html","print_open","width=760,height=750,top=0,left=0,noresizable,toolbar=no,status=no,scrollbars=yes,directory=n"); + }); +}); + +//목록 정렬 항목 클릭 +function listSortOrd(obj){ + var sortOrd = $(obj).attr("sortOrd"); + var sortCnd = $(obj).attr("id"); + + $("[name='searchSortCnd']").val(sortCnd.substring(5)); // 구분자 제거 + if (sortOrd == "desc") $("[name='searchSortOrd']").val("asc"); + else $("[name='searchSortOrd']").val("desc"); + linkPage('1'); //각 JSP마다 다를때 메소드 정의해 줘야됨 +} + +//인쇄 영역 공통 +function printDiv(divName) { + var printContents = $("."+divName).html(); + var originalContents = document.body.innerHTML; + document.body.innerHTML = printContents; + window.print(); + document.body.innerHTML = originalContents; + + //originalContents 다시 그려줘서 이전의 메소드 다시 재지정 + $(".sort").click(function(e) { + listSortOrd(this); + }); +} + +function printDiv2(divName) { + var printContents = document.getElementById(divName).innerHTML; + var originalContents = document.body.innerHTML; + document.body.innerHTML = printContents; + window.print(); + document.body.innerHTML = originalContents; +} + +/* 파일사이즈 가져오기 */ +function getStrFileSize(filesize){ + var sizeStr=""; + var sizeKB = filesize/1024; + if(parseInt(sizeKB) > 1024){ + var sizeMB = sizeKB/1024; + sizeStr = sizeMB.toFixed(2)+" MB"; + }else{ + sizeStr = sizeKB.toFixed(2)+" KB"; + } + return sizeStr; +} + +/* 파일 이미지 가져오기 */ +function getfile_img(file_name){ + var img_type = file_name.split('.')[file_name.split('.').length-1].toLowerCase(); + if(img_type == "xlsx"){ + img_type = "xls"; + }else if(img_type == "jpeg" || img_type == "png" || img_type == "bmp"){ + img_type = "jpg"; + }else if(img_type == "doc"){ + img_type = "hwp"; + } + + var img_url = ""; + switch (img_type) { + case "pdf" : + img_url = "/direct/img/enroll_pdf_file.png" ; + break; + case "xls" : + img_url = "/direct/img/enroll_exel_file.png" ; + break; + case "hwp" : + img_url = "/direct/img/enroll_hwp_file.png" ; + break; + case "jpg" : + img_url = "/direct/img/enroll_jpg_file.png" ; + break; + case "mp4" : + img_url = "/direct/img/enroll_mp4_file.png" ; + break; + case "ppt" : + img_url = "/direct/img/enroll_ppt_file.png" ; + break; + case "zip" : + img_url = "/direct/img/enroll_zip_file.png" ; + break; + default : + img_url = "/direct/img/enroll_jpg_file.png" ; + } + + return img_url ; +} + +/*등록 시간 가져오기 */ +function getDate(){ + var d = new Date(); + var year = d.getFullYear(); + var month = d.getMonth() + 1 ; month.toString().length < 2 ? month = "0"+month : month; + var date = d.getDate() ; date.toString().length < 2 ? date = "0"+date : date; + var currentDate = year+"-"+month+"-"+date+" "; + var hour = d.getHours(); hour.toString().length < 2 ? hour = "0"+hour : hour; + var minutes = d.getMinutes() ; minutes.toString().length < 2 ? minutes = "0"+minutes : minutes; + var seconds = d.getSeconds() ; seconds.toString().length < 2 ? seconds = "0"+seconds : hour; + currentTime = hour+"-"+minutes+"-"+seconds ; + return currentDate + currentTime ; +} + +/*파일 드래그앤 드롭*/ +/* 파일등록 */ +var _fileIdx = 0; +var _fileForm2 = new Array(); +function handleFileUpload(files,obj) //업로드 function +{ + var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB) + var limitcount = $("input[name=limitcount]").val()*1 ; + if($('#tbody_fiielist').find('tr').length + files.length > limitcount ){ + alert("업로드 파일은 최대 "+limitcount+"개 입니다."); + return ; + } + for (var i = 0; i < files.length; i++){ + if(files[i].size > limitsize){ + alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 50MB이하만 업로드 가능합니다."); + return ; + } + } + + for (var i = 0; i < files.length; i++) + { + var fd = new FormData(); + fd.append('file', files[i]); + var tmpObj = new Object(); + tmpObj.name = "file_" + _fileIdx; + tmpObj.fileObj = files[i]; + + _fileForm2.push(tmpObj); + sendFileToServer(fd, obj, files[i], _fileIdx); + _fileIdx++; + + var totalfileSize = 0; + $('.totalfileCount').text($('.item_file_size').length) ; + $('.item_file_size').each(function(){ + totalfileSize += $(this).val()*1 ; + }); + $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; + } +} + +function sendFileToServer(formData, obj , fileObj, _fileIdx) +{ + $('.no_img_box').hide(); //list 박스 형식 변경 + $('.file_list_div').show(); + var list_html = ""; + var tt = ""; + list_html += ''; + + list_html += ''+fileObj.name+''; + list_html += ''+getStrFileSize(fileObj.size)+''; + list_html += ''+getDate()+''; + list_html += ''; + list_html += ''; + list_html += ''; + list_html += ''; + $('#tbody_fiielist').append(list_html); +} + +function resetFileZone(){ + $('.file_size').each(function(index, element){ + $(this).text(getStrFileSize($(this).text())) ; + }); +} + +/* 등록되어 있는 파일 삭제버튼 클릭시 */ +function delAtchFile(itemId , fileSn){ + if(!confirm("삭제하시겠습니까?")){ + return false; + } + + $.ajax({ + type: "POST", + url: "/uss/ion/fms/fmsfileDeleteAjax.do", + data:{ "atchFileId" : itemId , "fileSn" : fileSn}, + dataType:'json', + cache: false, + async: false, + timeout: 600000, + success: function (returnData, status) { + if(status == 'success'){ + if(returnData.result == 'fail'){ + alert("삭제처리가 실패하였습니다."); + }else if(returnData.result == 'auth_fail'){ + alert("세션이 종료되었습니다."); + }else if(returnData.result =='success'){ + $('.item_'+returnData.fmsFileVO.atchFileId+"_"+returnData.fmsFileVO.fileSn).remove(); + alert("삭제되었습니다."); + drawUploadArea(); + $('.td_txt_exist > img').attr('src', '/images/no_img.jpg') ; + } + }else{ + alert("삭제처리에 실패하였습니다."); + } + }, + error: function (e) { + console.log("ERROR : ", e); + alert("삭제처리에 실패하였습니다."); + } + }); +} + +/* 임시파일 삭제버튼 클릭시 */ +function delete_item(obj, fileIdx){ + $(obj).closest("tr").remove(); + _fileForm2.forEach(function(fobj, idx) { + if (fobj.name == ("file_" + fileIdx)) _fileForm2[idx] = ""; + }); + + if($('.item_file_size').length == 0){ + $('.file_upload_box ').show(); + $('.upload_box_text').show(); + $('.fileAfter').hide(); + }else{ + var totalfileSize = 0; + $('.totalfileCount').text($('.item_file_size').length) ; + $('.item_file_size').each(function(){ + totalfileSize += $(this).val()*1 ; + }); + $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; + } +} + +function drawUploadArea(){ + $('.no_img_box').hide(); //list 박스 형식 변경 + $('.file_list_div').show(); + + $('.file_name_text').each(function(index, item){ + $(this).parent().find('img').attr('src', getfile_img($(this).text())) ; //이미지 변경 + }); + $('.file_size_text').each(function(index, item){ + $(this).text(getStrFileSize($(this).attr('value'))) + }); + + var totalfileSize = 0; + $('.totalfileCount').text($('.item_file_size').length) ; + $('.item_file_size').each(function(){ + totalfileSize += $(this).val()*1 ; + }); + $('.totalfileSize').text(getStrFileSize(totalfileSize)) ; + + + if( $("#tbody_fiielist > [class^=item]").length == 0 && $("#tbody_fiielist > [class^=item]").size() == 0 ){ + $('.no_img_box').show(); + $('.file_list_div ').hide(); + } +} + +/* 글 저장 function */ +function goSave(method_parm ){ //method_parm :관리자로그 메소드에서 사용.(파일업로드 부분 공통으로 사용하여, 페이지 구분을 위해) + if(undefined !=$("input[name=limitcount]").val() && ""!=$("input[name=limitcount]").val() ){ + if($('#tbody_fiielist').find('tr').length == 0){ + alert("첨부파일을 추가해 주십시오"); + return false; + } + } + + var msg; + msg = "해당 첨부파일을 수정하시겠습니까?"; + var data = new FormData(document.writeForm == undefined ? document.board : document.writeForm); + _fileForm2.forEach(function(obj, idx) { + if (obj) data.append("file"+idx, obj.fileObj); + }); + + var url = ""; + if($("#pageType").val() == "insert"){ + url = "/cop/bbs/insertBoardArticleAjax.do"; + }else{ + url = document.writeForm == undefined ? "/kcc/mail/itnSendMailPro.do" : "/kcc/mail/itnSendMailPro.do"; + } + + $.ajax({ + type: "POST", + enctype: 'multipart/form-data', + url: url, + data: data, + dataType:'json', + async: false, + processData: false, + contentType: false, + cache: false, + //timeout: 600000, + success: function (returnData, status) { + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 + if("fail"==returnData.result){ + alert(returnData.message); + return; + } + alert("저장 되었습니다."); + goList(); + } else if(status== 'fail'){ + alert("저장에 실패하였습니다. !!"); + } + }, + error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); } + }); +} + +(function ($) { + $.fn.replaceClass = function (pFromClass, pToClass) { + return this.removeClass(pFromClass).addClass(pToClass); + }; +}(jQuery)); diff --git a/src/main/webapp/js/util.js b/src/main/webapp/js/util.js index 10df2fd1..6f03330e 100644 --- a/src/main/webapp/js/util.js +++ b/src/main/webapp/js/util.js @@ -1,134 +1,134 @@ -String.prototype.bytes = function() { - var str = this; - var l = 0; - for (var i=0; i 128) ? 3 : 1; - return l; -}; - -String.prototype.cut = function(len) { - var str = this; - var l = 0; - for (var i=0; i 128) ? 3 : 1; - if (l > len) return str.substring(0,i); - } - return str; -}; - -/** - * object empty check - * */ - -function emptyObject(param){ - return Object.keys(param).length === 0; -} - - - -function isEmptyList(data){ - if(data == undefined || data == null || data.length == 0){ - return true; - } - return false; -} - - -function dateFormatStr (dateStr) { - var refinedDateStr; - var rv; - - if (dateStr == null) { - return null; - } - refinedDateStr = dateStr.match(/\d+/g); - if (refinedDateStr == null || refinedDateStr.length == 0) { - return null; - } - refinedDateStr = refinedDateStr + ""; - switch (refinedDateStr.length) { - case 4: - rv = moment(refinedDateStr, "HHmm"); - break; - case 6: - rv = moment(refinedDateStr, "HHmmss"); - break; - case 8: - rv = moment(refinedDateStr, "YYYYMMDD"); - break; - case 12: - rv = moment(refinedDateStr, "YYYYMMDDHHmm"); - break; - case 14: - rv = moment(refinedDateStr, "YYYYMMDDHHmmss"); - break; - default: - throw new Error("invalid date str " + dateStr); - } - return rv; -} - -function dateFormat(str, type) { - var date = dateFormatStr(str); - if (date == null) { - return ""; - } - - if (type == "slash") { - return date.format("YYYY/MM/DD"); - } else if (type == "date") { - return date.format("YYYY.MM.DD"); - } else if (type == "colon") { - return date.format("YYYY:MM:DD"); - } else if (type == "dash") { - return date.format("YYYY-MM-DD"); - }else if(type == "normal"){ - return date.format("YYYYMMDD"); - } else { - return date.format("YYYY-MM-DD"); - } -}; - -function timeFomat (value, type) { - var date = dateFormatStr(value); - if (date == null) { - return ""; - } - - if (type == "slash") { - return date.format("HH:mm:ss"); - } else if (type == "date") { - return date.format("HH:mm:ss"); - } else if (type == "colon") { - return date.format("HH:mm:ss"); - } else if (type == "dash") { - return date.format("HH:mm:ss"); - } else { - return date.format("HH:mm"); - } -}; - -function countBytes(obj, len, target){ - var cnt = obj.value.bytes(); - var txtSplit; - var ieVersion; - if(cnt > 0){ - txtSplit = (obj.value).split("\n"); - if(navigator.appName == "Microsoft Internet Explorer"){ - ieVersion = navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5,navigator.appVersion.indexOf("MSIE")+8); - if(ieVersion >= "9.0"){ - cnt += txtSplit.length - 1 - } - }else{ - cnt += txtSplit.length - 1 - } - } - - if(cnt <= len){ - target.textContent = cnt; - }else{ - alert("허용 글자수를 초과하였습니다."); - obj.value = obj.value.cut(len - txtSplit.length + 1); - target.textContent = obj.value.bytes(); - } -} - +String.prototype.bytes = function() { + var str = this; + var l = 0; + for (var i=0; i 128) ? 3 : 1; + return l; +}; + +String.prototype.cut = function(len) { + var str = this; + var l = 0; + for (var i=0; i 128) ? 3 : 1; + if (l > len) return str.substring(0,i); + } + return str; +}; + +/** + * object empty check + * */ + +function emptyObject(param){ + return Object.keys(param).length === 0; +} + + + +function isEmptyList(data){ + if(data == undefined || data == null || data.length == 0){ + return true; + } + return false; +} + + +function dateFormatStr (dateStr) { + var refinedDateStr; + var rv; + + if (dateStr == null) { + return null; + } + refinedDateStr = dateStr.match(/\d+/g); + if (refinedDateStr == null || refinedDateStr.length == 0) { + return null; + } + refinedDateStr = refinedDateStr + ""; + switch (refinedDateStr.length) { + case 4: + rv = moment(refinedDateStr, "HHmm"); + break; + case 6: + rv = moment(refinedDateStr, "HHmmss"); + break; + case 8: + rv = moment(refinedDateStr, "YYYYMMDD"); + break; + case 12: + rv = moment(refinedDateStr, "YYYYMMDDHHmm"); + break; + case 14: + rv = moment(refinedDateStr, "YYYYMMDDHHmmss"); + break; + default: + throw new Error("invalid date str " + dateStr); + } + return rv; +} + +function dateFormat(str, type) { + var date = dateFormatStr(str); + if (date == null) { + return ""; + } + + if (type == "slash") { + return date.format("YYYY/MM/DD"); + } else if (type == "date") { + return date.format("YYYY.MM.DD"); + } else if (type == "colon") { + return date.format("YYYY:MM:DD"); + } else if (type == "dash") { + return date.format("YYYY-MM-DD"); + }else if(type == "normal"){ + return date.format("YYYYMMDD"); + } else { + return date.format("YYYY-MM-DD"); + } +}; + +function timeFomat (value, type) { + var date = dateFormatStr(value); + if (date == null) { + return ""; + } + + if (type == "slash") { + return date.format("HH:mm:ss"); + } else if (type == "date") { + return date.format("HH:mm:ss"); + } else if (type == "colon") { + return date.format("HH:mm:ss"); + } else if (type == "dash") { + return date.format("HH:mm:ss"); + } else { + return date.format("HH:mm"); + } +}; + +function countBytes(obj, len, target){ + var cnt = obj.value.bytes(); + var txtSplit; + var ieVersion; + if(cnt > 0){ + txtSplit = (obj.value).split("\n"); + if(navigator.appName == "Microsoft Internet Explorer"){ + ieVersion = navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5,navigator.appVersion.indexOf("MSIE")+8); + if(ieVersion >= "9.0"){ + cnt += txtSplit.length - 1 + } + }else{ + cnt += txtSplit.length - 1 + } + } + + if(cnt <= len){ + target.textContent = cnt; + }else{ + alert("허용 글자수를 초과하였습니다."); + obj.value = obj.value.cut(len - txtSplit.length + 1); + target.textContent = obj.value.bytes(); + } +} + From 3b0e7d552e15b7a9f56ea053e2db50fceec1b0bc Mon Sep 17 00:00:00 2001 From: jiwoo Date: Tue, 7 Nov 2023 14:17:33 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9A=B0=20-=20=EC=A0=80?= =?UTF-8?q?=EC=9E=91=EA=B6=8C=EC=B2=B4=ED=97=98=EA=B5=90=EC=8B=A4=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=EC=82=AC=ED=95=AD=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml | 2 +- .../cpyrgExprnClsrm/oprtnAplctMngDetail.jsp | 16 ++++- .../cpyrgExprnClsrm/oprtnAplctMngReg.jsp | 6 -- .../exprnClsrmEnd/exprnClsrmEndDetail.jsp | 6 +- .../exprnClsrmEnd/exprnClsrmEndList.jsp | 10 +-- .../exprnClsrmInfo/exprnClsrmAplctDetail.jsp | 62 +++++++------------ .../exprnClsrmInfo/exprnClsrmAplctList.jsp | 10 +-- .../exprnClsrmInfo/exprnClsrmAplctReg.jsp | 37 ++++++----- .../exprnClsrmInfo/exprnPlanDashboard.jsp | 12 ++-- .../exprnClsrmInfo/exprnRsltDashboard.jsp | 6 +- .../exprnClsrmInfo/popup/cautionGuide.jsp | 41 +++++++----- 11 files changed, 106 insertions(+), 102 deletions(-) diff --git a/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml index 18fdaa43..a28ac4cf 100644 --- a/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/edu/VEEduAplct_SQL_Tibero.xml @@ -950,7 +950,7 @@ ,LAST_UPDUSR_ID = #lastUpdusrId# , SBMT_YN = #sbmtYn# - , SBMT_PNTTM = IF(#sbmtYn# = 'Y', SYSDATE, NULL) + , SBMT_PNTTM = CASE WHEN #sbmtYn# = 'Y' THEN SYSDATE ELSE NULL END , APRVL_CD = #aprvlCd# diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngDetail.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngDetail.jsp index 0a3e61ad..d706d5fd 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngDetail.jsp @@ -215,6 +215,16 @@ + + + +

수정요청사유

+ + + + + +
@@ -344,13 +354,13 @@ -

대상학년

+

대상학년/반

${info.trgtGrade} - + <%--

대상반

- ${info.trgtClsrm} + ${info.trgtClsrm} --%> diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngReg.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngReg.jsp index 63dfd005..4eb6d1ae 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngReg.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cpyrgExprnClsrm/oprtnAplctMngReg.jsp @@ -305,12 +305,6 @@ $("#trgtGrade").focus(); return false; } - if($('#trgtClsrm').val() == ''){ - alert('대상반을 입력해주세요.'); - $("#trgtClsrm").focus(); - return false; - } - if($('#trgtPrsnl').val() == ''){ alert('학생수를 입력해주세요.'); $("#trgtPrsnl").focus(); diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp index 60517d15..c83e8a88 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.jsp @@ -494,13 +494,13 @@ -

대상학년

+

대상학년/반

${info.trgtGrade} - + <%--

대상반

- ${info.trgtClsrm} + ${info.trgtClsrm} --%> diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.jsp index b6df89ea..036a5617 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.jsp @@ -83,8 +83,8 @@ - + @@ -92,8 +92,8 @@ + - @@ -108,13 +108,13 @@ - - - - - - + + + + + +
번호운영 연도 교육내용접수종료일 신청일 학교명 처리상태 - ${list.chrgMjr} + + - - + ${list.chrgMjr} diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctDetail.jsp index 77d1b810..0958bc7a 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctDetail.jsp @@ -119,13 +119,6 @@ -
- -
-

찾아가는 저작권 교육

- ‘찾아가는 저작권 교육’은 저작권 교육이 필요한 전국 초ㆍ중ㆍ고등학교, 청소년ㆍ아동복지ㆍ노인ㆍ장애인 기관 및 단체 등에 직접 방문하여 무료로 강의를 지원하는 맞춤형 교육 서비스입니다. -
-
@@ -150,7 +143,7 @@ - + - @@ -158,12 +151,6 @@
-

접수종료일

-
- -
@@ -181,21 +168,6 @@
-

접수종료일

-
- - - - - - - - - -

처리상태

@@ -231,6 +203,14 @@
${info.aprvlCn}
+

수정요청사유

+
${info.aprvlCn}
@@ -283,12 +263,6 @@ - - -

이메일

- - ${info.email} -

휴대폰

@@ -300,6 +274,12 @@

전화

${info.phone} + + +

이메일

+ + ${info.email} @@ -367,26 +347,26 @@ -

대상학년

+

대상학년/반

${info.trgtGrade} - + <%--

대상반

- ${info.trgtClsrm} + ${info.trgtClsrm} --%> -

대상학년

+

대상학년/반

${info.trgtGrade} - + <%--

대상반

${info.trgtClsrm} - + --%>

대상학생수

diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctList.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctList.jsp index 994d7095..bf40d380 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctList.jsp @@ -124,8 +124,8 @@ - + @@ -133,8 +133,8 @@ + - @@ -149,13 +149,13 @@ - + --%> diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnPlanDashboard.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnPlanDashboard.jsp index 34630e4b..aac3d295 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnPlanDashboard.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnPlanDashboard.jsp @@ -71,26 +71,26 @@ - - + --%> - + <%-- - + --%> - - + --%> - +
번호운영 연도 교육내용접수종료일 신청일 학교명 처리상태 - ${list.chrgMjr} + + - - + ${list.chrgMjr} diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctReg.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctReg.jsp index 098294ef..53a19304 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctReg.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctReg.jsp @@ -168,7 +168,7 @@ function fncSave(type){ - if(type == 'S'){ + if(type == 'S' || type == 'E'){ if (!validCheck()) return; } @@ -180,6 +180,9 @@ if(confirm("교육신청을 "+(type == 'I'? '임시저장' : '등록')+"하시겠습니까?")){ if(type == 'I'){ $("#sbmtYn").val("N"); + }else if(type == 'E'){ + $("#sbmtYn").val("Y"); + $("#aprvlCd").val(VeConstants.APRVL_CD_80); }else{ $("#sbmtYn").val("Y"); $("#aprvlCd").val(VeConstants.APRVL_CD_10); @@ -394,15 +397,21 @@ $("#trgtGrade").focus(); return false; } - if($('#trgtClsrm').val() == ''){ + /* if($('#trgtClsrm').val() == ''){ alert('대상반을 입력해주세요.'); $("#trgtClsrm").focus(); return false; - } + } */ if($('#trgtPrsnl').val() == ''){ - alert('학생수를 입력해주세요.'); + alert('전체학생 수를 입력해주세요.'); $("#trgtPrsnl").focus(); + return + false; + } + if($('#needTxtbNum').val() == ''){ + alert('필요 교재 수량을 입력해주세요.'); + $("#needTxtbNum").focus(); return false; } @@ -567,7 +576,7 @@ } $("#trgtGrade").val(info.trgtGrade); - $("#trgtClsrm").val(info.trgtClsrm); + /* $("#trgtClsrm").val(info.trgtClsrm); */ $("#trgtPrsnl").val(info.trgtPrsnl); $("#needTxtbNum").val(info.needTxtbNum); @@ -687,13 +696,12 @@ script="onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;'"/> - + ※ 학교명이 검색되지 않을 경우, 담당자에게 연락
-

필수입력 항목*

학교구분

@@ -785,7 +793,6 @@
-

필수입력 항목*

주소

@@ -897,25 +904,26 @@

필수입력 항목*

-

학년수

+

대상학년/반

- 학년 + + + <%--

필수입력 항목*

대상 반

반 -

필수입력 항목*

-

학생수

+

전체학생 수

@@ -964,10 +972,11 @@
+

필수입력 항목*

필요 교재 수량

- +
-

대상학년

+

대상학년/반

${info.trgtGrade} + <%--

대상반

${info.trgtClsrm}${info.trgtClsrm}
-

대상학년

+

대상학년/반

${info.trgtGrade}

대상반

${info.trgtClsrm}

대상학생수

diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnRsltDashboard.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnRsltDashboard.jsp index 88a3cffe..272de99b 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnRsltDashboard.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnRsltDashboard.jsp @@ -492,13 +492,13 @@
-

대상학년

+

대상학년/반

${info.trgtGrade} + <%--

대상반

${info.trgtClsrm}${info.trgtClsrm}
diff --git a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/cautionGuide.jsp b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/cautionGuide.jsp index 4507c3fd..003e2bb7 100644 --- a/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/cautionGuide.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/cautionGuide.jsp @@ -36,6 +36,12 @@ frm.submit(); } + function goMain(){ + var frm = document.getElementById("prcsOrdForm"); + frm.action = ""; + frm.submit(); + } +
@@ -59,21 +65,23 @@ -
· 신청서 접수 시 유의사항
-
-
    -
  1. 1.저작권 체험교실 운영 신청만 가능합니다. 찾아가는 저작권 교육 신청은 불가능합니다.- 찾아가는 저작권 교육 신청은 해당 사이트(www.copyright.or.kr/offedu)에서 이용하여
    -   주시기 바랍니다.
  2. -
  3. 2.신청 시 공문양식을 다운로드 받아서 반드시 학교장 직인된 공문을 첨부해야 합니다.
  4. -
  5. 3.신청 시 반드시 본인 계정으로 신청해야 하며, 타인 계정으로 신청 시 신청 취소 처리됩니다.
  6. -
  7. 4.체험교실 신규 운영 교사는 체험교실 운영 교사 연수(1일, 8시간)를 반드시 이수해야 하며, 체험교실 운영 기간내에 저작권 e-배움터에서 제공하는 온라인 강좌를 의무 이수해야 합니다.
  8. -
  9. 5.신청기간 내 위원회 업무시간(09:00 ~ 18:00)동안 이용이 가능합니다.
  10. - -
  11. 6.신청교사가 교내에서 확인 가능한 메일 계정을 기재해 주시기 바랍니다.
  12. -
  13. 7.신청 중 문의사항은 위원회 체험교실 담당자에게 연락을 주시기 바랍니다(055-792-0234)
  14. -
  15. 8.선정 후 취소(신규 운영 교사 사전 연수 불참 등) 및 운영 포기교실은 차년도 참여를 제한합니다.
    (해당 내용 학교 공문 발송 예정)
  16. -
-
+ +
· 신청서 접수 시 유의사항
+
+
    +
  1. 1.저작권 체험교실 운영 신청만 가능합니다. 찾아가는 저작권 교육 신청은 불가능합니다.- 찾아가는 저작권 교육 신청은 해당 사이트(www.copyright.or.kr/offedu)에서 이용하여
    +   주시기 바랍니다.
  2. +
  3. 2.신청 시 공문양식을 다운로드 받아서 반드시 학교장 직인된 공문을 첨부해야 합니다.
  4. +
  5. 3.신청 시 반드시 본인 계정으로 신청해야 하며, 타인 계정으로 신청 시 신청 취소 처리됩니다.
  6. +
  7. 4.체험교실 신규 운영 교사는 체험교실 운영 교사 연수(1일, 8시간)를 반드시 이수해야 하며, 체험교실 운영 기간내에 저작권 e-배움터에서 제공하는 온라인 강좌를 의무 이수해야 합니다.
  8. +
  9. 5.신청기간 내 위원회 업무시간(09:00 ~ 18:00)동안 이용이 가능합니다.
  10. + +
  11. 6.신청교사가 교내에서 확인 가능한 메일 계정을 기재해 주시기 바랍니다.
  12. +
  13. 7.신청 중 문의사항은 위원회 체험교실 담당자에게 연락을 주시기 바랍니다(055-792-0234)
  14. +
  15. 8.선정 후 취소(신규 운영 교사 사전 연수 불참 등) 및 운영 포기교실은 차년도 참여를 제한합니다.
    (해당 내용 학교 공문 발송 예정)
  16. +
+
+
@@ -82,6 +90,9 @@ + + +
From 829f4d6ac90a4a8a3aebb7bb17008e9124da0163 Mon Sep 17 00:00:00 2001 From: hehih Date: Tue, 7 Nov 2023 14:31:24 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=86=8C=EC=9C=A0=EC=98=88=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/kcc/com/cmm/util/DateUtil.java | 479 +- .../let/uat/uia/web/EgovLoginController.java | 3 +- .../uss/umt/web/EgovUserManageController.java | 4311 +++++++++-------- .../trgtMng/service/CndtnTrgtMngService.java | 98 +- .../trgtMng/service/CndtnTrgtMngVO.java | 7 + .../trgtMng/service/impl/CndtnTrgtMngDAO.java | 254 +- .../service/impl/CndtnTrgtMngServiceImpl.java | 239 +- .../trgtMng/web/CndtnTrgtMngController.java | 224 +- .../let/uat/uia/EgovLoginUsr_SQL_Mysql.xml | 803 ++- .../let/uat/uia/EgovLoginUsr_SQL_Tibero.xml | 995 ++-- .../ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml | 14 + .../jsp/cmm/uss/umt/EgovUserInsert.jsp | 1064 ++-- .../jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp | 2 +- .../jsp/oprtn/cndtnSspnIdtmt/trgtMngList.jsp | 367 ++ .../jsp/oprtn/cndtnSspnIdtmt/trgtMngMdfy.jsp | 518 ++ .../jsp/oprtn/cndtnSspnIdtmt/trgtMngReg.jsp | 458 ++ .../jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp | 52 +- 17 files changed, 5753 insertions(+), 4135 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngMdfy.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngReg.jsp diff --git a/src/main/java/kcc/com/cmm/util/DateUtil.java b/src/main/java/kcc/com/cmm/util/DateUtil.java index 352ecfe5..85a594f3 100644 --- a/src/main/java/kcc/com/cmm/util/DateUtil.java +++ b/src/main/java/kcc/com/cmm/util/DateUtil.java @@ -1,231 +1,248 @@ -package kcc.com.cmm.util; - -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Locale; - -public final class DateUtil { - - public static final String BASE_PATTERN = "yyyyMMddHHmmssSSS"; - public static final int BASE_PATTERN_LEN = BASE_PATTERN.length(); - private static final String[] PATTERN_CACHE = new String[BASE_PATTERN_LEN + 1]; - static { - PATTERN_CACHE[BASE_PATTERN_LEN] = BASE_PATTERN; - PATTERN_CACHE[14] = BASE_PATTERN.substring(0, 14); - PATTERN_CACHE[12] = BASE_PATTERN.substring(0, 12); - PATTERN_CACHE[10] = BASE_PATTERN.substring(0, 10); - PATTERN_CACHE[8] = BASE_PATTERN.substring(0, 8); - PATTERN_CACHE[6] = BASE_PATTERN.substring(0, 6); - PATTERN_CACHE[4] = BASE_PATTERN.substring(0, 4); - PATTERN_CACHE[0] = ""; - } - public static final String DATE_PATTERN = PATTERN_CACHE[8]; - public static final String DATETIME_PATTERN = PATTERN_CACHE[14]; - - - public static LocalDateTime now() { - return LocalDateTime.now(); - } - - - public static Date toDate(LocalDate ld) { - Date date = null; - if(ld != null) { - Instant instant = ld.atStartOfDay(ZoneId.systemDefault()).toInstant(); - date = Date.from(instant); - } - return date; - } - - - public static Date toDate(LocalDateTime ldt) { - Date date = null; - if(ldt != null) { - Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant(); - date = Date.from(instant); - } - return date; - } - - - public static LocalDate toLocalDate(Date date) { - LocalDate ld = null; - if(date != null) { - ld = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - } - return ld; - } - - - public static LocalDateTime toLocalDateTime(Date date) { - LocalDateTime ldt = null; - if(date != null) { - ldt = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); - } - return ldt; - } - - - public static Date parse(String source, String pattern) { - Date date = null; - if(source == null) { - return date; - } - int sourceLen = source.length(); - if(sourceLen < 1) { - return date; - } - if(sourceLen > 8) { - LocalDateTime ldt = DateUtil.parseLocalDateTime(source, pattern); - date = DateUtil.toDate(ldt); - } else { - LocalDate ld = DateUtil.parseLocalDate(source, pattern); - date = DateUtil.toDate(ld); - } - return date; - } - - - public static Date parse(String source) { - return DateUtil.parse(source, null); - } - - - public static LocalDate parseLocalDate(String source, String pattern) { - LocalDate ld = null; - if(source == null) { - return ld; - } - int sourceLen = source.length(); - if(sourceLen < 1) { - return ld; - } - if(StringUtil.isEmpty(pattern)) { - pattern = PATTERN_CACHE[sourceLen]; - if(StringUtil.isEmpty(pattern)) { - return ld; - } - } - ld = LocalDate.parse(source, DateTimeFormatter.ofPattern(pattern)); - return ld; - } - - - public static LocalDate parseLocalDate(String source) { - return DateUtil.parseLocalDate(source, null); - } - - - public static LocalDateTime parseLocalDateTime(String source, String pattern) { - LocalDateTime ldt = null; - if(source == null) { - return ldt; - } - int sourceLen = source.length(); - if(sourceLen < 1) { - return ldt; - } - if(StringUtil.isEmpty(pattern)) { - pattern = PATTERN_CACHE[sourceLen]; - if(StringUtil.isEmpty(pattern)) { - return ldt; - } - } - ldt = LocalDateTime.parse(source, DateTimeFormatter.ofPattern(PATTERN_CACHE[sourceLen])); - return ldt; - } - - - public static LocalDateTime parseLocalDateTime(String source) { - return DateUtil.parseLocalDateTime(source, null); - } - - static String format(Date date, String pattern) { - if (date == null) - return null; - - return getInnerDateFormat(pattern).format(date); - } - - private static SimpleDateFormat getInnerDateFormat(String pattern) { - SimpleDateFormat f = cache.get(pattern); - if (f == null) - f = createDateformat(pattern); - - return f; - } - - private static final Locale __DEFAULT_LOCALE = Locale.ENGLISH; - - private static HashMap cache = new HashMap(); - - - private synchronized static SimpleDateFormat createDateformat(String pattern) { - SimpleDateFormat f = cache.get(pattern); - if (f == null) { - f = new SimpleDateFormat(pattern, __DEFAULT_LOCALE); - cache.put(pattern, f); - } - return f; - } - - //날짜에 대한 요일 텍스트 받아오기 - public static String getWeekText(Date date) { - - String strWeek = ""; - - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - - int dayNum = cal.get(Calendar.DAY_OF_WEEK); - - switch(dayNum) { - case 1: - strWeek = "일"; - break; - case 2: - strWeek = "월"; - break; - case 3: - strWeek = "화"; - break; - case 4: - strWeek = "수"; - break; - case 5: - strWeek = "목"; - break; - case 6: - strWeek = "금"; - break; - case 7: - strWeek = "토"; - break; - } - - return strWeek; - } - - public static int getNowyyyyMMddReturnInt() { - DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyyMMdd"); - return Integer.parseInt(LocalDateTime.now().format(formatter2)); - } - public static LocalDate getStringToLocalDate(String p_date) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); - LocalDate date = LocalDate.parse(p_date, formatter); - return date; - } - - public static LocalDate getStringToLocalDateDot(String p_date) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd"); - LocalDate date = LocalDate.parse(p_date, formatter); - return date; - } -} +package kcc.com.cmm.util; + +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Locale; + +public final class DateUtil { + + public static final String BASE_PATTERN = "yyyyMMddHHmmssSSS"; + public static final int BASE_PATTERN_LEN = BASE_PATTERN.length(); + private static final String[] PATTERN_CACHE = new String[BASE_PATTERN_LEN + 1]; + static { + PATTERN_CACHE[BASE_PATTERN_LEN] = BASE_PATTERN; + PATTERN_CACHE[14] = BASE_PATTERN.substring(0, 14); + PATTERN_CACHE[12] = BASE_PATTERN.substring(0, 12); + PATTERN_CACHE[10] = BASE_PATTERN.substring(0, 10); + PATTERN_CACHE[8] = BASE_PATTERN.substring(0, 8); + PATTERN_CACHE[6] = BASE_PATTERN.substring(0, 6); + PATTERN_CACHE[4] = BASE_PATTERN.substring(0, 4); + PATTERN_CACHE[0] = ""; + } + public static final String DATE_PATTERN = PATTERN_CACHE[8]; + public static final String DATETIME_PATTERN = PATTERN_CACHE[14]; + + + public static LocalDateTime now() { + return LocalDateTime.now(); + } + + + public static Date toDate(LocalDate ld) { + Date date = null; + if(ld != null) { + Instant instant = ld.atStartOfDay(ZoneId.systemDefault()).toInstant(); + date = Date.from(instant); + } + return date; + } + + + public static Date toDate(LocalDateTime ldt) { + Date date = null; + if(ldt != null) { + Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant(); + date = Date.from(instant); + } + return date; + } + + + public static LocalDate toLocalDate(Date date) { + LocalDate ld = null; + if(date != null) { + ld = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + } + return ld; + } + + + public static LocalDateTime toLocalDateTime(Date date) { + LocalDateTime ldt = null; + if(date != null) { + ldt = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); + } + return ldt; + } + + + public static Date parse(String source, String pattern) { + Date date = null; + if(source == null) { + return date; + } + int sourceLen = source.length(); + if(sourceLen < 1) { + return date; + } + if(sourceLen > 8) { + LocalDateTime ldt = DateUtil.parseLocalDateTime(source, pattern); + date = DateUtil.toDate(ldt); + } else { + LocalDate ld = DateUtil.parseLocalDate(source, pattern); + date = DateUtil.toDate(ld); + } + return date; + } + + + public static Date parse(String source) { + return DateUtil.parse(source, null); + } + + + public static LocalDate parseLocalDate(String source, String pattern) { + LocalDate ld = null; + if(source == null) { + return ld; + } + int sourceLen = source.length(); + if(sourceLen < 1) { + return ld; + } + if(StringUtil.isEmpty(pattern)) { + pattern = PATTERN_CACHE[sourceLen]; + if(StringUtil.isEmpty(pattern)) { + return ld; + } + } + ld = LocalDate.parse(source, DateTimeFormatter.ofPattern(pattern)); + return ld; + } + + + public static LocalDate parseLocalDate(String source) { + return DateUtil.parseLocalDate(source, null); + } + + + public static LocalDateTime parseLocalDateTime(String source, String pattern) { + LocalDateTime ldt = null; + if(source == null) { + return ldt; + } + int sourceLen = source.length(); + if(sourceLen < 1) { + return ldt; + } + if(StringUtil.isEmpty(pattern)) { + pattern = PATTERN_CACHE[sourceLen]; + if(StringUtil.isEmpty(pattern)) { + return ldt; + } + } + ldt = LocalDateTime.parse(source, DateTimeFormatter.ofPattern(PATTERN_CACHE[sourceLen])); + return ldt; + } + + + public static LocalDateTime parseLocalDateTime(String source) { + return DateUtil.parseLocalDateTime(source, null); + } + + static String format(Date date, String pattern) { + if (date == null) + return null; + + return getInnerDateFormat(pattern).format(date); + } + + private static SimpleDateFormat getInnerDateFormat(String pattern) { + SimpleDateFormat f = cache.get(pattern); + if (f == null) + f = createDateformat(pattern); + + return f; + } + + private static final Locale __DEFAULT_LOCALE = Locale.ENGLISH; + + private static HashMap cache = new HashMap(); + + + private synchronized static SimpleDateFormat createDateformat(String pattern) { + SimpleDateFormat f = cache.get(pattern); + if (f == null) { + f = new SimpleDateFormat(pattern, __DEFAULT_LOCALE); + cache.put(pattern, f); + } + return f; + } + + //날짜에 대한 요일 텍스트 받아오기 + public static String getWeekText(Date date) { + + String strWeek = ""; + + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + + int dayNum = cal.get(Calendar.DAY_OF_WEEK); + + switch(dayNum) { + case 1: + strWeek = "일"; + break; + case 2: + strWeek = "월"; + break; + case 3: + strWeek = "화"; + break; + case 4: + strWeek = "수"; + break; + case 5: + strWeek = "목"; + break; + case 6: + strWeek = "금"; + break; + case 7: + strWeek = "토"; + break; + } + + return strWeek; + } + + public static int getNowyyyyMMddReturnInt() { + DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyyMMdd"); + return Integer.parseInt(LocalDateTime.now().format(formatter2)); + } + public static LocalDate getStringToLocalDate(String p_date) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + LocalDate date = LocalDate.parse(p_date, formatter); + return date; + } + + public static LocalDate getStringToLocalDateDot(String p_date) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd"); + LocalDate date = LocalDate.parse(p_date, formatter); + return date; + } + + // 2023 => 23 + public static String getStringToLocalDateYear() { + // 현재 날짜를 얻기 + LocalDate currentDate = LocalDate.now(); + // 올해의 년도를 얻기 + int currentYear = currentDate.getYear(); + // 년도를 String으로 변환 + String yearString = Integer.toString(currentYear); + // 마지막 두 자리 추출 + String lastTwoDigits = yearString.substring(yearString.length() - 2); + + // 출력 + return lastTwoDigits; + } + + +} diff --git a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java index 9ff8f4b6..cc463c6c 100644 --- a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java @@ -600,6 +600,7 @@ public class EgovLoginController { // 1. 로그인 처리 LoginVO resultVO = loginService.actionLogin(loginVO); + System.out.println("UserWork :: "+resultVO.getUserWork()); if (loginService.getUserAuth(resultVO) != null) { resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority()); @@ -665,7 +666,7 @@ public class EgovLoginController { // 2. spring security 연동 request.getSession().setAttribute("LoginVO", resultVO); - + System.out.println("===============!=============="); UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter(); ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); diff --git a/src/main/java/kcc/let/uss/umt/web/EgovUserManageController.java b/src/main/java/kcc/let/uss/umt/web/EgovUserManageController.java index 461702fe..7db197d5 100644 --- a/src/main/java/kcc/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/kcc/let/uss/umt/web/EgovUserManageController.java @@ -1,2156 +1,2157 @@ -package kcc.let.uss.umt.web; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.Font; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.ui.ModelMap; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.multipart.MultipartHttpServletRequest; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; -import org.springmodules.validation.commons.DefaultBeanValidator; - -import com.google.gson.Gson; - -import egovframework.rte.fdl.property.EgovPropertyService; -import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; -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; -import kcc.com.cmm.LoginVO; -import kcc.com.cmm.service.EgovCmmUseService; -import kcc.com.cmm.service.EgovFileMngService; -import kcc.com.cmm.service.EgovFileMngUtil; -import kcc.com.cmm.util.EgovDoubleSubmitHelper; -import kcc.com.cmm.util.RedirectUrlMaker; -import kcc.com.utl.fcc.service.EgovStringUtil; -import kcc.let.org.service.LocVO; -import kcc.let.org.service.OrgChartManageService; -import kcc.let.sec.ram.service.AuthorManageVO; -import kcc.let.sec.ram.service.EgovAuthorManageService; -import kcc.let.sec.rgm.service.AuthorGroup; -import kcc.let.sec.rgm.service.EgovAuthorGroupService; -import kcc.let.sym.site.service.EgovSiteManagerService; -import kcc.let.sym.site.service.SiteManagerVO; -import kcc.let.uat.uia.service.EgovLoginService; -import kcc.let.uss.umt.service.EgovMberManageService; -import kcc.let.uss.umt.service.EgovUserManageService; -import kcc.let.uss.umt.service.MberManageConfigVO; -import kcc.let.uss.umt.service.MberManageVO; -import kcc.let.uss.umt.service.UserDefaultVO; -import kcc.let.uss.umt.service.UserManageVO; -import kcc.let.utl.fcc.service.EgovCryptoUtil; -import kcc.let.utl.sim.service.EgovFileScrty; - -/** - * 업무사용자관련 요청을 비지니스 클래스로 전달하고 처리된결과를 해당 웹 화면으로 전달하는 Controller를 정의한다 - * @author 공통서비스 개발팀 조재영 - * @since 2009.04.10 - * @version 1.0 - * @see - * - *
- * << 개정이력(Modification Information) >>
- *
- *   수정일      수정자           수정내용
- *  -------    --------    ---------------------------
- *   2009.04.10  조재영          최초 생성
- *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
- *
- * 
- */ -@Controller -public class EgovUserManageController { - -// static String RSA_WEB_KEY = "_RSA_WEB_Key_1"; // 개인키 session key -// static String RSA_INSTANCE = "RSA"; // rsa transformation - - /** userManageService */ - @Resource(name = "userManageService") - private EgovUserManageService userManageService; - - /** cmmUseService */ - @Resource(name = "EgovCmmUseService") - private EgovCmmUseService cmmUseService; - - /** EgovMessageSource */ - @Resource(name = "egovMessageSource") - EgovMessageSource egovMessageSource; - - /** EgovPropertyService */ - @Resource(name = "propertiesService") - protected EgovPropertyService propertiesService; - - /** mberManageService */ - @Resource(name = "mberManageService") - private EgovMberManageService mberManageService; - - /** DefaultBeanValidator beanValidator */ - @Autowired - private DefaultBeanValidator beanValidator; - - @Resource(name = "EgovFileMngUtil") - private EgovFileMngUtil fileUtil; - - @Resource(name = "EgovFileMngService") - private EgovFileMngService fileMngService; - - @Resource(name = "egovAuthorManageService") - private EgovAuthorManageService egovAuthorManageService; - - /*@Resource(name = "EgovOrgChartManageService") - private EgovOrgChartManageService orgChartManageService;*/ - - @Resource(name = "orgChartManageService") - private OrgChartManageService orgChartManageService; - - - @Resource(name = "egovAuthorGroupService") - private EgovAuthorGroupService egovAuthorGroupService; - - @Resource(name = "egovSiteManagerService") - private EgovSiteManagerService egovSiteManagerService; - - @Resource(name = "loginService") - private EgovLoginService loginService; - - - //암복호화 유틸 - @Resource(name = "egovCryptoUtil") - EgovCryptoUtil egovCryptoUtil; - - - private String topLocNo = "1000000" ; //전역 최상위 매뉴번호 - - - //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} - private String[][] userExcelValue ={ - {"0" ,"번호" , "1" , "" }, - {"1", "사이트명" , "ITN" , "[코드]"}, - {"2", "아이디" , "testId", ""}, - {"3", "이름" , "홍길동", ""}, - {"4", "권한" , "일반관리자", "[코드]"}, - {"5", "전화번호(부서)" , "02-123-4567", ""}, - {"6", "이메일" , "test@kcc.co.kr", ""}, - {"7", "등록일" ,"2019-10-31", ""} - } ; - /** - * - * (관리자)관리자목록을 조회한다. (pageing) - * @param userSearchVO 검색조건정보 - * @param model 화면모델 - * @return cmm/uss/umt/EgovUserManage - * @throws Exception - */ - @RequestMapping(value = {"/uss/umt/user/EgovUserManage.do", "/uss/umt/user/EgovUserManageMenuAjax.do"}) - public String selectUserList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, - ModelMap model, - HttpServletRequest request, - HttpSession session) throws Exception { - { - //일반관리자가 좌측의 매뉴의 관리자 관리 클릭시 리스트가 아닌 자신의 정보수정페이지로 리로딩. - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();//최고관리자의 경우 비밀번호 확인 없음. - loginVO.setId(loginVO.getId()); - if(!"ROLE_ADMIN".equals(loginService.getUserAuth(loginVO).getAuthority())){//최고관리자 아닐경우 - return "redirect:/EgovTopPageLink.do?link=/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginVO.getUniqId()+"&baseMenuNo=3500000" ; - } - } - - if(userSearchVO.getPageUnit() != 10) { - userSearchVO.setPageUnit(userSearchVO.getPageUnit()); - } - - try{ - /** pageing */ - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); - paginationInfo.setPageSize(userSearchVO.getPageSize()); - - userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); - userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); - userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - //userSearchVO.setAdminYn("Y"); - if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - userSearchVO.setSearchSortCnd("uniqId"); - userSearchVO.setSearchSortOrd("desc"); - } - List resultList = userManageService.selectUserList(userSearchVO) ; - model.addAttribute("resultList", resultList); - //paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); - int i_resultList = resultList.size(); - - /* - if (i_resultList>0) { - String g_resultList = ((EgovMap)resultList.get(0)).get("totCnt").toString(); - } - */ - - //paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((int)((EgovMap)resultList.get(0)).get("totCnt")) : 0); - paginationInfo.setTotalRecordCount(i_resultList); - model.addAttribute("paginationInfo", paginationInfo); - - //사용자상태코드를 코드정보로부터 조회 - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - vo.setCodeId("COM038"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo));//사용자상태코드목록 - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - - if("/uss/umt/user/EgovUserManageMenuAjax.do".equals(request.getServletPath())) { - return "cmm/uss/umt/EgovUserManageMenuAjax"; - } - }catch(Exception ex) { - ex.printStackTrace(); - } - - - return "cmm/uss/umt/EgovUserManage"; - } - - /** - * - * (사용자) 사용자목록을 조회한다. (pageing) - * @param userSearchVO 검색조건정보 - * @param model 화면모델 - * @return cmm/uss/umt/EgovUserManage - * @throws Exception - */ - - @RequestMapping(value = "/uss/umt/user/EgovGnrlUserManage.do") - public String selectGnrlUserManage(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, - ModelMap model, - HttpSession session) throws Exception { - - if(userSearchVO.getPageUnit() != 10) { - userSearchVO.setPageUnit(userSearchVO.getPageUnit()); - } - - /** pageing */ - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); - paginationInfo.setPageSize(userSearchVO.getPageSize()); - - userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); - userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); - userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - - userSearchVO.setAdminYn("N"); - if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - userSearchVO.setSearchSortCnd("uniqId"); - userSearchVO.setSearchSortOrd("desc"); - } - //이름 검색 암호화 - userSearchVO.setSnsSiteName(egovCryptoUtil.encrypt(userSearchVO.getSearchKeyword())); - - List resultList = mberManageService.selectMberList(userSearchVO); - - //이름 복호화 - - model.addAttribute("resultList", resultList); -// paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); - paginationInfo.setTotalRecordCount(10); - model.addAttribute("paginationInfo", paginationInfo); - - //사용자상태코드를 코드정보로부터 조회 - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - vo.setCodeId("COM038"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo));//사용자상태코드목록 - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - return "cmm/uss/umt/EgovGnrlUserManage"; - } - - /** - * (관리자) 사용자등록화면으로 이동한다. - * @param userSearchVO 검색조건정보 - * @param userManageVO 사용자초기화정보 - * @param model 화면모델 - * @return cmm/uss/umt/EgovUserInsert - * @throws Exception - */ - @RequestMapping("/uss/umt/user/EgovUserInsertView.do") - public String insertUserView(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, @ModelAttribute("userManageVO") UserManageVO userManageVO,Model model) - throws Exception { - - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 - - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); - model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //소속기관코드를 코드정보로부터 조회 - COM025 - vo.setCodeId("COM025"); - model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //조직정보를 조회 - ORGNZT_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); - - //그룹정보를 조회 - GROUP_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); - - //조직도 정보조회 - /*PartInfVO partInfVO = new PartInfVO(); - partInfVO.setDepth(1); - List orgChartDepth1 = orgChartManageService.selectChartDepth(partInfVO); - model.addAttribute("orgChartDepth1", orgChartDepth1);*/ - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); - authorManageVO.setAuthorSet("01"); - authorManageVO.setSearchSortCnd("sort_num"); - authorManageVO.setSearchSortOrd("desc"); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - - - //selectbox 미리 만들기 - LocVO locVO = new LocVO(); - locVO.setTopLocNo(topLocNo); //최상위 매뉴번호 - List orgHiddenList = orgChartManageService.selectOrgChartListAjax(locVO); - String userOneDepth = ""; - String userTwoDepth = ""; - - if(null != userManageVO.getPartIdx() && !"".equals(userManageVO.getPartIdx())) { - for(LocVO tempLocVO : orgHiddenList) { - if(userManageVO.getPartIdx().equals(tempLocVO.getId())){ - if(1==tempLocVO.getDepths()) { //1뎁스면 조회 안함 - userOneDepth = tempLocVO.getId(); - }else { //2뎁스면 - userTwoDepth = tempLocVO.getId() ; - userOneDepth = tempLocVO.getParent() ; - } - } - } - } - model.addAttribute("userOneDepth", userOneDepth); - model.addAttribute("userTwoDepth", userTwoDepth); - model.addAttribute("orgHiddenList", orgHiddenList); - - return "cmm/uss/umt/EgovUserInsert"; - } - - /** - * (사용자) 사용자등록화면으로 이동한다. - * @param userSearchVO 검색조건정보 - * @param userManageVO 사용자초기화정보 - * @param model 화면모델 - * @return cmm/uss/umt/EgovUserInsert - * @throws Exception - */ - @RequestMapping(value= {"/uss/umt/user/EgovGnrlUserInsertView.do", "/uss/umt/user/EgovGnrlUserInsertViewAjax.do"} ) - public String insertGnrlUserView(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, - @ModelAttribute("mberManageVO") MberManageVO mberManageVO, - HttpSession session, - HttpServletRequest request, - Model model) - throws Exception { - - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 - - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); - model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //소속기관코드를 코드정보로부터 조회 - COM025 - vo.setCodeId("COM025"); - model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //조직정보를 조회 - ORGNZT_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); - - //그룹정보를 조회 - GROUP_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); - - //조직도 정보조회 - /*PartInfVO partInfVO = new PartInfVO(); - partInfVO.setDepth(1); - List orgChartDepth1 = orgChartManageService.selectChartDepth(partInfVO); - model.addAttribute("orgChartDepth1", orgChartDepth1);*/ - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - - //config 정보 가져오기 - MberManageConfigVO mberConfigVO = new MberManageConfigVO(); - mberConfigVO.setUseYn("Y"); //사용하는것만 - mberConfigVO.setIsSns("N");; - List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); - model.addAttribute("mberManageCnfList", mberManageCnfList); - if("/uss/umt/user/EgovGnrlUserInsertViewAjax.do".equals(request.getServletPath())) { - return "cmm/uss/umt/EgovGnrlUserInsertAjax"; - } - return "cmm/uss/umt/EgovGnrlUserInsert"; - } - - /** - * 사용자등록처리후 목록화면으로 이동한다. - * @param userManageVO 사용자등록정보 - * @param bindingResult 입력값검증용 bindingResult - * @param model 화면모델 - * @return forward:/uss/umt/user/EgovUserManage.do - * @throws Exception - */ - @RequestMapping("/uss/umt/user/EgovUserInsert.do") - public String insertUser(@ModelAttribute("userManageVO") UserManageVO userManageVO, BindingResult bindingResult, Model model , RedirectAttributes redirectAttributes) throws Exception { - if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { - return "redirect:/uss/umt/user/EgovUserManage.do"; - } - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - if(!validationPasswd(userManageVO.getPassword())){ - redirectAttributes.addFlashAttribute("message", "패스워드 규칙에 어긋납니다."); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - - beanValidator.validate(userManageVO, bindingResult); - if (bindingResult.hasErrors()){ - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 - - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); - model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //소속기관코드를 코드정보로부터 조회 - COM025 - vo.setCodeId("COM025"); - model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //조직정보를 조회 - ORGNZT_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); - - //그룹정보를 조회 - GROUP_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); - //return "forward:/uss/umt/user/EgovUserInsertView.do"; - return "cmm/uss/umt/EgovUserInsert"; - }else{ - try{ - userManageService.insertUser(userManageVO); - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); - }catch(Exception e){ - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert")); - } - } - //관리자등록일 경우 - if(userManageVO.getGnrlUser().equals("N")) { - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - //사용자 등록일 경우 - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - //return "redirect:/uss/umt/user/EgovUserManage.do"; - } - - /** - * 사용자정보 수정을 위해 사용자정보를 상세조회한다. - * 최고관리자의 경우에는 비밀번호를 체크하지 않는다. - * @param uniqId 상세조회대상 사용자아이디 - * @param userSearchVO 검색조건 - * @return cmm/uss/umt/EgovUserSelectUpdt - * @param model 화면모델 - * @throws Exception - */ - @RequestMapping("/uss/umt/user/EgovUserSelectUpdtView.do") - public String updateUserView(@RequestParam("selectedId") String uniqId, - @ModelAttribute("searchVO") UserDefaultVO userSearchVO, - HttpServletRequest request, - @RequestParam Map commandMap, - Model model) throws Exception { - - LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - - if(!"ROLE_ADMIN".equals(loginVO.getAuthority()) && !uniqId.equals(loginVO.getUniqId())) { - /*return "/cmm/main/mainPage.do";*/ - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/cmm/main/mainPage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - - try { - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); - //소속기관코드를 코드정보로부터 조회 - COM025 - vo.setCodeId("COM025"); - model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); - //조직정보를 조회 - ORGNZT_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); - //그룹정보를 조회 - GROUP_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); - - UserManageVO userManageVO = new UserManageVO(); - userManageVO = userManageService.selectUser(uniqId); - model.addAttribute("userSearchVO", userSearchVO); - model.addAttribute("userManageVO", userManageVO); - - if(userManageVO == null){ - /*redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.select")); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl();*/ - } - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); - authorManageVO.setAuthorSet("01"); - authorManageVO.setSearchSortCnd("sort_num"); - authorManageVO.setSearchSortOrd("desc"); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - //initRsa(request); - - if("ROLE_ADMIN".equals(loginVO.getAuthority())) { - model.addAttribute("isAdmin", "Y"); - } - - if("ROLE_USER_MEMBER".equals(loginVO.getAuthority())) { - model.addAttribute("isMember", "Y"); - } - - //selectbox 미리 만들기 - LocVO locVO = new LocVO(); - locVO.setTopLocNo(topLocNo); //최상위 매뉴번호 - List orgHiddenList = orgChartManageService.selectOrgChartListAjax(locVO); - String userOneDepth = ""; - String userTwoDepth = ""; - - if(null != userManageVO.getPartIdx() - && !"".equals(userManageVO.getPartIdx()) - ) { - for(LocVO tempLocVO : orgHiddenList) { - if(userManageVO.getPartIdx().equals(tempLocVO.getId())){ - if(1==tempLocVO.getDepths()) { //1뎁스면 조회 안함 - userOneDepth = tempLocVO.getId(); - }else { //2뎁스면 - userTwoDepth = tempLocVO.getId() ; - userOneDepth = tempLocVO.getParent() ; - } - } - } - } - model.addAttribute("userOneDepth", userOneDepth); - model.addAttribute("userTwoDepth", userTwoDepth); - model.addAttribute("orgHiddenList", orgHiddenList); - }catch(Exception ex) { - ex.printStackTrace(); - } - - return "cmm/uss/umt/EgovUserSelectUpdt"; - } - - //사용자 수정화면 - @RequestMapping("/uss/umt/user/EgovGnrlUserSelectUpdtView.do") - public String updateGnrlUserView(@RequestParam("selectedId") String uniqId, - HttpServletRequest request, - @ModelAttribute("searchVO") UserDefaultVO userSearchVO, - @ModelAttribute("mberManageVO") MberManageVO mberManageVO, - RedirectAttributes redirectAttributes , - Model model, - HttpSession session) throws Exception { - - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); - - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCodeList", cmmUseService.selectCmmCodeDetail(vo)); - - //소속기관코드를 코드정보로부터 조회 - COM025 - vo.setCodeId("COM025"); - model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //조직정보를 조회 - ORGNZT_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); - - //그룹정보를 조회 - GROUP_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); - - mberManageVO = mberManageService.selectMber(uniqId) ; - - model.addAttribute("userSearchVO", userSearchVO); - - mberManageVO.setMberNm(egovCryptoUtil.decrypt(mberManageVO.getMberNm())); - - model.addAttribute("mberManageVO", mberManageVO); - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); -// authorManageVO.setAuthorSet("02"); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - - if(mberManageVO == null){ - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.select")); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - - - //config 정보 가져오기 - MberManageConfigVO mberConfigVO = new MberManageConfigVO(); - mberConfigVO.setUseYn("Y"); //사용하는것만 - mberConfigVO.setIsSns("N"); //SNS는 제외 - List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); - for(MberManageConfigVO mberVO : mberManageCnfList) { //하드코딩.... - /*if("offmTelno".equals(mberVO.getConfigId())){ //전화번호 - mberVO.setParmValue(mberManageVO.getMoblphonNo()); - mberVO.setValidateName("numberOnly2"); - }*/ - if("moblphonNo".equals(mberVO.getConfigId())){ //핸드폰 - mberVO.setParmValue(mberManageVO.getMoblphonNo()); - mberVO.setValidateName("numberOnly2"); - } - if("adres".equals(mberVO.getConfigId())){ //주소 - mberVO.setParmValue(mberManageVO.getAdres()); - } - - if("detailAdres".equals(mberVO.getConfigId())){ //상세주소 - mberVO.setParmValue(mberManageVO.getDetailAdres()); - } - - if("mberFxnum".equals(mberVO.getConfigId())){ //팩스번호 - mberVO.setParmValue(mberManageVO.getMberFxnum()); - mberVO.setValidateName("numberOnly2"); - } - if("mberEmailAdres".equals(mberVO.getConfigId())){ //이메일 - mberVO.setParmValue(mberManageVO.getMberEmailAdres()); - } - if("zip".equals(mberVO.getConfigId())){ //우편번호 - mberVO.setParmValue(mberManageVO.getZip()); - mberVO.setValidateName("numberOnly"); - } - if("emailYn".equals(mberVO.getConfigId())){ //이메일수신여부 - mberVO.setParmValue(mberManageVO.getEmailYN()); - } - if("smsYN".equals(mberVO.getConfigId())){ //문자수신여부 - mberVO.setParmValue(mberManageVO.getSmsYN()); - } - } - - model.addAttribute("mberManageCnfList", mberManageCnfList); - -// initRsa(request); - - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();//최고관리자의 경우 비밀번호 확인 없음. - loginVO.setId(loginVO.getId()); - if("ROLE_ADMIN".equals(loginService.getUserAuth(loginVO).getAuthority())){ - model.addAttribute("roleAdmin", "Y"); - } - return "cmm/uss/umt/EgovGnrlUserSelectUpdt"; - } - - /** - * 관리자 정보 수정후 목록조회 화면으로 이동한다. - * @param userManageVO 사용자수정정보 - * @param bindingResult 입력값검증용 bindingResult - * @param model 화면모델 - * @return forward:/uss/umt/user/EgovUserManage.do - * @throws Exception - */ - @RequestMapping(value= {"/uss/umt/user/EgovUserSelectUpdt.do", "/uss/umt/user/EgovUserSelectUpdtAjax.do"}) - public String updateUser(@ModelAttribute("userManageVO") UserManageVO userManageVO, - HttpSession session, HttpServletRequest request , - BindingResult bindingResult, - RedirectAttributes redirectAttributes, - Model model) throws Exception { - - /*if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")){ - return "redirect:/uss/umt/user/EgovUserManage.do"; - }*/ - -// PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovUserManageController.RSA_WEB_KEY); -// if(privateKey == null) { -// initRsa(request); -// redirectAttributes.addFlashAttribute("message", "저장되지 않았습니다."); -// if(userManageVO.getGnrlUser().equals("N")){ -// RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); -// return redirectUrlMaker.getRedirectUrl(); -// } -// RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); -// return redirectUrlMaker.getRedirectUrl(); -// } - /*if(userManageVO.getGnrlUser().equals("N")){ - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - }*/ - - - //최고 관리자의 경우 관리자정보 변경시 비번 체크안함. - LoginVO tempLoginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - beanValidator.validate(userManageVO, bindingResult); - /*if (bindingResult.hasErrors()) { - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); - - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //소속기관코드를 코드정보로부터 조회 - COM025 - vo.setCodeId("COM025"); - model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //조직정보를 조회 - ORGNZT_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); - - //그룹정보를 조회 - GROUP_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); - return "cmm/uss/umt/EgovUserSelectUpdt"; - } else {*/ - //업무사용자 수정시 히스토리 정보를 등록한다. - AuthorGroup authorGroup = new AuthorGroup(); - if(null!=userManageVO.getSiteId()){ - authorGroup.setUniqId(userManageVO.getUniqId()); - authorGroup.setAuthorCode(userManageVO.getAuthorCode()); - }else{ - authorGroup.setUniqId(userManageVO.getUniqId()); - authorGroup.setAuthorCode(userManageVO.getAuthorCode()); - } - - userManageService.insertUserHistory(userManageVO); - userManageService.updateUser(userManageVO); - //권한업데이트 - egovAuthorGroupService.updateAuthorGroup(authorGroup); - - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); - if(userManageVO.getGnrlUser().equals("N")){ - if("ROLE_USER_MEMBER".equals(tempLoginVO.getAuthority())) { - LoginVO tempUser = new LoginVO(); - tempUser.setId(userManageVO.getEmplyrId()); - //RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginService.getUserAuth(tempUser).getId()); - return redirectUrlMaker.getRedirectUrl(); - }else { - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - } - //사용자 수정 시 - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - - /** - * 사용자정보삭제후 목록조회 화면으로 이동한다. - * @param checkedIdForDel 삭제대상아이디 정보 - * @param userSearchVO 검색조건 - * @param model 화면모델 - * @return forward:/uss/umt/user/EgovUserManage.do - * @throws Exception - */ - @RequestMapping("/uss/umt/user/EgovUserDelete.do") - public String deleteUser(@RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { - if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { - return "redirect:/uss/umt/user/EgovUserManage.do"; - } - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - userManageService.deleteUser(checkedIdForDel); - - - //Exception 없이 진행시 등록성공메시지 - //model.addAttribute("message", "success.common.delete"); - //return "forward:/uss/umt/user/EgovUserManage.do"; - - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); - if(userSearchVO.getGnrlUser().equals("N")) { - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - - /** - * 입력한 사용자아이디의 중복확인화면 이동 - * @param model 화면모델 - * @return cmm/uss/umt/EgovIdDplctCnfirm - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/cmm/EgovIdDplctCnfirmView.do") - public String checkIdDplct(ModelMap model) throws Exception { - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - model.addAttribute("checkId", ""); - model.addAttribute("usedCnt", "-1"); - return "cmm/uss/umt/EgovIdDplctCnfirm"; - } - - /** - * 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인 - * @param commandMap 파라메터전달용 commandMap - * @param model 화면모델 - * @return cmm/uss/umt/EgovIdDplctCnfirm - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/cmm/EgovIdDplctCnfirm.do") - public String checkIdDplct(@RequestParam Map commandMap, ModelMap model) throws Exception { - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - String checkId = (String) commandMap.get("checkId"); - checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); - - if (checkId == null || checkId.equals("")) - return "forward:/uss/umt/EgovIdDplctCnfirmView.do"; - - int usedCnt = userManageService.checkIdDplct(checkId); - model.addAttribute("usedCnt", usedCnt); - model.addAttribute("checkId", checkId); - - return "cmm/uss/umt/EgovIdDplctCnfirm"; - } - - /** - * 업무사용자 암호 수정처리 후 화면 이동 - * @param model 화면모델 - * @param commandMap 파라메터전달용 commandMap - * @param userSearchVO 검색조 건 - * @param userManageVO 사용자수정정보(비밀번호) - * @return cmm/uss/umt/EgovUserPasswordUpdt - * @throws Exception - */ - //기존 비밀번호 체크 있는 버전 - /*@RequestMapping(value = "/uss/umt/user/EgovUserPasswordUpdt.do") - public String updatePassword(ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, - @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes) throws Exception { - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - List authorities = EgovUserDetailsHelper.getAuthorities(); - boolean authFlag = false; - - for (String authority : authorities) { - if (authority.equals("ROLE_ADMIN")) authFlag = true; - } - - String newPassword = (String) commandMap.get("newPassword"); - - if(!validationPasswd(newPassword)){ - model.addAttribute("userManageVO", userManageVO); - model.addAttribute("userSearchVO", userSearchVO); - model.addAttribute("adminYn", authFlag); - model.addAttribute("message", "비밀번호은(는) 문자+숫자+특수문자 포함, 8~20자 내에서 입력해야 합니다."); - return "cmm/uss/umt/EgovUserPasswordUpdt"; - } - - String oldPassword = (String) commandMap.get("oldPassword"); -// String newPassword = (String) commandMap.get("newPassword"); - String newPassword2 = (String) commandMap.get("newPassword2"); - String uniqId = (String) commandMap.get("uniqId"); - - boolean isCorrectPassword = false; - UserManageVO resultVO = new UserManageVO(); - userManageVO.setPassword(newPassword); - userManageVO.setOldPassword(oldPassword); - userManageVO.setUniqId(uniqId); - - String resultMsg = ""; - resultVO = userManageService.selectPassword(userManageVO); - //패스워드 암호화 - String encryptPass = EgovFileScrty.encryptPassword(oldPassword, userManageVO.getEmplyrId()); - - for (String authority : authorities) { //일반사용자까지 - if (authority.equals("ROLE_ADMIN") || authority.equals("ROLE_USER_MEMBER")) authFlag = true; - } - - authFlag = false; //GS인증으로 이전비밀번호 체크 - if (encryptPass.equals(resultVO.getPassword()) || authFlag) { - if (newPassword.equals(newPassword2)) { - isCorrectPassword = true; - } else { - isCorrectPassword = false; - resultMsg = "fail.user.passwordUpdate2"; - } - } else { - isCorrectPassword = false; - resultMsg = "fail.user.passwordUpdate1"; - } - - if (isCorrectPassword) { - userManageVO.setPassword(EgovFileScrty.encryptPassword(newPassword, userManageVO.getEmplyrId())); - userManageService.updatePassword(userManageVO); - model.addAttribute("userManageVO", userManageVO); - resultMsg = "success.common.update"; - } else { - model.addAttribute("userManageVO", userManageVO); - } - model.addAttribute("userSearchVO", userSearchVO); - model.addAttribute("message", resultMsg); - - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage(resultMsg)); - if(userSearchVO.getGnrlUser().equals("N")) { //관리자 비밀번호 변경시 - - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - LoginVO tempLoginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - if("ROLE_USER_MEMBER".equals(tempLoginVO.getAuthority())) { - LoginVO tempUser = new LoginVO(); - tempUser.setId(userManageVO.getEmplyrId()); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginService.getUserAuth(tempUser).getId()); - return redirectUrlMaker.getRedirectUrl(); - }else { - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - //return "cmm/uss/umt/EgovUserPasswordUpdt"; - } //사용자 비밀번호 변경시 - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - - }*/ - @RequestMapping(value = "/uss/umt/user/EgovUserPasswordUpdt.do") - public String updatePassword(ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, - @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes) throws Exception { - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - List authorities = EgovUserDetailsHelper.getAuthorities(); - boolean authFlag = false; - - for (String authority : authorities) { - if (authority.equals("ROLE_ADMIN")) authFlag = true; - } - - String newPassword = (String) commandMap.get("newPassword"); - - if(!validationPasswd(newPassword)){ - model.addAttribute("userManageVO", userManageVO); - model.addAttribute("userSearchVO", userSearchVO); - model.addAttribute("adminYn", authFlag); - model.addAttribute("message", "비밀번호은(는) 문자+숫자+특수문자 포함, 8~20자 내에서 입력해야 합니다."); - return "cmm/uss/umt/EgovUserPasswordUpdt"; - } - -// String oldPassword = (String) commandMap.get("oldPassword"); -// String newPassword = (String) commandMap.get("newPassword"); - String newPassword2 = (String) commandMap.get("newPassword2"); - String uniqId = (String) commandMap.get("uniqId"); - - boolean isCorrectPassword = false; - UserManageVO resultVO = new UserManageVO(); - userManageVO.setPassword(newPassword); -// userManageVO.setOldPassword(oldPassword); - userManageVO.setUniqId(uniqId); - - String resultMsg = ""; - resultVO = userManageService.selectPassword(userManageVO); - //패스워드 암호화 -// String encryptPass = EgovFileScrty.encryptPassword(oldPassword, userManageVO.getEmplyrId()); - - for (String authority : authorities) { //일반사용자까지 - if (authority.equals("ROLE_ADMIN") || authority.equals("ROLE_USER_MEMBER")) authFlag = true; - } - -// authFlag = false; //GS인증으로 이전비밀번호 체크 -// 이전 비밀번호 체크 하지 않고 비밀번호 변경되게 해달라는 요청으로 주석처리 220209 이준호 -// if (encryptPass.equals(resultVO.getPassword()) || authFlag) { - if (newPassword.equals(newPassword2)) { - isCorrectPassword = true; - } else { - isCorrectPassword = false; - resultMsg = "fail.user.passwordUpdate2"; - } -// } - /*else { - isCorrectPassword = false; - resultMsg = "fail.user.passwordUpdate1"; - }*/ - - if (isCorrectPassword) { - userManageVO.setPassword(EgovFileScrty.encryptPassword(newPassword, userManageVO.getEmplyrId())); - userManageService.updatePassword(userManageVO); - model.addAttribute("userManageVO", userManageVO); - resultMsg = "success.common.update"; - } else { - model.addAttribute("userManageVO", userManageVO); - } - model.addAttribute("userSearchVO", userSearchVO); - model.addAttribute("message", egovMessageSource.getMessage(resultMsg)); - - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage(resultMsg)); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(""); - if(userSearchVO.getGnrlUser().equals("N")) { //관리자 비밀번호 변경시 - - /*RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl();*/ - /*LoginVO tempLoginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - if("ROLE_USER_MEMBER".equals(tempLoginVO.getAuthority())) { - LoginVO tempUser = new LoginVO(); - tempUser.setId(userManageVO.getEmplyrId()); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginService.getUserAuth(tempUser).getId()); - return redirectUrlMaker.getRedirectUrl(); - }else { - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - }*/ - if(isCorrectPassword && authFlag == false) { - redirectUrlMaker = new RedirectUrlMaker("/uat/uia/actionLogout.do"); - - }else { - redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - - } - - } //사용자 비밀번호 변경시 -// RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); -// return redirectUrlMaker.getRedirectUrl(); - return redirectUrlMaker.getRedirectUrl(); - - } - - /** - * 업무사용자 암호 수정 화면 이동 - * @param model 화면모델 - * @param commandMap 파라메터전달용 commandMap - * @param userSearchVO 검색조건 - * @param userManageVO 사용자수정정보(비밀번호) - * @return cmm/uss/umt/EgovUserPasswordUpdt - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/user/EgovUserPasswordUpdtView.do") - public String updatePasswordView(ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, - @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { - - LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - - if(!"ROLE_ADMIN".equals(loginVO.getAuthority()) && !userManageVO.getUniqId().equals(loginVO.getUniqId())) { - /*return "/cmm/main/mainPage.do";*/ - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/cmm/main/mainPage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - if("".equals(userManageVO.getUniqId())){ - String sLocationUrl = "uss/umt/user/EgovUserManage.do"; - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(sLocationUrl); - return redirectUrlMaker.getRedirectUrl(); - } - - String userTyForPassword = (String) commandMap.get("userTyForPassword"); - userManageVO.setUserTy(userTyForPassword); - - List authorities = EgovUserDetailsHelper.getAuthorities(); - boolean authFlag = false; - - for (String authority : authorities) { - if (authority.equals("ROLE_ADMIN")) authFlag = true; - } - - model.addAttribute("userManageVO", userManageVO); - model.addAttribute("userSearchVO", userSearchVO); - model.addAttribute("adminYn", authFlag); - return "cmm/uss/umt/EgovUserPasswordUpdt"; - } - - /** - * 회원가입설정관리 - * @return uss/umt/user/EgovMberConfigInsert - * @throws Exception - */ - @RequestMapping(value = {"/uss/umt/mber/EgovMberConfigInsert.do" , "/uss/umt/mber/EgovMberConfigInsertAjax.do"}) - public String selectMberConfigInsert( - @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, - @ModelAttribute("mberManageVO") MberManageVO mberManageVO, - @RequestParam Map commandMap, - SiteManagerVO siteManagerVO, - HttpServletRequest request, - Model model , - HttpSession session) throws Exception { - MberManageConfigVO mberConfigVO = new MberManageConfigVO();//config 정보 가져오기 - LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); - if("super".equals(loginVO.getSiteId()) && null==mberManageVO.getSiteId()){ //수퍼 관리자이고 사이트 아이디 없을경우 kcc 으로 기본 세팅 - mberConfigVO.setSiteId("kcc"); - siteManagerVO.setSiteId("kcc"); - }else{ - if("".equals(mberManageVO.getSiteId()) || null==mberManageVO.getSiteId()){ - mberConfigVO.setSiteId(loginVO.getSiteId()); - siteManagerVO.setSiteId(loginVO.getSiteId()); - }else { - mberConfigVO.setSiteId(mberManageVO.getSiteId()); - siteManagerVO.setSiteId(mberManageVO.getSiteId()); - } - } - model.addAttribute("mberConfigVO", mberConfigVO); - List mberManageCnfVO = mberManageService.selectMberCnf(mberConfigVO); - model.addAttribute("mberManageCnfVO", mberManageCnfVO); - mberManageVO.setMberSttus("DEFAULT"); - SiteManagerVO joinSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ;//자동가입 여부 조회 - model.addAttribute("joinSiteManagerVO", joinSiteManagerVO); - if("/uss/umt/mber/EgovMberConfigInsertAjax.do".equals(request.getServletPath())){ - return "cmm/uss/umt/EgovMberConfigInsertAjax"; - } - return "cmm/uss/umt/EgovMberConfigInsert"; - } - - /* 회원이름 업데이트*/ - @RequestMapping("/uss/umt/EgovMberNameUpdateAjax.do") - public ModelAndView updateMberNameUpdateAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - mberManageVO.setMberNm(egovCryptoUtil.encrypt(mberManageVO.getMberNm())); - mberManageService.updateMberNm(mberManageVO); - return modelAndView; - - //userSearchVO.setSnsSiteName(egovCryptoUtil.encrypt(userSearchVO.getSearchKeyword())); - } - - /* 회원가입 설정 업데이트*/ - @RequestMapping("/uss/umt/EgovMberConfigUpdateAjax.do") - public ModelAndView updateMberConfigUpdateAjax(@ModelAttribute("mberManageConfigVO") MberManageConfigVO mberManageConfigVO) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - mberManageService.updateMberCnf(mberManageConfigVO); - return modelAndView; - } - - /*자동가입 설정 업데이트*/ - @RequestMapping("/uss/umt/EgovMberJoinAutoUpdateAjax.do") - public ModelAndView EgovMberJoinAutoUpdateAjax(SiteManagerVO siteManagerVO) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - egovSiteManagerService.updateJoinAutoAjax(siteManagerVO); - return modelAndView; - } - - /** - * 일반회원가입신청 등록화면으로 이동한다. - * @param userSearchVO 검색조건 - * @param mberManageVO 일반회원가입신청정보 - * @param commandMap 파라메터전달용 commandMap - * @param model 화면모델 - * @return uss/umt/user/EgovUserRegister - * @throws Exception - */ - @RequestMapping("/uss/umt/mber/EgovMberRegister.do") - public String EgovMberRegister(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, @ModelAttribute("mberManageVO") MberManageVO mberManageVO, - @RequestParam Map commandMap, Model model) throws Exception { - - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - List passwordHint_result = cmmUseService.selectCmmCodeDetail(vo); - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); - - model.addAttribute("passwordHint_result", passwordHint_result); //패스워트힌트목록 - model.addAttribute("sexdstnCode_result", sexdstnCode_result); //성별구분코드목록 - if (!"".equals(commandMap.get("realname"))) { - model.addAttribute("mberNm", commandMap.get("realname")); //실명인증된 이름 - 주민번호 인증 - model.addAttribute("ihidnum", commandMap.get("ihidnum")); //실명인증된 주민등록번호 - 주민번호 인증 - } - if (!"".equals(commandMap.get("realName"))) { - model.addAttribute("mberNm", commandMap.get("realName")); //실명인증된 이름 - ipin인증 - } - - //이메일 코드 - vo.setCodeId("COM103"); - List emailCodeList = cmmUseService.selectCmmCodeDetail(vo); - model.addAttribute("emailCodeList", emailCodeList); //이메일코드 - - //회원가입 config 정보 가져오기 - MberManageConfigVO voTemp = new MberManageConfigVO(); - //List mberManageCnfVO = mberManageService.selectMberCnf(voTemp); - List mberManageCnfVO = mberManageService.selectMberCnf(voTemp); - for (MberManageConfigVO configVO : mberManageCnfVO) { - model.addAttribute(configVO.getConfigId() , configVO); //컬럼 이름으로 jsp에 VO 전송 - } - - model.addAttribute("mberManageCnfVO", mberManageCnfVO); - mberManageVO.setMberSttus("DEFAULT"); - - return "cmm/uss/umt/EgovMberRegister"; - } - - /** - * 모달조회 - * @return String - * @exception Exception - */ - @RequestMapping(value="/EgovModal.do") - public String EgovModal() throws Exception { - return "cmm/uss/umt/EgovModal"; - } - - /** - * 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인 - * @param commandMap 파라메터전달용 commandMap - * @param model 화면모델 - * @return uss/umt/EgovIdDplctCnfirm - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/user/EgovIdDplctCnfirmAjax.do") - public ModelAndView EgovIdDplctCnfirmAjax(@RequestParam Map commandMap) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - String checkId = (String) commandMap.get("checkId"); - //checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); - - int usedCnt = userManageService.checkIdDplct(checkId); - modelAndView.addObject("usedCnt", usedCnt); - modelAndView.addObject("checkId", checkId); - - return modelAndView; - } - - /** - * 일반회원가입신청등록처리후로그인화면으로 이동한다. - * @param mberManageVO 일반회원가입신청정보 - * @return forward:/uss/umt/user/EgovUserExpInsert.do - * @throws Exception - */ - @RequestMapping("/uss/umt/user/EgovMberInsert.do") - public String EgovMberInsert( - @ModelAttribute("mberManageVO") MberManageVO mberManageVO, - BindingResult bindingResult, - Model model, - RedirectAttributes redirectAttributes) throws Exception { - if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { - return "redirect:/uss/umt/user/EgovUserManage.do"; - } - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - /*if(!validationPasswd(mberManageVO.getPassword())){ - redirectAttributes.addFlashAttribute("message", "패스워드 규칙에 어긋납니다."); - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - }*/ - - beanValidator.validate(mberManageVO, bindingResult); - if (bindingResult.hasErrors()){ - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 - - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); - model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //소속기관코드를 코드정보로부터 조회 - COM025 - vo.setCodeId("COM025"); - model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); - - //조직정보를 조회 - ORGNZT_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); - - //그룹정보를 조회 - GROUP_ID정보 - vo.setTableNm("LETTNORGNZTINFO"); - model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); - //return "forward:/uss/umt/user/EgovUserInsertView.do"; - return "cmm/uss/umt/EgovUserInsert"; - }else{ - try{ - //userManageService.insertUser(userManageVO); - mberManageService.insertMber(mberManageVO); //일반사용자 등록 - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); - }catch(Exception e){ - redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert")); - } - } - //관리자등록일 경우 - if(mberManageVO.getGnrlUser().equals("N")) { - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - //사용자 등록일 경우 - RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); - return redirectUrlMaker.getRedirectUrl(); - } - - - /** - * 일반회원목록을 조회한다. (pageing) - * @param userSearchVO 검색조건정보 - * @param model 화면모델 - * @return cmm/uss/umt/EgovMberManage - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/mber/EgovMberList.do") - public String EgovMberList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model) throws Exception { - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - if(userSearchVO.getPageUnit() != 10) { - userSearchVO.setPageUnit(userSearchVO.getPageUnit()); - } - - /** pageing */ - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); - paginationInfo.setPageSize(userSearchVO.getPageSize()); - - userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); - userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); - userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); - - model.addAttribute("resultList", mberManageService.selectMberList(userSearchVO)); - - int totCnt = mberManageService.selectMberListTotCnt(userSearchVO); - paginationInfo.setTotalRecordCount(totCnt); - model.addAttribute("paginationInfo", paginationInfo); - - //일반회원 상태코드를 코드정보로부터 조회 - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - vo.setCodeId("COM013"); - model.addAttribute("entrprsMberSttus_result", cmmUseService.selectCmmCodeDetail(vo)); - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - SiteManagerVO siteManagerVO =new SiteManagerVO(); - siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; - model.addAttribute("siteManagerVO", siteManagerVO); - //return "cmm/uss/umt/EgovMberList"; - return "cmm/uss/umt/EgovGnrlUserManage"; - } - - /** - * 일반회원정보 수정을 위해 일반회원정보를 상세조회한다. - * @param mberId 상세조회대상 일반회원아이디 - * @param userSearchVO 검색조건 - * @param model 화면모델 - * @return uss/umt/EgovMberSelectUpdt - * @throws Exception - */ - @RequestMapping("/uss/umt/mber/EgovMberSelectUpdtView.do") - public String EgovMberSelectUpdtView(@RequestParam("selectedId") String uniqId, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, Model model) throws Exception { - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) { - return "index"; - } - - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - - //패스워드힌트목록을 코드정보로부터 조회 - vo.setCodeId("COM022"); - List passwordHint_result = cmmUseService.selectCmmCodeDetail(vo); - - //성별구분코드를 코드정보로부터 조회 - vo.setCodeId("COM014"); - List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); - - //이메일 코드 - vo.setCodeId("COM103"); - List emailCodeList = cmmUseService.selectCmmCodeDetail(vo); - - //사용자상태코드를 코드정보로부터 조회 - vo.setCodeId("COM013"); - List mberSttus_result = cmmUseService.selectCmmCodeDetail(vo); - - //권한정보를 조회 - - //AuthorManageVO authorManageVO = new AuthorManageVO(); - //List authorManageList = egovAuthorManageService.selectAuthorUseAllList(authorManageVO); - - model.addAttribute("passwordHint_result", passwordHint_result); //패스워트힌트목록 - model.addAttribute("sexdstnCode_result", sexdstnCode_result); //성별구분코드목록 - model.addAttribute("emailCodeList", emailCodeList); //이메일코드 - model.addAttribute("mberSttus_result", mberSttus_result); //사용자상태코드목록 - //model.addAttribute("authorManageList", authorManageList); //그룹정보 목록 - - //config 정보 가져오기 - MberManageConfigVO voTemp = new MberManageConfigVO(); - List mberManageCnfVO = mberManageService.selectMberCnf(voTemp); - for (MberManageConfigVO configVO : mberManageCnfVO) { - model.addAttribute(configVO.getConfigId() , configVO); //컬럼 이름으로 jsp에 VO 전송 - } - MberManageVO mberManageVO = mberManageService.selectMber(uniqId); - - //생일/핸드폰번호/이메일 VO에서 자르기? - String birth = mberManageVO.getBirth(); - - if (!EgovStringUtil.isEmpty(birth)) { - mberManageVO.setBirthYear(birth.substring(0, 4)); - mberManageVO.setBirthMonth(birth.substring(4, 6)); - mberManageVO.setBirthDay(birth.substring(6, 8)); - } - - String moblphonNo = mberManageVO.getMoblphonNo(); - if (!EgovStringUtil.isEmpty(moblphonNo)) { - int subSize = 0; - if (moblphonNo.length() > 10) subSize = 7; - else subSize = 6; - - mberManageVO.setMoblphonNo1(moblphonNo.substring(0, 3)); - mberManageVO.setMoblphonNo2(moblphonNo.substring(3, subSize)); - mberManageVO.setMoblphonNo3(moblphonNo.substring(subSize, moblphonNo.length())); - } - - String mberEmailAdres = mberManageVO.getMberEmailAdres(); - if (!EgovStringUtil.isEmpty(mberEmailAdres)) { - String[] emailAdres = EgovStringUtil.split(mberEmailAdres, "@"); - mberManageVO.setEmail1(emailAdres[0]); - mberManageVO.setEmail2(emailAdres[1]); - } - - // 사진파일ID - mberManageVO.setAtchFileId(mberManageVO.getPhotofileId()); - //기존 권한 코드 - mberManageVO.setOrignlAuthorCode(mberManageVO.getAuthorCode()); - - model.addAttribute("mberManageVO", mberManageVO); - model.addAttribute("userSearchVO", userSearchVO); - - return "cmm/uss/umt/EgovMberSelectUpdtView"; - } - - /** - * 일반회원정보 수정후 목록조회 화면으로 이동한다. - * @param mberManageVO 일반회원수정정보 - * @param bindingResult 입력값검증용 bindingResult - * @param model 화면모델 - * @return forward:/uss/umt/EgovMberManage.do - * @throws Exception - */ - @RequestMapping("/uss/umt/mber/EgovMberSelectUpdt.do") - public String EgovMberSelectUpdt(@ModelAttribute("mberManageVO") MberManageVO mberManageVO, BindingResult bindingResult, Model model) throws Exception { - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if (!isAuthenticated) { - return "forward:/uss/umt/mber/EgovMberList.do"; - } - - beanValidator.validate(mberManageVO, bindingResult); - if (bindingResult.hasErrors()) { - model.addAttribute("message", bindingResult.getAllErrors().get(0).getDefaultMessage()); - return "forward:/uss/umt/EgovMberManage.do"; - } else { - if (EgovStringUtil.isEmpty(mberManageVO.getGroupId())) { - mberManageVO.setGroupId(null); - } - - mberManageService.updateMber(mberManageVO); - //Exception 없이 진행시 수정성공메시지 - model.addAttribute("message", egovMessageSource.getMessage("success.common.update")); - return "forward:/uss/umt/mber/EgovMberList.do"; - } - } - - /** - * 일반회원정보삭제후 목록조회 화면으로 이동한다. - * @param checkedIdForDel 삭제대상 아이디 정보 - * @param userSearchVO 검색조건정보 - * @param model 화면모델 - * @return forward:/uss/umt/EgovMberManage.do - * @throws Exception - */ - @RequestMapping("/uss/umt/mber/EgovMberDelete.do") - public String EgovMberDelete(final MultipartHttpServletRequest multiRequest, @RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, Model model) throws Exception { - - if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey" , multiRequest)) { - return "redirect:/uss/umt/mber/EgovMberList.do"; - } - - // 미인증 사용자에 대한 보안처리 - Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); - if(!isAuthenticated) { - model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); - return "uat/uia/EgovLoginUsr"; - } - - mberManageService.deleteMber(checkedIdForDel); - //Exception 없이 진행시 삭제성공메시지 - model.addAttribute("message", egovMessageSource.getMessage("success.common.delete")); - return "forward:/uss/umt/mber/EgovMberList.do"; - } - - private boolean validationPasswd(String pw){ - String pattern = "(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*()-+=])(?=\\S+$).{8,}"; - if(pw.matches(pattern)){ - return true; - } - return false; - } - - @RequestMapping(value = "/uss/umt/user/PassMissResetAjax.do") - public ModelAndView passMissResetAjax(@RequestParam Map commandMap, - LoginVO loginVO - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - loginService.updatePassMissReset(loginVO); - return modelAndView; - } - - //사용자 회원상태 변경 - @RequestMapping(value = "/uss/umt/user/updateEmplyrSttusCodeAjax.do") - public ModelAndView updateEmplyrSttusCodeAjax(@RequestParam Map commandMap, - LoginVO loginVO - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - loginService.updateEmplyrSttusCode(loginVO); - return modelAndView; - } - - /** - * - * (사용자) 차단 사용자목록을 조회한다. (pageing) - * @param userSearchVO 검색조건정보 - * @param model 화면모델 - * @return cmm/uss/umt/EgovUserManage - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/user/EgovBlockUserList.do") - public String selectBlockUserList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, - ModelMap model, - HttpSession session) throws Exception{ - - if(userSearchVO.getPageUnit() != 10) { - userSearchVO.setPageUnit(userSearchVO.getPageUnit()); - } - - /** pageing */ - PaginationInfo paginationInfo = new PaginationInfo(); - paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); - paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); - paginationInfo.setPageSize(userSearchVO.getPageSize()); - - userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); - userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); - userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - if(null != loginVO && !"super".equals(loginVO.getSiteId())){ - userSearchVO.setSiteId(loginVO.getSiteId()); - } - - userSearchVO.setAdminYn("N"); - if(null==userSearchVO.getSearchCondition_01()){ //최초 페이지 로딩시 차단목록 조회 - userSearchVO.setEmplyrSttusCode("B"); - }else{ - userSearchVO.setEmplyrSttusCode(userSearchVO.getSearchCondition_01()); - } - - if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List - userSearchVO.setSearchSortCnd("uniqId"); - userSearchVO.setSearchSortOrd("desc"); - } - List resultList = userManageService.selectUserList(userSearchVO); - model.addAttribute("resultList", resultList); - paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); - model.addAttribute("paginationInfo", paginationInfo); - - //사용자상태코드를 코드정보로부터 조회 - ComDefaultCodeVO vo = new ComDefaultCodeVO(); - vo.setCodeId("COM013"); - model.addAttribute("emplyrSttusCodeList", cmmUseService.selectCmmCodeDetail(vo));//사용자상태코드목록 - - //권한조회 - AuthorManageVO authorManageVO = new AuthorManageVO(); - authorManageVO.setFirstIndex(0); - authorManageVO.setLastIndex(10); - authorManageVO.setRecordCountPerPage(10); - authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); - model.addAttribute("authorList", authorManageVO.getAuthorManageList()); - return "cmm/uss/umt/EgovBlockUserList"; - } - - - /** - * rsa 공개키, 개인키 생성 - * - * @param request - */ - /*public void initRsa(HttpServletRequest request) { - HttpSession session = request.getSession(); - - KeyPairGenerator generator; - try { - generator = KeyPairGenerator.getInstance(EgovUserManageController.RSA_INSTANCE); - generator.initialize(1024); - - KeyPair keyPair = generator.genKeyPair(); - KeyFactory keyFactory = KeyFactory.getInstance(EgovUserManageController.RSA_INSTANCE); - PublicKey publicKey = keyPair.getPublic(); - PrivateKey privateKey = keyPair.getPrivate(); - - session.setAttribute(EgovUserManageController.RSA_WEB_KEY, privateKey); // session에 RSA 개인키를 세션에 저장 - - RSAPublicKeySpec publicSpec = (RSAPublicKeySpec) keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class); - String publicKeyModulus = publicSpec.getModulus().toString(16); - String publicKeyExponent = publicSpec.getPublicExponent().toString(16); - - request.setAttribute("RSAModulus", publicKeyModulus); // rsa modulus 를 request 에 추가 - request.setAttribute("RSAExponent", publicKeyExponent); // rsa exponent 를 request 에 추가 - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - }*/ - - /** - * 복호화 - * - * @param privateKey - * @param securedValue - * @return - * @throws Exception - */ - /*private String decryptRsa(PrivateKey privateKey, String securedValue) throws Exception { - Cipher cipher = Cipher.getInstance(EgovUserManageController.RSA_INSTANCE); - byte[] encryptedBytes = hexToByteArray(securedValue); - cipher.init(Cipher.DECRYPT_MODE, privateKey); - byte[] decryptedBytes = cipher.doFinal(encryptedBytes); - String decryptedValue = new String(decryptedBytes, "utf-8"); // 문자 인코딩 주의. - return decryptedValue; - }*/ - - /** - * 16진 문자열을 byte 배열로 변환한다. - * - * @param hex - * @return - */ - public static byte[] hexToByteArray(String hex) { - if (hex == null || hex.length() % 2 != 0) { return new byte[] {}; } - - byte[] bytes = new byte[hex.length() / 2]; - for (int i = 0; i < hex.length(); i += 2) { - byte value = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); - bytes[(int) Math.floor(i / 2)] = value; - } - return bytes; - } - - /* 회원가입 설정 업데이트*/ - @RequestMapping("/uss/umt/user/EgovBlockUserUpdateAjax.do") - public ModelAndView selectBlockUserAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - UserManageVO inertUserManageVO = new UserManageVO(); - //mberManageService.updateMberCnf(mberManageConfigVO); - try { - for(int i=0 ; i< userManageVO.getEsntlIdNsttusCode().length ; i++) { - inertUserManageVO.setEsntlId(userManageVO.getEsntlIdNsttusCode()[i].split(":")[0]); - inertUserManageVO.setEmplyrSttusCode(userManageVO.getEsntlIdNsttusCode()[i].split(":")[1]); - userManageService.updateUserSttusCode(inertUserManageVO); - } - - modelAndView.addObject("result", "success"); - }catch (Exception e) { - modelAndView.addObject("result", "fail"); - } - return modelAndView; - } - - /** - * 개인정보보호 비밀번호 체크 - * @param commandMap 파라메터전달용 commandMap - * @param model 화면모델 - * @return uss/umt/EgovIdDplctCnfirm - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/user/CheckInfoProtectAjax.do") - public ModelAndView CheckInfoProtectAjax(@RequestParam Map commandMap - ,UserManageVO userManageVO - ,HttpSession session - ) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - UserManageVO returnUserManageVO = new UserManageVO(); - userManageVO.setUniqId(userManageVO.getEsntlId()); - returnUserManageVO = userManageService.selectPassword(userManageVO) ; - if(null==returnUserManageVO) { //UserManageVO - modelAndView.addObject("usedCnt", 0); - }else { - String returnPassword = returnUserManageVO.getPassword() ; - //패스워드 암호화 - String encryptPass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId()); - if(returnPassword.equals(encryptPass)) { - modelAndView.addObject("usedCnt", 1); - //세션으로 인증넣어줌 - session.setAttribute("info_pro_session", true); - }else { - modelAndView.addObject("usedCnt", 0); - } - } - return modelAndView; - } - - /** - * 개인정보보호 하단 include - * @param commandMap 파라메터전달용 commandMap - * @param model 화면모델 - * @return uss/umt/EgovIdDplctCnfirm - * @throws Exception - */ - @RequestMapping(value = "/uss/umt/IncInfoProtect.do") - public String IncInfoProtect(ModelMap model, - HttpSession session) throws Exception{ - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - SiteManagerVO siteManagerVO =new SiteManagerVO(); - siteManagerVO.setSiteId(loginVO.getSiteId()); //자신이 속한 사이트 아이디 - siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; - model.addAttribute("siteManagerVO", siteManagerVO); - return "cmm/uss/umt/IncInfoProtect"; - } - - //리스트 엑셀 다운로드 - @RequestMapping(value="/uss/umt/user/userExcelDownload.do") - public void userExcelDownload(UserDefaultVO userSearchVO, - HttpServletRequest request, - HttpServletResponse response , - ModelMap model) throws Exception { - - userSearchVO.setRecordCountPerPage(100000); - userSearchVO.setFirstIndex(0); - LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); - if(null != loginVO && !"super".equals(loginVO.getSiteId())){ - userSearchVO.setSiteId(loginVO.getSiteId()); - } - // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. - SXSSFWorkbook wb = new SXSSFWorkbook(100); - CellStyle style = wb.createCellStyle(); - style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 - style.setBorderLeft(CellStyle.BORDER_THIN); - style.setBorderRight(CellStyle.BORDER_THIN); - style.setBorderTop(CellStyle.BORDER_THIN); - Font font = wb.createFont(); - font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold - - Cell cell = null; - Row row = null; - - String fileName ="관리자 리스트"; - if("Y".equals(userSearchVO.getGnrlUser())) fileName = "사용자 리스트" ; - - String sheetTitle = ""; - try{ - List userSearchList = userManageService.selectUserList(userSearchVO) ; - { //화면 리스트 - sheetTitle = "관리자 리스트(화면)" ; //제목 - if("Y".equals(userSearchVO.getGnrlUser())) sheetTitle = "사용자 리스트(화면)" ; - Sheet sheet = wb.createSheet(sheetTitle); - row = sheet.createRow(0); - for(int i=0 ; i < userExcelValue.length ; i++) { - cell = row.createCell(i); - cell.setCellStyle(style); - cell.setCellValue(userExcelValue[i][1]); - } - - for(int i=0; i < userSearchList.size(); i++){ - row = sheet.createRow(i+1); - for(int j=0 ; j < userExcelValue.length ; j++) { - cell = row.createCell(j); - cell.setCellStyle(style); - if(j==0) cell.setCellValue(i+1); //번호 - if(j==1) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("siteIdTxt")); //사이트명 - if(j==2) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userId")); //아이디 - if(j==3) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userNm")); //관리자명 - if(j==4) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("authorCodeTxt")); //권한 - if(j==5) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("offmTelno")); //전화번호 - if(j==6) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("emailAdres")); //이메일 - if(j==7) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("sbscrbDe")); //등록일 - } - } - } - { //DB리스트 - sheetTitle = "관리자 리스트(DB)" ; //제목 - if("Y".equals(userSearchVO.getGnrlUser())) sheetTitle = "사용자 리스트(DB)" ; - Sheet sheet = wb.createSheet(sheetTitle); - row = sheet.createRow(0); - for(int i=0 ; i < userExcelValue.length-2 ; i++){ //아이디,등록일자 없어 -2 - cell = row.createCell(i); - cell.setCellStyle(style); - if(i==0) { - cell.setCellValue( "Y".equals(userSearchVO.getGnrlUser()) ? "사용자 아이디" : "관리자 아이디" ); - }else if(i==1){ - if(!"".equals(userExcelValue[i][3])){ - cell.setCellValue(userExcelValue[i][1]+"\n"+userExcelValue[i][3]); - }else { - cell.setCellValue(userExcelValue[i][1]); - } - }else{ //3번제 컬럼 부터 하나씩 앞으로 세팅 - if(!"".equals(userExcelValue[i+1][3])){ - cell.setCellValue(userExcelValue[i+1][1]+"\n"+userExcelValue[i+1][3]); - }else { - cell.setCellValue(userExcelValue[i+1][1]); - } - } - } - - for(int i=0; i < userSearchList.size(); i++){ - row = sheet.createRow(i+1); - /*for(int j=0 ; j < userExcelValue.length-1 ; j++) {*/ - for(int j=0 ; j < userExcelValue.length-2 ; j++) {//아이디 없어 -1 - cell = row.createCell(j); - cell.setCellStyle(style); - if(j==0) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userId")); //아이디 - if(j==1) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("siteId")); //사이트명 - if(j==2) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userNm")); //관리자명 - if(j==3) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("authorCode")); //권한 - if(j==4) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("offmTelno")); //전화번호 - if(j==5) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("emailAdres")); //이메일 - } - } - - } - response.setHeader("Set-Cookie", "fileDownload=true; path=/"); - SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); - Date currentTime = new Date (); - String mTime = mSimpleDateFormat.format ( currentTime ); - fileName = fileName+"("+mTime+")"; - - response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); - wb.write(response.getOutputStream()); - - }catch(Exception e) { - response.setHeader("Set-Cookie", "fileDownload=false; path=/"); - response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); - response.setHeader("Content-Type","text/html; charset=utf-8"); - OutputStream out = null; - try { - out = response.getOutputStream(); - byte[] data = new String("fail..").getBytes(); - out.write(data, 0, data.length); - } catch(Exception ignore) { - System.out.println("Exception Occured!!!"); - } finally { - if(out != null) try { out.close(); } catch(Exception ignore) {System.out.println("Exception Occured!!!");} - } - }finally { - // 디스크 적었던 임시파일을 제거합니다. - wb.dispose(); - try { wb.close(); } catch(Exception ignore) {System.out.println("Exception Occured!!!");} - } - } - - //자동완성 데이터 가져오기 - @RequestMapping(value = "/uat/uia/RecentSearchShowAjax.do", method = RequestMethod.GET, produces="text/plain;charset=UTF-8") - @ResponseBody - public String recentSearchShowAjax(Locale locale, - UserManageVO userManageVO, - Model model, - HttpSession session) throws Exception { - //DB부하로 로그인시 session 의 최근 검색어를 가져옴. - Gson gson = new Gson(); - return gson.toJson(session.getAttribute("recentSearch")); - } - - /** - * 검색 버튼 클릭시 최근검색어 등록 - */ - @RequestMapping("/uat/uia/RecentSearchUpdateAjax.do") - public ModelAndView RecentSearchUpdateAjax(UserManageVO userManageVO, - HttpSession session - ) throws Exception { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - - if(null != session.getAttribute("loginId")) { //로그인시 - if(null != session.getAttribute("recentSearch")){ //세션이 없으면(로그인 안함) DB조회 - List arrRecentSearch = (List)session.getAttribute("recentSearch") ; - arrRecentSearch.add(0 , userManageVO.getSearchWord()); //맨앞 추가; - - //사이트별 갯수 세팅 - List siteManageList = (List)session.getAttribute("siteManageList") ; - for(SiteManagerVO siteManagerVO : siteManageList) { - if(siteManagerVO.getSiteId().equals((String)session.getAttribute("siteId"))){ - //RECENT_SEARCH_CD` char(1) DEFAULT 'N' COMMENT '최근검색어 관리코드(N:사용안함,5:5개,9:10개)' - if("N".equals(siteManagerVO.getRecentSearchCd())){ //사용안함 - arrRecentSearch = arrRecentSearch.subList(0 ,0) ; - }else if("5".equals(siteManagerVO.getRecentSearchCd())){ - if(arrRecentSearch.size() > 5) { - arrRecentSearch = arrRecentSearch.subList(0 ,5) ; - }else { - arrRecentSearch = arrRecentSearch.subList(0, arrRecentSearch.size()) ; - } - }else{ //9면 10개까지 - if(arrRecentSearch.size() > 10) { - arrRecentSearch = arrRecentSearch.subList(0 , 10) ; - }else { - arrRecentSearch = arrRecentSearch.subList(0, arrRecentSearch.size()) ; - } - } - break; - } - } - - //중복값 제거 - ArrayList arrList = new ArrayList(); - HashSet hs = new HashSet(arrRecentSearch); - Iterator it = hs.iterator(); - String tempStr = ""; - while(it.hasNext()){ - tempStr = (String)it.next(); - if(!"".equals(tempStr)) { - arrList.add(tempStr) ; - } - tempStr = ""; - } - arrRecentSearch = arrList ; - - //추가된 값을 세션에 넣는다. - session.setAttribute("recentSearch", arrRecentSearch) ; - //String 변환 및 DB 업데이트 - userManageVO.setEmplyrId((String)session.getAttribute("loginId")); - userManageVO.setSearchWord(String.join(",", arrRecentSearch)); - userManageService.insertUpdateSearchWord(userManageVO); - }else{ - - } - } - - /*egovSiteManagerService.updateAdminLogKpCd(siteManagerVO); - modelAndView.addObject("siteManagerVO", siteManagerVO);*/ - return modelAndView; - } - - - - @RequestMapping("/getUrlAjax.do") - public ModelAndView getUrlAjax(UserManageVO userManageVO) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - StringBuffer sbuf = new StringBuffer(); - StringBuffer result = new StringBuffer(); - try { - // URL 객체 생성 - String strurlOri = "https://www.warmemo.or.kr/front/militaryInfo/searchView.do?idx=" ; - - String strurl = ""; - for(int i = 2073 ; i <= 2430 ; i++) { - strurl = strurlOri+i; - URL url = new URL(strurl); - // URLConnection 생성 - URLConnection urlConn = url.openConnection(); - InputStream is = urlConn.getInputStream(); - InputStreamReader isr = new InputStreamReader(is, "UTF-8"); - BufferedReader br = new BufferedReader(isr); - String str ; - int line = 0; - while((str=br.readLine()) != null){ - - sbuf.append(str + "\r\n") ; - if(line != 0) { - line++; - } - if(str.contains("
")) { - line ++; - } - - if(line == 3) { - result.append(strurl +"," + str.trim()+"," ); - } - - if(str.contains("유형 :")) { - result.append(str.split(":")[1].trim()+"\n"); - } - } - - } - - } catch (MalformedURLException e) { - System.out.println("MalformedURLException Occured!!!"); - } catch (IOException e) { - System.out.println("IOException Occured!!!"); - } - - return modelAndView; - } - +package kcc.let.uss.umt.web; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import org.springmodules.validation.commons.DefaultBeanValidator; + +import com.google.gson.Gson; + +import egovframework.rte.fdl.property.EgovPropertyService; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +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; +import kcc.com.cmm.LoginVO; +import kcc.com.cmm.service.EgovCmmUseService; +import kcc.com.cmm.service.EgovFileMngService; +import kcc.com.cmm.service.EgovFileMngUtil; +import kcc.com.cmm.util.EgovDoubleSubmitHelper; +import kcc.com.cmm.util.RedirectUrlMaker; +import kcc.com.utl.fcc.service.EgovStringUtil; +import kcc.let.org.service.LocVO; +import kcc.let.org.service.OrgChartManageService; +import kcc.let.sec.ram.service.AuthorManageVO; +import kcc.let.sec.ram.service.EgovAuthorManageService; +import kcc.let.sec.rgm.service.AuthorGroup; +import kcc.let.sec.rgm.service.EgovAuthorGroupService; +import kcc.let.sym.site.service.EgovSiteManagerService; +import kcc.let.sym.site.service.SiteManagerVO; +import kcc.let.uat.uia.service.EgovLoginService; +import kcc.let.uss.umt.service.EgovMberManageService; +import kcc.let.uss.umt.service.EgovUserManageService; +import kcc.let.uss.umt.service.MberManageConfigVO; +import kcc.let.uss.umt.service.MberManageVO; +import kcc.let.uss.umt.service.UserDefaultVO; +import kcc.let.uss.umt.service.UserManageVO; +import kcc.let.utl.fcc.service.EgovCryptoUtil; +import kcc.let.utl.sim.service.EgovFileScrty; + +/** + * 업무사용자관련 요청을 비지니스 클래스로 전달하고 처리된결과를 해당 웹 화면으로 전달하는 Controller를 정의한다 + * @author 공통서비스 개발팀 조재영 + * @since 2009.04.10 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2009.04.10  조재영          최초 생성
+ *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
+ *
+ * 
+ */ +@Controller +public class EgovUserManageController { + +// static String RSA_WEB_KEY = "_RSA_WEB_Key_1"; // 개인키 session key +// static String RSA_INSTANCE = "RSA"; // rsa transformation + + /** userManageService */ + @Resource(name = "userManageService") + private EgovUserManageService userManageService; + + /** cmmUseService */ + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + /** EgovMessageSource */ + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + /** mberManageService */ + @Resource(name = "mberManageService") + private EgovMberManageService mberManageService; + + /** DefaultBeanValidator beanValidator */ + @Autowired + private DefaultBeanValidator beanValidator; + + @Resource(name = "EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileMngService; + + @Resource(name = "egovAuthorManageService") + private EgovAuthorManageService egovAuthorManageService; + + /*@Resource(name = "EgovOrgChartManageService") + private EgovOrgChartManageService orgChartManageService;*/ + + @Resource(name = "orgChartManageService") + private OrgChartManageService orgChartManageService; + + + @Resource(name = "egovAuthorGroupService") + private EgovAuthorGroupService egovAuthorGroupService; + + @Resource(name = "egovSiteManagerService") + private EgovSiteManagerService egovSiteManagerService; + + @Resource(name = "loginService") + private EgovLoginService loginService; + + + //암복호화 유틸 + @Resource(name = "egovCryptoUtil") + EgovCryptoUtil egovCryptoUtil; + + + private String topLocNo = "1000000" ; //전역 최상위 매뉴번호 + + + //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} + private String[][] userExcelValue ={ + {"0" ,"번호" , "1" , "" }, + {"1", "사이트명" , "ITN" , "[코드]"}, + {"2", "아이디" , "testId", ""}, + {"3", "이름" , "홍길동", ""}, + {"4", "권한" , "일반관리자", "[코드]"}, + {"5", "전화번호(부서)" , "02-123-4567", ""}, + {"6", "이메일" , "test@kcc.co.kr", ""}, + {"7", "등록일" ,"2019-10-31", ""} + } ; + /** + * + * (관리자)관리자목록을 조회한다. (pageing) + * @param userSearchVO 검색조건정보 + * @param model 화면모델 + * @return cmm/uss/umt/EgovUserManage + * @throws Exception + */ + @RequestMapping(value = {"/uss/umt/user/EgovUserManage.do", "/uss/umt/user/EgovUserManageMenuAjax.do"}) + public String selectUserList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, + ModelMap model, + HttpServletRequest request, + HttpSession session) throws Exception { + { + //일반관리자가 좌측의 매뉴의 관리자 관리 클릭시 리스트가 아닌 자신의 정보수정페이지로 리로딩. + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();//최고관리자의 경우 비밀번호 확인 없음. + loginVO.setId(loginVO.getId()); + if(!"ROLE_ADMIN".equals(loginService.getUserAuth(loginVO).getAuthority())){//최고관리자 아닐경우 + return "redirect:/EgovTopPageLink.do?link=/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginVO.getUniqId()+"&baseMenuNo=3500000" ; + } + } + + if(userSearchVO.getPageUnit() != 10) { + userSearchVO.setPageUnit(userSearchVO.getPageUnit()); + } + + try{ + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); + paginationInfo.setPageSize(userSearchVO.getPageSize()); + + userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + //userSearchVO.setAdminYn("Y"); + if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + userSearchVO.setSearchSortCnd("uniqId"); + userSearchVO.setSearchSortOrd("desc"); + } + List resultList = userManageService.selectUserList(userSearchVO) ; + model.addAttribute("resultList", resultList); + //paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); + int i_resultList = resultList.size(); + + /* + if (i_resultList>0) { + String g_resultList = ((EgovMap)resultList.get(0)).get("totCnt").toString(); + } + */ + + //paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((int)((EgovMap)resultList.get(0)).get("totCnt")) : 0); + paginationInfo.setTotalRecordCount(i_resultList); + model.addAttribute("paginationInfo", paginationInfo); + + //사용자상태코드를 코드정보로부터 조회 + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + vo.setCodeId("COM038"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo));//사용자상태코드목록 + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + + if("/uss/umt/user/EgovUserManageMenuAjax.do".equals(request.getServletPath())) { + return "cmm/uss/umt/EgovUserManageMenuAjax"; + } + }catch(Exception ex) { + ex.printStackTrace(); + } + + + return "cmm/uss/umt/EgovUserManage"; + } + + /** + * + * (사용자) 사용자목록을 조회한다. (pageing) + * @param userSearchVO 검색조건정보 + * @param model 화면모델 + * @return cmm/uss/umt/EgovUserManage + * @throws Exception + */ + + @RequestMapping(value = "/uss/umt/user/EgovGnrlUserManage.do") + public String selectGnrlUserManage(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, + ModelMap model, + HttpSession session) throws Exception { + + if(userSearchVO.getPageUnit() != 10) { + userSearchVO.setPageUnit(userSearchVO.getPageUnit()); + } + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); + paginationInfo.setPageSize(userSearchVO.getPageSize()); + + userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + + userSearchVO.setAdminYn("N"); + if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + userSearchVO.setSearchSortCnd("uniqId"); + userSearchVO.setSearchSortOrd("desc"); + } + //이름 검색 암호화 + userSearchVO.setSnsSiteName(egovCryptoUtil.encrypt(userSearchVO.getSearchKeyword())); + + List resultList = mberManageService.selectMberList(userSearchVO); + + //이름 복호화 + + model.addAttribute("resultList", resultList); +// paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); + paginationInfo.setTotalRecordCount(10); + model.addAttribute("paginationInfo", paginationInfo); + + //사용자상태코드를 코드정보로부터 조회 + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + vo.setCodeId("COM038"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo));//사용자상태코드목록 + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + return "cmm/uss/umt/EgovGnrlUserManage"; + } + + /** + * (관리자) 사용자등록화면으로 이동한다. + * @param userSearchVO 검색조건정보 + * @param userManageVO 사용자초기화정보 + * @param model 화면모델 + * @return cmm/uss/umt/EgovUserInsert + * @throws Exception + */ + @RequestMapping("/uss/umt/user/EgovUserInsertView.do") + public String insertUserView(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, @ModelAttribute("userManageVO") UserManageVO userManageVO,Model model) + throws Exception { + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 + + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); + model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //소속기관코드를 코드정보로부터 조회 - COM025 + vo.setCodeId("COM025"); + model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //조직정보를 조회 - ORGNZT_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); + + //그룹정보를 조회 - GROUP_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); + + //조직도 정보조회 + /*PartInfVO partInfVO = new PartInfVO(); + partInfVO.setDepth(1); + List orgChartDepth1 = orgChartManageService.selectChartDepth(partInfVO); + model.addAttribute("orgChartDepth1", orgChartDepth1);*/ + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); + authorManageVO.setAuthorSet("01"); + authorManageVO.setSearchSortCnd("sort_num"); + authorManageVO.setSearchSortOrd("desc"); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + + + //selectbox 미리 만들기 + LocVO locVO = new LocVO(); + locVO.setTopLocNo(topLocNo); //최상위 매뉴번호 + List orgHiddenList = orgChartManageService.selectOrgChartListAjax(locVO); + String userOneDepth = ""; + String userTwoDepth = ""; + + if(null != userManageVO.getPartIdx() && !"".equals(userManageVO.getPartIdx())) { + for(LocVO tempLocVO : orgHiddenList) { + if(userManageVO.getPartIdx().equals(tempLocVO.getId())){ + if(1==tempLocVO.getDepths()) { //1뎁스면 조회 안함 + userOneDepth = tempLocVO.getId(); + }else { //2뎁스면 + userTwoDepth = tempLocVO.getId() ; + userOneDepth = tempLocVO.getParent() ; + } + } + } + } + model.addAttribute("userOneDepth", userOneDepth); + model.addAttribute("userTwoDepth", userTwoDepth); + model.addAttribute("orgHiddenList", orgHiddenList); + + return "cmm/uss/umt/EgovUserInsert"; + } + + /** + * (사용자) 사용자등록화면으로 이동한다. + * @param userSearchVO 검색조건정보 + * @param userManageVO 사용자초기화정보 + * @param model 화면모델 + * @return cmm/uss/umt/EgovUserInsert + * @throws Exception + */ + @RequestMapping(value= {"/uss/umt/user/EgovGnrlUserInsertView.do", "/uss/umt/user/EgovGnrlUserInsertViewAjax.do"} ) + public String insertGnrlUserView(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, + @ModelAttribute("mberManageVO") MberManageVO mberManageVO, + HttpSession session, + HttpServletRequest request, + Model model) + throws Exception { + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 + + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); + model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //소속기관코드를 코드정보로부터 조회 - COM025 + vo.setCodeId("COM025"); + model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //조직정보를 조회 - ORGNZT_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); + + //그룹정보를 조회 - GROUP_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); + + //조직도 정보조회 + /*PartInfVO partInfVO = new PartInfVO(); + partInfVO.setDepth(1); + List orgChartDepth1 = orgChartManageService.selectChartDepth(partInfVO); + model.addAttribute("orgChartDepth1", orgChartDepth1);*/ + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + + //config 정보 가져오기 + MberManageConfigVO mberConfigVO = new MberManageConfigVO(); + mberConfigVO.setUseYn("Y"); //사용하는것만 + mberConfigVO.setIsSns("N");; + List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); + model.addAttribute("mberManageCnfList", mberManageCnfList); + if("/uss/umt/user/EgovGnrlUserInsertViewAjax.do".equals(request.getServletPath())) { + return "cmm/uss/umt/EgovGnrlUserInsertAjax"; + } + return "cmm/uss/umt/EgovGnrlUserInsert"; + } + + /** + * 사용자등록처리후 목록화면으로 이동한다. + * @param userManageVO 사용자등록정보 + * @param bindingResult 입력값검증용 bindingResult + * @param model 화면모델 + * @return forward:/uss/umt/user/EgovUserManage.do + * @throws Exception + */ + @RequestMapping("/uss/umt/user/EgovUserInsert.do") + public String insertUser(@ModelAttribute("userManageVO") UserManageVO userManageVO, BindingResult bindingResult, Model model , RedirectAttributes redirectAttributes) throws Exception { + if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { + return "redirect:/uss/umt/user/EgovUserManage.do"; + } + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + if(!validationPasswd(userManageVO.getPassword())){ + redirectAttributes.addFlashAttribute("message", "패스워드 규칙에 어긋납니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + beanValidator.validate(userManageVO, bindingResult); + if (bindingResult.hasErrors()){ + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 + + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); + model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //소속기관코드를 코드정보로부터 조회 - COM025 + vo.setCodeId("COM025"); + model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //조직정보를 조회 - ORGNZT_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); + + //그룹정보를 조회 - GROUP_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); + //return "forward:/uss/umt/user/EgovUserInsertView.do"; + return "cmm/uss/umt/EgovUserInsert"; + }else{ + try{ + userManageService.insertUser(userManageVO); + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); + }catch(Exception e){ + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert")); + } + } + //관리자등록일 경우 + System.out.println("userManageVO.getGnrlUser() :: "+ userManageVO.getGnrlUser()); + if(userManageVO.getGnrlUser().equals("N")) { + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + //사용자 등록일 경우 + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + //return "redirect:/uss/umt/user/EgovUserManage.do"; + } + + /** + * 사용자정보 수정을 위해 사용자정보를 상세조회한다. + * 최고관리자의 경우에는 비밀번호를 체크하지 않는다. + * @param uniqId 상세조회대상 사용자아이디 + * @param userSearchVO 검색조건 + * @return cmm/uss/umt/EgovUserSelectUpdt + * @param model 화면모델 + * @throws Exception + */ + @RequestMapping("/uss/umt/user/EgovUserSelectUpdtView.do") + public String updateUserView(@RequestParam("selectedId") String uniqId, + @ModelAttribute("searchVO") UserDefaultVO userSearchVO, + HttpServletRequest request, + @RequestParam Map commandMap, + Model model) throws Exception { + + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + + if(!"ROLE_ADMIN".equals(loginVO.getAuthority()) && !uniqId.equals(loginVO.getUniqId())) { + /*return "/cmm/main/mainPage.do";*/ + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/cmm/main/mainPage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + try { + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); + //소속기관코드를 코드정보로부터 조회 - COM025 + vo.setCodeId("COM025"); + model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); + //조직정보를 조회 - ORGNZT_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); + //그룹정보를 조회 - GROUP_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); + + UserManageVO userManageVO = new UserManageVO(); + userManageVO = userManageService.selectUser(uniqId); + model.addAttribute("userSearchVO", userSearchVO); + model.addAttribute("userManageVO", userManageVO); + + if(userManageVO == null){ + /*redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.select")); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl();*/ + } + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); + authorManageVO.setAuthorSet("01"); + authorManageVO.setSearchSortCnd("sort_num"); + authorManageVO.setSearchSortOrd("desc"); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + //initRsa(request); + + if("ROLE_ADMIN".equals(loginVO.getAuthority())) { + model.addAttribute("isAdmin", "Y"); + } + + if("ROLE_USER_MEMBER".equals(loginVO.getAuthority())) { + model.addAttribute("isMember", "Y"); + } + + //selectbox 미리 만들기 + LocVO locVO = new LocVO(); + locVO.setTopLocNo(topLocNo); //최상위 매뉴번호 + List orgHiddenList = orgChartManageService.selectOrgChartListAjax(locVO); + String userOneDepth = ""; + String userTwoDepth = ""; + + if(null != userManageVO.getPartIdx() + && !"".equals(userManageVO.getPartIdx()) + ) { + for(LocVO tempLocVO : orgHiddenList) { + if(userManageVO.getPartIdx().equals(tempLocVO.getId())){ + if(1==tempLocVO.getDepths()) { //1뎁스면 조회 안함 + userOneDepth = tempLocVO.getId(); + }else { //2뎁스면 + userTwoDepth = tempLocVO.getId() ; + userOneDepth = tempLocVO.getParent() ; + } + } + } + } + model.addAttribute("userOneDepth", userOneDepth); + model.addAttribute("userTwoDepth", userTwoDepth); + model.addAttribute("orgHiddenList", orgHiddenList); + }catch(Exception ex) { + ex.printStackTrace(); + } + + return "cmm/uss/umt/EgovUserSelectUpdt"; + } + + //사용자 수정화면 + @RequestMapping("/uss/umt/user/EgovGnrlUserSelectUpdtView.do") + public String updateGnrlUserView(@RequestParam("selectedId") String uniqId, + HttpServletRequest request, + @ModelAttribute("searchVO") UserDefaultVO userSearchVO, + @ModelAttribute("mberManageVO") MberManageVO mberManageVO, + RedirectAttributes redirectAttributes , + Model model, + HttpSession session) throws Exception { + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); + + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCodeList", cmmUseService.selectCmmCodeDetail(vo)); + + //소속기관코드를 코드정보로부터 조회 - COM025 + vo.setCodeId("COM025"); + model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //조직정보를 조회 - ORGNZT_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); + + //그룹정보를 조회 - GROUP_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); + + mberManageVO = mberManageService.selectMber(uniqId) ; + + model.addAttribute("userSearchVO", userSearchVO); + + mberManageVO.setMberNm(egovCryptoUtil.decrypt(mberManageVO.getMberNm())); + + model.addAttribute("mberManageVO", mberManageVO); + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); +// authorManageVO.setAuthorSet("02"); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + + if(mberManageVO == null){ + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.select")); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + + //config 정보 가져오기 + MberManageConfigVO mberConfigVO = new MberManageConfigVO(); + mberConfigVO.setUseYn("Y"); //사용하는것만 + mberConfigVO.setIsSns("N"); //SNS는 제외 + List mberManageCnfList = mberManageService.selectMberCnf(mberConfigVO); + for(MberManageConfigVO mberVO : mberManageCnfList) { //하드코딩.... + /*if("offmTelno".equals(mberVO.getConfigId())){ //전화번호 + mberVO.setParmValue(mberManageVO.getMoblphonNo()); + mberVO.setValidateName("numberOnly2"); + }*/ + if("moblphonNo".equals(mberVO.getConfigId())){ //핸드폰 + mberVO.setParmValue(mberManageVO.getMoblphonNo()); + mberVO.setValidateName("numberOnly2"); + } + if("adres".equals(mberVO.getConfigId())){ //주소 + mberVO.setParmValue(mberManageVO.getAdres()); + } + + if("detailAdres".equals(mberVO.getConfigId())){ //상세주소 + mberVO.setParmValue(mberManageVO.getDetailAdres()); + } + + if("mberFxnum".equals(mberVO.getConfigId())){ //팩스번호 + mberVO.setParmValue(mberManageVO.getMberFxnum()); + mberVO.setValidateName("numberOnly2"); + } + if("mberEmailAdres".equals(mberVO.getConfigId())){ //이메일 + mberVO.setParmValue(mberManageVO.getMberEmailAdres()); + } + if("zip".equals(mberVO.getConfigId())){ //우편번호 + mberVO.setParmValue(mberManageVO.getZip()); + mberVO.setValidateName("numberOnly"); + } + if("emailYn".equals(mberVO.getConfigId())){ //이메일수신여부 + mberVO.setParmValue(mberManageVO.getEmailYN()); + } + if("smsYN".equals(mberVO.getConfigId())){ //문자수신여부 + mberVO.setParmValue(mberManageVO.getSmsYN()); + } + } + + model.addAttribute("mberManageCnfList", mberManageCnfList); + +// initRsa(request); + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();//최고관리자의 경우 비밀번호 확인 없음. + loginVO.setId(loginVO.getId()); + if("ROLE_ADMIN".equals(loginService.getUserAuth(loginVO).getAuthority())){ + model.addAttribute("roleAdmin", "Y"); + } + return "cmm/uss/umt/EgovGnrlUserSelectUpdt"; + } + + /** + * 관리자 정보 수정후 목록조회 화면으로 이동한다. + * @param userManageVO 사용자수정정보 + * @param bindingResult 입력값검증용 bindingResult + * @param model 화면모델 + * @return forward:/uss/umt/user/EgovUserManage.do + * @throws Exception + */ + @RequestMapping(value= {"/uss/umt/user/EgovUserSelectUpdt.do", "/uss/umt/user/EgovUserSelectUpdtAjax.do"}) + public String updateUser(@ModelAttribute("userManageVO") UserManageVO userManageVO, + HttpSession session, HttpServletRequest request , + BindingResult bindingResult, + RedirectAttributes redirectAttributes, + Model model) throws Exception { + + /*if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")){ + return "redirect:/uss/umt/user/EgovUserManage.do"; + }*/ + +// PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovUserManageController.RSA_WEB_KEY); +// if(privateKey == null) { +// initRsa(request); +// redirectAttributes.addFlashAttribute("message", "저장되지 않았습니다."); +// if(userManageVO.getGnrlUser().equals("N")){ +// RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); +// return redirectUrlMaker.getRedirectUrl(); +// } +// RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); +// return redirectUrlMaker.getRedirectUrl(); +// } + /*if(userManageVO.getGnrlUser().equals("N")){ + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + }*/ + + + //최고 관리자의 경우 관리자정보 변경시 비번 체크안함. + LoginVO tempLoginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + beanValidator.validate(userManageVO, bindingResult); + /*if (bindingResult.hasErrors()) { + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); + + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //소속기관코드를 코드정보로부터 조회 - COM025 + vo.setCodeId("COM025"); + model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //조직정보를 조회 - ORGNZT_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); + + //그룹정보를 조회 - GROUP_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); + return "cmm/uss/umt/EgovUserSelectUpdt"; + } else {*/ + //업무사용자 수정시 히스토리 정보를 등록한다. + AuthorGroup authorGroup = new AuthorGroup(); + if(null!=userManageVO.getSiteId()){ + authorGroup.setUniqId(userManageVO.getUniqId()); + authorGroup.setAuthorCode(userManageVO.getAuthorCode()); + }else{ + authorGroup.setUniqId(userManageVO.getUniqId()); + authorGroup.setAuthorCode(userManageVO.getAuthorCode()); + } + + userManageService.insertUserHistory(userManageVO); + userManageService.updateUser(userManageVO); + //권한업데이트 + egovAuthorGroupService.updateAuthorGroup(authorGroup); + + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); + if(userManageVO.getGnrlUser().equals("N")){ + if("ROLE_USER_MEMBER".equals(tempLoginVO.getAuthority())) { + LoginVO tempUser = new LoginVO(); + tempUser.setId(userManageVO.getEmplyrId()); + //RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginService.getUserAuth(tempUser).getId()); + return redirectUrlMaker.getRedirectUrl(); + }else { + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + } + //사용자 수정 시 + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + /** + * 사용자정보삭제후 목록조회 화면으로 이동한다. + * @param checkedIdForDel 삭제대상아이디 정보 + * @param userSearchVO 검색조건 + * @param model 화면모델 + * @return forward:/uss/umt/user/EgovUserManage.do + * @throws Exception + */ + @RequestMapping("/uss/umt/user/EgovUserDelete.do") + public String deleteUser(@RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { + if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { + return "redirect:/uss/umt/user/EgovUserManage.do"; + } + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + userManageService.deleteUser(checkedIdForDel); + + + //Exception 없이 진행시 등록성공메시지 + //model.addAttribute("message", "success.common.delete"); + //return "forward:/uss/umt/user/EgovUserManage.do"; + + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); + if(userSearchVO.getGnrlUser().equals("N")) { + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + /** + * 입력한 사용자아이디의 중복확인화면 이동 + * @param model 화면모델 + * @return cmm/uss/umt/EgovIdDplctCnfirm + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/cmm/EgovIdDplctCnfirmView.do") + public String checkIdDplct(ModelMap model) throws Exception { + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + model.addAttribute("checkId", ""); + model.addAttribute("usedCnt", "-1"); + return "cmm/uss/umt/EgovIdDplctCnfirm"; + } + + /** + * 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인 + * @param commandMap 파라메터전달용 commandMap + * @param model 화면모델 + * @return cmm/uss/umt/EgovIdDplctCnfirm + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/cmm/EgovIdDplctCnfirm.do") + public String checkIdDplct(@RequestParam Map commandMap, ModelMap model) throws Exception { + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + String checkId = (String) commandMap.get("checkId"); + checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); + + if (checkId == null || checkId.equals("")) + return "forward:/uss/umt/EgovIdDplctCnfirmView.do"; + + int usedCnt = userManageService.checkIdDplct(checkId); + model.addAttribute("usedCnt", usedCnt); + model.addAttribute("checkId", checkId); + + return "cmm/uss/umt/EgovIdDplctCnfirm"; + } + + /** + * 업무사용자 암호 수정처리 후 화면 이동 + * @param model 화면모델 + * @param commandMap 파라메터전달용 commandMap + * @param userSearchVO 검색조 건 + * @param userManageVO 사용자수정정보(비밀번호) + * @return cmm/uss/umt/EgovUserPasswordUpdt + * @throws Exception + */ + //기존 비밀번호 체크 있는 버전 + /*@RequestMapping(value = "/uss/umt/user/EgovUserPasswordUpdt.do") + public String updatePassword(ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, + @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes) throws Exception { + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + List authorities = EgovUserDetailsHelper.getAuthorities(); + boolean authFlag = false; + + for (String authority : authorities) { + if (authority.equals("ROLE_ADMIN")) authFlag = true; + } + + String newPassword = (String) commandMap.get("newPassword"); + + if(!validationPasswd(newPassword)){ + model.addAttribute("userManageVO", userManageVO); + model.addAttribute("userSearchVO", userSearchVO); + model.addAttribute("adminYn", authFlag); + model.addAttribute("message", "비밀번호은(는) 문자+숫자+특수문자 포함, 8~20자 내에서 입력해야 합니다."); + return "cmm/uss/umt/EgovUserPasswordUpdt"; + } + + String oldPassword = (String) commandMap.get("oldPassword"); +// String newPassword = (String) commandMap.get("newPassword"); + String newPassword2 = (String) commandMap.get("newPassword2"); + String uniqId = (String) commandMap.get("uniqId"); + + boolean isCorrectPassword = false; + UserManageVO resultVO = new UserManageVO(); + userManageVO.setPassword(newPassword); + userManageVO.setOldPassword(oldPassword); + userManageVO.setUniqId(uniqId); + + String resultMsg = ""; + resultVO = userManageService.selectPassword(userManageVO); + //패스워드 암호화 + String encryptPass = EgovFileScrty.encryptPassword(oldPassword, userManageVO.getEmplyrId()); + + for (String authority : authorities) { //일반사용자까지 + if (authority.equals("ROLE_ADMIN") || authority.equals("ROLE_USER_MEMBER")) authFlag = true; + } + + authFlag = false; //GS인증으로 이전비밀번호 체크 + if (encryptPass.equals(resultVO.getPassword()) || authFlag) { + if (newPassword.equals(newPassword2)) { + isCorrectPassword = true; + } else { + isCorrectPassword = false; + resultMsg = "fail.user.passwordUpdate2"; + } + } else { + isCorrectPassword = false; + resultMsg = "fail.user.passwordUpdate1"; + } + + if (isCorrectPassword) { + userManageVO.setPassword(EgovFileScrty.encryptPassword(newPassword, userManageVO.getEmplyrId())); + userManageService.updatePassword(userManageVO); + model.addAttribute("userManageVO", userManageVO); + resultMsg = "success.common.update"; + } else { + model.addAttribute("userManageVO", userManageVO); + } + model.addAttribute("userSearchVO", userSearchVO); + model.addAttribute("message", resultMsg); + + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage(resultMsg)); + if(userSearchVO.getGnrlUser().equals("N")) { //관리자 비밀번호 변경시 + + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + LoginVO tempLoginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + if("ROLE_USER_MEMBER".equals(tempLoginVO.getAuthority())) { + LoginVO tempUser = new LoginVO(); + tempUser.setId(userManageVO.getEmplyrId()); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginService.getUserAuth(tempUser).getId()); + return redirectUrlMaker.getRedirectUrl(); + }else { + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + //return "cmm/uss/umt/EgovUserPasswordUpdt"; + } //사용자 비밀번호 변경시 + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + + }*/ + @RequestMapping(value = "/uss/umt/user/EgovUserPasswordUpdt.do") + public String updatePassword(ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, + @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes) throws Exception { + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + List authorities = EgovUserDetailsHelper.getAuthorities(); + boolean authFlag = false; + + for (String authority : authorities) { + if (authority.equals("ROLE_ADMIN")) authFlag = true; + } + + String newPassword = (String) commandMap.get("newPassword"); + + if(!validationPasswd(newPassword)){ + model.addAttribute("userManageVO", userManageVO); + model.addAttribute("userSearchVO", userSearchVO); + model.addAttribute("adminYn", authFlag); + model.addAttribute("message", "비밀번호은(는) 문자+숫자+특수문자 포함, 8~20자 내에서 입력해야 합니다."); + return "cmm/uss/umt/EgovUserPasswordUpdt"; + } + +// String oldPassword = (String) commandMap.get("oldPassword"); +// String newPassword = (String) commandMap.get("newPassword"); + String newPassword2 = (String) commandMap.get("newPassword2"); + String uniqId = (String) commandMap.get("uniqId"); + + boolean isCorrectPassword = false; + UserManageVO resultVO = new UserManageVO(); + userManageVO.setPassword(newPassword); +// userManageVO.setOldPassword(oldPassword); + userManageVO.setUniqId(uniqId); + + String resultMsg = ""; + resultVO = userManageService.selectPassword(userManageVO); + //패스워드 암호화 +// String encryptPass = EgovFileScrty.encryptPassword(oldPassword, userManageVO.getEmplyrId()); + + for (String authority : authorities) { //일반사용자까지 + if (authority.equals("ROLE_ADMIN") || authority.equals("ROLE_USER_MEMBER")) authFlag = true; + } + +// authFlag = false; //GS인증으로 이전비밀번호 체크 +// 이전 비밀번호 체크 하지 않고 비밀번호 변경되게 해달라는 요청으로 주석처리 220209 이준호 +// if (encryptPass.equals(resultVO.getPassword()) || authFlag) { + if (newPassword.equals(newPassword2)) { + isCorrectPassword = true; + } else { + isCorrectPassword = false; + resultMsg = "fail.user.passwordUpdate2"; + } +// } + /*else { + isCorrectPassword = false; + resultMsg = "fail.user.passwordUpdate1"; + }*/ + + if (isCorrectPassword) { + userManageVO.setPassword(EgovFileScrty.encryptPassword(newPassword, userManageVO.getEmplyrId())); + userManageService.updatePassword(userManageVO); + model.addAttribute("userManageVO", userManageVO); + resultMsg = "success.common.update"; + } else { + model.addAttribute("userManageVO", userManageVO); + } + model.addAttribute("userSearchVO", userSearchVO); + model.addAttribute("message", egovMessageSource.getMessage(resultMsg)); + + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage(resultMsg)); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(""); + if(userSearchVO.getGnrlUser().equals("N")) { //관리자 비밀번호 변경시 + + /*RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl();*/ + /*LoginVO tempLoginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + if("ROLE_USER_MEMBER".equals(tempLoginVO.getAuthority())) { + LoginVO tempUser = new LoginVO(); + tempUser.setId(userManageVO.getEmplyrId()); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+loginService.getUserAuth(tempUser).getId()); + return redirectUrlMaker.getRedirectUrl(); + }else { + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + }*/ + if(isCorrectPassword && authFlag == false) { + redirectUrlMaker = new RedirectUrlMaker("/uat/uia/actionLogout.do"); + + }else { + redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + + } + + } //사용자 비밀번호 변경시 +// RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); +// return redirectUrlMaker.getRedirectUrl(); + return redirectUrlMaker.getRedirectUrl(); + + } + + /** + * 업무사용자 암호 수정 화면 이동 + * @param model 화면모델 + * @param commandMap 파라메터전달용 commandMap + * @param userSearchVO 검색조건 + * @param userManageVO 사용자수정정보(비밀번호) + * @return cmm/uss/umt/EgovUserPasswordUpdt + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/user/EgovUserPasswordUpdtView.do") + public String updatePasswordView(ModelMap model, @RequestParam Map commandMap, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, + @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { + + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + + if(!"ROLE_ADMIN".equals(loginVO.getAuthority()) && !userManageVO.getUniqId().equals(loginVO.getUniqId())) { + /*return "/cmm/main/mainPage.do";*/ + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/cmm/main/mainPage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + if("".equals(userManageVO.getUniqId())){ + String sLocationUrl = "uss/umt/user/EgovUserManage.do"; + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker(sLocationUrl); + return redirectUrlMaker.getRedirectUrl(); + } + + String userTyForPassword = (String) commandMap.get("userTyForPassword"); + userManageVO.setUserTy(userTyForPassword); + + List authorities = EgovUserDetailsHelper.getAuthorities(); + boolean authFlag = false; + + for (String authority : authorities) { + if (authority.equals("ROLE_ADMIN")) authFlag = true; + } + + model.addAttribute("userManageVO", userManageVO); + model.addAttribute("userSearchVO", userSearchVO); + model.addAttribute("adminYn", authFlag); + return "cmm/uss/umt/EgovUserPasswordUpdt"; + } + + /** + * 회원가입설정관리 + * @return uss/umt/user/EgovMberConfigInsert + * @throws Exception + */ + @RequestMapping(value = {"/uss/umt/mber/EgovMberConfigInsert.do" , "/uss/umt/mber/EgovMberConfigInsertAjax.do"}) + public String selectMberConfigInsert( + @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, + @ModelAttribute("mberManageVO") MberManageVO mberManageVO, + @RequestParam Map commandMap, + SiteManagerVO siteManagerVO, + HttpServletRequest request, + Model model , + HttpSession session) throws Exception { + MberManageConfigVO mberConfigVO = new MberManageConfigVO();//config 정보 가져오기 + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + if("super".equals(loginVO.getSiteId()) && null==mberManageVO.getSiteId()){ //수퍼 관리자이고 사이트 아이디 없을경우 kcc 으로 기본 세팅 + mberConfigVO.setSiteId("kcc"); + siteManagerVO.setSiteId("kcc"); + }else{ + if("".equals(mberManageVO.getSiteId()) || null==mberManageVO.getSiteId()){ + mberConfigVO.setSiteId(loginVO.getSiteId()); + siteManagerVO.setSiteId(loginVO.getSiteId()); + }else { + mberConfigVO.setSiteId(mberManageVO.getSiteId()); + siteManagerVO.setSiteId(mberManageVO.getSiteId()); + } + } + model.addAttribute("mberConfigVO", mberConfigVO); + List mberManageCnfVO = mberManageService.selectMberCnf(mberConfigVO); + model.addAttribute("mberManageCnfVO", mberManageCnfVO); + mberManageVO.setMberSttus("DEFAULT"); + SiteManagerVO joinSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ;//자동가입 여부 조회 + model.addAttribute("joinSiteManagerVO", joinSiteManagerVO); + if("/uss/umt/mber/EgovMberConfigInsertAjax.do".equals(request.getServletPath())){ + return "cmm/uss/umt/EgovMberConfigInsertAjax"; + } + return "cmm/uss/umt/EgovMberConfigInsert"; + } + + /* 회원이름 업데이트*/ + @RequestMapping("/uss/umt/EgovMberNameUpdateAjax.do") + public ModelAndView updateMberNameUpdateAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + mberManageVO.setMberNm(egovCryptoUtil.encrypt(mberManageVO.getMberNm())); + mberManageService.updateMberNm(mberManageVO); + return modelAndView; + + //userSearchVO.setSnsSiteName(egovCryptoUtil.encrypt(userSearchVO.getSearchKeyword())); + } + + /* 회원가입 설정 업데이트*/ + @RequestMapping("/uss/umt/EgovMberConfigUpdateAjax.do") + public ModelAndView updateMberConfigUpdateAjax(@ModelAttribute("mberManageConfigVO") MberManageConfigVO mberManageConfigVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + mberManageService.updateMberCnf(mberManageConfigVO); + return modelAndView; + } + + /*자동가입 설정 업데이트*/ + @RequestMapping("/uss/umt/EgovMberJoinAutoUpdateAjax.do") + public ModelAndView EgovMberJoinAutoUpdateAjax(SiteManagerVO siteManagerVO) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + egovSiteManagerService.updateJoinAutoAjax(siteManagerVO); + return modelAndView; + } + + /** + * 일반회원가입신청 등록화면으로 이동한다. + * @param userSearchVO 검색조건 + * @param mberManageVO 일반회원가입신청정보 + * @param commandMap 파라메터전달용 commandMap + * @param model 화면모델 + * @return uss/umt/user/EgovUserRegister + * @throws Exception + */ + @RequestMapping("/uss/umt/mber/EgovMberRegister.do") + public String EgovMberRegister(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, @ModelAttribute("mberManageVO") MberManageVO mberManageVO, + @RequestParam Map commandMap, Model model) throws Exception { + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + List passwordHint_result = cmmUseService.selectCmmCodeDetail(vo); + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); + + model.addAttribute("passwordHint_result", passwordHint_result); //패스워트힌트목록 + model.addAttribute("sexdstnCode_result", sexdstnCode_result); //성별구분코드목록 + if (!"".equals(commandMap.get("realname"))) { + model.addAttribute("mberNm", commandMap.get("realname")); //실명인증된 이름 - 주민번호 인증 + model.addAttribute("ihidnum", commandMap.get("ihidnum")); //실명인증된 주민등록번호 - 주민번호 인증 + } + if (!"".equals(commandMap.get("realName"))) { + model.addAttribute("mberNm", commandMap.get("realName")); //실명인증된 이름 - ipin인증 + } + + //이메일 코드 + vo.setCodeId("COM103"); + List emailCodeList = cmmUseService.selectCmmCodeDetail(vo); + model.addAttribute("emailCodeList", emailCodeList); //이메일코드 + + //회원가입 config 정보 가져오기 + MberManageConfigVO voTemp = new MberManageConfigVO(); + //List mberManageCnfVO = mberManageService.selectMberCnf(voTemp); + List mberManageCnfVO = mberManageService.selectMberCnf(voTemp); + for (MberManageConfigVO configVO : mberManageCnfVO) { + model.addAttribute(configVO.getConfigId() , configVO); //컬럼 이름으로 jsp에 VO 전송 + } + + model.addAttribute("mberManageCnfVO", mberManageCnfVO); + mberManageVO.setMberSttus("DEFAULT"); + + return "cmm/uss/umt/EgovMberRegister"; + } + + /** + * 모달조회 + * @return String + * @exception Exception + */ + @RequestMapping(value="/EgovModal.do") + public String EgovModal() throws Exception { + return "cmm/uss/umt/EgovModal"; + } + + /** + * 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인 + * @param commandMap 파라메터전달용 commandMap + * @param model 화면모델 + * @return uss/umt/EgovIdDplctCnfirm + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/user/EgovIdDplctCnfirmAjax.do") + public ModelAndView EgovIdDplctCnfirmAjax(@RequestParam Map commandMap) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String checkId = (String) commandMap.get("checkId"); + //checkId = new String(checkId.getBytes("ISO-8859-1"), "UTF-8"); + + int usedCnt = userManageService.checkIdDplct(checkId); + modelAndView.addObject("usedCnt", usedCnt); + modelAndView.addObject("checkId", checkId); + + return modelAndView; + } + + /** + * 일반회원가입신청등록처리후로그인화면으로 이동한다. + * @param mberManageVO 일반회원가입신청정보 + * @return forward:/uss/umt/user/EgovUserExpInsert.do + * @throws Exception + */ + @RequestMapping("/uss/umt/user/EgovMberInsert.do") + public String EgovMberInsert( + @ModelAttribute("mberManageVO") MberManageVO mberManageVO, + BindingResult bindingResult, + Model model, + RedirectAttributes redirectAttributes) throws Exception { + if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { + return "redirect:/uss/umt/user/EgovUserManage.do"; + } + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + /*if(!validationPasswd(mberManageVO.getPassword())){ + redirectAttributes.addFlashAttribute("message", "패스워드 규칙에 어긋납니다."); + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + }*/ + + beanValidator.validate(mberManageVO, bindingResult); + if (bindingResult.hasErrors()){ + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + model.addAttribute("passwordHint_result", cmmUseService.selectCmmCodeDetail(vo)); //패스워트힌트목록 + + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + //List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); + model.addAttribute("sexdstnCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //소속기관코드를 코드정보로부터 조회 - COM025 + vo.setCodeId("COM025"); + model.addAttribute("insttCode_result", cmmUseService.selectCmmCodeDetail(vo)); + + //조직정보를 조회 - ORGNZT_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("orgnztId_result", cmmUseService.selectOgrnztIdDetail(vo)); + + //그룹정보를 조회 - GROUP_ID정보 + vo.setTableNm("LETTNORGNZTINFO"); + model.addAttribute("groupId_result", cmmUseService.selectGroupIdDetail(vo)); + //return "forward:/uss/umt/user/EgovUserInsertView.do"; + return "cmm/uss/umt/EgovUserInsert"; + }else{ + try{ + //userManageService.insertUser(userManageVO); + mberManageService.insertMber(mberManageVO); //일반사용자 등록 + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); + }catch(Exception e){ + redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert")); + } + } + //관리자등록일 경우 + if(mberManageVO.getGnrlUser().equals("N")) { + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + //사용자 등록일 경우 + RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); + return redirectUrlMaker.getRedirectUrl(); + } + + + /** + * 일반회원목록을 조회한다. (pageing) + * @param userSearchVO 검색조건정보 + * @param model 화면모델 + * @return cmm/uss/umt/EgovMberManage + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/mber/EgovMberList.do") + public String EgovMberList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model) throws Exception { + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + if(userSearchVO.getPageUnit() != 10) { + userSearchVO.setPageUnit(userSearchVO.getPageUnit()); + } + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); + paginationInfo.setPageSize(userSearchVO.getPageSize()); + + userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + model.addAttribute("resultList", mberManageService.selectMberList(userSearchVO)); + + int totCnt = mberManageService.selectMberListTotCnt(userSearchVO); + paginationInfo.setTotalRecordCount(totCnt); + model.addAttribute("paginationInfo", paginationInfo); + + //일반회원 상태코드를 코드정보로부터 조회 + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + vo.setCodeId("COM013"); + model.addAttribute("entrprsMberSttus_result", cmmUseService.selectCmmCodeDetail(vo)); + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + SiteManagerVO siteManagerVO =new SiteManagerVO(); + siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; + model.addAttribute("siteManagerVO", siteManagerVO); + //return "cmm/uss/umt/EgovMberList"; + return "cmm/uss/umt/EgovGnrlUserManage"; + } + + /** + * 일반회원정보 수정을 위해 일반회원정보를 상세조회한다. + * @param mberId 상세조회대상 일반회원아이디 + * @param userSearchVO 검색조건 + * @param model 화면모델 + * @return uss/umt/EgovMberSelectUpdt + * @throws Exception + */ + @RequestMapping("/uss/umt/mber/EgovMberSelectUpdtView.do") + public String EgovMberSelectUpdtView(@RequestParam("selectedId") String uniqId, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, Model model) throws Exception { + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) { + return "index"; + } + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + + //패스워드힌트목록을 코드정보로부터 조회 + vo.setCodeId("COM022"); + List passwordHint_result = cmmUseService.selectCmmCodeDetail(vo); + + //성별구분코드를 코드정보로부터 조회 + vo.setCodeId("COM014"); + List sexdstnCode_result = cmmUseService.selectCmmCodeDetail(vo); + + //이메일 코드 + vo.setCodeId("COM103"); + List emailCodeList = cmmUseService.selectCmmCodeDetail(vo); + + //사용자상태코드를 코드정보로부터 조회 + vo.setCodeId("COM013"); + List mberSttus_result = cmmUseService.selectCmmCodeDetail(vo); + + //권한정보를 조회 - + //AuthorManageVO authorManageVO = new AuthorManageVO(); + //List authorManageList = egovAuthorManageService.selectAuthorUseAllList(authorManageVO); + + model.addAttribute("passwordHint_result", passwordHint_result); //패스워트힌트목록 + model.addAttribute("sexdstnCode_result", sexdstnCode_result); //성별구분코드목록 + model.addAttribute("emailCodeList", emailCodeList); //이메일코드 + model.addAttribute("mberSttus_result", mberSttus_result); //사용자상태코드목록 + //model.addAttribute("authorManageList", authorManageList); //그룹정보 목록 + + //config 정보 가져오기 + MberManageConfigVO voTemp = new MberManageConfigVO(); + List mberManageCnfVO = mberManageService.selectMberCnf(voTemp); + for (MberManageConfigVO configVO : mberManageCnfVO) { + model.addAttribute(configVO.getConfigId() , configVO); //컬럼 이름으로 jsp에 VO 전송 + } + MberManageVO mberManageVO = mberManageService.selectMber(uniqId); + + //생일/핸드폰번호/이메일 VO에서 자르기? + String birth = mberManageVO.getBirth(); + + if (!EgovStringUtil.isEmpty(birth)) { + mberManageVO.setBirthYear(birth.substring(0, 4)); + mberManageVO.setBirthMonth(birth.substring(4, 6)); + mberManageVO.setBirthDay(birth.substring(6, 8)); + } + + String moblphonNo = mberManageVO.getMoblphonNo(); + if (!EgovStringUtil.isEmpty(moblphonNo)) { + int subSize = 0; + if (moblphonNo.length() > 10) subSize = 7; + else subSize = 6; + + mberManageVO.setMoblphonNo1(moblphonNo.substring(0, 3)); + mberManageVO.setMoblphonNo2(moblphonNo.substring(3, subSize)); + mberManageVO.setMoblphonNo3(moblphonNo.substring(subSize, moblphonNo.length())); + } + + String mberEmailAdres = mberManageVO.getMberEmailAdres(); + if (!EgovStringUtil.isEmpty(mberEmailAdres)) { + String[] emailAdres = EgovStringUtil.split(mberEmailAdres, "@"); + mberManageVO.setEmail1(emailAdres[0]); + mberManageVO.setEmail2(emailAdres[1]); + } + + // 사진파일ID + mberManageVO.setAtchFileId(mberManageVO.getPhotofileId()); + //기존 권한 코드 + mberManageVO.setOrignlAuthorCode(mberManageVO.getAuthorCode()); + + model.addAttribute("mberManageVO", mberManageVO); + model.addAttribute("userSearchVO", userSearchVO); + + return "cmm/uss/umt/EgovMberSelectUpdtView"; + } + + /** + * 일반회원정보 수정후 목록조회 화면으로 이동한다. + * @param mberManageVO 일반회원수정정보 + * @param bindingResult 입력값검증용 bindingResult + * @param model 화면모델 + * @return forward:/uss/umt/EgovMberManage.do + * @throws Exception + */ + @RequestMapping("/uss/umt/mber/EgovMberSelectUpdt.do") + public String EgovMberSelectUpdt(@ModelAttribute("mberManageVO") MberManageVO mberManageVO, BindingResult bindingResult, Model model) throws Exception { + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) { + return "forward:/uss/umt/mber/EgovMberList.do"; + } + + beanValidator.validate(mberManageVO, bindingResult); + if (bindingResult.hasErrors()) { + model.addAttribute("message", bindingResult.getAllErrors().get(0).getDefaultMessage()); + return "forward:/uss/umt/EgovMberManage.do"; + } else { + if (EgovStringUtil.isEmpty(mberManageVO.getGroupId())) { + mberManageVO.setGroupId(null); + } + + mberManageService.updateMber(mberManageVO); + //Exception 없이 진행시 수정성공메시지 + model.addAttribute("message", egovMessageSource.getMessage("success.common.update")); + return "forward:/uss/umt/mber/EgovMberList.do"; + } + } + + /** + * 일반회원정보삭제후 목록조회 화면으로 이동한다. + * @param checkedIdForDel 삭제대상 아이디 정보 + * @param userSearchVO 검색조건정보 + * @param model 화면모델 + * @return forward:/uss/umt/EgovMberManage.do + * @throws Exception + */ + @RequestMapping("/uss/umt/mber/EgovMberDelete.do") + public String EgovMberDelete(final MultipartHttpServletRequest multiRequest, @RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, Model model) throws Exception { + + if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey" , multiRequest)) { + return "redirect:/uss/umt/mber/EgovMberList.do"; + } + + // 미인증 사용자에 대한 보안처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if(!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "uat/uia/EgovLoginUsr"; + } + + mberManageService.deleteMber(checkedIdForDel); + //Exception 없이 진행시 삭제성공메시지 + model.addAttribute("message", egovMessageSource.getMessage("success.common.delete")); + return "forward:/uss/umt/mber/EgovMberList.do"; + } + + private boolean validationPasswd(String pw){ + String pattern = "(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*()-+=])(?=\\S+$).{8,}"; + if(pw.matches(pattern)){ + return true; + } + return false; + } + + @RequestMapping(value = "/uss/umt/user/PassMissResetAjax.do") + public ModelAndView passMissResetAjax(@RequestParam Map commandMap, + LoginVO loginVO + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + loginService.updatePassMissReset(loginVO); + return modelAndView; + } + + //사용자 회원상태 변경 + @RequestMapping(value = "/uss/umt/user/updateEmplyrSttusCodeAjax.do") + public ModelAndView updateEmplyrSttusCodeAjax(@RequestParam Map commandMap, + LoginVO loginVO + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + loginService.updateEmplyrSttusCode(loginVO); + return modelAndView; + } + + /** + * + * (사용자) 차단 사용자목록을 조회한다. (pageing) + * @param userSearchVO 검색조건정보 + * @param model 화면모델 + * @return cmm/uss/umt/EgovUserManage + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/user/EgovBlockUserList.do") + public String selectBlockUserList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, + ModelMap model, + HttpSession session) throws Exception{ + + if(userSearchVO.getPageUnit() != 10) { + userSearchVO.setPageUnit(userSearchVO.getPageUnit()); + } + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); + paginationInfo.setPageSize(userSearchVO.getPageSize()); + + userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + if(null != loginVO && !"super".equals(loginVO.getSiteId())){ + userSearchVO.setSiteId(loginVO.getSiteId()); + } + + userSearchVO.setAdminYn("N"); + if(null==userSearchVO.getSearchCondition_01()){ //최초 페이지 로딩시 차단목록 조회 + userSearchVO.setEmplyrSttusCode("B"); + }else{ + userSearchVO.setEmplyrSttusCode(userSearchVO.getSearchCondition_01()); + } + + if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + userSearchVO.setSearchSortCnd("uniqId"); + userSearchVO.setSearchSortOrd("desc"); + } + List resultList = userManageService.selectUserList(userSearchVO); + model.addAttribute("resultList", resultList); + paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + //사용자상태코드를 코드정보로부터 조회 + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + vo.setCodeId("COM013"); + model.addAttribute("emplyrSttusCodeList", cmmUseService.selectCmmCodeDetail(vo));//사용자상태코드목록 + + //권한조회 + AuthorManageVO authorManageVO = new AuthorManageVO(); + authorManageVO.setFirstIndex(0); + authorManageVO.setLastIndex(10); + authorManageVO.setRecordCountPerPage(10); + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + return "cmm/uss/umt/EgovBlockUserList"; + } + + + /** + * rsa 공개키, 개인키 생성 + * + * @param request + */ + /*public void initRsa(HttpServletRequest request) { + HttpSession session = request.getSession(); + + KeyPairGenerator generator; + try { + generator = KeyPairGenerator.getInstance(EgovUserManageController.RSA_INSTANCE); + generator.initialize(1024); + + KeyPair keyPair = generator.genKeyPair(); + KeyFactory keyFactory = KeyFactory.getInstance(EgovUserManageController.RSA_INSTANCE); + PublicKey publicKey = keyPair.getPublic(); + PrivateKey privateKey = keyPair.getPrivate(); + + session.setAttribute(EgovUserManageController.RSA_WEB_KEY, privateKey); // session에 RSA 개인키를 세션에 저장 + + RSAPublicKeySpec publicSpec = (RSAPublicKeySpec) keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class); + String publicKeyModulus = publicSpec.getModulus().toString(16); + String publicKeyExponent = publicSpec.getPublicExponent().toString(16); + + request.setAttribute("RSAModulus", publicKeyModulus); // rsa modulus 를 request 에 추가 + request.setAttribute("RSAExponent", publicKeyExponent); // rsa exponent 를 request 에 추가 + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + }*/ + + /** + * 복호화 + * + * @param privateKey + * @param securedValue + * @return + * @throws Exception + */ + /*private String decryptRsa(PrivateKey privateKey, String securedValue) throws Exception { + Cipher cipher = Cipher.getInstance(EgovUserManageController.RSA_INSTANCE); + byte[] encryptedBytes = hexToByteArray(securedValue); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + byte[] decryptedBytes = cipher.doFinal(encryptedBytes); + String decryptedValue = new String(decryptedBytes, "utf-8"); // 문자 인코딩 주의. + return decryptedValue; + }*/ + + /** + * 16진 문자열을 byte 배열로 변환한다. + * + * @param hex + * @return + */ + public static byte[] hexToByteArray(String hex) { + if (hex == null || hex.length() % 2 != 0) { return new byte[] {}; } + + byte[] bytes = new byte[hex.length() / 2]; + for (int i = 0; i < hex.length(); i += 2) { + byte value = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); + bytes[(int) Math.floor(i / 2)] = value; + } + return bytes; + } + + /* 회원가입 설정 업데이트*/ + @RequestMapping("/uss/umt/user/EgovBlockUserUpdateAjax.do") + public ModelAndView selectBlockUserAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + UserManageVO inertUserManageVO = new UserManageVO(); + //mberManageService.updateMberCnf(mberManageConfigVO); + try { + for(int i=0 ; i< userManageVO.getEsntlIdNsttusCode().length ; i++) { + inertUserManageVO.setEsntlId(userManageVO.getEsntlIdNsttusCode()[i].split(":")[0]); + inertUserManageVO.setEmplyrSttusCode(userManageVO.getEsntlIdNsttusCode()[i].split(":")[1]); + userManageService.updateUserSttusCode(inertUserManageVO); + } + + modelAndView.addObject("result", "success"); + }catch (Exception e) { + modelAndView.addObject("result", "fail"); + } + return modelAndView; + } + + /** + * 개인정보보호 비밀번호 체크 + * @param commandMap 파라메터전달용 commandMap + * @param model 화면모델 + * @return uss/umt/EgovIdDplctCnfirm + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/user/CheckInfoProtectAjax.do") + public ModelAndView CheckInfoProtectAjax(@RequestParam Map commandMap + ,UserManageVO userManageVO + ,HttpSession session + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + UserManageVO returnUserManageVO = new UserManageVO(); + userManageVO.setUniqId(userManageVO.getEsntlId()); + returnUserManageVO = userManageService.selectPassword(userManageVO) ; + if(null==returnUserManageVO) { //UserManageVO + modelAndView.addObject("usedCnt", 0); + }else { + String returnPassword = returnUserManageVO.getPassword() ; + //패스워드 암호화 + String encryptPass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId()); + if(returnPassword.equals(encryptPass)) { + modelAndView.addObject("usedCnt", 1); + //세션으로 인증넣어줌 + session.setAttribute("info_pro_session", true); + }else { + modelAndView.addObject("usedCnt", 0); + } + } + return modelAndView; + } + + /** + * 개인정보보호 하단 include + * @param commandMap 파라메터전달용 commandMap + * @param model 화면모델 + * @return uss/umt/EgovIdDplctCnfirm + * @throws Exception + */ + @RequestMapping(value = "/uss/umt/IncInfoProtect.do") + public String IncInfoProtect(ModelMap model, + HttpSession session) throws Exception{ + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + SiteManagerVO siteManagerVO =new SiteManagerVO(); + siteManagerVO.setSiteId(loginVO.getSiteId()); //자신이 속한 사이트 아이디 + siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO) ; + model.addAttribute("siteManagerVO", siteManagerVO); + return "cmm/uss/umt/IncInfoProtect"; + } + + //리스트 엑셀 다운로드 + @RequestMapping(value="/uss/umt/user/userExcelDownload.do") + public void userExcelDownload(UserDefaultVO userSearchVO, + HttpServletRequest request, + HttpServletResponse response , + ModelMap model) throws Exception { + + userSearchVO.setRecordCountPerPage(100000); + userSearchVO.setFirstIndex(0); + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + if(null != loginVO && !"super".equals(loginVO.getSiteId())){ + userSearchVO.setSiteId(loginVO.getSiteId()); + } + // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. + SXSSFWorkbook wb = new SXSSFWorkbook(100); + CellStyle style = wb.createCellStyle(); + style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 + style.setBorderLeft(CellStyle.BORDER_THIN); + style.setBorderRight(CellStyle.BORDER_THIN); + style.setBorderTop(CellStyle.BORDER_THIN); + Font font = wb.createFont(); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold + + Cell cell = null; + Row row = null; + + String fileName ="관리자 리스트"; + if("Y".equals(userSearchVO.getGnrlUser())) fileName = "사용자 리스트" ; + + String sheetTitle = ""; + try{ + List userSearchList = userManageService.selectUserList(userSearchVO) ; + { //화면 리스트 + sheetTitle = "관리자 리스트(화면)" ; //제목 + if("Y".equals(userSearchVO.getGnrlUser())) sheetTitle = "사용자 리스트(화면)" ; + Sheet sheet = wb.createSheet(sheetTitle); + row = sheet.createRow(0); + for(int i=0 ; i < userExcelValue.length ; i++) { + cell = row.createCell(i); + cell.setCellStyle(style); + cell.setCellValue(userExcelValue[i][1]); + } + + for(int i=0; i < userSearchList.size(); i++){ + row = sheet.createRow(i+1); + for(int j=0 ; j < userExcelValue.length ; j++) { + cell = row.createCell(j); + cell.setCellStyle(style); + if(j==0) cell.setCellValue(i+1); //번호 + if(j==1) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("siteIdTxt")); //사이트명 + if(j==2) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userId")); //아이디 + if(j==3) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userNm")); //관리자명 + if(j==4) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("authorCodeTxt")); //권한 + if(j==5) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("offmTelno")); //전화번호 + if(j==6) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("emailAdres")); //이메일 + if(j==7) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("sbscrbDe")); //등록일 + } + } + } + { //DB리스트 + sheetTitle = "관리자 리스트(DB)" ; //제목 + if("Y".equals(userSearchVO.getGnrlUser())) sheetTitle = "사용자 리스트(DB)" ; + Sheet sheet = wb.createSheet(sheetTitle); + row = sheet.createRow(0); + for(int i=0 ; i < userExcelValue.length-2 ; i++){ //아이디,등록일자 없어 -2 + cell = row.createCell(i); + cell.setCellStyle(style); + if(i==0) { + cell.setCellValue( "Y".equals(userSearchVO.getGnrlUser()) ? "사용자 아이디" : "관리자 아이디" ); + }else if(i==1){ + if(!"".equals(userExcelValue[i][3])){ + cell.setCellValue(userExcelValue[i][1]+"\n"+userExcelValue[i][3]); + }else { + cell.setCellValue(userExcelValue[i][1]); + } + }else{ //3번제 컬럼 부터 하나씩 앞으로 세팅 + if(!"".equals(userExcelValue[i+1][3])){ + cell.setCellValue(userExcelValue[i+1][1]+"\n"+userExcelValue[i+1][3]); + }else { + cell.setCellValue(userExcelValue[i+1][1]); + } + } + } + + for(int i=0; i < userSearchList.size(); i++){ + row = sheet.createRow(i+1); + /*for(int j=0 ; j < userExcelValue.length-1 ; j++) {*/ + for(int j=0 ; j < userExcelValue.length-2 ; j++) {//아이디 없어 -1 + cell = row.createCell(j); + cell.setCellStyle(style); + if(j==0) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userId")); //아이디 + if(j==1) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("siteId")); //사이트명 + if(j==2) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("userNm")); //관리자명 + if(j==3) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("authorCode")); //권한 + if(j==4) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("offmTelno")); //전화번호 + if(j==5) cell.setCellValue((String)((EgovMap)userSearchList.get(i)).get("emailAdres")); //이메일 + } + } + + } + response.setHeader("Set-Cookie", "fileDownload=true; path=/"); + SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); + Date currentTime = new Date (); + String mTime = mSimpleDateFormat.format ( currentTime ); + fileName = fileName+"("+mTime+")"; + + response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); + wb.write(response.getOutputStream()); + + }catch(Exception e) { + response.setHeader("Set-Cookie", "fileDownload=false; path=/"); + response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + response.setHeader("Content-Type","text/html; charset=utf-8"); + OutputStream out = null; + try { + out = response.getOutputStream(); + byte[] data = new String("fail..").getBytes(); + out.write(data, 0, data.length); + } catch(Exception ignore) { + System.out.println("Exception Occured!!!"); + } finally { + if(out != null) try { out.close(); } catch(Exception ignore) {System.out.println("Exception Occured!!!");} + } + }finally { + // 디스크 적었던 임시파일을 제거합니다. + wb.dispose(); + try { wb.close(); } catch(Exception ignore) {System.out.println("Exception Occured!!!");} + } + } + + //자동완성 데이터 가져오기 + @RequestMapping(value = "/uat/uia/RecentSearchShowAjax.do", method = RequestMethod.GET, produces="text/plain;charset=UTF-8") + @ResponseBody + public String recentSearchShowAjax(Locale locale, + UserManageVO userManageVO, + Model model, + HttpSession session) throws Exception { + //DB부하로 로그인시 session 의 최근 검색어를 가져옴. + Gson gson = new Gson(); + return gson.toJson(session.getAttribute("recentSearch")); + } + + /** + * 검색 버튼 클릭시 최근검색어 등록 + */ + @RequestMapping("/uat/uia/RecentSearchUpdateAjax.do") + public ModelAndView RecentSearchUpdateAjax(UserManageVO userManageVO, + HttpSession session + ) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + if(null != session.getAttribute("loginId")) { //로그인시 + if(null != session.getAttribute("recentSearch")){ //세션이 없으면(로그인 안함) DB조회 + List arrRecentSearch = (List)session.getAttribute("recentSearch") ; + arrRecentSearch.add(0 , userManageVO.getSearchWord()); //맨앞 추가; + + //사이트별 갯수 세팅 + List siteManageList = (List)session.getAttribute("siteManageList") ; + for(SiteManagerVO siteManagerVO : siteManageList) { + if(siteManagerVO.getSiteId().equals((String)session.getAttribute("siteId"))){ + //RECENT_SEARCH_CD` char(1) DEFAULT 'N' COMMENT '최근검색어 관리코드(N:사용안함,5:5개,9:10개)' + if("N".equals(siteManagerVO.getRecentSearchCd())){ //사용안함 + arrRecentSearch = arrRecentSearch.subList(0 ,0) ; + }else if("5".equals(siteManagerVO.getRecentSearchCd())){ + if(arrRecentSearch.size() > 5) { + arrRecentSearch = arrRecentSearch.subList(0 ,5) ; + }else { + arrRecentSearch = arrRecentSearch.subList(0, arrRecentSearch.size()) ; + } + }else{ //9면 10개까지 + if(arrRecentSearch.size() > 10) { + arrRecentSearch = arrRecentSearch.subList(0 , 10) ; + }else { + arrRecentSearch = arrRecentSearch.subList(0, arrRecentSearch.size()) ; + } + } + break; + } + } + + //중복값 제거 + ArrayList arrList = new ArrayList(); + HashSet hs = new HashSet(arrRecentSearch); + Iterator it = hs.iterator(); + String tempStr = ""; + while(it.hasNext()){ + tempStr = (String)it.next(); + if(!"".equals(tempStr)) { + arrList.add(tempStr) ; + } + tempStr = ""; + } + arrRecentSearch = arrList ; + + //추가된 값을 세션에 넣는다. + session.setAttribute("recentSearch", arrRecentSearch) ; + //String 변환 및 DB 업데이트 + userManageVO.setEmplyrId((String)session.getAttribute("loginId")); + userManageVO.setSearchWord(String.join(",", arrRecentSearch)); + userManageService.insertUpdateSearchWord(userManageVO); + }else{ + + } + } + + /*egovSiteManagerService.updateAdminLogKpCd(siteManagerVO); + modelAndView.addObject("siteManagerVO", siteManagerVO);*/ + return modelAndView; + } + + + + @RequestMapping("/getUrlAjax.do") + public ModelAndView getUrlAjax(UserManageVO userManageVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + StringBuffer sbuf = new StringBuffer(); + StringBuffer result = new StringBuffer(); + try { + // URL 객체 생성 + String strurlOri = "https://www.warmemo.or.kr/front/militaryInfo/searchView.do?idx=" ; + + String strurl = ""; + for(int i = 2073 ; i <= 2430 ; i++) { + strurl = strurlOri+i; + URL url = new URL(strurl); + // URLConnection 생성 + URLConnection urlConn = url.openConnection(); + InputStream is = urlConn.getInputStream(); + InputStreamReader isr = new InputStreamReader(is, "UTF-8"); + BufferedReader br = new BufferedReader(isr); + String str ; + int line = 0; + while((str=br.readLine()) != null){ + + sbuf.append(str + "\r\n") ; + if(line != 0) { + line++; + } + if(str.contains("
")) { + line ++; + } + + if(line == 3) { + result.append(strurl +"," + str.trim()+"," ); + } + + if(str.contains("유형 :")) { + result.append(str.split(":")[1].trim()+"\n"); + } + } + + } + + } catch (MalformedURLException e) { + System.out.println("MalformedURLException Occured!!!"); + } catch (IOException e) { + System.out.println("IOException Occured!!!"); + } + + return modelAndView; + } + } \ No newline at end of file diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngService.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngService.java index 1265001f..f951a914 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngService.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngService.java @@ -1,48 +1,50 @@ -package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service; - -import java.util.List; - - -public interface CndtnTrgtMngService { - - List selectPagingList(CndtnTrgtMngVO cndtnTrgtInfoMngVO); - - void insert(CndtnTrgtMngVO cndtnTrgtInfoMngVO); - - CndtnTrgtMngVO selectDetail(CndtnTrgtMngVO cndtnTrgtInfoVO); - - void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO); - - void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO); - - - - - - -/* //C - void insert(VEPrcsDetailVO paramVO) throws Exception; - - //R - VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception; - - //U - int update(VEPrcsDetailVO paramVO) throws Exception; - - //D - int delete(VEPrcsDetailVO paramVO) throws Exception; - - //L - List selectList(VEPrcsDetailVO paramVO) throws Exception; - - //List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception; - - List selectTngrPrcsList(VEPrcsDetailVO paramVO) throws Exception; - - //Page List - List selectPagingList(VEPrcsDetailVO paramVO) throws Exception; - - //교육과정 리스트 순서 수정 - void updatePrcsSort(VEPrcsDetailVO paramVO) throws Exception;*/ - -} +package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service; + +import java.util.List; + + +public interface CndtnTrgtMngService { + + List selectPagingList(CndtnTrgtMngVO cndtnTrgtInfoMngVO); + + void insert(CndtnTrgtMngVO cndtnTrgtInfoMngVO); + + CndtnTrgtMngVO selectDetail(CndtnTrgtMngVO cndtnTrgtInfoVO); + + void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO); + + void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO); + + int findCntreqNmber(String reqNmbrTemp); + + + + + + +/* //C + void insert(VEPrcsDetailVO paramVO) throws Exception; + + //R + VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception; + + //U + int update(VEPrcsDetailVO paramVO) throws Exception; + + //D + int delete(VEPrcsDetailVO paramVO) throws Exception; + + //L + List selectList(VEPrcsDetailVO paramVO) throws Exception; + + //List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception; + + List selectTngrPrcsList(VEPrcsDetailVO paramVO) throws Exception; + + //Page List + List selectPagingList(VEPrcsDetailVO paramVO) throws Exception; + + //교육과정 리스트 순서 수정 + void updatePrcsSort(VEPrcsDetailVO paramVO) throws Exception;*/ + +} diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java index 65da48fd..a7e6dfd4 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/CndtnTrgtMngVO.java @@ -35,6 +35,7 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable { private String cmptntAthrt; // 관할청 private String sex; // 성별 private String reqNmbr; // 의뢰번호 + private String reqNmbrTemp; // 의뢰번호 private String prsctrNm; // 검사성명 private String reqStateCd; // 의뢰상태코드 private String prcsAplctPrdOrdCmplt;// 중복확인을 위한 신청강의 PK @@ -166,6 +167,12 @@ public class CndtnTrgtMngVO extends ComDefaultVO implements Serializable { public void setReqNmbr(String reqNmbr) { this.reqNmbr = reqNmbr; } + public String getReqNmbrTemp() { + return reqNmbrTemp; + } + public void setReqNmbrTemp(String reqNmbrTemp) { + this.reqNmbrTemp = reqNmbrTemp; + } public String getPrsctrNm() { return prsctrNm; } diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngDAO.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngDAO.java index 304b0050..64869802 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngDAO.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngDAO.java @@ -1,125 +1,129 @@ -package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.impl; - -import java.util.List; - -import org.springframework.stereotype.Repository; - -import egovframework.rte.psl.dataaccess.EgovAbstractDAO; -import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; -import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; - -@Repository("cndtnTrgtInfoMngDAO") -public class CndtnTrgtMngDAO extends EgovAbstractDAO { - -/* *//** - * 등록 - C - * @param VELctrDetailVO - * @throws Exception - *//* - public void insert(VEPrcsDetailVO paramVO) throws Exception { - insert("VEPrcsAplctPrdDAO.insert", paramVO); - } - - *//** - * 상세보기 - R - * @param CndtnTrgtInfoMngVO - * @return - * @throws Exception - *//* - public VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception { - return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetail", paramVO); - } - - *//** - * 수정 - U - * @param CndtnTrgtInfoMngVO - * @return - * @throws Exception - *//* - public int update(VEPrcsDetailVO paramVO) throws Exception { - return update("VEPrcsAplctPrdDAO.update", paramVO); - } - - *//** - * 삭제 - D - * @param addrAgencyVO - * @return - * @throws Exception - *//* - public int delete(VEPrcsDetailVO paramVO) throws Exception { - return delete("VEPrcsAplctPrdDAO.delete", paramVO); - } - - //L - public List selectList(VEPrcsDetailVO paramVO) throws Exception { - List tlist = (List) list("VEPrcsAplctPrdDAO.selectList", paramVO); - return tlist; - } - - public List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception { - List tlist = (List) list("VEPrcsAplctPrdDAO.selectList4Fndth", paramVO); - return tlist; - } - - - *//** - * L - Page - * @param addrVO - * @return - * @throws Exception - *//* - public List selectPagingList(VEPrcsDetailVO paramVO) throws Exception { - List tlist = (List) list("VEPrcsAplctPrdDAO.selectPagingList", paramVO); - return tlist; - } - - public List selectPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception { - List tlist = (List) list("VEPrcsAplctPrdDAO.selectPagingList4Fndth", paramVO); - return tlist; - } - - public VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception { - return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailNewOne", paramVO); - } - - public VEPrcsDetailVO selectDetailNewOne4Fndth(VEPrcsDetailVO paramVO) throws Exception { - return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailNewOne4Fndth", paramVO); - } - - public List selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO) { - return (List) list("VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList", vEPrcsDetailVO); - }*/ - - public List selectPagingList(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - return (List) list("cndtnTrgtInfoMngDAO.selectPagingList", cndtnTrgtInfoMngVO); - } - - public void insert(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - insert("cndtnTrgtInfoMngDAO.insert", cndtnTrgtInfoMngVO); - } - - public CndtnTrgtMngVO selectDetail(CndtnTrgtMngVO cndtnTrgtInfoVO) { - return (CndtnTrgtMngVO) select("cndtnTrgtInfoMngDAO.selectDetail", cndtnTrgtInfoVO); - } - - public void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - update("cndtnTrgtInfoMngDAO.update", cndtnTrgtInfoMngVO); - } - - public String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndEduStateCd", cndtnTrgtInfoMngVO); - } - - public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) { - update("cndtnTrgtInfoMngDAO.updateUserId", cndtnTrgtMngVO); - } - - public String findByTrgtNmAndDBirthAndUserIdAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd", cndtnTrgtInfoMngVO); - } - - -} +package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; + +@Repository("cndtnTrgtInfoMngDAO") +public class CndtnTrgtMngDAO extends EgovAbstractDAO { + +/* *//** + * 등록 - C + * @param VELctrDetailVO + * @throws Exception + *//* + public void insert(VEPrcsDetailVO paramVO) throws Exception { + insert("VEPrcsAplctPrdDAO.insert", paramVO); + } + + *//** + * 상세보기 - R + * @param CndtnTrgtInfoMngVO + * @return + * @throws Exception + *//* + public VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception { + return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetail", paramVO); + } + + *//** + * 수정 - U + * @param CndtnTrgtInfoMngVO + * @return + * @throws Exception + *//* + public int update(VEPrcsDetailVO paramVO) throws Exception { + return update("VEPrcsAplctPrdDAO.update", paramVO); + } + + *//** + * 삭제 - D + * @param addrAgencyVO + * @return + * @throws Exception + *//* + public int delete(VEPrcsDetailVO paramVO) throws Exception { + return delete("VEPrcsAplctPrdDAO.delete", paramVO); + } + + //L + public List selectList(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectList", paramVO); + return tlist; + } + + public List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectList4Fndth", paramVO); + return tlist; + } + + + *//** + * L - Page + * @param addrVO + * @return + * @throws Exception + *//* + public List selectPagingList(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectPagingList", paramVO); + return tlist; + } + + public List selectPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception { + List tlist = (List) list("VEPrcsAplctPrdDAO.selectPagingList4Fndth", paramVO); + return tlist; + } + + public VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception { + return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailNewOne", paramVO); + } + + public VEPrcsDetailVO selectDetailNewOne4Fndth(VEPrcsDetailVO paramVO) throws Exception { + return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailNewOne4Fndth", paramVO); + } + + public List selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO) { + return (List) list("VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList", vEPrcsDetailVO); + }*/ + + public List selectPagingList(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + return (List) list("cndtnTrgtInfoMngDAO.selectPagingList", cndtnTrgtInfoMngVO); + } + + public void insert(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + insert("cndtnTrgtInfoMngDAO.insert", cndtnTrgtInfoMngVO); + } + + public CndtnTrgtMngVO selectDetail(CndtnTrgtMngVO cndtnTrgtInfoVO) { + return (CndtnTrgtMngVO) select("cndtnTrgtInfoMngDAO.selectDetail", cndtnTrgtInfoVO); + } + + public void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + update("cndtnTrgtInfoMngDAO.update", cndtnTrgtInfoMngVO); + } + + public String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndEduStateCd", cndtnTrgtInfoMngVO); + } + + public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) { + update("cndtnTrgtInfoMngDAO.updateUserId", cndtnTrgtMngVO); + } + + public String findByTrgtNmAndDBirthAndUserIdAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + return (String) select("cndtnTrgtInfoMngDAO.findByTrgtNmAndDBirthAndUserIdAndEduStateCd", cndtnTrgtInfoMngVO); + } + + public int findCntreqNmber(String reqNmbrTemp) { + return (int) select("cndtnTrgtInfoMngDAO.findCntreqNmber", reqNmbrTemp); + } + + +} diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngServiceImpl.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngServiceImpl.java index 439f1308..1c4668de 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngServiceImpl.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/service/impl/CndtnTrgtMngServiceImpl.java @@ -1,117 +1,122 @@ -package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.impl; - - -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; - -import egovframework.rte.fdl.idgnr.EgovIdGnrService; -import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; -import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService; -import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; - -@Service("cndtnTrgtInfoMngService") -public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService { - - - //과정신청기간순번 - @Resource(name="prcsAplctPrdGnrService") - private EgovIdGnrService prcsAplctPrdGnrService; - - //과정 - - //대상자 - @Resource(name="cndtnTrgtInfoMngDAO") - private CndtnTrgtMngDAO cndtnTrgtInfoMngDAO; - - @Override - public List selectPagingList(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - return cndtnTrgtInfoMngDAO.selectPagingList(cndtnTrgtInfoMngVO); - } - - @Override - public void insert(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - cndtnTrgtInfoMngDAO.insert(cndtnTrgtInfoMngVO); - - } - - @Override - public CndtnTrgtMngVO selectDetail(CndtnTrgtMngVO cndtnTrgtInfoVO) { - return cndtnTrgtInfoMngDAO.selectDetail(cndtnTrgtInfoVO); - } - - @Override - public void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { - cndtnTrgtInfoMngDAO.update(cndtnTrgtInfoMngVO); - - } - - @Override - public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) { - cndtnTrgtInfoMngDAO.updateUserId(cndtnTrgtMngVO); - } - - /* - //C - public void insert(VEPrcsDetailVO vEPrcsDetailVO) throws Exception { - - - String prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID - vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd); - vEPrcsDetailVO.setLctrDivCd("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 - //vEPrcsDetailVO.setUseYn("Y"); - - vEPrcsAplctPrdDAO.insert(vEPrcsDetailVO); - } - - //R - public VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception { - return vEPrcsAplctPrdDAO.selectDetail(paramVO); - } - - //U - public int update(VEPrcsDetailVO paramVO) throws Exception{ - vEPrcsAplctPrdDAO.update(paramVO); - return vEPrcsDAO.update(paramVO); - } - - //D - public int delete(VEPrcsDetailVO paramVO) throws Exception{ - return vEPrcsAplctPrdDAO.delete(paramVO); - } - - //List - public List selectList(VEPrcsDetailVO paramVO) throws Exception{ - return vEPrcsAplctPrdDAO.selectList(paramVO); - } - - public List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception{ - return vEPrcsAplctPrdDAO.selectList4Fndth(paramVO); - } - - //paging List - public List selectPagingList(VEPrcsDetailVO paramVO) throws Exception{ - return vEPrcsAplctPrdDAO.selectPagingList(paramVO); - } - - public List selectPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception{ - return vEPrcsAplctPrdDAO.selectPagingList4Fndth(paramVO); - } - - //R - public VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception { - return vEPrcsAplctPrdDAO.selectDetailNewOne(paramVO); - } - - public VEPrcsDetailVO selectDetailNewOne4Fndth(VEPrcsDetailVO paramVO) throws Exception { - return vEPrcsAplctPrdDAO.selectDetailNewOne4Fndth(paramVO); - } - - @Override - public List selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO) { - return vEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO); - }*/ - -} +package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.impl; + + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; +import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService; +import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO; + +@Service("cndtnTrgtInfoMngService") +public class CndtnTrgtMngServiceImpl implements CndtnTrgtMngService { + + + //과정신청기간순번 + @Resource(name="prcsAplctPrdGnrService") + private EgovIdGnrService prcsAplctPrdGnrService; + + //과정 + + //대상자 + @Resource(name="cndtnTrgtInfoMngDAO") + private CndtnTrgtMngDAO cndtnTrgtInfoMngDAO; + + @Override + public List selectPagingList(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + return cndtnTrgtInfoMngDAO.selectPagingList(cndtnTrgtInfoMngVO); + } + + @Override + public void insert(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + cndtnTrgtInfoMngDAO.insert(cndtnTrgtInfoMngVO); + + } + + @Override + public CndtnTrgtMngVO selectDetail(CndtnTrgtMngVO cndtnTrgtInfoVO) { + return cndtnTrgtInfoMngDAO.selectDetail(cndtnTrgtInfoVO); + } + + @Override + public void update(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + cndtnTrgtInfoMngDAO.update(cndtnTrgtInfoMngVO); + + } + + @Override + public void updateUserId(CndtnTrgtMngVO cndtnTrgtMngVO) { + cndtnTrgtInfoMngDAO.updateUserId(cndtnTrgtMngVO); + } + + @Override + public int findCntreqNmber(String reqNmbrTemp) { + return cndtnTrgtInfoMngDAO.findCntreqNmber(reqNmbrTemp); + } + + /* + //C + public void insert(VEPrcsDetailVO vEPrcsDetailVO) throws Exception { + + + String prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID + vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd); + vEPrcsDetailVO.setLctrDivCd("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 + //vEPrcsDetailVO.setUseYn("Y"); + + vEPrcsAplctPrdDAO.insert(vEPrcsDetailVO); + } + + //R + public VEPrcsDetailVO selectDetail(VEPrcsDetailVO paramVO) throws Exception { + return vEPrcsAplctPrdDAO.selectDetail(paramVO); + } + + //U + public int update(VEPrcsDetailVO paramVO) throws Exception{ + vEPrcsAplctPrdDAO.update(paramVO); + return vEPrcsDAO.update(paramVO); + } + + //D + public int delete(VEPrcsDetailVO paramVO) throws Exception{ + return vEPrcsAplctPrdDAO.delete(paramVO); + } + + //List + public List selectList(VEPrcsDetailVO paramVO) throws Exception{ + return vEPrcsAplctPrdDAO.selectList(paramVO); + } + + public List selectList4Fndth(VEPrcsDetailVO paramVO) throws Exception{ + return vEPrcsAplctPrdDAO.selectList4Fndth(paramVO); + } + + //paging List + public List selectPagingList(VEPrcsDetailVO paramVO) throws Exception{ + return vEPrcsAplctPrdDAO.selectPagingList(paramVO); + } + + public List selectPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception{ + return vEPrcsAplctPrdDAO.selectPagingList4Fndth(paramVO); + } + + //R + public VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception { + return vEPrcsAplctPrdDAO.selectDetailNewOne(paramVO); + } + + public VEPrcsDetailVO selectDetailNewOne4Fndth(VEPrcsDetailVO paramVO) throws Exception { + return vEPrcsAplctPrdDAO.selectDetailNewOne4Fndth(paramVO); + } + + @Override + public List selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO) { + return vEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO); + }*/ + +} diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java index 11b2d14d..7eca7c1e 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/trgtMng/web/CndtnTrgtMngController.java @@ -1,10 +1,14 @@ package kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.web; +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -21,6 +25,7 @@ import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import kcc.com.cmm.LoginVO; import kcc.com.cmm.service.EgovFileMngService; import kcc.com.cmm.service.FileVO; +import kcc.com.cmm.util.DateUtil; import kcc.com.cmm.util.StringUtil; import kcc.com.utl.user.service.CheckFileUtil; import kcc.com.utl.user.service.CheckLoginUtil; @@ -149,16 +154,21 @@ public class CndtnTrgtMngController { //로그인 처리==================================== //로그인 정보 가져오기 - LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 +// LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 - System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority()); String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; //로그인 처리==================================== + + + + String userWork = this.getUserWork(request); + cndtnTrgtInfoMngVO.setSearchCondition(userWork); + //1.pageing step1 PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); @@ -202,6 +212,90 @@ public class CndtnTrgtMngController { return "oprtn/cndtnSspnIdtmt/trgtList"; } + /** + * @methodName : getUserWork + * @author : 이호영 + * @date : 2023.11.07 + * @description : 사용자 권한이 관할청 담당자일때 userWork로 관할 가져오기 + * @param request + * @return + */ + private String getUserWork(HttpServletRequest request) { + + String userWork = ""; + HttpSession session = request.getSession(); + LoginVO loginVO = (LoginVO) session.getAttribute("LoginVO"); + String authority = loginVO.getAuthority(); + // 관할청 담당자일때 + if("ROLE_ADR_JRSDC".equals(authority)) { + userWork = loginVO.getUserWork(); + } + // TODO Auto-generated method stub + return userWork; + } + + @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngList.do") + public String trgtMngList( + @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + System.out.println("loginVO.getAuthority() :: "+ loginVO.getAuthority()); + + String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model); + if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; + + //로그인 처리==================================== + + //1.pageing step1 + PaginationInfo paginationInfo = this.setCndtnPagingStep1(cndtnTrgtInfoMngVO); + + //임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함 + //paginationInfo.setRecordCountPerPage(10000); + + //2. pageing step2 + cndtnTrgtInfoMngVO = this.setCndtnPagingStep2(cndtnTrgtInfoMngVO, paginationInfo); + + //검색 조회 + if(StringUtil.isNotEmpty(cndtnTrgtInfoMngVO.getSearchKeyword())){ + + + String selectCondition = ""; + String searchStatus = cndtnTrgtInfoMngVO.getSearchStatus(); + + selectCondition = "AND a."+searchStatus+" LIKE CONCAT ('%', '" +cndtnTrgtInfoMngVO.getSearchKeyword() + "', '%')"; + cndtnTrgtInfoMngVO.setSearchQuery(selectCondition); + + } + +// List cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + List cndtnTrgtInfoMngVOList = null; + try { + + cndtnTrgtInfoMngVOList = cndtnTrgtInfoMngService.selectPagingList(cndtnTrgtInfoMngVO); + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //3.pageing step3 + paginationInfo = this.setCndtnPagingStep3(cndtnTrgtInfoMngVOList, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + + + //대상 리스트, 페이징 정보 전달 + model.addAttribute("list", cndtnTrgtInfoMngVOList); + + return "oprtn/cndtnSspnIdtmt/trgtMngList"; + } + /** * @methodName : trgtCmpltList * @author : 이호영 @@ -278,6 +372,7 @@ public class CndtnTrgtMngController { public String cndtnEduPrcsMngReg( @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO , ModelMap model + , HttpServletRequest request ) throws Exception { //로그인 처리==================================== @@ -287,7 +382,9 @@ public class CndtnTrgtMngController { if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo; //로그인 처리==================================== - + + String userWork = this.getUserWork(request); + model.addAttribute("userWork", userWork); return "oprtn/cndtnSspnIdtmt/trgtReg"; } @@ -338,16 +435,18 @@ public class CndtnTrgtMngController { ); //EXT, MB size and ea if ("ERROR".equals(s_scholSealAtchFileId)) return modelAndView; - System.out.println("s_scholSealAtchFileId :: "+ s_scholSealAtchFileId); - + + + // 사건번호 + // 형식 : - 예시로 A-서울중앙-100-23-1 경우 + // A (성인/미성년 구분), 서울중앙, 100, 23, 1 + // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호 + + cndtnTrgtInfoMngVO.setReqNmbr(this.getReqNmbr(cndtnTrgtInfoMngVO)); cndtnTrgtInfoMngVO.setSspnIdtmtTrgtOrd(trgtOrdService.getNextStringId()); cndtnTrgtInfoMngVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일 cndtnTrgtInfoMngVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id -// vEPrcsDetailVO.setPrcsOrd(prcsOrd); -// vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 -// vEPrcsDetailVO.setUseYn("Y"); -// vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id cndtnTrgtInfoMngService.insert(cndtnTrgtInfoMngVO); @@ -358,7 +457,49 @@ public class CndtnTrgtMngController { return modelAndView; } + + // 사건번호 + // 형식 : - 예시로 A-서울중앙-100-23-1 경우 + // A (성인/미성년 구분), 서울중앙, 100, 23, 1 + // 성인 A / 미성년 Y, 검찰청명, 검찰청 고유번호, 연도, 접수번호 + private String getReqNmbr(CndtnTrgtMngVO cndtnTrgtInfoMngVO) { + + //성인 미성년 구분 + String adultWhether = getIsAdultInKorea(cndtnTrgtInfoMngVO.getdBirth()); + String reqNmbrTemp = adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+LocalDate.now().getYear()+"-"; + + int cnt = cndtnTrgtInfoMngService.findCntreqNmber("%" + reqNmbrTemp + "%"); + return adultWhether+"-"+cndtnTrgtInfoMngVO.getCmptntAthrt()+"-"+DateUtil.getStringToLocalDateYear()+"-"+(cnt+1); + } + /** + * @methodName : getIsAdultInKorea + * @author : 이호영 + * @date : 2023.11.07 + * @description : 성인이면 A, 미성년이면 Y + * @param birthDateString + * @return + */ + public static String getIsAdultInKorea(String birthDateString) { + String returnData = "Y"; + // 생년월일 포맷 정의 (예시: "yyyy-MM-dd") + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + + // 문자열로부터 LocalDate 객체 생성 + LocalDate birthDate = LocalDate.parse(birthDateString, formatter); + + // 현재 날짜 얻기 + LocalDate now = LocalDate.now(); + + // 생년월일과 현재 날짜 사이의 기간 계산 + Period period = Period.between(birthDate, now); + if(period.getYears() >= 19) { + returnData="A"; + } + // 만 나이가 19세 이상인지 확인 + return returnData; + } + /** * 조건부기소유예과정 등록 */ @@ -451,7 +592,7 @@ public class CndtnTrgtMngController { } /** - * 조건부기소유예과정 상세화면 + * 대상자목록 */ @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtDetail.do") public String trgtDetail( @@ -482,6 +623,38 @@ public class CndtnTrgtMngController { return "oprtn/cndtnSspnIdtmt/trgtDetail"; } + /** + * 대상자목록 + */ + @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngDetail.do") + public String trgtMngDetail( + @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + return "oprtn/cndtnSspnIdtmt/trgtMngDetail"; + } /** * 조건부기소유예과정 수료자 상세화면 */ @@ -556,6 +729,37 @@ public class CndtnTrgtMngController { } + @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/trgtMngMdfy.do") + public String trgtMngMdfy( + @ModelAttribute("cndtnTrgtInfoMngVO") CndtnTrgtMngVO cndtnTrgtInfoMngVO + , ModelMap model + , HttpServletRequest request + ) throws Exception { + + //로그인 처리==================================== + //로그인 정보 가져오기 + + LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 + SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 + + //로그인 처리==================================== + + //과정 조회 + CndtnTrgtMngVO cndtnTrgtInfoVO = cndtnTrgtInfoMngService.selectDetail(cndtnTrgtInfoMngVO); + model.addAttribute("info", cndtnTrgtInfoVO); + + + //파일 정보 가져오기 + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(cndtnTrgtInfoVO.getAtchFileId()); + List result = fileService.selectFileInfs(fileVO); + model.addAttribute("fileList", result); + model.addAttribute("fileListCnt", result.size()); + + return "oprtn/cndtnSspnIdtmt/trgtMngMdfy"; + } + + diff --git a/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Mysql.xml index 5d00ca0c..805b4757 100644 --- a/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Mysql.xml @@ -1,402 +1,401 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UPDATE - LETTNEMPLYRINFO - SET - - KAKAO_ID = #snsId# - , KAKAO_EMAIL = #snsId# - - - KAKAO_ID = #snsId# - , KAKAO_EMAIL = #snsId# - - WHERE - EMPLYR_ID = #id# - - - - - - - - - - - - - - - - - - UPDATE LETTNEMPLYRINFO - SET PASS_MISS = PASS_MISS+1 - WHERE EMPLYR_ID = #id# - - - - UPDATE LETTNEMPLYRINFO - SET PASS_MISS = 0 - WHERE EMPLYR_ID = #id# - - - - UPDATE LETTNEMPLYRINFO - SET EMPLYR_STTUS_CODE = #emplyrSttusCode# - /**삭제의 경우 삭제 일시 넣어줌 */ - , WITHDRAW_DE = now() - - /**삭제 아닌경우 삭제 일시 없애줌 */ - , WITHDRAW_DE = null - - WHERE EMPLYR_ID = #id# - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE + LETTNEMPLYRINFO + SET + + KAKAO_ID = #snsId# + , KAKAO_EMAIL = #snsId# + + + KAKAO_ID = #snsId# + , KAKAO_EMAIL = #snsId# + + WHERE + EMPLYR_ID = #id# + + + + + + + + + + + + + + + + + + UPDATE LETTNEMPLYRINFO + SET PASS_MISS = PASS_MISS+1 + WHERE EMPLYR_ID = #id# + + + + UPDATE LETTNEMPLYRINFO + SET PASS_MISS = 0 + WHERE EMPLYR_ID = #id# + + + + UPDATE LETTNEMPLYRINFO + SET EMPLYR_STTUS_CODE = #emplyrSttusCode# + /**삭제의 경우 삭제 일시 넣어줌 */ + , WITHDRAW_DE = now() + + /**삭제 아닌경우 삭제 일시 없애줌 */ + , WITHDRAW_DE = null + + WHERE EMPLYR_ID = #id# + + diff --git a/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Tibero.xml index 0e755fd4..09d4e00c 100644 --- a/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Tibero.xml @@ -1,494 +1,501 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UPDATE - LETTNEMPLYRINFO - SET - - KAKAO_ID = #snsId# - , KAKAO_EMAIL = #snsId# - - - KAKAO_ID = #snsId# - , KAKAO_EMAIL = #snsId# - - WHERE - EMPLYR_ID = #id# - - - - - - - - - - - - - - - - - - UPDATE LETTNEMPLYRINFO - SET PASS_MISS = PASS_MISS+1 - WHERE EMPLYR_ID = #id# - - - - UPDATE LETTNEMPLYRINFO - SET PASS_MISS = 0 - WHERE EMPLYR_ID = #id# - - - - UPDATE LETTNEMPLYRINFO - SET EMPLYR_STTUS_CODE = #emplyrSttusCode# - /**삭제의 경우 삭제 일시 넣어줌 */ - , WITHDRAW_DE = now() - - /**삭제 아닌경우 삭제 일시 없애줌 */ - , WITHDRAW_DE = null - - WHERE EMPLYR_ID = #id# - - - - - - /* 임시.*NOT_SQL_LOG.* loginDAO.updateMberSeqKeyAjax*/ - UPDATE LETTNGNRLMBER - SET mber_seq = #mberSeq# - WHERE mber_id = #id# - - - - /* 임시.*NOT_SQL_LOG.* loginDAO.updateMberSeqKeyNull*/ - UPDATE LETTNGNRLMBER - SET mber_seq = '' - WHERE mber_id = #user_id# - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE + LETTNEMPLYRINFO + SET + + KAKAO_ID = #snsId# + , KAKAO_EMAIL = #snsId# + + + KAKAO_ID = #snsId# + , KAKAO_EMAIL = #snsId# + + WHERE + EMPLYR_ID = #id# + + + + + + + + + + + + + + + + + + UPDATE LETTNEMPLYRINFO + SET PASS_MISS = PASS_MISS+1 + WHERE EMPLYR_ID = #id# + + + + UPDATE LETTNEMPLYRINFO + SET PASS_MISS = 0 + WHERE EMPLYR_ID = #id# + + + + UPDATE LETTNEMPLYRINFO + SET EMPLYR_STTUS_CODE = #emplyrSttusCode# + /**삭제의 경우 삭제 일시 넣어줌 */ + , WITHDRAW_DE = now() + + /**삭제 아닌경우 삭제 일시 없애줌 */ + , WITHDRAW_DE = null + + WHERE EMPLYR_ID = #id# + + + + + + /* 임시.*NOT_SQL_LOG.* loginDAO.updateMberSeqKeyAjax*/ + UPDATE LETTNGNRLMBER + SET mber_seq = #mberSeq# + WHERE mber_id = #id# + + + + /* 임시.*NOT_SQL_LOG.* loginDAO.updateMberSeqKeyNull*/ + UPDATE LETTNGNRLMBER + SET mber_seq = '' + WHERE mber_id = #user_id# + + diff --git a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml index 782b07ec..1097ccd7 100644 --- a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml @@ -140,6 +140,15 @@ sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd# + /* cndtnTrgtInfoMngDAO.updateSspnIdtmtTrgtOrd */ @@ -168,6 +177,11 @@ AND a.EDU_STATE_CD = #eduStateCd# + /* 관할청 담당자를 위한 조건 */ + + AND a.CMPTNT_ATHRT = #searchCondition# + + /* 수료자 중복 리스트를 위한 조건문 */ AND a.TRGT_NM = #trgtNm# diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovUserInsert.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovUserInsert.jsp index 52064bd4..3783ba94 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovUserInsert.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovUserInsert.jsp @@ -1,533 +1,533 @@ -<%-- - Class Name : EgovUserInsert.jsp - Description : 사용자등록View JSP - Modification Information - - 수정일 수정자 수정내용 - ------- -------- --------------------------- - 2009.03.03 JJY 최초 생성 - 2011.08.31 JJY 경량환경 버전 생성 - - author : 공통서비스 개발팀 JJY - since : 2009.03.03 ---%> -<%@ 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="form" uri="http://www.springframework.org/tags/form" %> -<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> -<%@ taglib prefix="double-submit" uri="http://www.egovframe.go.kr/tags/double-submit/jsp" %> - - - - - - - - - - - - - - - - - - -
-
- - -
-

관리자등록

- -
- - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- --%> - - - <%-- - - --%> - - - - - - - - - - - - - - - - - - - - - -
사이트명 - -
관리자아이디 - - - - - - -
비밀번호 - - -
- - 비밀번호 문자 + 숫자 + 특수 문자 포함, 최소 8~20자리 - -
비밀번호확인 - -
이름 - - -
권한 - -
직책 - - - - - -
부서 - -
전화번호 - - -
팩스번호 - - -
담당업무 - - -
이메일주소 - - -
-
- - - -
-
- -
-
- -
-
- -
-
-
- -
- - - - - - - - - -
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - +<%-- + Class Name : EgovUserInsert.jsp + Description : 사용자등록View JSP + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2009.03.03 JJY 최초 생성 + 2011.08.31 JJY 경량환경 버전 생성 + + author : 공통서비스 개발팀 JJY + since : 2009.03.03 +--%> +<%@ 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="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="double-submit" uri="http://www.egovframe.go.kr/tags/double-submit/jsp" %> + + + + + + + + + + + + + + + + + + +
+
+ + +
+

관리자등록

+ +
+ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- --%> + + + <%-- + + --%> + + + + + + + + + + + + + + + + + + + + + +
사이트명 + +
관리자아이디 + + + + + + +
비밀번호 + + +
+ + 비밀번호 문자 + 숫자 + 특수 문자 포함, 최소 8~20자리 + +
비밀번호확인 + +
이름 + + +
권한 + +
직책 + + + + + +
부서 + +
전화번호 + + +
팩스번호 + + +
담당업무 + + +
이메일주소 + + +
+
+ + + +
+
+ +
+
+ +
+
+ +
+
+
+ +
+ + + + + + + + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp index d912d3c9..14d877b4 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtList.jsp @@ -334,7 +334,7 @@
diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngList.jsp new file mode 100644 index 00000000..d912d3c9 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngList.jsp @@ -0,0 +1,367 @@ + +<%@ page language="java" 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="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> + +<% + /** + * @Class Name : cndtnEduPrcsMngList.jsp + * @Description : 조건부 기소유예 과정관리 목록 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.14 조용준 최초 생성 + * @author 조용준 + * @since 2021.12.14 + * @version 1.0 + * @see + * + */ +%> + + + + + + 교육과정관리 + + +
+ +
+ + + " /> + " /> + + + +
+
+ + +
+

대상자 목록

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 대상자 목록
  • +
+
+ + +
+
+

대상자 목록

+
+ +
+
+
+ + +
+
+ +
+ ~ +
+ +
+
+ + + +
+
+
+ +
+

건의 접수가 검색되었습니다.

+
+ + <%----%> +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ');" style="cursor:pointer;"> +<%-- + + + + + + + + + +<%-- --%> + + + + + + + + +
의뢰일사건번호관할청생년월일성명성별의뢰번호의뢰상태교육상태주소검사명
');" style="cursor:pointer;"> --%> +<%-- --%> + + + +<%-- --%> + + + 형제 + + + + + + + + + + + + + + + + ${fn:length(fullAddr)> 5 ? fn:substring(fullAddr, 0, 5).concat('...') : ''} + + +
+
+ + + +
+ +
+
+
+
+
+
+
+ +
+
+ +
+
+
+ + + +
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngMdfy.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngMdfy.jsp new file mode 100644 index 00000000..c9f9485e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngMdfy.jsp @@ -0,0 +1,518 @@ + +<%@ page language="java" 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="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<% + /** + * @Class Name : cndtnEduPrcsMngMdfy.jsp + * @Description : 조건부기소유예 수정 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.16 조용준 최초 생성 + * @author 조용주 + * @since 2021.12.16 + * @version 1.0 + * @see + * + */ +%> + + +교육과정관리 + + + + + + + + + + + +
+
+ + +
+

대상자 수정

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 대상자 목록
  • +
  • 대상자 수정
  • +
+
+ + +
+ +
+

대상자 수정

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
의뢰일 +
+
+ + " /> +
+
+
사건번호 + "/>형제 + "/> +
관할청 + +
성별 +<%-- " /> --%> + + + 연락처 + " /> +
성명 + " /> + 생년월일 + " /> +
의뢰번호 + " /> + 의뢰상태 + +
교육상태 + + 검사명 + " /> +
+

주소

+
+ + + +
+ + + + +
+
+

필수입력 항목*

+

첨부파일

+
+ + + +

첨부파일 가능 용량은 20MB입니다.

업로드 순서는 1.신청서 2.안내문 입니다.

+
+ + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + + "> + + "> + + +
+
+
+
+ + + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngReg.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngReg.jsp new file mode 100644 index 00000000..8e122c66 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtMngReg.jsp @@ -0,0 +1,458 @@ + +<%@ page language="java" 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="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<% + /** + * @Class Name : cndtnEduPrcsMngReg.jsp + * @Description : 조건부기소유예 과정 등록 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.16 조용준 최초 생성 + * @author 조용주 + * @since 2021.12.16 + * @version 1.0 + * @see + * + */ +%> + + +교육과정관리 + + + + + + + + + +
+
+ + +
+

대상자 등록

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 대상자 목록
  • +
  • 대상자 등록
  • +
+
+ + +
+ +
+

대상자 등록

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
의뢰일 +
+
+ +
+
+
사건번호 + 형제 + +
관할청 + +
성별 + + 연락처 + +
성명 + + 생년월일 + +
의뢰번호 + + 의뢰상태 + +
교육상태 + 교육대기 + + <%-- --%> + 검사명 + +
+

주소

+
+ + + +
+ + + + +
+
+

필수입력 항목*

+

첨부파일

+
+ + + +

첨부파일 가능 용량은 20MB입니다.

+
+ + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+

첨부하실 파일을 마우스로 끌어서 넣어주세요.

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
첨부파일 리스트 : 파일명, 종류, 크기, 삭제
파일 명종류크기삭제
+ + + + "> + + "> + + +
+
+
+
+ + + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp index 8e122c66..41505953 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/trgtReg.jsp @@ -34,6 +34,9 @@ $(".btn_type01").on('click', function(){ $("#file_temp").click(); }); + + + }); function fncSave(){ @@ -50,7 +53,8 @@ if (obj) data.append("file"+idx, obj.fileObj); }); - + + $('#cmptntAthrt').prop('disabled', false); if(confirm("저장하시겠습니까?")){ var url = "${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/trgtRegAjax.do"; console.log(data); @@ -68,13 +72,15 @@ console.log('returnData :: ', returnData); if(returnData.result == "success"){ alert("저장되었습니다."); - fncGoList(); +// fncGoList(); }else if(returnData.result == "fail"){ alert(returnData.message); + $('#cmptntAthrt').prop('disabled', true); } }, error:function(request , status, error){ alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); + $('#cmptntAthrt').prop('disabled', true); } }); } @@ -105,11 +111,11 @@ } // 관할청 검사 - if($("input[name='cmptntAthrt']").val()){ - alert("관할청을 입력해주세요."); - $("input[name='cmptntAthrt']").focus(); - return true; - } +// if($("input[name='cmptntAthrt']").val()){ +// alert("관할청을 입력해주세요."); +// $("input[name='cmptntAthrt']").focus(); +// return true; +// } if($("#sex").val() == "선택" || $("#sex").val().trim() == ""){ alert("성별을 선택해주세요."); @@ -132,11 +138,11 @@ } // 의뢰번호 검사 - if($("input[name='reqNmbr']").val().trim() == ""){ + /* if($("input[name='reqNmbr']").val().trim() == ""){ alert("의뢰번호를 입력해주세요."); $("input[name='reqNmbr']").focus(); return true; - } + } */ // 의뢰상태 검사 /* if($("#reqStateCd").val().trim() == ""){ @@ -271,10 +277,18 @@ 관할청 - + + + + + + + + + @@ -308,10 +322,10 @@ --> - 의뢰번호 + 의뢰상태 + 검사명 + + + 교육상태 @@ -330,10 +348,6 @@ defaultText='선택' /> --%> - 검사명 - - -