Skip to content

Commit 7ecc0b5

Browse files
committed
feature #112: 정산 내역 추가
정산 완료 금액 구현
1 parent 606bf13 commit 7ecc0b5

4 files changed

Lines changed: 60 additions & 6 deletions

File tree

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.irum.come2us.domain.member.domain.entity.Member;
44
import com.irum.come2us.domain.order.domain.entity.Order;
55
import com.irum.come2us.domain.order.domain.repository.OrderRepository;
6+
import com.irum.come2us.domain.order.presentation.dto.response.BalanceResponse;
67
import com.irum.come2us.domain.order.presentation.dto.response.SalesResponse;
78
import com.irum.come2us.domain.refund.domain.entity.Refund;
89
import com.irum.come2us.domain.refund.domain.entity.enums.RefundStatus;
@@ -15,6 +16,7 @@
1516
import java.util.*;
1617
import lombok.RequiredArgsConstructor;
1718
import org.springframework.stereotype.Service;
19+
import org.springframework.transaction.annotation.Transactional;
1820

1921
@Service
2022
@RequiredArgsConstructor
@@ -82,4 +84,28 @@ private String DisplayStatus(Order order) {
8284
}
8385
return order.getOrderStatusAll().name();
8486
}
87+
@Transactional(readOnly = true)
88+
public BalanceResponse getSettlement(UUID storeId) {
89+
// 1. 해당 스토어의 모든 주문 가져오기
90+
List<Order> orders = orderRepository.findAllByStore_Id(storeId);
91+
92+
// 2. 총 결제 금액 계산
93+
int totalPaymentAmount = orders.stream()
94+
.map(Order::getTotalPrice)
95+
.mapToInt(Integer::intValue)
96+
.sum();
97+
98+
// 3. 환불된 금액 계산
99+
List<Refund> refunds = refundRepository.findAll(); // 또는 findByOrder_StoreIdAndRefundStatus(...)
100+
int totalRefundAmount = refunds.stream()
101+
.filter(refund -> refund.getOrder().getStore().getId().equals(storeId))
102+
.mapToInt(Refund::getPrice)
103+
.sum();
104+
105+
// 4. 정산 금액 계산
106+
int settlementAmount = totalPaymentAmount - totalRefundAmount;
107+
108+
return new BalanceResponse(totalPaymentAmount, totalRefundAmount, settlementAmount);
109+
}
110+
85111
}

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,4 @@ public ResponseEntity<OrderDetailResponse> ownerOrderDetail(@PathVariable UUID o
8585
return ResponseEntity.ok(response);
8686
}
8787

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-
}
9488
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.irum.come2us.domain.order.presentation.controller;
2+
3+
import com.irum.come2us.domain.order.application.service.SalesService;
4+
import com.irum.come2us.domain.order.presentation.dto.response.SalesResponse;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.http.ResponseEntity;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.PathVariable;
9+
import org.springframework.web.bind.annotation.RequestMapping;
10+
import org.springframework.web.bind.annotation.RestController;
11+
12+
import java.util.UUID;
13+
14+
@RestController
15+
@RequiredArgsConstructor
16+
@RequestMapping("/orders")
17+
public class SalesController {
18+
private final SalesService salesService;
19+
20+
// 정산 내역
21+
@GetMapping("/{storeId}/sales")
22+
public ResponseEntity<SalesResponse> salesResponse(@PathVariable UUID storeId) {
23+
SalesResponse response = salesService.getSalesList(storeId);
24+
return ResponseEntity.ok(response);
25+
}
26+
27+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.irum.come2us.domain.order.presentation.dto.response;
2+
3+
public record BalanceResponse(
4+
int totalSalesAmount, // 총 결제 금액 합계
5+
int totalRefundAmount, // 총 환불 금액 합계
6+
int settlementAmount // 정산 금액 (총 금액 - 환불 금액)
7+
) {}

0 commit comments

Comments
 (0)