BasketService

addBasket

@Transactional
    public PostBasketRes addBasket(int userIdx, int storeIdx, PostBasketReq postBasketReq) throws BaseException {
        try {
            //이전 장바구니 storeIdx 확인
            GetBasketRes getBasketRes = basketProvider.getRecentBasket(userIdx);
            //다른 가게에서 메뉴 추가?
            if(getBasketRes.getStoreIdx()!=storeIdx){
                //이전 장바구니 모두 삭제한다.
                int result = basketDao.deleteAllBasket(userIdx);
                if(result==0){
                    throw new BaseException(DELETE_FAIL_ERROR);
                }
            }

            //장바구니 생성
            int basketIdx = basketDao.addBasket(userIdx,storeIdx,postBasketReq);

            return new PostBasketRes(basketIdx);
        } catch (Exception e) {
            System.out.println("StoreService.createStore");
            throw new BaseException(DATABASE_ERROR);
        }
    }

장바구니 추가의 로직

  1. 메뉴를 추가하기 전 storeIdx를 확인한다.
  2. 만약 다른 가게에서 장바구니를 추가하는거면?
    1. 이전 장바구니를 모두 삭제한다.
    2. 해당 메뉴를 장바구니에 추가한다.
  3. 만약 같은 가게에서 장바구니를 추가하는거면?
    1. 해당 메뉴를 장바구니에 추가한다.

이 때 Dao단에서 delete와 addBasket는 하나의 처리로 생각을 해야한다. → Transaction 사용

LikeStoreService

addLikeStore

@Transactional
public PostLikeStoreRes addLikeStore(int userIdx, PostLikeStoreReq postLikeStoreReq) throws BaseException {
    try {
        //찜 추가
        int lsIdx = likeStoreDao.addLikeStore(userIdx,postLikeStoreReq);
        //store의 찜 개수 증가시키기
        storeService.addLikeStoreCount(postLikeStoreReq);
        return new PostLikeStoreRes(lsIdx);
    } catch (Exception e) {
        System.out.println("StoreService.createStore");
        throw new BaseException(DATABASE_ERROR);
    }
}

찜한 가게 추가의 로직

  1. 가게의 이름을 이용하여 찜한 가게 목록에 추가한다.
  2. 해당 가게의 찜 개수를 추가한다.

두 개 모두 데이터의 변경이 생기는 로직이기 때문에 Transaction을 걸어주었다.

deleteLikeStore