zhuyifan

feat(order): 添加订单详情价格字段并优化更新逻辑

...@@ -731,6 +731,10 @@ public class OrderDbDTO { ...@@ -731,6 +731,10 @@ public class OrderDbDTO {
731 @Builder.Default 731 @Builder.Default
732 private Boolean shouldUpdateServeStatus = false; 732 private Boolean shouldUpdateServeStatus = false;
733 733
734 + @ApiModelProperty(value = "价格")
735 + @Builder.Default
736 + private Integer price = null;
737 +
734 @ApiModelProperty(value = "出餐状态: 默认未出餐=1; 不出餐=2; 已出餐=3") 738 @ApiModelProperty(value = "出餐状态: 默认未出餐=1; 不出餐=2; 已出餐=3")
735 @Builder.Default 739 @Builder.Default
736 private ServeStatusEnum serveStatus = ServeStatusEnum.SERVE_NOT_START; 740 private ServeStatusEnum serveStatus = ServeStatusEnum.SERVE_NOT_START;
......
...@@ -245,6 +245,7 @@ public class OrderServiceRpcClient { ...@@ -245,6 +245,7 @@ public class OrderServiceRpcClient {
245 final var idsOfNoReject = new ArrayList<Integer>(); 245 final var idsOfNoReject = new ArrayList<Integer>();
246 List<OrderDetailDto> originalOrderDetails = new ArrayList<>(); 246 List<OrderDetailDto> originalOrderDetails = new ArrayList<>();
247 List<OrderDetailDto> newOrderDetails; 247 List<OrderDetailDto> newOrderDetails;
248 + final var orderDetailsMap = orderDetailBatchUpdateDto.getDetails().stream().collect(Collectors.toMap(OrderDbDTO.OrderDetailUpdateDto::getId, Function.identity()));
248 final var modifications = orderDetailBatchUpdateDto.getDetails().stream().map(d -> { 249 final var modifications = orderDetailBatchUpdateDto.getDetails().stream().map(d -> {
249 var mealDetail = MealDetail.newBuilder().build(); 250 var mealDetail = MealDetail.newBuilder().build();
250 Integer menuDetailId = 0; 251 Integer menuDetailId = 0;
...@@ -405,6 +406,7 @@ public class OrderServiceRpcClient { ...@@ -405,6 +406,7 @@ public class OrderServiceRpcClient {
405 if (!totalIds.contains(originalDetail.getId())) { 406 if (!totalIds.contains(originalDetail.getId())) {
406 continue; 407 continue;
407 } 408 }
409 + final var orderDetailUpdateDto = orderDetailsMap.get(originalDetail.getId());
408 OrderOperationType orderOperationType = OrderOperationType.UNKNOWN_OPERATION_TYPE; 410 OrderOperationType orderOperationType = OrderOperationType.UNKNOWN_OPERATION_TYPE;
409 if (idsOfNeedUpdateMenuDetails.contains(originalDetail.getId())) { 411 if (idsOfNeedUpdateMenuDetails.contains(originalDetail.getId())) {
410 orderOperationType = OrderOperationType.REPLACE_DISHES; 412 orderOperationType = OrderOperationType.REPLACE_DISHES;
...@@ -424,7 +426,7 @@ public class OrderServiceRpcClient { ...@@ -424,7 +426,7 @@ public class OrderServiceRpcClient {
424 .count(newDetail.get().getCount()) 426 .count(newDetail.get().getCount())
425 .adjustSkuRemark(newDetail.get().getAdjustSkuRemark()) 427 .adjustSkuRemark(newDetail.get().getAdjustSkuRemark())
426 .serveStatus(newDetail.get().getServeStatus().name()) 428 .serveStatus(newDetail.get().getServeStatus().name())
427 - .price(newDetail.get().getPrice()) 429 + .price(orderDetailUpdateDto.getPrice() == null ? newDetail.get().getPrice() : orderDetailUpdateDto.getPrice())
428 .build(); 430 .build();
429 newDetailStr = JsonUtil.writeAsJson(List.of(newOrderDetailOperation)); 431 newDetailStr = JsonUtil.writeAsJson(List.of(newOrderDetailOperation));
430 } 432 }
......