From 275d55b86c6a96f764c9843a8432acbc485fdbdd Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 18 Dec 2018 17:17:05 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E5=88=86=E8=B4=A6][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E6=9C=80=E5=90=8E=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=A6=82=E6=9E=9C=E4=B8=8D=E5=A4=9F=EF=BC=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8F=96=E5=8D=A1=E4=BD=99=E9=A2=9D=E5=92=8C?= =?UTF-8?q?=E5=8F=AF=E5=88=86=E8=B4=A6=E9=A2=9D=E7=9A=84=E6=9C=80=E5=B0=8F?= =?UTF-8?q?=E5=80=BC=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=88=86=E8=B4=A6=E5=90=8E?= =?UTF-8?q?=E6=9C=89=E5=89=A9=E4=BD=99=EF=BC=8C=E8=87=AA=E5=8A=A8=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=88=86=E8=B4=A6=E5=AE=8C=E7=BB=93=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxCardSpendServiceImpl.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index 4894aa730..192e04c91 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -105,15 +105,23 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { Integer payment = cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount(); Integer dChargeFee = Math.round(payment * 1.0F * payAccount.getRate() / 10000); Integer real_payment = payment - dChargeFee; + Integer remain_real_pament = cardInfo.getRemainingShareFeeAmount()-real_payment; + + Integer remaingAmount = cardInfo.getRemainingAmount()-record.getDeductionAmount(); + if(remaingAmount.equals(0)) { + // 最后一次支付时 + real_payment = Math.min(real_payment, cardInfo.getRemainingShareFeeAmount()); + remain_real_pament = 0; + } // 6 insert card_spend record.setId(idWorker.nextId()); record.setPayment(payment); record.setRealPayment(real_payment); record.setCardBeforeAmount(cardInfo.getRemainingAmount()); - record.setCardRemainAmount(cardInfo.getRemainingAmount()-record.getDeductionAmount()); + record.setCardRemainAmount(remaingAmount); record.setCardBeforeRealAmount(cardInfo.getRemainingShareFeeAmount()); - record.setCardRemainRealAmount(cardInfo.getRemainingShareFeeAmount()-real_payment); + record.setCardRemainRealAmount(remain_real_pament); record.setCreateDate(curDate); record.setUpdateDate(curDate); try { @@ -124,8 +132,8 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } // 7. update card info - cardInfo.setRemainingAmount(cardInfo.getRemainingAmount()-record.getDeductionAmount()); - cardInfo.setRemainingShareFeeAmount(cardInfo.getRemainingShareFeeAmount()-real_payment); + cardInfo.setRemainingAmount(remaingAmount); + cardInfo.setRemainingShareFeeAmount(remain_real_pament); cardInfo.setUpdateDate(curDate); try { wxCardInfoMapper.updateByPrimaryKey(cardInfo); @@ -238,7 +246,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { shareOrder.setcUserId(cardSpend.getOwnerId()); shareOrder.setMerchantId(cardSpend.getMerchantId()); shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode()); - shareOrder.setPayAmount(cardSpend.getRealPayment()); + shareOrder.setPayAmount(cardSpend.getPayment()); shareOrder.setOrderId(cardSpend.getOrderId()); shareOrder.setPayTimeStart(cardSpend.getCreateDate()); shareOrder.setPayTimeEnd(cardSpend.getUpdateDate()); @@ -246,10 +254,14 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { shareOrder.setTransactionId(cardInfo.getTransactionId()); shareOrder.setShareAmount(cardSpend.getRealPayment()); profitSharingOrderService.createSharingOrder(shareOrder); - if(cardSpend.getCardRemainAmount() <= 0) { - shareOrder.setPayAmount(cardInfo.getRemainingShareFeeAmount()); - shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_FINISH.getCode()); - profitSharingOrderService.finishSharingOrder(shareOrder); + if(cardSpend.getCardRemainAmount().equals(0)) { + // 卡已被抵扣,但是分账还有余额 + if (cardSpend.getCardRemainRealAmount() > 0) { + shareOrder.setPayAmount(0); + shareOrder.setShareAmount(cardInfo.getRemainingShareFeeAmount()); + shareOrder.setType(EnumProfitSharingOrderType.PROFIT_SHARING_FINISH.getCode()); + profitSharingOrderService.finishSharingOrder(shareOrder); + } } } else { logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId);