cloudroam
2024-10-24 d19b094bde681e2a261ff28a088dd969b68ac65c
fix:结算
已修改4个文件
44 ■■■■ 文件已修改
src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/entity/wallet/WalletWithdrawRecordDO.java
@@ -30,13 +30,13 @@
    /**
     * 提现金额
     */
    @ApiModelProperty(value = "钱包Id")
    @ApiModelProperty(value = "提现金额")
    private BigDecimal amount;
    /**
     * 单次可提现金额
     */
    @ApiModelProperty(value = "提现金额")
    @ApiModelProperty(value = "单次可提现金额")
    private BigDecimal onceWithdrawAmount;
    /**
src/main/java/com/mzl/flower/service/impl/wallet/WalletBillRecordServiceImpl.java
@@ -10,6 +10,7 @@
import com.mzl.flower.mapper.payment.TransferDetailMapper;
import com.mzl.flower.mapper.payment.TransferMapper;
import com.mzl.flower.mapper.wallet.WalletBillRecordMapper;
import com.mzl.flower.mapper.wallet.WalletMapper;
import com.mzl.flower.service.wallet.WalletBillRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mzl.flower.service.wallet.WalletService;
@@ -41,6 +42,8 @@
    @Resource
    private WalletService walletService;
    @Resource
    private WalletMapper walletMapper;
    @Override
    public void create(CreateWalletBillRecordDTO dto) {
@@ -68,16 +71,25 @@
                //更新钱包
                WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId());
                if(!ObjectUtils.isEmpty(walletDO)){
                    //体现中金额
                    //提现中金额:减少提现中金额
                    walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
                    //已提现金额
                    //已提现金额:增加已提现金额
                    walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount()));
                    walletMapper.updateById(walletDO);
                }
            } else if ("FAIL".equals(dStatus)) {
                walletBillRecordDO.setTransferState(Constants.SETTLEMENT_STATUS.FAILED.name());
                walletBillRecordDO.update("sys");
                walletBillRecordMapper.updateById(walletBillRecordDO);
                WalletDO walletDO = walletService.getBySupplierId(walletBillRecordDO.getWalletId());
                if(!ObjectUtils.isEmpty(walletDO)){
                    //提现中金额:减少提现中金额
                    walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount()));
                    //可提现金额:增加可提现金额
                    walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(walletBillRecordDO.getChangeAmount()));
                    walletMapper.updateById(walletDO);
                }
            }
        }
    }
src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
@@ -23,6 +23,7 @@
import com.mzl.flower.mapper.supplier.SupplierMapper;
import com.mzl.flower.mapper.system.UserWechatMapper;
import com.mzl.flower.mapper.wallet.WalletBillRecordMapper;
import com.mzl.flower.mapper.wallet.WalletMapper;
import com.mzl.flower.mapper.wallet.WalletWithdrawRecordMapper;
import com.mzl.flower.service.payment.UserPaymentV3Service;
import com.mzl.flower.service.supplier.SupplierService;
@@ -38,6 +39,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
@@ -72,6 +74,8 @@
    private final WalletBillRecordMapper walletBillRecordMapper;
    private final WalletBillRecordService walletBillRecordService;
    private final WalletMapper walletMapper;
    @Autowired
@@ -246,6 +250,19 @@
            walletBillRecordMapper.insert(walletBillRecordDO);
            //不需要更新结算单了,此时提现的金额和计算单上的金额不一致
        }
        if (Constants.WALLET_APPROVE_STATE.REJECT.name().equals(walletWithdrawRecordDTO.getApproveState())) {
            //更新钱包
            Supplier s = supplierMapper.selectById(withdrawRecordDO.getSupplierId());
            WalletDO walletDO = walletService.getBySupplierId(s.getId());
            if(!ObjectUtils.isEmpty(walletDO)){
                //提现中金额:审核失败体现中金额扣减
                walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(withdrawRecordDO.getAmount()));
                //可提现金额:审核失败可提现金额增加
                walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(withdrawRecordDO.getAmount()));
                walletMapper.updateById(walletDO);
            }
        }
    }
    public String format(LocalDateTime dateTime, String format) {
        if (dateTime == null || format == null) {
src/main/java/com/mzl/flower/service/payment/OrderSettlementService.java
@@ -789,12 +789,13 @@
                        walletBillRecord.setMethod(Constants.BILL_CHANGE_METHOD.add.name());
                        walletBillRecord.setOriginalAmount(walletDOInfo.getTotalAmount());
                        walletBillRecord.setChangeAmount(settlementAmount);
                        walletBillRecord.setBalance(walletDOInfo.getTotalAmount().add(settlementAmount));
                        walletBillRecord.setBalance(walletDOInfo.getWithdrawableAmount().add(settlementAmount));
                        //更新钱包
                        //总金额
                        walletDOInfo.setTotalAmount(walletBillRecord.getBalance());
                        //可提现金额=钱包余额=结算金额
                        walletDOInfo.setWithdrawableAmount(walletDOInfo.getWithdrawableAmount().add(settlementAmount));
                        walletDOInfo.setTotalAmount(walletDOInfo.getWithdrawableAmount());
                        //已结算金额
                        walletDOInfo.setSettledAmount(walletDOInfo.getSettledAmount().add(settlementAmount));
                        walletMapper.updateById(walletDOInfo);
                        walletBillRecordMapper.insert(walletBillRecord);
                    } finally {