From 4756e196edffe42305e44a917e5721bcb2446b83 Mon Sep 17 00:00:00 2001 From: osjkate Date: Mon, 14 Oct 2024 11:01:56 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B1=B0=EB=9E=98=20=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/controller/OrderController.java | 12 ++- .../controller/TransactionController.java | 28 +++--- .../concon/Order/service/OrderService.java | 2 + .../Order/service/OrderServiceImpl.java | 11 ++- .../Order/service/TransactionService.java | 91 +++++++++++-------- 5 files changed, 92 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/sookmyung/concon/Order/controller/OrderController.java b/src/main/java/com/sookmyung/concon/Order/controller/OrderController.java index 66f443d..7d2f031 100644 --- a/src/main/java/com/sookmyung/concon/Order/controller/OrderController.java +++ b/src/main/java/com/sookmyung/concon/Order/controller/OrderController.java @@ -46,7 +46,7 @@ public ResponseEntity> getAllOrders( return ResponseEntity.ok(orderService.getAllOrders(token, page, size)); } - // 나의 판매 상품 조회(진행중) + // 나의 판매 상품 조회(판매중) @Operation(summary = "나의 판매중(진행중)인 상품 전체 조회") @GetMapping("/all/available") public ResponseEntity> getAllOrdersAvailable( @@ -56,6 +56,16 @@ public ResponseEntity> getAllOrdersAvailable( return ResponseEntity.ok(orderService.getAllOrdersAvailable(token, page, size)); } + // 나의 판매 상품 조회(거래중) + @Operation(summary = "나의 거래중인 상품 전체 조회") + @GetMapping("/all/in-progress") + public ResponseEntity> 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") diff --git a/src/main/java/com/sookmyung/concon/Order/controller/TransactionController.java b/src/main/java/com/sookmyung/concon/Order/controller/TransactionController.java index 4721459..57be048 100644 --- a/src/main/java/com/sookmyung/concon/Order/controller/TransactionController.java +++ b/src/main/java/com/sookmyung/concon/Order/controller/TransactionController.java @@ -31,21 +31,21 @@ public ResponseEntity requestOrder( return ResponseEntity.ok(new DataResponse<>(transactionService.requestOrder(orderId, token))); } - // 거래 요청 전체 조회 - @Operation(summary = "거래 요청 전체 조회", description = "상품을 클릭하면 해당 상품 거래 요청 대기목록을 확인할 수 있음") - @GetMapping("/request/{order-id}") - public ResponseEntity> getAllRequestOrder( - @PathVariable("order-id") Long orderId) { - return ResponseEntity.ok(transactionService.getAllRequestOrder(orderId)); - } +// // 거래 요청 전체 조회 +// @Operation(summary = "거래 요청 전체 조회", description = "상품을 클릭하면 해당 상품 거래 요청 대기목록을 확인할 수 있음") +// @GetMapping("/request/{order-id}") +// public ResponseEntity> getAllRequestOrder( +// @PathVariable("order-id") Long orderId) { +// return ResponseEntity.ok(transactionService.getAllRequestOrder(orderId)); +// } - // 거래 수락 (거래 중) - @Operation(summary = "거래 수락 -> 거래 중", description = "대기 목록 중 하나를 누르면 거래를 수락하고 거래 중으로 바뀜, 거래 중이면 다른 사람은 거래 요청을 할 수 없음") - @PostMapping("/accept") - public ResponseEntity acceptTransaction( - @RequestBody TransactionAcceptRequestDto request) { - return ResponseEntity.ok(transactionService.acceptTransaction(request)); - } +// // 거래 수락 (거래 중) +// @Operation(summary = "거래 수락 -> 거래 중", description = "대기 목록 중 하나를 누르면 거래를 수락하고 거래 중으로 바뀜, 거래 중이면 다른 사람은 거래 요청을 할 수 없음") +// @PostMapping("/accept") +// public ResponseEntity acceptTransaction( +// @RequestBody TransactionAcceptRequestDto request) { +// return ResponseEntity.ok(transactionService.acceptTransaction(request)); +// } // 거래 중 취소 @Operation(summary = "거래 중 취소", description = "거래 중, 입금을 안하거나 다른 사유가 있어서 거래 취소를 할 수 있음") diff --git a/src/main/java/com/sookmyung/concon/Order/service/OrderService.java b/src/main/java/com/sookmyung/concon/Order/service/OrderService.java index c642b82..73db126 100644 --- a/src/main/java/com/sookmyung/concon/Order/service/OrderService.java +++ b/src/main/java/com/sookmyung/concon/Order/service/OrderService.java @@ -20,6 +20,8 @@ public interface OrderService { List getAllOrdersAvailable(String token, int page, int size); + List getAllOrdersInProgress(String token, int page, int size); + List getAllOrdersComplete(String token, int page, int size); List getAllOrdersByItemId(Long itemId, int page, int size); diff --git a/src/main/java/com/sookmyung/concon/Order/service/OrderServiceImpl.java b/src/main/java/com/sookmyung/concon/Order/service/OrderServiceImpl.java index 0a4fa2c..0ae9de4 100644 --- a/src/main/java/com/sookmyung/concon/Order/service/OrderServiceImpl.java +++ b/src/main/java/com/sookmyung/concon/Order/service/OrderServiceImpl.java @@ -78,7 +78,7 @@ public List getOrdersByUserId(Long userId, int page, int return orderUserFacade.getOrdersByUserId(userId, page, size); } - // 나의 판매 상품 조회(진행중) + // 나의 판매 상품 조회(판매중) @Transactional(readOnly = true) public List getAllOrdersAvailable(String token, int page, int size) { User seller = orderUserFacade.findUserByToken(token); @@ -87,6 +87,15 @@ public List getAllOrdersAvailable(String token, int page return orderUserFacade.toOrderSimpleDtoList(orders); } + // 나의 판매 상품 조회(거래 진행 중) + @Transactional(readOnly = true) + public List getAllOrdersInProgress(String token, int page, int size) { + User seller = orderUserFacade.findUserByToken(token); + Pageable pageable = PageRequest.of(page, size); + List orders = orderRepository.findBySellerAndStatus(seller, OrderStatus.IN_PROGRESS, pageable); + return orderUserFacade.toOrderSimpleDtoList(orders); + } + // 나의 판매 상품 조회(완료) @Transactional(readOnly = true) public List getAllOrdersComplete(String token, int page, int size) { diff --git a/src/main/java/com/sookmyung/concon/Order/service/TransactionService.java b/src/main/java/com/sookmyung/concon/Order/service/TransactionService.java index decead0..395a0d7 100644 --- a/src/main/java/com/sookmyung/concon/Order/service/TransactionService.java +++ b/src/main/java/com/sookmyung/concon/Order/service/TransactionService.java @@ -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 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 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); } // 거래 중 취소 @@ -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());