Pu Zhibing
2025-04-22 fd7b8fb7c89832c28a838b0449bbb8a392433ee2
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WithdrawalRequestsController.java
@@ -19,6 +19,8 @@
import com.ruoyi.account.vo.WithdrawalAuth;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -49,6 +51,8 @@
    
    @Resource
    private BalanceChangeRecordService balanceChangeRecordService;
    @Resource
    private TokenService tokenService;
    /**
     * 提现申请
@@ -112,6 +116,19 @@
                singlePay.setCallbackUrl("/account/withdrawal-requests/withdrawalCallback");
                SinglePayResult singlePayResult = TransferUtil.singlePay(singlePay);
                if(null == singlePayResult){
                    LoginUser loginUserApplet = tokenService.getLoginUserApplet();
                    AppUser appUser = appUserService.getById(loginUserApplet.getUserid());
                    BigDecimal balance = appUser.getBalance();
                    BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
                    balanceChangeRecord.setAppUserId(appUser.getId());
                    balanceChangeRecord.setVipId(appUser.getVipId());
//                    balanceChangeRecord.setOrderId(withdrawalRequests.getId());
                    balanceChangeRecord.setChangeType(2);
                    balanceChangeRecord.setChangeAmount(withdrawalAmount);
                    balanceChangeRecord.setDelFlag(0);
                    balanceChangeRecord.setCreateTime(LocalDateTime.now());
                    balanceChangeRecord.setChangeDirection(-1);
                    balanceChangeRecordService.save(balanceChangeRecord);
                    return R.fail("转账失败");
                }
                withdrawal.setStatus(1);
@@ -134,13 +151,13 @@
            //添加变动明细
            BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
            balanceChangeRecord.setAppUserId(appUser.getId());
            balanceChangeRecord.setVipId(appUser.getVipId());
            balanceChangeRecord.setOrderId(withdrawal.getId());
            balanceChangeRecord.setChangeType(2);
            balanceChangeRecord.setBeforeAmount(balance);
            balanceChangeRecord.setChangeAmount(withdrawalAmount);
            balanceChangeRecord.setAfterAmount(appUser.getBalance());
            balanceChangeRecord.setDelFlag(0);
            balanceChangeRecord.setCreateTime(LocalDateTime.now());
            balanceChangeRecord.setChangeDirection(-1);
            balanceChangeRecordService.save(balanceChangeRecord);
        }
        withdrawal.setAuditStatus(auditStatus);
@@ -157,9 +174,9 @@
    @PostMapping("/withdrawalCallback")
    public Object withdrawalCallback(@RequestBody SinglePayCallbackResult singlePayCallbackResult){
        Integer status = singlePayCallbackResult.getStatus();
        String merchantOrderNo = singlePayCallbackResult.getMerchantOrderNo();
        WithdrawalRequests withdrawalRequests = withdrawalRequestsService.getById(merchantOrderNo);
        if(203 == status || 205 == status){
            String merchantOrderNo = singlePayCallbackResult.getMerchantOrderNo();
            WithdrawalRequests withdrawalRequests = withdrawalRequestsService.getById(merchantOrderNo);
            if(1 == withdrawalRequests.getStatus()){
                withdrawalRequests.setStatus(2);
                withdrawalRequests.setArrivalTime(LocalDateTime.now());
@@ -168,8 +185,38 @@
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("statusCode", 2001);
            return jsonObject;
        }else{
            //回退扣除的金额,添加明细记录
            //修改用户的可提现金额
            BigDecimal withdrawalAmount = withdrawalRequests.getWithdrawalAmount();
            AppUser appUser = appUserService.getById(withdrawalRequests.getAppUserId());
            BigDecimal withdrawableAmount = appUser.getWithdrawableAmount();
            BigDecimal withdrawnAmount = appUser.getWithdrawnAmount();
            BigDecimal balance = appUser.getBalance();
            appUser.setWithdrawableAmount(withdrawableAmount.add(withdrawalAmount).setScale(2, RoundingMode.HALF_EVEN));
            appUser.setWithdrawnAmount(withdrawnAmount.subtract(withdrawalAmount).setScale(2, RoundingMode.HALF_EVEN));
            appUser.setBalance(appUser.getBalance().add(withdrawalAmount).setScale(2, RoundingMode.HALF_EVEN));
            appUserService.updateById(appUser);
            //添加变动明细
            BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
            balanceChangeRecord.setAppUserId(appUser.getId());
            balanceChangeRecord.setVipId(appUser.getVipId());
            balanceChangeRecord.setOrderId(withdrawalRequests.getId());
            balanceChangeRecord.setChangeType(2);
            balanceChangeRecord.setChangeAmount(withdrawalAmount);
            balanceChangeRecord.setDelFlag(0);
            balanceChangeRecord.setCreateTime(LocalDateTime.now());
            balanceChangeRecord.setChangeDirection(-1);
            balanceChangeRecordService.save(balanceChangeRecord);
            withdrawalRequests.setStatus(3);
            withdrawalRequests.setRemark(singlePayCallbackResult.getErrorCodeDesc());
            withdrawalRequestsService.updateById(withdrawalRequests);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("statusCode", 2001);
            return jsonObject;
        }
        return new JSONObject();
    }
}