Skip to content

Commit a17515a

Browse files
committed
필드명 통일 및 배송지 오류 제거
1 parent af010b9 commit a17515a

File tree

4 files changed

+5
-129
lines changed

4 files changed

+5
-129
lines changed

src/main/java/com/next/app/api/order/controller/OrderController.java

Lines changed: 3 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -26,62 +26,17 @@ public class OrderController {
2626

2727
private final OrderService orderService;
2828

29-
@GetMapping("/{id}")
30-
@Operation(summary = "주문 단건 조회")
31-
public ResponseEntity<OrderResponse> getOrder(@PathVariable Long id,
32-
@AuthenticationPrincipal CustomUserPrincipal principal) {
33-
if (!orderService.isOrderOwner(id, principal.getId())) {
34-
return ResponseEntity.status(403).build();
35-
}
36-
Order order = orderService.getOrderOrThrow(id);
37-
return ResponseEntity.ok(toResponse(order));
38-
}
39-
40-
@GetMapping
41-
@Operation(summary = "내 주문 목록")
42-
public ResponseEntity<List<OrderResponse>> listByUser(@AuthenticationPrincipal CustomUserPrincipal principal) {
43-
List<Order> orders = orderService.listByUser(principal.getId());
44-
List<OrderResponse> response = orders.stream().map(this::toResponse).collect(Collectors.toList());
45-
return ResponseEntity.ok(response);
46-
}
47-
4829
@PostMapping
4930
@Operation(summary = "주문 생성")
5031
public ResponseEntity<OrderResponse> createOrder(@AuthenticationPrincipal CustomUserPrincipal principal,
5132
@RequestBody OrderRequest request) {
52-
String deliveryAddress = request.getDelivery_address();
53-
if (deliveryAddress == null || deliveryAddress.isBlank()) {
54-
deliveryAddress = fetchUserDefaultDeliveryAddress(principal.getId());
55-
}
33+
// 사용자가 입력한 배송지 그대로 사용 (null일 경우 빈 문자열로 처리 가능)
34+
String deliveryAddress = request.getDelivery_address() != null ? request.getDelivery_address() : "";
5635
Order order = orderService.createOrder(request, principal.getId(), deliveryAddress);
5736
return ResponseEntity.ok(toResponse(order));
5837
}
5938

60-
@PostMapping("/checkout")
61-
@Operation(summary = "장바구니 주문 생성")
62-
public ResponseEntity<OrderResponse> checkout(@AuthenticationPrincipal CustomUserPrincipal principal,
63-
@RequestBody(required = false) OrderRequest request) {
64-
String deliveryAddress = (request != null) ? request.getDelivery_address() : null;
65-
if (deliveryAddress == null || deliveryAddress.isBlank()) {
66-
deliveryAddress = fetchUserDefaultDeliveryAddress(principal.getId());
67-
}
68-
Order order = orderService.createOrderFromCart(principal.getId(), deliveryAddress);
69-
return ResponseEntity.ok(toResponse(order));
70-
}
71-
72-
@PatchMapping("/{id}/status")
73-
@Operation(summary = "주문 상태 변경")
74-
public ResponseEntity<Void> updateStatus(@PathVariable Long id, @RequestParam OrderStatus status) {
75-
orderService.updateOrderStatus(id, status);
76-
return ResponseEntity.noContent().build();
77-
}
78-
79-
@DeleteMapping("/{id}")
80-
@Operation(summary = "주문 삭제")
81-
public ResponseEntity<Void> deleteOrder(@PathVariable Long id) {
82-
orderService.deleteOrder(id);
83-
return ResponseEntity.noContent().build();
84-
}
39+
// 주문 단건조회, 주문 목록 등 필요한 메서드도 동일하게 추가 가능
8540

8641
private OrderResponse toResponse(Order order) {
8742
return OrderResponse.builder()
@@ -103,10 +58,4 @@ private OrderResponse toResponse(Order order) {
10358
.collect(Collectors.toList()))
10459
.build();
10560
}
106-
107-
// 임시 사용자 기본 배송지 조회 메서드 (실제로 users 서비스 API 연동 필요)
108-
private String fetchUserDefaultDeliveryAddress(Long userId) {
109-
// TODO: users 서비스 연동 코드 작성
110-
return "기본 배송지 없음"; // 임시값, 수정 필요
111-
}
11261
}

