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<MallMember> 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());
|
|
}
|
}
|
|
|
}
|