package cc.mrbird.febs.mall.chain; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.GameFlowTypeEnum; import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberCharge; import cc.mrbird.febs.mall.entity.MallMemberWallet; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.mapper.MallMemberChargeMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import sun.rmi.runtime.Log; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; @Slf4j @Service public class BscUsdtContractEvent implements ContractEventService { @Resource private RedisUtils redisUtils; @Resource private DataDictionaryCustomMapper dataDictionaryCustomMapper; @Resource private MallMemberMapper mallMemberMapper; @Resource private MallMemberChargeMapper mallMemberChargeMapper; @Resource private IMallMoneyFlowService mallMoneyFlowService; @Resource private MallMemberWalletMapper mallMemberWalletMapper; @Override public void compile(EthUsdtContract.TransferEventResponse e) { return; } @Override public void sdmUSDT(EthUsdtContract.TransferEventResponse e) { if (e.to == null) { return; } // 判断收款地址是否是设置的平台地址 if ("0xFB81C6649cd853e3193acE1e7c91A4e6cF0c6D92".toLowerCase().equals(e.to)) { ContractChainService sourceUsdtInstance = ChainService.getInstance(ChainEnum.BSC_USDT.name()); int decimals = sourceUsdtInstance.decimals(); String fromAddress = e.from; if (fromAddress.equals("0xFB81C6649cd853e3193acE1e7c91A4e6cF0c6D92")) { return; } QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("bind_phone",fromAddress.toLowerCase()); MallMember fromMember = mallMemberMapper.selectOne(objectQueryWrapper); if(ObjectUtil.isEmpty(fromMember)){ return; } BigInteger tokens = e.tokens; BigDecimal amount = new BigDecimal(tokens.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN); log.info("用户充值,{},金额:{}",fromAddress,amount); MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(fromMember.getId()); mallMemberWallet.setBalance(mallMemberWallet.getBalance().add(amount)); mallMemberWalletMapper.updateBalanceWithVersion(mallMemberWallet); MallMemberCharge mallMemberCharge = new MallMemberCharge(); mallMemberCharge.setMemberId(fromMember.getId()); mallMemberCharge.setAmount(amount); mallMemberCharge.setAddress(fromAddress); mallMemberCharge.setState(2); mallMemberChargeMapper.insert(mallMemberCharge); mallMoneyFlowService.addMoneyFlow( fromMember.getId(), amount.abs(), GameFlowTypeEnum.PLAYER_CHARGE.getValue(), MallUtils.getOrderNum("CZ"), GameFlowTypeEnum.PLAYER_CHARGE.getDescrition()); } } }