ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MVCShop] 할인쿠폰 제공
    카테고리 없음 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. 카드할인(인증, 카드선택, 카드사별 혜택 등..)

Designed by Tistory.