Skip to content

Commit

Permalink
fix : 장바구니 추가 및 조회 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
seungueonn committed Sep 17, 2023
1 parent cea0afd commit 0c623a5
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 16 deletions.
2 changes: 2 additions & 0 deletions src/main/java/gip/sever/controller/CartController.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

import javax.servlet.http.HttpServletRequest;

import java.util.List;

import static gip.sever.ResponseMessage.*;

@RestController
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/gip/sever/domain/Cart.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,9 @@ public class Cart {
// public void removeProduct(Product product) {
// cartItems.removeIf(item -> item.getProduct().equals(product));
// }


public Cart(Member member) {
this.member = member;
}
}
2 changes: 2 additions & 0 deletions src/main/java/gip/sever/repository/CartRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
import gip.sever.domain.Cart;
import gip.sever.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface CartRepository extends JpaRepository<Cart, Long> {
Optional<Cart> findByMemberId(Long memberId);
@Query("select c from Cart c where c.member =:member")
Optional<Cart> findByMember(Member member);
}
26 changes: 11 additions & 15 deletions src/main/java/gip/sever/service/CartService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@Service
@RequiredArgsConstructor
Expand All @@ -36,13 +37,13 @@ public void addToCart(Long memberId, Long productId) throws Exception{
public boolean addToCart(Long memberId, Long productId) throws Exception {

Member member = memberRepository.findById(memberId).orElseThrow();
Cart cart = cartRepository.findByMember(member).orElseThrow();

// Cart cart = cartRepository.findByMemberId(memberId)
// .orElseThrow(() -> new Exception("계정을 찾을 수 없습니다."));
// Cart cart = cartRepository.findByMember(member).orElse(
// cartRepository.save(new Cart(member))
// );
Cart cart = cartRepository.findByMember(member).orElseThrow();

Product product = productRepository.findById(productId)
.orElseThrow();
Product product = productRepository.findById(productId).orElseThrow();


boolean isAlreadyInCart = cart.getCartItems().stream()
Expand All @@ -59,11 +60,11 @@ public boolean addToCart(Long memberId, Long productId) throws Exception {
}
@Transactional
public boolean removeFromCart(Long memberId, Long productId) throws Exception{
Cart cart = cartRepository.findByMemberId(memberId)
.orElseThrow(() -> new Exception("계정을 찾을 수 없습니다."));
Member member = memberRepository.findById(memberId).orElseThrow();

Product product = productRepository.findById(productId)
.orElseThrow(() -> new IllegalArgumentException("Product not found"));
Cart cart = cartRepository.findByMember(member).orElseThrow();

Product product = productRepository.findById(productId).orElseThrow();

// 장바구니에서 해당 상품을 찾아서 삭제
cart.getCartItems().removeIf(cartItem -> cartItem.getProduct().equals(product));
Expand All @@ -77,13 +78,8 @@ public CartResponseDto.CartResponse getCart(Long memberId) throws Exception{
Member member = memberRepository.findById(memberId).orElseThrow();
Cart cart = cartRepository.findByMember(member).orElseThrow();

// Cart cart = cartRepository.findByMemberId(memberId)
// .orElseThrow(() -> new Exception("계정을 찾을 수 없습니다."));

List<CartItem> cartItems = cartItemRepository.findByMemberIdAndCartId(memberId, cart.getId());

//
return new CartResponseDto.CartResponse(cart);
return new CartResponseDto.CartResponse(cart);
}

}
6 changes: 5 additions & 1 deletion src/main/java/gip/sever/service/OauthService.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package gip.sever.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import gip.sever.domain.Cart;
import gip.sever.domain.GoogleUser;
import gip.sever.domain.Member;
import gip.sever.domain.SessionUser;
import gip.sever.dto.request.AdditionalRequest;
import gip.sever.dto.request.GoogleOauthToken;
import gip.sever.repository.CartRepository;
import gip.sever.repository.GoogleUserRepository;
import gip.sever.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
Expand All @@ -23,6 +25,7 @@ public class OauthService {
private final GoogleOauth googleOauth;
private final GoogleUserRepository googleUserRepository;
private final MemberRepository memberRepository;
private final CartRepository cartRepository;

private final HttpServletResponse response;

Expand All @@ -43,7 +46,8 @@ public int oauthLogin(HttpSession httpSession,String socialLoginType, String cod
httpSession.setAttribute("user", new SessionUser(googleUser));

if (memberRepository.findByEmail(googleUser.getEmail()).isEmpty()) { // 회원가입
memberRepository.save(new Member(googleUser));
Member save = memberRepository.save(new Member(googleUser));
cartRepository.save(new Cart(save));
return 1;
}
return 0;
Expand Down

0 comments on commit 0c623a5

Please sign in to comment.