Skip to content

Commit 44067f0

Browse files
committed
feature #112: 정산 수정
정산 내역 조회시 환불 내역이 있으면 환불 상태 반환, 그렇지 않으면 주문 상태 반환
1 parent ab4e387 commit 44067f0

5 files changed

Lines changed: 48 additions & 30 deletions

File tree

src/main/java/com/irum/come2us/domain/order/application/service/OwnerOrderService.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,12 @@ public void updateOrderStatusToDelivered(UUID orderDetailId) {
182182
/** OrderDetail 상태 목록을 기반으로 집계된(Aggregated) Order의 상태를 결정 */
183183
private OrderStatus aggregateOrderStatus(OrderDetail orderDetail) {
184184

185-
Order order =
186-
orderRepository
187-
.findByOrderId(orderDetail.getOrder().getOrderId())
188-
.orElseThrow(() -> new CommonException(OrderErrorCode.ORDER_NOT_FOUND));
185+
// Order order =
186+
// orderRepository
187+
// .findByOrderId(orderDetail.getOrder().getOrderId())
188+
// .orElseThrow(() -> new
189+
// CommonException(OrderErrorCode.ORDER_NOT_FOUND));
190+
Order order = orderDetail.getOrder();
189191
List<OrderDetail> orderDetailList = orderDetailRepository.findAllByOrder(order);
190192
List<OrderStatus> orderStatusList =
191193
orderDetailList.stream().map(OrderDetail::getOrderStatusIndi).toList();

src/main/java/com/irum/come2us/domain/order/application/service/SalesService.java

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.irum.come2us.domain.member.domain.entity.Member;
44
import com.irum.come2us.domain.order.domain.entity.Order;
5-
import com.irum.come2us.domain.order.domain.entity.enums.OrderStatus;
65
import com.irum.come2us.domain.order.domain.repository.OrderRepository;
76
import com.irum.come2us.domain.order.presentation.dto.response.SalesResponse;
87
import com.irum.come2us.domain.refund.domain.entity.Refund;
@@ -13,9 +12,7 @@
1312
import com.irum.come2us.global.presentation.advice.exception.CommonException;
1413
import com.irum.come2us.global.presentation.advice.exception.errorcode.StoreErrorCode;
1514
import com.irum.come2us.global.util.MemberUtil;
16-
import java.util.List;
17-
import java.util.Optional;
18-
import java.util.UUID;
15+
import java.util.*;
1916
import lombok.RequiredArgsConstructor;
2017
import org.springframework.stereotype.Service;
2118

@@ -33,27 +30,17 @@ public SalesResponse getSalesList(UUID storeId) {
3330
storeRepository
3431
.findById(storeId)
3532
.orElseThrow(() -> new CommonException(StoreErrorCode.STORE_NOT_FOUND));
36-
List<OrderStatus> orderStatuses =
37-
List.of(
38-
OrderStatus.DELIVERED,
39-
OrderStatus.PARTIALLY_DELIVERED,
40-
OrderStatus.DELIVERED,
41-
OrderStatus.SHIPPED,
42-
OrderStatus.PREPARING);
43-
List<RefundStatus> refundStatuses =
44-
List.of(
45-
RefundStatus.APPROVED,
46-
RefundStatus.COMPLETED,
47-
RefundStatus.PENDING,
48-
RefundStatus.REJECTED,
49-
RefundStatus.REQUESTED);
33+
memberUtil.assertMemberResourceAccess(store.getMember());
34+
5035
List<Order> orders = orderRepository.findSalesAll(storeId);
5136
List<SalesResponse.OrderSummary> orderList =
5237
orders.stream().map(this::toOrderSummary).toList();
5338
return new SalesResponse(orderList, null, false);
5439
}
5540

5641
private SalesResponse.OrderSummary toOrderSummary(Order order) {
42+
String displayStatus = DisplayStatus(order);
43+
5744
List<SalesResponse.ProductSummary> productList =
5845
order.getOrderDetails().stream()
5946
.map(
@@ -65,12 +52,6 @@ private SalesResponse.OrderSummary toOrderSummary(Order order) {
6552
detail.getPrice(),
6653
detail.getOptionName()))
6754
.toList();
68-
Optional<Refund> latestRefund = refundRepository.findLatestByOrder(order);
69-
70-
String displayStatus = latestRefund
71-
.map(r -> r.getRefundStatus().name())
72-
.orElse(order.getOrderStatusAll().name());
73-
7455

7556
return new SalesResponse.OrderSummary(
7657
order.getOrderId(),
@@ -85,4 +66,20 @@ private SalesResponse.OrderSummary toOrderSummary(Order order) {
8566
productList,
8667
displayStatus);
8768
}
69+
70+
// 환불 존재시 환불 상태 반환, 환불 존재하지 않으면 주문 상태 반환
71+
private String DisplayStatus(Order order) {
72+
Optional<Refund> latestRefundOpt =
73+
refundRepository.findTopByOrderOrderByCreatedAtDesc(order);
74+
75+
if (latestRefundOpt.isPresent()) {
76+
Refund latestRefund = latestRefundOpt.get();
77+
RefundStatus refundStatus = latestRefund.getRefundStatus();
78+
79+
if (refundStatus != RefundStatus.REJECTED) {
80+
return refundStatus.name();
81+
}
82+
}
83+
return order.getOrderStatusAll().name();
84+
}
8885
}

src/main/java/com/irum/come2us/domain/order/domain/repository/OrderRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,6 @@ public interface OrderRepository extends JpaRepository<Order, UUID> {
2323
@Modifying(clearAutomatically = true)
2424
@Query("UPDATE Order o SET o.orderStatusAll = 'FAILED' WHERE o.orderId IN :orderIds")
2525
int updateStatusToFailedByIds(@Param("orderIds") List<UUID> orderIds);
26+
27+
List<Order> findSalesAll(@Param("storeId") UUID storeId);
2628
}

src/main/java/com/irum/come2us/domain/order/presentation/controller/OwnerOrderController.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.irum.come2us.domain.order.presentation.controller;
22

33
import com.irum.come2us.domain.order.application.service.OwnerOrderService;
4+
import com.irum.come2us.domain.order.application.service.SalesService;
45
import com.irum.come2us.domain.order.presentation.dto.request.OwnerOrderShippedRequest;
6+
import com.irum.come2us.domain.order.presentation.dto.response.OrderDetailResponse;
57
import com.irum.come2us.domain.order.presentation.dto.response.OwnerOrderListResponse;
8+
import com.irum.come2us.domain.order.presentation.dto.response.SalesResponse;
69
import java.util.UUID;
710
import lombok.RequiredArgsConstructor;
811
import lombok.extern.slf4j.Slf4j;
@@ -15,6 +18,7 @@
1518
@Slf4j
1619
public class OwnerOrderController {
1720
private final OwnerOrderService ownerOrderService;
21+
private final SalesService salesService;
1822

1923
/** [상점] 배송 준비 중 목록 조회 * */
2024
@GetMapping("/{storeId}/preparing")
@@ -73,4 +77,18 @@ public ResponseEntity<Void> orderStatusToDeliveredUpdate(@PathVariable UUID orde
7377
ownerOrderService.updateOrderStatusToDelivered(orderDetailId);
7478
return ResponseEntity.noContent().build();
7579
}
80+
81+
/* [상점] 주문 상세 */
82+
@GetMapping("/{orderId}")
83+
public ResponseEntity<OrderDetailResponse> ownerOrderDetail(@PathVariable UUID orderId) {
84+
OrderDetailResponse response = ownerOrderService.detailResponse(orderId);
85+
return ResponseEntity.ok(response);
86+
}
87+
88+
// 정산 내역
89+
@GetMapping("/{storeId}/sales")
90+
public ResponseEntity<SalesResponse> salesResponse(@PathVariable UUID storeId) {
91+
SalesResponse response = salesService.getSalesList(storeId);
92+
return ResponseEntity.ok(response);
93+
}
7694
}

src/main/java/com/irum/come2us/domain/refund/domain/repository/RefundRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,5 @@ public interface RefundRepository extends JpaRepository<Refund, UUID> {
1818
// public interface OrderRepository extends JpaRepository<Order, UUID> {..}
1919
Optional<Order> findByOrder_OrderId(@Param("orderId") UUID orderId);
2020

21-
Optional<Refund> findLatestByOrder(Order order);
22-
21+
Optional<Refund> findTopByOrderOrderByCreatedAtDesc(Order order);
2322
}

0 commit comments

Comments
 (0)