feat(customer-vue, order-service): 상품 상세페이지, 장바구니 기능 추가
- 상품 상세페이지 - 장바구니 기능 추가
This commit is contained in:
@@ -64,6 +64,22 @@ public class Order extends BaseEntity {
|
||||
return order;
|
||||
}
|
||||
|
||||
public static Order of(Long userId, Long userCouponId, Long storeId, Long orderPrice,
|
||||
OrderItem orderItem) {
|
||||
Order order = new Order();
|
||||
order.userId = userId;
|
||||
order.userCouponId = userCouponId;
|
||||
order.storeId = storeId;
|
||||
order.orderPrice = orderPrice;
|
||||
|
||||
order.addOrderItem(orderItem);
|
||||
|
||||
order.usedPoint = 0L;
|
||||
order.orderStatus = OrderStatus.PLACED;
|
||||
order.orderTime = LocalDateTime.now();
|
||||
return order;
|
||||
}
|
||||
|
||||
public void setTransaction(Transaction transaction) {
|
||||
this.transaction = transaction;
|
||||
transaction.setOrder(this);
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.justpickup.orderservice.domain.order.repository;
|
||||
import com.justpickup.orderservice.domain.order.entity.Order;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface OrderRepository extends JpaRepository<Order, Long> {
|
||||
import java.util.Optional;
|
||||
|
||||
public interface OrderRepository extends JpaRepository<Order, Long> {
|
||||
Optional<Order> findByUserId(Long userId);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.justpickup.orderservice.domain.order.service;
|
||||
import com.justpickup.orderservice.domain.order.dto.OrderDto;
|
||||
import com.justpickup.orderservice.domain.order.dto.OrderSearchCondition;
|
||||
import com.justpickup.orderservice.domain.order.dto.PrevOrderSearch;
|
||||
import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.SliceImpl;
|
||||
@@ -13,4 +14,5 @@ public interface OrderService {
|
||||
List<OrderDto> findOrderMain(OrderSearchCondition condition, Long storeId);
|
||||
Page<OrderDto> findPrevOrderMain(PrevOrderSearch search, Pageable pageable, Long storeId);
|
||||
SliceImpl<OrderDto> findOrderHistory(Pageable pageable, Long userId);
|
||||
void addItemToBasket(OrderItemDto orderItemDto,Long storeId, Long userId);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,11 @@ import com.justpickup.orderservice.domain.order.dto.PrevOrderSearch;
|
||||
import com.justpickup.orderservice.domain.order.entity.Order;
|
||||
import com.justpickup.orderservice.domain.order.repository.OrderRepository;
|
||||
import com.justpickup.orderservice.domain.order.repository.OrderRepositoryCustom;
|
||||
import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto;
|
||||
import com.justpickup.orderservice.domain.orderItem.entity.OrderItem;
|
||||
import com.justpickup.orderservice.domain.orderItem.repository.OrderItemRepository;
|
||||
import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption;
|
||||
import com.justpickup.orderservice.domain.orderItemOption.repository.OrderItemOptionRepository;
|
||||
import com.justpickup.orderservice.global.client.store.GetItemResponse;
|
||||
import com.justpickup.orderservice.global.client.store.StoreClient;
|
||||
import com.justpickup.orderservice.global.client.user.GetCustomerResponse;
|
||||
@@ -20,6 +25,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -29,6 +35,8 @@ import java.util.stream.Collectors;
|
||||
public class OrderServiceImpl implements OrderService {
|
||||
|
||||
private final OrderRepository orderRepository;
|
||||
private final OrderItemRepository orderItemRepository;
|
||||
private final OrderItemOptionRepository orderItemOptionRepository;
|
||||
private final OrderRepositoryCustom orderRepositoryCustom;
|
||||
private final StoreClient storeClient;
|
||||
private final UserClient userClient;
|
||||
@@ -91,4 +99,31 @@ public class OrderServiceImpl implements OrderService {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addItemToBasket(OrderItemDto orderItemDto,Long storeId, Long userId) {
|
||||
orderItemDto.getCount();
|
||||
|
||||
//orderItemOption Entity를 생성한다.
|
||||
List<OrderItemOption> orderItemOptions = orderItemDto.getOrderItemOptionDtoList()
|
||||
.stream().map(orderItemOptionDto -> OrderItemOption.of(orderItemDto.getId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//orderItem을 Entity를 생성한다.
|
||||
OrderItem orderItem = OrderItem.of(orderItemDto.getItemId()
|
||||
, orderItemDto.getPrice()
|
||||
, orderItemDto.getCount()
|
||||
,orderItemOptions);
|
||||
|
||||
//HARD_CODE
|
||||
Long userCouponId=0L;
|
||||
|
||||
Optional<Order> optionalOrder = orderRepository.findByUserId(userId);
|
||||
if(optionalOrder.isPresent()){
|
||||
optionalOrder.get().addOrderItem(orderItem);
|
||||
}else{
|
||||
orderRepository.save(Order.of(userId,userCouponId,storeId,orderItemDto.getPrice(),orderItem));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.justpickup.orderservice.domain.order.entity.OrderStatus;
|
||||
import com.justpickup.orderservice.domain.order.service.OrderService;
|
||||
import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto;
|
||||
import com.justpickup.orderservice.global.dto.Result;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -14,10 +15,7 @@ import org.springframework.data.domain.SliceImpl;
|
||||
import org.springframework.data.web.PageableDefault;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
@@ -89,4 +87,37 @@ public class OrderCustomerApiController {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* order
|
||||
*/
|
||||
|
||||
@PostMapping("item")
|
||||
public ResponseEntity addItemToBasket( @RequestBody RequestItem requestItem,
|
||||
@RequestHeader(value = "user-id") String userId){
|
||||
OrderItemDto orderItemDto = OrderItemDto.of(-1L,
|
||||
requestItem.itemId,
|
||||
requestItem.getPrice(),
|
||||
requestItem.getCount(),
|
||||
requestItem.getItemOptionIds());
|
||||
orderService.addItemToBasket(orderItemDto,requestItem.getStoreId() ,Long.parseLong(userId));
|
||||
return ResponseEntity.status(HttpStatus.NO_CONTENT)
|
||||
.body(Result.createSuccessResult(null));
|
||||
}
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class RequestItem{
|
||||
private Long itemId;
|
||||
private Long storeId;
|
||||
private Long price;
|
||||
private Long count;
|
||||
private List<Long> itemOptionIds ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package com.justpickup.orderservice.domain.orderItem.dto;
|
||||
|
||||
import com.justpickup.orderservice.domain.orderItem.entity.OrderItem;
|
||||
import com.justpickup.orderservice.domain.orderItemOption.dto.OrderItemOptionDto;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Getter @NoArgsConstructor
|
||||
public class OrderItemDto {
|
||||
|
||||
@@ -14,7 +18,7 @@ public class OrderItemDto {
|
||||
|
||||
private String itemName;
|
||||
|
||||
// private List<OrderItemOptionDto> orderItemOptionDtoList;
|
||||
private List<OrderItemOptionDto> orderItemOptionDtoList;
|
||||
|
||||
private Long price;
|
||||
|
||||
@@ -38,6 +42,18 @@ public class OrderItemDto {
|
||||
.build();
|
||||
}
|
||||
|
||||
public static OrderItemDto of(Long id, Long itemId, Long price, Long count, List<Long> itemOptionIds) {
|
||||
OrderItemDto orderItemDto = new OrderItemDto();
|
||||
orderItemDto.id = id;
|
||||
orderItemDto.itemId = itemId;
|
||||
orderItemDto.price = price;
|
||||
orderItemDto.count = count;
|
||||
orderItemDto.orderItemOptionDtoList = itemOptionIds.stream()
|
||||
.map(OrderItemOptionDto::new)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return orderItemDto;
|
||||
}
|
||||
// == 변수 변경 메소드 == //
|
||||
public void setItemName(String itemName) {
|
||||
this.itemName = itemName;
|
||||
|
||||
@@ -54,4 +54,15 @@ public class OrderItem extends BaseEntity {
|
||||
}
|
||||
return orderItem;
|
||||
}
|
||||
|
||||
public static OrderItem of(Long itemId, Long price, Long count, List<OrderItemOption> orderItemOptions) {
|
||||
OrderItem orderItem = new OrderItem();
|
||||
orderItem.itemId = itemId;
|
||||
orderItem.price = price;
|
||||
orderItem.count = count;
|
||||
for (OrderItemOption orderItemOption : orderItemOptions) {
|
||||
orderItem.addOrderItemOption(orderItemOption);
|
||||
}
|
||||
return orderItem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.justpickup.orderservice.domain.orderItemOption.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
public class OrderItemOptionDto {
|
||||
private Long id;
|
||||
|
||||
public OrderItemOptionDto(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
@@ -32,4 +32,11 @@ public class OrderItemOption extends BaseEntity {
|
||||
OrderItemOption orderItemOption = new OrderItemOption();
|
||||
return orderItemOption;
|
||||
}
|
||||
|
||||
public static OrderItemOption of(Long itemOptionId) {
|
||||
OrderItemOption orderItemOption = new OrderItemOption();
|
||||
orderItemOption.itemOptionId = itemOptionId;
|
||||
return orderItemOption;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.justpickup.orderservice.domain.orderItemOption.repository;
|
||||
|
||||
|
||||
import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface OrderItemOptionRepository extends JpaRepository<OrderItemOption , Long> {
|
||||
}
|
||||
@@ -7,7 +7,7 @@ spring:
|
||||
|
||||
jpa:
|
||||
hibernate:
|
||||
ddl-auto: validate
|
||||
ddl-auto: create-drop
|
||||
generate-ddl: true
|
||||
open-in-view: false
|
||||
properties:
|
||||
|
||||
Reference in New Issue
Block a user