-
[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. 카드할인(인증, 카드선택, 카드사별 혜택 등..)