Jang_bo_go

Springboot 결제시스템(2) 쿠폰,상품,주소,거리,매장검증

디비드킴 2022. 3. 11. 09:59

이제 제일 어려운 구간이다

흐름
쿠폰 1차 유효성 검사-> 매장별로 제품을 꺼낸다->상품을 검증한다->쿠폰 2차 검증한다
제품별 결제정보 생성->매장 조건에 부합하는지 검증한다

1. 쿠폰 1차 검사

쿠폰 유효성 검사 후 받는다

couponVo couponVo=couponService.CheckAndGet(couponName);
 

2. 매장별로 제품을 꺼낸다

매장 꺼내기

storeVo storeVo=storeService.getVo(storeId);

검증 전 일단 배달 가능 지역인지 확인

if(checkDeliverRadius(storeVo.getSaddress(),storeVo.getDeliverRadius(),tryOrderDto.getAddress())){

이 함수 안에서 카카오 주소 api를 호출해
현존하는 주소가 맞는지 검사한다
그리고 위도 경도로 거리를 측정한다

제품 검증 시작

for(Map<String,Object>basketAndProduct:basketAndProducts){


3. 상품 검증

이벤트가 있는 제품인지 판별
이벤트가 있다면 이벤트 금액을 주고
아니라면 원래 가격을 받음

productVo productVo=(productVo)productService.getProduct(productId).get("message");

쿠폰 적용 전 총액 저장
배달 최소금액에 부합하는지 확인

totalPrice+=price*count;

쿠폰 적용을 요청했는지 검사

if(coupons.get(basketId)!=null){


4. 쿠폰 2차 검증

장바구니 개수==쿠폰 개수 검사
바나나 2개 == 최대 쿠폰 2장 사용 가능

if(counponInfors.size()>count){

해당 매장 발행 쿠폰인지 검사

if(couponVo.getStoreId()!=storeId){

(쿠폰 중복/기간/사용 여부 검사는 1차에서 이뤄짐)
쿠폰 적용 후 가격 계산

for(int discountPrice:discountPrices){//쿠폰 적용 가격들 더해주기
System.out.println("discountPrice"+discountPrice);
price+=discountPrice;
}
}else{
price*=count;
}


5. 제품별 결제 정보/ 매장 주문 가능 여부 판단

매당 매장 제품/쿠폰 검증이 모두 끝나면
총액으로 배달 여부 판단

6. 결제정보 만들기

모든 반복문이 끝나면
정리한 자료로 결제정보를 생성한다


결과

주문 정보가 잘 만들어졌다

테스트
제품1개 쿠폰 2개

배달 최소금액 미 충족

배달 범위 미충족


아하나를 빼먹었다
영업중인지 판단도 해줘야한다