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();