Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public ResponseEntity<List<OrderSimpleResponseDto>> getAllOrders(
return ResponseEntity.ok(orderService.getAllOrders(token, page, size));
}

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

// 나의 판매 상품 조회(거래중)
@Operation(summary = "나의 거래중인 상품 전체 조회")
@GetMapping("/all/in-progress")
public ResponseEntity<List<OrderSimpleResponseDto>> getAllOrdersInProgress(
@RequestHeader("Authorization") String token,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "5") int size) {
return ResponseEntity.ok(orderService.getAllOrdersInProgress(token, page, size));
}

// 나의 판매 상품 조회(완료)
@Operation(summary = "나의 판매 완료된 상품 전체 조회")
@GetMapping("/all/complete")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,21 @@ public ResponseEntity<? extends BasicResponse> requestOrder(
return ResponseEntity.ok(new DataResponse<>(transactionService.requestOrder(orderId, token)));
}

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

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

// 거래 중 취소
@Operation(summary = "거래 중 취소", description = "거래 중, 입금을 안하거나 다른 사유가 있어서 거래 취소를 할 수 있음")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ public interface OrderService {

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

List<OrderSimpleResponseDto> getAllOrdersInProgress(String token, int page, int size);

List<OrderSimpleResponseDto> getAllOrdersComplete(String token, int page, int size);

List<OrderSimpleResponseDto> getAllOrdersByItemId(Long itemId, int page, int size);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public List<OrderSimpleResponseDto> getOrdersByUserId(Long userId, int page, int
return orderUserFacade.getOrdersByUserId(userId, page, size);
}

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

// 나의 판매 상품 조회(거래 진행 중)
@Transactional(readOnly = true)
public List<OrderSimpleResponseDto> getAllOrdersInProgress(String token, int page, int size) {
User seller = orderUserFacade.findUserByToken(token);
Pageable pageable = PageRequest.of(page, size);
List<Orders> orders = orderRepository.findBySellerAndStatus(seller, OrderStatus.IN_PROGRESS, pageable);
return orderUserFacade.toOrderSimpleDtoList(orders);
}

// 나의 판매 상품 조회(완료)
@Transactional(readOnly = true)
public List<OrderSimpleResponseDto> getAllOrdersComplete(String token, int page, int size) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,53 +57,72 @@ private OrderDetailResponseDto toOrderDetailDto(Orders order) {
return orderFacade.toDetailDto(order);
}

// 거래 요청
// // 거래 요청 (Redis 사용)
// @Transactional
// public OrderRequestResponseDto requestOrder(Long orderId, String token) {
// Orders orders = findOrdersById(orderId);
// User buyer = userFacade.findUserByToken(token);
// if (orders.getStatus() != OrderStatus.AVAILABLE) {
// throw new OrderInProgressException("이 주문은 이미 거래 중입니다. ");
// }
//
// orders.updateStatus(OrderStatus.WAITING);
//
// orderRequestRedisRepository.save(orders.getId(), buyer.getId());
//
//
// // 판매자에게 알람
// Long sellerId = orders.getSeller().getId();
// OrderEventAlarmDto response = OrderEventAlarmDto.toDto(orders, buyer);
// eventPublisher.publishEvent(sellerId, ORDER_REQUESTED, response);
// return OrderRequestResponseDto.toDto(orders, buyer);
// }
//
// // 거래 요청 전체 조회
// @Transactional(readOnly = true)
// public List<UserSimpleResponseDto> getAllRequestOrder(Long orderId) {
// return orderRequestRedisRepository.findAllMembersById(orderId)
// .stream()
// .map(userFacade::findUserById)
// .map(userFacade::toSimpleDto)
// .toList();
// }
//
//// 거래 수락(거래 중)
// @Transactional
// public OrderDetailResponseDto acceptTransaction(TransactionAcceptRequestDto request) {
// Orders order = findOrdersById(request.getOrderId());
// User buyer = userFacade.findUserById(request.getBuyerId());
//
// order.setBuyer(buyer);
// order.updateStatus(OrderStatus.IN_PROGRESS);
//
// orderRequestRedisRepository.deleteUser(request.getOrderId(), request.getBuyerId());
//
// // 구매자에게 알람
// OrderEventAlarmDto response = OrderEventAlarmDto.toDto(order, buyer);
// eventPublisher.publishEvent(buyer.getId(), ORDER_ACCEPTED, response);
//
// return toOrderDetailDto(order);
// }

// 거래 요청 시 바로 거래 중으로 변경
@Transactional
public OrderRequestResponseDto requestOrder(Long orderId, String token) {
public OrderDetailResponseDto requestOrder(Long orderId, String token) {
Orders orders = findOrdersById(orderId);
User buyer = userFacade.findUserByToken(token);
if (orders.getStatus() != OrderStatus.AVAILABLE) {
throw new OrderInProgressException("이 주문은 이미 거래 중입니다. ");
}

orders.updateStatus(OrderStatus.WAITING);

orderRequestRedisRepository.save(orders.getId(), buyer.getId());

orders.setBuyer(buyer);
orders.updateStatus(OrderStatus.IN_PROGRESS);

// 판매자에게 알람
Long sellerId = orders.getSeller().getId();
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(orders, buyer);
eventPublisher.publishEvent(sellerId, ORDER_REQUESTED, response);
return OrderRequestResponseDto.toDto(orders, buyer);
}

// 거래 요청 전체 조회
@Transactional(readOnly = true)
public List<UserSimpleResponseDto> getAllRequestOrder(Long orderId) {
return orderRequestRedisRepository.findAllMembersById(orderId)
.stream()
.map(userFacade::findUserById)
.map(userFacade::toSimpleDto)
.toList();
}

// 거래 수락(거래 중)
@Transactional
public OrderDetailResponseDto acceptTransaction(TransactionAcceptRequestDto request) {
Orders order = findOrdersById(request.getOrderId());
User buyer = userFacade.findUserById(request.getBuyerId());

order.setBuyer(buyer);
order.updateStatus(OrderStatus.IN_PROGRESS);

orderRequestRedisRepository.deleteUser(request.getOrderId(), request.getBuyerId());

// 구매자에게 알람
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(order, buyer);
eventPublisher.publishEvent(buyer.getId(), ORDER_ACCEPTED, response);

return toOrderDetailDto(order);
return toOrderDetailDto(orders);
}

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

orderRequestRedisRepository.delete(orderId);
// orderRequestRedisRepository.delete(orderId);

// 구매자에게 알람
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(order, order.getBuyer());
Expand Down
Loading