This commit is contained in:
Guoqs
2024-11-16 16:05:40 +08:00
parent 10e84cf467
commit c773da3653
2 changed files with 52 additions and 0 deletions

View File

@@ -1513,13 +1513,64 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
BigDecimal orderConsumeAmount = afterSettleOrderDTO.getOrderConsumeAmount(); // 消费金额
BigDecimal orderRefundAmount = afterSettleOrderDTO.getOrderRefundAmount(); // 退款金额
BigDecimal orderSettleAmount = afterSettleOrderDTO.getOrderSettleAmount(); // 结算金额
if (orderConsumeAmount.add(orderRefundAmount).compareTo(orderPayAmount) != 0) {
logger.info("订单支付金额与消费金额+退款金额不相等");
return null;
}
// 订单结算金额,汇付分账
splittingMethod(orderSettleAmount, afterSettleOrderDTO);
// 订单退款,汇付退款
return null;
}
/**
* 分账方法
* @param orderSettleAmount
* @param afterSettleOrderDTO
*/
private void splittingMethod(BigDecimal orderSettleAmount, AfterSettleOrderDTO afterSettleOrderDTO) {
}
/**
* 执行订单退款
* @param orderBasicInfo
*/
private void refundOrder(OrderBasicInfo orderBasicInfo) {
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
// 查询该笔订单的退款记录
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = this.getOrderRefundInfoList(orderBasicInfo);
if (CollectionUtils.isNotEmpty(orderRefundInfoList)) {
// 已退款金额
BigDecimal refunded = orderRefundInfoList.stream()
.map(x -> Objects.nonNull(x.getReverseAmt()) ? new BigDecimal(x.getReverseAmt()) : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO,BigDecimal::add);
if (refunded.compareTo(refundAmount) >= 0) {
logger.info("执行订单退款-校验已退款金额orderCode:{}, 应退款金额:{}, 已经退款金额:{}, 不再执行退款", orderBasicInfo.getOrderCode(), refundAmount, refunded);
return;
}
}
try {
String payMode = orderBasicInfo.getPayMode();
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())) {
// 余额支付
balancePaymentOrderRefund(orderBasicInfo);
} else if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())
|| StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) {
// 在线支付
onlinePaymentOrderRefund(orderBasicInfo);
} else {
// 白名单支付或者ETC支付
logger.info("订单:{}使用:{},不进行退款处理", orderBasicInfo.getOrderCode(), OrderPayModeEnum.getPayModeDescription(payMode));
}
} catch (Exception e) {
logger.error("【{}】-订单退款逻辑异常orderCode:{}", this.getClass().getSimpleName(), orderBasicInfo.getOrderCode(), e);
}
}
/**
* 计算每个账户需要分账的金额
* @param shareMemberList 参与分账的账户信息

View File

@@ -1027,6 +1027,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
/**
* 个人桩启动
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String startPersonalPileCharging(StartPersonPileDTO dto) {
logger.info("【{}】-个人桩启动充电 param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto));