AdminDetailAction
package kr.order.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.controller.Action;
import kr.order.dao.OrderDAO;
import kr.order.vo.OrderDetailVO;
import kr.order.vo.OrderVO;
public class AdminDetailAction implements Action {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num == null) { //로그인이 되지 않은 경우
return "redirect:/member/loginForm.do";
}
Integer user_auth = (Integer)session.getAttribute("user_auth");
if(user_auth !=9) {//관리자로 로그인하지 않은 경우
return "/WEB-INF/views/common/notice.jsp";
}
//관리자로 로그인 된 경우
int order_num = Integer.parseInt(request.getParameter("order_num"));
OrderDAO dao = OrderDAO.getInstance();
//주문정보 반환
OrderVO order = dao.getOrder(order_num);
if(order.getMem_num()!=user_num) {
//구매자 회원번호와 로그인한 회원번호가 불일치할 경우
return "/WEB-INF/views/common/notice.jsp";
}
//주문한 개별상품정보 반환
List<OrderDetailVO> detailList = dao.getListOrderDetail(order_num);
request.setAttribute("order", order);
request.setAttribute("detailList", detailList);
return "/WEB-INF/views/order/admin_detail.jsp";
}
}
admin_detail.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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구매상세(관리자전용)</title>
<link rel="stylesheet"
href="${pageContext.request.contextPath}/css/style.css" type="text/css">
</head>
<body>
<div class="page-main">
<jsp:include page="/WEB-INF/views/common/header.jsp" />
<div class="content-main">
<h2>구매상세(관리자전용)</h2>
<table>
<tr>
<th>상품명</th>
<th>수량</th>
<th>상품가격</th>
<th>합계</th>
</tr>
<c:forEach var="detail" items="${detailList}">
<tr>
<td>${detail.item_name}</td>
<td class="align-center">
<fmt:formatNumber value="${detail.order_quantity}" />
</td>
<td class="align-center">
<fmt:formatNumber value="${detail.item_price}" />원</td>
<td class="align-center">
<fmt:formatNumber value="${detail.item_total}" />원 <br>
</td>
</tr>
</c:forEach>
<tr>
<td colspan="3" class="align-right"><b>총구매금액</b></td>
<td class="align-center">
<fmt:formatNumber value="${order.order_total}" />원
</td>
</tr>
</table>
<ul id="delivery_info">
<li>
<span>받는 사람</span>${order.receive_name}
</li>
<li>
<span>우편번호</span>${order.receive_post}
</li>
<li>
<span>주소</span>${order.receive_address1} ${order.receive_address2}
</li>
<li>
<span>전화번호</span>${order.receive_phone}
<li>
<span>남기실 말씀</span>${order.notice}
</li>
<li>
<span>결제수단</span>
<c:if test="${order.payment==1}">통장입금</c:if>
<c:if test="${order.payment==2}">카드결제</c:if>
</li>
<li>
<span>배송상태</span>
<c:if test="${order.status==1}">배송대기</c:if>
<c:if test="${order.status==2}">배송준비중</c:if>
<c:if test="${order.status==3}">배송중</c:if>
<c:if test="${order.status==4}">배송완료</c:if>
<c:if test="${order.status==5}">주문취소</c:if>
</li>
<li class="align-center">
<c:if test="${order.status==1}">
<input type="button" value="배송지정보수정" onclick="location.href='modifyForm.do?order_num=${order.order_num}'">
</c:if>
<c:if test="${order.status!=5}">
<input type="button" value="배송상태수정" onclick="location.href='modifyStatusForm.do?order_num=${order.order_num}'">
</c:if>
<c:if test="${order.status==4 or order.status ==5}">
<input type="button" value="삭제" onclick="location.href='deleteOrder.do?order_num=${order.order_num}'">
</c:if>
<input type="button" value="주문목록" onclick="location.href='adminList.do'">
<input type="button" value="MY페이지" onclick="location.href='${pageContext.request.contextPath}/member/myPage.do'">
</li>
</ul>
</div>
</div>
</body>
</html>
OrderDAO 추가
//관리자 - 배송상태 수정
public void updateOrderStatus(OrderVO order) throws Exception{
Connection conn = null;
PreparedStatement pstmt = null;
PreparedStatement pstmt2 = null;
String sql =null;
try {
//커넥션풀로부터 커넥션 할당
conn = DBUtil.getConnection();
conn.setAutoCommit(false);
//SQL문 작성
sql="UPDATE zorder SET status=?,modify_date=SYSDATE "
+ "WHERE order_num=?";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, order.getStatus());
pstmt.setInt(2, order.getOrder_num());
pstmt.executeUpdate();
//주문 취소일 경우만 상품개수 조정
if(order.getStatus() == 5) {
//주문번호에 해당하는 상품정보 구하기
List<OrderDetailVO> detailList = getListOrderDetail(order.getOrder_num());
sql="UPDATE zitem SET quantity=quantity+? WHERE item_num=?";
pstmt2=conn.prepareStatement(sql);
for(int i=0; i<detailList.size();i++) {
OrderDetailVO detail = detailList.get(i);
pstmt2.setInt(1, detail.getOrder_quantity());
pstmt2.setInt(2, detail.getItem_num());
pstmt2.addBatch();
if(i%1000==0) {
pstmt2.executeBatch();
}
}//end of for
pstmt2.executeBatch();
}//end of if
//모든 SQL문 성공하면 commit
conn.commit();
}catch(Exception e) {
//SQL문이 하나라도 오류가 발생하면 rollback
conn.rollback();
throw new Exception(e);
}finally {
DBUtil.executeClose(null, pstmt2, conn);
}
}
AdminModifyStatusFormAction
package kr.order.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.controller.Action;
import kr.order.dao.OrderDAO;
import kr.order.vo.OrderVO;
public class AdminModifyStatusFormAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num == null) { //로그인이 되지 않은 경우
return "redirect:/member/loginForm.do";
}
Integer user_auth = (Integer)session.getAttribute("user_auth");
if(user_auth !=9) {//관리자로 로그인하지 않은 경우
return "/WEB-INF/views/common/notice.jsp";
}
//관리자로 로그인 된 경우
int order_num = Integer.parseInt(request.getParameter("order_num"));
OrderDAO dao = OrderDAO.getInstance();
//주문정보 반환
OrderVO order = dao.getOrder(order_num);
request.setAttribute("order", order);
return "/WEB-INF/views/order/admin_modifyStatusForm.jsp";
}
}
admin_modifyStatusForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>배송상태 변경(관리자 전용)</title>
<link rel="stylesheet"
href="${pageContext.request.contextPath}/css/style.css" type="text/css">
</head>
<body>
<div class ="page-main">
<jsp:include page="/WEB-INF/views/common/header.jsp"/>
<div class="content-main">
<h2>배송상태 변경(관리자 전용)</h2>
<form action="modifyStatus.do" method="post" id="status_modify">
<input type="hidden" name="order_num" value="${order.order_num}">
<ul>
<li>
<label>배송상태</label>
<c:if test="${order.status !=5}">
<input type="radio" name="status" id="status1" value="1"
<c:if test="${order.status==1}">checked</c:if>>배송대기
<input type="radio" name="status" id="status2" value="2"
<c:if test="${order.status==2}">checked</c:if>>배송준비중
<input type="radio" name="status" id="status3" value="3"
<c:if test="${order.status==3}">checked</c:if>>배송중
<input type="radio" name="status" id="status4" value="4"
<c:if test="${order.status==4}">checked</c:if>>배송완료
</c:if>
<input type="radio" name="status" id="status5" value="5"
<c:if test="${order.status==5}">checked</c:if>>주문취소
</li>
</ul>
<div class="align-center">
<c:if test="${order.status !=5}">
<input type="submit" value="수정">
</c:if>
<input type="button" value="주문상세" onclick="location.href='adminDetail.do?order_num=${order.order_num}'">
</div>
</form>
</div>
</div>
</body>
</html>
AdminModifyStatusAction
package kr.order.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.controller.Action;
import kr.order.dao.OrderDAO;
import kr.order.vo.OrderVO;
public class AdminModifyStatusAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num == null) { //로그인이 되지 않은 경우
return "redirect:/member/loginForm.do";
}
Integer user_auth = (Integer)session.getAttribute("user_auth");
if(user_auth !=9) {//관리자로 로그인하지 않은 경우
return "/WEB-INF/views/common/notice.jsp";
}
//관리자로 로그인 된 경우
request.setCharacterEncoding("utf-8");
OrderVO order = new OrderVO();
order.setStatus(Integer.parseInt(request.getParameter("status")));
order.setOrder_num(Integer.parseInt(request.getParameter("order_num")));
OrderDAO dao = OrderDAO.getInstance();
//주문정보 반환
OrderVO db_order = dao.getOrder(order.getOrder_num());
//사용자가 배송상태를 5로 변경했을 경우
if(db_order.getStatus()==5) {
request.setAttribute("notice_msg","사용자가 배송상태를 주문 취소로 변경해서 관리자가 배송상태 수정 불가");
request.setAttribute("notice_url",request.getContextPath()
+"/order/adminDetail.do?order_num="+order.getOrder_num());
return "/WEB-INF/views/common/alert_view.jsp";
}
//관리자 배송상태 변경
dao.updateOrderStatus(order);
request.setAttribute("notice_msg","정상적으로 수정되었습니다.");
request.setAttribute("notice_url",request.getContextPath()
+"/order/adminDetail.do?order_num="+order.getOrder_num());
request.setAttribute("order", order);
return "/WEB-INF/views/common/alert_view.jsp";
}
}
AdminModifyFormAction
package kr.order.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.controller.Action;
import kr.order.dao.OrderDAO;
import kr.order.vo.OrderVO;
public class AdminModifyFormAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num =
(Integer)session.getAttribute("user_num");
if(user_num==null) {
return "redirect:/member/loginForm.do";
}
Integer user_auth = (Integer)session.getAttribute("user_auth");
if(user_auth!=9) {//관리자로 로그인하지 않은 경우
return "/WEB-INF/views/common/notice.jsp";
}
//관리자로 로그인한 경우
int order_num = Integer.parseInt(
request.getParameter("order_num"));
OrderDAO dao = OrderDAO.getInstance();
//주문정보 호출
OrderVO order = dao.getOrder(order_num);
request.setAttribute("order", order);
return "/WEB-INF/views/order/admin_modifyForm.jsp";
}
}