package itn.let.mjo.event.web; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.LoginVO; import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.cop.bbs.service.BoardVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.msgcampain.service.MjonCandidateService; import itn.let.mjo.msgcampain.service.MjonCandidateVO; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.pay.service.MjonVaMsgLogVO; import itn.let.mjo.payva.service.VacsVactService; import itn.let.mjo.payva.service.VacsVactVO; import itn.let.uss.umt.service.EgovMberManageService; import itn.let.uss.umt.service.MberManageVO; @Controller public class MjonEventController { @Resource(name = "MjonEventService") private MjonEventService mjonEventService; @Resource(name = "mberManageService") private EgovMberManageService mberManageService; @Resource(name = "mjonCandidateService") private MjonCandidateService mjonCandidateService; //전용계좌 서비스 @Resource(name = "vacsVactService") private VacsVactService vacsVactService; @Resource(name = "mjonPayService") private MjonPayService mjonPayService; @RequestMapping("/web/event/selectEventPopAjax.do") public String selectEventPopAjas(MjonEventVO mjonEventVO, ModelMap model ) throws Exception{ try { //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; model.addAttribute("loginVO", loginVO); if(loginVO != null) { System.out.println("+++++++++++++++++++++++ mberId ::: "+loginVO.getId()); } String nttSj = "[첫결제 이벤트] 첫 결제 시, 누구나 조건 없이 인생 최저가!"; BoardVO boardVO = new BoardVO(); boardVO.setBbsId("BBSMSTR_000000000731"); boardVO.setNttSj(nttSj); BoardVO resultEvent = mjonEventService.selectEventInfoByNttSj(boardVO); model.addAttribute("resultEvent", resultEvent); } catch (Exception e) { throw new Exception(e); } return "web/event/eventMsgFrstPop"; } /** * 이벤트 회원 정보 테이블에 기본 정보 입력해 주기. * 회원아이디, 회원이름, 이벤트 게시판 번호, 이벤트 게시글 번호, 회원 단가 정보, 이벤트 수신동의, 이벤트 유효 상태값(미진행 : N 으로 셋팅) * * */ @RequestMapping("/web/event/insertEventDefaultMberInfoAjax.do") public ModelAndView insertEventDefaultMberInfoAjax(MjonEventVO mjonEventVO) throws Exception{ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; if(loginVO == null) { modelAndView.addObject("resultSts", "loginFail"); return modelAndView; }else { /** * 이벤트 컨텐츠 정보 불러오기 * 이벤트 게시글 제목 및 카테고리로 검색해서 불러온다. * * */ float nttId = 0; String bbsId = "BBSMSTR_000000000731"; //이벤트 게시판 번호 String nttSj = "[첫결제 이벤트] 첫 결제 시, 누구나 조건 없이 인생 최저가!"; BoardVO resultEvent = selectEventBoardInfo(bbsId, nttSj); if(resultEvent != null) {//이벤트 게시판의 이벤트 게시글 번호 셋팅 mjonEventVO.setEventNttId(Float.toString(resultEvent.getNttId())); }else {//이벤트 게시글 정보가 없으면 0으로 셋팅. modelAndView.addObject("resultSts", "eventEnded"); return modelAndView; } //이벤트 회원 정보 조회 MjonEventVO eventMberInfo = selectEventMsgMberDefaultInfo(mjonEventVO, resultEvent.getNttId(), bbsId, loginVO.getId(), loginVO.getName()); int resultCnt = 0; if(eventMberInfo == null) {//등록된 회원정보가 없으면 정보 입력 mjonEventVO.setEventStatus("N"); resultCnt = mjonEventService.insertEventMsgMberDefaultInfo(mjonEventVO); }else {//등록된 회원정보가 있으면 화면 이동 및 메세지 처리 String status = eventMberInfo.getEventStatus(); if(status.equals("Y")) {//이벤트가 진행중인 경우 modelAndView.addObject("resultSts", "eventJoined"); }else if(status.equals("E")) {//이벤트가 종료된 경우 modelAndView.addObject("resultSts", "eventEnded"); }else {//이벤트 미진행인 경우 성공으로 결제페이지로 이동되도록 한다. modelAndView.addObject("resultSts", "success"); } return modelAndView; } modelAndView.addObject("resultSts", "success"); } return modelAndView; } /** * 이벤트 회원 정보 테이블에 기본 정보 입력해 주기. * 회원아이디, 회원이름, 이벤트 게시판 번호, 이벤트 게시글 번호, 회원 단가 정보, 이벤트 수신동의, 이벤트 유효 상태값(미진행 : N 으로 셋팅) * * */ @RequestMapping("/web/event/updateEventPolicyMberInfoAjax.do") public ModelAndView updateEventPolicyMberInfoAjax(MjonEventVO mjonEventVO) throws Exception{ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; if(loginVO == null) { modelAndView.addObject("message", "문자온 서비스는 로그인 후 이용 가능합니다."); modelAndView.addObject("resultSts", "loginFail"); return modelAndView; }else { mjonEventVO.setMberId(loginVO.getId()); mjonEventVO.setMberNm(loginVO.getName()); //이벤트 회원정보 존재여부 확인 및 회원 정보 불러오기 MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo(mjonEventVO); int resultCnt = 0; if(eventMberInfo == null) {//등록된 회원정보가 없으면 오류 발생 //mjonEventVO.setEventStatus("N"); //resultCnt = mjonEventService.insertEventMsgMberDefaultInfo(mjonEventVO); modelAndView.addObject("message", "이벤트 회원 정보가 없습니다."); modelAndView.addObject("resultSts", "emptyMber"); return modelAndView; }else if(!eventMberInfo.getEventStatus().equals("N")){//이벤트가 진행중이거나, 종료된 회원인 경우 modelAndView.addObject("message", "현재 이벤트를 진행 중이시거나 완료하신 회원입니다."); modelAndView.addObject("resultSts", "statusFail"); return modelAndView; }else {//등록된 회원정보가 있으면 유의사항 및 문자 수신 동의 정보 업데이트 처리 resultCnt = mjonEventService.updateEventPolicyMberInfo(mjonEventVO); if(resultCnt > 0) {//수정이 정상적으로 된 경우 modelAndView.addObject("resultSts", "success"); }else {//이벤트 미진행인 경우 성공으로 결제페이지로 이동되도록 한다. modelAndView.addObject("resultSts", "updateFail"); } return modelAndView; } } } /** * 이벤트 결제하기 화면 * @param searchVO * @param model * @return "/web/pay/PayView.do" * @throws Exception */ @RequestMapping(value= {"/web/event/member/pay/PayView.do"}) public String PayView(@ModelAttribute("mjonPayVO") MjonPayVO mjonPayVO, HttpServletRequest request, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{ String pattern = (String) request.getAttribute( HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) ; //로그인 정보 획득 // LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(loginVO == null) { //redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다."); return "redirect:/web/user/login/login.do"; } //기존 결제 내역이 있는 회원인지 확인 int payCnt = 0; if(StringUtil.isNotEmpty(userId)) { //결제내역 카운트 조회 payCnt = mjonPayService.selectMemerPayCount(userId); if(payCnt > 0) { redirectAttributes.addFlashAttribute("message", "고객님께서는 첫결제 이벤트 대상이 아닙니다."); return "redirect:/web/main/mainPage.do"; }else { String bbsId = "BBSMSTR_000000000731"; //이벤트 게시판 번호 String nttSj = "[첫결제 이벤트] 첫 결제 시, 누구나 조건 없이 인생 최저가!"; BoardVO resultEvent = selectEventBoardInfo(bbsId, nttSj); if(resultEvent != null) {//진행중 이벤트 이면 이벤트 게시글 번호 셋팅 //이벤트 회원 정보 조회 MjonEventVO mjonEventVO = new MjonEventVO(); MjonEventVO eventMberInfo = selectEventMsgMberDefaultInfo(mjonEventVO, resultEvent.getNttId(), bbsId, loginVO.getId(), loginVO.getName()); int resultCnt = 0; if(eventMberInfo == null) {//등록된 회원정보가 없으면 정보 입력 mjonEventVO.setEventStatus("N"); resultCnt = mjonEventService.insertEventMsgMberDefaultInfo(mjonEventVO); }else {//등록된 회원정보가 있으면 화면 이동 및 메세지 처리 String status = eventMberInfo.getEventStatus(); if(status.equals("Y")) {//이벤트가 진행중인 경우 redirectAttributes.addFlashAttribute("message", "현재 첫 결제 이벤트를 진행중입니다."); return "redirect:/web/main/mainPage.do"; }else if(status.equals("E")) {//이벤트가 종료된 경우 redirectAttributes.addFlashAttribute("message", "현재 첫 결제 이벤트를 완료 하였습니다."); return "redirect:/web/main/mainPage.do"; } } }else {//이벤트 게시글 정보가 없으면 0으로 셋팅. redirectAttributes.addFlashAttribute("message", "첫 결제 이벤트는 종료 되었습니다."); return "redirect:/web/main/mainPage.do"; } } } MberManageVO mberManageVO = mberManageService.selectMber(loginVO.getId()); model.addAttribute("mberManageVO", mberManageVO); MjonCandidateVO mjonCandidateVO = new MjonCandidateVO(); if(userId != "") { mjonCandidateVO = mjonCandidateService.selectCandidateDataInfo(userId); model.addAttribute("mjonCandidateVO",mjonCandidateVO); } mjonPayVO.setReturnURL(request.getRequestURL().toString().split("pay")[0] + "nicepay/payResultAjax.do") ; /** 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"); } mjonPayVO.setUserId(loginVO.getId()); /*List resultList = mjonPayService.selectPayList(mjonPayVO);*/ /*model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MjonPayVO)resultList.get(0)).getTotCnt() : 0);*/ /*model.addAttribute("paginationInfo", paginationInfo);*/ //대상 리스트 가져오기 VacsVactVO vacsVactVO = new VacsVactVO(); vacsVactVO.setMberId(loginVO.getId()); //List bankList = vacsVactService.selectBankAcctList(tempVO); //할당 가능한 계좌 수량 리스트 받아오기 List bankList = vacsVactService.selectBankAcctAllList(vacsVactVO); //할당 가능한 계좌 수량 리스트 받아오기 List myBankList = vacsVactService.selectMyBankAcctList(vacsVactVO); //내가 할당받은 전용계좌 리스트 받아오기 MjonVaMsgLogVO vaMsgLogVO = new MjonVaMsgLogVO(); vaMsgLogVO.setMberId(loginVO.getId()); Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String date = sdf.format(now); vaMsgLogVO.setSendDate(date); MjonVaMsgLogVO resultMsgInfo = mjonPayService.selectMyAcctSendCnt(vaMsgLogVO); //대상 리스트, 페이징 정보 전달 model.addAttribute("resultList", bankList); model.addAttribute("resultMyList", myBankList); model.addAttribute("resultMsgInfo", resultMsgInfo); model.addAttribute("mjonPayVO", mjonPayVO); // 탭이동 String tabType = "1"; if(request.getParameter("tabType") != null) { tabType = request.getParameter("tabType"); } model.addAttribute("tabType", tabType); return "/web/event/pay/EventPayView"; } //이벤트 게시글 정보 불러오기 함수 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; } //이벤트 회원 정보 불러오기 함수 public MjonEventVO selectEventMsgMberDefaultInfo(MjonEventVO mjonEventVO, float nttId, String bbsId, String mberId, String mberNm) throws Exception{ mjonEventVO.setEventNttId(Float.toString(nttId)); mjonEventVO.setEventBbsId(bbsId); mjonEventVO.setMberId(mberId); mjonEventVO.setMberNm(mberNm); mjonEventVO.setEventShortPrice("7.5"); mjonEventVO.setEventLongPrice("32"); mjonEventVO.setEventPicturePrice("59"); mjonEventVO.setEventPicture2Price("67"); mjonEventVO.setEventPicture3Price("70"); //이벤트 회원정보 존재여부 확인 및 회원 정보 불러오기 MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo(mjonEventVO); return eventMberInfo; } }