wangyingyang

增加订单是否已预订的状态检测

...@@ -97,4 +97,13 @@ public class OrderController { ...@@ -97,4 +97,13 @@ public class OrderController {
97 @Valid @RequestBody OrderDbDTO.OrderDetailBatchUpdateDto updateDto) { 97 @Valid @RequestBody OrderDbDTO.OrderDetailBatchUpdateDto updateDto) {
98 return orderService.batchUpdateOrderDetails(updateDto); 98 return orderService.batchUpdateOrderDetails(updateDto);
99 } 99 }
100 +
101 + @ApiOperation(value = "检查是否预定过该餐单")
102 + @PostMapping("/order/check")
103 + @ResponseStatus(HttpStatus.OK)
104 + public Boolean checkOrder(
105 + @Valid @RequestBody OrderDbDTO.CheckIfOrderedDto checkIfOrderedDto) {
106 + return orderService.checkIfOrdered(checkIfOrderedDto);
107 + }
108 +
100 } 109 }
......
...@@ -114,6 +114,10 @@ public class OrderDbDTO { ...@@ -114,6 +114,10 @@ public class OrderDbDTO {
114 private Boolean shouldFilterStatus = false; 114 private Boolean shouldFilterStatus = false;
115 @Builder.Default 115 @Builder.Default
116 private OrderStatusEnum status = OrderStatusEnum.UNKNOWN_STATUS; 116 private OrderStatusEnum status = OrderStatusEnum.UNKNOWN_STATUS;
117 + @Builder.Default
118 + private Boolean shouldFilterMenuId = false;
119 + @Builder.Default
120 + private Integer menuId = 0;
117 } 121 }
118 122
119 @Data 123 @Data
...@@ -570,6 +574,16 @@ public class OrderDbDTO { ...@@ -570,6 +574,16 @@ public class OrderDbDTO {
570 @Data 574 @Data
571 @Builder 575 @Builder
572 @ToString 576 @ToString
577 + @ApiModel(description = "检查是否已预定过某一餐单")
578 + public static class CheckIfOrderedDto {
579 + private Integer customerId;
580 + private Integer menuId;
581 + private LocalDateTime mealTime;
582 + }
583 +
584 + @Data
585 + @Builder
586 + @ToString
573 @ApiModel(description = "修改菜品细节信息") 587 @ApiModel(description = "修改菜品细节信息")
574 public static class OrderDetailUpdateDto { 588 public static class OrderDetailUpdateDto {
575 private Integer id; 589 private Integer id;
......
...@@ -3,6 +3,7 @@ package com.infoloop.tianting.service; ...@@ -3,6 +3,7 @@ package com.infoloop.tianting.service;
3 import com.infoloop.tianting.model.common.OrderPageResult; 3 import com.infoloop.tianting.model.common.OrderPageResult;
4 import com.infoloop.tianting.model.common.PageResult; 4 import com.infoloop.tianting.model.common.PageResult;
5 import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; 5 import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse;
6 +import com.infoloop.tianting.model.dto.OrderDbDTO.CheckIfOrderedDto;
6 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; 7 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
7 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; 8 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse;
8 import com.infoloop.tianting.model.dto.OrderDbDTO.OperatorCreateOrderDto; 9 import com.infoloop.tianting.model.dto.OrderDbDTO.OperatorCreateOrderDto;
...@@ -25,4 +26,5 @@ public interface OrderService { ...@@ -25,4 +26,5 @@ public interface OrderService {
25 CreateOrderResponse orderCreation(OperatorCreateOrderDto createOrderDto); 26 CreateOrderResponse orderCreation(OperatorCreateOrderDto createOrderDto);
26 UpdateOrderResponse updateOrder(UpdateOrderDto updateOrderDto); 27 UpdateOrderResponse updateOrder(UpdateOrderDto updateOrderDto);
27 BatchUpdateOrderDetailResponse batchUpdateOrderDetails(OrderDetailBatchUpdateDto batchUpdateDto); 28 BatchUpdateOrderDetailResponse batchUpdateOrderDetails(OrderDetailBatchUpdateDto batchUpdateDto);
29 + Boolean checkIfOrdered(CheckIfOrderedDto checkIfOrdered);
28 } 30 }
......
...@@ -85,6 +85,8 @@ public class OrderServiceRpcClient { ...@@ -85,6 +85,8 @@ public class OrderServiceRpcClient {
85 .addAllStallIds(queryOrderDto.getStallIds()) 85 .addAllStallIds(queryOrderDto.getStallIds())
86 .setShouldFilterStatus(queryOrderDto.getShouldFilterStatus()) 86 .setShouldFilterStatus(queryOrderDto.getShouldFilterStatus())
87 .setStatus(queryOrderDto.getStatus()) 87 .setStatus(queryOrderDto.getStatus())
88 + .setShouldFilterMenuIds(queryOrderDto.getShouldFilterMenuId())
89 + .addAllMenuIds(List.of(queryOrderDto.getMenuId()))
88 .build(); 90 .build();
89 return orderServiceRpcBlockingStub.queryClientCustomerOrdersByCondition(request).getResponsesList(); 91 return orderServiceRpcBlockingStub.queryClientCustomerOrdersByCondition(request).getResponsesList();
90 } 92 }
......
...@@ -18,6 +18,7 @@ import com.infoloop.tianting.menuservice.SingleMenuDetailRpcResponse; ...@@ -18,6 +18,7 @@ import com.infoloop.tianting.menuservice.SingleMenuDetailRpcResponse;
18 import com.infoloop.tianting.model.common.OrderPageResult; 18 import com.infoloop.tianting.model.common.OrderPageResult;
19 import com.infoloop.tianting.model.common.PageResult; 19 import com.infoloop.tianting.model.common.PageResult;
20 import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse; 20 import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse;
21 +import com.infoloop.tianting.model.dto.OrderDbDTO.CheckIfOrderedDto;
21 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDetailDto; 22 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDetailDto;
22 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto; 23 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
23 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse; 24 import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse;
...@@ -45,6 +46,8 @@ import com.infoloop.tianting.service.client.OrderServiceRpcClient; ...@@ -45,6 +46,8 @@ import com.infoloop.tianting.service.client.OrderServiceRpcClient;
45 import com.infoloop.tianting.service.client.SkuServiceRpcClient; 46 import com.infoloop.tianting.service.client.SkuServiceRpcClient;
46 import com.infoloop.tianting.utils.DateUtil; 47 import com.infoloop.tianting.utils.DateUtil;
47 import com.infoloop.tianting.utils.PageUtil; 48 import com.infoloop.tianting.utils.PageUtil;
49 +import java.time.LocalDate;
50 +import java.time.LocalDateTime;
48 import java.util.ArrayList; 51 import java.util.ArrayList;
49 import java.util.List; 52 import java.util.List;
50 import java.util.Optional; 53 import java.util.Optional;
...@@ -204,6 +207,31 @@ public class OrderServiceImpl implements OrderService { ...@@ -204,6 +207,31 @@ public class OrderServiceImpl implements OrderService {
204 } 207 }
205 208
206 @Override 209 @Override
210 + public Boolean checkIfOrdered(CheckIfOrderedDto checkIfOrdered) {
211 + final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
212 + final var mealTimeStart = checkIfOrdered.getMealTime().toLocalDate().atStartOfDay();
213 + LocalDate tomorrow = checkIfOrdered.getMealTime().toLocalDate().plusDays(1);
214 + final var mealTimeEnd = tomorrow.atStartOfDay();
215 + final var queryOrderDto = QueryOrderByConditionDto.builder()
216 + .enterpriseId(operatorLoginInfo.getEnterpriseId())
217 + .shouldFilterMealTimeStart(true)
218 + .mealTimeStart(mealTimeStart)
219 + .shouldFilterMealTimeEnd(true)
220 + .mealTimeEnd(mealTimeEnd)
221 + .shouldFilterMenuId(true)
222 + .menuId(checkIfOrdered.getMenuId())
223 + .shouldFilterCustomerIds(true)
224 + .customerIds(List.of(checkIfOrdered.getCustomerId()))
225 + .build();
226 + final var orderList = orderServiceRpcClient.getOrdersByCondition(queryOrderDto);
227 + if (orderList.isEmpty()) {
228 + return false;
229 + } else {
230 + return true;
231 + }
232 + }
233 +
234 + @Override
207 public List<OrderDetailDto> getOrderDetailsByOrderId(Integer orderId) { 235 public List<OrderDetailDto> getOrderDetailsByOrderId(Integer orderId) {
208 final var responseList = orderServiceRpcClient.getOrderDetailsByOrderId(orderId); 236 final var responseList = orderServiceRpcClient.getOrderDetailsByOrderId(orderId);
209 return responseList.stream().map(d -> 237 return responseList.stream().map(d ->
......