카테고리 없음

[MVCShop] 할인쿠폰 제공

Yeji Heo 2024. 3. 12. 09:30

아직 Spring 및 @MVC 적용하지 않았다.

 

1. 구매 화면요청(addPurchaseView.do)시 AddPurchaseViewAction이 컨트롤러로서 역할을 한다.

public class AddPurchaseViewAction extends Action {

	
	public String execute(	HttpServletRequest request,HttpServletResponse response) throws Exception {
		
		request.setCharacterEncoding("UTF-8");
		
		ProductService service = new ProductServiceImpl();
		ProductVO productVO = service.findProduct(Integer.parseInt(request.getParameter("prod_no")));
		
		PurchaseService purchaseService = new PurchaseServiceImpl();
		
		Map<String, String> coupons = new HashMap<String, String>();
		coupons.put("userId", ((User)request.getSession().getAttribute("user")).getUserId() );
		coupons = purchaseService.checkCoupons(coupons); //쿠폰별 <쿠폰명, 할인율>이 담긴 coupons map. 조건에 맞는 쿠폰들을 모두 map에 담는다.
		
		//PurchaseView에서 쿠폰을 선택하여 view페이지를 reload한 경우
		if(request.getParameter("couponName")!=null) {
			
			String selectedCoupon = request.getParameter("couponName");
			System.out.println(selectedCoupon);
			
			int discount= Integer.parseInt( coupons.get(request.getParameter("couponName")) );
			int price = productVO.getPrice();
			productVO.setPrice( price *= ( (100-discount)/(float)100 )   );		
			
			System.out.println("할인율은"+discount+"할인상품가는"+productVO.getPrice());
			
		}

 

 

PurchaseService의 checkCoupons를 통해 쿠폰 정보가 담긴 map을 가져온다. 

 

2. 새로운 종류의 쿠폰이 추가될 경우

해당 쿠폰 지급 조건을 체크하는 쿼리를 Dao에 추가한다. 

조건에 해당하면 map에 해당 쿠폰명&할인율을 담아 리턴한다.

 

3. 인터페이스 기반

쿠폰이 계속 추가되더라도

서비스단에서는 checkCoupons만 호출하면 된다.

구현부에 해당 신규쿠폰 지급조건을 확인하는 메서드를 추가해주면 된다. ==> 메타데이터화 할 방법을 고려하자

 

=================================================

고려 및 추가할 사항

1. 구매 취소

2. 쿠폰명과 할인율을 메타데이터화해서 활용할 수 있는 방법

3. 카드할인(인증, 카드선택, 카드사별 혜택 등..)