From f61293e97bb2cb21c8f49e88b1ae5a3cbadefb6a Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 25 Dec 2023 16:40:09 +0800 Subject: [PATCH] 富文本框输入版本变化 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 61 +++++++++++++++++++++++++++++- 1 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index e8d3ee8..0852804 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -82,6 +82,7 @@ private final IApiMallTeamLeaderService iApiMallTeamLeaderService; private final IMallElectronicFenceService iMallElectronicFenceService; private final MallElectronicFenceMapper mallElectronicFenceMapper; + private final MallMemberWalletMapper mallMemberWalletMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -344,6 +345,11 @@ throw new FebsException("订单状态不能支付"); } + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(member.getId()); + if (ObjectUtil.isEmpty(mallMemberWallet)) { + throw new FebsException("用户钱包不存在。"); + } + String payResultStr = ""; String wxResultStr = ""; switch (payOrderDto.getType()) { @@ -373,14 +379,63 @@ agentProducer.sendOrderReturn(orderInfo.getId()); break; case "3": - payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance"); + BigDecimal score = mallMemberWallet.getScore();//积分 + BigDecimal balance = mallMemberWallet.getBalance();//余额 + + //这里将运费定义成折扣总金额 + /** + * 积分 + 余额 1:1来折扣支付金额 + */ + BigDecimal total = orderInfo.getAmount(); + BigDecimal totalCarriage = BigDecimal.ZERO;//总折扣金额 + BigDecimal memberAmount = score.add(balance);//用户积分加余额总数 + if(memberAmount.compareTo(BigDecimal.ZERO) > 0){ + //折扣金额 + if(total.compareTo(memberAmount) >= 0){ + totalCarriage = memberAmount; + }else{ + totalCarriage = total; + } + //减少用户积分和余额 + + BigDecimal avaAmount = totalCarriage;//剩余需要折扣的金额 + if(avaAmount.compareTo(memberAmount) >= 0){ + //清零用户的积分和余额 + mallMemberWallet.setBalance(BigDecimal.ZERO); + mallMemberWallet.setScore(BigDecimal.ZERO); + mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet); + }else{ + /** + * 先扣积分,再扣余额 + */ + if(avaAmount.compareTo(score) >= 0){ + mallMemberWallet.setScore(BigDecimal.ZERO); + avaAmount = avaAmount.subtract(score); + }else{ + mallMemberWallet.setScore(score.subtract(avaAmount)); + avaAmount = BigDecimal.ZERO; + } + //积分不够 + if(avaAmount.compareTo(BigDecimal.ZERO) > 0){ + mallMemberWallet.setBalance(balance.subtract(avaAmount)); + }else{ + mallMemberWallet.setBalance(balance); + } + mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet); + } + } + orderInfo.setCarriage(totalCarriage); + payResultStr = "支付成功"; +// payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance"); orderInfo.setPayOrderNo(orderInfo.getOrderNo()); orderInfo.setPayMethod("余额支付"); - orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); + orderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); +// orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setPayTime(new Date()); orderInfo.setPayResult(1); - orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); + orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()); +// orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); // boolean hasTc = false; // // 静态倍数 -- Gitblit v1.9.1