장바구니 단일 조회 기능

// 주문 상품 정보 조회
public CartDTO findByCartNo(int cartNo) {
    Optional<Cart> optCart = cartRepository.findByCartNo(cartNo);

    if (optCart.isPresent()) {
        Cart cart = optCart.get();
        CartDTO cartDTO = modelMapper.map(cart, CartDTO.class);
        return cartDTO;
    }
    return null;
}

기술 설명

주문자 정보 조회 기능

// 주문 사용자 정보 조회
public UserDetailsDTO findByUser (String uid) {
    Optional<User> optUser = userRepository.findByUid(uid);
    if (optUser.isEmpty()) {
        return null;
    }
    User user = optUser.get();

    Optional<kr.co.lotteon.entity.user.UserDetails> optUserDetails = userDetailsRepository.findByUser(user);

    if (optUserDetails.isPresent()) {
        kr.co.lotteon.entity.user.UserDetails userDetails = optUserDetails.get();
        UserDetailsDTO userDetailsDTO = modelMapper.map(userDetails, UserDetailsDTO.class);
        return userDetailsDTO;
    }
    return null;
}

기술 설명

사용자별 발급된 쿠폰 목록 조회 기능

// 발급 받은 쿠폰 정보 조회
public List<CouponIssueDTO> findAllByUser(String uid) {
    Optional<User> optUser = userRepository.findByUid(uid);
    if (optUser.isEmpty()) {
        return null;
    }
    User user = optUser.get();

    List<CouponIssue> couponIssueList = couponIssueRepository.findAllByUser(user);

    List<CouponIssueDTO> couponIssueDTOList = couponIssueList.stream()
            .filter(couponIssue -> couponIssue.getValidTo() != null &&
                    LocalDateTime.parse(couponIssue.getValidTo(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
                            .isAfter(LocalDateTime.now()))
            .map(couponIssue -> modelMapper.map(couponIssue, CouponIssueDTO.class))
            .collect(Collectors.toList());

    return couponIssueDTOList;
}

기술 설명

바로 주문하기용 CartDTO 생성 기능

// 바로 주문하기 View용 CartDTO 리스트 생성
public List<CartDTO> makeCart(ItemRequestDTO itemRequestDTO, UserDetails userDetails, Map<String, String> options) {

    List<CartDTO> cartDTOList = new ArrayList<>();
    String uid = userDetails.getUsername();

    // CartDTO 객체 생성 및 기본 값 설정
    CartDTO cartDTO = new CartDTO();
    cartDTO.setProdNo(itemRequestDTO.getProdNo());
    cartDTO.setCartProdCount(itemRequestDTO.getQuantity());
    cartDTO.setUid(uid);

    // 옵션 값이 있으면 DTO에 셋팅
    if (options != null) {
        cartDTO.setOpt1(options.get("opt1"));
        cartDTO.setOpt1Cont(options.get("opt1Cont"));
        cartDTO.setOpt2(options.get("opt2"));
        cartDTO.setOpt2Cont(options.get("opt2Cont"));
        cartDTO.setOpt3(options.get("opt3"));
        cartDTO.setOpt3Cont(options.get("opt3Cont"));
        cartDTO.setOpt4(options.get("opt4"));
        cartDTO.setOpt4Cont(options.get("opt4Cont"));
        cartDTO.setOpt5(options.get("opt5"));
        cartDTO.setOpt5Cont(options.get("opt5Cont"));
        cartDTO.setOpt6(options.get("opt6"));
        cartDTO.setOpt6Cont(options.get("opt6Cont"));
    }

    // 상품 정보 가져와 DTO에 설정
    ProductDTO productDTO = productService.findByNo(itemRequestDTO.getProdNo());
    cartDTO.setProduct(productDTO);

    // 사용자 정보 가져와 DTO에 설정
    UserDTO userDTO = userService.findById(userDetails.getUsername());
    cartDTO.setUser(userDTO);

    cartDTOList.add(cartDTO);
    return cartDTOList;
}

기술 설명