diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderPlaceBusinessImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderPlaceBusinessImpl.java index ea78c7d5..443b2743 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderPlaceBusinessImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderPlaceBusinessImpl.java @@ -10,8 +10,10 @@ import com.bonus.constant.RetCodeEnum; import com.bonus.constant.SourceTypeEnum; import com.bonus.core.account.v3.api.AccTradeApi; import com.bonus.core.account.v3.api.vo.AccTradeOrderBalanceVO; +import com.bonus.core.allocation.api.AllocStallApi; import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryDTO; import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryModel; +import com.bonus.core.allocation.canteen.model.AllocStall; import com.bonus.core.common.enums.DeliveryTypeEnum; import com.bonus.core.common.enums.MetadataModelTypeEnum; import com.bonus.core.common.redis.RedisUtil; @@ -137,9 +139,9 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness { // @Autowired // @Lazy // protected DeviceApi deviceApi; -// @Autowired -// @Lazy -// protected AllocStallApi allocStallApi; + @Autowired + @Lazy + protected AllocStallApi allocStallApi; @Autowired @Lazy protected AccTradeApi accTradeApi; @@ -982,19 +984,19 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness { this.orderCustomBusiness.place().didUpdateOrderFieldAfterPay(orderInfo, didPayInfoDTO); } -// public boolean ifUseCall(OrderInfo orderInfo) { -// if (LocalDate.now().isAfter(orderInfo.getOrderDate())) { -// log.warn("[叫号] 今天之前的订单不叫号"); -// } else if ((OrderTypeEnum.isAndroidType(orderInfo.getOrderType()) || OrderTypeEnum.isCurrMealType(orderInfo.getOrderType())) && LeNumUtil.isValidId(orderInfo.getStallId())) { -// AllocStall allocStall = this.allocStallApi.getAllocStall(orderInfo.getStallId()); -// if (allocStall != null && LeConstants.COMMON_YES.equals(allocStall.getIfUseCallNum())) { -// log.info("[当餐点餐下单] 开启叫号"); -// return true; -// } -// } -// -// return false; -// } + public boolean ifUseCall(OrderInfo orderInfo) { + if (LocalDate.now().isAfter(orderInfo.getOrderDate())) { + log.warn("[叫号] 今天之前的订单不叫号"); + } else if ((OrderTypeEnum.isAndroidType(orderInfo.getOrderType()) || OrderTypeEnum.isCurrMealType(orderInfo.getOrderType())) && LeNumUtil.isValidId(orderInfo.getStallId())) { + AllocStall allocStall = this.allocStallApi.getAllocStall(orderInfo.getStallId()); + if (allocStall != null && LeConstants.COMMON_YES.equals(allocStall.getIfUseCallNum())) { + log.info("[当餐点餐下单] 开启叫号"); + return true; + } + } + + return false; + } protected void calcOrderAndDetailTotalAmount(OrderInfo orderInfo, List orderDetailList) { boolean usePrefPrice = !OrderTypeEnum.isShopCategory(orderInfo.getOrderType()) || this.supermarketApi.ifSupermarketMember(orderInfo.getCustId(), orderInfo.getCanteenId()); @@ -1016,9 +1018,8 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness { s.setAccPayResultVO(AccPayResultVO.of((AccTradeOrderBalanceVO)accPayDetailMap.get(s.getTradeChannelId()))); }); } + } -// } -// // protected OrderAmountChange packageOrderAmountChange(Long orderId, LocalDate orderDate, BigDecimal changeAmount, ChangeDetailTypeEnum changeDetailType) { // return this.packageOrderAmountChange(orderId, orderDate, changeAmount, changeDetailType, (String)null); // } @@ -1027,34 +1028,34 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness { // return OrderAmountChange.newInstance(orderId, orderDate, changeDetailType, changeAmount, remark); // } -// protected RulePriceDTO packageRulePriceDTO(List orderInfoList, List orderDetailList, boolean isTrail) { -// RulePriceDTO rulePriceDTO = new RulePriceDTO(); -// rulePriceDTO.setTryFlag(isTrail ? LeConstants.COMMON_YES : LeConstants.COMMON_NO); -// rulePriceDTO.setVerifyFlag(LeConstants.COMMON_NO); -// List ruleOrderList = (List)orderInfoList.stream().map((orderInfo) -> { -// RulePriceOrderDTO orderDTO = (new RulePriceOrderDTO()).setOrderId(orderInfo.getOrderId()).setMacOrderId(orderInfo.getMacOrderId()).setCustId(LeNumUtil.isValidId(orderInfo.getCustId()) ? orderInfo.getCustId() : LeConstants.DATA_DEFAULT_LONG).setOrderType(orderInfo.getOrderType()).setDeviceSn(orderInfo.getMachineSn()).setMealtimeType(orderInfo.getMealtimeType()).setOrderDate(orderInfo.getOrderDate()).setOrderTime(orderInfo.getOrderTime()).setCanteenId(orderInfo.getCanteenId()).setStallId(orderInfo.getStallId()).setPayableAmount(orderInfo.calcNeedPayAmount()).setIfOnline(orderInfo.getIfOnline()); -// List detailDtoList = (List)orderDetailList.stream().filter((s) -> { -// return s.getOrderId().equals(orderDTO.getOrderId()); -// }).map((s) -> { -// return (new RulePriceOrderDetailDTO()).setDetailId(s.getDetailId()).setGoodsDishesId(s.getGoodsDishesId()).setPrice(s.getPrice()).setQuantity(s.getQuantity()).setCalcTotalAmount(s.getCalcTotalAmount()); -// }).collect(Collectors.toList()); -// orderDTO.setDetails(detailDtoList); -// return orderDTO; -// }).collect(Collectors.toList()); -// rulePriceDTO.setOrders(ruleOrderList); -// rulePriceDTO.setCustId(LeNumUtil.isValidId(((OrderInfo)orderInfoList.get(0)).getCustId()) ? ((OrderInfo)orderInfoList.get(0)).getCustId() : LeConstants.DATA_DEFAULT_LONG); -// rulePriceDTO.setPayChannel(((OrderInfo)orderInfoList.get(0)).getPayChannel()); -// return rulePriceDTO; -// } + protected RulePriceDTO packageRulePriceDTO(List orderInfoList, List orderDetailList, boolean isTrail) { + RulePriceDTO rulePriceDTO = new RulePriceDTO(); + rulePriceDTO.setTryFlag(isTrail ? LeConstants.COMMON_YES : LeConstants.COMMON_NO); + rulePriceDTO.setVerifyFlag(LeConstants.COMMON_NO); + List ruleOrderList = (List)orderInfoList.stream().map((orderInfo) -> { + RulePriceOrderDTO orderDTO = (new RulePriceOrderDTO()).setOrderId(orderInfo.getOrderId()).setMacOrderId(orderInfo.getMacOrderId()).setCustId(LeNumUtil.isValidId(orderInfo.getCustId()) ? orderInfo.getCustId() : LeConstants.DATA_DEFAULT_LONG).setOrderType(orderInfo.getOrderType()).setDeviceSn(orderInfo.getMachineSn()).setMealtimeType(orderInfo.getMealtimeType()).setOrderDate(orderInfo.getOrderDate()).setOrderTime(orderInfo.getOrderTime()).setCanteenId(orderInfo.getCanteenId()).setStallId(orderInfo.getStallId()).setPayableAmount(orderInfo.calcNeedPayAmount()).setIfOnline(orderInfo.getIfOnline()); + List detailDtoList = (List)orderDetailList.stream().filter((s) -> { + return s.getOrderId().equals(orderDTO.getOrderId()); + }).map((s) -> { + return (new RulePriceOrderDetailDTO()).setDetailId(s.getDetailId()).setGoodsDishesId(s.getGoodsDishesId()).setPrice(s.getPrice()).setQuantity(s.getQuantity()).setCalcTotalAmount(s.getCalcTotalAmount()); + }).collect(Collectors.toList()); + orderDTO.setDetails(detailDtoList); + return orderDTO; + }).collect(Collectors.toList()); + rulePriceDTO.setOrders(ruleOrderList); + rulePriceDTO.setCustId(LeNumUtil.isValidId(((OrderInfo)orderInfoList.get(0)).getCustId()) ? ((OrderInfo)orderInfoList.get(0)).getCustId() : LeConstants.DATA_DEFAULT_LONG); + rulePriceDTO.setPayChannel(((OrderInfo)orderInfoList.get(0)).getPayChannel()); + return rulePriceDTO; + } -// protected boolean ifMealtimeAfterCurrent(OrderInfo orderInfo) { -// if (orderInfo.getOrderDate().isBefore(LocalDate.now())) { -// return false; -// } else if (orderInfo.getOrderDate().isAfter(LocalDate.now())) { -// return true; -// } else { -// AllocMealtimeModel currentMealtime = this.orderModuleClient.mealtimeQuery(MealtimeQueryParam.ofAssignTime(orderInfo.getOrderTime().toLocalTime(), orderInfo.getCanteenId(), orderInfo.getStallId())); -// return currentMealtime != null && currentMealtime.getMealtimeType().compareTo(orderInfo.getMealtimeType()) < 0; -// } -// } + protected boolean ifMealtimeAfterCurrent(OrderInfo orderInfo) { + if (orderInfo.getOrderDate().isBefore(LocalDate.now())) { + return false; + } else if (orderInfo.getOrderDate().isAfter(LocalDate.now())) { + return true; + } else { + AllocMealtimeModel currentMealtime = this.orderModuleClient.mealtimeQuery(MealtimeQueryParam.ofAssignTime(orderInfo.getOrderTime().toLocalTime(), orderInfo.getCanteenId(), orderInfo.getStallId())); + return currentMealtime != null && currentMealtime.getMealtimeType().compareTo(orderInfo.getMealtimeType()) < 0; + } + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java index 1d8ca097..1afca1a1 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/business/impl/OrderResultBusinessImpl.java @@ -18,6 +18,7 @@ import com.bonus.core.order.common.service.OrderDeliveryService; import com.bonus.core.order.common.service.OrderDetailService; import com.bonus.core.order.common.service.OrderInfoService; import com.bonus.core.order.custom.OrderCustomBusiness; +import com.bonus.core.order.mq.OrderMessageSend; import com.bonus.core.order.mq.po.OrderSavePO; import com.bonus.core.order.repair.service.OrderRepairService; import com.bonus.core.pay.api.PayApi; @@ -212,7 +213,7 @@ public class OrderResultBusinessImpl implements OrderResultBusiness { } } } -// + // public void asyncRefundResultHandler(RefundResultPO refundResultPO) { // LogUtil.info("订单异步退款|支付结果处理", refundResultPO); // if (this.orderCustomBusiness.result().willHandleAsyncRefundResult(refundResultPO)) { diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/OrderInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/OrderInfoService.java index 96c11504..2308bf8f 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/OrderInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/OrderInfoService.java @@ -7,6 +7,7 @@ import com.bonus.core.order.mobile.vo.OrderInfoMobileVO; import com.bonus.core.order.mobile.vo.OrderListMobileVO; import com.bonus.core.order.web.dto.OrderUserPermissionDTO; +import javax.validation.constraints.NotNull; import java.time.LocalDate; import java.util.Collection; import java.util.List; @@ -68,7 +69,7 @@ public interface OrderInfoService { // List getPlacedOrderInfoList(Long custId, LocalDate nowDate); // -// void initOrderCustInfo(List orderInfoList, Long custId); + void initOrderCustInfo(List orderInfoList, Long custId); // // void fillOrderCustName(List orderInfoList, boolean skipIfNameExists); // diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/impl/OrderInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/impl/OrderInfoServiceImpl.java index 5118bf04..4a57c174 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/impl/OrderInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/common/service/impl/OrderInfoServiceImpl.java @@ -13,6 +13,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bonus.common.core.exception.ServiceException; import com.bonus.constant.LeConstants; import com.bonus.core.common.constant.LeRetCodeEnum; +import com.bonus.core.customer.vo.CustPayVO; +import com.bonus.core.order.client.OrderModuleClient; +import com.bonus.core.order.client.po.CustPayInfoQueryParam; import com.bonus.core.order.common.constants.OrderStateEnum; import com.bonus.core.order.common.constants.OrderTips; import com.bonus.core.order.common.dto.OrderSearchParam; @@ -31,6 +34,7 @@ import com.bonus.core.pay.common.model.TradeOrderRecharge; import com.bonus.i18n.I18n; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -62,9 +66,9 @@ public class OrderInfoServiceImpl extends ServiceImpl orderInfoList, Long custId) { -// if (!CollUtil.isEmpty(orderInfoList)) { -// if (orderInfoList.stream().anyMatch((s) -> { -// return !s.hasCustInfo(custId); -// })) { -// CustPayVO custInfo = this.orderModuleClient.custPayInfoQuery(CustPayInfoQueryParam.ofCustId(LeNumUtil.idOrDefault(custId))); -// orderInfoList.forEach((s) -> { -// s.fillCustInfo(custInfo); -// }); -// } -// -// } -// } -// + + public void initOrderCustInfo(List orderInfoList, Long custId) { + if (!CollUtil.isEmpty(orderInfoList)) { + if (orderInfoList.stream().anyMatch((s) -> { + return !s.hasCustInfo(custId); + })) { + CustPayVO custInfo = this.orderModuleClient.custPayInfoQuery(CustPayInfoQueryParam.ofCustId(LeNumUtil.idOrDefault(custId))); + orderInfoList.forEach((s) -> { + s.fillCustInfo(custInfo); + }); + } + } + } + // public void fillOrderCustName(List orderInfoList, boolean skipIfNameExists) { // if (!CollUtil.isEmpty(orderInfoList)) { // List custIds = (List)orderInfoList.stream().filter((orderInfox) -> { diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/mq/OrderMessageSend.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/mq/OrderMessageSend.java index 47e85db4..90ad593e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/mq/OrderMessageSend.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/mq/OrderMessageSend.java @@ -6,7 +6,9 @@ import com.bonus.core.common.utils.JacksonUtil; import com.bonus.core.common.utils.LogUtil; import com.bonus.core.common.utils.TenantContextHolder; import com.bonus.core.order.android.dto.MacOrderImageSaveDTO; +import com.bonus.core.order.common.model.*; import com.bonus.core.order.mq.po.OrderCancelPO; +import com.bonus.core.order.mq.po.OrderPlacedPO; import com.bonus.core.pay.common.po.PayResultPO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -166,27 +168,27 @@ public class OrderMessageSend { // // } // } -// -// public static void orderV3Placed(String outTradeNo, List orderInfoList, List detailList, List orderDeliveryList, List amountChangeList, List amountDetailList) { -// log.info("[订单MQv3]发送订单已下单通知"); -// OrderPlacedPO orderSavePO = new OrderPlacedPO(); -// orderSavePO.setTraceId(LogUtil.getCurrentTraceId()); -// orderSavePO.setTenantId(TenantContextHolder.getTenantId()); -// orderSavePO.setOutTradeNo(outTradeNo); -// orderSavePO.setOrderInfoList(orderInfoList); -// orderSavePO.setDetailList(detailList); -// orderSavePO.setOrderDeliveryList(orderDeliveryList); -// orderSavePO.setAmountChangeList(amountChangeList); -// orderSavePO.setAmountDetailList(amountDetailList); -// -// try { -// MqUtil.sendByTxEnd(JacksonUtil.writeValueAsString(orderSavePO), LeMqConstant.Topic.ORDER_V3_PLACED); -// } catch (Exception var8) { -// log.error("发送MQ消息失败", var8); -// } -// -// } -// + + public static void orderV3Placed(String outTradeNo, List orderInfoList, List detailList, List orderDeliveryList, List amountChangeList, List amountDetailList) { + log.info("[订单MQv3]发送订单已下单通知"); + OrderPlacedPO orderSavePO = new OrderPlacedPO(); + orderSavePO.setTraceId(LogUtil.getCurrentTraceId()); + orderSavePO.setTenantId(TenantContextHolder.getTenantId()); + orderSavePO.setOutTradeNo(outTradeNo); + orderSavePO.setOrderInfoList(orderInfoList); + orderSavePO.setDetailList(detailList); + orderSavePO.setOrderDeliveryList(orderDeliveryList); + orderSavePO.setAmountChangeList(amountChangeList); + orderSavePO.setAmountDetailList(amountDetailList); + + try { + MqUtil.sendByTxEnd(JacksonUtil.writeValueAsString(orderSavePO), LeMqConstant.Topic.ORDER_V3_PLACED); + } catch (Exception var8) { + log.error("发送MQ消息失败", var8); + } + + } + // public static void orderV3Canceled(OrderInfo orderInfo, List detailList) { // log.info("[订单MQv3]发送订单已取消通知"); // OrderCanceledPO po = new OrderCanceledPO(); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/mq/po/OrderPlacedPO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/mq/po/OrderPlacedPO.java new file mode 100644 index 00000000..fde11dff --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/core/order/mq/po/OrderPlacedPO.java @@ -0,0 +1,82 @@ +package com.bonus.core.order.mq.po; + +import cn.hutool.core.collection.CollUtil; +import com.bonus.core.order.common.model.*; + +import java.util.List; + +public class OrderPlacedPO { + private String traceId; + private Long tenantId; + private String outTradeNo; + private List orderInfoList = CollUtil.newArrayList(new OrderInfo[0]); + private List detailList = CollUtil.newArrayList(new OrderDetail[0]); + private List orderDeliveryList = CollUtil.newArrayList(new OrderDelivery[0]); + private List amountChangeList = CollUtil.newArrayList(new OrderAmountChange[0]); + private List amountDetailList = CollUtil.newArrayList(new OrderAmountDetail[0]); + + public String getTraceId() { + return this.traceId; + } + + public Long getTenantId() { + return this.tenantId; + } + + public String getOutTradeNo() { + return this.outTradeNo; + } + + public List getOrderInfoList() { + return this.orderInfoList; + } + + public List getDetailList() { + return this.detailList; + } + + public List getOrderDeliveryList() { + return this.orderDeliveryList; + } + + public List getAmountChangeList() { + return this.amountChangeList; + } + + public List getAmountDetailList() { + return this.amountDetailList; + } + + public void setTraceId(final String traceId) { + this.traceId = traceId; + } + + public void setTenantId(final Long tenantId) { + this.tenantId = tenantId; + } + + public void setOutTradeNo(final String outTradeNo) { + this.outTradeNo = outTradeNo; + } + + public void setOrderInfoList(final List orderInfoList) { + this.orderInfoList = orderInfoList; + } + + public void setDetailList(final List detailList) { + this.detailList = detailList; + } + + public void setOrderDeliveryList(final List orderDeliveryList) { + this.orderDeliveryList = orderDeliveryList; + } + + public void setAmountChangeList(final List amountChangeList) { + this.amountChangeList = amountChangeList; + } + + public void setAmountDetailList(final List amountDetailList) { + this.amountDetailList = amountDetailList; + } + +}