wangyingyang

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

......@@ -97,4 +97,13 @@ public class OrderController {
@Valid @RequestBody OrderDbDTO.OrderDetailBatchUpdateDto updateDto) {
return orderService.batchUpdateOrderDetails(updateDto);
}
@ApiOperation(value = "检查是否预定过该餐单")
@PostMapping("/order/check")
@ResponseStatus(HttpStatus.OK)
public Boolean checkOrder(
@Valid @RequestBody OrderDbDTO.CheckIfOrderedDto checkIfOrderedDto) {
return orderService.checkIfOrdered(checkIfOrderedDto);
}
}
......
......@@ -114,6 +114,10 @@ public class OrderDbDTO {
private Boolean shouldFilterStatus = false;
@Builder.Default
private OrderStatusEnum status = OrderStatusEnum.UNKNOWN_STATUS;
@Builder.Default
private Boolean shouldFilterMenuId = false;
@Builder.Default
private Integer menuId = 0;
}
@Data
......@@ -570,6 +574,16 @@ public class OrderDbDTO {
@Data
@Builder
@ToString
@ApiModel(description = "检查是否已预定过某一餐单")
public static class CheckIfOrderedDto {
private Integer customerId;
private Integer menuId;
private LocalDateTime mealTime;
}
@Data
@Builder
@ToString
@ApiModel(description = "修改菜品细节信息")
public static class OrderDetailUpdateDto {
private Integer id;
......
......@@ -3,6 +3,7 @@ package com.infoloop.tianting.service;
import com.infoloop.tianting.model.common.OrderPageResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.CheckIfOrderedDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.OperatorCreateOrderDto;
......@@ -25,4 +26,5 @@ public interface OrderService {
CreateOrderResponse orderCreation(OperatorCreateOrderDto createOrderDto);
UpdateOrderResponse updateOrder(UpdateOrderDto updateOrderDto);
BatchUpdateOrderDetailResponse batchUpdateOrderDetails(OrderDetailBatchUpdateDto batchUpdateDto);
Boolean checkIfOrdered(CheckIfOrderedDto checkIfOrdered);
}
......
......@@ -85,6 +85,8 @@ public class OrderServiceRpcClient {
.addAllStallIds(queryOrderDto.getStallIds())
.setShouldFilterStatus(queryOrderDto.getShouldFilterStatus())
.setStatus(queryOrderDto.getStatus())
.setShouldFilterMenuIds(queryOrderDto.getShouldFilterMenuId())
.addAllMenuIds(List.of(queryOrderDto.getMenuId()))
.build();
return orderServiceRpcBlockingStub.queryClientCustomerOrdersByCondition(request).getResponsesList();
}
......
......@@ -18,6 +18,7 @@ import com.infoloop.tianting.menuservice.SingleMenuDetailRpcResponse;
import com.infoloop.tianting.model.common.OrderPageResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.CheckIfOrderedDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse;
......@@ -45,6 +46,8 @@ import com.infoloop.tianting.service.client.OrderServiceRpcClient;
import com.infoloop.tianting.service.client.SkuServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import com.infoloop.tianting.utils.PageUtil;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
......@@ -204,6 +207,31 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public Boolean checkIfOrdered(CheckIfOrderedDto checkIfOrdered) {
final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
final var mealTimeStart = checkIfOrdered.getMealTime().toLocalDate().atStartOfDay();
LocalDate tomorrow = checkIfOrdered.getMealTime().toLocalDate().plusDays(1);
final var mealTimeEnd = tomorrow.atStartOfDay();
final var queryOrderDto = QueryOrderByConditionDto.builder()
.enterpriseId(operatorLoginInfo.getEnterpriseId())
.shouldFilterMealTimeStart(true)
.mealTimeStart(mealTimeStart)
.shouldFilterMealTimeEnd(true)
.mealTimeEnd(mealTimeEnd)
.shouldFilterMenuId(true)
.menuId(checkIfOrdered.getMenuId())
.shouldFilterCustomerIds(true)
.customerIds(List.of(checkIfOrdered.getCustomerId()))
.build();
final var orderList = orderServiceRpcClient.getOrdersByCondition(queryOrderDto);
if (orderList.isEmpty()) {
return false;
} else {
return true;
}
}
@Override
public List<OrderDetailDto> getOrderDetailsByOrderId(Integer orderId) {
final var responseList = orderServiceRpcClient.getOrderDetailsByOrderId(orderId);
return responseList.stream().map(d ->
......