Skip to content

Commit 4b781d9

Browse files
authored
Merge pull request #65 from ConconDev/feat/transaction
fix: 거래 요청 수정
2 parents 4ac447d + 4756e19 commit 4b781d9

File tree

5 files changed

+92
-52
lines changed

5 files changed

+92
-52
lines changed

src/main/java/com/sookmyung/concon/Order/controller/OrderController.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public ResponseEntity<List<OrderSimpleResponseDto>> getAllOrders(
4646
return ResponseEntity.ok(orderService.getAllOrders(token, page, size));
4747
}
4848

49-
// 나의 판매 상품 조회(진행중)
49+
// 나의 판매 상품 조회(판매중)
5050
@Operation(summary = "나의 판매중(진행중)인 상품 전체 조회")
5151
@GetMapping("/all/available")
5252
public ResponseEntity<List<OrderSimpleResponseDto>> getAllOrdersAvailable(
@@ -56,6 +56,16 @@ public ResponseEntity<List<OrderSimpleResponseDto>> getAllOrdersAvailable(
5656
return ResponseEntity.ok(orderService.getAllOrdersAvailable(token, page, size));
5757
}
5858

59+
// 나의 판매 상품 조회(거래중)
60+
@Operation(summary = "나의 거래중인 상품 전체 조회")
61+
@GetMapping("/all/in-progress")
62+
public ResponseEntity<List<OrderSimpleResponseDto>> getAllOrdersInProgress(
63+
@RequestHeader("Authorization") String token,
64+
@RequestParam(defaultValue = "0") int page,
65+
@RequestParam(defaultValue = "5") int size) {
66+
return ResponseEntity.ok(orderService.getAllOrdersInProgress(token, page, size));
67+
}
68+
5969
// 나의 판매 상품 조회(완료)
6070
@Operation(summary = "나의 판매 완료된 상품 전체 조회")
6171
@GetMapping("/all/complete")

src/main/java/com/sookmyung/concon/Order/controller/TransactionController.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,21 @@ public ResponseEntity<? extends BasicResponse> requestOrder(
3131
return ResponseEntity.ok(new DataResponse<>(transactionService.requestOrder(orderId, token)));
3232
}
3333

34-
// 거래 요청 전체 조회
35-
@Operation(summary = "거래 요청 전체 조회", description = "상품을 클릭하면 해당 상품 거래 요청 대기목록을 확인할 수 있음")
36-
@GetMapping("/request/{order-id}")
37-
public ResponseEntity<List<UserSimpleResponseDto>> getAllRequestOrder(
38-
@PathVariable("order-id") Long orderId) {
39-
return ResponseEntity.ok(transactionService.getAllRequestOrder(orderId));
40-
}
34+
// // 거래 요청 전체 조회
35+
// @Operation(summary = "거래 요청 전체 조회", description = "상품을 클릭하면 해당 상품 거래 요청 대기목록을 확인할 수 있음")
36+
// @GetMapping("/request/{order-id}")
37+
// public ResponseEntity<List<UserSimpleResponseDto>> getAllRequestOrder(
38+
// @PathVariable("order-id") Long orderId) {
39+
// return ResponseEntity.ok(transactionService.getAllRequestOrder(orderId));
40+
// }
4141

42-
// 거래 수락 (거래 중)
43-
@Operation(summary = "거래 수락 -> 거래 중", description = "대기 목록 중 하나를 누르면 거래를 수락하고 거래 중으로 바뀜, 거래 중이면 다른 사람은 거래 요청을 할 수 없음")
44-
@PostMapping("/accept")
45-
public ResponseEntity<OrderDetailResponseDto> acceptTransaction(
46-
@RequestBody TransactionAcceptRequestDto request) {
47-
return ResponseEntity.ok(transactionService.acceptTransaction(request));
48-
}
42+
// // 거래 수락 (거래 중)
43+
// @Operation(summary = "거래 수락 -> 거래 중", description = "대기 목록 중 하나를 누르면 거래를 수락하고 거래 중으로 바뀜, 거래 중이면 다른 사람은 거래 요청을 할 수 없음")
44+
// @PostMapping("/accept")
45+
// public ResponseEntity<OrderDetailResponseDto> acceptTransaction(
46+
// @RequestBody TransactionAcceptRequestDto request) {
47+
// return ResponseEntity.ok(transactionService.acceptTransaction(request));
48+
// }
4949

5050
// 거래 중 취소
5151
@Operation(summary = "거래 중 취소", description = "거래 중, 입금을 안하거나 다른 사유가 있어서 거래 취소를 할 수 있음")

src/main/java/com/sookmyung/concon/Order/service/OrderService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public interface OrderService {
2020

2121
List<OrderSimpleResponseDto> getAllOrdersAvailable(String token, int page, int size);
2222

23+
List<OrderSimpleResponseDto> getAllOrdersInProgress(String token, int page, int size);
24+
2325
List<OrderSimpleResponseDto> getAllOrdersComplete(String token, int page, int size);
2426

2527
List<OrderSimpleResponseDto> getAllOrdersByItemId(Long itemId, int page, int size);

src/main/java/com/sookmyung/concon/Order/service/OrderServiceImpl.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public List<OrderSimpleResponseDto> getOrdersByUserId(Long userId, int page, int
7878
return orderUserFacade.getOrdersByUserId(userId, page, size);
7979
}
8080

81-
// 나의 판매 상품 조회(진행중)
81+
// 나의 판매 상품 조회(판매중)
8282
@Transactional(readOnly = true)
8383
public List<OrderSimpleResponseDto> getAllOrdersAvailable(String token, int page, int size) {
8484
User seller = orderUserFacade.findUserByToken(token);
@@ -87,6 +87,15 @@ public List<OrderSimpleResponseDto> getAllOrdersAvailable(String token, int page
8787
return orderUserFacade.toOrderSimpleDtoList(orders);
8888
}
8989

90+
// 나의 판매 상품 조회(거래 진행 중)
91+
@Transactional(readOnly = true)
92+
public List<OrderSimpleResponseDto> getAllOrdersInProgress(String token, int page, int size) {
93+
User seller = orderUserFacade.findUserByToken(token);
94+
Pageable pageable = PageRequest.of(page, size);
95+
List<Orders> orders = orderRepository.findBySellerAndStatus(seller, OrderStatus.IN_PROGRESS, pageable);
96+
return orderUserFacade.toOrderSimpleDtoList(orders);
97+
}
98+
9099
// 나의 판매 상품 조회(완료)
91100
@Transactional(readOnly = true)
92101
public List<OrderSimpleResponseDto> getAllOrdersComplete(String token, int page, int size) {

src/main/java/com/sookmyung/concon/Order/service/TransactionService.java

Lines changed: 55 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -57,53 +57,72 @@ private OrderDetailResponseDto toOrderDetailDto(Orders order) {
5757
return orderFacade.toDetailDto(order);
5858
}
5959

60-
// 거래 요청
60+
// // 거래 요청 (Redis 사용)
61+
// @Transactional
62+
// public OrderRequestResponseDto requestOrder(Long orderId, String token) {
63+
// Orders orders = findOrdersById(orderId);
64+
// User buyer = userFacade.findUserByToken(token);
65+
// if (orders.getStatus() != OrderStatus.AVAILABLE) {
66+
// throw new OrderInProgressException("이 주문은 이미 거래 중입니다. ");
67+
// }
68+
//
69+
// orders.updateStatus(OrderStatus.WAITING);
70+
//
71+
// orderRequestRedisRepository.save(orders.getId(), buyer.getId());
72+
//
73+
//
74+
// // 판매자에게 알람
75+
// Long sellerId = orders.getSeller().getId();
76+
// OrderEventAlarmDto response = OrderEventAlarmDto.toDto(orders, buyer);
77+
// eventPublisher.publishEvent(sellerId, ORDER_REQUESTED, response);
78+
// return OrderRequestResponseDto.toDto(orders, buyer);
79+
// }
80+
//
81+
// // 거래 요청 전체 조회
82+
// @Transactional(readOnly = true)
83+
// public List<UserSimpleResponseDto> getAllRequestOrder(Long orderId) {
84+
// return orderRequestRedisRepository.findAllMembersById(orderId)
85+
// .stream()
86+
// .map(userFacade::findUserById)
87+
// .map(userFacade::toSimpleDto)
88+
// .toList();
89+
// }
90+
//
91+
//// 거래 수락(거래 중)
92+
// @Transactional
93+
// public OrderDetailResponseDto acceptTransaction(TransactionAcceptRequestDto request) {
94+
// Orders order = findOrdersById(request.getOrderId());
95+
// User buyer = userFacade.findUserById(request.getBuyerId());
96+
//
97+
// order.setBuyer(buyer);
98+
// order.updateStatus(OrderStatus.IN_PROGRESS);
99+
//
100+
// orderRequestRedisRepository.deleteUser(request.getOrderId(), request.getBuyerId());
101+
//
102+
// // 구매자에게 알람
103+
// OrderEventAlarmDto response = OrderEventAlarmDto.toDto(order, buyer);
104+
// eventPublisher.publishEvent(buyer.getId(), ORDER_ACCEPTED, response);
105+
//
106+
// return toOrderDetailDto(order);
107+
// }
108+
109+
// 거래 요청 시 바로 거래 중으로 변경
61110
@Transactional
62-
public OrderRequestResponseDto requestOrder(Long orderId, String token) {
111+
public OrderDetailResponseDto requestOrder(Long orderId, String token) {
63112
Orders orders = findOrdersById(orderId);
64113
User buyer = userFacade.findUserByToken(token);
65114
if (orders.getStatus() != OrderStatus.AVAILABLE) {
66115
throw new OrderInProgressException("이 주문은 이미 거래 중입니다. ");
67116
}
68117

69-
orders.updateStatus(OrderStatus.WAITING);
70-
71-
orderRequestRedisRepository.save(orders.getId(), buyer.getId());
72-
118+
orders.setBuyer(buyer);
119+
orders.updateStatus(OrderStatus.IN_PROGRESS);
73120

74121
// 판매자에게 알람
75122
Long sellerId = orders.getSeller().getId();
76123
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(orders, buyer);
77124
eventPublisher.publishEvent(sellerId, ORDER_REQUESTED, response);
78-
return OrderRequestResponseDto.toDto(orders, buyer);
79-
}
80-
81-
// 거래 요청 전체 조회
82-
@Transactional(readOnly = true)
83-
public List<UserSimpleResponseDto> getAllRequestOrder(Long orderId) {
84-
return orderRequestRedisRepository.findAllMembersById(orderId)
85-
.stream()
86-
.map(userFacade::findUserById)
87-
.map(userFacade::toSimpleDto)
88-
.toList();
89-
}
90-
91-
// 거래 수락(거래 중)
92-
@Transactional
93-
public OrderDetailResponseDto acceptTransaction(TransactionAcceptRequestDto request) {
94-
Orders order = findOrdersById(request.getOrderId());
95-
User buyer = userFacade.findUserById(request.getBuyerId());
96-
97-
order.setBuyer(buyer);
98-
order.updateStatus(OrderStatus.IN_PROGRESS);
99-
100-
orderRequestRedisRepository.deleteUser(request.getOrderId(), request.getBuyerId());
101-
102-
// 구매자에게 알람
103-
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(order, buyer);
104-
eventPublisher.publishEvent(buyer.getId(), ORDER_ACCEPTED, response);
105-
106-
return toOrderDetailDto(order);
125+
return toOrderDetailDto(orders);
107126
}
108127

109128
// 거래 중 취소
@@ -133,7 +152,7 @@ public OrderDetailResponseDto completeTransaction(Long orderId) {
133152
coupon.changeUser(order.getBuyer());
134153
coupon.setBuyFlag(true);
135154

136-
orderRequestRedisRepository.delete(orderId);
155+
// orderRequestRedisRepository.delete(orderId);
137156

138157
// 구매자에게 알람
139158
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(order, order.getBuyer());

0 commit comments

Comments
 (0)