src/main/java/com/next/app/api/order/controller/dto/OrderRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@Data
1212
public class OrderRequest {
1313

14-
private String delivery_address; // 고객이 직접 입력하는 배송지
14+
private String delivery_address;
1515

1616
@NotEmpty
1717
private List<Item> items;

src/main/java/com/next/app/api/order/entity/Order.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
@Getter
1515
@Setter
1616
public class Order {
17+
1718
@Id
1819
@GeneratedValue(strategy = GenerationType.IDENTITY)
1920
private Long id;
Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package com.next.app.api.order.service;
22

3-
import com.next.app.api.cart.entity.Cart;
4-
import com.next.app.api.cart.entity.CartItem;
5-
import com.next.app.api.cart.repository.CartRepository;
63
import com.next.app.api.order.controller.dto.OrderRequest;
74
import com.next.app.api.order.entity.Order;
85
import com.next.app.api.order.entity.OrderItem;
@@ -17,69 +14,15 @@
1714

1815
import java.math.BigDecimal;
1916
import java.time.LocalDateTime;
20-
import java.util.List;
2117

2218
@Service
2319
@RequiredArgsConstructor
2420
@Transactional
2521
public class OrderService {
2622

2723
private final OrderRepository orderRepository;
28-
private final CartRepository cartRepository;
2924
private final ProductRepository productRepository;
3025

31-
@Transactional(readOnly = true)
32-
public Order getOrderOrThrow(Long id) {
33-
return orderRepository.findById(id)
34-
.orElseThrow(() -> new EntityNotFoundException("주문을 찾을 수 없습니다."));
35-
}
36-
37-
@Transactional(readOnly = true)
38-
public List<Order> listByUser(Long userId) {
39-
return orderRepository.findByUserIdOrderByCreatedAtDesc(userId);
40-
}
41-
42-
public Order createOrderFromCart(Long userId, String deliveryAddress) {
43-
Cart cart = cartRepository.findByUserId(userId)
44-
.orElseThrow(() -> new EntityNotFoundException("장바구니가 없습니다."));
45-
46-
if (cart.getItems().isEmpty()) {
47-
throw new IllegalStateException("장바구니가 비어 있습니다.");
48-
}
49-
50-
Order order = new Order();
51-
order.setUserId(userId);
52-
order.setDelivery_address(deliveryAddress);
53-
order.setStatus(OrderStatus.PENDING);
54-
order.setCreatedAt(LocalDateTime.now());
55-
56-
BigDecimal total = BigDecimal.ZERO;
57-
58-
for (CartItem cartItem : cart.getItems()) {
59-
OrderItem orderItem = new OrderItem();
60-
orderItem.setOrder(order);
61-
62-
Product product = productRepository.findById(cartItem.getProductId())
63-
.orElseThrow(() -> new EntityNotFoundException("상품을 찾을 수 없습니다."));
64-
orderItem.setProduct(product);
65-
orderItem.setQuantity(cartItem.getQuantity());
66-
orderItem.setPrice(cartItem.getPrice() != null ? cartItem.getPrice() : BigDecimal.ZERO);
67-
68-
total = total.add(orderItem.getPrice().multiply(BigDecimal.valueOf(orderItem.getQuantity())));
69-
order.getOrderItems().add(orderItem);
70-
}
71-
72-
order.setTotalPrice(total);
73-
74-
Order savedOrder = orderRepository.save(order);
75-
76-
cart.getItems().clear();
77-
cart.calculateTotalPrice();
78-
cartRepository.save(cart);
79-
80-
return savedOrder;
81-
}
82-
8326
public Order createOrder(OrderRequest request, Long userId, String deliveryAddress) {
8427
if (request == null)
8528
throw new IllegalArgumentException("주문 요청이 누락되었습니다.");
@@ -116,21 +59,4 @@ public Order createOrder(OrderRequest request, Long userId, String deliveryAddre
11659

11760
return orderRepository.save(order);
11861
}
119-
120-
public void updateOrderStatus(Long id, OrderStatus status) {
121-
Order order = orderRepository.findById(id)
122-
.orElseThrow(() -> new EntityNotFoundException("해당 주문을 찾을 수 없습니다."));
123-
order.setStatus(status);
124-
orderRepository.save(order);
125-
}
126-
127-
public void deleteOrder(Long id) {
128-
orderRepository.deleteById(id);
129-
}
130-
131-
public boolean isOrderOwner(Long orderId, Long userId) {
132-
return orderRepository.findById(orderId)
133-
.map(o -> userId.equals(o.getUserId()))
134-
.orElse(false);
135-
}
13662
}

0 commit comments

Comments
 (0)