xiaoyong931011
2022-12-05 22819e7b84e661b65b43b8a3c8467080b1b23fa4
20221130
10 files modified
1 files added
109 ■■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappFundFlowDao.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/BnbTransferJob.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java 9 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappFundFlowDao.xml 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -429,8 +429,8 @@
    @Override
    public String transferBaseToken(String address, BigDecimal amount) {
//        String gas = getGas();
        String gas ="5";
        String gas = getGas();
//        String gas ="5";
        try {
            Credentials credentials = Credentials.create(privateKey);
src/main/java/cc/mrbird/febs/dapp/mapper/DappFundFlowDao.java
@@ -32,4 +32,6 @@
    DappFundFlowEntity selectInfoById(@Param("id")Long id);
    int updateStatusById(@Param("status")int status, @Param("id")Long id);
    DappFundFlowEntity selectByStateAndVersionAndFromHashLimitOne(@Param("status")int withdrawStatusAgree, @Param("version")int withdrawStatusAgree1);
}
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -32,4 +32,6 @@
    void bnbTransfer(Long id);
    //代理升级
    void agentUp(Long id);
    void bnbTransferTest(Long id);
}
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -509,6 +509,25 @@
        }
    }
    @Override
    public void bnbTransferTest(Long id) {
        DappFundFlowEntity dappFundFlow = dappFundFlowDao.selectById(id);
        if(ObjectUtil.isEmpty(dappFundFlow)){
            return;
        }
        //金额
        BigDecimal amount = dappFundFlow.getAmount();
        //目标地址
        String address = dappFundFlow.getAddress();
        String hash = ChainService.getInstance(ChainEnum.BNB.name()).transferBaseToken(address, amount);
        if(StrUtil.isEmpty(hash)){
            return;
        }
        log.info("{},{}",id,hash);
        dappFundFlow.setFromHash(hash);
        dappFundFlowDao.updateById(dappFundFlow);
    }
    public static void main(String[] args) {
        String refererIds = "1,2,3,4,5," +
                            "6,7,8,9,10," +
src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
New file
@@ -0,0 +1,32 @@
package cc.mrbird.febs.job;
import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Slf4j
@Component
@ConditionalOnProperty(prefix = "system", name = "online-transfer", havingValue = "true")
public class BnbTransferJob{
    /**
     * 搜索还未发生转账操作,但是记录已经更新没有产生HASH值的流水记录,并发起转账操作
     */
    @Autowired
    private DappFundFlowDao dappFundFlowDao;
    @Autowired
    private ChainProducer chainProducer;
    @Scheduled(cron = "0/3 * * * * ? ")
    public void BnbTransferAgain() {
        DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectByStateAndVersionAndFromHashLimitOne(2,2);
        if(ObjectUtil.isNotEmpty(dappFundFlowEntity)){
            chainProducer.sendBnbTransferTestMsg(dappFundFlowEntity.getId());
        }
    }
}
src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -6,6 +6,7 @@
 **/
public class QueueConstants {
    public static final String QUEUE_BNB_TRANSFER_TEST = "queue_bnb_agent_up_test";
    public static final String QUEUE_BNB_AGENT_UP = "queue_bnb_agent_up";
    public static final String QUEUE_BNB_TRANSFER = "queue_bnb_transfer";
    public static final String QUEUE_MEMBER_OUT = "queue_bnb_member_out";
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -6,6 +6,8 @@
@Getter
public enum QueueEnum {
    //代理升级
    BNB_TRANSFER_TEST("exchange_bnb_agent_up_test", "route_key_bnb_agent_up_test", "queue_bnb_agent_up_test"),
    //代理升级
    BNB_AGENT_UP("exchange_bnb_agent_up", "route_key_bnb_agent_up", "queue_bnb_agent_up"),
    //转账拨币
    BNB_TRANSFER("exchange_bnb_transfer", "route_key_bnb_transfer", "queue_bnb_transfer"),
src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -177,4 +177,23 @@
        return BindingBuilder.bind(agentUpQueue()).to(agentUpExchange()).with(QueueEnum.BNB_AGENT_UP.getRoute());
    }
    // === 代理升级 end ===
    // === 消息测试 start ===
    @Bean
    public DirectExchange bnbTransferTestExchange() {
        return new DirectExchange(QueueEnum.BNB_TRANSFER_TEST.getExchange());
    }
    @Bean
    public Queue bnbTransferTestQueue() {
        return new Queue(QueueEnum.BNB_TRANSFER_TEST.getQueue());
    }
    @Bean
    public Binding bnbTransferTestBind() {
        return BindingBuilder.bind(bnbTransferTestQueue()).to(bnbTransferTestExchange()).with(QueueEnum.BNB_TRANSFER_TEST.getRoute());
    }
    // === 消息测试 end ===
}
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -73,6 +73,15 @@
        dappSystemService.bnbTransfer(id);
    }
    /**转账拨币
     * @param id
     */
    @RabbitListener(queues = QueueConstants.QUEUE_BNB_TRANSFER_TEST)
    public void bnbTransferTest(Long id) {
        log.info("消费转账拨币:{}", id);
        dappSystemService.bnbTransferTest(id);
    }
    /**代理升级
     * @param id
     */
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -93,6 +93,15 @@
    }
    /**
     * 转账拨币
     */
    public void sendBnbTransferTestMsg(Long id) {
        log.info("转账拨币:{}", id);
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
        rabbitTemplate.convertAndSend(QueueEnum.BNB_TRANSFER_TEST.getExchange(), QueueEnum.BNB_TRANSFER_TEST.getRoute(), id, correlationData);
    }
    /**
     * 代理升级
     */
    public void sendAgentUpMsg(Long id) {
src/main/resources/mapper/dapp/DappFundFlowDao.xml
@@ -103,4 +103,14 @@
        and version = 1
        and status = 1
    </update>
    <select id="selectByStateAndVersionAndFromHashLimitOne" resultType="cc.mrbird.febs.dapp.entity.DappFundFlowEntity">
        select * from dapp_fund_flow
        where status = #{status}
          and version = #{version}
          and from_hash is null
        ORDER BY
            id ASC
            LIMIT 1
    </select>
</mapper>