// 주문 상품 정보 조회
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;
}
기술 설명
findByCartNo(int cartNo):
cartRepository.findByCartNo(cartNo)호출하여 주어진cartNo에 해당하는Cart엔티티를 조회- 조회 결과가 존재하면(
isPresent()):
modelMapper.map(cart, CartDTO.class)로Cart→CartDTO변환- 변환된
CartDTO객체 반환- 조회 결과가 없으면
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;
}
기술 설명
findByUser(String uid):
userRepository.findByUid(uid)호출해User엔티티 조회
- 없으면
null반환- 조회된
User엔티티를 인자로userDetailsRepository.findByUser(user)호출
UserDetails엔티티(추가 회원 정보) 조회- 결과가 존재하면(
isPresent()):
modelMapper.map(userDetails, UserDetailsDTO.class)로UserDetails→UserDetailsDTO변환- 변환된 DTO 반환
- 해당
UserDetails가 없으면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;
}
기술 설명
findAllByUser(String uid):
userRepository.findByUid(uid)호출하여User엔티티 조회
- 없으면
null반환- 조회된
User를 인자로couponIssueRepository.findAllByUser(user)호출
- 해당 사용자에게 발급된
CouponIssue엔티티 전부 조회- Stream 처리로 유효기간이 지나지 않은(현재 시간 이후인) 쿠폰만 필터링:
couponIssue.getValidTo()를LocalDateTime.parse(..., "yyyy-MM-dd HH:mm:ss")로 파싱isAfter(LocalDateTime.now())조건 만족하는 쿠폰만 남김- 필터링된
CouponIssue엔티티들을CouponIssueDTO로 변환 후 리스트로 수집- 최종
List<CouponIssueDTO>반환
// 바로 주문하기 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;
}
기술 설명
makeCart(ItemRequestDTO, UserDetails, Map<String,String> options):
CartDTO cartDTO = new CartDTO()생성 후 기본 필드 셋팅
prodNo = itemRequestDTO.getProdNo()cartProdCount = itemRequestDTO.getQuantity()uid = userDetails.getUsername()- 옵션 처리
options맵에서"opt1"~"opt6","opt1Cont"~"opt6Cont"키 조회하여cartDTO.setOptX,setOptXCont호출- 만약
options가null이면 옵션 정보 생략- 상품 정보 조회
productService.findByNo(prodNo)호출하여ProductDTO를 받아cartDTO.setProduct(productDTO)로 DTO에 설정- 사용자 정보 조회
userService.findById(uid)호출하여UserDTO를 받아cartDTO.setUser(userDTO)로 DTO에 설정List<CartDTO>반환
- 최종적으로
cartDTOList에cartDTO하나만 담아 반환
- 이 메서드는 “바로 구매하기” 기능에서 장바구니 없이 임시로
CartDTO형태로 주문 페이지에 보여줄 객체를 생성