feat(order): 점주용 지난 주문 Back-end 기능 추가
- 화면 단으로 넘겨주는 양식 변경
This commit is contained in:
@@ -73,7 +73,7 @@ public class OrderRepositoryCustom {
|
||||
order.storeId.eq(storeId)
|
||||
)
|
||||
.orderBy(order.orderTime.desc())
|
||||
.limit(1)
|
||||
.limit(pageable.getPageSize())
|
||||
.offset(pageable.getOffset())
|
||||
.distinct()
|
||||
.fetch();
|
||||
|
||||
@@ -42,18 +42,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 사용자명 및 아이템 이름 가져오기
|
||||
orderDtoList.forEach(orderDto -> {
|
||||
GetCustomerResponse getCustomerResponse =
|
||||
userClient.getUser(orderDto.getUserId()).getData();
|
||||
orderDto.setUserName(getCustomerResponse.getUserName());
|
||||
|
||||
orderDto.getOrderItemDtoList()
|
||||
.forEach(orderItemDto -> {
|
||||
GetItemResponse getItemResponse =
|
||||
storeClient.getItem(orderItemDto.getItemId()).getData();
|
||||
orderItemDto.setItemName(getItemResponse.getName());
|
||||
});
|
||||
});
|
||||
getUserNameAndItemName(orderDtoList);
|
||||
|
||||
return orderDtoList;
|
||||
}
|
||||
@@ -67,6 +56,24 @@ public class OrderServiceImpl implements OrderService {
|
||||
.map(OrderDto::createFullField)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 사용자명 및 아이템 이름 가져오기
|
||||
getUserNameAndItemName(orderDtoList);
|
||||
|
||||
return PageableExecutionUtils.getPage(orderDtoList, pageable, orderPage::getTotalElements);
|
||||
}
|
||||
|
||||
private void getUserNameAndItemName(List<OrderDto> orderDtoList) {
|
||||
orderDtoList.forEach(orderDto -> {
|
||||
GetCustomerResponse getCustomerResponse =
|
||||
userClient.getUser(orderDto.getUserId()).getData();
|
||||
orderDto.setUserName(getCustomerResponse.getUserName());
|
||||
|
||||
orderDto.getOrderItemDtoList()
|
||||
.forEach(orderItemDto -> {
|
||||
GetItemResponse getItemResponse =
|
||||
storeClient.getItem(orderItemDto.getItemId()).getData();
|
||||
orderItemDto.setItemName(getItemResponse.getName());
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -37,7 +38,7 @@ public class OrderController {
|
||||
private final PrevOrderSearchValidator prevOrderSearchValidator;
|
||||
|
||||
@GetMapping("/orderMain")
|
||||
public ResponseEntity orderMain(@Valid OrderSearchCondition condition) {
|
||||
public ResponseEntity<Result> orderMain(@Valid OrderSearchCondition condition) {
|
||||
// TODO: 2022/02/04 JWT 구현 시 변경 요망
|
||||
Long userId = 1L;
|
||||
Long storeId = 1L;
|
||||
@@ -92,14 +93,67 @@ public class OrderController {
|
||||
|
||||
@GetMapping("/prevOrder")
|
||||
public ResponseEntity<Result> findPrevOrder(@Valid PrevOrderSearch prevOrderSearch,
|
||||
@PageableDefault(page = 0, size = 1) Pageable pageable,
|
||||
@PageableDefault(page = 0, size = 10) Pageable pageable,
|
||||
BindingResult bindingResult) throws BindException {
|
||||
// validation
|
||||
if (bindingResult.hasErrors()) throw new BindException(bindingResult);
|
||||
prevOrderSearchValidator.validate(prevOrderSearch, bindingResult);
|
||||
if (bindingResult.hasErrors()) throw new BindException(bindingResult);
|
||||
|
||||
// get data
|
||||
Page<OrderDto> prevOrderMain = orderService.findPrevOrderMain(prevOrderSearch, pageable, 1L);
|
||||
|
||||
return ResponseEntity.ok(Result.createSuccessResult(prevOrderMain));
|
||||
// format data
|
||||
ResponsePrevOrder responsePrevOrder =
|
||||
new ResponsePrevOrder(prevOrderMain.getContent(), prevOrderMain.getNumber(), prevOrderMain.getTotalPages());
|
||||
return ResponseEntity.ok(Result.createSuccessResult(responsePrevOrder));
|
||||
}
|
||||
|
||||
@Data @AllArgsConstructor @NoArgsConstructor
|
||||
static class ResponsePrevOrder {
|
||||
private List<OrderVo> orders;
|
||||
private Page page;
|
||||
|
||||
public ResponsePrevOrder(List<OrderDto> orderDtoList, int startPage, int totalPage) {
|
||||
orders = orderDtoList.stream().map(OrderVo::new).collect(Collectors.toList());
|
||||
page = new Page(startPage, totalPage);
|
||||
}
|
||||
|
||||
@Data
|
||||
static class OrderVo {
|
||||
private Long orderId;
|
||||
private OrderStatus orderStatus;
|
||||
private String orderTime;
|
||||
private Long orderPrice;
|
||||
private String userName;
|
||||
private List<OrderItemVo> orderItems;
|
||||
|
||||
public OrderVo(OrderDto orderDto) {
|
||||
this.orderId = orderDto.getId();
|
||||
this.orderStatus = orderDto.getOrderStatus();
|
||||
this.orderTime = orderDto.getOrderTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
this.orderPrice = orderDto.getOrderPrice();
|
||||
this.userName = orderDto.getUserName();
|
||||
this.orderItems = orderDto.getOrderItemDtoList()
|
||||
.stream().map(OrderItemVo::new).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
static class OrderItemVo {
|
||||
private Long orderItemId;
|
||||
private String orderItemName;
|
||||
|
||||
public OrderItemVo(OrderItemDto orderItemDto) {
|
||||
this.orderItemId = orderItemDto.getId();
|
||||
this.orderItemName = orderItemDto.getItemName();
|
||||
}
|
||||
}
|
||||
|
||||
@Data @AllArgsConstructor
|
||||
static class Page {
|
||||
int startPage;
|
||||
int totalPage;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user