diff --git a/src/main/java/com/mindway/server/v2/domain/order/presentation/OrdersController.java b/src/main/java/com/mindway/server/v2/domain/order/presentation/OrdersController.java index d02abf4..d0a5964 100644 --- a/src/main/java/com/mindway/server/v2/domain/order/presentation/OrdersController.java +++ b/src/main/java/com/mindway/server/v2/domain/order/presentation/OrdersController.java @@ -3,8 +3,10 @@ import com.mindway.server.v2.domain.order.entity.BookType; import com.mindway.server.v2.domain.order.presentation.dto.request.OrderRequest; import com.mindway.server.v2.domain.order.presentation.dto.request.OrderUpdateRequest; +import com.mindway.server.v2.domain.order.presentation.dto.response.OrdersResponse; import com.mindway.server.v2.domain.order.service.BookRequestService; import com.mindway.server.v2.domain.order.service.DeleteBookOrderService; +import com.mindway.server.v2.domain.order.service.GetBookOrdersService; import com.mindway.server.v2.domain.order.service.UpdateBookOrderService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -12,6 +14,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/api/v2/order") @@ -19,6 +23,7 @@ public class OrdersController { private final BookRequestService bookRequestService; private final DeleteBookOrderService deleteBookOrderService; private final UpdateBookOrderService updateBookOrderService; + private final GetBookOrdersService getBookOrdersService; @PostMapping() public ResponseEntity bookRequest @@ -40,4 +45,10 @@ public ResponseEntity deleteBook (@PathVariable(value = "order_id") Long i return ResponseEntity.noContent().build(); } + @GetMapping + public ResponseEntity> getBookOrders () { + List orders = getBookOrdersService.execute(); + return ResponseEntity.ok(orders); + } + } diff --git a/src/main/java/com/mindway/server/v2/domain/order/presentation/dto/response/OrdersResponse.java b/src/main/java/com/mindway/server/v2/domain/order/presentation/dto/response/OrdersResponse.java new file mode 100644 index 0000000..9cae077 --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/order/presentation/dto/response/OrdersResponse.java @@ -0,0 +1,12 @@ +package com.mindway.server.v2.domain.order.presentation.dto.response; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class OrdersResponse { + private String title; + private String author; + private String book_url; +} diff --git a/src/main/java/com/mindway/server/v2/domain/order/service/GetBookOrdersService.java b/src/main/java/com/mindway/server/v2/domain/order/service/GetBookOrdersService.java new file mode 100644 index 0000000..2a060dc --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/order/service/GetBookOrdersService.java @@ -0,0 +1,9 @@ +package com.mindway.server.v2.domain.order.service; + +import com.mindway.server.v2.domain.order.presentation.dto.response.OrdersResponse; + +import java.util.List; + +public interface GetBookOrdersService { + List execute(); +} diff --git a/src/main/java/com/mindway/server/v2/domain/order/service/impl/GetBookOrdersServiceImpl.java b/src/main/java/com/mindway/server/v2/domain/order/service/impl/GetBookOrdersServiceImpl.java new file mode 100644 index 0000000..516096e --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/order/service/impl/GetBookOrdersServiceImpl.java @@ -0,0 +1,39 @@ +package com.mindway.server.v2.domain.order.service.impl; + +import com.mindway.server.v2.domain.order.exception.NotAccessStudentException; +import com.mindway.server.v2.domain.order.presentation.dto.response.OrdersResponse; +import com.mindway.server.v2.domain.order.repository.OrdersRepository; +import com.mindway.server.v2.domain.order.service.GetBookOrdersService; +import com.mindway.server.v2.domain.order.util.OrdersConverter; +import com.mindway.server.v2.domain.user.entity.Authority; +import com.mindway.server.v2.domain.user.entity.User; +import com.mindway.server.v2.domain.user.util.UserUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true, rollbackFor = {Exception.class}) +public class GetBookOrdersServiceImpl implements GetBookOrdersService { + private final UserUtil userUtil; + private final OrdersRepository ordersRepository; + private final OrdersConverter ordersConverter; + + @Override + public List execute() { + User user = userUtil.getCurrentUser(); + + if (user.getAuthority() != Authority.ROLE_TEACHER + && user.getAuthority() != Authority.ROLE_HELPER) { + throw new NotAccessStudentException(); + } + + return ordersRepository.findAll().stream() + .map(ordersConverter::toDto) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/mindway/server/v2/domain/order/util/OrdersConverter.java b/src/main/java/com/mindway/server/v2/domain/order/util/OrdersConverter.java index e6e9f2f..7c799a3 100644 --- a/src/main/java/com/mindway/server/v2/domain/order/util/OrdersConverter.java +++ b/src/main/java/com/mindway/server/v2/domain/order/util/OrdersConverter.java @@ -3,8 +3,11 @@ import com.mindway.server.v2.domain.order.entity.BookType; import com.mindway.server.v2.domain.order.entity.Orders; import com.mindway.server.v2.domain.order.presentation.dto.request.OrderRequest; +import com.mindway.server.v2.domain.order.presentation.dto.response.OrdersResponse; import com.mindway.server.v2.domain.user.entity.User; public interface OrdersConverter { Orders toEntity (OrderRequest bookRequest, User user, BookType bookType); + + OrdersResponse toDto (Orders orders); } diff --git a/src/main/java/com/mindway/server/v2/domain/order/util/impl/OrdersConverterImpl.java b/src/main/java/com/mindway/server/v2/domain/order/util/impl/OrdersConverterImpl.java index 434ad74..13e44cb 100644 --- a/src/main/java/com/mindway/server/v2/domain/order/util/impl/OrdersConverterImpl.java +++ b/src/main/java/com/mindway/server/v2/domain/order/util/impl/OrdersConverterImpl.java @@ -3,6 +3,7 @@ import com.mindway.server.v2.domain.order.entity.BookType; import com.mindway.server.v2.domain.order.entity.Orders; import com.mindway.server.v2.domain.order.presentation.dto.request.OrderRequest; +import com.mindway.server.v2.domain.order.presentation.dto.response.OrdersResponse; import com.mindway.server.v2.domain.order.util.OrdersConverter; import com.mindway.server.v2.domain.user.entity.User; import org.springframework.stereotype.Component; @@ -19,4 +20,13 @@ public Orders toEntity(OrderRequest bookRequest, User user, BookType bookType) { .user(user) .build(); } + + @Override + public OrdersResponse toDto(Orders orders) { + return OrdersResponse.builder() + .title(orders.getTitle()) + .author(orders.getAuthor()) + .book_url(orders.getBookURL()) + .build(); + } } diff --git a/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java b/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java index 56d1801..8edc725 100644 --- a/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java +++ b/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java @@ -57,6 +57,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .requestMatchers(HttpMethod.POST, "/api/v2/order").authenticated() .requestMatchers(HttpMethod.DELETE, "/api/v2/order/{order_id}").authenticated() .requestMatchers(HttpMethod.PATCH, "api/v2/order/{order_id}").authenticated() + .requestMatchers(HttpMethod.GET, "api/v2/order").authenticated() .anyRequest().authenticated() )