KKSU
2024-05-09 f2dd0068e9f235fd364120cb32607169831b2c98
合约监听
3 files modified
17 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/chain/EthUsdtContract.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberFund.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/EthUsdtContract.java
@@ -3,8 +3,6 @@
import io.reactivex.Flowable;
import io.reactivex.functions.Function;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.EventValues;
import org.web3j.abi.FunctionReturnDecoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.*;
import org.web3j.abi.datatypes.generated.Uint256;
@@ -414,6 +412,7 @@
                    typedResponse.coinTarget = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
                    typedResponse.usdtCoin = (BigInteger) eventValues.getNonIndexedValues().get(5).getValue();
                    typedResponse.lastMineTime = (BigInteger) eventValues.getNonIndexedValues().get(6).getValue();
                    typedResponse.blockHash = log.getTransactionHash();
                }
                return typedResponse;
@@ -839,5 +838,6 @@
        public BigInteger coinTarget;//币本位多少币
        public BigInteger usdtCoin;//金本位换算后多少币
        public BigInteger lastMineTime;//上一次挖矿时间
        public String blockHash;//上一次挖矿时间
    }
}
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberFund.java
@@ -5,7 +5,6 @@
import lombok.Data;
import java.math.BigDecimal;
import java.math.BigInteger;
@Data
@TableName("dapp_member_fund")
@@ -14,6 +13,7 @@
    private Long memberId;
    public String address;
    public String blockHash;
    public BigDecimal amount;//总挖矿数量
    public BigDecimal price;//价格
src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
@@ -21,6 +21,7 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -188,6 +189,7 @@
         * 生成对应的产矿流水
         */
        String address = e.adr;
        String blockHash = e.blockHash;
        DappMemberEntity dappMemberEntity = dappMemberDao.selectByAddress(address, null);
        if(ObjectUtil.isEmpty(dappMemberEntity)){
            return;
@@ -200,10 +202,17 @@
        BigDecimal usdtCoin = new BigDecimal(e.usdtCoin.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN);
        BigInteger lastMineTime = e.lastMineTime;
        QueryWrapper<DappMemberFund> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("block_hash",blockHash);
        objectQueryWrapper.eq("address",address);
        objectQueryWrapper.eq("last_mine_time",lastMineTime.toString());
        List<DappMemberFund> dappMemberFunds = dappMemberFundMapper.selectList(objectQueryWrapper);
        if(CollUtil.isEmpty(dappMemberFunds)){
        Long memberId = dappMemberEntity.getId();
        DappMemberFund dappMemberFund = new DappMemberFund();
        dappMemberFund.setMemberId(memberId);
        dappMemberFund.setAddress(address);
            dappMemberFund.setBlockHash(blockHash);
        dappMemberFund.setAmount(amount);
        dappMemberFund.setPrice(price);
        dappMemberFund.setUsdtTarget(usdtTarget);
@@ -211,7 +220,6 @@
        dappMemberFund.setUsdtCoin(usdtCoin);
        dappMemberFund.setLastMineTime(lastMineTime.toString());
        dappMemberFundMapper.insert(dappMemberFund);
        DappFundFlowEntity fundFlowTuiJian1 = new DappFundFlowEntity(
                memberId,
@@ -232,3 +240,4 @@
        log.info("本地交易:{},amount-{},price-{}", e.adr,amount,price);
    }
}
}