From e2d130acf9a0d97d719c921f2f980ee308020b32 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Tue, 21 Oct 2025 11:02:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E8=B4=AD=E4=B9=B0=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E6=96=B9=E5=BC=8F=E4=BB=8E=E5=85=A5=E5=8F=82=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=9B=B4=E6=8E=A5=E4=BF=9D=E5=AD=98=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=AE=9E=E9=99=85=E6=89=A3=E6=AC=BE=E8=A1=A5=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/pay/PayProductProcessorNew.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessorNew.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessorNew.java index 42ba805cb..09f1b9518 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessorNew.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessorNew.java @@ -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();