KKSU
2024-04-16 1d5f689f34d827ac4be67fd84212a5cb7fc80d57
滑点自动发放
15 files modified
1728 ■■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/AdminBannerController.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappHdRecord.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappHdRecordMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/IAdminBannerService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/GiveMeMoneyJob.java 59 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappHdRecordMapper.xml 7 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/banner/coinPrice.html 1498 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/banner/coinSet.html 42 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
@@ -46,6 +46,11 @@
            "https://bsc-dataseed1.ninicoin.io",
            "0x46ac4921e58773ca22826df1640672b91b1db2b3",
            ""),
    BSC_GFA("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25",
            "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf",
            "https://bsc-dataseed1.ninicoin.io",
            "0xaC97ff8173c41b83111b411A3Fa62D7C6ff385be",
            ""),
    /**
     * 源池币
src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
@@ -8,6 +8,7 @@
    BigInteger balanceOfUnDecimal(String address);
    BigDecimal balanceOf(String address);
    BigDecimal getPrice(String address);
    BigInteger allowance(String address);
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -153,6 +153,40 @@
    }
    @Override
    public BigDecimal getPrice(String address) {
        BigInteger decimals = BigInteger.ZERO;
        try {
            String methodName = "getPrice";
            List<Type> inputParameters = new ArrayList<>();
            List<TypeReference<?>> outputParameters = new ArrayList<>();
            TypeReference<Uint256> typeReference = new TypeReference<Uint256>() {
            };
            outputParameters.add(typeReference);
            Function function = new Function(methodName, inputParameters, outputParameters);
            String data = FunctionEncoder.encode(function);
            Transaction transaction = Transaction.createEthCallTransaction(null, contractAddress, data);
            EthCall ethCall;
            try {
                ethCall = web3j.ethCall(transaction, DefaultBlockParameterName.LATEST).send();
                List<Type> results = FunctionReturnDecoder.decode(ethCall.getValue(), function.getOutputParameters());
                decimals = (BigInteger) results.get(0).getValue();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        int decimal = decimals();
        double res = new BigDecimal(decimals).divide(BigDecimal.valueOf(Math.pow(10, decimal)), 8, RoundingMode.HALF_DOWN).doubleValue();
        if (res > 0) {
            return new BigDecimal(res);
        }
        return BigDecimal.ZERO;
    }
    @Override
    public BigInteger allowance(String address) {
        String methodName = "allowance";
        List<TypeReference<?>> outputParameters = new ArrayList<>();
src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
@@ -75,6 +75,11 @@
    }
    @Override
    public BigDecimal getPrice(String address) {
        return null;
    }
    @Override
    public int decimals() {
        return 0;
    }
src/main/java/cc/mrbird/febs/dapp/controller/AdminBannerController.java
@@ -7,6 +7,7 @@
import cc.mrbird.febs.common.enumerates.DataDicEnum;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.entity.DappCoinPrice;
import cc.mrbird.febs.dapp.entity.DappHdRecord;
import cc.mrbird.febs.dapp.entity.PlatformBanner;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.service.DappSystemService;
@@ -43,6 +44,15 @@
    @GetMapping("coinPrice")
    public FebsResponse coinPrice(DappCoinPrice dappCoinPrice, QueryRequest request) {
        Map<String, Object> data = getDataTable(iAdminBannerService.findCoinPriceInPage(dappCoinPrice, request));
        return new FebsResponse().success().data(data);
    }
    /**
     * 价格---列表
     */
    @GetMapping("hdRecord")
    public FebsResponse hdRecord(DappHdRecord dappHdRecord, QueryRequest request) {
        Map<String, Object> data = getDataTable(iAdminBannerService.findHdRecordInPage(dappHdRecord, request));
        return new FebsResponse().success().data(data);
    }
@@ -111,7 +121,7 @@
        if(BigDecimal.ZERO.compareTo(coinAmount) > 0){
            return new FebsResponse().fail().message("请设置钱包GFA");
        }
        dappSystemService.tradeProfitDistribute(1L);
//        dappSystemService.tradeProfitDistribute(1L);
        return new FebsResponse().success().message("操作成功");
    }
