zhuyifan

fix

1 package com.infoloop.tianting.logic.delay; 1 package com.infoloop.tianting.logic.delay;
2 2
3 +import com.infoloop.tianting.clientcustomerorderservice.CloseTimeType;
3 import com.infoloop.tianting.clientcustomerorderservice.PayStatusEnum; 4 import com.infoloop.tianting.clientcustomerorderservice.PayStatusEnum;
4 import com.infoloop.tianting.logic.delay.param.AutoCancelParam; 5 import com.infoloop.tianting.logic.delay.param.AutoCancelParam;
5 import com.infoloop.tianting.model.bo.AddSkusSellQuantityBO; 6 import com.infoloop.tianting.model.bo.AddSkusSellQuantityBO;
...@@ -43,13 +44,14 @@ public class OrderAutoCancelDelayTask { ...@@ -43,13 +44,14 @@ public class OrderAutoCancelDelayTask {
43 return; 44 return;
44 } 45 }
45 final var isUpdated = orderServiceRpcClient.updateClientCustomerOrderCancel(orderById.getEnterpriseId(), orderById.getId()); 46 final var isUpdated = orderServiceRpcClient.updateClientCustomerOrderCancel(orderById.getEnterpriseId(), orderById.getId());
46 - if (isUpdated) { 47 + if (isUpdated && orderById.getCloseTimeType() == CloseTimeType.IMMEDIATELY) {
48 + // 立即点餐需回滚库存
47 final var orderDetails = orderServiceRpcClient.getOrderDetailsByOrderId(orderById.getId()); 49 final var orderDetails = orderServiceRpcClient.getOrderDetailsByOrderId(orderById.getId());
48 final var isSuccess = orderServiceRpcClient.addSkusSellQuantities(orderById.getEnterpriseId(), orderById.getStallId(), orderDetails.stream().map(e -> AddSkusSellQuantityBO.builder() 50 final var isSuccess = orderServiceRpcClient.addSkusSellQuantities(orderById.getEnterpriseId(), orderById.getStallId(), orderDetails.stream().map(e -> AddSkusSellQuantityBO.builder()
49 .skuId(e.getSkuId()) 51 .skuId(e.getSkuId())
50 .quantity(-e.getCount()) 52 .quantity(-e.getCount())
51 .build()).collect(Collectors.toList())); 53 .build()).collect(Collectors.toList()));
52 - log.info("Order {} addSkusSellQuantities result: {}", param.getOrderId(), isSuccess); 54 + log.info("Order {} returnSkusSellQuantities result: {}", param.getOrderId(), isSuccess);
53 } 55 }
54 } catch (Exception e) { 56 } catch (Exception e) {
55 log.error("OrderAutoCancelDelayTask execute error", e); 57 log.error("OrderAutoCancelDelayTask execute error", e);
......
...@@ -47,6 +47,7 @@ import com.infoloop.tianting.exception.ErrorCodeEnum; ...@@ -47,6 +47,7 @@ import com.infoloop.tianting.exception.ErrorCodeEnum;
47 import com.infoloop.tianting.logic.delay.DelayedQueue; 47 import com.infoloop.tianting.logic.delay.DelayedQueue;
48 import com.infoloop.tianting.logic.delay.OrderAutoCancelDelayTask; 48 import com.infoloop.tianting.logic.delay.OrderAutoCancelDelayTask;
49 import com.infoloop.tianting.logic.delay.param.AutoCancelParam; 49 import com.infoloop.tianting.logic.delay.param.AutoCancelParam;
50 +import com.infoloop.tianting.menuservice.CloseTimeTypeEnum;
50 import com.infoloop.tianting.menuservice.ModeOfPaymentEnum; 51 import com.infoloop.tianting.menuservice.ModeOfPaymentEnum;
51 import com.infoloop.tianting.model.bo.AddSkusSellQuantityBO; 52 import com.infoloop.tianting.model.bo.AddSkusSellQuantityBO;
52 import com.infoloop.tianting.model.bo.SkuSellQuantityBO; 53 import com.infoloop.tianting.model.bo.SkuSellQuantityBO;
...@@ -566,7 +567,7 @@ public class OrderServiceRpcClient { ...@@ -566,7 +567,7 @@ public class OrderServiceRpcClient {
566 .addAllOrderDetails(orderDetails) 567 .addAllOrderDetails(orderDetails)
567 .build(); 568 .build();
568 final var menuById = menuServiceRpcClient.getMenuById(createOrderDto.getEnterpriseId(), createOrderDto.getMenuId()); 569 final var menuById = menuServiceRpcClient.getMenuById(createOrderDto.getEnterpriseId(), createOrderDto.getMenuId());
569 - if (menuById.getResponse().getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE) { 570 + if (menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) {
570 final var skuIds = createOrderDto.getOrderDetailDtos().stream().map(CreateOrderDetailDto::getSkuId).collect(Collectors.toList()); 571 final var skuIds = createOrderDto.getOrderDetailDtos().stream().map(CreateOrderDetailDto::getSkuId).collect(Collectors.toList());
571 final var skuSellQuantities = this.querySkuSellQuantitiesByStallAndSkuIds(createOrderDto.getEnterpriseId(), createOrderDto.getStallId(), skuIds); 572 final var skuSellQuantities = this.querySkuSellQuantitiesByStallAndSkuIds(createOrderDto.getEnterpriseId(), createOrderDto.getStallId(), skuIds);
572 final var skuSellQuantityMap = skuSellQuantities.stream().collect(Collectors.toMap(SingleSkuSellQuantityRpcResponse::getSkuId, Function.identity())); 573 final var skuSellQuantityMap = skuSellQuantities.stream().collect(Collectors.toMap(SingleSkuSellQuantityRpcResponse::getSkuId, Function.identity()));
...@@ -600,13 +601,18 @@ public class OrderServiceRpcClient { ...@@ -600,13 +601,18 @@ public class OrderServiceRpcClient {
600 .setEnterpriseId(createOrderDto.getEnterpriseId()) 601 .setEnterpriseId(createOrderDto.getEnterpriseId())
601 .setCreatedBy(createOrderDto.getCreatedBy()) 602 .setCreatedBy(createOrderDto.getCreatedBy())
602 .build()); 603 .build());
603 - if (orderResponse.getIsCreated() && menuById.getResponse().getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE) { 604 + if (orderResponse.getIsCreated()) {
604 - final var isSuccess = this.addSkusSellQuantities(createOrderDto.getEnterpriseId(), createOrderDto.getStallId(), 605 + //立即点餐需要扣除库存
605 - orderDetails.stream().map(e -> AddSkusSellQuantityBO.builder() 606 + if (menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) {
606 - .skuId(e.getSkuId()) 607 + final var isSuccess = this.addSkusSellQuantities(createOrderDto.getEnterpriseId(), createOrderDto.getStallId(),
607 - .quantity(e.getCount()) 608 + orderDetails.stream().map(e -> AddSkusSellQuantityBO.builder()
608 - .build()).collect(Collectors.toList())); 609 + .skuId(e.getSkuId())
609 - if (isSuccess) { 610 + .quantity(e.getCount())
611 + .build()).collect(Collectors.toList()));
612 + log.info("Order {} addSkusSellQuantities result: {}", orderResponse.getId(), isSuccess);
613 + }
614 + //在线支付需要延迟取消订单
615 + if (menuById.getResponse().getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE) {
610 final var autoCancelParam = new AutoCancelParam(); 616 final var autoCancelParam = new AutoCancelParam();
611 autoCancelParam.setOrderId(orderResponse.getId()); 617 autoCancelParam.setOrderId(orderResponse.getId());
612 delayedQueue.addToQueue(OrderAutoCancelDelayTask.AUTO_CANCEL_ORDER_DELAY_QUEUE, autoCancelParam, 10, TimeUnit.MINUTES); 618 delayedQueue.addToQueue(OrderAutoCancelDelayTask.AUTO_CANCEL_ORDER_DELAY_QUEUE, autoCancelParam, 10, TimeUnit.MINUTES);
......
...@@ -113,7 +113,6 @@ public class OrderServiceImpl implements OrderService { ...@@ -113,7 +113,6 @@ public class OrderServiceImpl implements OrderService {
113 createOrderDto.setRoomNo(record.getRoomNo()); 113 createOrderDto.setRoomNo(record.getRoomNo());
114 createOrderDto.setCreationSource(OrderSourceEnum.STALL.getNumber()); 114 createOrderDto.setCreationSource(OrderSourceEnum.STALL.getNumber());
115 createOrderDto.setEnterpriseId(operatorLoginInfo.getEnterpriseId()); 115 createOrderDto.setEnterpriseId(operatorLoginInfo.getEnterpriseId());
116 -// createOrderDto.setStallId();
117 var onlinePay = menu.getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE; 116 var onlinePay = menu.getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE;
118 createOrderDto.setOnlinePay(onlinePay); 117 createOrderDto.setOnlinePay(onlinePay);
119 OrderTypeEnum orderType; 118 OrderTypeEnum orderType;
......