package itn.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.math.BigDecimal; import java.math.RoundingMode; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.RSAPublicKeySpec; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; 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.crypto.Cipher; 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.HandlerMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.support.RequestContextUtils; import org.springmodules.validation.commons.DefaultBeanValidator; import com.google.gson.Gson; import com.penta.scpdb.ScpDbAgent; import NiceID.Check.CPClient; 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 itn.com.cmm.ComDefaultCodeVO; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovCmmUseService; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.util.EgovDoubleSubmitHelper; import itn.com.cmm.util.MJUtil; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.cop.bbs.service.BoardVO; import itn.let.fax.user.service.FaxGroupDataVO; import itn.let.fax.user.service.FaxService; import itn.let.kakao.admin.kakaoAt.service.ChannelIDVO; import itn.let.kakao.admin.kakaoAt.service.MjonKakaoATService; import itn.let.kakao.kakaoComm.KakaoReturnVO; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiProfile; import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate; import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService; import itn.let.mjo.addr.service.AddrService; import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.kisa.service.KisaService; import itn.let.mjo.kisa.service.KisaVO; import itn.let.mjo.msg.service.MjPhoneMemberVO; import itn.let.mjo.msg.service.MjonMsgResultCodeVO; import itn.let.mjo.msg.service.MjonMsgService; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgCustom.service.MjonMsgCustomService; import itn.let.mjo.msgCustom.service.MjonMsgCustomVO; import itn.let.mjo.msgagent.service.MjonMsgAgentStsService; import itn.let.mjo.msgagent.service.MjonMsgAgentStsVO; import itn.let.mjo.msgcampain.service.MjonCandidateService; import itn.let.mjo.msgcampain.service.MjonCandidateVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgsent.service.MjonMsgSentService; import itn.let.mjo.msgsent.service.MjonMsgSentVO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.pay.service.RefundService; import itn.let.mjo.pay.service.RefundVO; import itn.let.mjo.payva.service.VacsVactService; import itn.let.mjo.payva.service.VacsVactVO; import itn.let.org.service.LocVO; import itn.let.org.service.OrgChartManageService; import itn.let.sec.ram.service.AuthorManageVO; import itn.let.sec.ram.service.EgovAuthorManageService; import itn.let.sec.rgm.service.AuthorGroup; import itn.let.sec.rgm.service.EgovAuthorGroupService; import itn.let.sym.ccm.cde.service.CateCode; import itn.let.sym.ccm.cde.service.EgovCcmCmmnDetailCodeManageService; import itn.let.sym.grd.service.MberGrdService; import itn.let.sym.log.user.service.UserLogService; import itn.let.sym.log.user.service.UserLogVO; import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; import itn.let.sym.site.service.SiteManagerVO; import itn.let.uat.uia.service.EgovLoginService; import itn.let.uat.uia.web.EmailVO; import itn.let.uat.uia.web.SendLogVO; import itn.let.uat.uia.web.SendMail; import itn.let.uss.umt.service.EgovMberManageService; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageConfigVO; import itn.let.uss.umt.service.MberManageVO; import itn.let.uss.umt.service.UserDefaultVO; import itn.let.uss.umt.service.UserManageVO; import itn.let.utl.fcc.service.EgovCryptoUtil; import itn.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 = "CmmnDetailCodeManageService") private EgovCcmCmmnDetailCodeManageService cmmnDetailCodeManageService; @Resource(name = "UserLogService") private UserLogService userLogService; /* MjonMsgDataService */ @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; /* * 결제 서비스 호출 * */ @Resource(name = "mjonPayService") private MjonPayService mjonPayService; @Resource(name = "mjonMsgService") private MjonMsgService mjonMsgService; @Resource(name = "refundService") private RefundService refundService; @Resource(name = "KisaService") private KisaService kisaService; @Resource(name = "faxService") private FaxService faxService; @Resource(name = "mjonCandidateService") private MjonCandidateService mjonCandidateService; /* 암복호화 */ @Resource(name = "egovCryptoUtil") EgovCryptoUtil egovCryptoUtil; @Resource (name = "AddrService") private AddrService addrService; @Resource(name = "MjonMsgSentService") private MjonMsgSentService mjonMsgSentService; //전용계좌 서비스 @Resource(name = "vacsVactService") private VacsVactService vacsVactService; @Resource(name = "MjonEventService") private MjonEventService mjonEventService; @Resource(name = "mjonMsgCustomService") private MjonMsgCustomService mjonMsgCustomService; private String topLocNo = "1000000" ; //전역 최상위 매뉴번호 @Resource(name = "mjonMsgAgentStsService") private MjonMsgAgentStsService mjonMsgAgentStsService; @Resource(name = "mjonKakaoATService") private MjonKakaoATService mjonKakaoATService; @Resource(name = "kakaoApiService") private KakaoApiService kakaoApiService; @Autowired KakaoApiTemplate kakaoApiTemplate; @Autowired KakaoApiProfile kakaoApiProfile; /** 등급제 관리 서비스 */ @Resource(name = "mberGrdService") MberGrdService mberGrdService; //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] userExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "사이트명" , "ITN" , "[코드]"}, {"2", "아이디" , "testId", ""}, {"3", "이름" , "홍길동", ""}, {"4", "권한" , "일반관리자", "[코드]"}, {"5", "전화번호(부서)" , "02-123-4567", ""}, {"6", "이메일" , "test@itn.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 { Map flashMap =RequestContextUtils.getInputFlashMap(request); if(flashMap!=null && flashMap.get("userSearchVO") != null) { userSearchVO = (UserDefaultVO)flashMap.get("userSearchVO"); } { //일반관리자가 좌측의 매뉴의 관리자 관리 클릭시 리스트가 아닌 자신의 정보수정페이지로 리로딩. 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()); } /** 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"); } if("".equals(userSearchVO.getEmplyrSttusCode()) || userSearchVO.getEmplyrSttusCode() == null){ //최초조회시 사용중인 관리자만 조회 userSearchVO.setEmplyrSttusCode("P"); } 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("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"; } 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, HttpServletRequest request, HttpSession session) throws Exception { try { // 문자 단가 JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); double shortPrice = 0; // 단문(SMS) double longPrice = 0; // 장문(LMS) double picturePrice = 0; // 그림문자(MMS) 1장 double picture2Price = 0; // 그림문자(MMS) 2장 double picture3Price = 0; // 그림문자(MMS) 3장 shortPrice = (double)sysJoinSetVO.getShortPrice(); longPrice = (double)sysJoinSetVO.getLongPrice(); picturePrice = (double)sysJoinSetVO.getPicturePrice(); picture2Price = (double)sysJoinSetVO.getPicture2Price(); picture3Price = (double)sysJoinSetVO.getPicture3Price(); model.addAttribute("shortPrice", shortPrice); model.addAttribute("longPrice", longPrice); model.addAttribute("picturePrice", picturePrice); model.addAttribute("picture2Price", picture2Price); model.addAttribute("picture3Price", picture3Price); 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"); //System.out.println("userSearchVO.getSearchSortCnd() : " + userSearchVO.getSearchSortCnd()); //System.out.println("userSearchVO.getMberSttus() : " + userSearchVO.getMberSttus()); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List if(userSearchVO.getMberSttus() != null) { if(userSearchVO.getMberSttus().equals("B")){ userSearchVO.setSearchSortCnd("mberSttusUptPnttm"); userSearchVO.setSearchSortOrd("desc"); } else { userSearchVO.setSearchSortCnd("sbscrbDe"); userSearchVO.setSearchSortOrd("desc"); } } else { userSearchVO.setSearchSortCnd("sbscrbDe"); userSearchVO.setSearchSortOrd("desc"); } } //후보자 검색 isNotEmpty 조건 candidateYn = 'Y' userSearchVO.setCandidateYn("Y"); List resultList = mberManageService.selectMberLoginAddList(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("COM038"); model.addAttribute("emplyrSttusCode_result", cmmUseService.selectCmmCodeDetail(vo));//사용자상태코드목록 List hotlineMsgAgentList = mjonMsgAgentStsService.selectMsgAgentListByHotline(); model.addAttribute("hotlineMsgAgentList", hotlineMsgAgentList); //본인인증 /*String referer = (String)request.getHeader("REFERER"); URL newURL = new URL(referer); String protocol = newURL.getProtocol() + "://"; String host = newURL.getHost(); String succUrl = protocol + host + "/uss/umt/user/niceCheckAjax.do"; String failUrl = protocol + host + "/uss/umt/user/EgovGnrlUserManage.do"; userSearchVO.setNiceSuccUrl(succUrl); userSearchVO.setNiceFailUrl(failUrl);*/ model.addAttribute("userSearchVO", userSearchVO); //권한조회 AuthorManageVO authorManageVO = new AuthorManageVO(); authorManageVO.setFirstIndex(0); authorManageVO.setLastIndex(10); authorManageVO.setRecordCountPerPage(10); authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); model.addAttribute("authorList", authorManageVO.getAuthorManageList()); }catch(Exception ex) { ex.printStackTrace(); } return "cmm/uss/umt/EgovGnrlUserManage"; } // 이용정지회원 금일, 금년 잔액 합계 @RequestMapping(value = "/uss/umt/user/selectMberStopCashSumAjax.do") public ModelAndView DashBoardAdminLogAjax( @ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; MberManageVO mberStopCashSumInfo = null; try { mberStopCashSumInfo = mberManageService.selectMberStopCashSum(mberManageVO); } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("mberStopCashSumInfo", mberStopCashSumInfo); modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /** * * (관리자) 신규 사용자목록을 조회한다. (pageing) * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return cmm/uss/umt/EgovNewUserManage * @throws Exception */ @RequestMapping(value = "/uss/umt/user/EgovNewUserManage.do") public String selectNewUserManage(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model) 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("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("sbscrbDe"); userSearchVO.setSearchSortOrd("desc"); } //userSearchVO.setFirstIndex(0); List resultList = mberManageService.selectMberListNewUser(userSearchVO); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("resultList", resultList); return "cmm/uss/umt/EgovNewUserManage"; } /** * * (관리자) 탈퇴 사용자목록을 조회한다. (pageing) * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return cmm/uss/umt/EgovDelUserManage * @throws Exception */ @RequestMapping(value = "/uss/umt/user/EgovDelUserManage.do") public String selectDelUserManage(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model, HttpServletRequest request, 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.setMberSttus("N"); userSearchVO.setAdminYn("N"); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("expirePnttm"); userSearchVO.setSearchSortOrd("desc"); } List resultList = mberManageService.selectMberList(userSearchVO); model.addAttribute("userSearchVO", userSearchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); // 탈퇴사유별 인원수 List resultMberDelTypeGrpList = mberManageService.selectMberDelTypeGrpList(userSearchVO); model.addAttribute("resultMberDelTypeGrpList", resultMberDelTypeGrpList); return "cmm/uss/umt/EgovDelUserManage"; } /** * (관리자) 사용자등록화면으로 이동한다. * @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.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.getDepth()) { //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)); //사용목적/업종 - ITN024 vo.setCodeId("ITN024"); model.addAttribute("flowTypeCode", cmmUseService.selectCmmCodeDetail(vo)); //가입방법 - ITN025 vo.setCodeId("ITN025"); model.addAttribute("joinTypeCode", cmmUseService.selectCmmCodeDetail(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"; } MberManageVO VO = new MberManageVO(); if(null != request.getSession().getAttribute("userSearchVO")) { //세션체크 VO = ((MberManageVO)request.getSession().getAttribute("userSearchVO")) ; mberManageVO.setNiceNm(VO.getNiceNm()); //이름 mberManageVO.setSexdstnCode(VO.getSexdstnCode()); //성별 mberManageVO.setMoblphonNo(VO.getMoblphonNo()); //핸드폰번호 mberManageVO.setBirthDay(VO.getBirthDay()); //생년월일 session.removeAttribute("userSearchVO"); model.addAttribute("mberManageVO", mberManageVO); } 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("userSearchVO") UserDefaultVO userSearchVO, CateCode cateCode, HttpServletRequest request, @RequestParam Map commandMap, Model model) 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("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("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.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); model.addAttribute("authorList", authorManageVO.getAuthorManageList()); initRsa(request); LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); 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.getDepth()) { //1뎁스면 조회 안함 userOneDepth = tempLocVO.getId(); }else { //2뎁스면 userTwoDepth = tempLocVO.getId() ; userOneDepth = tempLocVO.getParent() ; } } } } model.addAttribute("userOneDepth", userOneDepth); model.addAttribute("userTwoDepth", userTwoDepth); model.addAttribute("orgHiddenList", orgHiddenList); //카테고리 미리만들기 selectbox 미리 만들기 List cateCodeList = cmmnDetailCodeManageService.selectCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); return "cmm/uss/umt/EgovUserSelectUpdt"; } // 회원 조회 @RequestMapping(value="/uss/umt/user/EgovGnrlselectedUserAjax.do") public ModelAndView addrRecvListAjax(@ModelAttribute MberManageVO reqMberManageVO , HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; boolean isExist = true; String msg = ""; try { MberManageVO mberManageVO = new MberManageVO(); //회원정보 불러오기 mberManageVO = mberManageService.selectMber(reqMberManageVO.getMberId()); if (null == mberManageVO) { isExist = false; } } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("isExist", isExist); modelAndView.addObject("msg", msg); return modelAndView; } /** * 사용자정보 수정을 위해 사용자정보를 상세조회한다. * @param selectedUserId -> uniqId 상세조회대상 사용자아이디 * @param userSearchVO 검색조건 * @return cmm/uss/umt/EgovGnrlUserSelectUpdt * @param model 화면모델 * @throws Exception */ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserView.do") public String selectedUserView(@ModelAttribute MberManageVO reqMberManageVO, HttpServletRequest request, Model model) throws Exception { /*public String selectedUserView(@RequestParam(value="selectedUserId", required =false, defaultValue="") String uniqId, HttpServletRequest request, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes , Model model, HttpSession session) throws Exception {*/ MberManageVO mberManageVO = new MberManageVO(); //회원정보 불러오기 mberManageVO = mberManageService.selectMber(reqMberManageVO.getMberId()); //스팸 필터링 예외처리 여부 값 - (온: Y, 오프 : N) 온 일때 스미싱의심 예외 되도록 적용 String exceptSpamYn = mberManageVO.getExceptSpamYn(); model.addAttribute("exceptSpamYn", exceptSpamYn); // 법인폰 알림여부 UserManageVO userManageVO = new UserManageVO(); userManageVO.setMberId(reqMberManageVO.getMberId()); userManageVO = userManageService.selectAdminSmsNoticeYn(userManageVO); mberManageVO.setAdminSmsNoticeYn(userManageVO.getAdminSmsNoticeYn()); mberManageVO.setPrePaymentYn(userManageVO.getPrePaymentYn()); mberManageVO.setAutoCash(userManageVO.getAutoCash()); mberManageVO.setBlineCode(userManageVO.getBlineCode()); mberManageVO.setRecommendId(userManageVO.getRecommendId()); String userId = mberManageVO.getMberId(); UserLogVO userLogVO = new UserLogVO(); userLogVO.setLoginId(userId); String mberSttus = mberManageVO.getMberSttus(); if(mberSttus.equals("B")) { MberManageVO resultSpamMberInfo = mberManageService.selectSpamMemberInfo(mberManageVO); model.addAttribute("resultSpamMberInfo", resultSpamMberInfo); } UserManageVO smishingTmpVO = new UserManageVO(); smishingTmpVO.setMberId(userId); UserManageVO smishingUserVO = userManageService.selectSmishingYnUserInfo(smishingTmpVO); model.addAttribute("smishingUserVO", smishingUserVO); //회원 로그인 로그 기록 조회하기 userLogVO.setFirstIndex(0); List userLogList = userLogService.selectLoginLogId(userLogVO); model.addAttribute("userLogList",userLogList); //회원 메모 기록 조회하기 List memoList = mberManageService.selectMberMemo(mberManageVO); model.addAttribute("memoList", memoList); //현월 총 발송건수 String msgMonthSum = mjonMsgDataService.selectMsgSentSumData(userId); Calendar aCalendar = Calendar.getInstance(); int nowMonth = aCalendar.get(Calendar.MONTH) + 1; model.addAttribute("month", Integer.toString(nowMonth)); model.addAttribute("msgMonthSum", msgMonthSum); //총 결제 금액 조회하기 String sumPayMoney = mjonPayService.selectSumPayMoney(userId); model.addAttribute("sumPayMoney", sumPayMoney); //연간 결제 횟수 String oneYearPayCnt = mjonPayService.selectOneYearPayCnt(userId); model.addAttribute("oneYearPayCnt", oneYearPayCnt); //회원 캐시 및 포인트 조회하기 Double userMoney = 0.0; String userPoint = "0"; String money = "0"; MjonMsgVO mjonMsgVO = new MjonMsgVO(); mjonMsgVO.setUserId(userId); //보유캐시 정보 조회하기 money = mjonMsgDataService.selectBeforeCashData(mjonMsgVO); if(money != null) { userMoney = Double.parseDouble(money); } //보유 포인트 정보 불러오기 userPoint = mjonMsgDataService.selectBeforePointData(mjonMsgVO); model.addAttribute("userMoney", userMoney); model.addAttribute("userPoint", userPoint); //발신번호 리스트 조회하기 MjPhoneMemberVO phoneMemberVO = new MjPhoneMemberVO(); phoneMemberVO.setUserId(userId); phoneMemberVO.setFirstIndex(0); List sendNumberList = mjonMsgService.selectSendNumberList(phoneMemberVO); MJUtil mjUtil = new MJUtil(); for(int i=0; i < sendNumberList.size(); i++) { String phoneNumber = mjUtil.addDash(sendNumberList.get(i).getPhoneNumber()); sendNumberList.get(i).setPhoneNumber(phoneNumber); } int countNum = sendNumberList.size() > 0 ? sendNumberList.get(0).getTotCnt() : 0; model.addAttribute("countNum", countNum); model.addAttribute("sendNumberList", sendNumberList); //문자발송 단가 조회하기 //1.시스템 기본 단가 정보 조회하기 JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); model.addAttribute("sysShortPrice", sysJoinSetVO.getShortPrice()); model.addAttribute("sysLongPrice", sysJoinSetVO.getLongPrice()); model.addAttribute("sysPicturePrice", sysJoinSetVO.getPicturePrice()); model.addAttribute("sysPicture2Price", sysJoinSetVO.getPicture2Price()); model.addAttribute("sysPicture3Price", sysJoinSetVO.getPicture3Price()); model.addAttribute("sysPicture3Price", sysJoinSetVO.getPicture3Price()); model.addAttribute("sysKakaoAtPrice", sysJoinSetVO.getKakaoAtPrice()); // 등급제 단가 추출 => 시스템 단가에 적용 sysJoinSetVO = mberGrdService.selectMberGrdDefaultInfo(sysJoinSetVO, userId); //2.사용자 개인단가 정보가 0이 아니면 개인단가 사용, 없으면 시스템 기본 단가 사용 Float shortPrice = mberManageVO.getShortPrice(); Float longPrice = mberManageVO.getLongPrice(); Float picturePrice = mberManageVO.getPicturePrice(); Float picture2Price = mberManageVO.getPicture2Price(); Float picture3Price = mberManageVO.getPicture3Price(); Float kakaoAtPrice = mberManageVO.getKakaoAtPrice(); Float faxPrice = mberManageVO.getFaxPrice(); System.out.println("mberManageVO.getFaxPrice() : " + mberManageVO.getFaxPrice()); if(shortPrice < 1 || longPrice < 1 || picturePrice < 1) { shortPrice = sysJoinSetVO.getShortPrice(); longPrice = sysJoinSetVO.getLongPrice(); picturePrice = sysJoinSetVO.getPicturePrice(); picture2Price = sysJoinSetVO.getPicture2Price(); picture3Price = sysJoinSetVO.getPicture3Price(); } if(kakaoAtPrice < 1) { kakaoAtPrice = sysJoinSetVO.getKakaoAtPrice(); } if(faxPrice < 1) { faxPrice = sysJoinSetVO.getFaxPrice(); } model.addAttribute("shortPrice", shortPrice); model.addAttribute("longPrice", longPrice); model.addAttribute("picturePrice", picturePrice); model.addAttribute("picture2Price", picture2Price); model.addAttribute("picture3Price", picture3Price); model.addAttribute("kakaoAtPrice", kakaoAtPrice); model.addAttribute("faxPrice", faxPrice); model.addAttribute("sysJoinSetVO", sysJoinSetVO); //포인트 교환 내역 조회하기 MjonPayVO mjonPayVO = new MjonPayVO(); mjonPayVO.setUserId(userId); //최근 5개만 불러오도록 페이징 처리함 PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonPayVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonPayVO.getPageUnit()); paginationInfo.setPageSize(mjonPayVO.getPageSize()); mjonPayVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonPayVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonPayVO.setRecordCountPerPage(5); if("".equals(mjonPayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonPayVO.setSearchSortCnd("pointUseId"); mjonPayVO.setSearchSortOrd("desc"); } //포인트 교환 내역 조회 List pointUseList = mjonPayService.selectPointUseList(mjonPayVO); model.addAttribute("pointUseList", pointUseList); //KISA 신고내역 조회하기 KisaVO kisaVO = new KisaVO(); kisaVO.setMberId(userId); List kisaList = kisaService.selectKisaListMberId(kisaVO); model.addAttribute("kisaList", kisaList); //환불요청 내역 조회하기 ComDefaultCodeVO comDefaultCodeVO = new ComDefaultCodeVO(); //환불요청 코드 조회 comDefaultCodeVO.setCodeId("ITN041"); List codeResult = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("refundStatuscode", codeResult); RefundVO refundVO = new RefundVO(); refundVO.setMberId(userId); List refundList = refundService.selectRefundListAllById(refundVO); model.addAttribute("refundList", refundList); //double 지수표현 제거를 위해 BigDecimal 사용 List cashList = new ArrayList<>(); for(int i = 0 ; i < refundList.size() ; i++) { BigDecimal b2 = new BigDecimal(refundList.get(i).getRefundMoney()).setScale(2, RoundingMode.HALF_EVEN); cashList.add(b2); } model.addAttribute("cashList", cashList); //사용목적/업종 코드조회- ITN024 ComDefaultCodeVO vo = new ComDefaultCodeVO(); vo.setCodeId("ITN024"); model.addAttribute("flowTypeCode", cmmUseService.selectCmmCodeDetail(vo)); //최근 발송 문자 내용 불러오기 - 최근 3개 내역만 List mjonMsgSentList = mberManageService.selectMberMsgSentLatestListNew20240320(userId); model.addAttribute("mjonMsgSentList", mjonMsgSentList); //최근 발송 문자 내용 불러오기 - 최근 3개 내역만(에약) List mjonMsgSentList2 = mberManageService.selectMberMsgSentLatestList2(userId); model.addAttribute("mjonMsgSentList2", mjonMsgSentList2); //스팸 및 스미싱 문자 지연처리 문자 내용 불러오기(30분 지연처리된 문자 내역 불러오기) List mjonMsgDelaySentList = mberManageService.selectMberMsgDelaySentList(userId); model.addAttribute("mjonMsgDelaySentList", mjonMsgDelaySentList); model.addAttribute("mberManageVO", mberManageVO); { /** * 최근 알리톡/친구톡 전송 내역 * */ //최근 발송 문자 내용 불러오기 - 최근 3개 내역만 //List mjonKakaoATSentList = mjonKakaoATService.selectMberKakaoATSentLatestList(userId); //model.addAttribute("mjonKakaoATSentList", mjonKakaoATSentList); } { /** * 이벤트 회원 정보 불러오기 * * * */ String mberId = reqMberManageVO.getMberId(); MjonEventVO mjonEventVO = new MjonEventVO(); mjonEventVO.setMberId(mberId); //mjonEventVO.setEventStatus("Y"); MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo(mjonEventVO); model.addAttribute("eventMberInfo", eventMberInfo); long eventDiffDate = 0; boolean compareEndDate = false; if(eventMberInfo != null) { String eventEndDate = eventMberInfo.getEventEndDate(); /** * MJUtil.getCompareDate() * 현재 날짜와 파라미터 전달 날짜를 비교 * 전달날짜를 지난경우 False를 리턴함. * 현재날짜 이전 혹은 같은 날짜면 True를 리턴함. * * */ if(eventEndDate != null) { compareEndDate = MJUtil.getCompareDate(eventEndDate); if(!compareEndDate) {//이벤트 종료 일자가 지난 경우, 이벤트 상태가 종료아 아니면 종료 처리 시킴 if(!eventMberInfo.getEventStatus().equals("E")) { //이벤트 상태값을 종료로 변경한다. mjonEventVO.setEventInfoId(eventMberInfo.getEventInfoId()); mjonEventVO.setEventStatus("E"); mjonEventService.updateEventEndStatus(mjonEventVO); } }else {//이벤트 진행중이면 남은 날짜 계산해서 전달. /** * MJUtil.getDiffDateDay() * 현재 날짜와 파라미터 날짜 사이의 날짜 수를 계산해줌. * * */ eventDiffDate = MJUtil.getDiffDateDay(eventEndDate); } } } //남은 날짜값을 절대값으로 변경(음수로 나오기 때문) model.addAttribute("eventDiffDate", Math.abs(eventDiffDate)); model.addAttribute("compareEndDate", compareEndDate); } {// 맞춤제작 리스트 조회 //제작형태 코드 조회 comDefaultCodeVO.setCodeId("ITN030"); List customCode = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("customCode", customCode); //요청상태 코드 조회 comDefaultCodeVO.setCodeId("ITN040"); List compleatCode = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("compleatCode", compleatCode); MjonMsgCustomVO mjonMsgCustomVO = new MjonMsgCustomVO(); mjonMsgCustomVO.setUserId(userId); List customtList = mjonMsgCustomService.selectUserCustomtList(mjonMsgCustomVO); model.addAttribute("customtList", customtList); } {// 문자 타입별 최저/최고 단가 double minPriceS; double maxPriceS; double minPriceL; double maxPriceL; double minPriceP; double maxPriceP; double avgPriceS = 0.00; double avgPriceL = 0.00; double avgPriceP = 0.00; double kakaoAtCost = 0.00; double kakaoAtMargin = 0.00; double faxCost = 0.00; double faxMargin = 0.00; MjonMsgAgentStsVO mjonMsgAgentStsVO = new MjonMsgAgentStsVO(); mjonMsgAgentStsVO.setMsgType("S"); mjonMsgAgentStsVO = mjonMsgAgentStsService.selectMjonMsgAgentMinMaxInfo(mjonMsgAgentStsVO); minPriceS = mjonMsgAgentStsVO.getMinPrice(); maxPriceS = mjonMsgAgentStsVO.getMaxPrice(); mjonMsgAgentStsVO.setMsgType("L"); mjonMsgAgentStsVO = mjonMsgAgentStsService.selectMjonMsgAgentMinMaxInfo(mjonMsgAgentStsVO); minPriceL = mjonMsgAgentStsVO.getMinPrice(); maxPriceL = mjonMsgAgentStsVO.getMaxPrice(); mjonMsgAgentStsVO.setMsgType("P"); mjonMsgAgentStsVO = mjonMsgAgentStsService.selectMjonMsgAgentMinMaxInfo(mjonMsgAgentStsVO); minPriceP = mjonMsgAgentStsVO.getMinPrice(); maxPriceP = mjonMsgAgentStsVO.getMaxPrice(); List msgAvgPriceList = new ArrayList(); msgAvgPriceList = mjonMsgAgentStsService.selectMsgAvgPriceList(); for (MjonMsgAgentStsVO item : msgAvgPriceList) { if (item.getMsgType().equals("S")) { avgPriceS = Double.parseDouble(item.getAgentPrice()); } else if (item.getMsgType().equals("L")) { avgPriceL = Double.parseDouble(item.getAgentPrice()); } else if (item.getMsgType().equals("P")) { avgPriceP = Double.parseDouble(item.getAgentPrice()); } } // kakao 원가 kakaoAtCost = kakaoApiService.selectKakaoCost(); kakaoAtMargin = (1-(kakaoAtCost / kakaoAtPrice))*100; // fax 원가 SELECT faxCost = faxService.getFaxCost(); // fax 마직 계산 :: 1-원가/단가 faxMargin = (1-(faxCost / faxPrice))*100; model.addAttribute("minPriceS", minPriceS); model.addAttribute("maxPriceS", maxPriceS); model.addAttribute("minPriceL", minPriceL); model.addAttribute("maxPriceL", maxPriceL); model.addAttribute("minPriceP", minPriceP); model.addAttribute("maxPriceP", maxPriceP); model.addAttribute("avgPriceS", avgPriceS); model.addAttribute("avgPriceL", avgPriceL); model.addAttribute("avgPriceP", avgPriceP); model.addAttribute("kakaoAtCost", kakaoAtCost); model.addAttribute("kakaoAtMargin", kakaoAtMargin); model.addAttribute("faxCost", faxCost); model.addAttribute("faxMargin", faxMargin); } {//전용전송사 선택시 마진율 계산을 위한 데이터 조회 String hotLineAgentCode = mberManageVO.getHotlineAgentCode(); double agentPriceS = 0.00; //전송사 단문 발송 단가 double agentPriceL = 0.00; //전송사 장문 발송 단가 double agentPriceP = 0.00; //전송사 그림 발송 단가 double agentCostS = 0.00; //전송사 단문 발송 원가 double agentCostL = 0.00; //전송사 장문 발송 원가 double agentCostP = 0.00; //전송사 그림 발송 원가 String agentCodeNm = ""; if(!hotLineAgentCode.equals("00")) { //전용 전송사 발송 단가 조회 List resultAgentPriceList = mjonMsgAgentStsService.selectHotLineAgentPriceList(hotLineAgentCode); agentCodeNm = resultAgentPriceList.get(0).getAgentCodeNm(); for(MjonMsgAgentStsVO hotLineVO : resultAgentPriceList) { String msgType = hotLineVO.getMsgType(); if(msgType.equals("S")) { agentPriceS = Double.parseDouble(hotLineVO.getAgentPrice()); }else if(msgType.equals("L")) { agentPriceL = Double.parseDouble(hotLineVO.getAgentPrice()); }else { agentPriceP = Double.parseDouble(hotLineVO.getAgentPrice()); } } //전용 전송사 발송 단가 조회 MjonMsgAgentStsVO resultAgentCost = mjonMsgAgentStsService.selectHotLineAgentCost(hotLineAgentCode); agentCostS = resultAgentCost.getShortCost(); agentCostL = resultAgentCost.getLongCost(); agentCostP = resultAgentCost.getPictureCost(); model.addAttribute("agentPriceS", agentPriceS); model.addAttribute("agentPriceL", agentPriceL); model.addAttribute("agentPriceP", agentPriceP); model.addAttribute("agentCostS", agentCostS); model.addAttribute("agentCostL", agentCostL); model.addAttribute("agentCostP", agentCostP); model.addAttribute("agentCodeNm", agentCodeNm); } } {//첫결제 내역 정보 불러오기 MjonPayVO resultMjonFrstPayVO = mjonPayService.selectFrstPayInfoByUserId(userId); model.addAttribute("resultMjonFrstPayVO", resultMjonFrstPayVO); if(resultMjonFrstPayVO != null) { //첫결제 충전 포인트 정보 조회 MjonPayVO resultMjonFrstPointVO = mjonPayService.selectFrstPointInfoByUserId(resultMjonFrstPayVO); model.addAttribute("mjonFrstPointVO", resultMjonFrstPointVO); } } {//카카오 채널 및 알림톡 관련 내역 처리 //System.out.println("++++++++++++++++++++ serverName ::: "+request.getServerName()); //String serverName = request.getServerName(); //if(!serverName.equals("www.munjaon.co.kr")) { /* * 카카오 채널ID 정보 불러오기(채널 갯수) * */ System.out.println(reqMberManageVO.getMberId()); KakaoVO kakaoVO = new KakaoVO(); kakaoVO.setUserId(reqMberManageVO.getMberId()); List resultKakaoChannelIDList = kakaoApiService.selectKakaoProfileList(kakaoVO); int channelIdCnt = resultKakaoChannelIDList.size(); model.addAttribute("channelIdCnt", channelIdCnt); model.addAttribute("resultKakaoChannelIDList", resultKakaoChannelIDList); /* * 알림톡/친구톡 최근 발송내역 리스트 불러오기 */ KakaoVO sendKakaoVO = new KakaoVO(); //sendKakaoVO.setSearchCondition2("N");//예약건은 제외하기 sendKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 sendKakaoVO.setUserId(reqMberManageVO.getMberId()); // 문자발송 완료건은 모두 보이도록 처리 //kakaoVO.setMsgType("8"); sendKakaoVO.setSearchSortCnd("reqDate"); sendKakaoVO.setSearchSortOrd("desc"); sendKakaoVO.setFirstIndex(0); sendKakaoVO.setPageType("sand"); List kakaoResultList = new ArrayList(); kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO); model.addAttribute("kakaoResultList", kakaoResultList); /* * 알림톡/친구톡 예약발송 리스트 불러오기 */ KakaoVO reserveKakaoVO = new KakaoVO(); reserveKakaoVO.setReserveYn("Y"); //예약건만 조회 reserveKakaoVO.setSearchCondition2("Y");//예약건만 불러오기 reserveKakaoVO.setReserveCYn("N");//예약취소건은 제외하기 reserveKakaoVO.setUserId(reqMberManageVO.getMberId()); // 문자발송 완료건은 모두 보이도록 처리 //kakaoVO.setMsgType("8"); reserveKakaoVO.setSearchSortCnd("reqDate"); reserveKakaoVO.setSearchSortOrd("desc"); reserveKakaoVO.setFirstIndex(0); reserveKakaoVO.setPageType("sand"); List kakaoReserveList = new ArrayList(); kakaoReserveList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(reserveKakaoVO); model.addAttribute("kakaoReserveList", kakaoReserveList); /* * 알림톡 지연처리 알림톡 내용 불러오기(30분 지연처리된 알림톡 내역 불러오기) */ List kakaoATDelaySentList = mjonKakaoATService.selectKakaoATDelaySentList(reqMberManageVO.getMberId()); model.addAttribute("kakaoATDelaySentList", kakaoATDelaySentList); } {//팩스 발송 내역 리스트 불러오기 List faxSendListVO = faxService.selectFaxMainList(new FaxGroupDataVO(reqMberManageVO.getMberId())); model.addAttribute("faxSendListVO", faxSendListVO); } {//사용중인 전송사 정보 조회하기 - 사용자 전용 전송사 리스트 표시용 List hotlineMsgAgentList = mjonMsgAgentStsService.selectMsgAgentListByHotline(); model.addAttribute("hotlineMsgAgentList", hotlineMsgAgentList); } System.out.println("+++++++++++++++++++++++ prePaymentYn ::: "+mberManageVO.getPrePaymentYn()); return "cmm/uss/umt/EgovGnrlUserSelectUpdt"; } /** * 회원정보 팝업 이벤트 강제 종료 기능 * @param eventVO * @param model * @return modelAndView * @throws Exception * /kisaWeb/kisaWeb/updateKisaWarnMessageAjax.do */ @RequestMapping(value = {"/uss/umt/user/updateEventEndAjax.do"}) public ModelAndView updateEventEndAjax(MjonEventVO mjonEventVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId == null) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); return modelAndView; } //이벤트 강제 종료 처리 mjonEventVO.setEventEndDate(MJUtil.getRealTime()); mjonEventVO.setEventStatus("E"); //이벤트 강제 처리에 따른 회원 메모 추가 MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setMberId(mjonEventVO.getMberId()); mberManageVO.setFrstRegisterId(userId);//관리자 아이디 mberManageVO.setUniqId(mjonEventVO.getUniqId());//회원의 고유 아이디 mberManageVO.setMemoCn("이벤트 강제 종료 처리 사유 : " + mjonEventVO.getEventMemo()); //이벤트 강제종료 처리 및 회원 메모 입력 int resultCnt = mjonEventService.updateEventAdmClosedStatus(mjonEventVO, mberManageVO); if(resultCnt > 0) { modelAndView.addObject("message", "이벤트가 정상적으로 종료 되었습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "이벤트를 종료하는중 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 회원정보 팝업 이벤트 수정 기능 * @param eventVO * @param model * @return modelAndView * @throws Exception * /kisaWeb/kisaWeb/updateKisaWarnMessageAjax.do */ @RequestMapping(value = {"/uss/umt/user/updateEventEditAjax.do"}) public ModelAndView updateEventEditAjax(MjonEventVO mjonEventVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId == null) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); return modelAndView; } //이벤트 강제 종료 처리 - 이벤트 종료일자가 없으면 현재 시간 입력 //이벤트 수정시 시작일 및 종료일의 값을 넘겨주고 있음 if(mjonEventVO.getEventEndDate().equals("")) { mjonEventVO.setEventEndDate(MJUtil.getRealTime()); } mjonEventVO.setEventStatus("Y"); //이벤트 강제 처리에 따른 회원 메모 추가 MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setMberId(mjonEventVO.getMberId()); mberManageVO.setFrstRegisterId(userId);//관리자 아이디 mberManageVO.setUniqId(mjonEventVO.getUniqId());//회원의 고유 아이디 String memo = ""; memo = "첫결제 충전캐시 수정 : " + mjonEventVO.getEventRemainOriginCash() + "원 => " + mjonEventVO.getEventRemainCash() + "원으로 변경"; if (!mjonEventVO.getEventMemo().equals("")) { memo += ", 수정코멘트 : " + mjonEventVO.getEventMemo(); } mberManageVO.setMemoCn(memo); //이벤트 강제종료 처리 및 회원 메모 입력 int resultCnt = mjonEventService.updateEventAdmEdit(mjonEventVO, mberManageVO); if(resultCnt > 0) { modelAndView.addObject("message", "이벤트가 정상적으로 수정 되었습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "이벤트 수정중 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 회원정보 팝업 이벤트 정보 신규 추가 기능 * @param eventVO * @param model * @return modelAndView * @throws Exception * */ @RequestMapping(value = {"/uss/umt/user/insertEventAddAjax.do"}) public ModelAndView insertEventAddAjax(MjonEventVO mjonEventVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId == null) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); return modelAndView; } try { /** * 이벤트 컨텐츠 정보 불러오기 * 이벤트 게시글 제목 및 카테고리로 검색해서 불러온다. * * */ float nttId = 0; String bbsId = "BBSMSTR_000000000731"; //이벤트 게시판 번호 String nttSj = "[첫결제 이벤트] 첫 결제 시, 누구나 조건 없이 인생 최저가!"; BoardVO resultEvent = selectEventBoardInfo(bbsId, nttSj); //이벤트 현재 시간 및 2개월 뒤 시간 셋팅 String nowDate = MJUtil.getRealTime(); String eventEndDate = MJUtil.getAfterTimerMonth(2); mjonEventVO.setEventStartDate(nowDate); //이벤트 시작일자 설정 mjonEventVO.setEventEndDate(eventEndDate); //이벤트 종료일자 설정 mjonEventVO.setEventStatus("Y"); //이벤트 상태를 진행 중으로 변경 mjonEventVO.setEventPolicyYn("Y"); //정책 동의 mjonEventVO.setEventSmsYn("N"); //문자 수신 동의 mjonEventVO.setEventShortPrice("7.5"); //단문 단가 mjonEventVO.setEventLongPrice("32"); //장문 단가 mjonEventVO.setEventPicturePrice("59"); //그림1장 단가 mjonEventVO.setEventPicture2Price("67"); //그림2장 단가 mjonEventVO.setEventPicture3Price("70"); //그림3장 단가 mjonEventVO.setFrstRegisterId(userId); //등록처리하는 관리자 아이디 셋팅 if(resultEvent != null) {//이벤트 게시판의 이벤트 게시글 번호 셋팅 mjonEventVO.setEventNttId(Float.toString(resultEvent.getNttId())); mjonEventVO.setEventBbsId(resultEvent.getBbsId()); }else {//이벤트 게시글 정보가 없으면 0으로 셋팅. modelAndView.addObject("resultSts", "eventEnded"); return modelAndView; } //이벤트 회원정보 존재여부 확인 및 회원 정보 불러오기 MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo(mjonEventVO); if(eventMberInfo != null) { modelAndView.addObject("message", "등록된 이벤트 정보가 있어 추가할 수 없습니다."); modelAndView.addObject("result", "fail"); return modelAndView; } //이벤트 정보 신규 추가 처리 int resultCnt = mjonEventService.insertEventFrstInfoByAdm(mjonEventVO); if(resultCnt > 0) { modelAndView.addObject("message", "이벤트가 정상적으로 추가 되었습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "이벤트를 추가하는중 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { System.out.println("++++++++++++++++ insertEventAddAjax Controller Error !!! " + e); modelAndView.addObject("message", "이벤트를 추가하는중 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); return modelAndView; } return modelAndView; } //이벤트 게시글 정보 불러오기 함수 public BoardVO selectEventBoardInfo(String bbsId, String nttSj) throws Exception{ BoardVO boardVO = new BoardVO(); boardVO.setBbsId(bbsId); boardVO.setNttSj(nttSj); BoardVO resultEvent = mjonEventService.selectEventInfoByNttSj(boardVO); return resultEvent; } /** * 사용자정보 발송 문자내역 리스트 팝업 띄우기 * @param selectedUserId -> uniqId 상세조회대상 사용자아이디 * @param userSearchVO 검색조건 * @return cmm/uss/umt/EgovGnrlUserSelectUpdtPopup * @param model 화면모델 * @throws Exception */ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserMsgDataListAjax.do") public String EgovGnrlselectedUserMsgDataListAjax(@ModelAttribute MberManageVO reqMberManageVO, @ModelAttribute("searchVO") MjonMsgVO searchVO, HttpServletRequest request, Model model) throws Exception { searchVO.setUserId(reqMberManageVO.getMberId()); //회원정보 불러오기 MberManageVO mberManageVO = mberManageService.selectMber(reqMberManageVO.getMberId()); String mberSttus = mberManageVO.getMberSttus(); //이용자 상태값 저장 /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); paginationInfo.setPageSize(searchVO.getPageSize()); searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List searchVO.setSearchSortCnd("msgGroupId"); searchVO.setSearchSortOrd("desc"); } //3개월전 첫째날과 마지막 날짜 받아오기 if(StringUtil.isEmpty(searchVO.getNtceBgnde())) { searchVO.setNtceBgnde(StringUtil.getDate3MonthAgoFirstDay()); searchVO.setNtceEndde(StringUtil.getDateMonthLastDay()); if (searchVO.getReserveType().equals("R")) { searchVO.setNtceEndde(StringUtil.getDateMonthLastDay1YearAfter()); } } //searchVO 원본 문자 타입 및 파일 갯수 저장해 놓기 String msgType = searchVO.getMsgType(); String fileCnt = searchVO.getFileCnt(); String sendKind = searchVO.getSendKind(); //전체 리스트 불러오기 List resultList = new ArrayList(); searchVO.setMsgType(""); //resultList = mjonMsgService.selectUserMsgDataListByMbrId(searchVO); resultList = mjonMsgService.selectUserMsgDataListByMbrId2(searchVO); model.addAttribute("resultList", resultList); model.addAttribute("mberSttus", mberSttus); //이용자 상태값 전달 //종합 리스트 정보 불러오기 //단문 리스트 정보 불러오기 /*List resultSmsList = new ArrayList(); searchVO.setMsgType("4"); searchVO.setFileCnt(""); resultSmsList = mjonMsgService.selectUserMsgDataTotInfoListByMbrId(searchVO); model.addAttribute("resultSmsList", resultSmsList); //장문 리스트 정보 불러오기 List resultLmsList = new ArrayList(); searchVO.setMsgType("6"); searchVO.setFileCnt(""); resultLmsList = mjonMsgService.selectUserMsgDataTotInfoListByMbrId(searchVO); model.addAttribute("resultLmsList", resultLmsList); //그림 리스트 정보 불러오기 List resultMmsList = new ArrayList(); searchVO.setMsgType("6"); searchVO.setFileCnt("0"); resultMmsList = mjonMsgService.selectUserMsgDataTotInfoListByMbrId(searchVO); model.addAttribute("resultMmsList", resultMmsList); String msgGroupSCntSum = "0"; //정상수신 총 건수 합계 String totSPriceSum = "0"; //정상수신 총 금액 합계 String msgGroupFWCntSum = "0"; //실패대기 총 건수 합계 String totFWPriceSum = "0"; //실패대기 총 금액 합계 if(resultList.size() > 0) { msgGroupSCntSum = ((MjonMsgVO)resultList.get(0)).getMsgGroupSCntSum(); totSPriceSum = ((MjonMsgVO)resultList.get(0)).getTotSPriceSum(); msgGroupFWCntSum = ((MjonMsgVO)resultList.get(0)).getMsgGroupFWCntSum(); totFWPriceSum = ((MjonMsgVO)resultList.get(0)).getTotFWPriceSum(); } model.addAttribute("msgGroupSCntSum", msgGroupSCntSum); model.addAttribute("totSPriceSum", totSPriceSum); model.addAttribute("msgGroupFWCntSum", msgGroupFWCntSum); model.addAttribute("totFWPriceSum", totFWPriceSum); //단문 건수 및 금액 변수 처리 String msgSmsGroupSCntSum = "0"; //정상수신 총 건수 합계 String totSmsSPriceSum = "0"; //정상수신 총 금액 합계 String msgSmsGroupFWCntSum = "0"; //실패대기 총 건수 합계 String totSmsFWPriceSum = "0"; //실패대기 총 금액 합계 if(resultSmsList.size() > 0) { msgSmsGroupSCntSum = ((MjonMsgVO)resultSmsList.get(0)).getMsgGroupSCntSum(); totSmsSPriceSum = ((MjonMsgVO)resultSmsList.get(0)).getTotSPriceSum(); msgSmsGroupFWCntSum = ((MjonMsgVO)resultSmsList.get(0)).getMsgGroupFWCntSum(); totSmsFWPriceSum = ((MjonMsgVO)resultSmsList.get(0)).getTotFWPriceSum(); } model.addAttribute("msgSmsGroupSCntSum", msgSmsGroupSCntSum); model.addAttribute("totSmsSPriceSum", totSmsSPriceSum); model.addAttribute("msgSmsGroupFWCntSum", msgSmsGroupFWCntSum); model.addAttribute("totSmsFWPriceSum", totSmsFWPriceSum); //장문 건수 및 금액 변수 처리 String msgLmsGroupSCntSum = "0"; //정상수신 총 건수 합계 String totLmsSPriceSum = "0"; //정상수신 총 금액 합계 String msgLmsGroupFWCntSum = "0"; //실패대기 총 건수 합계 String totLmsFWPriceSum = "0"; //실패대기 총 금액 합계 if(resultLmsList.size() > 0) { msgLmsGroupSCntSum = ((MjonMsgVO)resultLmsList.get(0)).getMsgGroupSCntSum(); totLmsSPriceSum = ((MjonMsgVO)resultLmsList.get(0)).getTotSPriceSum(); msgLmsGroupFWCntSum = ((MjonMsgVO)resultLmsList.get(0)).getMsgGroupFWCntSum(); totLmsFWPriceSum = ((MjonMsgVO)resultLmsList.get(0)).getTotFWPriceSum(); } model.addAttribute("msgLmsGroupSCntSum", msgLmsGroupSCntSum); model.addAttribute("totLmsSPriceSum", totLmsSPriceSum); model.addAttribute("msgLmsGroupFWCntSum", msgLmsGroupFWCntSum); model.addAttribute("totLmsFWPriceSum", totLmsFWPriceSum); //그림 건수 및 금액 변수 처리 String msgMmsGroupSCntSum = "0"; //정상수신 총 건수 합계 String totMmsSPriceSum = "0"; //정상수신 총 금액 합계 String msgMmsGroupFWCntSum = "0"; //실패대기 총 건수 합계 String totMmsFWPriceSum = "0"; //실패대기 총 금액 합계 if(resultMmsList.size() > 0) { msgMmsGroupSCntSum = ((MjonMsgVO)resultMmsList.get(0)).getMsgGroupSCntSum(); totMmsSPriceSum = ((MjonMsgVO)resultMmsList.get(0)).getTotSPriceSum(); msgMmsGroupFWCntSum = ((MjonMsgVO)resultMmsList.get(0)).getMsgGroupFWCntSum(); totMmsFWPriceSum = ((MjonMsgVO)resultMmsList.get(0)).getTotFWPriceSum(); } model.addAttribute("msgMmsGroupSCntSum", msgMmsGroupSCntSum); model.addAttribute("totMmsSPriceSum", totMmsSPriceSum); model.addAttribute("msgMmsGroupFWCntSum", msgMmsGroupFWCntSum); model.addAttribute("totMmsFWPriceSum", totMmsFWPriceSum); */ List sendSttstList = new ArrayList(); searchVO.setSendKind(""); MjonMsgVO allSttstInfo = mjonMsgService.selectApiSttstList(searchVO); allSttstInfo.setSendKind(""); searchVO.setSendKind("H"); MjonMsgVO hompageSttstInfo = mjonMsgService.selectApiSttstList(searchVO); hompageSttstInfo.setSendKind("H"); searchVO.setSendKind("A"); MjonMsgVO apiSttstInfo = mjonMsgService.selectApiSttstList(searchVO); apiSttstInfo.setSendKind("A"); sendSttstList.add(allSttstInfo); sendSttstList.add(hompageSttstInfo); sendSttstList.add(apiSttstInfo); model.addAttribute("sendSttstList", sendSttstList); //searchVO 데이터 원복 시키기 searchVO.setMsgType(msgType); searchVO.setFileCnt(fileCnt); searchVO.setSendKind(sendKind); //문자발송 실패 결과 코드정보 리스트 불러오기 MjonMsgResultCodeVO mjonMsgResultCodeVO = new MjonMsgResultCodeVO(); List resultMsgCodeList = mjonMsgService.selectMsgResultCodeAllList(mjonMsgResultCodeVO); model.addAttribute("resultMsgCodeList", resultMsgCodeList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonMsgVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "cmm/uss/umt/EgovGnrlUserSelectMsgDataListPop"; } /** * @Method Name : EgovGnrlselectedUserKakaoDataListAjax * @작성일 : 2023. 3. 6. * @작성자 : 우영두 * @Method 설명 : 카카오 알림톡 사용자 발송 내역 팝업 호출 */ @RequestMapping("/uss/umt/user/kakaoat/EgovGnrlselectedUserKakaoDataListAjax.do") public String EgovGnrlselectedUserKakaoDataListAjax( @ModelAttribute("searchVO") KakaoVO searchVO , @ModelAttribute MberManageVO reqMberManageVO , HttpServletRequest request , Model model) throws Exception { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String id = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(id == "") { return "redirect:/uat/uia/EgovLoginUsr.do"; } try { String userId = reqMberManageVO.getMberId(); String reserveType = searchVO.getReserveType(); //회원정보 불러오기 MberManageVO mberManageVO = mberManageService.selectMber(reqMberManageVO.getMberId()); String mberSttus = mberManageVO.getMberSttus(); //이용자 상태값 저장 /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); paginationInfo.setPageSize(searchVO.getPageSize()); searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List searchVO.setSearchSortCnd("msgGroupId"); searchVO.setSearchSortOrd("desc"); } /* * 1년전 첫째날과 마지막 날짜 받아오기 * 예약 발송 내역의 경우 1년 후의 날짜로 종료일을 셋팅해준다. * */ if(StringUtil.isEmpty(searchVO.getNtceBgnde())) { searchVO.setNtceBgnde(StringUtil.getDate3MonthAgoFirstDay()); searchVO.setNtceEndde(StringUtil.getDateMonthLastDay()); if (searchVO.getReserveType().equals("R")) { searchVO.setNtceEndde(StringUtil.getDateMonthLastDay1YearAfter()); } } //전송 완료 불러오기 searchVO.setUserId(userId); searchVO.setSearchSortCnd("reqDate"); searchVO.setSearchSortOrd("desc"); //searchVO.setFirstIndex(0); List kakaoResultList = new ArrayList(); KakaoVO kakoStatisticResult = new KakaoVO(); if(reserveType.equals("D")) { //searchVO.setSearchCondition2("N");//예약건은 제외하기 searchVO.setReserveCYn("N");//예약취소건은 제외하기 //searchVO.setReserveYn("N"); // 문자발송 완료건은 모두 보이도록 처리 kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(searchVO); model.addAttribute("kakaoResultList", kakaoResultList); //카카오톡 발송 통계 정보 불러오기 kakoStatisticResult = mjonKakaoATService.selectMjonKakaoStatisticATData(searchVO); model.addAttribute("kakoStatisticResult", kakoStatisticResult); }else { searchVO.setReserveYn("Y"); //예약건만 조회 searchVO.setSearchCondition2("Y"); //예약건만 조회 searchVO.setReserveCYn("N");//예약취소건은 제외하기 // 문자발송 완료건은 모두 보이도록 처리 kakaoResultList = mjonKakaoATService.selectReserveMjonKakaoATGroupList(searchVO); model.addAttribute("kakaoResultList", kakaoResultList); //카카오톡 발송 통계 정보 불러오기 kakoStatisticResult = mjonKakaoATService.selectMjonKakaoStatisticATData(searchVO); model.addAttribute("kakoStatisticResult", kakoStatisticResult); } paginationInfo.setTotalRecordCount(kakaoResultList.size() > 0 ? ((KakaoVO)kakaoResultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); } catch (Exception e) { System.out.println("EgovGnrlselectedUserKakaoDataListAjax Controller Error !!! " + e); } return "cmm/uss/umt/kakao/EgovGnrlUserSelectKakaoDataListPop"; } /** * @methodName : EgovGnrlselectedUserFaxDataListAjax * @author : 이호영 * @date : 2023.04.11 * @description : 관리자 팩스리스트팝업 데이터 불러오기 * @param faxGroupDataVO * @param model * @return * @throws Exception */ @RequestMapping("/uss/umt/user/fax/EgovGnrlselectedUserFaxDataListAjax.do") public String EgovGnrlselectedUserFaxDataListAjax( @ModelAttribute("searchVO") FaxGroupDataVO faxGroupDataVO , Model model) throws Exception { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String id = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(id == "") { return "redirect:/uat/uia/EgovLoginUsr.do"; } Map faxSendListMap = userManageService.selectFaxSendList(faxGroupDataVO); // Map faxSendListMap = faxService.selectFaxSendList(faxGroupDataVO); // 전송내역 model.addAttribute("faxGroupListVO", faxSendListMap.get("faxGroupListVO")); model.addAttribute("searchKeyword", faxSendListMap.get("searchKeyword")); model.addAttribute("paginationInfo", faxSendListMap.get("paginationInfo")); model.addAttribute("faxPriceMap", faxSendListMap.get("faxPriceMap")); return "cmm/uss/umt/fax/EgovGnrlUserSelectFaxDataListPop"; } /** * @methodName : getExcelForFaxSendList * @author : 이호영 * @date : 2023.04.11 * @description : 관리자 팩스리스트팝업에서 엑셀 다운로드 * @param faxGroupDataVO * @throws Exception */ @RequestMapping(value= {"/uss/umt/user/fax/getExcelForFaxSendList.do"}) public void getExcelForFaxSendList( FaxGroupDataVO faxGroupDataVO) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); /* 목록을 가져 온다 */ faxGroupDataVO.setUserId(userId); faxService.getExcelForFaxSendList(faxGroupDataVO); } /** * @Method Name : EgovGnrlSelectedUserCashDataListAjax * @작성일 : 2022. 12. 5. * @작성자 : WYH * @Method 설명 : 보유 캐시 잔액 조회 */ @RequestMapping("/uss/umt/user/EgovGnrlSelectedUserCashDataListAjax.do") public String EgovGnrlSelectedUserCashDataListAjax( @ModelAttribute("searchVO") MjonPayVO mjonPayVO , @ModelAttribute MberManageVO reqMberManageVO , MjonMsgVO mjonMsgVO , HttpServletRequest request , Model model) throws Exception { String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; mjonPayVO.setUserId(reqMberManageVO.getMberId()); //검색 일자가 없는 경우 3개월전 1 ~ 마지막날짜로 셋팅 if(StringUtil.isEmpty(mjonMsgVO.getNtceBgnde())) { mjonPayVO.setStartDate(StringUtil.getDate3MonthAgoFirstDay()); mjonPayVO.setEndDate(StringUtil.getDateMonthLastDay()); }else { mjonPayVO.setStartDate(mjonMsgVO.getNtceBgnde()); mjonPayVO.setEndDate(mjonMsgVO.getNtceEndde()); } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonPayVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonPayVO.getPageUnit()); paginationInfo.setPageSize(mjonPayVO.getPageSize()); mjonPayVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonPayVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonPayVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(mjonPayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonPayVO.setSearchSortCnd("moid"); mjonPayVO.setSearchSortOrd("desc"); } List resultList = mjonPayService.selectMemberCashList(mjonPayVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonPayVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "cmm/uss/umt/EgovGnrlUserSelectCashDataListPop"; } /** * @Method Name : EgovGnrlSelectedUserCashDataDetailAjax * @작성일 : 2022. 12. 5. * @작성자 : WYH * @Method 설명 : 보유 케시 잔액 상세 */ @RequestMapping(value = {"/uss/umt/user/EgovGnrlSelectedUserCashDataDetailAjax.do"}) public String EgovGnrlSelectedUserCashDataDetailAjax( @ModelAttribute("searchVO") MjonPayVO searchVO , HttpServletRequest request , Model model) throws Exception { String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; MjonPayVO mjonPayVO = mjonPayService.selectCashVO(searchVO); model.addAttribute("mjonPayVO", mjonPayVO); model.addAttribute("searchVO", searchVO); return "cmm/uss/umt/EgovGnrlUserSelectCashDataDetailPop"; } /** * 사용자정보 결제내역 리스트 팝업 띄우기 * @param selectedUserId -> uniqId 상세조회대상 사용자아이디 * @param userSearchVO 검색조건 * @return cmm/uss/umt/EgovGnrlUserSelectUpdtPopup * @param model 화면모델 * @throws Exception */ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserPayDataListAjax.do") public String EgovGnrlselectedUserPayDataListAjax(@ModelAttribute("searchVO") MjonPayVO mjonPayVO, @ModelAttribute MberManageVO reqMberManageVO, MjonMsgVO mjonMsgVO, HttpServletRequest request, Model model) throws Exception { String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; mjonPayVO.setUserId(reqMberManageVO.getMberId()); //검색 일자가 없는 경우 3개월전 1 ~ 마지막날짜로 셋팅 if(StringUtil.isEmpty(mjonMsgVO.getNtceBgnde())) { mjonPayVO.setStartDate(StringUtil.getDate3MonthAgoFirstDay()); mjonPayVO.setEndDate(StringUtil.getDateMonthLastDay()); }else { mjonPayVO.setStartDate(mjonMsgVO.getNtceBgnde()); mjonPayVO.setEndDate(mjonMsgVO.getNtceEndde()); } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mjonPayVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mjonPayVO.getPageUnit()); paginationInfo.setPageSize(mjonPayVO.getPageSize()); mjonPayVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mjonPayVO.setLastIndex(paginationInfo.getLastRecordIndex()); mjonPayVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(mjonPayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mjonPayVO.setSearchSortCnd("moid"); mjonPayVO.setSearchSortOrd("desc"); } List resultList = mjonPayService.selectPayList(mjonPayVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonPayVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); { /** * 이벤트 회원 정보 불러오기 * * */ MjonEventVO mjonEventVO = new MjonEventVO(); mjonEventVO.setMberId(reqMberManageVO.getMberId()); //mjonEventVO.setEventStatus("Y"); MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo(mjonEventVO); model.addAttribute("eventMberInfo", eventMberInfo); } return "cmm/uss/umt/EgovGnrlUserSelectPayDataListPop"; } /** * 회원 결제 상세화면 * @param searchVO * @param model * @return "/uss/ion/pay/CashModify.do" * @throws Exception */ @RequestMapping(value = {"/uss/umt/user/EgovGnrlselectedUserPayDataDetailAjax.do"}) public String EgovGnrlselectedUserPayDataDetailAjax( @ModelAttribute("searchVO") MjonPayVO searchVO, HttpServletRequest request , Model model) throws Exception { String pattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; MjonPayVO mjonPayVO = new MjonPayVO(); if(null != searchVO.getMoid() && !"".equals(searchVO.getMoid())) { //수정 mjonPayVO = mjonPayService.selectPayVO(searchVO); } model.addAttribute("mjonPayVO", mjonPayVO); model.addAttribute("searchVO", searchVO); return "cmm/uss/umt/EgovGnrlUserSelectPayDataDetailPop"; } /** * 사용자정보 수정을 위해 팝업을 띄운다. * @param selectedUserId -> uniqId 상세조회대상 사용자아이디 * @param userSearchVO 검색조건 * @return cmm/uss/umt/EgovGnrlUserSelectUpdtPopup * @param model 화면모델 * @throws Exception */ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserViewPopup.do") public String EgovGnrlselectedUserViewPopup(@RequestParam(value="selectedUserId", required =false, defaultValue="") String uniqId, @RequestParam(value="modiType", required =false, defaultValue="") String modiType, HttpServletRequest request, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, @ModelAttribute("mberManageVO") MberManageVO mberManageVO, RedirectAttributes redirectAttributes , Model model, HttpSession session) throws Exception { mberManageVO.setUniqId(uniqId); String mberId = mberManageService.selectUniqIdToMberId(mberManageVO); mberManageVO = mberManageService.selectMber(mberId) ; model.addAttribute("userSearchVO", userSearchVO); model.addAttribute("mberManageVO", mberManageVO); if(mberManageVO == null){ redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.select")); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); return redirectUrlMaker.getRedirectUrl(); } ComDefaultCodeVO vo = new ComDefaultCodeVO(); //사용목적/업종 코드조회- ITN024 vo.setCodeId("ITN024"); model.addAttribute("flowTypeCode", cmmUseService.selectCmmCodeDetail(vo)); model.addAttribute("modiType",modiType); return "cmm/uss/umt/EgovGnrlUserSelectUpdtPopup"; } /* * 사용자 상태 변경하기 * 일반, 이용 정지, 탈퇴 * * */ //ㅁ //사유를 넣어 사용자 상태를 변경하는 경우 //step1.회원상태 변경 //step1-1-1.이용정지시 //step1-1-1-1.발신번호거부처리 //step1-1-1-2.스팸회원정보등록 //step1-1-1-3.이용정지IP등록 //step1-1-2.이용정지해제시 //step1-1-2-1.이용정지IP삭제 //step1-2.관리자 처리 히스토리 남기기 //step1-3.사용자 상태 변경 //step2.가상계좌 처리 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserMsttusAjax.do") public ModelAndView EgovGnrlUpdateUserMsttusAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); } try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); //수정하는 관리자 아이디 셋팅 mberManageVO.setMberSttusUpdusrId(userId); //수정할 회원 아이디 정보 String mberId = mberManageVO.getMberId(); //회원 정보 조회 MberManageVO resultMberVO = mberManageService.selectMber(mberId); if(resultMberVO == null) { modelAndView.addObject("message", "이용자 정보를 찾을 수 없습니다."); modelAndView.addObject("result", "fail"); } //회원 상태 변경하기 int resultCnt = 0; resultCnt = mberManageService.updateUserMsttus(mberManageVO); if(resultCnt > 0) { if(mberManageVO.getMberSttus().equals("B")) { //회원 이용정지를 시키는 경우 가상계좌도 함께 해지 시킨다. //가상계좌 보유 여부 체크 //대상 리스트 가져오기 VacsVactVO vacsVactVO = new VacsVactVO(); vacsVactVO.setMberId(mberId); List myBankList = vacsVactService.selectBankAccountByUserId(vacsVactVO); //내가 할당받은 전용계좌 리스트 받아오기 int vacsCnt = myBankList.size(); //가상계좌 해지 처리 if(vacsCnt > 0) { for(int i=0; i < vacsCnt; i++) { String acctNo = myBankList.get(i).getAcctNo(); VacsVactVO vacsVO = new VacsVactVO(); vacsVO.setMberId(mberId); //회원 아이디 //계좌 해지일자 생성 Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String closeDate = sdf.format(now); vacsVO.setCloseIl(closeDate); //해지일자 vacsVO.setAcctNo(acctNo); //해지계좌번호 //계좌 상태 셋팅 0: 미할당, 1:할당, 9: 해지 vacsVO.setAcctSt("9"); int blockCnt = vacsVactService.updateVacsAccountUsrBlock(vacsVO); } } } // 관리자 메모 String memo = ""; if(mberManageVO.getMberSttus().equals("Y")) { memo = "회원상태 변경 : 일반"; } else if(mberManageVO.getMberSttus().equals("B")) { memo = "회원상태 변경 : 이용정지"; } mberManageVO.setMberId(mberId); mberManageVO.setMemoCn(memo); mberManageVO.setFrstRegisterId(userId); mberManageService.insertMberMemo(mberManageVO); modelAndView.addObject("message", "이용자 상태를 수정하였습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "이용자 상태 수정에 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { modelAndView.addObject("message", "이용자 상태 수정에 오류가 발생하였습니다."); modelAndView.addObject("status", "fail"); } return modelAndView; } // 이용정지 사유 수정 @RequestMapping(value="/uss/umt/user/EgovGnrlUpdateUserMemoAjax.do") public ModelAndView EgovGnrlUpdateUserMemoAjax(@ModelAttribute MberManageVO mberManageVO , HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; try { // 이용정지 사유 수정 int resultCnt = 0; resultCnt = mberManageService.updateSpamMemberMemo(mberManageVO); if (resultCnt == 0) { isSuccess = false; msg = "업데이트 실패"; } } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 법인폰 알림여부 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserAdminSmsAjax.do") public ModelAndView EgovGnrlUpdateUserAdminSmsAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { userManageService.updateUserAdminSmsNoticeYn(userManageVO, ""); } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 스미싱의심 여부 변경 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserSmishingAjax.do") public ModelAndView EgovGnrlUpdateUserSmishingAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { userManageService.updateOneUserSmishingYn(userManageVO); } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 알림톡 스미싱의심 여부 변경 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do") public ModelAndView EgovGnrlUpdateUserAtSmishingAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { userManageService.updateOneUserAtSmishingYn(userManageVO); } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 스팸회원 여부 변경 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserSpamAjax.do") public ModelAndView EgovGnrlUpdateUserSpamAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { userManageService.updateUserSpamYn(userManageVO); } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // VIP 여부 변경 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserVIPAjax.do") public ModelAndView EgovGnrlUpdateUserVIPAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { userManageService.updateUserVIPYn(userManageVO, ""); } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 전용 전송사 변경 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserHotlineAgentCodeAjax.do") public ModelAndView EgovGnrlUpdateUserHotlineAgentCodeAjax(@ModelAttribute("userManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mberManageVO.setAdmUserId(userId); int result = mjonMsgAgentStsService.updateMberHotlineAgentCodeInfo(mberManageVO); if(result > 0) { isSuccess = true; msg = "전용 전송사 수정이 완료되었습니다."; }else { isSuccess = false; msg = "전용 전송사 수정에 오류가 발생하였습니다."; } } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 후불제 여부 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserPrePaymentYnAjax.do") public ModelAndView EgovGnrlUpdateUserPrePaymentYnAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { MberManageVO mberManageVO = mberManageService.selectMber(userManageVO.getMberId()); String taxbillAuto = mberManageVO.getTaxbillAuto(); if(taxbillAuto == null || taxbillAuto.equals("N")) { isSuccess = false; msg = "세금계산서 자동발행의 선택이 안되어 있습니다. 확인 부탁드리겠습니다."; modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } int payCnt = userManageService.selectPayCountByUser(userManageVO); if (payCnt > 0) { isSuccess = false; msg = "이미 결제한 내역이 있어, 후불제 변경이 불가합니다."; } else { userManageService.updateUserPrePaymentYn(userManageVO); } } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 후불제 월한도충전금 @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserAutoCashAjax.do") public ModelAndView EgovGnrlUpdateUserAutoCashAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isSuccess = true; String msg = ""; try { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { isSuccess = false; msg = "로그인이 필요합니다."; } else { userManageService.updateUserAutoCash(userManageVO); } } catch (Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /* * 사용자 상태 변경하기 * 일반, 이용 정지, 탈퇴 * * */ @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserSecessionMsttusAjax.do") public ModelAndView EgovGnrlUpdateUserSecessionMsttusAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); } try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); //수정하는 관리자 아이디 셋팅 mberManageVO.setMberSttusUpdusrId(userId); //수정할 회원 아이디 정보 String mberId = mberManageVO.getMberId(); //회원 정보 조회 MberManageVO resultMberVO = mberManageService.selectMber(mberId); if(resultMberVO == null) { modelAndView.addObject("message", "이용자 정보를 찾을 수 없습니다."); modelAndView.addObject("result", "fail"); } //회원 상태 변경하기 int resultCnt = 0; mberManageVO.setDeleteType("07"); //탈퇴사유 중 직접입력으로 타입 지정 resultCnt = mberManageService.updateUserSecessionMsttus(mberManageVO); if(resultCnt > 0) { // 관리자 메모 String memo = ""; memo = "회원상태 변경 : 탈퇴"; mberManageVO.setMberId(mberId); mberManageVO.setMemoCn(memo); mberManageVO.setFrstRegisterId(userId); mberManageService.insertMberMemo(mberManageVO); modelAndView.addObject("message", "이용자 탈퇴가 완료 되었습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "이용자 탈퇴에 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { modelAndView.addObject("message", "이용자 탈퇴에 오류가 발생하였습니다."); modelAndView.addObject("status", "fail"); } return modelAndView; } /* * 사용자 문자 발송 금액 변경해주기 * * */ @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserPriceAjax.do") public ModelAndView EgovGnrlUpdateUserPriceAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); } try { //1.시스템 기본 단가 정보 조회하기 JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); // 문자 => 수정하려는 단가가 시스템기본단가와 동일할경우 0으로 세팅 if (Float.compare(sysJoinSetVO.getShortPrice(), mberManageVO.getShortPrice()) == 0) { if (Float.compare(sysJoinSetVO.getLongPrice(), mberManageVO.getLongPrice()) == 0) { if (Float.compare(sysJoinSetVO.getPicturePrice(), mberManageVO.getPicturePrice()) == 0) { if (Float.compare(sysJoinSetVO.getPicture2Price(), mberManageVO.getPicture2Price()) == 0) { if (Float.compare(sysJoinSetVO.getPicture3Price(), mberManageVO.getPicture3Price()) == 0) { mberManageVO.setShortPrice(0); mberManageVO.setLongPrice(0); mberManageVO.setPicturePrice(0); mberManageVO.setPicture2Price(0); mberManageVO.setPicture3Price(0); } } } } } // 알림톡 => 수정하려는 단가가 시스템기본단가와 동일할경우 0으로 세팅 if (Float.compare(sysJoinSetVO.getKakaoAtPrice(), mberManageVO.getKakaoAtPrice()) == 0) { mberManageVO.setKakaoAtPrice(0); } int resultCnt = mberManageService.updateUserPrice(mberManageVO); if(resultCnt > 0) { modelAndView.addObject("message", "전송 금액을 수정하였습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "전송 금액을 수정에 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { modelAndView.addObject("message", "전송 금액을 수정에 오류가 발생하였습니다."); modelAndView.addObject("status", "fail"); } return modelAndView; } @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserFaxPriceAjax.do") public ModelAndView EgovGnrlUpdateUserFaxPriceAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); } try { int resultCnt = mberManageService.updateUserFaxPrice(mberManageVO); if(resultCnt > 0) { modelAndView.addObject("message", "전송 금액을 수정하였습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "전송 금액을 수정에 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { modelAndView.addObject("message", "전송 금액을 수정에 오류가 발생하였습니다."); modelAndView.addObject("status", "fail"); } return modelAndView; } /* * 사용자 문자 발송 금액 변경해주기 * * */ @RequestMapping("/uss/umt/user/EgovGnrlUpdateUserPwdAjax.do") public ModelAndView EgovGnrlUpdateUserPwdAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { modelAndView.addObject("message", "로그인이 필요합니다."); modelAndView.addObject("result", "loginFail"); } try { UserManageVO userManageVO = new UserManageVO(); userManageVO.setEmplyrId(mberManageVO.getMberId()); userManageVO.setEmplyrNm(mberManageVO.getMberNm()); userManageVO.setPassword(mberManageVO.getPassword()); //해당 정보의 유저가 있으면 UserManageVO checkUser = userManageService.selectUserPwByAdminAjax(userManageVO); if(checkUser != null) { //비밀번호 업데이트 userManageService.updateUserPWAjax(userManageVO); //변경 비밀번호 이메일 발송 EmailVO emailVO = new EmailVO(); emailVO.setSend_from("noreply@munjaon.co.kr"); emailVO.setSend_to(checkUser.getEmailAdres()); emailVO.setTitle("대량문자 발송 사이트 문자온 임시비밀번호 안내 메일입니다."); emailVO.setContents(mberManageVO.getPassword()); //변경 비밀번호 회원 이메일 주소로 발송해주기 String resultStr = userUpdtPasswordSendEmail(emailVO); //String resultStr = "success"; if(resultStr.equals("success")) { modelAndView.addObject("message", "비밀번호 변경 및 이메일 발송이 완료되었습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "비밀번호 변경에 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } }else { modelAndView.addObject("message", "비밀번호 변경에 오류가 발생하였습니다."); modelAndView.addObject("result", "fail"); } } catch (Exception e) { System.out.println("관리자 회원 비밀번호 변경시 오류 발생 !"); modelAndView.addObject("message", "문자전송 금액을 수정에 오류가 발생하였습니다."); modelAndView.addObject("status", "fail"); } return modelAndView; } public String userUpdtPasswordSendEmail(EmailVO mailSender) throws Exception{ String resultStr = "fail"; try { // 이메일 발송 내용 String contents = ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += "대량문자 발송 사이트 문자온 임시비밀번호 안내 메일 입니다."; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += ""; contents += "
"; contents += "
"; contents += "
"; contents += "

