From 91c36cc2d9b5fae741fe5a59e366eb34c7072674 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 12 Jul 2023 10:38:06 +0800
Subject: [PATCH] 智能合约
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 420 +++++++++++++
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 18
src/main/resources/USDT.sol | 187 ++++++
src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java | 3
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 81 +-
src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java | 8
src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java | 63 +
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java | 20
src/main/resources/application-test.yml | 2
src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java | 36 +
src/test/java/cc/mrbird/febs/JunitTest.java | 56
src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java | 15
src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractInit.java | 26
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java | 54 +
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 4
src/test/java/cc/mrbird/febs/MemberTest.java | 284 ++++----
src/main/resources/application-dev.yml | 2
src/test/java/cc/mrbird/febs/TreeTest.java | 152 ++--
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java | 4
src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java | 5
src/main/java/cc/mrbird/febs/dapp/contract/andao/Abi.java | 356 ++---------
21 files changed, 1,186 insertions(+), 610 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
index 6fec420..6cf03bb 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
@@ -6,10 +6,17 @@
/**
* 链类型
* -- todo
- * 0xD88F63aCbcF82cC6D2255b8082D7bdE43b559d00 测试链
+ * 0x81cEAD4B1FaD71c97F77e286F864b95400Ff427B 已审计
*/
@Getter
public enum ChainEnum {
+
+
+ BSC_USDT_W_POOL_CONTRACT("BSC", "0xB3cF9669F398f444DfCAebbAd2A49bF32ba41fE3",
+ "3ff7147104fcc4b3e47eef1c6a826107ad13f8ceaf46d6747b7cd4e56f8b01c6",
+ "https://bsc-dataseed1.ninicoin.io",
+ "0x99A08A65DB5542f35b96FD69F01896Bd3cDB9DC4",
+ ""),
/**
* 提现USDT
@@ -62,10 +69,10 @@
* 正式 0xb27e44f98543e480dbd071b6605005e3d99b3dd4 https://bsc-dataseed1.ninicoin.io
*
*/
- BSC_TFC("BSC", "0x0F22E63D2FB18963C57A5Cb3C43403d156D140c2+1",
- "0x5bd9f75f53693076e19a8f20d66a147bf0a438275463d2b8d85be8ab11780836+1",
+ BSC_TFC("BSC", "0xa60aac0da34c76f3f60207ee09e9f75043319ab4",
+ "221be67f85375a5af6dd0f4b77fbe877ad2e57e05db201de1b1383fb76494d18",
"https://bsc-dataseed1.ninicoin.io",
- "0x9b4406bC2fa21d2058FD4939BAF29B3763cFeDe2+1",
+ "0x55d398326f99059fF775485246999027B3197955",
""),
/**
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
index 8ab7dc6..246a1b1 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
@@ -32,4 +32,7 @@
String transferBaseToken(String address, BigDecimal amount);
BigDecimal balanceOfBaseToken(String address);
+
+
+ String transferUSDT(String address, BigDecimal amount);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
index 16cf5f0..d803a85 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -1,6 +1,8 @@
package cc.mrbird.febs.dapp.chain;
+import cc.mrbird.febs.dapp.contract.andao.Abi;
import cn.hutool.core.util.HexUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
@@ -473,4 +475,56 @@
}
return null;
}
+
+ @Override
+ public String transferUSDT(String address, BigDecimal amount) {
+ try {
+ return tokenUSDTTransfer(privateKey, ownerAddress, address, amount.toPlainString());
+ } catch (ExecutionException | InterruptedException e) {
+ e.printStackTrace();
+ return "";
+ }
+ }
+
+ public String tokenUSDTTransfer(String privateKey, String fromAddress, String toAddress, String amount) throws ExecutionException, InterruptedException {
+// String gas = getGas();
+ String gas = "5";
+ BigInteger amountOut = new BigInteger(Convert.toWei(amount, Convert.Unit.ETHER).setScale(0).toString());
+// BigDecimal amountPow = new BigDecimal(amount).multiply(BigDecimal.TEN.pow(decimals()));
+// amount = amountPow.toPlainString();
+// if (amount.contains(".")) {
+// amount = amount.substring(0, amount.lastIndexOf("."));
+// }
+
+ Credentials credentials = Credentials.create(privateKey);
+
+ EthGetTransactionCount ethGetTransactionCount = web3j
+ .ethGetTransactionCount(fromAddress, DefaultBlockParameterName.LATEST).sendAsync().get();
+
+ BigInteger nonce = ethGetTransactionCount.getTransactionCount();
+
+ Function function = new Function("withdrawANDAO",
+ Arrays.asList(new Address(toAddress), new Uint256(amountOut)),
+ Arrays.asList(new TypeReference<Type>() {
+ }));
+
+ String encodedFunction = FunctionEncoder.encode(function);
+
+ RawTransaction rawTransaction = RawTransaction.createTransaction(nonce,
+ Convert.toWei(gas, Convert.Unit.GWEI).toBigInteger(),// 给矿工开的转账单价 单价越高越快
+ Convert.toWei("100000", Convert.Unit.WEI).toBigInteger(), contractAddress, encodedFunction);//里程上限
+
+ byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials);
+ String hexValue = Numeric.toHexString(signedMessage);
+
+ CompletableFuture<EthSendTransaction> ethSendTransactionCompletableFuture = web3j.ethSendRawTransaction(hexValue).sendAsync();
+ EthSendTransaction ethSendTransaction = ethSendTransactionCompletableFuture.get();
+
+
+ if (ethSendTransaction.hasError()) {
+ return "";
+ } else {
+ return ethSendTransaction.getTransactionHash();
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
index 7de4a6c..8eaebdf 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
@@ -133,4 +133,9 @@
public BigDecimal balanceOfBaseToken(String address) {
return null;
}
+
+ @Override
+ public String transferUSDT(String address, BigDecimal amount) {
+ return null;
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/contract/andao/Abi.java b/src/main/java/cc/mrbird/febs/dapp/contract/andao/Abi.java
index d30893c..4e246a5 100644
--- a/src/main/java/cc/mrbird/febs/dapp/contract/andao/Abi.java
+++ b/src/main/java/cc/mrbird/febs/dapp/contract/andao/Abi.java
@@ -1,7 +1,6 @@
package cc.mrbird.febs.dapp.contract.andao;
import io.reactivex.Flowable;
-import io.reactivex.functions.Function;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
@@ -11,10 +10,10 @@
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Event;
+import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Uint256;
-import org.web3j.abi.datatypes.generated.Uint8;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
@@ -39,54 +38,18 @@
*/
@SuppressWarnings("rawtypes")
public class Abi extends Contract {
- private static final String BINARY = "608060405273ca143ce32fe78f1f7019d7d551a6402fc5350c73600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355d398326f99059ff775485246999027b3197955600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073adc5331ac7f46c63e877aec2dfbb5523c7680812600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a9bfe048d110ef90a467803653f9b8666f9096c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a9bfe048d110ef90a467803653f9b8666f9096c600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a9bfe048d110ef90a467803653f9b8666f9096c600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200025057600080fd5b506000620002636200081560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600d81526020017f444d44746573743220436f696e00000000000000000000000000000000000000815250600690805190602001906200034e929190620009c5565b506040518060400160405280600881526020017f444d447465737432000000000000000000000000000000000000000000000000815250600590805190602001906200039c929190620009c5565b506008600460006101000a81548160ff021916908360ff16021790555066049e57d6354000600381905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c65396600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200056857600080fd5b505af11580156200057d573d6000803e3d6000fd5b505050506040513d60208110156200059457600080fd5b8101908080519060200190929190505050600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006200061e60646200060a60556003546200081d60201b62001c191790919060201c565b620008a860201b62001c9f1790919060201c565b90503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36000620006bf6064620006ab600a6003546200081d60201b62001c191790919060201c565b620008a860201b62001c9f1790919060201c565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360006200078260646200076e60056003546200081d60201b62001c191790919060201c565b620008a860201b62001c9f1790919060201c565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505062000a74565b600033905090565b600080831415620008325760009050620008a2565b60008284029050828482816200084457fe5b04146200089d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620029fa6021913960400191505060405180910390fd5b809150505b92915050565b6000620008f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008fa60201b60201c565b905092915050565b60008083118290620009aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200096e57808201518184015260208101905062000951565b50505050905090810190601f1680156200099c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620009b757fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a0857805160ff191683800117855562000a39565b8280016001018555821562000a39579182015b8281111562000a3857825182559160200191906001019062000a1b565b5b50905062000a48919062000a4c565b5090565b62000a7191905b8082111562000a6d57600081600090555060010162000a53565b5090565b90565b611f768062000a846000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063a457c2d711610071578063a457c2d71461053b578063a9059cbb146105a1578063c45a015514610607578063dd62ed3e14610651578063f2fde38b146106c957610116565b80638da5cb5b146103de5780638f99d7371461042857806395d89b4114610472578063a0712d68146104f557610116565b8063313ce567116100e9578063313ce567146102a857806339509351146102cc57806370a0823114610332578063715018a61461038a578063893d20e81461039457610116565b806306fdde031461011b578063095ea7b31461019e57806318160ddd1461020457806323b872dd14610222575b600080fd5b61012361070d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610163578082015181840152602081019050610148565b50505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ea600480360360408110156101b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107af565b604051808215151515815260200191505060405180910390f35b61020c6107cd565b6040518082815260200191505060405180910390f35b61028e6004803603606081101561023857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107d7565b604051808215151515815260200191505060405180910390f35b6102b06108b0565b604051808260ff1660ff16815260200191505060405180910390f35b610318600480360360408110156102e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108c7565b604051808215151515815260200191505060405180910390f35b6103746004803603602081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097a565b6040518082815260200191505060405180910390f35b6103926109c3565b005b61039c610b4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e6610b5a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610430610b83565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047a610ba9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ba57808201518184015260208101905061049f565b50505050905090810190601f1680156104e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105216004803603602081101561050b57600080fd5b8101908080359060200190929190505050610c4b565b604051808215151515815260200191505060405180910390f35b6105876004803603604081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d30565b604051808215151515815260200191505060405180910390f35b6105ed600480360360408110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dfd565b604051808215151515815260200191505060405180910390f35b61060f610e1b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106b36004803603604081101561066757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b6040518082815260200191505060405180910390f35b61070b600480360360208110156106df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec8565b005b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050905090565b60006107c36107bc610f9d565b8484610fa5565b6001905092915050565b6000600354905090565b60006107e484848461119c565b6108a5846107f0610f9d565b6108a085604051806060016040528060288152602001611e6960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610856610f9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116229092919063ffffffff16565b610fa5565b600190509392505050565b6000600460009054906101000a900460ff16905090565b60006109706108d4610f9d565b8461096b85600260006108e5610f9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e290919063ffffffff16565b610fa5565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109cb610f9d565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610b55610b5a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c415780601f10610c1657610100808354040283529160200191610c41565b820191906000526020600020905b815481529060010190602001808311610c2457829003601f168201915b5050505050905090565b6000610c55610f9d565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610d27610d21610f9d565b8361176a565b60019050919050565b6000610df3610d3d610f9d565b84610dee85604051806060016040528060258152602001611efb6025913960026000610d67610f9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116229092919063ffffffff16565b610fa5565b6001905092915050565b6000610e11610e0a610f9d565b848461119c565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ed0610f9d565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610f9a81611927565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561102b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611e1f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f206022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dfa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611ed86023913960400191505060405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806113515750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561136657611361838383611a6b565b61161d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143d5760006113e560646113d7600385611c1990919063ffffffff16565b611c9f90919063ffffffff16565b905060006113fc8284611ce990919063ffffffff16565b905061142b85600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a6b565b611436858583611a6b565b505061161c565b8173ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561160f5760006114bc60646114ae600385611c1990919063ffffffff16565b611c9f90919063ffffffff16565b905060006114e760646114d9603285611c1990919063ffffffff16565b611c9f90919063ffffffff16565b90506114f585600083611a6b565b600061151e6064611510601e86611c1990919063ffffffff16565b611c9f90919063ffffffff16565b90506000611549606461153b600a87611c1990919063ffffffff16565b611c9f90919063ffffffff16565b905061157887600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611a6b565b60006115a16064611593600a88611c1990919063ffffffff16565b611c9f90919063ffffffff16565b90506115d088600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611a6b565b60006115f7846115e9888a611ce990919063ffffffff16565b6116e290919063ffffffff16565b9050611604898983611a6b565b50505050505061161b565b61161a838383611a6b565b5b5b5b505050565b60008383111582906116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611694578082015181840152602081019050611679565b50505050905090810190601f1680156116c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f42455032303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611822816003546116e290919063ffffffff16565b60038190555061187a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611e436026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad781604051806060016040528060268152602001611eb260269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116229092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b6c81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116e290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080831415611c2c5760009050611c99565b6000828402905082848281611c3d57fe5b0414611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611e916021913960400191505060405180910390fd5b809150505b92915050565b6000611ce183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d33565b905092915050565b6000611d2b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611622565b905092915050565b60008083118290611ddf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611da4578082015181840152602081019050611d89565b50505050905090810190601f168015611dd15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611deb57fe5b04905080915050939250505056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7742455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a20617070726f766520746f20746865207a65726f2061646472657373a265627a7a72315820d7e632842a9b52d9aa2d71219268c5f18d77202f58c8ba1ec00969183192167364736f6c63430005100032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77";
+ private static final String BINARY = "6080604052600180546001600160a01b03199081167355d398326f99059ff775485246999027b319795517909155600380548216731562e481cef00b14693e43465444b726739e0cba17905560048054909116733614b30913f284e8868d7f6814bbcb62e3f8412717905534801561007657600080fd5b50600154600280546001600160a01b03199081166001600160a01b0390931692909217905560008054909116331790556108eb806100b56000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806310786a021461003b57806347be04b914610050575b600080fd5b61004e610049366004610736565b610063565b005b61004e61005e3660046106c3565b6103a7565b600254604051636eb1769f60e11b81523360048201523060248201526000916001600160a01b03169063dd62ed3e9060440160206040518083038186803b1580156100ad57600080fd5b505afa1580156100c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e5919061071d565b9050838110156101355760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064015b60405180910390fd5b6002546040516323b872dd60e01b8152336004820152306024820152604481018690526000916001600160a01b0316906323b872dd90606401602060405180830381600087803b15801561018857600080fd5b505af115801561019c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c091906106fb565b9050806101df5760405162461bcd60e51b815260040161012c90610807565b60006101f760646101f188600a6105c7565b9061064f565b60025460035460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb90604401602060405180830381600087803b15801561024957600080fd5b505af115801561025d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028191906106fb565b61029d5760405162461bcd60e51b815260040161012c90610807565b60006102af60646101f18960466105c7565b6002546004805460405163a9059cbb60e01b81526001600160a01b03918216928101929092526024820184905292935091169063a9059cbb90604401602060405180830381600087803b15801561030557600080fd5b505af1158015610319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033d91906106fb565b6103595760405162461bcd60e51b815260040161012c90610807565b336001600160a01b03167f4ea43b897a5f947a4940ce8fc2485d2854dcf256c52754394f1804723a091a2188888860405161039693929190610830565b60405180910390a250505050505050565b6000546001600160a01b031633146104185760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c792074686520636f6e74726163742063726561746f722063616e20636160448201526d1b1b081d1a1a5cc81b595d1a1bd960921b606482015260840161012c565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561045c57600080fd5b505afa158015610470573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610494919061071d565b9050818110156104dd5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161012c565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401602060405180830381600087803b15801561052b57600080fd5b505af115801561053f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056391906106fb565b61057f5760405162461bcd60e51b815260040161012c90610807565b826001600160a01b03167f6fb24f3ad0678f9d138e80b17293be051d87911eb34e9e60f0d1b9c3805e885a836040516105ba91815260200190565b60405180910390a2505050565b6000826105d657506000610649565b60006105e28385610888565b9050826105ef8583610866565b146106465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161012c565b90505b92915050565b600061064683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836106ad5760405162461bcd60e51b815260040161012c91906107b2565b5060006106ba8486610866565b95945050505050565b600080604083850312156106d657600080fd5b82356001600160a01b03811681146106ed57600080fd5b946020939093013593505050565b60006020828403121561070d57600080fd5b8151801515811461064657600080fd5b60006020828403121561072f57600080fd5b5051919050565b60008060006040848603121561074b57600080fd5b83359250602084013567ffffffffffffffff8082111561076a57600080fd5b818601915086601f83011261077e57600080fd5b81358181111561078d57600080fd5b87602082850101111561079f57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107df578581018301518582016040015282016107c3565b818111156107f1576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600f908201526e151c985b9cd9995c8819985a5b1959608a1b604082015260600190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008261088357634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156108b057634e487b7160e01b600052601160045260246000fd5b50029056fea2646970667358221220694ed63a5283d88a2b5d348c1fcde9747ff91126df19a57ff8395fcdff4d712164736f6c63430008070033";
- public static final String FUNC_ALLOWANCE = "allowance";
+ public static final String FUNC_RECEIVEANDAO = "receiveANDAO";
- public static final String FUNC_APPROVE = "approve";
+ public static final String FUNC_WITHDRAWANDAO = "withdrawANDAO";
- public static final String FUNC_BALANCEOF = "balanceOf";
-
- public static final String FUNC_DECIMALS = "decimals";
-
- public static final String FUNC_DECREASEALLOWANCE = "decreaseAllowance";
-
- public static final String FUNC_FACTORY = "factory";
-
- public static final String FUNC_GETOWNER = "getOwner";
-
- public static final String FUNC_INCREASEALLOWANCE = "increaseAllowance";
-
- public static final String FUNC_LPACC = "lpacc";
-
- public static final String FUNC_MINT = "mint";
-
- public static final String FUNC_NAME = "name";
-
- public static final String FUNC_OWNER = "owner";
-
- public static final String FUNC_RENOUNCEOWNERSHIP = "renounceOwnership";
-
- public static final String FUNC_SYMBOL = "symbol";
-
- public static final String FUNC_TOTALSUPPLY = "totalSupply";
-
- public static final String FUNC_TRANSFER = "transfer";
-
- public static final String FUNC_TRANSFERFROM = "transferFrom";
-
- public static final String FUNC_TRANSFEROWNERSHIP = "transferOwnership";
-
- public static final Event APPROVAL_EVENT = new Event("Approval",
- Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}));
+ public static final Event RECEIVED_EVENT = new Event("received",
+ Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
;
- public static final Event OWNERSHIPTRANSFERRED_EVENT = new Event("OwnershipTransferred",
- Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}));
- ;
-
- public static final Event TRANSFER_EVENT = new Event("Transfer",
- Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}));
+ public static final Event WITHDRAWN_EVENT = new Event("withdrawn",
+ Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}));
;
@Deprecated
@@ -107,253 +70,98 @@
super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
}
- public List<ApprovalEventResponse> getApprovalEvents(TransactionReceipt transactionReceipt) {
- List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(APPROVAL_EVENT, transactionReceipt);
- ArrayList<ApprovalEventResponse> responses = new ArrayList<ApprovalEventResponse>(valueList.size());
+ public RemoteFunctionCall<TransactionReceipt> receiveANDAO(BigInteger amount, String regFlow) {
+ final Function function = new Function(
+ FUNC_RECEIVEANDAO,
+ Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(amount),
+ new org.web3j.abi.datatypes.Utf8String(regFlow)),
+ Collections.<TypeReference<?>>emptyList());
+ return executeRemoteCallTransaction(function);
+ }
+
+ public List<ReceivedEventResponse> getReceivedEvents(TransactionReceipt transactionReceipt) {
+ List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(RECEIVED_EVENT, transactionReceipt);
+ ArrayList<ReceivedEventResponse> responses = new ArrayList<ReceivedEventResponse>(valueList.size());
for (Contract.EventValuesWithLog eventValues : valueList) {
- ApprovalEventResponse typedResponse = new ApprovalEventResponse();
- typedResponse.log = eventValues.getLog();
- typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
- typedResponse.spender = (String) eventValues.getIndexedValues().get(1).getValue();
- typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
- responses.add(typedResponse);
- }
- return responses;
- }
-
- public Flowable<ApprovalEventResponse> approvalEventFlowable(EthFilter filter) {
- return web3j.ethLogFlowable(filter).map(new Function<Log, ApprovalEventResponse>() {
- @Override
- public ApprovalEventResponse apply(Log log) {
- Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(APPROVAL_EVENT, log);
- ApprovalEventResponse typedResponse = new ApprovalEventResponse();
- typedResponse.log = log;
- typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
- typedResponse.spender = (String) eventValues.getIndexedValues().get(1).getValue();
- typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
- return typedResponse;
- }
- });
- }
-
- public Flowable<ApprovalEventResponse> approvalEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
- EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
- filter.addSingleTopic(EventEncoder.encode(APPROVAL_EVENT));
- return approvalEventFlowable(filter);
- }
-
- public List<OwnershipTransferredEventResponse> getOwnershipTransferredEvents(TransactionReceipt transactionReceipt) {
- List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, transactionReceipt);
- ArrayList<OwnershipTransferredEventResponse> responses = new ArrayList<OwnershipTransferredEventResponse>(valueList.size());
- for (Contract.EventValuesWithLog eventValues : valueList) {
- OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
- typedResponse.log = eventValues.getLog();
- typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
- typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
- responses.add(typedResponse);
- }
- return responses;
- }
-
- public Flowable<OwnershipTransferredEventResponse> ownershipTransferredEventFlowable(EthFilter filter) {
- return web3j.ethLogFlowable(filter).map(new Function<Log, OwnershipTransferredEventResponse>() {
- @Override
- public OwnershipTransferredEventResponse apply(Log log) {
- Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, log);
- OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
- typedResponse.log = log;
- typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
- typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
- return typedResponse;
- }
- });
- }
-
- public Flowable<OwnershipTransferredEventResponse> ownershipTransferredEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
- EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
- filter.addSingleTopic(EventEncoder.encode(OWNERSHIPTRANSFERRED_EVENT));
- return ownershipTransferredEventFlowable(filter);
- }
-
- public List<TransferEventResponse> getTransferEvents(TransactionReceipt transactionReceipt) {
- List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(TRANSFER_EVENT, transactionReceipt);
- ArrayList<TransferEventResponse> responses = new ArrayList<TransferEventResponse>(valueList.size());
- for (Contract.EventValuesWithLog eventValues : valueList) {
- TransferEventResponse typedResponse = new TransferEventResponse();
+ ReceivedEventResponse typedResponse = new ReceivedEventResponse();
typedResponse.log = eventValues.getLog();
typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
- typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
- typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
+ typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
+ typedResponse.regFlow = (String) eventValues.getNonIndexedValues().get(1).getValue();
responses.add(typedResponse);
}
return responses;
}
- public Flowable<TransferEventResponse> transferEventFlowable(EthFilter filter) {
- return web3j.ethLogFlowable(filter).map(new Function<Log, TransferEventResponse>() {
+ public Flowable<ReceivedEventResponse> receivedEventFlowable(EthFilter filter) {
+ return web3j.ethLogFlowable(filter).map(new io.reactivex.functions.Function<Log, ReceivedEventResponse>() {
@Override
- public TransferEventResponse apply(Log log) {
- Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(TRANSFER_EVENT, log);
- TransferEventResponse typedResponse = new TransferEventResponse();
- typedResponse.log = log;
-
+ public ReceivedEventResponse apply(Log log) {
+ Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(RECEIVED_EVENT, log);
+ ReceivedEventResponse typedResponse = new ReceivedEventResponse();
if(eventValues==null){
// 为空则直接返回空对象
return typedResponse;
}
+ typedResponse.log = log;
typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
- typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
- typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
+ typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
+ typedResponse.regFlow = (String) eventValues.getNonIndexedValues().get(1).getValue();
return typedResponse;
}
});
}
- public Flowable<TransferEventResponse> transferEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
+ public Flowable<ReceivedEventResponse> receivedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
- filter.addSingleTopic(EventEncoder.encode(TRANSFER_EVENT));
- return transferEventFlowable(filter);
+ filter.addSingleTopic(EventEncoder.encode(RECEIVED_EVENT));
+ return receivedEventFlowable(filter);
}
- public RemoteFunctionCall<BigInteger> allowance(String owner, String spender) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_ALLOWANCE,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, owner),
- new org.web3j.abi.datatypes.Address(160, spender)),
- Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
- return executeRemoteCallSingleValueReturn(function, BigInteger.class);
- }
-
- public RemoteFunctionCall<TransactionReceipt> approve(String spender, BigInteger amount) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_APPROVE,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, spender),
- new org.web3j.abi.datatypes.generated.Uint256(amount)),
- Collections.<TypeReference<?>>emptyList());
- return executeRemoteCallTransaction(function);
- }
-
- public RemoteFunctionCall<BigInteger> balanceOf(String account) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_BALANCEOF,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, account)),
- Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
- return executeRemoteCallSingleValueReturn(function, BigInteger.class);
- }
-
- public RemoteFunctionCall<BigInteger> decimals() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_DECIMALS,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}));
- return executeRemoteCallSingleValueReturn(function, BigInteger.class);
- }
-
- public RemoteFunctionCall<TransactionReceipt> decreaseAllowance(String spender, BigInteger subtractedValue) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_DECREASEALLOWANCE,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, spender),
- new org.web3j.abi.datatypes.generated.Uint256(subtractedValue)),
- Collections.<TypeReference<?>>emptyList());
- return executeRemoteCallTransaction(function);
- }
-
- public RemoteFunctionCall<String> factory() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_FACTORY,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
- return executeRemoteCallSingleValueReturn(function, String.class);
- }
-
- public RemoteFunctionCall<String> getOwner() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_GETOWNER,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
- return executeRemoteCallSingleValueReturn(function, String.class);
- }
-
- public RemoteFunctionCall<TransactionReceipt> increaseAllowance(String spender, BigInteger addedValue) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_INCREASEALLOWANCE,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, spender),
- new org.web3j.abi.datatypes.generated.Uint256(addedValue)),
- Collections.<TypeReference<?>>emptyList());
- return executeRemoteCallTransaction(function);
- }
-
- public RemoteFunctionCall<String> lpacc() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_LPACC,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
- return executeRemoteCallSingleValueReturn(function, String.class);
- }
-
- public RemoteFunctionCall<TransactionReceipt> mint(BigInteger amount) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_MINT,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(amount)),
- Collections.<TypeReference<?>>emptyList());
- return executeRemoteCallTransaction(function);
- }
-
- public RemoteFunctionCall<String> name() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_NAME,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
- return executeRemoteCallSingleValueReturn(function, String.class);
- }
-
- public RemoteFunctionCall<String> owner() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_OWNER,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
- return executeRemoteCallSingleValueReturn(function, String.class);
- }
-
- public RemoteFunctionCall<TransactionReceipt> renounceOwnership() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_RENOUNCEOWNERSHIP,
- Arrays.<Type>asList(),
- Collections.<TypeReference<?>>emptyList());
- return executeRemoteCallTransaction(function);
- }
-
- public RemoteFunctionCall<String> symbol() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_SYMBOL,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
- return executeRemoteCallSingleValueReturn(function, String.class);
- }
-
- public RemoteFunctionCall<BigInteger> totalSupply() {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_TOTALSUPPLY,
- Arrays.<Type>asList(),
- Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
- return executeRemoteCallSingleValueReturn(function, BigInteger.class);
- }
-
- public RemoteFunctionCall<TransactionReceipt> transfer(String recipient, BigInteger amount) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_TRANSFER,
+ public RemoteFunctionCall<TransactionReceipt> withdrawANDAO(String recipient, BigInteger amount) {
+ final Function function = new Function(
+ FUNC_WITHDRAWANDAO,
Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, recipient),
new org.web3j.abi.datatypes.generated.Uint256(amount)),
Collections.<TypeReference<?>>emptyList());
return executeRemoteCallTransaction(function);
}
- public RemoteFunctionCall<TransactionReceipt> transferFrom(String sender, String recipient, BigInteger amount) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_TRANSFERFROM,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, sender),
- new org.web3j.abi.datatypes.Address(160, recipient),
- new org.web3j.abi.datatypes.generated.Uint256(amount)),
- Collections.<TypeReference<?>>emptyList());
- return executeRemoteCallTransaction(function);
+ public List<WithdrawnEventResponse> getWithdrawnEvents(TransactionReceipt transactionReceipt) {
+ List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(WITHDRAWN_EVENT, transactionReceipt);
+ ArrayList<WithdrawnEventResponse> responses = new ArrayList<WithdrawnEventResponse>(valueList.size());
+ for (Contract.EventValuesWithLog eventValues : valueList) {
+ WithdrawnEventResponse typedResponse = new WithdrawnEventResponse();
+ typedResponse.log = eventValues.getLog();
+ typedResponse.to = (String) eventValues.getIndexedValues().get(0).getValue();
+ typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
+ responses.add(typedResponse);
+ }
+ return responses;
}
- public RemoteFunctionCall<TransactionReceipt> transferOwnership(String newOwner) {
- final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
- FUNC_TRANSFEROWNERSHIP,
- Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, newOwner)),
- Collections.<TypeReference<?>>emptyList());
- return executeRemoteCallTransaction(function);
+ public Flowable<WithdrawnEventResponse> withdrawnEventFlowable(EthFilter filter) {
+ return web3j.ethLogFlowable(filter).map(new io.reactivex.functions.Function<Log, WithdrawnEventResponse>() {
+ @Override
+ public WithdrawnEventResponse apply(Log log) {
+ Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(WITHDRAWN_EVENT, log);
+ WithdrawnEventResponse typedResponse = new WithdrawnEventResponse();
+ if(eventValues==null){
+ // 为空则直接返回空对象
+ return typedResponse;
+ }
+ typedResponse.log = log;
+ typedResponse.to = (String) eventValues.getIndexedValues().get(0).getValue();
+ typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
+ return typedResponse;
+ }
+ });
+ }
+
+ public Flowable<WithdrawnEventResponse> withdrawnEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
+ EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
+ filter.addSingleTopic(EventEncoder.encode(WITHDRAWN_EVENT));
+ return withdrawnEventFlowable(filter);
}
@Deprecated
@@ -392,25 +200,17 @@
return deployRemoteCall(Abi.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
}
- public static class ApprovalEventResponse extends BaseEventResponse {
- public String owner;
-
- public String spender;
-
- public BigInteger value;
- }
-
- public static class OwnershipTransferredEventResponse extends BaseEventResponse {
- public String previousOwner;
-
- public String newOwner;
- }
-
- public static class TransferEventResponse extends BaseEventResponse {
+ public static class ReceivedEventResponse extends BaseEventResponse {
public String from;
+ public BigInteger amount;
+
+ public String regFlow;
+ }
+
+ public static class WithdrawnEventResponse extends BaseEventResponse {
public String to;
- public BigInteger value;
+ public BigInteger amount;
}
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractInit.java b/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractInit.java
index 9533d64..e62e1b0 100644
--- a/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractInit.java
+++ b/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractInit.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.service.RedisService;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@@ -10,6 +11,7 @@
@Component
+@ConditionalOnProperty(prefix = "system", name = "quartz-job", havingValue = "true")
public class AndaoContractInit {
@Autowired
@@ -22,16 +24,16 @@
private RedisService redisService;
-// @PostConstruct
-// public void init(){
-// // 设置起始区块编号 TODO
-// BigInteger start = new BigInteger("29636613");
-// // 需要打开 获取最新区块编号
-// Object bnb_block_number = redisService.get("BNB_BLOCK_NUMBER");
-// if(bnb_block_number !=null){
-// start = BigInteger.valueOf(Long.valueOf(bnb_block_number.toString()));
-// }
-// System.out.println("启动区块事件监听,监听起始:"+start);
-// andaoContractMain.listenBetting(start);
-// }
+ @PostConstruct
+ public void init(){
+ // 设置起始区块编号 TODO
+ BigInteger start = new BigInteger("29837079");
+ // 需要打开 获取最新区块编号
+ Object bnb_block_number = redisService.get("BNB_BLOCK_NUMBER");
+ if(bnb_block_number !=null){
+ start = BigInteger.valueOf(Long.valueOf(bnb_block_number.toString()));
+ }
+ System.out.println("启动区块事件监听,监听起始:"+start);
+ andaoContractMain.listenBetting(start);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java b/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java
index c8a8dfc..5d991dc 100644
--- a/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java
+++ b/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java
@@ -2,10 +2,15 @@
import cc.mrbird.febs.common.contants.SystemConstants;
import cc.mrbird.febs.common.service.RedisService;
+import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
+import cc.mrbird.febs.dapp.entity.DappMemberEntity;
+import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
+import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
@@ -22,10 +27,17 @@
@Component
+@ConditionalOnProperty(prefix = "system", name = "quartz-job", havingValue = "true")
public class AndaoContractMain {
@Autowired
private ChainProducer chainProducer;
+
+ @Autowired
+ private DappMemberDao dappMemberDao;
+
+ @Autowired
+ private DappFundFlowDao dappFundFlowDao;
@Autowired
private SystemConstants systemConstants;
@@ -74,10 +86,10 @@
// 合约地址 TODO
// private static String contractAddr = "0xb5a1aC0fA05BFb8ad16B231e84b0bAC1d46eAfD0";//测试
- private static String contractAddr = "0x06Bd96a05B0B7B06449F1da58E8918cc6AfBB394";
+ private static String contractAddr = "0x99A08A65DB5542f35b96FD69F01896Bd3cDB9DC4";
// 操作账号 手续费钱包地址的私钥(合约里会把手续费转到你这个私钥地址上) 用于操作合约内方法 TODO
- private static String privateKey = "221be67f85375a5af6dd0f4b77fbe877ad2e57e05db201de1b1383fb76494d18";//测试
+ private static String privateKey = "3ff7147104fcc4b3e47eef1c6a826107ad13f8ceaf46d6747b7cd4e56f8b01c6";//测试
// private static String privateKey = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() ;
@@ -102,21 +114,34 @@
Credentials credentials = Credentials.create(privateKey);
Abi contract = Abi.load(contractAddr, getInstanceScope(), credentials, new DefaultGasProvider());
EthFilter filter = getFilter(startBlock);
- contract.transferEventFlowable(filter).subscribe(e->{
+ contract.receivedEventFlowable(filter).subscribe(e->{
try {
// 投注人的地址
String from = e.from;
- String to = e.to;
- BigInteger amount = e.value;
if(from==null){
// 为空则不进入后续逻辑
return;
}
-
- // TODO 业务操作逻辑代码
- System.out.println("from:"+from+",to:"+to+",amount:"+amount);
// 更新区块编号 TODO
redisService.set("BNB_BLOCK_NUMBER",e.log.getBlockNumber().intValue());
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectByAddress(from, "BSC");
+ if(ObjectUtil.isEmpty(dappMemberEntity)){
+ return;
+ }
+ BigInteger amount = e.amount;
+ String regFlow = e.regFlow;
+ if(regFlow==null){
+ // 为空则不进入后续逻辑
+ return;
+ }
+ DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectById(Long.parseLong(regFlow));
+ if(ObjectUtil.isEmpty(dappFundFlowEntity)){
+ return;
+ }
+
+ // TODO 业务操作逻辑代码
+ System.out.println("from:"+from+",amount:"+amount+",regFlow:"+regFlow);
+ chainProducer.sendContractAnDao(Long.parseLong(regFlow));
//投注人
// DappMemberEntity dappMemberEntity = dappMemberDao.selectByAddress(from, "BSC");
// if(ObjectUtil.isNotEmpty(dappMemberEntity)){
@@ -147,26 +172,7 @@
Abi contract = Abi.load(contractAddr, getInstance(), credentials, getStaticGasProvider());
try {
//BigInteger bigInteger = Convert.toWei(amount.toString(), Convert.Unit.ETHER).toBigInteger();
- TransactionReceipt send = contract.transfer(to1, amount).send();
- if(ObjectUtil.isNotEmpty(send)){
- transactionHash = send.getTransactionHash();
- }
- } catch (Exception exception) {
- exception.printStackTrace();
- }
- return transactionHash;
- }
-
- /**
- * 从合约内转币到制定地址
- */
- public String burnToken(BigInteger amount, String to1){
- String transactionHash = null;
- Credentials credentials = Credentials.create(privateKey);
- Abi contract = Abi.load(contractAddr, getInstance(), credentials, getStaticGasProvider());
- try {
- //BigInteger bigInteger = Convert.toWei(amount.toString(), Convert.Unit.ETHER).toBigInteger();
- TransactionReceipt send = contract.transfer(to1, amount).send();
+ TransactionReceipt send = contract.withdrawANDAO(to1, amount).send();
if(ObjectUtil.isNotEmpty(send)){
transactionHash = send.getTransactionHash();
}
@@ -180,7 +186,6 @@
AndaoContractMain andaoContractMain = new AndaoContractMain();
String address = "0x7a9bfE048d110EF90a467803653f9B8666f9096C";
-// String address = "0x785D5Aa2951Ac4C6f28Dc593AF0b0536Dd3E82Fe";
BigInteger bigInteger = new BigInteger(Convert.toWei("1", Convert.Unit.ETHER).setScale(0).toString());
String hash = andaoContractMain.trans(bigInteger,address);
System.out.println(hash);
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
index 2d54bf4..21a8ea8 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -98,4 +98,8 @@
void antKLineABMsg(Long id);
void allMemberPerkAvaMsg(Long id);
+
+ void contractAnDaoMsg(Long flowId);
+
+ void contractAnDaoInMsg(Long flowId);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index 8138948..fb82e8a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.dapp.service.impl;
import cc.mrbird.febs.common.contants.AppContants;
+import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.common.utils.SpringContextUtil;
@@ -39,6 +40,8 @@
import java.math.BigInteger;
import java.math.RoundingMode;
import java.util.*;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
/**
@@ -1090,11 +1093,12 @@
}
// public static void main(String[] args) {
-// String address = AppContants.ADDRESS_A_POOL_PEOJECT;
+// String address = "0x7a9bfE048d110EF90a467803653f9B8666f9096C";
// /**
// * 发起USDT转账
// */
-// String hash = ChainService.getInstance(ChainEnum.BSC_USDT_A_POOL.name()).transfer(address, new BigDecimal("0.01"));
+// String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL_CONTRACT.name()).transferUSDT(address, new BigDecimal("0.99"));
+// System.out.println(hash);
// }
@Override
@@ -1675,7 +1679,8 @@
* 发起USDT转账
*/
log.info("amount:{},address:{}",amount,address);
- String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL.name()).transfer(address, amount);
+// String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL.name()).transfer(address, amount);
+ String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL_CONTRACT.name()).transferUSDT(address, amount);
if(StrUtil.isEmpty(hash)){
return;
}
@@ -1689,10 +1694,15 @@
* 紧急提现方法
*/
public static void main(String[] args) {
- BigDecimal amount = new BigDecimal("1000");
- String address = "0x844309788dD5B6050B3D6Ab6AF4B4Cc00d120840";
- String hash = ChainService.getInstance(ChainEnum.BSC_USDT_A_POOL.name()).transfer(address, amount);
+ BigDecimal amount = new BigDecimal("1");
+ String address = "0xB3cF9669F398f444DfCAebbAd2A49bF32ba41fE3";
+
+ String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL_CONTRACT.name()).transferUSDT(address, amount);
+
System.out.println(hash);
+
+
+// int i = ChainService.getInstance(ChainEnum.BSC_TFC.name()).allowanceCnt("0x80098f854950f9327C4F4E747d285Fd2d41fbf3e");
}
@Override
@@ -2121,6 +2131,404 @@
AppContants.YL_MEMBER_ID,1);
}
+ @Override
+ public void contractAnDaoMsg(Long flowId) {
+ DappFundFlowEntity flow = dappFundFlowDao.selectById(flowId);
+ if(ObjectUtil.isEmpty(flow)){
+ return;
+ }
+ Long memberId = flow.getMemberId();
+ if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE == flow.getStatus()){
+ return;
+ }
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ if(ObjectUtil.isEmpty(dappMemberEntity)){
+ return;
+ }
+ /**
+ * 生成会员入金买A币的记录
+ */
+ DappChargeUsdtEntity dappChargeUsdtEntity = new DappChargeUsdtEntity(
+ memberId,
+ dappMemberEntity.getAddress(),
+ null,
+ 2,
+ flow.getAmount(),
+ BigDecimal.ZERO,
+ BigDecimal.ZERO);
+ dappChargeUsdtMapper.insert(dappChargeUsdtEntity);
+ /**
+ * 减少用户的AUSD数量
+ */
+ DappUsdtPerkEntity dappUsdtPerkEntity = dappUsdtPerkEntityMapper.selectByMemberId(memberId);
+ BigDecimal ausdAmount = dappUsdtPerkEntity.getAusdAmount();
+ ausdAmount = ausdAmount.subtract(flow.getFee()).setScale(4,BigDecimal.ROUND_DOWN);
+ dappUsdtPerkEntity.setAusdAmount(ausdAmount);
+ dappUsdtPerkEntityMapper.updateById(dappUsdtPerkEntity);
+ /**
+ * 流水关联用户购买记录
+ */
+ flow.setSystemProfitId(dappChargeUsdtEntity.getId());
+ /**
+ * 链上转账的hash值
+ */
+// flow.setFromHash(null);
+ flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
+ dappFundFlowDao.updateById(flow);
+
+ /**
+ * 发送消息处理返利逻辑
+ */
+ chainProducer.sendAntACoinInContractMsg(flow.getId());
+ /**
+ * 发送消息处理代理升级
+ */
+ chainProducer.sendAntMemberLevelMsg(memberId);
+ }
+
+ @Override
+ public void contractAnDaoInMsg(Long flowId) {
+ /**
+ * 获取对应的流水记录
+ */
+ DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectInfoById(flowId);
+ if(ObjectUtil.isEmpty(dappFundFlowEntity)){
+ return;
+ }
+ if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE != dappFundFlowEntity.getStatus()){
+ return;
+ }
+ Long memberId = dappFundFlowEntity.getMemberId();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ if(ObjectUtil.isEmpty(dappMemberEntity)){
+ return;
+ }
+ /**
+ * 会员充值金额
+ */
+ BigDecimal amount = dappFundFlowEntity.getAmount();
+ /**
+ * A币的当前价格
+ */
+ DataDictionaryCustom coinAPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.COIN_A_PRICE.getType(),
+ PoolEnum.COIN_A_PRICE.getCode()
+ );
+ BigDecimal coinAPrice = new BigDecimal(StrUtil.isEmpty(coinAPriceDic.getValue()) ? "0" : coinAPriceDic.getValue()).setScale(12,BigDecimal.ROUND_DOWN);
+ /**
+ * 会员充值USDT买入A币记录的ID
+ */
+ Long chergeRecordId = dappFundFlowEntity.getSystemProfitId() == null ? 0L : dappFundFlowEntity.getSystemProfitId();
+ DappChargeUsdtEntity dappChargeUsdtEntity = dappChargeUsdtMapper.selectById(chergeRecordId);
+ if(ObjectUtil.isEmpty(dappChargeUsdtEntity)){
+ return;
+ }
+ if(2 != dappChargeUsdtEntity.getStatus()){
+ return;
+ }
+// if(StrUtil.isEmpty(dappChargeUsdtEntity.getMemberHash())){
+// return;
+// }
+ /**
+ * 金本位的三倍额度,增加业绩,增加对应的NFT的值
+ */
+ DappUsdtPerkEntity dappUsdtPerkEntity = dappUsdtPerkEntityMapper.selectByMemberId(memberId);
+ if(ObjectUtil.isEmpty(dappUsdtPerkEntity)){
+ dappUsdtPerkEntity = new DappUsdtPerkEntity();
+ dappUsdtPerkEntity.setAmount(amount.multiply(new BigDecimal(3)));
+ dappUsdtPerkEntity.setNftDevote(amount);
+ dappUsdtPerkEntity.setMemberId(memberId);
+ dappUsdtPerkEntityMapper.insert(dappUsdtPerkEntity);
+ }
+ //金本位的三倍额度
+ BigDecimal amountPerk = dappUsdtPerkEntity.getAmount();
+ amountPerk = amountPerk.add(amount.multiply(new BigDecimal(3)));
+ dappUsdtPerkEntity.setAmount(amountPerk);
+ //生成一条金本位的三倍额度的资金流水记录
+ DappFundFlowEntity amountPerkFundFlow = new DappFundFlowEntity(
+ memberId,
+ amount.multiply(new BigDecimal(3)),
+ FundFlowEnum.MEMBER_AMOUNT_PERK_TOTAL.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(amountPerkFundFlow);
+
+ //增加业绩
+ BigDecimal achieveAmount = dappUsdtPerkEntity.getAchieveAmount();
+ achieveAmount = achieveAmount.add(amount);
+ dappUsdtPerkEntity.setAchieveAmount(achieveAmount);
+ //增加对应的NFT的值
+ BigDecimal nftDevote = dappUsdtPerkEntity.getNftDevote();
+ nftDevote = nftDevote.add(amount);
+ dappUsdtPerkEntity.setNftDevote(nftDevote);
+ dappUsdtPerkEntityMapper.updateById(dappUsdtPerkEntity);
+ /**
+ * 1.90%底池的USDT做成100%溢价,铸造出70%金本位价值的A币。
+ */
+ DataDictionaryCustom produceAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.PRODUCE_A_PERCENT.getType(),
+ PoolEnum.PRODUCE_A_PERCENT.getCode()
+ );
+ BigDecimal produceAPercent = new BigDecimal(StrUtil.isEmpty(produceAPercentDic.getValue()) ? "0.7" : produceAPercentDic.getValue());
+ //购买数量
+ BigDecimal totalCnt = amount.divide(coinAPrice, 4, BigDecimal.ROUND_DOWN);
+ /**
+ * 铸造出70%金本位价值的A币。实际产生数量
+ */
+ BigDecimal realCnt = totalCnt.multiply(produceAPercent).setScale(4, BigDecimal.ROUND_DOWN);
+ dappChargeUsdtEntity.setTotalCnt(totalCnt);
+ dappChargeUsdtEntity.setRealCnt(realCnt);
+ dappChargeUsdtMapper.updateById(dappChargeUsdtEntity);
+ /**
+ * 重新计算A币的价格
+ */
+ DataDictionaryCustom coinACntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.COIN_A_CNT.getType(),
+ PoolEnum.COIN_A_CNT.getCode()
+ );
+ //A币币本位底池-A币的数量
+ BigDecimal coinACntDicCnt = new BigDecimal(coinACntDic.getValue());
+ coinACntDicCnt = coinACntDicCnt.add(realCnt);
+ coinACntDic.setValue(coinACntDicCnt.toString());
+ dataDictionaryCustomMapper.updateById(coinACntDic);
+
+ DataDictionaryCustom coinAUsdtPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.COIN_A_USDT_PRICE.getType(),
+ PoolEnum.COIN_A_USDT_PRICE.getCode()
+ );
+ //A币金本位底池-usdt数量
+ BigDecimal coinAUsdtPriceDicCnt = new BigDecimal(coinAUsdtPriceDic.getValue());
+ coinAUsdtPriceDicCnt = coinAUsdtPriceDicCnt.add(amount);
+ coinAUsdtPriceDic.setValue(coinAUsdtPriceDicCnt.toString());
+ dataDictionaryCustomMapper.updateById(coinAUsdtPriceDic);
+
+ BigDecimal divide = coinAUsdtPriceDicCnt.divide(coinACntDicCnt, 12, BigDecimal.ROUND_DOWN);
+ coinAPriceDic.setValue(divide.toString());
+ dataDictionaryCustomMapper.updateById(coinAPriceDic);
+
+ chainProducer.sendAntKLineMsg(0);
+ /**
+ * A币的分配 walletMine
+ * 【70%换算100%分配】
+ * 50%客户秒到
+ * 20%全网加权分红(按20%释放递减)
+ * 10%直推
+ * 5%节点
+ * 5%基金会
+ * 10%级差奖
+ */
+ /**
+ * 50%客户秒到
+ */
+ DataDictionaryCustom memberGetAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.MEMBER_GET_A_PERCENT.getType(),
+ PoolEnum.MEMBER_GET_A_PERCENT.getCode()
+ );
+ BigDecimal memberGetAPercent = new BigDecimal(StrUtil.isEmpty(memberGetAPercentDic.getValue()) ? "0.5" : memberGetAPercentDic.getValue());
+ BigDecimal memberGetACnt = realCnt.multiply(memberGetAPercent).setScale(4, BigDecimal.ROUND_DOWN);
+
+ BigDecimal fundFlowToMemberFlag = this.getAndUpdateMemberPerk(dappFundFlowEntity.getMemberId(), memberGetACnt);
+ if(fundFlowToMemberFlag.compareTo(BigDecimal.ZERO) > 0){
+ //生成一条50%客户秒到的资金流水记录
+ DappFundFlowEntity fundFlowToMember = new DappFundFlowEntity(
+ dappFundFlowEntity.getMemberId(),
+ fundFlowToMemberFlag,
+ FundFlowEnum.MEMBER_GET_A_CNT.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(fundFlowToMember);
+ //用户的A币账户增加memberGetACnt数量
+ dappWalletService.updateWalletMineWithLock(fundFlowToMemberFlag,dappFundFlowEntity.getMemberId(),1);
+ }
+ /**
+ * 20%全网加权分红(按20%释放递减)进入加权分红底池
+ */
+ DataDictionaryCustom poolAllMemberAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.POOL_ALL_MEMBER_A_PERCENT.getType(),
+ PoolEnum.POOL_ALL_MEMBER_A_PERCENT.getCode()
+ );
+ BigDecimal poolAllMemberAPercent = new BigDecimal(StrUtil.isEmpty(poolAllMemberAPercentDic.getValue()) ? "0.2" : poolAllMemberAPercentDic.getValue());
+ BigDecimal poolAllMemberAPercentCnt = realCnt.multiply(poolAllMemberAPercent).setScale(4, BigDecimal.ROUND_DOWN);
+
+ DataDictionaryCustom poolAllMemberACntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.POOL_ALL_MEMBER_A_CNT.getType(),
+ PoolEnum.POOL_ALL_MEMBER_A_CNT.getCode()
+ );
+ BigDecimal poolAllMemberACnt = new BigDecimal(StrUtil.isEmpty(poolAllMemberACntDic.getValue()) ? "0" : poolAllMemberACntDic.getValue());
+ poolAllMemberACnt = poolAllMemberACnt.add(poolAllMemberAPercentCnt);
+ poolAllMemberACntDic.setValue(poolAllMemberACnt.toString());
+ dataDictionaryCustomMapper.updateById(poolAllMemberACntDic);
+ //生成一条20%全网加权分红(按20%释放递减)进入加权分红底池的资金流水记录
+ DappFundFlowEntity poolAllMemberAFundFlow = new DappFundFlowEntity(
+ 1L,
+ poolAllMemberAPercentCnt,
+ FundFlowEnum.POOL_ALL_MEMBER_A_CNT.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(poolAllMemberAFundFlow);
+
+ /**
+ * 20%全网加权平分,按照个人投资占比全网的比例去平分
+ */
+ chainProducer.sendAllMemberPerkAvaMsg(poolAllMemberAFundFlow.getId());
+ /**
+ * 10%直推
+ */
+ DataDictionaryCustom directAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.DIRECT_A_PERCENT.getType(),
+ PoolEnum.DIRECT_A_PERCENT.getCode()
+ );
+ BigDecimal directAPercent = new BigDecimal(StrUtil.isEmpty(directAPercentDic.getValue()) ? "0.1" : directAPercentDic.getValue());
+ BigDecimal directAPercentCnt = realCnt.multiply(directAPercent).setScale(4, BigDecimal.ROUND_DOWN);
+
+ String refererId = dappMemberEntity.getRefererId();
+ DappMemberEntity directMemberEntity = dappMemberDao.selectMemberInfoByInviteId(refererId);
+ if(ObjectUtil.isNotEmpty(directMemberEntity)){
+ /**
+ *推荐用户入单可享有贡献值.例.推荐100获得100贡献值
+ */
+ DappUsdtPerkEntity directDappUsdtPerkEntity = dappUsdtPerkEntityMapper.selectByMemberId(directMemberEntity.getId());
+ if(ObjectUtil.isEmpty(directDappUsdtPerkEntity)){
+ directDappUsdtPerkEntity = new DappUsdtPerkEntity();
+ directDappUsdtPerkEntity.setNftDevote(amount);
+ directDappUsdtPerkEntity.setMemberId(directMemberEntity.getId());
+ dappUsdtPerkEntityMapper.insert(directDappUsdtPerkEntity);
+ }
+
+ BigDecimal directNftDevote = directDappUsdtPerkEntity.getNftDevote();
+ directNftDevote = directNftDevote.add(amount);
+ directDappUsdtPerkEntity.setNftDevote(directNftDevote);
+ dappUsdtPerkEntityMapper.updateById(directDappUsdtPerkEntity);
+
+ BigDecimal directAPercentFundFlowToMemberFlag = this.getAndUpdateMemberPerk(directMemberEntity.getId(), directAPercentCnt);
+ if(directAPercentFundFlowToMemberFlag.compareTo(BigDecimal.ZERO) > 0){
+ //生成一条10%直推的资金流水记录
+ DappFundFlowEntity directAPercentFundFlowToMember = new DappFundFlowEntity(
+ directMemberEntity.getId(),
+ directAPercentFundFlowToMemberFlag,
+ FundFlowEnum.DIRECT_A_PERCENT.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(directAPercentFundFlowToMember);
+ //用户的A币账户增加directAPercentCnt数量
+ dappWalletService.updateWalletMineWithLock(directAPercentFundFlowToMemberFlag,directMemberEntity.getId(),1);
+ }
+ if(directAPercentCnt.compareTo(directAPercentFundFlowToMemberFlag) > 0){
+ DappFundFlowEntity directAPercentFundFlowToMemberAva = new DappFundFlowEntity(
+ 1L,
+ directAPercentCnt.subtract(directAPercentFundFlowToMemberFlag),
+ FundFlowEnum.DIRECT_A_PERCENT.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(directAPercentFundFlowToMemberAva);
+ dappWalletService.updateWalletMineWithLock(directAPercentCnt.subtract(directAPercentFundFlowToMemberFlag),
+ AppContants.YL_MEMBER_ID,1);
+ }
+ }
+ /**
+ * 5%节点
+ */
+ DataDictionaryCustom nodeAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.NODE_A_PERCENT.getType(),
+ PoolEnum.NODE_A_PERCENT.getCode()
+ );
+ BigDecimal nodeAPercent = new BigDecimal(StrUtil.isEmpty(nodeAPercentDic.getValue()) ? "0.05" : nodeAPercentDic.getValue());
+ BigDecimal nodeAPercentCnt = realCnt.multiply(nodeAPercent).setScale(4, BigDecimal.ROUND_DOWN);
+ //生成一条5%节点的资金流水记录
+ DappFundFlowEntity nodeAPercentFundFlow = new DappFundFlowEntity(
+ 1L,
+ nodeAPercentCnt,
+ FundFlowEnum.NODE_A_PERCENT.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(nodeAPercentFundFlow);
+// chainProducer.sendAntACoinInNodeMsg(nodeAPercentFundFlow.getId());
+ DataDictionaryCustom nodeAPercentPoolDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.NODE_A_PERCENT_POOL.getType(),
+ PoolEnum.NODE_A_PERCENT_POOL.getCode()
+ );
+ BigDecimal nodeAPercentPoolDicCnt = new BigDecimal(StrUtil.isEmpty(nodeAPercentPoolDic.getValue()) ? "0" : nodeAPercentPoolDic.getValue());
+ nodeAPercentPoolDicCnt = nodeAPercentPoolDicCnt.add(nodeAPercentCnt);
+ nodeAPercentPoolDic.setValue(nodeAPercentPoolDicCnt.toString());
+ dataDictionaryCustomMapper.updateById(nodeAPercentPoolDic);
+
+ BigDecimal nodeAPercentCntAva = superNodePoolPerk(nodeAPercentCnt, NodeCodeEnum.SUPER_NODE.getCode(), FundFlowEnum.NODE_A_PERCENT_TO_MEMBER.getCode());
+
+ if(nodeAPercentCnt.compareTo(nodeAPercentCntAva) > 0){
+ DappFundFlowEntity nodeAPercentFundFlowAva = new DappFundFlowEntity(
+ 1L,
+ nodeAPercentCnt.subtract(nodeAPercentCntAva),
+ FundFlowEnum.NODE_A_PERCENT_TO_MEMBER.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(nodeAPercentFundFlowAva);
+ dappWalletService.updateWalletMineWithLock(nodeAPercentCnt.subtract(nodeAPercentCntAva),
+ AppContants.YL_MEMBER_ID,1);
+ }
+ /**
+ * 5%基金会
+ */
+ DataDictionaryCustom foundationAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.FOUNDATION_A_PERCENT.getType(),
+ PoolEnum.FOUNDATION_A_PERCENT.getCode()
+ );
+ BigDecimal foundationAPercent = new BigDecimal(StrUtil.isEmpty(foundationAPercentDic.getValue()) ? "0.05" : foundationAPercentDic.getValue());
+ BigDecimal foundationAPercentCnt = realCnt.multiply(foundationAPercent).setScale(4, BigDecimal.ROUND_DOWN);
+
+ //生成一条5%基金会的资金流水记录
+ DappFundFlowEntity foundationAPercentFundFlow = new DappFundFlowEntity(
+ 295L,
+ foundationAPercentCnt,
+ FundFlowEnum.FOUNDATION_A_PERCENT.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(foundationAPercentFundFlow);
+ //用户的A币账户增加memberGetACnt数量
+ dappWalletService.updateWalletMineWithLock(foundationAPercentCnt,295L,1);
+ /**
+ * 10%级差奖
+ */
+ DataDictionaryCustom levelAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PoolEnum.LEVEL_A_PERCENT.getType(),
+ PoolEnum.LEVEL_A_PERCENT.getCode()
+ );
+ BigDecimal levelAPercent = new BigDecimal(StrUtil.isEmpty(levelAPercentDic.getValue()) ? "0.1" : levelAPercentDic.getValue());
+ BigDecimal levelAPercentCnt = realCnt.multiply(levelAPercent).setScale(4, BigDecimal.ROUND_DOWN);
+
+ //生成一条10%级差奖进入10%级差奖底池的资金流水记录
+ DappFundFlowEntity levelAPercentCntFundFlow = new DappFundFlowEntity(
+ 1L,
+ levelAPercentCnt,
+ FundFlowEnum.LEVEL_A_PERCENT_CNT.getCode(),
+ 2,
+ BigDecimal.ZERO,
+ null,
+ chergeRecordId);
+ dappFundFlowDao.insert(levelAPercentCntFundFlow);
+ chainProducer.sendAntACoinInLevelMsg(levelAPercentCntFundFlow.getId());
+
+ /**
+ * 更新用户为有效用户
+ */
+ dappMemberDao.updateMemberActiveStatus(1,memberId);
+
+ }
/**
* 测试转账
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
index 70cf983..267094a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -802,6 +802,15 @@
1,
ausdAmountNeed,
transferADto.getTxHash());
+
+
+// DappFundFlowEntity fundFlow = new DappFundFlowEntity(
+// member.getId(),
+// transferADto.getAmount(),
+// type,
+// 1,
+// new BigDecimal("1"),
+// transferADto.getTxHash());
dappFundFlowDao.insert(fundFlow);
return fundFlow.getId();
}
@@ -811,44 +820,50 @@
if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE == flow.getStatus()){
throw new FebsException("请勿重复提交");
}
- /**
- * 生成会员入金买A币的记录
- */
- DappChargeUsdtEntity dappChargeUsdtEntity = new DappChargeUsdtEntity(
- member.getId(),
- dappMemberEntity.getAddress(),
- transferADto.getTxHash(),
- 2,
- transferADto.getAmount(),
- BigDecimal.ZERO,
- BigDecimal.ZERO);
- dappChargeUsdtMapper.insert(dappChargeUsdtEntity);
- /**
- * 减少用户的AUSD数量
- */
- DappUsdtPerkEntity dappUsdtPerkEntity = dappUsdtPerkEntityMapper.selectByMemberId(member.getId());
- BigDecimal ausdAmount = dappUsdtPerkEntity.getAusdAmount();
- ausdAmount = ausdAmount.subtract(flow.getFee()).setScale(4,BigDecimal.ROUND_DOWN);
- dappUsdtPerkEntity.setAusdAmount(ausdAmount);
- dappUsdtPerkEntityMapper.updateById(dappUsdtPerkEntity);
- /**
- * 流水关联用户购买记录
- */
- flow.setSystemProfitId(dappChargeUsdtEntity.getId());
+
/**
* 链上转账的hash值
*/
flow.setFromHash(transferADto.getTxHash());
- flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
dappFundFlowDao.updateById(flow);
- /**
- * 发送消息处理返利逻辑
- */
- chainProducer.sendAntACoinInMsg(flow.getId());
- /**
- * 发送消息处理代理升级
- */
- chainProducer.sendAntMemberLevelMsg(member.getId());
+// /**
+// * 生成会员入金买A币的记录
+// */
+// DappChargeUsdtEntity dappChargeUsdtEntity = new DappChargeUsdtEntity(
+// member.getId(),
+// dappMemberEntity.getAddress(),
+// transferADto.getTxHash(),
+// 2,
+// transferADto.getAmount(),
+// BigDecimal.ZERO,
+// BigDecimal.ZERO);
+// dappChargeUsdtMapper.insert(dappChargeUsdtEntity);
+// /**
+// * 减少用户的AUSD数量
+// */
+// DappUsdtPerkEntity dappUsdtPerkEntity = dappUsdtPerkEntityMapper.selectByMemberId(member.getId());
+// BigDecimal ausdAmount = dappUsdtPerkEntity.getAusdAmount();
+// ausdAmount = ausdAmount.subtract(flow.getFee()).setScale(4,BigDecimal.ROUND_DOWN);
+// dappUsdtPerkEntity.setAusdAmount(ausdAmount);
+// dappUsdtPerkEntityMapper.updateById(dappUsdtPerkEntity);
+// /**
+// * 流水关联用户购买记录
+// */
+// flow.setSystemProfitId(dappChargeUsdtEntity.getId());
+// /**
+// * 链上转账的hash值
+// */
+// flow.setFromHash(transferADto.getTxHash());
+// flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
+// dappFundFlowDao.updateById(flow);
+// /**
+// * 发送消息处理返利逻辑
+// */
+// chainProducer.sendAntACoinInMsg(flow.getId());
+// /**
+// * 发送消息处理代理升级
+// */
+// chainProducer.sendAntMemberLevelMsg(member.getId());
} else {
DappFundFlowEntity flow = dappFundFlowDao.selectById(transferADto.getId());
if (flow.getStatus() == 1) {
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
index 13dbffd..25108e1 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -58,4 +58,12 @@
* A k线数据
*/
public static final String QUEUE_ALL_MEMBER_PERK_AVA = "queue_all_member_perk_ava";
+ /**
+ * A 合约铸造ANDAO
+ */
+ public static final String QUEUE_CONTRACT_AN_DAO = "queue_contract_an_dao";
+ /**
+ * A 入金的消息 队列
+ */
+ public static final String QUEUE_ANT_A_CION_IN_CONTRACT = "queue_ant_a_coin_in_contract";
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
index c4d0b3b..ee2d913 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -5,6 +5,10 @@
@Getter
public enum QueueEnum {
+ //A 合约铸造ANDAO
+ ANT_A_CION_IN_CONTRACT("exchange_ant_a_coin_in_contract", "route_key_ant_a_coin_in_contract", QueueConstants.QUEUE_ANT_A_CION_IN_CONTRACT),
+ //A 合约铸造ANDAO
+ CONTRACT_AN_DAO("exchange_contract_an_dao", "route_key_contract_an_dao", QueueConstants.QUEUE_CONTRACT_AN_DAO),
//A 每人平分
ALL_MEMBER_PERK_AVA("exchange_all_member_perk_ava", "route_key_all_member_perk_ava", QueueConstants.QUEUE_ALL_MEMBER_PERK_AVA),
//A k线数据
diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
index 0b7c27d..da4f966 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -376,4 +376,40 @@
return BindingBuilder.bind(allMemberPerkAvaQueue()).to(allMemberPerkAvaExchange()).with(QueueEnum.ALL_MEMBER_PERK_AVA.getRoute());
}
// === A k线数据 end ===
+
+
+ // === A 合约铸造ANDAO start ===
+ @Bean
+ public DirectExchange contractAnDaoExchange() {
+ return new DirectExchange(QueueEnum.CONTRACT_AN_DAO.getExchange());
+ }
+
+ @Bean
+ public Queue contractAnDaoQueue() {
+ return new Queue(QueueEnum.CONTRACT_AN_DAO.getQueue());
+ }
+
+ @Bean
+ public Binding contractAnDaoBind() {
+ return BindingBuilder.bind(contractAnDaoQueue()).to(contractAnDaoExchange()).with(QueueEnum.CONTRACT_AN_DAO.getRoute());
+ }
+ // === A 合约铸造ANDAO end ===
+
+
+ // === A 合约铸造ANDAO start ===
+ @Bean
+ public DirectExchange contractAnDaoInExchange() {
+ return new DirectExchange(QueueEnum.ANT_A_CION_IN_CONTRACT.getExchange());
+ }
+
+ @Bean
+ public Queue contractAnDaoInQueue() {
+ return new Queue(QueueEnum.ANT_A_CION_IN_CONTRACT.getQueue());
+ }
+
+ @Bean
+ public Binding contractAnDaoInBind() {
+ return BindingBuilder.bind(contractAnDaoInQueue()).to(contractAnDaoInExchange()).with(QueueEnum.ANT_A_CION_IN_CONTRACT.getRoute());
+ }
+ // === A 合约铸造ANDAO end ===
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
index 2f4f4c2..991d764 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -188,4 +188,22 @@
log.info("全体平分:{}", id);
dappSystemService.allMemberPerkAvaMsg(id);
}
+
+ /**合约铸造ANDAO
+ * @param flowId
+ */
+ @RabbitListener(queues = QueueConstants.QUEUE_CONTRACT_AN_DAO)
+ public void contractAnDaoMsg(Long flowId) {
+ log.info("1-消费合约铸造ANDAO:{}", flowId);
+ dappSystemService.contractAnDaoMsg(flowId);
+ }
+
+ /**合约铸造ANDAO
+ * @param flowId
+ */
+ @RabbitListener(queues = QueueConstants.QUEUE_ANT_A_CION_IN_CONTRACT)
+ public void contractAnDaoInMsg(Long flowId) {
+ log.info("2-消费合约铸造ANDAO:{}", flowId);
+ dappSystemService.contractAnDaoInMsg(flowId);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
index 38433ad..5874e12 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -207,4 +207,24 @@
CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
rabbitTemplate.convertAndSend(QueueEnum.ALL_MEMBER_PERK_AVA.getExchange(), QueueEnum.ALL_MEMBER_PERK_AVA.getRoute(), id, correlationData);
}
+
+ /**
+ * 合约铸造ANDAO
+ */
+ public void sendContractAnDao(Long flowId) {
+ log.info("合约铸造ANDAO:{}", flowId);
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(QueueEnum.CONTRACT_AN_DAO.getExchange(), QueueEnum.CONTRACT_AN_DAO.getRoute(), flowId, correlationData);
+ }
+
+
+ /**
+ * A 入金的消息
+ * @param id
+ */
+ public void sendAntACoinInContractMsg(Long id) {
+ log.info("开始---合约铸造ANDAO:{}", id);
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(QueueEnum.ANT_A_CION_IN_CONTRACT.getExchange(), QueueEnum.ANT_A_CION_IN_CONTRACT.getRoute(), id, correlationData);
+ }
}
diff --git a/src/main/resources/USDT.sol b/src/main/resources/USDT.sol
new file mode 100644
index 0000000..f17dd36
--- /dev/null
+++ b/src/main/resources/USDT.sol
@@ -0,0 +1,187 @@
+pragma solidity ^0.8.0;
+
+interface IERC20 {
+ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
+ function approve(address spender, uint256 amount) external returns (bool);
+ function transfer(address to, uint256 amount) external returns (bool);
+ function balanceOf(address account) external view returns (uint256);
+ function allowance(address _owner, address spender) external view returns (uint256);
+}
+
+contract ANDAOContract {
+ using SafeMath for uint256;
+ address owner;
+ address private usdtAddress = 0x55d398326f99059fF775485246999027B3197955;
+ IERC20 private usdtToken;
+
+ constructor() {
+ usdtToken = IERC20(usdtAddress);
+ owner = msg.sender;
+ }
+
+ address blpSwap = 0x1562e481cEF00B14693e43465444B726739e0CBA;
+ address alpSwap = 0x3614B30913f284e8868d7f6814Bbcb62e3f84127;
+
+ event received(address indexed from, uint256 amount,string regFlow);
+ event withdrawn(address indexed to, uint256 amount);
+
+ function receiveANDAO(uint256 amount,string calldata regFlow) external {
+ uint256 allowance = usdtToken.allowance(msg.sender, address(this));
+ require(allowance >= amount, "Insufficient allowance");
+
+ bool transferSuccessful = usdtToken.transferFrom(msg.sender, address(this), amount);
+ require(transferSuccessful, "Transfer failed");
+ uint256 blpSwapAmount = amount.mul(10).div(100);
+ require(usdtToken.transfer(blpSwap, blpSwapAmount), "Transfer failed");
+ uint256 alpSwapAmount = amount.mul(70).div(100);
+ require(usdtToken.transfer(alpSwap, alpSwapAmount), "Transfer failed");
+
+ emit received(msg.sender, amount,regFlow);
+ }
+
+ function withdrawANDAO(address recipient,uint256 amount) external {
+ require(msg.sender == owner, "Only the contract creator can call this method");
+ uint256 contractBalance = usdtToken.balanceOf(address(this));
+ require(contractBalance >= amount, "Insufficient balance");
+
+ require(usdtToken.transfer(recipient, amount), "Transfer failed");
+ emit withdrawn(recipient, amount);
+ }
+
+}
+
+library SafeMath {
+ /**
+ * @dev Returns the addition of two unsigned integers, reverting on
+ * overflow.
+ *
+ * Counterpart to Solidity's `+` operator.
+ *
+ * Requirements:
+ * - Addition cannot overflow.
+ */
+ function add(uint256 a, uint256 b) internal pure returns (uint256) {
+ uint256 c = a + b;
+ require(c >= a, "SafeMath: addition overflow");
+
+ return c;
+ }
+
+ /**
+ * @dev Returns the subtraction of two unsigned integers, reverting on
+ * overflow (when the result is negative).
+ *
+ * Counterpart to Solidity's `-` operator.
+ *
+ * Requirements:
+ * - Subtraction cannot overflow.
+ */
+ function sub(uint256 a, uint256 b) internal pure returns (uint256) {
+ return sub(a, b, "SafeMath: subtraction overflow");
+ }
+
+ /**
+ * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
+ * overflow (when the result is negative).
+ *
+ * Counterpart to Solidity's `-` operator.
+ *
+ * Requirements:
+ * - Subtraction cannot overflow.
+ */
+ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
+ require(b <= a, errorMessage);
+ uint256 c = a - b;
+
+ return c;
+ }
+
+ /**
+ * @dev Returns the multiplication of two unsigned integers, reverting on
+ * overflow.
+ *
+ * Counterpart to Solidity's `*` operator.
+ *
+ * Requirements:
+ * - Multiplication cannot overflow.
+ */
+ function mul(uint256 a, uint256 b) internal pure returns (uint256) {
+ // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
+ // benefit is lost if 'b' is also tested.
+ // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
+ if (a == 0) {
+ return 0;
+ }
+
+ uint256 c = a * b;
+ require(c / a == b, "SafeMath: multiplication overflow");
+
+ return c;
+ }
+
+ /**
+ * @dev Returns the integer division of two unsigned integers. Reverts on
+ * division by zero. The result is rounded towards zero.
+ *
+ * Counterpart to Solidity's `/` operator. Note: this function uses a
+ * `revert` opcode (which leaves remaining gas untouched) while Solidity
+ * uses an invalid opcode to revert (consuming all remaining gas).
+ *
+ * Requirements:
+ * - The divisor cannot be zero.
+ */
+ function div(uint256 a, uint256 b) internal pure returns (uint256) {
+ return div(a, b, "SafeMath: division by zero");
+ }
+
+ /**
+ * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
+ * division by zero. The result is rounded towards zero.
+ *
+ * Counterpart to Solidity's `/` operator. Note: this function uses a
+ * `revert` opcode (which leaves remaining gas untouched) while Solidity
+ * uses an invalid opcode to revert (consuming all remaining gas).
+ *
+ * Requirements:
+ * - The divisor cannot be zero.
+ */
+ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
+ // Solidity only automatically asserts when dividing by 0
+ require(b > 0, errorMessage);
+ uint256 c = a / b;
+ // assert(a == b * c + a % b); // There is no case in which this doesn't hold
+
+ return c;
+ }
+
+ /**
+ * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
+ * Reverts when dividing by zero.
+ *
+ * Counterpart to Solidity's `%` operator. This function uses a `revert`
+ * opcode (which leaves remaining gas untouched) while Solidity uses an
+ * invalid opcode to revert (consuming all remaining gas).
+ *
+ * Requirements:
+ * - The divisor cannot be zero.
+ */
+ function mod(uint256 a, uint256 b) internal pure returns (uint256) {
+ return mod(a, b, "SafeMath: modulo by zero");
+ }
+
+ /**
+ * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
+ * Reverts with custom message when dividing by zero.
+ *
+ * Counterpart to Solidity's `%` operator. This function uses a `revert`
+ * opcode (which leaves remaining gas untouched) while Solidity uses an
+ * invalid opcode to revert (consuming all remaining gas).
+ *
+ * Requirements:
+ * - The divisor cannot be zero.
+ */
+ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
+ require(b != 0, errorMessage);
+ return a % b;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index f6c70ad..f0954e9 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -57,5 +57,5 @@
online-transfer: true
chain-listener: false
reset-job: false
- quartz-job: false
+ quartz-job: true
debug: false
\ No newline at end of file
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 85383f0..ff4b40e 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -56,5 +56,5 @@
online-transfer: true
chain-listener: false
reset-job: false
- quartz-job: false
+ quartz-job: true
debug: false
diff --git a/src/test/java/cc/mrbird/febs/JunitTest.java b/src/test/java/cc/mrbird/febs/JunitTest.java
index c9906a3..f03c800 100644
--- a/src/test/java/cc/mrbird/febs/JunitTest.java
+++ b/src/test/java/cc/mrbird/febs/JunitTest.java
@@ -29,33 +29,33 @@
**/
@SpringBootTest
public class JunitTest {
- @Autowired
- private DappMemberDao dappMemberDao;
-
- public static void main(String[] args) {
- DateTime tomorrow = DateUtil.beginOfDay(DateUtil.tomorrow());
- System.out.println(DateUtil.between(new Date(), tomorrow, DateUnit.SECOND, true));
- }
-
- public String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1cHrcMpXoKNC8rjAa/jAbgU2bhIBmJmn6iYDfqt0Him/p2s5F0L9nfzZOLYlPq3z12zvXl9IgThhtLIBLi86RPW0ljuwpTvIZz9O36Zae9eMk5bMNsFEFsxg1IOLIM2Oc4ffNvGL58Uupp9RL5NCN1MRQyY61ISy7H2VRTznoJQIDAQAB";
- public String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVwetwylego0LyuMBr+MBuBTZuEgGYmafqJgN+q3QeKb+nazkXQv2d/Nk4tiU+rfPXbO9eX0iBOGG0sgEuLzpE9bSWO7ClO8hnP07fplp714yTlsw2wUQWzGDUg4sgzY5zh9828YvnxS6mn1Evk0I3UxFDJjrUhLLsfZVFPOeglAgMBAAECgYAPKWWS5gVB37tFsRajAs+5VK5MCyABqT8c6QWkay5KNYbRl2+6RM3h068RjFuXlUB9eQMAqpasDWqcIOZdqcKqmxm0ILF2zfPzJr4RaQNSNwDCVrKEeaDtrZQcq/0ygaNDF9y203UMHT0dfEQSGp/xkjTgXNsOuC9iLM56XScOVwJBAPOZLbrCi0h4PL7g3rWsCw8/aN6ehkJ3iTDgjYpdBwJOJSyxV0qi0xmDthGqPd99Kvc14u1jy3ghpm1SAEunrj8CQQC+rS6qajIkK7NiRmX43chDhgMPGo0UFHbmHyYBb1Eyrxu1MNWQEh221p54GsB2HqAGRhxxQ98Ds2S26Au7QpibAkA2nQAAn/8kFzjfPoEPz+uG1puHVZkaK7yJRb7V53dbz/NLqtK8O/cCAGKAYV+PzHsmg2FGAZqrazfpyHmifIx3AkBnFau/+A/JnFKr09F3XTfSwZXPyZPyAipRuQ9MAUmNtDuvloovDIxB9//OgPACLAZpvefMmFvuXUMa25LUF2n3AkBGb+vO+69NSyQM2SHKZ9fUrxx9ZPhupNt/TXNL9OMEQiLaHCYgg0tfcojGe3QjBCA6wVG+dCyZUcv5OwiW23pI";
-
- @Test
- public void encodeTest() {
- RSA rsa = new RSA(AppContants.REQ_PRIVATE_KEY, AppContants.REQ_PUBLIC_KEY);
- Map<String, Object> map = new HashMap<>();
- map.put("test", 123);
- String s = JSONObject.toJSONString(map);
- String s1 = rsa.encryptBase64(s, KeyType.PublicKey);
- System.out.println(s1);
- }
-
- @Test
- public void decodeTest() {
- String ss = "pAEYpX4a+gm9lqy2/bQNx/EjJS0D7I/ezcCB+G/pgI5GDLWUj7+S7jhGWlV2PTGHcNj8vJQRXp5qpV7GOmaQX30HVao3srsOEL2CWU5F/5A4T9ncs3NuoYEv5LUCTolEEq8r5VdBRzU9BoZCISLFQxjFIp5inuydjz2JE9lnOBYQIP8kZSXHy2N1gkythypbj81q9cC83wNND7pvSjw140EDtXWqlCIhpoZlwB/n8+D5khBHwxWhuf0wacYLj9aKZ8tSKMyw0/WdQvpBZ6ymxuoHrLlcL36PTEN59rce9tnnRs5+AjAXppx4GIODdvbHLQJurBslw2GVHJeDbugRvA==";
- RSA rsa = new RSA(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY);
- String s = rsa.decryptStr(ss, KeyType.PrivateKey);
- System.out.println(s);
- }
+// @Autowired
+// private DappMemberDao dappMemberDao;
+//
+// public static void main(String[] args) {
+// DateTime tomorrow = DateUtil.beginOfDay(DateUtil.tomorrow());
+// System.out.println(DateUtil.between(new Date(), tomorrow, DateUnit.SECOND, true));
+// }
+//
+// public String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1cHrcMpXoKNC8rjAa/jAbgU2bhIBmJmn6iYDfqt0Him/p2s5F0L9nfzZOLYlPq3z12zvXl9IgThhtLIBLi86RPW0ljuwpTvIZz9O36Zae9eMk5bMNsFEFsxg1IOLIM2Oc4ffNvGL58Uupp9RL5NCN1MRQyY61ISy7H2VRTznoJQIDAQAB";
+// public String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVwetwylego0LyuMBr+MBuBTZuEgGYmafqJgN+q3QeKb+nazkXQv2d/Nk4tiU+rfPXbO9eX0iBOGG0sgEuLzpE9bSWO7ClO8hnP07fplp714yTlsw2wUQWzGDUg4sgzY5zh9828YvnxS6mn1Evk0I3UxFDJjrUhLLsfZVFPOeglAgMBAAECgYAPKWWS5gVB37tFsRajAs+5VK5MCyABqT8c6QWkay5KNYbRl2+6RM3h068RjFuXlUB9eQMAqpasDWqcIOZdqcKqmxm0ILF2zfPzJr4RaQNSNwDCVrKEeaDtrZQcq/0ygaNDF9y203UMHT0dfEQSGp/xkjTgXNsOuC9iLM56XScOVwJBAPOZLbrCi0h4PL7g3rWsCw8/aN6ehkJ3iTDgjYpdBwJOJSyxV0qi0xmDthGqPd99Kvc14u1jy3ghpm1SAEunrj8CQQC+rS6qajIkK7NiRmX43chDhgMPGo0UFHbmHyYBb1Eyrxu1MNWQEh221p54GsB2HqAGRhxxQ98Ds2S26Au7QpibAkA2nQAAn/8kFzjfPoEPz+uG1puHVZkaK7yJRb7V53dbz/NLqtK8O/cCAGKAYV+PzHsmg2FGAZqrazfpyHmifIx3AkBnFau/+A/JnFKr09F3XTfSwZXPyZPyAipRuQ9MAUmNtDuvloovDIxB9//OgPACLAZpvefMmFvuXUMa25LUF2n3AkBGb+vO+69NSyQM2SHKZ9fUrxx9ZPhupNt/TXNL9OMEQiLaHCYgg0tfcojGe3QjBCA6wVG+dCyZUcv5OwiW23pI";
+//
+// @Test
+// public void encodeTest() {
+// RSA rsa = new RSA(AppContants.REQ_PRIVATE_KEY, AppContants.REQ_PUBLIC_KEY);
+// Map<String, Object> map = new HashMap<>();
+// map.put("test", 123);
+// String s = JSONObject.toJSONString(map);
+// String s1 = rsa.encryptBase64(s, KeyType.PublicKey);
+// System.out.println(s1);
+// }
+//
+// @Test
+// public void decodeTest() {
+// String ss = "pAEYpX4a+gm9lqy2/bQNx/EjJS0D7I/ezcCB+G/pgI5GDLWUj7+S7jhGWlV2PTGHcNj8vJQRXp5qpV7GOmaQX30HVao3srsOEL2CWU5F/5A4T9ncs3NuoYEv5LUCTolEEq8r5VdBRzU9BoZCISLFQxjFIp5inuydjz2JE9lnOBYQIP8kZSXHy2N1gkythypbj81q9cC83wNND7pvSjw140EDtXWqlCIhpoZlwB/n8+D5khBHwxWhuf0wacYLj9aKZ8tSKMyw0/WdQvpBZ6ymxuoHrLlcL36PTEN59rce9tnnRs5+AjAXppx4GIODdvbHLQJurBslw2GVHJeDbugRvA==";
+// RSA rsa = new RSA(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY);
+// String s = rsa.decryptStr(ss, KeyType.PrivateKey);
+// System.out.println(s);
+// }
}
diff --git a/src/test/java/cc/mrbird/febs/MemberTest.java b/src/test/java/cc/mrbird/febs/MemberTest.java
index a414c4e..8bd04fa 100644
--- a/src/test/java/cc/mrbird/febs/MemberTest.java
+++ b/src/test/java/cc/mrbird/febs/MemberTest.java
@@ -43,149 +43,149 @@
@SpringBootTest
public class MemberTest {
- @Autowired
- private DappMemberDao dappMemberDao;
-
- @Autowired
- private DataDictionaryCustomMapper dataDictionaryCustomMapper;
-
- @Autowired
- private DappFundFlowDao dappFundFlowDao;
-
- @Autowired
- private ContractMain contractMain;
-
- @Autowired
- private ChainProducer chainProducer;
-
- @Autowired
- private DappAKlineMapper dappAKlineMapper;
-
- @Autowired
- private RedisUtils redisUtils;
- // String address = dappMemberEntity.getAddress();
-// String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(address, amount);
-// if(StrUtil.isEmpty(hash)){
-// return;
-// }
-
- public static void main(String[] args) {
- }
- @Test
- public void tranfer(){
- dappSystemService.antKLineMsg(1);
-// boolean allowance = ChainService.getInstance(ChainEnum.BSC_USDT_A_POOL.name()).isAllowance("0x458ff43d5ddddb4fd44dd60170ae4831e0d97c9c");
-// System.out.println(allowance);
-
-// dappSystemService.AntACoinInMsg(780L);
-// dappSystemService.aKlineJobHour();
-// dappSystemService.aKlineJobDay();
-// dappSystemService.AntACoinInMsg(164L);
-
-// List<JSONObject> objects = new ArrayList<>();
-// AKLineVo akLineVo = new AKLineVo();
-// akLineVo.setCreateTime(DateUtil.date());
-// akLineVo.setClosePrice(BigDecimal.ZERO);
-// akLineVo.setOpenPrice(BigDecimal.ZERO);
-// akLineVo.setLowestPrice(BigDecimal.ZERO);
-// akLineVo.setHighestPrice(BigDecimal.ZERO);
-// JSONObject parseObj = JSONUtil.parseObj(akLineVo);
-// objects.add(parseObj);
-// objects.add(parseObj);
-// objects.add(parseObj);
-// objects.add(parseObj);
-// System.out.println(objects);
-// System.out.println(objects.toString());
-// redisUtils.set("test",objects.toString());
-// Object test = redisUtils.get("test");
-// System.out.println(test.toString());
-// JSONArray jsonArray = JSONUtil.parseArray(test);
-// System.out.println(jsonArray);
-
-// String hash = ChainService.getInstance(ChainEnum.BNB.name()).transferBaseToken(address, amount);
+// @Autowired
+// private DappMemberDao dappMemberDao;
+//
+// @Autowired
+// private DataDictionaryCustomMapper dataDictionaryCustomMapper;
+//
+// @Autowired
+// private DappFundFlowDao dappFundFlowDao;
+//
+// @Autowired
+// private ContractMain contractMain;
+//
+// @Autowired
+// private ChainProducer chainProducer;
+//
+// @Autowired
+// private DappAKlineMapper dappAKlineMapper;
+//
+// @Autowired
+// private RedisUtils redisUtils;
+// // String address = dappMemberEntity.getAddress();
+//// String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(address, amount);
//// if(StrUtil.isEmpty(hash)){
//// return;
//// }
-// BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(ChainEnum.BSC_USDT.getAddress());
-//// Integer count = dappFundFlowDao.updateStatusById(DappFundFlowEntity.WITHDRAW_STATUS_AGREE,464L);
-//// String address = dappMemberEntity.getAddress();
-//// log.info("{}",address);
-// System.out.println(balance);
-
-
-// dappSystemService.bnbTransferTest(44L);
-
-
- //发送转币消息
-// chainProducer.sendBnbTransferMsg(93L);
-// chainProducer.sendBnbTransferMsg(94L);
-// chainProducer.sendBnbTransferMsg(95L);
-// chainProducer.sendBnbTransferMsg(96L);
- }
-
-
- @Autowired
- private SystemConstants systemConstants;
- @Autowired
- private DappSystemService dappSystemService;
- @Test
- public void balance() {
-
- dappSystemService.selectAndInsertDics();
-// /**
-// * 从contractAddress合约地址中转移对应发行的代币到address中
-// */
-// dappSystemService.bnbTransfer(6L);
-
-
-// String address = AppContants.ADDRESS_A_POOL_PEOJECT;
-// /**
-// * 发起USDT转账
-// */
-// String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(address, new BigDecimal("0.01"));
-// System.out.println(hash);
- }
-
- @Test
- public void refererIdsTest() {
- DappMemberEntity member = dappMemberDao.selectById(24);
-
- boolean flag = false;
- String parentId = "35087336";
- String ids = "";
- String feeProfitIds = "";
-
- int i = 1;
- List<DataDictionaryCustom> feeProfitDic = dataDictionaryCustomMapper.selectDicByType(AppContants.DIC_TYPE_DISTRIBUTE_PROP);
- while (!flag && StringUtils.isNotBlank(parentId)) {
- if (StrUtil.isBlank(ids)) {
- ids += parentId;
- } else {
- ids += ("," + parentId);
- }
-
- if (i <= 4) {
- if (StrUtil.isBlank(feeProfitIds)) {
- feeProfitIds += parentId;
- } else {
- feeProfitIds += ("," + parentId);
- }
- }
-
- i++;
- DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId);
- if (parentMember == null) {
- break;
- }
- parentId = parentMember.getRefererId();
- if(StringUtils.isBlank(parentId) || "0".equals(parentId)){
- break;
- }
- if (parentMember.getRefererId().equals(parentMember.getInviteId())) {
- flag = true;
- }
- }
- member.setRefererIds(ids);
- member.setFeeProfitIds(feeProfitIds);
- }
+//
+// public static void main(String[] args) {
+// }
+// @Test
+// public void tranfer(){
+// dappSystemService.antKLineMsg(1);
+//// boolean allowance = ChainService.getInstance(ChainEnum.BSC_USDT_A_POOL.name()).isAllowance("0x458ff43d5ddddb4fd44dd60170ae4831e0d97c9c");
+//// System.out.println(allowance);
+//
+//// dappSystemService.AntACoinInMsg(780L);
+//// dappSystemService.aKlineJobHour();
+//// dappSystemService.aKlineJobDay();
+//// dappSystemService.AntACoinInMsg(164L);
+//
+//// List<JSONObject> objects = new ArrayList<>();
+//// AKLineVo akLineVo = new AKLineVo();
+//// akLineVo.setCreateTime(DateUtil.date());
+//// akLineVo.setClosePrice(BigDecimal.ZERO);
+//// akLineVo.setOpenPrice(BigDecimal.ZERO);
+//// akLineVo.setLowestPrice(BigDecimal.ZERO);
+//// akLineVo.setHighestPrice(BigDecimal.ZERO);
+//// JSONObject parseObj = JSONUtil.parseObj(akLineVo);
+//// objects.add(parseObj);
+//// objects.add(parseObj);
+//// objects.add(parseObj);
+//// objects.add(parseObj);
+//// System.out.println(objects);
+//// System.out.println(objects.toString());
+//// redisUtils.set("test",objects.toString());
+//// Object test = redisUtils.get("test");
+//// System.out.println(test.toString());
+//// JSONArray jsonArray = JSONUtil.parseArray(test);
+//// System.out.println(jsonArray);
+//
+//// String hash = ChainService.getInstance(ChainEnum.BNB.name()).transferBaseToken(address, amount);
+////// if(StrUtil.isEmpty(hash)){
+////// return;
+////// }
+//// BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(ChainEnum.BSC_USDT.getAddress());
+////// Integer count = dappFundFlowDao.updateStatusById(DappFundFlowEntity.WITHDRAW_STATUS_AGREE,464L);
+////// String address = dappMemberEntity.getAddress();
+////// log.info("{}",address);
+//// System.out.println(balance);
+//
+//
+//// dappSystemService.bnbTransferTest(44L);
+//
+//
+// //发送转币消息
+//// chainProducer.sendBnbTransferMsg(93L);
+//// chainProducer.sendBnbTransferMsg(94L);
+//// chainProducer.sendBnbTransferMsg(95L);
+//// chainProducer.sendBnbTransferMsg(96L);
+// }
+//
+//
+// @Autowired
+// private SystemConstants systemConstants;
+// @Autowired
+// private DappSystemService dappSystemService;
+// @Test
+// public void balance() {
+//
+// dappSystemService.selectAndInsertDics();
+//// /**
+//// * 从contractAddress合约地址中转移对应发行的代币到address中
+//// */
+//// dappSystemService.bnbTransfer(6L);
+//
+//
+//// String address = AppContants.ADDRESS_A_POOL_PEOJECT;
+//// /**
+//// * 发起USDT转账
+//// */
+//// String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(address, new BigDecimal("0.01"));
+//// System.out.println(hash);
+// }
+//
+// @Test
+// public void refererIdsTest() {
+// DappMemberEntity member = dappMemberDao.selectById(24);
+//
+// boolean flag = false;
+// String parentId = "35087336";
+// String ids = "";
+// String feeProfitIds = "";
+//
+// int i = 1;
+// List<DataDictionaryCustom> feeProfitDic = dataDictionaryCustomMapper.selectDicByType(AppContants.DIC_TYPE_DISTRIBUTE_PROP);
+// while (!flag && StringUtils.isNotBlank(parentId)) {
+// if (StrUtil.isBlank(ids)) {
+// ids += parentId;
+// } else {
+// ids += ("," + parentId);
+// }
+//
+// if (i <= 4) {
+// if (StrUtil.isBlank(feeProfitIds)) {
+// feeProfitIds += parentId;
+// } else {
+// feeProfitIds += ("," + parentId);
+// }
+// }
+//
+// i++;
+// DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId);
+// if (parentMember == null) {
+// break;
+// }
+// parentId = parentMember.getRefererId();
+// if(StringUtils.isBlank(parentId) || "0".equals(parentId)){
+// break;
+// }
+// if (parentMember.getRefererId().equals(parentMember.getInviteId())) {
+// flag = true;
+// }
+// }
+// member.setRefererIds(ids);
+// member.setFeeProfitIds(feeProfitIds);
+// }
}
diff --git a/src/test/java/cc/mrbird/febs/TreeTest.java b/src/test/java/cc/mrbird/febs/TreeTest.java
index 164bd62..fab9322 100644
--- a/src/test/java/cc/mrbird/febs/TreeTest.java
+++ b/src/test/java/cc/mrbird/febs/TreeTest.java
@@ -21,80 +21,80 @@
@SpringBootTest
public class TreeTest {
- @Test
- public void matrixTest() {
- MatrixTree matrixTree = MatrixTree.getInstance();
-
-
- String refererId = null;
- for (int i = 0; i < 11; i++) {
- String inviteId = RandomUtil.randomString(6);
- if (i == 2) {
- refererId = inviteId;
- }
- MemberNode memberNode = new MemberNode();
- memberNode.setMemberId(Long.parseLong(i + 1 + ""));
- memberNode.setInviteId(inviteId);
- memberNode.setAddress(RandomUtil.randomString(14));
- memberNode.setRefererId(refererId);
- matrixTree.addNode(memberNode);
- }
- System.out.println(System.currentTimeMillis());
- }
-
- @Autowired
- private DappSystemService dappSystemService;
-
- @Autowired
- private DappWalletService dappWalletService;
-
- @Autowired
- private DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
-
- /**
- *
- * // 第一次{amount: val, fee: 0, txHash: '', type: 1, buyType: 2}
- * // 成功{type: 1, txHash: result.transactionHash, id: res.data, flag: 'success', buyType: 2}
- * // 失败{type: 1, id: res.data, flag: 'fail', buyType: 2}
- */
- @Test
- public void testTransfer(){
- //第一次
- TransferDto transferDto = new TransferDto();
- transferDto.setAmount(new BigDecimal(0.00105));
- transferDto.setFee(BigDecimal.ZERO);
- transferDto.setType(1);
- transferDto.setBuyType(2);
- transferDto.setMemberId(140L);
- Long transfer = dappWalletService.transfer(transferDto);
- transferDto.setTxHash("0x4c26f944d469219030512907bc3fd3d825d40d1ace7108dd3923a67d95b81094");
- transferDto.setId(transfer);
- transferDto.setFlag("success");
- dappWalletService.transfer(transferDto);
- }
- @Test
- public void testTransfer2(){
- //成功
- TransferDto transferDto = new TransferDto();
- transferDto.setType(1);
- transferDto.setTxHash("ceshi"+ DateUtil.now());
- transferDto.setId(422L);
- transferDto.setFlag("success");
- transferDto.setBuyType(2);
- transferDto.setAmount(new BigDecimal(1.05));
- transferDto.setFee(BigDecimal.ZERO);
- transferDto.setMemberId(111L);
- dappWalletService.transfer(transferDto);
- }
-
- @Test
- public void resetMatrix() {
- dappSystemService.levelProfit(9L);
- dappSystemService.memberOut(9L);
- }
-
- @Test
- public void limitResetProfitTest() {
- dappSystemService.putIntoProfit(59L, 1);
- }
+// @Test
+// public void matrixTest() {
+// MatrixTree matrixTree = MatrixTree.getInstance();
+//
+//
+// String refererId = null;
+// for (int i = 0; i < 11; i++) {
+// String inviteId = RandomUtil.randomString(6);
+// if (i == 2) {
+// refererId = inviteId;
+// }
+// MemberNode memberNode = new MemberNode();
+// memberNode.setMemberId(Long.parseLong(i + 1 + ""));
+// memberNode.setInviteId(inviteId);
+// memberNode.setAddress(RandomUtil.randomString(14));
+// memberNode.setRefererId(refererId);
+// matrixTree.addNode(memberNode);
+// }
+// System.out.println(System.currentTimeMillis());
+// }
+//
+// @Autowired
+// private DappSystemService dappSystemService;
+//
+// @Autowired
+// private DappWalletService dappWalletService;
+//
+// @Autowired
+// private DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
+//
+// /**
+// *
+// * // 第一次{amount: val, fee: 0, txHash: '', type: 1, buyType: 2}
+// * // 成功{type: 1, txHash: result.transactionHash, id: res.data, flag: 'success', buyType: 2}
+// * // 失败{type: 1, id: res.data, flag: 'fail', buyType: 2}
+// */
+// @Test
+// public void testTransfer(){
+// //第一次
+// TransferDto transferDto = new TransferDto();
+// transferDto.setAmount(new BigDecimal(0.00105));
+// transferDto.setFee(BigDecimal.ZERO);
+// transferDto.setType(1);
+// transferDto.setBuyType(2);
+// transferDto.setMemberId(140L);
+// Long transfer = dappWalletService.transfer(transferDto);
+// transferDto.setTxHash("0x4c26f944d469219030512907bc3fd3d825d40d1ace7108dd3923a67d95b81094");
+// transferDto.setId(transfer);
+// transferDto.setFlag("success");
+// dappWalletService.transfer(transferDto);
+// }
+// @Test
+// public void testTransfer2(){
+// //成功
+// TransferDto transferDto = new TransferDto();
+// transferDto.setType(1);
+// transferDto.setTxHash("ceshi"+ DateUtil.now());
+// transferDto.setId(422L);
+// transferDto.setFlag("success");
+// transferDto.setBuyType(2);
+// transferDto.setAmount(new BigDecimal(1.05));
+// transferDto.setFee(BigDecimal.ZERO);
+// transferDto.setMemberId(111L);
+// dappWalletService.transfer(transferDto);
+// }
+//
+// @Test
+// public void resetMatrix() {
+// dappSystemService.levelProfit(9L);
+// dappSystemService.memberOut(9L);
+// }
+//
+// @Test
+// public void limitResetProfitTest() {
+// dappSystemService.putIntoProfit(59L, 1);
+// }
}
--
Gitblit v1.9.1