软件购买支付方式从入参选择直接保存修改为实际扣款补位

This commit is contained in:
gaoqr
2025-10-21 11:02:43 +08:00
parent a3633fc6ef
commit e2d130acf9
@@ -133,6 +133,9 @@ public class PayProductProcessorNew {
// 是否只用了赠送金
private boolean justPayGift = false;
// 最终存储的支付方式,通过实际支付做二进制部位,例如有可能选择了现金+赠送金但是只用了赠送金,就只补赠送金位
private int payMethod;
public PayProductProcessorNew(ProductsDO productsDO, ProductsDetailDO productsDetailDO, PurchaseRecordDO orgInitialPurchaseRecord, PreviouProductDelayRespVO previouProductDelayRespVO,
OrganAmountDO organAmountDO, Long organId, ChenfengPayConfig payConfig, MybatisIdProperties mybatisIdProperties, SnowflakeSerialNoWorker3rd snowflakeSerialNoWorker3rd) {
this.productsDO = productsDO;
@@ -228,6 +231,11 @@ public class PayProductProcessorNew {
// 更新余额
organAmountDO.setAmount(organAmountDO.getAmount());
organAmountDO.setGiftAmount(gift.subtract(usedGift));
// 有效扣除累加payMethod
if (usedGift.compareTo(BigDecimal.ZERO) > 0) {
payMethod |= PayProductChannelCodeEnumNew.GIFT.getCode();
}
}
/**
@@ -242,6 +250,11 @@ public class PayProductProcessorNew {
// 更新余额
organAmountDO.setAmount(balance.subtract(usedBalance));
organAmountDO.setGiftAmount(organAmountDO.getGiftAmount());
// 有效扣除累加payMethod
if (usedBalance.compareTo(BigDecimal.ZERO) > 0) {
payMethod |= PayProductChannelCodeEnumNew.BALANCE.getCode();
}
}
/**
@@ -274,7 +287,7 @@ public class PayProductProcessorNew {
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
.startTime(startTime)
.endTime(endTime)
.paymentMethod(payType)
.paymentMethod(payMethod)
.totalAmount(productPrice)
.originalAmount(originalPrice)
.monthAverageAmount(monthAverageAmount)
@@ -293,8 +306,14 @@ public class PayProductProcessorNew {
payOrderDO.setPurchaseId(purchaseId);
if (PayProductChannelCodeEnumNew.hasAlipay(payType)) {
payOrderDO.setChannelCode(PayChannelCodeEnum.ALIPAY_PC);
// 有效扣除累加payMethod
payMethod |= PayProductChannelCodeEnumNew.ALIPAY.getCode();
purchaseRecordDO.setPaymentMethod(payMethod);
} else if (PayProductChannelCodeEnumNew.hasWechat(payType)) {
payOrderDO.setChannelCode(PayChannelCodeEnum.WECHAT_NATIVE);
// 有效扣除累加payMethod
payMethod |= PayProductChannelCodeEnumNew.WECHAT.getCode();
purchaseRecordDO.setPaymentMethod(payMethod);
}
// 记录第三方支付金额
@@ -303,6 +322,7 @@ public class PayProductProcessorNew {
purchaseRecordDO.setStatus(PurchaseRecordStatusEnum.PENDING.getStatus());
// 更新为不可开票,等异步回调后修改为可开票
purchaseRecordDO.setIsInvocing(null);
} else {
BigDecimal amount = organAmountDO.getAmount();
BigDecimal giftAmount = organAmountDO.getGiftAmount();