src/main/java/cc/mrbird/febs/dapp/entity/DappHdRecord.java
@@ -11,8 +11,8 @@
public class DappHdRecord extends BaseEntity {
    private BigDecimal price;
    private BigDecimal usdtEvery;//每日新增
    private BigDecimal usdtAmount;//总数
    private BigDecimal coinEvery;
    private BigDecimal coinAmount;
    private BigDecimal usdtEvery;//滑点新增
    private BigDecimal usdtAmount;//滑点累计
    private BigDecimal coinEvery;//币量新增
    private BigDecimal coinAmount;//币量累计
}
src/main/java/cc/mrbird/febs/dapp/mapper/DappHdRecordMapper.java
@@ -15,6 +15,8 @@
    IPage<DappCoinPrice> findCoinPriceInPage(Page<DappCoinPrice> page, @Param("record")DappCoinPrice dappCoinPrice);
    IPage<DappHdRecord> findHdRecordInPage(Page<DappHdRecord> page, @Param("record")DappHdRecord dappCoinPrice);
    DappHdRecord selectNewRecord();
}
src/main/java/cc/mrbird/febs/dapp/service/IAdminBannerService.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.dapp.entity.DappCoinPrice;
import cc.mrbird.febs.dapp.entity.DappHdRecord;
import cc.mrbird.febs.dapp.entity.PlatformBanner;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -25,4 +26,6 @@
    IPage<DappCoinPrice> findCoinPriceInPage(DappCoinPrice dappCoinPrice, QueryRequest request);
    FebsResponse coinPriceAdd(String price);
    IPage<DappHdRecord> findHdRecordInPage(DappHdRecord dappHdRecord, QueryRequest request);
}
src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.DataDicEnum;
import cc.mrbird.febs.dapp.entity.DappCoinPrice;
import cc.mrbird.febs.dapp.entity.DappHdRecord;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.entity.PlatformBanner;
import cc.mrbird.febs.dapp.mapper.DappCoinPriceMapper;
@@ -104,4 +105,11 @@
        asyncCjService.redisCacheUpdate(DataDicEnum.GFA_PRICE.getValue(),bigDecimal.toString(),0);
        return new FebsResponse().success();
    }
    @Override
    public IPage<DappHdRecord> findHdRecordInPage(DappHdRecord dappHdRecord, QueryRequest request) {
        Page<DappHdRecord> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<DappHdRecord> dappHdRecordIPage = dappHdRecordMapper.findHdRecordInPage(page, dappHdRecord);
        return dappHdRecordIPage;
    }
}
src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java
@@ -242,10 +242,6 @@
         */
        //当天实际当天滑点
        BigDecimal gfaPrice = new BigDecimal(
                redisUtils.getString(DataDicEnum.GFA_PRICE.getValue())
        ).setScale(2,BigDecimal.ROUND_DOWN);
        BigDecimal usdtAmount = new BigDecimal(
                redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue())
        ).setScale(2,BigDecimal.ROUND_DOWN);
