sync_pay_state
This commit is contained in:
parent
ed1c1aca5f
commit
28a6f85579
|
|
@ -2,14 +2,12 @@ package com.bonus.core.order.common.business;
|
|||
|
||||
import com.bonus.core.marketing.coupon.model.MktCouponPayModel;
|
||||
import com.bonus.core.menu.model.AllocMealtimeModel;
|
||||
import com.bonus.core.order.common.model.OrderAmountChange;
|
||||
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.model.*;
|
||||
import com.bonus.core.order.common.vo.OrderDeliveryResultVO;
|
||||
import com.bonus.core.order.mq.po.OrderSavePO;
|
||||
import com.bonus.core.pay.api.dto.UnifyPayDTO;
|
||||
import com.bonus.core.pay.api.vo.UnifyPayVO;
|
||||
import com.bonus.core.pay.common.vo.TradeChannelVO;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
|
@ -64,8 +62,8 @@ public interface OrderPlaceBusiness {
|
|||
//
|
||||
// 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);
|
||||
//
|
||||
// boolean ifUseCall(OrderInfo orderInfo);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.bonus.core.order.common.business.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
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.constant.LeConstants;
|
||||
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.AllocCanteenDeliveryModel;
|
||||
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.common.business.OrderPlaceBusiness;
|
||||
import com.bonus.core.order.common.constants.*;
|
||||
import com.bonus.core.order.common.model.OrderAmountChange;
|
||||
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.model.*;
|
||||
import com.bonus.core.order.common.service.*;
|
||||
import com.bonus.core.order.common.vo.OrderDeliveryResultVO;
|
||||
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.dto.UnifyPayDTO;
|
||||
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.PayChannelSelectEnum;
|
||||
import com.bonus.core.pay.common.constants.PayStateEnum;
|
||||
import com.bonus.core.pay.common.constants.PayTypeEnum;
|
||||
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.dto.SmtCheckProductLimitBuyDTO;
|
||||
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);
|
||||
}
|
||||
}
|
||||
//
|
||||
// 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]);
|
||||
// if (!this.orderCustomBusiness.place().willCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList)) {
|
||||
// this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList);
|
||||
// return orderAmountDetailList;
|
||||
// } else {
|
||||
// LeOrderUtil.calcOrderAmount(orderInfoList, payAmount, OrderInfo::setRealAmount);
|
||||
// this.fillAccChannelPayDetailIfNecessary(channelDetailList);
|
||||
// Iterator var7 = channelDetailList.iterator();
|
||||
//
|
||||
// while(var7.hasNext()) {
|
||||
// TradeChannelVO tradeChannelVO = (TradeChannelVO)var7.next();
|
||||
// if (PayStateEnum.isPaidState(tradeChannelVO.getTradeState())) {
|
||||
// LeOrderUtil.calcOrderAmount(orderInfoList, tradeChannelVO.getAmount(), (orderInfox, amount) -> {
|
||||
// orderAmountDetailList.add(tradeChannelVO.convertToOrderAmountDetail(orderInfox.getOrderId(), orderInfox.getOrderDate(), (Long)null, amount, OrderAmountDetailTypeEnum.PAY));
|
||||
// if (PayChannelEnum.ACC.getKey().equals(tradeChannelVO.getPayChannel())) {
|
||||
// orderInfox.setAccPayAmount(amount);
|
||||
// } else if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) {
|
||||
// orderInfox.setCouponAmount(amount);
|
||||
// } else {
|
||||
// orderInfox.setOutPayAmount(amount);
|
||||
// }
|
||||
//
|
||||
// });
|
||||
// tradeChannelVO.shareAccPayResult(orderAmountDetailList);
|
||||
// if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) {
|
||||
// String couponId = tradeChannelVO.getParam() != null ? tradeChannelVO.getParam().path("couponId").asText() : "";
|
||||
// if (CharSequenceUtil.isNotEmpty(couponId)) {
|
||||
// orderInfoList.forEach((s) -> {
|
||||
// s.setCouponId(couponId);
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// var7 = orderInfoList.iterator();
|
||||
//
|
||||
// while(var7.hasNext()) {
|
||||
// OrderInfo orderInfo = (OrderInfo)var7.next();
|
||||
// BigDecimal detailRealAmount = orderInfo.getRealAmount();
|
||||
// if (CollUtil.isNotEmpty(orderAmountChangeList)) {
|
||||
// BigDecimal additionalFee = (BigDecimal)orderAmountChangeList.stream().filter((s) -> {
|
||||
// return s.getOrderId().equals(orderInfo.getOrderId()) && ChangeDetailTypeEnum.ifAdditionalFee(s.getChangeDetailType());
|
||||
// }).map((s) -> {
|
||||
// return NumberUtil.null2Zero(s.getChangeAmount()).abs();
|
||||
// }).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
// detailRealAmount = detailRealAmount.subtract(additionalFee);
|
||||
// }
|
||||
//
|
||||
// if (detailRealAmount.compareTo(BigDecimal.ZERO) < 0) {
|
||||
// detailRealAmount = BigDecimal.ZERO;
|
||||
// }
|
||||
//
|
||||
// List<OrderDetail> detailList = (List)orderDetailList.stream().filter((s) -> {
|
||||
// return s.getOrderId().equals(orderInfo.getOrderId());
|
||||
// }).collect(Collectors.toList());
|
||||
// LeNumUtil.calcShareAmount(detailList, detailRealAmount, OrderDetail::getCalcTotalAmount, OrderDetail::setRealAmount);
|
||||
// }
|
||||
//
|
||||
// this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList);
|
||||
// return orderAmountDetailList;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
||||
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]);
|
||||
if (!this.orderCustomBusiness.place().willCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList)) {
|
||||
this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList);
|
||||
return orderAmountDetailList;
|
||||
} else {
|
||||
LeOrderUtil.calcOrderAmount(orderInfoList, payAmount, OrderInfo::setRealAmount);
|
||||
this.fillAccChannelPayDetailIfNecessary(channelDetailList);
|
||||
Iterator var7 = channelDetailList.iterator();
|
||||
|
||||
while(var7.hasNext()) {
|
||||
TradeChannelVO tradeChannelVO = (TradeChannelVO)var7.next();
|
||||
if (PayStateEnum.isPaidState(tradeChannelVO.getTradeState())) {
|
||||
LeOrderUtil.calcOrderAmount(orderInfoList, tradeChannelVO.getAmount(), (orderInfox, amount) -> {
|
||||
orderAmountDetailList.add(tradeChannelVO.convertToOrderAmountDetail(orderInfox.getOrderId(), orderInfox.getOrderDate(), (Long)null, amount, OrderAmountDetailTypeEnum.PAY));
|
||||
if (PayChannelEnum.ACC.getKey().equals(tradeChannelVO.getPayChannel())) {
|
||||
orderInfox.setAccPayAmount(amount);
|
||||
} else if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) {
|
||||
orderInfox.setCouponAmount(amount);
|
||||
} else {
|
||||
orderInfox.setOutPayAmount(amount);
|
||||
}
|
||||
|
||||
});
|
||||
tradeChannelVO.shareAccPayResult(orderAmountDetailList);
|
||||
if (PayChannelEnum.COUPON.getKey().equals(tradeChannelVO.getPayChannel())) {
|
||||
String couponId = tradeChannelVO.getParam() != null ? tradeChannelVO.getParam().path("couponId").asText() : "";
|
||||
if (CharSequenceUtil.isNotEmpty(couponId)) {
|
||||
orderInfoList.forEach((s) -> {
|
||||
s.setCouponId(couponId);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var7 = orderInfoList.iterator();
|
||||
|
||||
while(var7.hasNext()) {
|
||||
OrderInfo orderInfo = (OrderInfo)var7.next();
|
||||
BigDecimal detailRealAmount = orderInfo.getRealAmount();
|
||||
if (CollUtil.isNotEmpty(orderAmountChangeList)) {
|
||||
BigDecimal additionalFee = (BigDecimal)orderAmountChangeList.stream().filter((s) -> {
|
||||
return s.getOrderId().equals(orderInfo.getOrderId()) && ChangeDetailTypeEnum.ifAdditionalFee(s.getChangeDetailType());
|
||||
}).map((s) -> {
|
||||
return NumberUtil.null2Zero(s.getChangeAmount()).abs();
|
||||
}).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
detailRealAmount = detailRealAmount.subtract(additionalFee);
|
||||
}
|
||||
|
||||
if (detailRealAmount.compareTo(BigDecimal.ZERO) < 0) {
|
||||
detailRealAmount = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
List<OrderDetail> detailList = (List)orderDetailList.stream().filter((s) -> {
|
||||
return s.getOrderId().equals(orderInfo.getOrderId());
|
||||
}).collect(Collectors.toList());
|
||||
LeNumUtil.calcShareAmount(detailList, detailRealAmount, OrderDetail::getCalcTotalAmount, OrderDetail::setRealAmount);
|
||||
}
|
||||
|
||||
this.orderCustomBusiness.place().didCalcOrderRealAmount(orderInfoList, orderDetailList, payAmount, channelDetailList, orderAmountDetailList);
|
||||
return orderAmountDetailList;
|
||||
}
|
||||
}
|
||||
|
||||
// public void updateOrderFieldAfterPay(OrderInfo orderInfo, OrderDidPayInfoDTO didPayInfoDTO) {
|
||||
// orderInfo.setPayState(didPayInfoDTO.getPayState());
|
||||
// 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));
|
||||
}
|
||||
//
|
||||
// protected void fillAccChannelPayDetailIfNecessary(List<TradeChannelVO> channelDetailList) {
|
||||
// List<Long> lacksAccPayDetailChannelIds = (List)channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).map(TradeChannelVO::getTradeChannelId).collect(Collectors.toList());
|
||||
// if (CollUtil.isNotEmpty(lacksAccPayDetailChannelIds)) {
|
||||
// Map<Long, AccTradeOrderBalanceVO> accPayDetailMap = this.accTradeApi.listOrderAccPayDetail(lacksAccPayDetailChannelIds);
|
||||
// channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).forEach((s) -> {
|
||||
// s.setAccPayResultVO(AccPayResultVO.of((AccTradeOrderBalanceVO)accPayDetailMap.get(s.getTradeChannelId())));
|
||||
// });
|
||||
// }
|
||||
//
|
||||
|
||||
protected void fillAccChannelPayDetailIfNecessary(List<TradeChannelVO> channelDetailList) {
|
||||
List<Long> lacksAccPayDetailChannelIds = (List)channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).map(TradeChannelVO::getTradeChannelId).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(lacksAccPayDetailChannelIds)) {
|
||||
Map<Long, AccTradeOrderBalanceVO> accPayDetailMap = this.accTradeApi.listOrderAccPayDetail(lacksAccPayDetailChannelIds);
|
||||
channelDetailList.stream().filter(TradeChannelVO::ifLacksAccPayDetail).forEach((s) -> {
|
||||
s.setAccPayResultVO(AccPayResultVO.of((AccTradeOrderBalanceVO)accPayDetailMap.get(s.getTradeChannelId())));
|
||||
});
|
||||
}
|
||||
|
||||
// }
|
||||
//
|
||||
// protected OrderAmountChange packageOrderAmountChange(Long orderId, LocalDate orderDate, BigDecimal changeAmount, ChangeDetailTypeEnum changeDetailType) {
|
||||
|
|
|
|||
|
|
@ -126,10 +126,10 @@ public class OrderCustomPlaceBusiness implements CustomBusiness {
|
|||
public boolean willDishesInventoryRepair(OrderInfo orderInfo, List<OrderDetail> orderDetailList, List<MenuRecipeChangeSurplusNum> changeSurplusNumList) {
|
||||
return true;
|
||||
}
|
||||
//
|
||||
// public boolean willCalcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList, List<OrderAmountDetail> orderAmountDetailList) {
|
||||
// return true;
|
||||
// }
|
||||
|
||||
public boolean willCalcOrderRealAmount(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, BigDecimal payAmount, List<TradeChannelVO> channelDetailList, List<OrderAmountDetail> orderAmountDetailList) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public UnifyPayVO willOrderPayV2(UnifyPayDTO unifyPayDTO, List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList) {
|
||||
return null;
|
||||
|
|
|
|||
Reference in New Issue