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.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 MjonEventPayV2Controller { @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; /** * 이벤트 결제하기 화면 * @param searchVO * @param model * @return "/web/event/member/pay/PayView.do" * @throws Exception */ @RequestMapping(value= {"/web/event/member/pay/PayView.do"}) public String PayViewV2(@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"; } // 하드코딩 //if(!userId.equals("nobledeco")) { // if(!userId.equals("nobledeco2")) { // if(!userId.equals("nopay")) { // return "redirect:/web/main/mainPage.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) {//진행중 이벤트 이면 이벤트 게시글 번호 셋팅 // Step 0. B선 전송사 이용고객 => 이벤트대상 제외처리 MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setMberId(userId); String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO); if (blineCode != null && blineCode.equals("N")) { //이벤트 회원 정보 조회 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 { 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; } }