luofl
2025-02-24 8acc98732aba58ad5c710f92d72e6fa5bf888d11
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WalletServiceImpl.java
@@ -1,7 +1,11 @@
package com.ruoyi.account.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.account.WithdrawalAuditStatus;
import com.ruoyi.order.feignClient.OrderClient;
import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.other.api.enums.WithdrawalAuditStatus;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.WithdrawalRequests;
import com.ruoyi.account.service.AppUserService;
@@ -25,6 +29,8 @@
    private RemoteVipSettingClient remoteVipSettingClient;
    @Resource
    private WithdrawalRequestsService withdrawalRequestsService;
    @Resource
    private RemoteOrderGoodsClient remoteOrderGoodsClient;
    @Override
    public WalletVO getWalletByUserId(Long userId) {
@@ -34,9 +40,6 @@
        }
        Integer vipId = appUser.getVipId();
        R<VipSetting> r = remoteVipSettingClient.getVipSettingById(vipId);
        if (r == null || r.getCode() != R.SUCCESS) {
            throw new RuntimeException("获取会员设置信息失败");
        }
        VipSetting data = r.getData();
        if (data == null) {
            throw new RuntimeException("会员设置信息为空");
@@ -45,19 +48,26 @@
        // 获取提现审核中的金额
        List<WithdrawalRequests> waitAuditList = withdrawalRequestsService.list(new LambdaQueryWrapper<WithdrawalRequests>()
                .eq(WithdrawalRequests::getAppUserId, userId)
                .eq(WithdrawalRequests::getAuditStatus, WithdrawalAuditStatus.WAIT_AUDIT));
                .eq(WithdrawalRequests::getAuditStatus, WithdrawalAuditStatus.WAIT_AUDIT.getCode()));
        BigDecimal reduce = waitAuditList.stream().map(WithdrawalRequests::getWithdrawalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
        WalletVO walletVO = new WalletVO();
        walletVO.setWithdrawalAmount(appUser.getWithdrawalAmount());
        walletVO.setWithdrawnAmount(appUser.getWithdrawnAmount());
        R<List<OrderGood>> unDistributedOrder = remoteOrderGoodsClient.getUnDistributedOrder(userId);
        List<OrderGood> unDistributedOrderList = unDistributedOrder.getData();
        BigDecimal commissionAmount = unDistributedOrderList.stream()
                .map(OrderGood::getSuperiorSubcommission)
                .reduce(BigDecimal.ZERO, BigDecimal::add);
        walletVO.setCommissionAmount(appUser.getTotalDistributionAmount().add(commissionAmount));
        walletVO.setWithdrawalAmount(appUser.getWithdrawableAmount());
        walletVO.setWithdrawnAmount(appUser.getWithdrawnAmount().subtract(reduce));
        walletVO.setVipWithdrawalMinAmount(data.getVipWithdrawalMinAmount());
        walletVO.setTotalRechargeAmount(appUser.getTotalRechargeAmount());
        walletVO.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount());
        walletVO.setTotalDistributionAmount(appUser.getTotalDistributionAmount());
        walletVO.setAuditAmount(waitAuditList.stream()
                .map(WithdrawalRequests::getWithdrawalAmount)
                .reduce(BigDecimal.ZERO, BigDecimal::add));
        walletVO.setAuditAmount(reduce);
        walletVO.setBalance(appUser.getBalance());
        return walletVO;
    }