"; contents += "문자온 임시비밀번호 안내 메일입니다.

\"\""; contents += "
"; contents += "
"; contents += "

"; contents += "안녕하세요. 대량문자 발송 사이트 문자온입니다.
임시비밀번호는 아래와 같습니다.

"; contents += "

%password%

"; contents += "

문자온 서비스를 이용해 주셔서 감사합니다.

"; contents += "
"; contents += "

본 메일은 발신전용이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나 불편한 사항은 고객센터를 통해 문의하여 주시기 바랍니다.

"; contents += "

주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)
사업자 번호 : 653-87-00858 | 대표 : 유인식 | 통신판매등록번호 : 제 2021-다산-0422
문의전화 : 1551-8011 | E-mail : help@iten.co.kr

"; contents += "

Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.

"; contents += "
"; contents += "
"; contents += "
"; contents += "
"; contents += ""; contents += ""; contents += ""; String repContents = contents; //이메일 내용에 비밀번호 치환해주기 String password = mailSender.getContents(); repContents = repContents.replace("%password%", password); // 이메일로 보내기 SendMail sMail = new SendMail(); // 사용자 이메일 주소 mailSender.setSend_from(mailSender.getSend_from()); // 발송자 이메일 주소 mailSender.setSend_to(mailSender.getSend_to()); // 메일 제목 mailSender.setTitle(mailSender.getTitle()); // 메일 내용 mailSender.setContents(repContents); // 메일 발송하기 sMail.sendMail2(mailSender); // 발송 이력 저장 SendType 1:문자로 발송 2:이메일로 발송 SendLogVO sendLogVO = new SendLogVO(); sendLogVO.setSendType("2"); sendLogVO.setFrstSendInfo(mailSender.getSend_from());//이메일 발신자 정보 sendLogVO.setReceive(mailSender.getSend_to()); //수신자 정보 sendLogVO.setContents(repContents); mjonMsgDataService.insertSysMsgLog(sendLogVO); resultStr = "success"; } catch (Exception e) { System.out.println("관리자 임시비밀번호 변경 저장 후 이메일 발송 오류 !"); } return resultStr; } /* 사용자정보 업데이트 Ajax*/ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserUpdateUsrAjax.do") public ModelAndView EgovGnrlselectedUserUpdateUsrAjax(@ModelAttribute("mberManageVO") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); try { mberManageVO.setLastUpdusrId(user.getId()); mberManageService.updateMberAdmin(mberManageVO); modelAndView.addObject("message", "개인정보를 수정하였습니다."); modelAndView.addObject("result", "success"); } catch (Exception e) { modelAndView.addObject("status", "fail"); } return modelAndView; } /* 메모 insert Ajax*/ @RequestMapping("/uss/umt/user/EgovGnrlUserSelectUpdtViewMemoAjax.do") public ModelAndView EgovGnrlUserSelectUpdtViewMemoAjax(@ModelAttribute("memoForm") MberManageVO mberManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); try { mberManageVO.setFrstRegisterId(user.getId()); mberManageService.insertMberMemo(mberManageVO); modelAndView.addObject("message", "메모가 저장되었습니다."); modelAndView.addObject("result", "success"); } catch (Exception e) { modelAndView.addObject("status", "fail"); } return modelAndView; } /* 메모 갱신 Ajax*/ @RequestMapping("/uss/umt/user/EgovGnrlUserSelectUpdtViewMemoRefreshAjax.do") public ModelAndView EgovGnrlUserSelectUpdtViewMemoRefreshAjax(@ModelAttribute("memoForm") MberManageVO mberManageVO, ModelMap model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { //리스트에 메모 조회 List memoList = mberManageService.selectMberMemo(mberManageVO); //메모 model.addAttribute model.addAttribute("memoList", memoList); modelAndView.addObject("message", "리스트가 갱신되었습니다."); modelAndView.addObject("status", "success"); } catch (Exception e) { modelAndView.addObject("status", "fail"); } return modelAndView; } /* 메모 삭제 Ajax*/ @RequestMapping("/uss/umt/user/EgovGnrlUserSelectUpdtViewMemoDeleteAjax.do") public ModelAndView EgovGnrlUserSelectUpdtViewMemoDeleteAjax(@ModelAttribute("memoForm") MberManageVO mberManageVO, ModelMap model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); mberManageVO.setLastMemoUpdusrId(user.getId()); try { //update MEMO_YN 'N'처리 mberManageService.deleteMberMemo(mberManageVO); modelAndView.addObject("message", "메모가 삭제되었습니다."); modelAndView.addObject("status", "success"); } catch (Exception e) { modelAndView.addObject("status", "fail"); } return modelAndView; } /** * 관리자 정보 수정후 목록조회 화면으로 이동한다. * @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, UserDefaultVO userSearchVO, 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(); } //최고 관리자의 경우 관리자정보 변경시 비번 체크안함. LoginVO tempLoginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); /* tempLoginVO.setId(tempLoginVO.getId()); if(!"ROLE_ADMIN".equals(tempLoginVO.getAuthority())){ //관리자 아닌경우 Ajax String password = ""; try{ password = decryptRsa(privateKey, userManageVO.getRsaPasswd()); }catch(Exception e) { redirectAttributes.addFlashAttribute("message", "저장되지 않았습니다."); if(userManageVO.getGnrlUser().equals("N")){ RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+userManageVO.getUniqId()); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do"); return redirectUrlMaker.getRedirectUrl(); } LoginVO loginVO = new LoginVO(); loginVO.setId(userManageVO.getEmplyrId()); loginVO.setPassword(password); loginVO.setUserSe("USR"); loginVO.setStatusAll("Y"); //상태정보에 관계없이 모든 사용자 검색 LoginVO resultVO = loginService.actionLogin(loginVO); // 1. 일반 로그인 처리 if(resultVO.getId() ==null){ if(userManageVO.getGnrlUser().equals("N")){ //일반관리자가 자신의 정보수정시 수정페이지로딩 return "forward:/uss/umt/user/EgovUserSelectUpdtView.do?selectedId="+userManageVO.getUniqId(); } } }*/ // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } if("".equals(userManageVO.getEmplyrSttusCode()) || userManageVO.getEmplyrSttusCode() == null ) { userManageVO.setEmplyrSttusCode("P"); } //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); //최고관리자가 수정하고 리스트 화면으로 이동하면 최고관리자 권한만 리스트에 나오는 문제가 있어서 권한을 지우고 리턴해줌 userSearchVO.setAuthorCode(""); redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); 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("userSearchVO", userSearchVO); 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 checkedIdForDel update 아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/uss/umt/user/EgovUsersSmsNoticeUpdate.do * @throws Exception */ @RequestMapping("/uss/umt/user/EgovUsersSmsNoticeUpdate.do") public String updateUsersSmsNotice(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, 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.updateUserAdminSmsNoticeYn(userManageVO, checkedIdForUpt); redirectAttributes.addFlashAttribute("message", "법인폰알림 여부가 정상적으로 수정되었습니다."); if(userManageVO.getGnrlUser().equals("N")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do?pageIndex="+userManageVO.getPageIndex()); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do?pageIndex="+userManageVO.getPageIndex()); return redirectUrlMaker.getRedirectUrl(); } /** * 사용자의 법인폰알림 여부를 수정한 후 목록조회 화면으로 이동한다. * @param checkedIdForDel update 아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/uss/umt/user/EgovUsersSmsNoticeUpdate2.do * @throws Exception */ @RequestMapping("/uss/umt/user/EgovUsersSmsNoticeUpdate2.do") public String updateUsersSmsNotice2(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes, Model model) throws Exception { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } userManageService.updateUserAdminSmsNoticeYn(userManageVO, checkedIdForUpt); redirectAttributes.addFlashAttribute("message", "법인폰알림 여부가 정상적으로 수정되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/SendMsgList.do?pageIndex="+userManageVO.getPageIndex()); return redirectUrlMaker.getRedirectUrl(); } /** * 사용자의 법인폰알림 여부를 수정한 후 목록조회 화면으로 이동한다. * @param checkedIdForDel update 아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/uss/umt/user/EgovUsersSmsNoticeUpdate3.do * @throws Exception */ @RequestMapping("/uss/umt/user/EgovUsersSmsNoticeUpdate3.do") public String updateUsersSmsNotice3(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes, Model model) throws Exception { // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } userManageService.updateUserAdminSmsNoticeYn(userManageVO, checkedIdForUpt); redirectAttributes.addFlashAttribute("message", "법인폰알림 여부가 정상적으로 수정되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/msg/ReserveNumberList.do?pageIndex="+userManageVO.getPageIndex()); return redirectUrlMaker.getRedirectUrl(); } // 법인폰알림 업데이트 @RequestMapping(value = "/uss/umt/user/smsNoticeUpdateAjax.do") public ModelAndView smsNoticeUpdateAjax( @ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; // 로그인VO에서 사용자 정보 가져오기 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String frstRegisterId = loginVO == null ? "" : loginVO.getId(); try{ // 법인폰알림 업데이트 userManageService.updateUserAdminSmsNoticeYn(userManageVO, ""); } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /** * 사용자의 스미싱의심 여부를 수정한 후 목록조회 화면으로 이동한다. * @param checkedIdForDel update 아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/uss/umt/user/EgovUsersSmishingUpdate.do * @throws Exception */ @RequestMapping("/uss/umt/user/EgovUsersSmishingUpdate.do") public String updateUserSmishingYn(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, 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.updateUserSmishingYn(userManageVO, checkedIdForUpt); redirectAttributes.addFlashAttribute("message", "스미싱의심 여부가 정상적으로 수정되었습니다."); if(userManageVO.getGnrlUser().equals("N")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovUserManage.do?pageIndex=\"+userManageVO.getPageIndex()"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/umt/user/EgovGnrlUserManage.do?pageIndex="+userManageVO.getPageIndex()); 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인증으로 이전비밀번호 체크 //관리자 이전 비밀번호 변경 시 이전비밀번호 입력 없애기_이준호_220602 /*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 (newPassword.equals(newPassword2)) { isCorrectPassword = true; } else { isCorrectPassword = false; resultMsg = "fail.user.passwordUpdate2"; } 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 { redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); 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(); } /** * 업무사용자 암호 수정 화면 이동 * @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 { // 미인증 사용자에 대한 보안처리 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()){ //수퍼 관리자이고 사이트 아이디 없을경우 itn 으로 기본 세팅 mberConfigVO.setSiteId("itn"); siteManagerVO.setSiteId("itn"); }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/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 = new MberManageVO(); mberManageVO.setUniqId(uniqId); String mberId = mberManageService.selectUniqIdToMberId(mberManageVO); mberManageVO = mberManageService.selectMber(mberId); //생일/핸드폰번호/이메일 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) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } //자동완성 데이터 가져오기 @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) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return modelAndView; } /*nice체크 오프너로 이용*/ @RequestMapping("/uss/umt/user/niceCheckAjax.do") public String niceCheckWeb(HttpServletRequest request, @RequestParam Map commandMap, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, @ModelAttribute("mberManageVO") MberManageVO mberManageVO, ModelMap model , HttpSession session ) throws Exception { String niceMessage = niceCheck(request, session, mberManageVO).getNiceMessage(); System.out.println("niceMessage --- " + niceMessage) ; if("".equals(niceMessage)) { //정상의 경우 세션 생성 후 오프너 close /*UserVO tempVO = new UserVO(); // tempVO.setMblDn(damoEnc(userSearchVO.getMblDn(), request)); //DI암호화 //테스트라 주석 tempVO.setName(userSearchVO.getNiceNm());*/ MberManageVO tempVO = new MberManageVO(); tempVO.setNiceNm(mberManageVO.getNiceNm()); tempVO.setBirthDay(mberManageVO.getBirthDay()); tempVO.setMoblphonNo(mberManageVO.getMoblphonNo()); tempVO.setSexdstnCode(mberManageVO.getSexdstnCode()); request.getSession().setAttribute("userSearchVO", tempVO); } if(null != (String)session.getAttribute("PAGE_TYPE") && "SEND_AUTH_NUMBER".equals((String)session.getAttribute("PAGE_TYPE"))) { //발신인증경우 MberManageVO authSendMemberVO = new MberManageVO(); authSendMemberVO.setMoblphonNo(mberManageVO.getMoblphonNo()); model.addAttribute("authSendMemberVO", authSendMemberVO); return "web/cop/selfauth/niceCheckSendAuthAjax"; } return "web/cop/selfauth/niceCheckAjax"; } /** * 사용자정보 후보자 상세를 위해 후보자정보를 상세조회한다. * @param mberId 상세조회대상 사용자아이디 * @param * @return MjonCandidateVO * @param model 화면모델 * @throws Exception */ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserCondidateDetailPop.do") public String EgovGnrlselectedUserCondidateDetailPop(@ModelAttribute MberManageVO reqMberManageVO, HttpServletRequest request, Model model) throws Exception { //선거 후보자 정보 불러오기 MjonCandidateVO mjonCandidateVO = new MjonCandidateVO(); if(reqMberManageVO.getMberId() != ""){ mjonCandidateVO = mjonCandidateService.selectCandidateDataInfo(reqMberManageVO.getMberId()); //String cryptText = egovCryptoUtil.encrypt(plainText); if(mjonCandidateVO != null) { // 주민번호 복호화 하기 String regidentNo1 = egovCryptoUtil.decrypt(mjonCandidateVO.getRegidentNo1()); String regidentNo2 = egovCryptoUtil.decrypt(mjonCandidateVO.getRegidentNo2()); mjonCandidateVO.setRegidentNo1(regidentNo1); mjonCandidateVO.setRegidentNo2(regidentNo2); } } model.addAttribute("mjonCandidateVO", mjonCandidateVO); return "cmm/uss/umt/EgovGnrlUserSelectCondidateDetailPop"; } /** * 회원 그림문자 이미지 경로 및 파일 아이디 조회하기 * @param searchVO * @param model * @return "/uss/umt/user/selectMberAtchFileInfoAjax.do" * @throws Exception */ @RequestMapping(value = {"/uss/umt/user/selectMberMsgDetailAjax.do"}) public String selectMberMsgDetailAjax(@ModelAttribute("searchVO") MjonMsgSentVO mjonMsgSentVO, ModelMap model) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); //문자 상세보기 처리 MjonMsgSentVO resultMsgDetail = mjonMsgSentService.selectMsgSentDetailDataAjax(mjonMsgSentVO); if(resultMsgDetail.getFileCnt() != "0") { if(resultMsgDetail.getFilePath1() != null) { String filePathId1 = resultMsgDetail.getFilePath1().substring(resultMsgDetail.getFilePath1().lastIndexOf("/")+1); int idx = filePathId1.lastIndexOf("."); String fileId = filePathId1.substring(0, idx); MjonMsgSentVO info = mjonMsgSentService.selectFileInfo(fileId); model.addAttribute("atchFileId1", info.getAtchFileId()); model.addAttribute("fileSn1", info.getFileSn()); } if(resultMsgDetail.getFilePath2() != null) { String filePathId2 = resultMsgDetail.getFilePath2().substring(resultMsgDetail.getFilePath2().lastIndexOf("/")+1); int idx = filePathId2.lastIndexOf("."); String fileId = filePathId2.substring(0, idx); MjonMsgSentVO info = mjonMsgSentService.selectFileInfo(fileId); model.addAttribute("atchFileId2", info.getAtchFileId()); model.addAttribute("fileSn2", info.getFileSn()); } if(resultMsgDetail.getFilePath3() != null) { String filePathId3 = resultMsgDetail.getFilePath3().substring(resultMsgDetail.getFilePath3().lastIndexOf("/")+1); int idx = filePathId3.lastIndexOf("."); String fileId = filePathId3.substring(0, idx); MjonMsgSentVO info = mjonMsgSentService.selectFileInfo(fileId); model.addAttribute("atchFileId3", info.getAtchFileId()); model.addAttribute("fileSn3", info.getFileSn()); } } model.addAttribute("resultMsgDetail", resultMsgDetail); return "cmm/uss/umt/EgovGnrUserSelectMsgSentDetailPopAjax"; } /** * 회원 이용정지 사유 조회하기 * @param searchVO * @param model * @return "/uss/umt/user/uss/umt/user/EgovGnrlselectedUserView.do.do" * @throws Exception */ @RequestMapping(value = {"/uss/umt/user/selectMberSpamBlockMemoDetailAjax.do"}) public String selectMberSpamBlockMemoDetailAjax(MberManageVO mberManageVO, ModelMap model) throws Exception{ try { //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); //스팸정지 회원 정보 조회하기 MberManageVO resultSpamMberInfo = mberManageService.selectSpamMemberInfo(mberManageVO); MjonMsgSentVO mjonMsgSentVO = new MjonMsgSentVO(); MjonMsgSentVO resultMsgDetail = new MjonMsgSentVO(); //스팸정지를 문자내용 문제로 정지시킨경우 문자 내용 정보 불러오기 if(resultSpamMberInfo.getMsgGroupId() != null) { mjonMsgSentVO.setUserId(mberManageVO.getMberId()); mjonMsgSentVO.setMsgGroupId(resultSpamMberInfo.getMsgGroupId()); //문자 상세보기 처리 resultMsgDetail = mjonMsgSentService.selectMsgSentDetailDataAjax(mjonMsgSentVO); //그림 문자인 경우 그림 이미지 불러오기 if(resultMsgDetail != null && resultMsgDetail.getFileCnt() != "0") { if(resultMsgDetail.getFilePath1() != null) { String filePathId1 = resultMsgDetail.getFilePath1().substring(resultMsgDetail.getFilePath1().lastIndexOf("/")+1); int idx = filePathId1.lastIndexOf("."); String fileId = filePathId1.substring(0, idx); MjonMsgSentVO info = mjonMsgSentService.selectFileInfo(fileId); model.addAttribute("atchFileId1", info.getAtchFileId()); model.addAttribute("fileSn1", info.getFileSn()); } if(resultMsgDetail.getFilePath2() != null) { String filePathId2 = resultMsgDetail.getFilePath2().substring(resultMsgDetail.getFilePath2().lastIndexOf("/")+1); int idx = filePathId2.lastIndexOf("."); String fileId = filePathId2.substring(0, idx); MjonMsgSentVO info = mjonMsgSentService.selectFileInfo(fileId); model.addAttribute("atchFileId2", info.getAtchFileId()); model.addAttribute("fileSn2", info.getFileSn()); } if(resultMsgDetail.getFilePath3() != null) { String filePathId3 = resultMsgDetail.getFilePath3().substring(resultMsgDetail.getFilePath3().lastIndexOf("/")+1); int idx = filePathId3.lastIndexOf("."); String fileId = filePathId3.substring(0, idx); MjonMsgSentVO info = mjonMsgSentService.selectFileInfo(fileId); model.addAttribute("atchFileId3", info.getAtchFileId()); model.addAttribute("fileSn3", info.getFileSn()); } } } model.addAttribute("resultSpamMberInfo", resultSpamMberInfo); model.addAttribute("resultMsgDetail", resultMsgDetail); } catch (Exception e) { System.out.println("이용자 정지 사유 정보 불러오기 오류 : Controller"); } return "cmm/uss/umt/EgovGnrUserSelectSpamBlockDetailPopAjax"; } /** * 회원 스팸회원 처리 * @param searchVO * @param model * @return "/uss/umt/user/updateMberSttusBlockAjax" * @throws Exception */ //ㅁ //자동으로 사용자 상태를 변경하는 경우 //step1.회원상태 변경 //step1-1-1.이용정지시 //step1-1-1-1.발신번호거부처리 //step1-1-1-2.스팸회원정보등록 //step1-1-1-3.이용정지IP등록 //step1-1-2.이용정지해제시 //step1-1-2-1.이용정지IP삭제 //step1-2.관리자 처리 히스토리 남기기 //step1-3.사용자 상태 변경 //step2.가상계좌 처리 @RequestMapping(value = {"/uss/umt/user/updateMberSttusBlockAjax.do"}) public ModelAndView updateMberSttusBlockAjax(@ModelAttribute("searchVO") MberManageVO mberManageVO, Model model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mberManageVO.setMberSttusUpdusrId(userId); //회원테이블 상태 수정자 ID mberManageVO.setLastUpdusrId(userId); // 문자온 전화번호 테이블 상태 수정자 ID mberManageVO.setPhmType("03"); //전화번호 타입 03(거부) 처리 mberManageVO.setMberSttus("B"); //차단처리 mberManageService.updateMberSttusBlockAjax(mberManageVO); //가상계좌 보유 여부 체크 //대상 리스트 가져오기 VacsVactVO vacsVactVO = new VacsVactVO(); String mberId = mberManageVO.getMberId(); //이용정지 할 회원 아이디 vacsVactVO.setMberId(mberId); List myBankList = vacsVactService.selectBankAccountByUserId(vacsVactVO); //내가 할당받은 전용계좌 리스트 받아오기 int vacsCnt = myBankList.size(); //가상계좌 해지 처리 if(vacsCnt > 0) { for(int i=0; i < vacsCnt; i++) { String acctNo = myBankList.get(i).getAcctNo(); VacsVactVO vacsVO = new VacsVactVO(); vacsVO.setMberId(mberId); //회원 아이디 //계좌 해지일자 생성 Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String closeDate = sdf.format(now); vacsVO.setCloseIl(closeDate); //해지일자 vacsVO.setAcctNo(acctNo); //해지계좌번호 //계좌 상태 셋팅 0: 미할당, 1:할당, 9: 해지 vacsVO.setAcctSt("9"); int resultCnt = vacsVactService.updateVacsAccountUsrBlock(vacsVO); } } modelAndView.addObject("message", "차단처리가 완료되었습니다."); modelAndView.addObject("result", "success"); }catch(Exception e) { modelAndView.addObject("message", "차단처리에 실패했습니다."); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 회원 금지어 예외 처리 수정 * @param searchVO * @param model * @return "/uss/umt/user/updateMberExceptSpamYnAjax.do" * @throws Exception */ @RequestMapping(value = {"/uss/umt/user/updateMberExceptSpamYnAjax.do"}) public ModelAndView updateMberExceptSpamYnAjax(@ModelAttribute("searchVO") MberManageVO mberManageVO, Model model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mberManageVO.setMberSttusUpdusrId(userId); //회원테이블 상태 수정자 ID mberManageVO.setLastUpdusrId(userId); // 문자온 전화번호 테이블 상태 수정자 ID System.out.println(mberManageVO.getExceptSpamYn()); System.out.println(mberManageVO.getMberId()); int result = mberManageService.updateMberExceptSpamYn(mberManageVO); if(result > 0) { modelAndView.addObject("message", "금지어 예외 수정이 완료되었습니다."); modelAndView.addObject("result", "success"); }else { modelAndView.addObject("message", "금지어 예외 수정이 완료되지 못하였습니다."); modelAndView.addObject("result", "fail"); } }catch(Exception e) { modelAndView.addObject("message", "차단처리에 실패했습니다."); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 회원 스팸회원 체크 * @param searchVO * @param model * @return "/uss/umt/user/selectMberSttusAjax" * @throws Exception */ @RequestMapping(value = {"/uss/umt/user/selectMberSttusAjax.do"}) public ModelAndView selectMberSttusAjax(@RequestParam("mberId") String mberId, Model model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { MberManageVO mberManageVO = mberManageService.selectMber(mberId); modelAndView.addObject("message", "조회 완료되었습니다."); modelAndView.addObject("result", mberManageVO.getMberSttus()); }catch(Exception e) { modelAndView.addObject("message", "조회에 실패했습니다."); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * * (관리자) 이용정지회원 주소록 요청 목록(pageing) * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return cmm/uss/umt/EgovNewUserManage * @throws Exception */ @RequestMapping(value = "/uss/umt/user/selectRequestAddrList.do") public String selectRequestAddrList(@ModelAttribute("searchVO") MberManageVO mberManageVO, ModelMap model) throws Exception { if(mberManageVO.getPageUnit() != 10) { mberManageVO.setPageUnit(mberManageVO.getPageUnit()); } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mberManageVO.getPageIndex()); paginationInfo.setRecordCountPerPage(mberManageVO.getPageUnit()); paginationInfo.setPageSize(mberManageVO.getPageSize()); mberManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); mberManageVO.setLastIndex(paginationInfo.getLastRecordIndex()); mberManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if("".equals(mberManageVO.getSearchSortCnd())){ //최초조회시 최신것 조회List mberManageVO.setSearchSortCnd("smiId"); mberManageVO.setSearchSortOrd("desc"); } List resultList = mberManageService.selectRequestAddrList(mberManageVO); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("resultList", resultList); return "cmm/uss/umt/EgovRequestAddrList"; } /** * 이용정지회원 주소록 전송 완료 처리 * @param searchVO * @param model * @return "/uss/umt/user/updateMberSttusYAjax" * @throws Exception */ @RequestMapping(value = {"/uss/umt/user/updateSendSttusYAjax.do"}) public ModelAndView updateSendSttusYAjax(@ModelAttribute MberManageVO mberManageVO, Model model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); mberManageVO.setSendId(userId); mberManageVO.setSendSttus("Y"); //완료 처리 mberManageService.updateSendSttusY(mberManageVO); modelAndView.addObject("message", "완료 처리되었습니다."); modelAndView.addObject("result", "success"); }catch(Exception e) { modelAndView.addObject("message", "완료 처리 실패했습니다."); modelAndView.addObject("result", "fail"); } return modelAndView; } //이용정지 회원 주소록 엑셀 다운로드 @RequestMapping("/uss/umt/user/spamMberAddrExcelDownload.do") public void spamMberAddrExcelDownload( AddrVO addrVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { addrVO.setRecordCountPerPage(100000); addrVO.setFirstIndex(0); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //모든항목 다운로드 String[] cellCheck = new String[8]; cellCheck[0] = "addrPhoneNo"; cellCheck[1] = "addrNm"; cellCheck[2] = "addrGrpNm"; cellCheck[3] = "addrComment"; cellCheck[4] = "addrInfo1"; cellCheck[5] = "addrInfo2"; cellCheck[6] = "addrInfo3"; cellCheck[7] = "addrInfo4"; // 메모리에 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 ="주소록"; String sheetTitle = ""; try{ addrVO.setSearchSortCnd("A.ADDR_ID"); addrVO.setSearchSortOrd("desc"); List addrList = addrService.selectAddrList(addrVO); { // row, cell 개수 순서대로 증가용 필드 int rowNumber = 0; int celNumber = 0; //화면 리스트 sheetTitle = "주소록" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(rowNumber++); cell = row.createCell(celNumber++); cell.setCellValue("번호"); cell.setCellStyle(style); //cell = row.createCell(celNumber++); //cell.setCellValue("휴대폰번호"); //cell.setCellStyle(style); for(String field : cellCheck) { cell = row.createCell(celNumber++); cell.setCellValue(addrVO.getHeaderName(field)); cell.setCellStyle(style); } for(int i=0; i < addrList.size(); i++){ row = sheet.createRow(rowNumber++); //줄추가 celNumber = 0; cell = row.createCell(celNumber++); cell.setCellStyle(style); cell.setCellValue(i+1); //번호 //cell = row.createCell(celNumber++); //cell.setCellStyle(style); //cell.setCellValue(((AddrVO)addrList.get(i)).getAddrPhoneNo()); // 휴대폰번호 for(String field : cellCheck) { cell = row.createCell(celNumber++); cell.setCellStyle(style); cell.setCellValue(((AddrVO)addrList.get(i)).getFieldValue(field)); } } } 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) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } /** * 사용자정보로그인 내역 리스트 팝업 띄우기 * @param selectedUserId -> uniqId 상세조회대상 사용자아이디 * @param userSearchVO 검색조건 * @return cmm/uss/umt/EgovGnrlUserSelectUpdtPopup * @param model 화면모델 * @throws Exception */ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserLoginDataListAjax.do") public String EgovGnrlselectedUserLoginDataListAjax(@ModelAttribute("searchVO") UserLogVO userLogVO, HttpServletRequest request, Model model) throws Exception { /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(userLogVO.getPageIndex()); paginationInfo.setRecordCountPerPage(userLogVO.getPageUnit()); paginationInfo.setPageSize(userLogVO.getPageSize()); userLogVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); userLogVO.setLastIndex(paginationInfo.getLastRecordIndex()); userLogVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); //전체 리스트 불러오기 //로그인 목록 List userLogList = userLogService.selectLoginLogId(userLogVO); model.addAttribute("resultList", userLogList); paginationInfo.setTotalRecordCount(userLogList.size() > 0 ? ((UserLogVO)userLogList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "cmm/uss/umt/EgovGnrlUserSelectLoginDataListPop"; } /** * 사용자정보 카카오 채널 등록 건 리스트 팝업 띄우기 * @param * @param * @return * @param model 화면모델 * @throws Exception */ @RequestMapping("/uss/umt/user/EgovGnrlselectedUserKakaoChListPopup.do") public String EgovGnrlselectedUserKakaoChListAjax(@ModelAttribute("searchVO") ChannelIDVO channelIDVO, HttpServletRequest request , ModelMap model) throws Exception { try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String id = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(id == "") { return "redirect:/uat/uia/EgovLoginUsr.do"; } if(channelIDVO.getPageUnit() != 10) { channelIDVO.setPageUnit(channelIDVO.getPageUnit()); } /** paging */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(channelIDVO.getPageIndex()); paginationInfo.setRecordCountPerPage(channelIDVO.getPageUnit()); paginationInfo.setPageSize(channelIDVO.getPageSize()); channelIDVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); channelIDVO.setLastIndex(paginationInfo.getLastRecordIndex()); channelIDVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(channelIDVO.getSearchSortCnd())){ //최초조회시 최신것 조회List channelIDVO.setSearchSortCnd("profileId"); channelIDVO.setSearchSortOrd("desc"); } //사용자 등록 발신프로필 정보 조회해오기 List resultChannelList = mjonKakaoATService.selectChannelIDList(channelIDVO); int totCnt = 0; paginationInfo.setTotalRecordCount(totCnt); if(resultChannelList.size() > 0) { totCnt = resultChannelList.get(0).getTotCnt(); } paginationInfo.setTotalRecordCount(totCnt); List resultApiProfileList = new ArrayList(); for(int i=0; i < resultChannelList.size(); i++) { KakaoVO kakaoProfileVO = new KakaoVO(); String senderKey = resultChannelList.get(i).getSenderKey(); String profileId = resultChannelList.get(i).getProfileId(); String deleteYn = resultChannelList.get(i).getDeleteYn(); String userId = resultChannelList.get(i).getUserId(); kakaoProfileVO.setSenderKey(senderKey); kakaoProfileVO.setProfileId(profileId); KakaoReturnVO tmpProfileVO = kakaoApiProfile.kakaoApiProfileList(kakaoProfileVO); ChannelIDVO returnChannelVO = new ChannelIDVO(); returnChannelVO.setSenderKey(tmpProfileVO.getSenderKey()); returnChannelVO.setUuid(tmpProfileVO.getUuid()); returnChannelVO.setName(tmpProfileVO.getName()); returnChannelVO.setStatus(tmpProfileVO.getStatus()); returnChannelVO.setProfileStatus(tmpProfileVO.getProfileStatus()); returnChannelVO.setCreatedAt(tmpProfileVO.getCreatedAt()); returnChannelVO.setModifiedAt(tmpProfileVO.getModifiedAt()); returnChannelVO.setDeleteYn(deleteYn); returnChannelVO.setUserId(userId); resultApiProfileList.add(returnChannelVO); } model.addAttribute("resultChannelList", resultApiProfileList); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("searchVO", channelIDVO); } catch (Exception e) { System.out.println("EgovGnrlselectedUserKakaoChListAjax Contrller Error ::: " + e); } return "cmm/uss/umt/EgovGnrlUserSelectKakaoChListPop"; } public MberManageVO niceCheck(HttpServletRequest request, HttpSession session, MberManageVO mberManageVO) { CPClient niceCheck = new CPClient(); String sEncodeData = requestReplace(request.getParameter("EncodeData"), "encodeData"); String sSiteCode = "BS933"; // NICE로부터 부여받은 사이트 코드 String sSitePassword = "2CU5kY9wpppk"; // NICE로부터 부여받은 사이트 패스워드 String sCipherTime = ""; // 복호화한 시간 String sRequestNumber = ""; // 요청 번호 String sResponseNumber = ""; // 인증 고유번호 String sAuthType = ""; // 인증 수단 String sName = ""; // 성명 String sDupInfo = ""; // 중복가입 확인값 (DI_64 byte) String sConnInfo = ""; // 연계정보 확인값 (CI_88 byte) String sBirthDate = ""; // 생년월일(YYYYMMDD) String sGender = ""; // 성별 String sNationalInfo = ""; // 내/외국인정보 (개발가이드 참조) String sMobileNo = ""; // 휴대폰번호 String sMobileCo = ""; // 통신사 String sMessage = ""; String sPlainData = ""; int iReturn = niceCheck.fnDecode(sSiteCode, sSitePassword, sEncodeData); if( iReturn == 0 ) { sPlainData = niceCheck.getPlainData(); sCipherTime = niceCheck.getCipherDateTime(); // 데이타를 추출합니다. java.util.HashMap mapresult = niceCheck.fnParse(sPlainData); sRequestNumber = (String)mapresult.get("REQ_SEQ"); sResponseNumber = (String)mapresult.get("RES_SEQ"); sAuthType = (String)mapresult.get("AUTH_TYPE"); sName = (String)mapresult.get("NAME"); //sName = (String)mapresult.get("UTF8_NAME"); //charset utf8 사용시 주석 해제 후 사용 sBirthDate = (String)mapresult.get("BIRTHDATE"); sGender = (String)mapresult.get("GENDER"); sNationalInfo = (String)mapresult.get("NATIONALINFO"); sDupInfo = (String)mapresult.get("DI"); sConnInfo = (String)mapresult.get("CI"); sMobileNo = (String)mapresult.get("MOBILE_NO"); sMobileCo = (String)mapresult.get("MOBILE_CO"); String session_sRequestNumber = (String)session.getAttribute("REQ_SEQ"); if(!sRequestNumber.equals(session_sRequestNumber)) { sMessage = "세션값 불일치 오류입니다."; sResponseNumber = ""; sAuthType = ""; } } else if( iReturn == -1) { sMessage = "복호화 시스템 오류입니다."; } else if( iReturn == -4) { sMessage = "복호화 처리 오류입니다."; } else if( iReturn == -5) { sMessage = "복호화 해쉬 오류입니다."; } else if( iReturn == -6) { sMessage = "복호화 데이터 오류입니다."; } else if( iReturn == -9) { sMessage = "입력 데이터 오류입니다."; } else if( iReturn == -12) { sMessage = "사이트 패스워드 오류입니다."; } else { sMessage = "알수 없는 에러 입니다. iReturn : " + iReturn; } try { mberManageVO.setNiceMessage(sMessage); mberManageVO.setNiceNm(sName); mberManageVO.setMblDn(sDupInfo); mberManageVO.setSexdstnCode(sGender); mberManageVO.setMoblphonNo(sMobileNo); mberManageVO.setBirthDay(sBirthDate); }catch(Exception e) { e.printStackTrace(); } return mberManageVO; } //나이스 인증 public String requestReplace (String paramValue, String gubun) { String result = ""; if (paramValue != null) { paramValue = paramValue.replaceAll("<", "<").replaceAll(">", ">"); paramValue = paramValue.replaceAll("\\*", ""); paramValue = paramValue.replaceAll("\\?", ""); paramValue = paramValue.replaceAll("\\[", ""); paramValue = paramValue.replaceAll("\\{", ""); paramValue = paramValue.replaceAll("\\(", ""); paramValue = paramValue.replaceAll("\\)", ""); paramValue = paramValue.replaceAll("\\^", ""); paramValue = paramValue.replaceAll("\\$", ""); paramValue = paramValue.replaceAll("'", ""); paramValue = paramValue.replaceAll("@", ""); paramValue = paramValue.replaceAll("%", ""); paramValue = paramValue.replaceAll(";", ""); paramValue = paramValue.replaceAll(":", ""); paramValue = paramValue.replaceAll("-", ""); paramValue = paramValue.replaceAll("#", ""); paramValue = paramValue.replaceAll("--", ""); paramValue = paramValue.replaceAll("-", ""); paramValue = paramValue.replaceAll(",", ""); if(gubun != "encodeData"){ paramValue = paramValue.replaceAll("\\+", ""); paramValue = paramValue.replaceAll("/", ""); paramValue = paramValue.replaceAll("=", ""); } result = paramValue; } return result; } public String damoEnc(String strDec, HttpServletRequest request) { //DI 암호화 System.out.println("-----damoEnc---request.getRequestURL().toString()-----------" + request.getRequestURL().toString()+"-----") ; String iniFilePath = "/usr/local/tomcat/damo/scpdb_agent.ini"; //실서버 if(request.getRequestURL().toString().contains("test.kofons.or.kr")){ //로컬 iniFilePath = "C:\\damo\\scpdb_agent.ini"; }else if(request.getRequestURL().toString().contains("219.240.88.15")) { //테스트 iniFilePath = "/usr/local/tomcat_kofons/damo/scpdb_agent.ini"; } System.out.println("iniFilePath --" + iniFilePath + "---"); ScpDbAgent agt = new ScpDbAgent(); String strEnc = ""; try { strEnc = agt.ScpEncB64( iniFilePath, "KEY1", strDec); }catch(Exception e) { } return strEnc ; } }