Skip to content

Commit

Permalink
Merge pull request #18 from MARKETFUBY/feat/search
Browse files Browse the repository at this point in the history
[최윤지] 로그인 부분 적용 + 액세스 토큰 시간 연장
  • Loading branch information
choiyounji authored Nov 22, 2023
2 parents 6875dc9 + 0c9b365 commit 1b718a0
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 66 deletions.
13 changes: 13 additions & 0 deletions src/main/java/MARKETFUBY/Cart/dto/CartDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,17 @@ public class CartDto {
private Integer discountAmount;
private Integer paymentAmount;

@Builder
public CartDto(List<SingleProduct> roomTempList, List<SingleProduct> refrigeList, List<SingleProduct> frozenList, Integer totalAmount, Integer discountAmount, Integer paymentAmount){
this.roomTempList=roomTempList;
this.refrigeList=refrigeList;
this.frozenList=frozenList;
this.totalAmount=totalAmount;
this.discountAmount=discountAmount;
this.paymentAmount=paymentAmount;

}

@Getter
public static class SingleProduct{
private Long cartProductId;
Expand All @@ -102,5 +113,7 @@ public static SingleProduct of(CartProduct cartProduct){
return new SingleProduct(cartProduct);
}



}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@
public interface CartRepository extends JpaRepository<Cart, Long> {
Optional<Cart> findTopByMemberOrderByCartIdDesc(Member member);
Optional<Cart> findByCartId(Long cartId);
Integer countByMember(Member member);
}
114 changes: 69 additions & 45 deletions src/main/java/MARKETFUBY/Cart/service/CartService.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import MARKETFUBY.CartProduct.repository.CartProductRepository;
import MARKETFUBY.Member.domain.Member;
import MARKETFUBY.Member.repository.MemberRepository;
import MARKETFUBY.Member.service.MemberService;
import MARKETFUBY.Product.domain.Product;
import MARKETFUBY.Product.repository.ProductRepository;
import lombok.RequiredArgsConstructor;
Expand All @@ -28,58 +29,83 @@ public class CartService {
private final CartProductRepository cartProductRepository;
private final ProductRepository productRepository;
private final MemberRepository memberRepository;
private final MemberService memberService;

@Transactional(readOnly=true)
public CartDto getCartInfo(){
//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=memberRepository.findById(memberId).orElseThrow(()->new IllegalArgumentException("존재하지 않는 회원입니다."));
//findBymemberId중에 cartId가장 큰 애? 즉 제일 최신
Cart cart=cartRepository.findTopByMemberOrderByCartIdDesc(member).orElseThrow(()->new IllegalArgumentException("해당 id에 해당하는 member가 없습니다. id="+memberId));
Long cartId=cart.getCartId();
//cartId로 Cart product들 불러오고
List<CartProduct> cartProductList=cartProductRepository.findAllByCart(cart);
//productId로 정보불러오고 냉장인지.냉동인지.상온인지 리스트 작성
List<CartDto.SingleProduct> frozenList=new ArrayList<>();
List<CartDto.SingleProduct> refrigeList=new ArrayList<>();

//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();

List<CartDto.SingleProduct> roomTempList=new ArrayList<>();
CartDto cartDto=new CartDto();
System.out.println("cartId="+cartId);
List<CartDto.SingleProduct> refrigeList=new ArrayList<>();
List<CartDto.SingleProduct> frozenList=new ArrayList<>();
int totalAmount=0, discountAmount=0, paymentAmount=0;
for(CartProduct cartProduct : cartProductList){
String type= String.valueOf(cartProduct.getProduct().getPacking());
System.out.println("productType="+type);
if(type=="FREEZE"){
frozenList.add(CartDto.SingleProduct.of(cartProduct));
} else if (type=="COLD") {
refrigeList.add(CartDto.SingleProduct.of(cartProduct));
} else{
roomTempList.add(CartDto.SingleProduct.of(cartProduct));
//cartDto.getRoomTempList().add(CartDto.SingleProduct.of(cartProduct));

//장바구니에 담은 물품 하나도 없는 경우
if(cartRepository.countByMember(member)==0){
CartDto cartDto= CartDto.builder()
.roomTempList(roomTempList)
.refrigeList(refrigeList)
.frozenList(frozenList)
.totalAmount(totalAmount)
.discountAmount(discountAmount)
.paymentAmount(paymentAmount)
.build();
return cartDto;
}
//장바구니 정보 있는 경우
else{
//findBymemberId중에 cartId가장 큰 애? 즉 제일 최신
Cart cart=cartRepository.findTopByMemberOrderByCartIdDesc(member).orElseThrow(()->new IllegalArgumentException("해당 id에 해당하는 member가 없습니다. id="+member.getMemberId()));
Long cartId=cart.getCartId();
//cartId로 Cart product들 불러오고
List<CartProduct> cartProductList=cartProductRepository.findAllByCart(cart);
//productId로 정보불러오고 냉장인지.냉동인지.상온인지 리스트 작성
for(CartProduct cartProduct : cartProductList){
String type= String.valueOf(cartProduct.getProduct().getPacking());
System.out.println("productType="+type);
if(type=="FREEZE"){
frozenList.add(CartDto.SingleProduct.of(cartProduct));
} else if (type=="COLD") {
refrigeList.add(CartDto.SingleProduct.of(cartProduct));
} else{
roomTempList.add(CartDto.SingleProduct.of(cartProduct));
}
totalAmount+=cartProduct.getProduct().getPrice()*cartProduct.getCount();
discountAmount+=cartProduct.getProduct().getPrice()*cartProduct.getProduct().getDiscount()/100*cartProduct.getCount();
}
totalAmount+=cartProduct.getProduct().getPrice()*cartProduct.getCount();
discountAmount+=cartProduct.getProduct().getPrice()*cartProduct.getProduct().getDiscount()/100*cartProduct.getCount();
paymentAmount=totalAmount-discountAmount;

CartDto cartDto= CartDto.builder()
.roomTempList(roomTempList)
.refrigeList(refrigeList)
.frozenList(frozenList)
.totalAmount(totalAmount)
.discountAmount(discountAmount)
.paymentAmount(paymentAmount)
.build();

return cartDto;
}
paymentAmount=totalAmount-discountAmount;
cartDto.setFrozenList(frozenList);
cartDto.setRefrigeList(refrigeList);
cartDto.setRoomTempList(roomTempList);
//totalprice, discount, paymenttotal계산해서 dto에 넣어주기
cartDto.setTotalAmount(totalAmount);
cartDto.setDiscountAmount(discountAmount);
cartDto.setPaymentAmount(paymentAmount);

return cartDto;
}

public void postCart(PostCartDto postCartDto){
//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=memberRepository.findById(memberId).orElseThrow(()->new IllegalArgumentException("존재하지 않는 회원입니다."));

Cart cart=cartRepository.findTopByMemberOrderByCartIdDesc(member)
.orElseThrow(()-> new IllegalArgumentException("장바구니가 존재하지 않습니다."));
Long cartId=cart.getCartId();
//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();

Cart cart=new Cart();
if(cartRepository.countByMember(member)==0){
cart=Cart.builder()
.member(member)
.build();
cartRepository.save(cart);
} else{
cart=cartRepository.findTopByMemberOrderByCartIdDesc(member)
.orElseThrow(()-> new IllegalArgumentException("장바구니가 존재하지 않습니다."));
}

Long productId= postCartDto.getProductId();
Product product=productRepository.findById(productId)
.orElseThrow(()-> new IllegalArgumentException("제품이 존재하지 않습니다."));
Expand All @@ -98,10 +124,8 @@ public void postCart(PostCartDto postCartDto){
}

public void updateCart(UpdateCartDto updateCartDto){
//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=memberRepository.findById(memberId).orElseThrow(()->new IllegalArgumentException("존재하지 않는 회원입니다."));
member.setMemberId(1L);
//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();

Cart cart=cartRepository.findTopByMemberOrderByCartIdDesc(member)
.orElseThrow(()-> new IllegalArgumentException("장바구니가 존재하지 않습니다."));
Expand Down
19 changes: 10 additions & 9 deletions src/main/java/MARKETFUBY/Inquiry/service/InquiryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import MARKETFUBY.Inquiry.repository.InquiryRepository;
import MARKETFUBY.Member.domain.Member;
import MARKETFUBY.Member.repository.MemberRepository;
import MARKETFUBY.Member.service.MemberService;
import MARKETFUBY.Product.domain.Product;
import MARKETFUBY.Product.repository.ProductRepository;
import lombok.RequiredArgsConstructor;
Expand All @@ -23,14 +24,14 @@ public class InquiryService {
private final InquiryRepository inquiryRepository;
private final ProductRepository productRepository;
private final MemberRepository memberRepository;
private final MemberService memberService;

@Transactional(readOnly = true)
public InquiryResponseDto getInquiryInfo(){
InquiryResponseDto inquiryResponseDto= new InquiryResponseDto();

//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=memberRepository.findById(memberId).orElseThrow(()->new IllegalArgumentException("존재하지 않는 회원입니다."));
//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();

inquiryResponseDto.setName(member.getName());
inquiryResponseDto.setLevel(member.getLevel());
Expand All @@ -47,14 +48,14 @@ public InquiryResponseDto getInquiryInfo(){
}

public void create(InquiryRequestDto inquiryRequestDto){
//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=new Member();
member.setMemberId(1L);
Long productId=1L;
//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();

Long productId= inquiryRequestDto.getProductId();

Product product=productRepository.findById(productId)
.orElseThrow(()->new IllegalArgumentException("존재하지 않는 제품입니다."));
Inquiry inquiry=inquiryRepository.save(inquiryRequestDto.toEntity(member, product));
inquiryRepository.save(inquiryRequestDto.toEntity(member, product));
}

public void update(Long inquiryId, InquiryRequestDto inquiryRequestDto){
Expand Down
12 changes: 11 additions & 1 deletion src/main/java/MARKETFUBY/Member/service/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@
import io.jsonwebtoken.Claims;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.server.ResponseStatusException;

import javax.persistence.EntityNotFoundException;

Expand All @@ -24,7 +27,7 @@ public class MemberService {
private final RefreshTokenService refreshTokenService;

// AccessToken 만료 시간을 1시간으로 설정
private Long AccessExpireTimeMs = 1000 * 60 * 60L;
private Long AccessExpireTimeMs = 7 * 24 * 1000 * 60 * 60L;
// RefreshToken 만료 시간을 7일로 설정
private Long RefreshExpireTimeMs = 7 * 24 * 1000 * 60 * 60L;

Expand Down Expand Up @@ -130,4 +133,11 @@ public MemberLoginResponseDto requestRefresh(String refreshToken) {
.refreshToken(refreshToken)
.build();
}

public Member getCurrentMember() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String fubyId = authentication.getName();
return memberRepository.findByFubyId(fubyId).orElseThrow(() ->
new ResponseStatusException(HttpStatus.FORBIDDEN, "인증된 사용자 정보가 없습니다."));
}
}
9 changes: 6 additions & 3 deletions src/main/java/MARKETFUBY/Order/service/OrderService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import MARKETFUBY.Member.domain.Member;
import MARKETFUBY.Member.repository.MemberRepository;
import MARKETFUBY.Member.service.MemberService;
import MARKETFUBY.Order.domain.Order;
import MARKETFUBY.Order.dto.OrderDto;
import MARKETFUBY.Order.dto.OrderResponseDto;
Expand All @@ -20,14 +21,16 @@ public class OrderService {
private final OrderRepository orderRepository;
private final MemberRepository memberRepository;
private final OrderProductRepository orderProductRepository;
private final MemberService memberService;

public OrderResponseDto getOrderList(){

OrderResponseDto orderResponseDto =new OrderResponseDto();
List<OrderDto> orderDtoList=new ArrayList<>();
//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=memberRepository.findById(memberId).orElseThrow(()->new IllegalArgumentException("존재하지 않는 회원입니다."));

//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();

orderResponseDto.setName(member.getName());
orderResponseDto.setLevel(member.getLevel());

Expand Down
17 changes: 10 additions & 7 deletions src/main/java/MARKETFUBY/Review/service/ReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import MARKETFUBY.Inquiry.dto.InquiryDto;
import MARKETFUBY.Member.domain.Member;
import MARKETFUBY.Member.repository.MemberRepository;
import MARKETFUBY.Member.service.MemberService;
import MARKETFUBY.Product.domain.Product;
import MARKETFUBY.Product.repository.ProductRepository;
import MARKETFUBY.Review.domain.Review;
Expand All @@ -28,12 +29,13 @@ public class ReviewService {
private final ReviewRepository reviewRepository;
private final ReviewImageRepository reviewImageRepository;
private final MemberRepository memberRepository;
private final MemberService memberService;

public ReviewResponseDto getReviewList(){
ReviewResponseDto reviewResponseDto=new ReviewResponseDto();
//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=memberRepository.findById(memberId).orElseThrow(()->new IllegalArgumentException("존재하지 않는 회원입니다."));

//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();

reviewResponseDto.setName(member.getName());
reviewResponseDto.setLevel(member.getLevel());
Expand All @@ -49,10 +51,11 @@ public ReviewResponseDto getReviewList(){
}

public void create(ReviewRequestDto reviewRequestDto){
//현재 로그인 중인 사용자 불러오는 단계 필요
Long memberId=1L;
Member member=new Member();
member.setMemberId(1L);

//현재 로그인 중인 사용자 불러오기
Member member= memberService.getCurrentMember();
System.out.println("memberName : "+member.getName());

Long productId= reviewRequestDto.getProductId();
Product product=productRepository.findById(productId)
.orElseThrow(()->new IllegalArgumentException("존재하지 않는 제품입니다."));
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/MARKETFUBY/utils/JwtUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public static boolean isExpired(String token, String secretKey) {
// token에서 userName을 가져와 리턴
public static String getUserName(String token, String secretKey) {
return Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token)
.getBody().get("userName", String.class);
.getBody().get("fubyId", String.class);
}

// token 생성 (createAccessToken과 createRefreshToken이 이 함수를 호출)
Expand Down

0 comments on commit 1b718a0

Please sign in to comment.