@@ -255,20 +251,8 @@
        if(BigDecimal.ZERO.compareTo(usdtAmount) > 0){
            return;
        }
        if(BigDecimal.ZERO.compareTo(coinAmount) > 0){
            return;
        }
        BigDecimal usdtAmountReal = usdtAmount;
        BigDecimal coinAmountReal = coinAmount;
        //生成一条记录
        DappHdRecord dappHdRecordAdd = new DappHdRecord();
        dappHdRecordAdd.setPrice(gfaPrice);
        dappHdRecordAdd.setUsdtEvery(usdtAmountReal);
        dappHdRecordAdd.setUsdtAmount(usdtAmountReal);
        dappHdRecordAdd.setCoinEvery(coinAmountReal);
        dappHdRecordAdd.setCoinAmount(coinAmountReal);
        dappHdRecordMapper.insert(dappHdRecordAdd);
        /**
         * 5%滑奖分配:
         * 1%用自身质押
@@ -281,9 +265,9 @@
        //平分份数
        BigDecimal totalPercent = new BigDecimal(selfPercent + teamPercent + workPercent);
        //每一份有多少
        BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 4, BigDecimal.ROUND_DOWN);
        BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 8, BigDecimal.ROUND_DOWN);
        //每一份有多少
        BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 4, BigDecimal.ROUND_DOWN);
        BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 8, BigDecimal.ROUND_DOWN);
        //1%用自身质押
        selfHdPerk(selfPercent,divideEveryUsdt,divideEveryCoin);
        //3%用于团队业绩计算
@@ -360,16 +344,19 @@
            memberPerkMap.put(memberId,teamAchieveMemberSum);
        }
        BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(memberPerkTotal,4,BigDecimal.ROUND_DOWN);
        BigDecimal everyCoin = multiplyDivideEveryCoin.divide(memberPerkTotal,4,BigDecimal.ROUND_DOWN);
        BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(memberPerkTotal,8,BigDecimal.ROUND_DOWN);
        BigDecimal everyCoin = multiplyDivideEveryCoin.divide(memberPerkTotal,8,BigDecimal.ROUND_DOWN);
        Set<Long> set = memberPerkMap.keySet(); // 得到所有key的集合
        for (Long memberId : set) {
            //当前生效中的团队业绩
            BigDecimal amountMember = memberPerkMap.get(memberId);
            //这个人实际可以分到的数量USDT
            BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(4, BigDecimal.ROUND_DOWN);
            BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(8, BigDecimal.ROUND_DOWN);
            if(BigDecimal.ZERO.compareTo(multiplyUsdt) >= 0){
                continue;
            }
            //这个人实际可以分到的数量COIN
            BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(4, BigDecimal.ROUND_DOWN);
            BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(8, BigDecimal.ROUND_DOWN);
            DappMemberEntity dappMemberEntityExit = dappMemberDao.selectById(memberId);
            if(ObjectUtil.isEmpty(dappMemberEntityExit)){
                continue;
@@ -428,8 +415,8 @@
        if(BigDecimal.ZERO.compareTo(amountMemberTotal) >= 0){
            return;
        }
        BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(amountMemberTotal,4,BigDecimal.ROUND_DOWN);
        BigDecimal everyCoin = multiplyDivideEveryCoin.divide(amountMemberTotal,4,BigDecimal.ROUND_DOWN);
        BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(amountMemberTotal,8,BigDecimal.ROUND_DOWN);
        BigDecimal everyCoin = multiplyDivideEveryCoin.divide(amountMemberTotal,8,BigDecimal.ROUND_DOWN);
        Map<Long, List<DappAchieve>> collect = dappAchieves.stream().collect(Collectors.groupingBy(DappAchieve::getMemberId));
        Set<Long> set = collect.keySet(); // 得到所有key的集合
@@ -437,9 +424,12 @@
            //当前每个人生效中的质押总数
            BigDecimal amountMember = collect.get(memberId).stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
            //这个人实际可以分到的数量USDT
            BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(4, BigDecimal.ROUND_DOWN);
            BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(8, BigDecimal.ROUND_DOWN);
            if(BigDecimal.ZERO.compareTo(multiplyUsdt) >= 0){
                continue;
            }
            //这个人实际可以分到的数量COIN
            BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(4, BigDecimal.ROUND_DOWN);
            BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(8, BigDecimal.ROUND_DOWN);
            DappMemberEntity dappMemberEntityExit = dappMemberDao.selectById(memberId);
            if(ObjectUtil.isEmpty(dappMemberEntityExit)){
src/main/java/cc/mrbird/febs/job/GiveMeMoneyJob.java
@@ -3,12 +3,18 @@
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.enumerates.DataDicEnum;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.entity.DappAddressList;
import cc.mrbird.febs.dapp.entity.DappHdRecord;
import cc.mrbird.febs.dapp.mapper.DappAdressListDao;
import cc.mrbird.febs.dapp.mapper.DappHdRecordMapper;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -33,25 +39,58 @@
    private DappSystemService dappSystemService;
    @Autowired
    private RedisUtils redisUtils;
    @Autowired
    private DappHdRecordMapper dappHdRecordMapper;
    /**
     * 每日定时零点计算滑点
     */
    @Scheduled(cron = "0 0 0 * * ?")
    @Scheduled(cron = "0 0/5 * * * ? ")
    public void mineJob() {
        /**
         * 定时器循环计算每个时间跨度内增加的滑点数量
         */
        log.info("滑点奖励");
        BigDecimal usdtAmount = new BigDecimal(
                redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue())
        ).setScale(2,BigDecimal.ROUND_DOWN);
        BigDecimal coinAmount = new BigDecimal(
                redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_COIN_AMOUNT.getValue())
        ).setScale(2,BigDecimal.ROUND_DOWN);
        if(BigDecimal.ZERO.compareTo(usdtAmount) > 0){
            return;
        //获取滑点钱包的余额
        BigDecimal coinCnt = ChainService.getInstance(ChainEnum.BSC_GFA.name()).balanceOf("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D").setScale(8,BigDecimal.ROUND_DOWN);
        BigDecimal coinPrice = ChainService.getInstance(ChainEnum.BSC_GFA.name()).getPrice("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D").setScale(8,BigDecimal.ROUND_DOWN);
        //获取上一时刻的数据
        BigDecimal coinAmountOld =BigDecimal.ZERO;
        DappHdRecord dappHdRecord = dappHdRecordMapper.selectNewRecord();
        if(ObjectUtil.isNotEmpty(dappHdRecord)){
            coinAmountOld = dappHdRecord.getCoinAmount();
        }
        if(BigDecimal.ZERO.compareTo(coinAmount) > 0){
        //更新此刻的USDT数量
        String existToken = redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue());
        if (StrUtil.isNotBlank(existToken)) {
            redisUtils.del(existToken);
        }
        //这个时间段的新增余额
        //此刻的余额-上一次账户的余额 = 这个时间段的新增余额
        BigDecimal subtract = coinCnt.subtract(coinAmountOld);
        //获取这个时刻的滑点入账数量
        BigDecimal multiply = coinPrice.multiply(subtract).multiply(new BigDecimal("0.97")).setScale(8,BigDecimal.ROUND_DOWN);
        //更新这个时间段的滑点数量
        redisUtils.set(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue(), multiply, 0);
        //生成一条记录
        DappHdRecord dappHdRecordAdd = new DappHdRecord();
        dappHdRecordAdd.setPrice(coinPrice);
        dappHdRecordAdd.setUsdtEvery(multiply);
        dappHdRecordAdd.setCoinEvery(subtract);
        dappHdRecordAdd.setCoinAmount(coinCnt);
        dappHdRecordMapper.insert(dappHdRecordAdd);
        if(BigDecimal.ZERO.compareTo(subtract) >= 0){
            return;
        }
        dappSystemService.tradeProfitDistribute(1L);
    }
    public static void main(String[] args) {
//        System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).totalSupply());
//        System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).balanceOf("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D"));
        System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).getPrice("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D"));
    }
}
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -31,7 +31,7 @@
    @RabbitListener(queues = QueueConstants.QUEUE_GFA_ZY_HUA_DIAN)
    public void distrbProfit(Long id) {
        log.info("收到滑点分配消息:{}", id);
        dappSystemService.tradeProfitDistribute(id);
//        dappSystemService.tradeProfitDistribute(id);
    }
    @RabbitListener(queues = QueueConstants.USER_BUY_REWARD)
