zhuyifan

fix

package com.infoloop.tianting.logic.delay;
import com.infoloop.tianting.clientcustomerorderservice.CloseTimeType;
import com.infoloop.tianting.clientcustomerorderservice.PayStatusEnum;
import com.infoloop.tianting.logic.delay.param.AutoCancelParam;
import com.infoloop.tianting.model.bo.AddSkusSellQuantityBO;
......@@ -43,13 +44,14 @@ public class OrderAutoCancelDelayTask {
return;
}
final var isUpdated = orderServiceRpcClient.updateClientCustomerOrderCancel(orderById.getEnterpriseId(), orderById.getId());
if (isUpdated) {
if (isUpdated && orderById.getCloseTimeType() == CloseTimeType.IMMEDIATELY) {
// 立即点餐需回滚库存
final var orderDetails = orderServiceRpcClient.getOrderDetailsByOrderId(orderById.getId());
final var isSuccess = orderServiceRpcClient.addSkusSellQuantities(orderById.getEnterpriseId(), orderById.getStallId(), orderDetails.stream().map(e -> AddSkusSellQuantityBO.builder()
.skuId(e.getSkuId())
.quantity(-e.getCount())
.build()).collect(Collectors.toList()));
log.info("Order {} addSkusSellQuantities result: {}", param.getOrderId(), isSuccess);
log.info("Order {} returnSkusSellQuantities result: {}", param.getOrderId(), isSuccess);
}
} catch (Exception e) {
log.error("OrderAutoCancelDelayTask execute error", e);
......
......@@ -47,6 +47,7 @@ import com.infoloop.tianting.exception.ErrorCodeEnum;
import com.infoloop.tianting.logic.delay.DelayedQueue;
import com.infoloop.tianting.logic.delay.OrderAutoCancelDelayTask;
import com.infoloop.tianting.logic.delay.param.AutoCancelParam;
import com.infoloop.tianting.menuservice.CloseTimeTypeEnum;
import com.infoloop.tianting.menuservice.ModeOfPaymentEnum;
import com.infoloop.tianting.model.bo.AddSkusSellQuantityBO;
import com.infoloop.tianting.model.bo.SkuSellQuantityBO;
......@@ -566,7 +567,7 @@ public class OrderServiceRpcClient {
.addAllOrderDetails(orderDetails)
.build();
final var menuById = menuServiceRpcClient.getMenuById(createOrderDto.getEnterpriseId(), createOrderDto.getMenuId());
if (menuById.getResponse().getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE) {
if (menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) {
final var skuIds = createOrderDto.getOrderDetailDtos().stream().map(CreateOrderDetailDto::getSkuId).collect(Collectors.toList());
final var skuSellQuantities = this.querySkuSellQuantitiesByStallAndSkuIds(createOrderDto.getEnterpriseId(), createOrderDto.getStallId(), skuIds);
final var skuSellQuantityMap = skuSellQuantities.stream().collect(Collectors.toMap(SingleSkuSellQuantityRpcResponse::getSkuId, Function.identity()));
......@@ -600,13 +601,18 @@ public class OrderServiceRpcClient {
.setEnterpriseId(createOrderDto.getEnterpriseId())
.setCreatedBy(createOrderDto.getCreatedBy())
.build());
if (orderResponse.getIsCreated() && menuById.getResponse().getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE) {
final var isSuccess = this.addSkusSellQuantities(createOrderDto.getEnterpriseId(), createOrderDto.getStallId(),
orderDetails.stream().map(e -> AddSkusSellQuantityBO.builder()
.skuId(e.getSkuId())
.quantity(e.getCount())
.build()).collect(Collectors.toList()));
if (isSuccess) {
if (orderResponse.getIsCreated()) {
//立即点餐需要扣除库存
if (menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) {
final var isSuccess = this.addSkusSellQuantities(createOrderDto.getEnterpriseId(), createOrderDto.getStallId(),
orderDetails.stream().map(e -> AddSkusSellQuantityBO.builder()
.skuId(e.getSkuId())
.quantity(e.getCount())
.build()).collect(Collectors.toList()));
log.info("Order {} addSkusSellQuantities result: {}", orderResponse.getId(), isSuccess);
}
//在线支付需要延迟取消订单
if (menuById.getResponse().getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE) {
final var autoCancelParam = new AutoCancelParam();
autoCancelParam.setOrderId(orderResponse.getId());
delayedQueue.addToQueue(OrderAutoCancelDelayTask.AUTO_CANCEL_ORDER_DELAY_QUEUE, autoCancelParam, 10, TimeUnit.MINUTES);
......
......@@ -113,7 +113,6 @@ public class OrderServiceImpl implements OrderService {
createOrderDto.setRoomNo(record.getRoomNo());
createOrderDto.setCreationSource(OrderSourceEnum.STALL.getNumber());
createOrderDto.setEnterpriseId(operatorLoginInfo.getEnterpriseId());
// createOrderDto.setStallId();
var onlinePay = menu.getOrderRuleJson().getModeOfPayment() == ModeOfPaymentEnum.ONLINE;
createOrderDto.setOnlinePay(onlinePay);
OrderTypeEnum orderType;
......