TIL 0527

먼지·2024년 5월 29일

Today I Learned

목록 보기
67/89
post-thumbnail

SQL

--장바구니
create table zcart(
 cart_num number,
 item_num number not null,
 order_quantity number(7) not null,
 reg_date date default sysdate not null,
 mem_num number not null, -- 상품 구매자 회원번호
 constraint zcart_pk primary key (cart_num),
 constraint zcart_fk1 foreign key (item_num)
                           references zitem (item_num),
 constraint zcart_fk2 foreign key (mem_num)
                           references zmember (mem_num)
);
create sequence zcart_seq;

VO

Cart

package kr.cart.vo;

import java.sql.Date;

import kr.item.vo.ItemVO;

public class CartVO {
	private int cart_num;		//장바구니번호
	private int item_num;		//상품번호
	private int order_quantity;	//주문수량
	private Date reg_date;		//등록일
	private int mem_num;		//상품 구매자 회원번호
	private int sub_total;		//동일 상품의 총구매 금액	
	
	private ItemVO itemVO;

	public int getCart_num() {
		return cart_num;
	}

	public void setCart_num(int cart_num) {
		this.cart_num = cart_num;
	}

	public int getItem_num() {
		return item_num;
	}

	public void setItem_num(int item_num) {
		this.item_num = item_num;
	}

	public int getOrder_quantity() {
		return order_quantity;
	}

	public void setOrder_quantity(int order_quantity) {
		this.order_quantity = order_quantity;
	}

	public Date getReg_date() {
		return reg_date;
	}

	public void setReg_date(Date reg_date) {
		this.reg_date = reg_date;
	}

	public int getMem_num() {
		return mem_num;
	}

	public void setMem_num(int mem_num) {
		this.mem_num = mem_num;
	}

	public int getSub_total() {
		return sub_total;
	}

	public void setSub_total(int sub_total) {
		this.sub_total = sub_total;
	}

	public ItemVO getItemVO() {
		return itemVO;
	}

	public void setItemVO(ItemVO itemVO) {
		this.itemVO = itemVO;
	}
}

DAO

Cart

package kr.cart.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;

import kr.cart.vo.CartVO;
import kr.util.DBUtil;

public class CartDAO {
	//싱글턴 패턴
	private static CartDAO instance = new CartDAO();
	
	public static CartDAO getInstance() {
		return instance;
	}
	private CartDAO() {}
	
	//장바구니 등록
	public void insertCart(CartVO cart)throws Exception{
		Connection conn = null;
		PreparedStatement pstmt = null;
		String sql = null;
		try {
			//커넥션풀로부터 커넥션 할당
			conn = DBUtil.getConnection();
			//SQL문 작성
			sql = "INSERT INTO zcart (cart_num,item_num,order_quantity,"
				+ "mem_num) VALUES (zcart_seq.nextval,?,?,?)";
			//PreparedStatement 객체 생성
			pstmt = conn.prepareStatement(sql);
			//?에 데이터 바인딩
			pstmt.setInt(1, cart.getItem_num());
			pstmt.setInt(2, cart.getOrder_quantity());
			pstmt.setInt(3, cart.getMem_num());
			//SQL문 실행
			pstmt.executeUpdate();
		}catch(Exception e) {
			throw new Exception(e);
		}finally {
			DBUtil.executeClose(null, pstmt, conn);
		}
	}
	//회원번호별 총 구매액
	//장바구니 목록
	//장바구니 상세
	//장바구니 수정 (개별 상품 수량 수정)
	//장바구니 수정 (상품번호와 회원번호별 수정)
	//장바구니 삭제
}

Action

Write

package kr.cart.action;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.codehaus.jackson.map.ObjectMapper;

import kr.cart.dao.CartDAO;
import kr.cart.vo.CartVO;
import kr.controller.Action;

public class WriteAction implements Action{

	@Override
	public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
		Map<String,String> mapAjax = 
				          new HashMap<String,String>();
		
		HttpSession session = request.getSession();
		Integer user_num = 
				(Integer)session.getAttribute("user_num");
		if(user_num==null) {//로그인이 되지 않은 경우
			mapAjax.put("result", "logout");
		}else {//로그인 된 경우
			//전송된 데이터 인코딩 타입 지정
			request.setCharacterEncoding("utf-8");
			
			CartVO cart = new CartVO();
			cart.setItem_num(Integer.parseInt(
					     request.getParameter("item_num")));
			cart.setOrder_quantity(Integer.parseInt(
				   request.getParameter("order_quantity")));
			cart.setMem_num(user_num);
			
			CartDAO dao = CartDAO.getInstance();
			dao.insertCart(cart);
			mapAjax.put("result", "success");
		}
		//JSON 데이터 생성
		ObjectMapper mapper = new ObjectMapper();
		String ajaxData = mapper.writeValueAsString(mapAjax);
		
		request.setAttribute("ajaxData", ajaxData);
		
		return "/WEB-INF/views/common/ajax_view.jsp";
	}

}

JS

Shop Item Detail

$(function(){
	/* =========================
	 * 주문수량 변경
	 * ========================= */
	$('#order_quantity').on('input',function(){
		if($('#order_quantity').val()==''){
			$('#item_total_txt').text('총주문 금액 : 0원');
			return;
		}
		if($('#order_quantity').val()<=0){
			$('#order_quantity').val('');
			$('#item_total_txt').text('총주문 금액 : 0원');
			return;
		}
		if(Number($('#item_quantity').val()) < 
		                     $('#order_quantity').val()){
			alert('수량이 부족합니다!');
			$('#order_quantity').val('');
			$('#item_total_txt').text('총주문 금액 : 0원');
			return;	
		}
		let total = $('#item_price').val() * $('#order_quantity').val();
		$('#item_total_txt').text('총주문 금액 : ' + 
		                    total.toLocaleString() + '원');
	});
	/* =========================
	 * 주문수량 변경
	 * ========================= */	
	$('#item_cart').submit(function(event){
		
		if($('#order_quantity').val()==''){
			alert('수량을 입력하세요!');
			$('#order_quantity').focus();
			return false;
		}
		
		let form_data = $(this).serialize();
		
		//서버와 통신
		$.ajax({
			url:'../cart/write.do',
			type:'post',
			data:form_data,
			dataType:'json',
			success:function(param){
				if(param.result == 'logout'){
					alert('로그인 후 사용하세요');
				}else if(param.result == 'success'){
					alert('장바구니에 상품을 담았습니다.');
					location.href='../cart/list.do';
				}else if(param.result == 'overquantity'){
					alert('기존에 주문한 상품입니다. 개수를 추가하면 재고가 부족합니다.');
				}else{
					alert('장바구니 담기 오류');
				}
			},
			error:function(){
				alert('네트워크 오류 발생');
			}
		});		
		//기본 이벤트 제거
		event.preventDefault();
	});
});

Properties

Shop

#상품관리 사용자
/item/detail.do=kr.item.action.UserDetailAction
#장바구니
/cart/write.do=kr.cart.action.WriteAction
profile
Lucky Things🍀

0개의 댓글