본문 바로가기
Coding/전자정부프레임

사용자예약 프로그램 정보

by 찡콩찡 2022. 9. 28.

상세 페이지 이동

 

예약 정보 상세 controller를 작성한다.

//예약정보 상세
	@RequestMapping(value= "/rsv/rsvSelect.do")
	public String select(@ModelAttribute("searchVO") ReservationVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{
		request.getSession().removeAttribute("sessionReservationAplly");
		
		LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
		model.addAttribute("USER_INFO", user);
		
		ReservationVO result = reservationService.selectReservation(searchVO);
		
		model.addAttribute("result", result);
		return "rsv/RsvSelect";
	}

return 값에 맞춰 jsp 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>    
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>  
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>    

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Language" content="ko">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<title>상세페이지 이동</title>
<!-- BBS Style -->
<link href="/asset/study/BBSTMP_0000000000001/style.css" rel="stylesheet"/>
<!-- 공통 style -->
<link href="/asset/study/LYTTMP_0000000000000/style.css" rel="stylesheet"/>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

<!-- JQUERY UI -->
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

<script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script> 
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.mis.css">

</head>
<body>


<%--기본url --%>
<c:url var="_BASE_PARAM" value="">
	<c:param name="resveId" value="${searchVO.resveId}"/>
	<c:param name="pageIndex" value="${searchVO.pageIndex}"/>
	<c:if test="${not empty searchVO.searchCondition}">
		<c:param name="searchCondition" value="${searchVO.searchCondition}"></c:param>
	</c:if>
</c:url>
	
<!-- content시작 -->
	<div id="content"> 
		<div class="container">
			<div id = "contents">
			  <div id="bbs_wrap">
			  <div class="board_view">
			  	<dl class="tit_view">
			  		<dt>프로그램명</dt>
			  		<dd><c:out value="${result.resveSj}"/></dd>
		  		</dl>
		  		<dl class="tit_view">
		  			<dt>신청유형</dt>
		  			<dd>
		  			<c:choose>
		  				<c:when test="${result.resveSeCode eq 'TYPE01'}">선착순</c:when>
		  				<c:when test="${result.resveSeCode eq 'TYPE02'}">승인관리</c:when>
		  			</c:choose>
		  			</dd>
		  		</dl>
			 	<dl class="tit_view">
			 		<dt>강사명</dt>
			 		<dd><c:out value="${result.recNm}"/></dd>
				</dl>
				<dl class="info_view">
					<dt>운영일자</dt>
					<dd><c:out value="${result.useBeginDt}"/> ~ <c:out value="${result.useEndDt}"/></dd>
					<dt>운영시간</dt>
					<dd><c:out value="${result.useBeginTime}"/> ~ <c:out value="${result.useEndTime}"/></dd>
					<dt>신청기간</dt>
					<dd><c:out value="${result.reqstBgnde}"/> ~ <c:out value="${result.reqstEndde}"/></dd>
					<dt>신청 가능한 인원</dt>
					<dd><c:out value="${result.maxAplyCnt}"/></dd>
				</dl>
				<dl class="info_view2">
					<dt>작성자ID</dt>
					<dd><c:out value="${result.frstRegisterId}"/></dd>
					<dt>작성일</dt>
					<dd><fmt:formatDate value="${result.frstRegistPnttm}" pattern="yyyy-MM-dd"/></dd>
				</dl>
				<div class="view_cont">
					<c:out value="${result.resveCn}" escapeXml="false"/>	
				</div>	
			</div>		 
			 
			 <div class="btn-cont ar">
			 	<c:choose>
			 		<c:when test="${result.applyStatus eq '1'}"><a href="#" class="btn btn-status" data-status="${result.applyStatus}">접수대기중</a></c:when>
			 		<c:when test="${result.applyStatus eq '2'}"><a href="/rsv/rsvAapplyRegist.do${_BASE_PARAM}" id="btn-apply" class="btn spot">신청</a></c:when>
			 		<c:when test="${result.applyStatus eq '3'}"><a href="#" class="btn btn-status" data-staus="${result.applyStatus}">접수마감</a></c:when>
			 		<c:when test="${result.applyStatus eq '4'}"><a href="#" class="btn btn-status" data-staus="${result.applyStatus}">운영중</a></c:when>
			 		<c:otherwise>
			 			<a href="#" class="btn btn-status" data-staus="${result.applyStatus}">종료</a>
			 		</c:otherwise>
			 	</c:choose>
			 	<c:url var="listUrl" value="/rsv/selectList.do${_BASE_PARAM}"/>
			 	<a href="${listUrl}" class="btn">목록</a>
			 </div>
			</div>
		</div>
	</div>
</div> 
<!-- content끝 -->
<script>
$(document).ready(function(){
	//예약상태 메세지
	$(".btn-status").click(function(){
		var status = $(this).data("status");
		
		if(status == "1"){
			alert("현재 접수대기중인 상태입니다.");
		}else if(status == "3"){
			alert("현재 접수마감 상태입니다");
		}else if(status == "4"){
			alert("현재 운영중인 상태입니다");
		}else if(status == "5"){
			alert("현재 운영 종료 상태입니다.");
		}
	});
	
	//신청
	$("#btn-reg").click(function(){
		if(!confirm("신청하시겠습니까?")){
			return false;
		}
	});
	//신청가능여부 체크 후 진행
	$("#btn-apply").click(function(){
		var href = $(this).attr("href");
		
		$.ajax({
			type : "POST",
			url : "/rsv/rsvCheck.json",
			data : {"resveId" : "${searchVO.resveId}"},
			dataType : "json",
			success : function(result) {
				if(result.successYn == "Y"){
					location.href = href;
				}else{
					alert(result.message);
				}
			}, error : function(result) {
				alert("error");
			}
		});
		return false;
	});
});
</script>
</body>
</html>

 

프로그램명 클릭 시 상세 페이지가 나와야 한다.  http://localhost/rsv/selectList.do

   

 

상세페이지에서 신청을 눌렀을 때 파라미터값이 잘 넘어갔는지 확인하고 에러 팝업창이 나와야 한다.

 

 

 


잘된거 같았는데 작성자가 안뜬다..!!ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

 

 

 

jsp에서 script 안에 json을 사용하고 싶으면 web.xml 확장자 추가

 <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>*.json</url-pattern>
 </filter-mapping>
    
 <servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.json</url-pattern>
</servlet-mapping>

ReservationApplyContoller 를 추가해준다.

package egovframework.let.rsv.web;


import java.io.PrintWriter;
import java.util.List;

import javax.annotation.Resource;
import javax.enterprise.inject.Model;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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 com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader;

import egovframework.com.cmm.LoginVO;
import egovframework.com.cmm.util.EgovUserDetailsHelper;
import egovframework.let.rsv.service.ReservationApplyVO;
import egovframework.let.rsv.service.ReservationService;
import egovframework.let.rsv.service.ReservationVO;
import egovframework.rte.fdl.string.EgovStringUtil;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import net.sf.json.JSONObject;
import okhttp3.internal.http.RequestLine;

@Controller
public class ReservationApplyController  {
	
	@Resource(name="reservationService")
	private ReservationApplyService reservationServiceApply;
	
	@Resource(name="reservationService")
	private ReservationService reservationService;
	
	
	//예약여부 체크
	@RequestMapping(value=" /rsv/rsvCheck.json")
	public void rsvCheck(@ModelAttribute("searchVO") ReservationApplyVO searchVO, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
		String successYn = "Y";
		String message = "성공";
		
		JSONObject jo = new JSONObject(); //net
		response.setContentType("text/javascript; charset=utf-8");
		
		LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
		if(user ==  null || EgovStringUtil.isEmpty(user.getId())) {
			
			successYn = "N";
			message = "로그인 사용 후 가능합니다";
		}
		searchVO.setUserId(user.getId());
		
		ReservationApplyVO result = ReservationServiceApply.rsvCheck(searchVO);
		if(!EgovStringUtil.isEmpty(result.getErrorCode())) {
			successYn ="N";
			message = result.getMessage();
		}
		jo.put("successYn", successYn);
		jo.put("message", message);
		
		PrintWriter printWriter = response.getWriter();
		printWriter.println(jo.toString());
		printWriter.flush();
		printWriter.close();
		
	}
}

 

RservationApplySerivce 작성

package egovframework.let.rsv.service;



public interface ReservationApplyService {
	
	//예약가능여부 확인
	public ReservationApplyVO rsvCheck(ReservationApplyVO vo) throws Exception;
	
	
}

ReservationApplySql

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="egovframework.let.rsv.service.impl.ReservationApplyMapper">
    
	
    <select id="duplicateApplyCheck" resultType="java.lang.Integer">
	
		SELECT
		  COUNT(*) CNT
		FROM RESERQSTINFO A
		WHERE RESVE_ID = #{resveId}
			AND FRST_REGISTER_ID = #{userId}
			AND USE_AT = 'Y'
 		<include refid="selectReservationListWhere"></include>
	</select>
	
	
</mapper>
//예약정보 등록.수정
	@RequestMapping(value="/rsv/rsvApplyRegist.do")
	public String rsvApplyRegist(@ModelAttribute("searchVO") ReservationApplyVO searchVO,HttpServletRequest request, Model model) throws Exception{
		LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
		if(user==null || EgovStringUtil.isEmpty(user.getId())) {
			model.addAttribute("message", "로그인 후 사용가능합니다");
			return "forward:/rsv/selectList.do";
		}else {
			model.addAttribute("USER_INFO", user);
		}
		
		//프로그램 정보
		ReservationVO reservation = new ReservationVO();
		if(!EgovStringUtil.isEmpty(searchVO.getResveId())) {
			reservation = reservationService.selectReservation(searchVO);
		}
		model.addAttribute("reservation", reservation);
		
		//예약정보
		ReservationApplyVO result = new ReservationApplyVO();
		if(!EgovStringUtil.isEmpty(searchVO.getResveId())) {
			result = reservationApplyService.selectReservationApply(searchVO);
		}
		model.addAttribute("result", result);
		
		request.getSession().removeAttribute("sessionReservationApply");
		
		return "rsv/RsvApplyRegist";
	}
serviceimpl
//예약자 상세 정보
		public ReservationApplyVO selectReservationApply(ReservationApplyVO vo) throws Exception {
			return reservationApplyMapper.selectReservationApply(vo);
		}

'Coding > 전자정부프레임' 카테고리의 다른 글

3.사용자 예약프로그램 만들기  (0) 2022.09.21
1.예약 프로그램 관리자 페이지  (0) 2022.09.21
예약관리  (0) 2022.09.14
OAuth 2.0 버전을 이용하여 네이버 로그인해보기  (0) 2022.09.07
회원가입  (0) 2022.08.17