sync_pay_state

This commit is contained in:
sxu 2025-02-20 18:17:27 +08:00
parent ed1c1aca5f
commit 28a6f85579
3 changed files with 89 additions and 91 deletions

View File

@ -2,14 +2,12 @@ package com.bonus.core.order.common.business;
import com.bonus.core.marketing.coupon.model.MktCouponPayModel; import com.bonus.core.marketing.coupon.model.MktCouponPayModel;
import com.bonus.core.menu.model.AllocMealtimeModel; import com.bonus.core.menu.model.AllocMealtimeModel;
import com.bonus.core.order.common.model.OrderAmountChange; import com.bonus.core.order.common.model.*;
import com.bonus.core.order.common.model.OrderDelivery;
import com.bonus.core.order.common.model.OrderDetail;
import com.bonus.core.order.common.model.OrderInfo;
import com.bonus.core.order.common.vo.OrderDeliveryResultVO; import com.bonus.core.order.common.vo.OrderDeliveryResultVO;
import com.bonus.core.order.mq.po.OrderSavePO; import com.bonus.core.order.mq.po.OrderSavePO;
import com.bonus.core.pay.api.dto.UnifyPayDTO; import com.bonus.core.pay.api.dto.UnifyPayDTO;
import com.bonus.core.pay.api.vo.UnifyPayVO; import com.bonus.core.pay.api.vo.UnifyPayVO;
import com.bonus.core.pay.common.vo.TradeChannelVO;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -64,8 +62,8 @@ public interface OrderPlaceBusiness {
// //
// List<OrderDetail> removeDetailDishes(List<OrderDetail> orderDetailList, List<OrderDetailRefundDTO> removeList); // List<OrderDetail> removeDetailDishes(List<OrderDetail> orderDetailList, List<OrderDetailRefundDTO> removeList);
// //
// List<OrderAmountDetail> calcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, List<OrderAmountChange> orderAmountChangeList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList); List<OrderAmountDetail> calcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, List<OrderAmountChange> orderAmountChangeList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList);
//
// void updateOrderFieldAfterPay(OrderInfo orderInfo, OrderDidPayInfoDTO didPayInfoDTO); // void updateOrderFieldAfterPay(OrderInfo orderInfo, OrderDidPayInfoDTO didPayInfoDTO);
// //
// boolean ifUseCall(OrderInfo orderInfo); // boolean ifUseCall(OrderInfo orderInfo);

View File

@ -1,6 +1,5 @@
package com.bonus.core.order.common.business.impl; package com.bonus.core.order.common.business.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
@ -8,6 +7,7 @@ import cn.hutool.core.util.NumberUtil;
import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.exception.ServiceException;
import com.bonus.constant.LeConstants; import com.bonus.constant.LeConstants;
import com.bonus.constant.RetCodeEnum; import com.bonus.constant.RetCodeEnum;
import com.bonus.core.account.v3.api.vo.AccTradeOrderBalanceVO;
import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryDTO; import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryDTO;
import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryModel; import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryModel;
import com.bonus.core.common.enums.DeliveryTypeEnum; import com.bonus.core.common.enums.DeliveryTypeEnum;
@ -37,10 +37,7 @@ import com.bonus.core.order.client.po.MetaDataValueParam;
import com.bonus.core.order.client.po.OrderConfigQueryParam; import com.bonus.core.order.client.po.OrderConfigQueryParam;
import com.bonus.core.order.common.business.OrderPlaceBusiness; import com.bonus.core.order.common.business.OrderPlaceBusiness;
import com.bonus.core.order.common.constants.*; import com.bonus.core.order.common.constants.*;
import com.bonus.core.order.common.model.OrderAmountChange; import com.bonus.core.order.common.model.*;
import com.bonus.core.order.common.model.OrderDelivery;
import com.bonus.core.order.common.model.OrderDetail;
import com.bonus.core.order.common.model.OrderInfo;
import com.bonus.core.order.common.service.*; import com.bonus.core.order.common.service.*;
import com.bonus.core.order.common.vo.OrderDeliveryResultVO; import com.bonus.core.order.common.vo.OrderDeliveryResultVO;
import com.bonus.core.order.custom.OrderCustomBusiness; import com.bonus.core.order.custom.OrderCustomBusiness;
@ -49,10 +46,13 @@ import com.bonus.core.order.utils.LeNumUtil;
import com.bonus.core.pay.api.PayApi; import com.bonus.core.pay.api.PayApi;
import com.bonus.core.pay.api.dto.UnifyPayDTO; import com.bonus.core.pay.api.dto.UnifyPayDTO;
import com.bonus.core.pay.api.vo.UnifyPayVO; import com.bonus.core.pay.api.vo.UnifyPayVO;
import com.bonus.core.pay.channel.account.vo.AccPayResultVO;
import com.bonus.core.pay.common.constants.PayChannelEnum; import com.bonus.core.pay.common.constants.PayChannelEnum;
import com.bonus.core.pay.common.constants.PayChannelSelectEnum; import com.bonus.core.pay.common.constants.PayChannelSelectEnum;
import com.bonus.core.pay.common.constants.PayStateEnum;
import com.bonus.core.pay.common.constants.PayTypeEnum; import com.bonus.core.pay.common.constants.PayTypeEnum;
import com.bonus.core.pay.common.vo.PayChannelSplitVO; import com.bonus.core.pay.common.vo.PayChannelSplitVO;
import com.bonus.core.pay.common.vo.TradeChannelVO;
import com.bonus.core.supermarket.api.SupermarketApi; import com.bonus.core.supermarket.api.SupermarketApi;
import com.bonus.core.supermarket.dto.SmtCheckProductLimitBuyDTO; import com.bonus.core.supermarket.dto.SmtCheckProductLimitBuyDTO;
import com.bonus.core.supermarket.dto.SmtCheckProductLimitBuyDetailDTO; import com.bonus.core.supermarket.dto.SmtCheckProductLimitBuyDetailDTO;
@ -863,72 +863,72 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness {
return this.orderCustomBusiness.place().didFillOrderDeliveryAmountV2(orderInfoList, orderDetailList, orderDeliveryList, resultVO); return this.orderCustomBusiness.place().didFillOrderDeliveryAmountV2(orderInfoList, orderDetailList, orderDeliveryList, resultVO);
} }
} }
//
// public List<OrderAmountDetail> calcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, List<OrderAmountChange> orderAmountChangeList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList) { public List<OrderAmountDetail> calcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, List<OrderAmountChange> orderAmountChangeList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList) {
// List<OrderAmountDetail> orderAmountDetailList = CollUtil.newArrayList(new OrderAmountDetail[0]); List<OrderAmountDetail> orderAmountDetailList = CollUtil.newArrayList(new OrderAmountDetail[0]);
// if (!this.orderCustomBusiness.place().willCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList)) { if (!this.orderCustomBusiness.place().willCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList)) {
// this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList); this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList);
// return orderAmountDetailList; return orderAmountDetailList;
// } else { } else {
// LeOrderUtil.calcOrderAmount(orderInfoList, payAmount, OrderInfo::setRealAmount); LeOrderUtil.calcOrderAmount(orderInfoList, payAmount, OrderInfo::setRealAmount);
// this.fillAccChannelPayDetailIfNecessary(channelDetailList); this.fillAccChannelPayDetailIfNecessary(channelDetailList);
// Iterator var7 = channelDetailList.iterator(); Iterator var7 = channelDetailList.iterator();
//
// while(var7.hasNext()) { while(var7.hasNext()) {
// TradeChannelVO tradeChannelVO = (TradeChannelVO)var7.next(); TradeChannelVO tradeChannelVO = (TradeChannelVO)var7.next();
// if (PayStateEnum.isPaidState(tradeChannelVO.getTradeState())) { if (PayStateEnum.isPaidState(tradeChannelVO.getTradeState())) {
// LeOrderUtil.calcOrderAmount(orderInfoList, tradeChannelVO.getAmount(), (orderInfox, amount) -> { LeOrderUtil.calcOrderAmount(orderInfoList, tradeChannelVO.getAmount(), (orderInfox, amount) -> {
// orderAmountDetailList.add(tradeChannelVO.convertToOrderAmountDetail(orderInfox.getOrderId(), orderInfox.getOrderDate(), (Long)null, amount, OrderAmountDetailTypeEnum.PAY)); orderAmountDetailList.add(tradeChannelVO.convertToOrderAmountDetail(orderInfox.getOrderId(), orderInfox.getOrderDate(), (Long)null, amount, OrderAmountDetailTypeEnum.PAY));
// if (PayChannelEnum.ACC.getKey().equals(tradeChannelVO.getPayChannel())) { if (PayChannelEnum.ACC.getKey().equals(tradeChannelVO.getPayChannel())) {
// orderInfox.setAccPayAmount(amount); orderInfox.setAccPayAmount(amount);
// } else if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) { } else if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) {
// orderInfox.setCouponAmount(amount); orderInfox.setCouponAmount(amount);
// } else { } else {
// orderInfox.setOutPayAmount(amount); orderInfox.setOutPayAmount(amount);
// } }
//
// }); });
// tradeChannelVO.shareAccPayResult(orderAmountDetailList); tradeChannelVO.shareAccPayResult(orderAmountDetailList);
// if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) { if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) {
// String couponId = tradeChannelVO.getParam() != null ? tradeChannelVO.getParam().path("couponId").asText() : ""; String couponId = tradeChannelVO.getParam() != null ? tradeChannelVO.getParam().path("couponId").asText() : "";
// if (CharSequenceUtil.isNotEmpty(couponId)) { if (CharSequenceUtil.isNotEmpty(couponId)) {
// orderInfoList.forEach((s) -> { orderInfoList.forEach((s) -> {
// s.setCouponId(couponId); s.setCouponId(couponId);
// }); });
// } }
// } }
// } }
// } }
//
// var7 = orderInfoList.iterator(); var7 = orderInfoList.iterator();
//
// while(var7.hasNext()) { while(var7.hasNext()) {
// OrderInfo orderInfo = (OrderInfo)var7.next(); OrderInfo orderInfo = (OrderInfo)var7.next();
// BigDecimal detailRealAmount = orderInfo.getRealAmount(); BigDecimal detailRealAmount = orderInfo.getRealAmount();
// if (CollUtil.isNotEmpty(orderAmountChangeList)) { if (CollUtil.isNotEmpty(orderAmountChangeList)) {
// BigDecimal additionalFee = (BigDecimal)orderAmountChangeList.stream().filter((s) -> { BigDecimal additionalFee = (BigDecimal)orderAmountChangeList.stream().filter((s) -> {
// return s.getOrderId().equals(orderInfo.getOrderId()) && ChangeDetailTypeEnum.ifAdditionalFee(s.getChangeDetailType()); return s.getOrderId().equals(orderInfo.getOrderId()) && ChangeDetailTypeEnum.ifAdditionalFee(s.getChangeDetailType());
// }).map((s) -> { }).map((s) -> {
// return NumberUtil.null2Zero(s.getChangeAmount()).abs(); return NumberUtil.null2Zero(s.getChangeAmount()).abs();
// }).reduce(BigDecimal.ZERO, BigDecimal::add); }).reduce(BigDecimal.ZERO, BigDecimal::add);
// detailRealAmount = detailRealAmount.subtract(additionalFee); detailRealAmount = detailRealAmount.subtract(additionalFee);
// } }
//
// if (detailRealAmount.compareTo(BigDecimal.ZERO) < 0) { if (detailRealAmount.compareTo(BigDecimal.ZERO) < 0) {
// detailRealAmount = BigDecimal.ZERO; detailRealAmount = BigDecimal.ZERO;
// } }
//
// List<OrderDetail> detailList = (List)orderDetailList.stream().filter((s) -> { List<OrderDetail> detailList = (List)orderDetailList.stream().filter((s) -> {
// return s.getOrderId().equals(orderInfo.getOrderId()); return s.getOrderId().equals(orderInfo.getOrderId());
// }).collect(Collectors.toList()); }).collect(Collectors.toList());
// LeNumUtil.calcShareAmount(detailList, detailRealAmount, OrderDetail::getCalcTotalAmount, OrderDetail::setRealAmount); LeNumUtil.calcShareAmount(detailList, detailRealAmount, OrderDetail::getCalcTotalAmount, OrderDetail::setRealAmount);
// } }
//
// this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList); this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList);
// return orderAmountDetailList; return orderAmountDetailList;
// } }
// } }
//
// public void updateOrderFieldAfterPay(OrderInfo orderInfo, OrderDidPayInfoDTO didPayInfoDTO) { // public void updateOrderFieldAfterPay(OrderInfo orderInfo, OrderDidPayInfoDTO didPayInfoDTO) {
// orderInfo.setPayState(didPayInfoDTO.getPayState()); // orderInfo.setPayState(didPayInfoDTO.getPayState());
// orderInfo.setPayTime(didPayInfoDTO.getPayTime() != null ? didPayInfoDTO.getPayTime() : LocalDateTime.now()); // orderInfo.setPayTime(didPayInfoDTO.getPayTime() != null ? didPayInfoDTO.getPayTime() : LocalDateTime.now());
@ -1002,16 +1002,16 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness {
orderInfo.setPayableAmount((BigDecimal)orderDetailList.stream().map(OrderDetail::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); orderInfo.setPayableAmount((BigDecimal)orderDetailList.stream().map(OrderDetail::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
} }
//
// protected void fillAccChannelPayDetailIfNecessary(List<TradeChannelVO> channelDetailList) { protected void fillAccChannelPayDetailIfNecessary(List<TradeChannelVO> channelDetailList) {
// List<Long> lacksAccPayDetailChannelIds = (List)channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).map(TradeChannelVO::getTradeChannelId).collect(Collectors.toList()); List<Long> lacksAccPayDetailChannelIds = (List)channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).map(TradeChannelVO::getTradeChannelId).collect(Collectors.toList());
// if (CollUtil.isNotEmpty(lacksAccPayDetailChannelIds)) { if (CollUtil.isNotEmpty(lacksAccPayDetailChannelIds)) {
// Map<Long, AccTradeOrderBalanceVO> accPayDetailMap = this.accTradeApi.listOrderAccPayDetail(lacksAccPayDetailChannelIds); Map<Long, AccTradeOrderBalanceVO> accPayDetailMap = this.accTradeApi.listOrderAccPayDetail(lacksAccPayDetailChannelIds);
// channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).forEach((s) -> { channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).forEach((s) -> {
// s.setAccPayResultVO(AccPayResultVO.of((AccTradeOrderBalanceVO)accPayDetailMap.get(s.getTradeChannelId()))); s.setAccPayResultVO(AccPayResultVO.of((AccTradeOrderBalanceVO)accPayDetailMap.get(s.getTradeChannelId())));
// }); });
// } }
//
// } // }
// //
// protected OrderAmountChange packageOrderAmountChange(Long orderId, LocalDate orderDate, BigDecimal changeAmount, ChangeDetailTypeEnum changeDetailType) { // protected OrderAmountChange packageOrderAmountChange(Long orderId, LocalDate orderDate, BigDecimal changeAmount, ChangeDetailTypeEnum changeDetailType) {

View File

@ -126,10 +126,10 @@ public class OrderCustomPlaceBusiness implements CustomBusiness {
public boolean willDishesInventoryRepair(OrderInfo orderInfo, List<OrderDetail> orderDetailList, List<MenuRecipeChangeSurplusNum> changeSurplusNumList) { public boolean willDishesInventoryRepair(OrderInfo orderInfo, List<OrderDetail> orderDetailList, List<MenuRecipeChangeSurplusNum> changeSurplusNumList) {
return true; return true;
} }
//
// public boolean willCalcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList, List<OrderAmountDetail> orderAmountDetailList) { public boolean willCalcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList, List<OrderAmountDetail> orderAmountDetailList) {
// return true; return true;
// } }
public UnifyPayVO willOrderPayV2(UnifyPayDTO unifyPayDTO, List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList) { public UnifyPayVO willOrderPayV2(UnifyPayDTO unifyPayDTO, List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList) {
return null; return null;