package com.ydtech.modules.ttqf.xxx; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ydtech.modules.admin.constants.SwitchConfig; import com.ydtech.modules.admin.model.po.SysUserBankCard; import com.ydtech.modules.admin.service.SysSwitchConfigService; import com.ydtech.modules.admin.service.SysUserBankCardService; import com.ydtech.modules.ttqf.dao.PartTtqfRecordMapper; import com.ydtech.modules.ttqf.entity.PartTtqfRecord; import com.ydtech.modules.ttqf.entity.vo.UserWithdrawal; import com.ydtech.modules.ttqf.service.TtqfService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.math.BigDecimal; @Component public class VirtualWithdrawal { @Autowired private SysSwitchConfigService sysSwitchConfigService; @Autowired private SysUserBankCardService sysUserBankCardService; @Autowired private TtqfService ttqfService; @Async // 虚拟提现 virtualWithdrawal public void virtualWithdrawal(String userId, BigDecimal amount,String bankCard) { if (sysSwitchConfigService.isEnabled(SwitchConfig.VIRTUAL_WITHDRAWAL.getCode())){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(SysUserBankCard.class); queryWrapper.eq(SysUserBankCard::getUserId, userId); queryWrapper.eq(SysUserBankCard::getIsDefault, 1); SysUserBankCard one = sysUserBankCardService.getOne(queryWrapper); virtualWithdrawal( userId, amount, one.getBankNumber()); } SpringUtil.getBean(InitializeInternalWithdrawalId.class).initialize(); PartTtqfRecord record = new PartTtqfRecord(); record.setUserId(userId); record.setBankCard(bankCard); record.setFeeAmount(BigDecimal.ZERO); record.setAmount(amount); SpringUtil.getBean(PartTtqfRecordMapper.class).insert(record); //调取 ttqf 平台提现到虚拟账户 String id = SpringUtil.getBean(RoundRobinService.class).getNextWithLua(); UserWithdrawal withdrawal = new UserWithdrawal(); withdrawal.setUserId(id); withdrawal.setAmount(amount); withdrawal.setBankNumber(bankCard); ttqfService.userCashOut(withdrawal); } }