src/main/resources/mapper/dapp/DappHdRecordMapper.xml
@@ -16,6 +16,13 @@
            dapp_coin_price
            order by CREATE_TIME desc
    </select>
    <select id="findHdRecordInPage" resultType="cc.mrbird.febs.dapp.entity.DappHdRecord">
        SELECT
            *
        FROM
            dapp_hd_record
            order by CREATE_TIME desc
    </select>
    <select id="selectNewRecord" resultType="cc.mrbird.febs.dapp.entity.DappHdRecord">
        SELECT
src/main/resources/templates/febs/views/modules/banner/coinPrice.html
@@ -8,7 +8,7 @@
                                <div class="layui-inline">
                                    <div class="layui-input-inline">
                                        <span></span>
                                        <span>点击刷新获取最新价格:</span>
<!--                                        <span>点击刷新获取最新价格:</span>-->
                                    </div>
                                    <div class="layui-input-inline">
                                        <span id="countdown"></span>
@@ -39,7 +39,7 @@
</script>
<script type="text/html" id="isInside">
    {{#
    var isInside = {
    var isInside = {
    2: {title: '外'  , color: 'green'},
    1: {title: '内', color: 'red'}
    }[d.isInside];
@@ -48,7 +48,7 @@
</script>
<script type="text/html" id="showPort">
    {{#
    var showPort = {
    var showPort = {
    2: {title: '手机'  , color: 'green'},
    1: {title: 'pc', color: 'red'}
    }[d.showPort];
@@ -57,7 +57,7 @@
</script>
<script type="text/html" id="isTop">
    {{#
    var isTop = {
    var isTop = {
    2: {title: '否', color: 'red' },
    1: {title: '是' , color: 'green'}
    }[d.isTop];
@@ -106,15 +106,18 @@
            var data = obj.data,
                layEvent = obj.event;
        });
         // 刷新按钮
        $reset.on('click', function () {
            getBalanceOf("0xCEBfd36e03BD80c7015Cbad17eFfBc33d2923FF3").then(amount => {
                console.log("余额:"+amount);
                document.getElementById('countdown').innerHTML = amount ;
                coinPriceAdd(amount);
            });
            // getBalanceOf("0xf5807B8F3691bFfDf155daFdF2f0449e9F6fE423").then(amount => {
            //     console.log("余额:"+amount);
            //     // coinPriceAdd(amount);
            //     document.getElementById('countdownBalance').innerHTML = "余额:"+amount;
            // });
            // getPrice().then(amount => {
            //     console.log("价格:"+amount);
            //
            //     document.getElementById('countdownPrice').innerHTML = "价格:"+amount ;
            //     // coinPriceAdd(amount);
            // });
            $searchForm[0].reset();
            sortObject.type = 'null';
            tableIns.reload({where: getQueryParams(), page: {curr: null}, initSort: sortObject});
@@ -133,10 +136,13 @@
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'coinPriceTable',
                url: ctx + 'admin/banner/coinPrice',
                url: ctx + 'admin/banner/hdRecord',
                cols: [[
                    // {field: 'id', title: '', minWidth: 10,align:'left'},
                    {field: 'coinAmount', title: '滑点累计币量', minWidth: 120,align:'center'},
                    {field: 'coinEvery', title: '新增滑点', minWidth: 120,align:'center'},
                    {field: 'price', title: '价格', minWidth: 120,align:'center'},
                    {field: 'usdtEvery', title: '新增USDT', minWidth: 120,align:'center'},
                    {field: 'createTime', title: '时间', minWidth: 120,align:'center'},
                ]]
            });
@@ -175,658 +181,838 @@
        }
        // setInterval(() => {
        //     getPrice(tokens.tokenA,tokens.tokenB).then(price => {
        //         coinPriceAdd(price);
        //     getBalanceOf("0xf5807B8F3691bFfDf155daFdF2f0449e9F6fE423").then(amount => {
        //         coinPriceAdd(amount);
        //     });
        // }, 10 * 1000);//10秒一次
        //获取地址拥有的代币数量
        const providers = new ethers.providers.JsonRpcProvider('https://data-seed-prebsc-1-s1.bnbchain.org:8545');
        // const providers = new ethers.providers.JsonRpcProvider('https://https://bsc-testnet.public.blastapi.io/');
        // const providers = new ethers.providers.JsonRpcProvider('https://data-seed-prebsc-1-s1.bnbchain.org:8545');//正式
        const providers = new ethers.providers.JsonRpcProvider('https://bsc-testnet.public.blastapi.io/');//测试
        const contract = {
            // gfaCoin: '0xaC97ff8173c41b83111b411A3Fa62D7C6ff385be',//正式
            gfaCoin: '0xB4dAA960EAbd566D495bCfaCC0453A9Baabe6D46',//测试
        };
        const gfaContract = new ethers.Contract(
            contract.gfaCoin,
            [
                {
                    "inputs": [
                        {
                            "internalType": "string[]",
                            "name": "symbolParam",
                            "type": "string[]"
                        },
                        {
                            "internalType": "address[]",
                            "name": "adr",
                            "type": "address[]"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "constructor"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        }
                    ],
                    "name": "Approval",
                    "type": "event"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        }
                    ],
                    "name": "approve",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "anonymous": false,
                    "inputs": [],
                    "name": "AutoNukeLP",
                    "type": "event"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "adr",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "price",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "sameCoin",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "finxMineCoin",
                            "type": "uint256"
                        }
                    ],
                    "name": "CoinReward",
                    "type": "event"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "subtractedValue",
                            "type": "uint256"
                        }
                    ],
                    "name": "decreaseAllowance",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "addedValue",
                            "type": "uint256"
                        }
                    ],
                    "name": "increaseAllowance",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "startState",
                            "type": "uint256"
                        }
                    ],
                    "name": "launch",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "sender",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "volumn",
                            "type": "uint256"
                        }
                    ],
                    "name": "Pawn",
                    "type": "event"
                },
                {
                    "inputs": [],
                    "name": "renounceOwnership",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "black",
                            "type": "address"
                        },
                        {
                            "internalType": "bool",
                            "name": "enable",
                            "type": "bool"
                        }
                    ],
                    "name": "setBlack",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "buyFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "saleFee",
                            "type": "uint256"
                        }
                    ],
                    "name": "setFee",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "whiteAddr",
                            "type": "address"
                        },
                        {
                            "internalType": "bool",
                            "name": "enable",
                            "type": "bool"
                        }
                    ],
                    "name": "setPawnWhiteAddress",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "pawnBurnRatio",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "minRatio",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "pawnRatio",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lpBurnRatio",
                            "type": "uint256"
                        }
                    ],
                    "name": "setRates",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "mineTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "exchangeTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "burnTime",
                            "type": "uint256"
                        }
                    ],
                    "name": "setTimes",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        }
                    ],
                    "name": "transfer",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "from",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "to",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        }
                    ],
                    "name": "Transfer",
                    "type": "event"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "sender",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        }
                    ],
                    "name": "transferFrom",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        }
                    ],
                    "name": "allowance",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address"
                        }
                    ],
                    "name": "balanceOf",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "decimals",
                    "outputs": [
                        {
                            "internalType": "uint8",
                            "name": "",
                            "type": "uint8"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getLastExchangeTime",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getLastMineTime",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getLastTimes",
                    "outputs": [
                        {
                            "internalType": "uint256[]",
                            "name": "",
                            "type": "uint256[]"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getOwner",
                    "outputs": [
                        {
                            "internalType": "address",
                            "name": "",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getPawnVolumn",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getPrice",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "_price",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getRates",
                    "outputs": [
                        {
                            "internalType": "uint256[]",
                            "name": "",
                            "type": "uint256[]"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getRewardAddressList",
                    "outputs": [
                        {
                            "internalType": "address[]",
                            "name": "",
                            "type": "address[]"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "adr",
                            "type": "address"
                        }
                    ],
                    "name": "getRewardHisotryTotal",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "adr",
                            "type": "address"
                        }
                    ],
                    "name": "getRewardHistory",
                    "outputs": [
                        {
                            "components": [
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "goldAmount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "coinAmount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "price",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timesptemp",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct Reward.RewardHistory[]",
                            "name": "",
                            "type": "tuple[]"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "adr",
                            "type": "address"
                        }
                    ],
                    "name": "getRewardList",
                    "outputs": [
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "reward",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "remain",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "price",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestemp",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct Reward.RewardData[]",
                            "name": "",
                            "type": "tuple[]"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getTimes",
                    "outputs": [
                        {
                            "internalType": "uint256[]",
                            "name": "",
                            "type": "uint256[]"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getTotalMineCnt",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "getTotalRemainCnt",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "adr",
                            "type": "address"
                        }
                    ],
                    "name": "getWaitRelease",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "addr",
                            "type": "address"
                        }
                    ],
                    "name": "isBlackAddr",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "name",
                    "outputs": [
                        {
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "owner",
                    "outputs": [
                        {
                            "internalType": "address",
                            "name": "",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "symbol",
                    "outputs": [
                        {
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [],
                    "name": "totalSupply",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                }
            ],
            providers
        );
        //获取地址余额
        async function getBalanceOf(address){
            const contract = {
                gfaCoin: '0x33107d4502C8C59a8b96834c76d427B67AC1d873',
            };
            const gfaContract = new ethers.Contract(
                contract.gfaCoin,
                [
                    {
                        "inputs": [
                            {
                                "internalType": "string[]",
                                "name": "symbolParam",
                                "type": "string[]"
                            },
                            {
                                "internalType": "address[]",
                                "name": "adr",
                                "type": "address[]"
                            }
                        ],
                        "stateMutability": "nonpayable",
                        "type": "constructor"
                    },
                    {
                        "anonymous": false,
                        "inputs": [
                            {
                                "indexed": true,
                                "internalType": "address",
                                "name": "owner",
                                "type": "address"
                            },
                            {
                                "indexed": true,
                                "internalType": "address",
                                "name": "spender",
                                "type": "address"
                            },
                            {
                                "indexed": false,
                                "internalType": "uint256",
                                "name": "value",
                                "type": "uint256"
                            }
                        ],
                        "name": "Approval",
                        "type": "event"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "spender",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            }
                        ],
                        "name": "approve",
                        "outputs": [
                            {
                                "internalType": "bool",
                                "name": "",
                                "type": "bool"
                            }
                        ],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "anonymous": false,
                        "inputs": [],
                        "name": "AutoNukeLP",
                        "type": "event"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "spender",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "subtractedValue",
                                "type": "uint256"
                            }
                        ],
                        "name": "decreaseAllowance",
                        "outputs": [
                            {
                                "internalType": "bool",
                                "name": "",
                                "type": "bool"
                            }
                        ],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "spender",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "addedValue",
                                "type": "uint256"
                            }
                        ],
                        "name": "increaseAllowance",
                        "outputs": [
                            {
                                "internalType": "bool",
                                "name": "",
                                "type": "bool"
                            }
                        ],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "uint256",
                                "name": "startState",
                                "type": "uint256"
                            }
                        ],
                        "name": "launch",
                        "outputs": [],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "anonymous": false,
                        "inputs": [
                            {
                                "indexed": true,
                                "internalType": "address",
                                "name": "previousOwner",
                                "type": "address"
                            },
                            {
                                "indexed": true,
                                "internalType": "address",
                                "name": "newOwner",
                                "type": "address"
                            }
                        ],
                        "name": "OwnershipTransferred",
                        "type": "event"
                    },
                    {
                        "anonymous": false,
                        "inputs": [
                            {
                                "indexed": false,
                                "internalType": "address",
                                "name": "sender",
                                "type": "address"
                            },
                            {
                                "indexed": false,
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "indexed": false,
                                "internalType": "uint256",
                                "name": "volumn",
                                "type": "uint256"
                            }
                        ],
                        "name": "Pawn",
                        "type": "event"
                    },
                    {
                        "inputs": [],
                        "name": "renounceOwnership",
                        "outputs": [],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "uint256",
                                "name": "mineTime",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint256",
                                "name": "exchangeTime",
                                "type": "uint256"
                            },
                            {
                                "internalType": "uint256",
                                "name": "burnTime",
                                "type": "uint256"
                            }
                        ],
                        "name": "setTimes",
                        "outputs": [],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "recipient",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            }
                        ],
                        "name": "transfer",
                        "outputs": [
                            {
                                "internalType": "bool",
                                "name": "",
                                "type": "bool"
                            }
                        ],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "anonymous": false,
                        "inputs": [
                            {
                                "indexed": true,
                                "internalType": "address",
                                "name": "from",
                                "type": "address"
                            },
                            {
                                "indexed": true,
                                "internalType": "address",
                                "name": "to",
                                "type": "address"
                            },
                            {
                                "indexed": false,
                                "internalType": "uint256",
                                "name": "value",
                                "type": "uint256"
                            }
                        ],
                        "name": "Transfer",
                        "type": "event"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "sender",
                                "type": "address"
                            },
                            {
                                "internalType": "address",
                                "name": "recipient",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            }
                        ],
                        "name": "transferFrom",
                        "outputs": [
                            {
                                "internalType": "bool",
                                "name": "",
                                "type": "bool"
                            }
                        ],
                        "stateMutability": "nonpayable",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "owner",
                                "type": "address"
                            },
                            {
                                "internalType": "address",
                                "name": "spender",
                                "type": "address"
                            }
                        ],
                        "name": "allowance",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "account",
                                "type": "address"
                            }
                        ],
                        "name": "balanceOf",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "decimals",
                        "outputs": [
                            {
                                "internalType": "uint8",
                                "name": "",
                                "type": "uint8"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getLastExchangeTime",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getLastMineTime",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getOwner",
                        "outputs": [
                            {
                                "internalType": "address",
                                "name": "",
                                "type": "address"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getPawnVolumn",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getPrice",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "_price",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getRewardAddressList",
                        "outputs": [
                            {
                                "internalType": "address[]",
                                "name": "",
                                "type": "address[]"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "adr",
                                "type": "address"
                            }
                        ],
                        "name": "getRewardHisotryTotal",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "adr",
                                "type": "address"
                            }
                        ],
                        "name": "getRewardHistory",
                        "outputs": [
                            {
                                "components": [
                                    {
                                        "internalType": "uint256",
                                        "name": "amount",
                                        "type": "uint256"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "goldAmount",
                                        "type": "uint256"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "coinAmount",
                                        "type": "uint256"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "price",
                                        "type": "uint256"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "timesptemp",
                                        "type": "uint256"
                                    }
                                ],
                                "internalType": "struct Reward.RewardHistory[]",
                                "name": "",
                                "type": "tuple[]"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "adr",
                                "type": "address"
                            }
                        ],
                        "name": "getRewardList",
                        "outputs": [
                            {
                                "components": [
                                    {
                                        "internalType": "address",
                                        "name": "reward",
                                        "type": "address"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "amount",
                                        "type": "uint256"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "remain",
                                        "type": "uint256"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "price",
                                        "type": "uint256"
                                    },
                                    {
                                        "internalType": "uint256",
                                        "name": "timestemp",
                                        "type": "uint256"
                                    }
                                ],
                                "internalType": "struct Reward.RewardData[]",
                                "name": "",
                                "type": "tuple[]"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getTotalMineCnt",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "getTotalRemainCnt",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [
                            {
                                "internalType": "address",
                                "name": "adr",
                                "type": "address"
                            }
                        ],
                        "name": "getWaitRelease",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "name",
                        "outputs": [
                            {
                                "internalType": "string",
                                "name": "",
                                "type": "string"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "owner",
                        "outputs": [
                            {
                                "internalType": "address",
                                "name": "",
                                "type": "address"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "symbol",
                        "outputs": [
                            {
                                "internalType": "string",
                                "name": "",
                                "type": "string"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    },
                    {
                        "inputs": [],
                        "name": "totalSupply",
                        "outputs": [
                            {
                                "internalType": "uint256",
                                "name": "",
                                "type": "uint256"
                            }
                        ],
                        "stateMutability": "view",
                        "type": "function"
                    }
                ],
                providers
            );
            const amounts = await gfaContract.balanceOf(address);//获取余额
            const decimals = await gfaContract.decimals();//获取精度
            return (amounts.toString()/10 ** decimals).toString();
        }
        //获取价格
        async function getPrice(){
            const price = await gfaContract.getPrice();//获取价格
            const decimals = await gfaContract.decimals();//获取精度
            // await gfaContract.allowance(0xCEBfd36e03BD80c7015Cbad17eFfBc33d2923FF3,1000000);
            // // return amounts.toString()/1e18;
            //
            // return (amounts.toString()/10 ** decimals).toString() +",价格:"+ price/10 ** decimals;
            return ( price/10 ** decimals).toString();
        }
        // setInterval(() => {
src/main/resources/templates/febs/views/modules/banner/coinSet.html
@@ -135,23 +135,23 @@
<!--                        </div>-->
<!--                    </div>-->
                    <blockquote class="layui-elem-quote blue-border">滑点设置</blockquote>
                    <div class="layui-row layui-col-space10 layui-form-item">
<!--                    <blockquote class="layui-elem-quote blue-border">滑点设置</blockquote>-->
<!--                    <div class="layui-row layui-col-space10 layui-form-item">-->
<!--&lt;!&ndash;                        <div class="layui-col-lg6">&ndash;&gt;-->
<!--&lt;!&ndash;                            <label class="layui-form-label febs-form-item-require">钱包GFA:</label>&ndash;&gt;-->
<!--&lt;!&ndash;                            <div class="layui-input-block">&ndash;&gt;-->
<!--&lt;!&ndash;                                <input type="text" name="coinAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">&ndash;&gt;-->
<!--&lt;!&ndash;                            </div>&ndash;&gt;-->
<!--&lt;!&ndash;                            <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的GFA数量</div>&ndash;&gt;-->
<!--&lt;!&ndash;                        </div>&ndash;&gt;-->
<!--                        <div class="layui-col-lg6">-->
<!--                            <label class="layui-form-label febs-form-item-require">钱包GFA:</label>-->
<!--                            <label class="layui-form-label febs-form-item-require">钱包USDT:</label>-->
<!--                            <div class="layui-input-block">-->
<!--                                <input type="text" name="coinAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">-->
<!--                                <input type="text" name="usdtAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">-->
<!--                            </div>-->
<!--                            <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的GFA数量</div>-->
<!--                            <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的USDT数量</div>-->
<!--                        </div>-->
                        <div class="layui-col-lg6">
                            <label class="layui-form-label febs-form-item-require">钱包USDT:</label>
                            <div class="layui-input-block">
                                <input type="text" name="usdtAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
                            </div>
                            <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的USDT数量</div>
                        </div>
                    </div>
<!--                    </div>-->
                    <div class="layui-row layui-col-space10 layui-form-item">
                        <div class="layui-col-lg6">
                            <label class="layui-form-label febs-form-item-require">滑点级数:</label>
@@ -186,7 +186,7 @@
                    </div>
                </div>
                <div class="layui-card-footer">
                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="coin-set-form-hdSubmit" id="hdSubmit">释放每日滑点</button>
<!--                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="coin-set-form-hdSubmit" id="hdSubmit">释放每日滑点</button>-->
                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="coin-set-form-submit" id="submit">保存</button>
                </div>
            </div>
@@ -271,12 +271,12 @@
            return false;
        });
        $hdSubmit.on('click', function () {
            febs.modal.confirm('确认释放滑点', '确认释放滑点?', function () {
                febs.post(ctx + 'admin/banner/hdSubmit', function () {
                    febs.alert.success('操作成功');
                });
            });
        });
        // $hdSubmit.on('click', function () {
        //     febs.modal.confirm('确认释放滑点', '确认释放滑点?', function () {
        //         febs.post(ctx + 'admin/banner/hdSubmit', function () {
        //             febs.alert.success('操作成功');
        //         });
        //     });
        // });
    });
</script>