테크 로그포스 Tech Log Force
[MVCShop] 할인쿠폰 제공 본문
아직 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. 카드할인(인증, 카드선택, 카드사별 혜택 등..)
Comments